12-29 nov '08: Van (weer) nieuwe energie, naar een slopende opdracht

in
Translation Note: The Dutch version of this content is being displayed because the English translation is unavailable.

(Opmerking: dit stuk tekst gaat langzamerhand steeds meer programmeertechnische opsommingen bevatten... omdat dat ook langzamerhand het enige ging zijn waar ik me mee bezig hield.)

Woensdagochtend (12 november) om 10 uur was Jens thuis, terug uit Berlijn. We bespraken hoe de zaken ervoor stonden...

Wat betreft Autoki: die hadden opgezegd, en Jens had de zaak zo afgewikkeld dat we geen geld hoefden terugbetalen. Jammer dat we op deze manier een klant waren verloren. En dat er ook een collega (Aaron) ontslag had genomen.

Aan de andere kant: dingen waren nu duidelijker. Ik wist in ieder geval waar ik aan toe was: ik had inmiddels overzicht in de projecten die er speelden, die allemaal afmoesten omdat er al 30% van het geld aanbetaald (en allang op) was. De slechte of slecht communicerende ontwikkelaars waren weg, wat er in ieder geval voor zorgde... dat ik me geen zorgen meer zou hoeven te maken over de informatievoorziening of code-kwaliteit van die twee. Het werd nu: mouwen opstropen en die projecten zo snel mogelijk afleveren voor het einde van het jaar. Daarna zouden we 'met een schone lei' kunnen verder bouwen.

Wat betreft Panini, zoals ik al eerder schreef: ze werden nu echt ongeduldig en ze hadden mijn e-mail gezien waarin ik een schatting van 'aanstaande vrijdag' gaf, waarin ik Rudy's (rudimentair werkende maar buggy en niet-uitbreidbare) crap-code volledig omgewerkt moet hebben tot 2 losstaande nette 'upload' en 'player' modules.
Ik had me tot nu toe niet echt druk hoeven maken om deadlines (hoewel ik wel vaak nachten heb doorgewerkt om iets af te krijgen)... omdat het andermans deadlines waren. Nu ik een schatting had afgegeven, was het mijn planning en mijn verantwoordelijkheid.

De andere mensen die er nog toe deden in de toekomstplannen van het bedrijf, waren Mark en Thomas. Volgens Jens had Mark (die nog steeds in de avonduren een ander project aan het fixen was, en verder nog een fulltime baan had) serieus interesse om erbij te komen, wat we allebei erg fijn vonden; hij was de sleutel tot groei van het bedrijf in Hongarije. Thomas was (net als Jens) 50% eigenaar... maar was volgens Jens totaal onbereikbaar en het was blijkbaar onbekend waar hij mee bezig was. Jens was van plan om Thomas naar Boedapest te laten overkomen om de toekomst van het bedrijf serieus te bespreken - want op zo'n manier kon hij geen eigenaar blijven. Jens' plan was om hem een deel van de aandelen in te laten leveren, op zo'n manier dat Mark 25% van het nieuwe bedrijf zou krijgen en ik 15%.

Ik vond dat een realistische verdeling. Verder wilde ik nog steeds niet te veel aandacht besteden aan Jens' verhalen over percentages. Ik vond 'aandelen in een groeiend bedrijf hebben' stukken minder belangrijk dan 'loon krijgen voor mijn werk'. En voordat ik een beeld had van de waarde van die aandelen, wilde ik eerst zien wat Jens nu eigenlijk aan het bedrijf toe te voegen had. Dat zou pas echt duidelijk worden nadat de huidige 3 lopende projecten afgemaakt waren - want tot die af waren had ik hem nauwelijks nodig en hoefde hij eigenlijk weinig te doen. (En het bedrijf kon ook niet zonder hem, omdat het 'zijn' klanten waren die waarschijnlijk vervolgopdrachten zouden afnemen.)

De plannen klonken in ieder geval redelijk positief, en ik begon weer met frisse moed aan de bulk werk die lag te wachten, want ik wist waar ik naartoe werkte.

In de dagen die volgden was ik dus veel aan het werk en had Jens niet zo veel te doen...

Donderdag 13:

Jens was woensdagavond weggegaan, kwam donderdagavond om half 9 strontlazarus aan en ging weer weg na even tegen mij aan geouwehoerd en in zijn kamer rondgerommeld te hebben. Toen hij een tijdje later weer aanbelde, ging ik het huis uit want ik had he-le-maal geen zin meer in hem zo. Ik liep op de galerij langs een verbaasde Jens naar buiten zonder iets te zeggen, wandelde in de stad rond en vond een lobby-bar in een hotel, waar ik op mijn laptop verder werkte. (Ik besloot het 'player' gedeelte van het Panini-project als een kloon van de 'imagefield gallery' module op te zetten.)

Vrijdag-zondag:

Alleen maar werk aan Panini (dat vrijdag af zou moeten zijn... maargoed, in wezen is 'vrijdag aan het eind van de dag' equivalent aan 'maandagochtend') en de zaterdag ook aan ILAC.

Jens had die vrijdag (zei hij) een meeting gehad met een van de oprichters van SilverStripe (Nieuw-Zeelands CMS bedrijf) die in Londen was en voor een meeting met Jens naar Boedapest vloog. (Daar had hij het al sinds oktober af en toe over gehad, dat hij met die man in gesprek was.) Jens was enthousiast. Hij zei dat ze hem als commerciële man wilden hebben om een Europese vestiging te bemannen met een redelijk basissalaris en grote target-bonussen. Mark en ik zouden meekunnen mee als programmeurs, daar hadden ze in die Europese vestiging ook behoefte aan.

Ik was ook enthousiast, omdat ik niet zo geloofde de kracht van ons eigen bedrijf (en zeker Jens) om dingen op te bouwen. De volgende dag was ik al iets minder enthousiast. Ik wilde toch wel graag mijn kansen in Drupal verder bekijken, omdat het Drupal wereldje me zo aantrekt en ik net zoveel tijd in nieuwe kennis had geïnvesteerd. Ik vond het niet erg als Jens eventueel alleen naar SilverStripe zou vertrekken, maar dat zeo ik niet al te hard tegen hem. Hij was ineens ook wat minder enthousiast en wilde toch wel zijn eigen bedrijf proberen door te starten, want 'hij is helemaal niet meer gewend om voor iemand anders te werken, dat kan hij niet meer'.

Die 3 dagen waren verder rechttoe-rechtaan programmeren, en mijn schema was nog steeds 'van 5 tot 1 slapen' omdat ik elke dag steeds dacht dat 'nu eindelijk iets af komt'.

Af en toe liepen we samen rond in de buurt, op zoek naar een cafeetje, om toch even buiten te zijn. In de VIII-e wijk waar wij wonen, zijn er bijna geen - of in ieder geval geen waar je als buitenlander gezellig naar binnen stapt. Toen we zondag door de grote bouwput van het toekomstige 'Corvin Plaza' heen liepen en aan de andere kant in de IX-e wijk terecht kwamen, bleek dat een prettige ontdekking. Wijk IX heeft een heel ander karakter. De straten en huizen doen, op een of andere manier, veel gezelliger aan. (Ik kan het niet uitleggen wat het precies is... hoewel het er wel als 'bultenland' uitzag, voelde het qua sfeer voor mij meer als Amsterdam Zuid dan als een Oost-Europese stadswijk.) Hier waren ook cafétjes waar het fijn was te zitten. De mensen leken ook wat rijker dan in onze wijk... in ieder geval leken de enorme emo's die ik hier zag lopen, er wel thuis te horen, terwijl ik dat soort modieuze types in onze wijk absoluut niet zou verwachten.

Het duurde tot half 7 's ochtends voordat ik de 'player' module af had -- en dan alleen nog maar die ene.

Maandag 17:

10 uur even uit bed (na 3 uur slaap) voor een gesprek dat Jens voerde met Panini; weer doorslapen tot 1 uur. Panini was nogal teleurgesteld dat alleen maar die ene module af was; ik ging snel de upload-module aan doorkijken of er nog iets van te bouwen is, en tegen de avond was mijn schatting 'enkele uren'. We stelden vrijdagmiddag als nieuwe deadline.

Maar we gingen (ik heel even) naar het cafe; ik was 8 uur weer terug en werken ging absoluut niet meer. Ik had maagpijn van te weinig slaap / te veel koffie / het 'english breakfast' dat Jens zondag had gemaakt.

Jens belde me nog om 4 uur 's nachts lallend wakker dat hij in Morrisson's in de problemen zat, gearresteerd werd en geen geld en identificatie bij zich had. Waarop ik zei "gefeliciteerd", hij zei "dan moet je me morgen op het Duitse consulaat komen ophalen", en ik weer zei "oke" en ophing.

Dinsdag 18:

Om 1 uur opgestaan (na vanaf 9 uur de vorige avond geslapen te hebben); ik was zo on-energiek als wat door maagpijn. Krant gelezen, eten gemaakt en om 11 uur weer naar bed; ik bleef hardnekkig liggen ondanks dat ik niet kon slapen. Om 2 uur kwam Jens binnenstrompelen (zo te horen aan het lawaai). Om een uur of 4 's nachts sliep ik echt, volgens mijn opgebouwde ritme - en om 7 en 10 uur 's ochtends draaide ik me nog even om.

Woensdag 19:

Rond 1 uur 's middags eruit. Ben de hele dag niet weggegaan, heb niet veel met Jens gepraat, beetje gewerkt zo goed en kwaad als het ging, 11 uur weer naar bed - hoewel ik pas echt sliep om 4 uur 's nachts.

Donderdag 20:

Weer rond 1 uur 's middags eruit. Ik voelde me weer beter. Jens zei dat hij besloten had niet meer te drinken omdat het echt fout ging; ik kreeg in de loop van de dag flarden verhaal te horen over dat hij die dinsdag in een kerk of klooster was geweest, waar een pater met hem gesproken had. Het schijnt nogal indruk gemaakt te hebben.

Ik werkte de hele dag aan de upload module en gedurende de dag moest ik toegeven dat ik er niet uitkwam, na het onderzocht hebben van de bestaande code. Ik vroeg op de chat iets aan Mark, die besloot om de volgende dag hier te willen komen om een deel waar ik vragen over heb, te fixen.

Na het gesprek met Mark gingen we naar buiten - en toen we al een eindje liepen brak er een fucking sneeuwstorm los. We ontdekten (inmiddels helemaal wit en koud) in de IX-e wijk een café/zoetighedenwinkel waar heerlijk gezeten kon worden.

Ik werkte tot 5 uur 's nachts door om het andere deel af te hebben. (Alle gemelde bugs in contest en player waren toen gefixt; alleen de upload moest dus nog, en die was dus niet af voor morgen. WEER was niet af wat er af had MOETEN zijn volgens onze beloften - terwijl we duidelijk gemaakt hadden dat Panini hun consequenties zou mogen trekken als dat weer zo was.)

Vrijdag 21:

Mark stond 7:20 op de stoep en besteedde in onze keuken 3 uur aan het proberen een nieuwe upload te schrijven. Het was voor mij zeer instructief. Het mislukte, maar hij had me wel zeer valide JavaScript/jQuery pointers gegeven om dingen zelf wel te kunnen doen. (Ik had nog nooit iets in JS of jQuery geschreven.) Aan het eind van de middag hadden we een telefoongesprek met de klant. Jens 'verbalised the situation' (zoals hij dat zo leuk noemt) en Panini leek niet echt van zin om consequenties te trekken, ondanks dat we dat verwacht hadden. We kregen een deadline voor maandagmorgen, aangezien er dan bij Panini door een andere afdeling naar onze applicatie gekeken zou worden. Ik ging verder met werk en sliep zowaar 9 uur lang.

Zaterdag 22:

De hele dag door aan Panini gewerkt. Ik ben niet buiten geweest, Jens heeft mcDonalds gehaald. Tot diep in de nacht zat ik een manier te schrijven om 'dynamische updates op het scherm na bestands-upload' te implementeren met jQuery, kwam er na 3 uur achter dat het zo niet werkte, begon weer opnieuw, enz. Wat ook niet hielp, is dat op de test-website op mijn laptop de upload grotendeels foutloos werkte, terwijl bij het uploaden van testbestanden naar de server van Panini heel vreemde dingen op mijn scherm gebeurden!

Half 5 naar bed.

Zondag 23:

9 uur op. Jens dwong me om Mark te vragen om hulp bij de jQuery shit, die gisteren constant 'bijna lukte maar niet helemaal'. Om half 1 's middags ontmoette ik hem in café Bobek waar hij zat met zijn laptop. Leuk café trouwens, en meer nerds-met-laptop gebruiken het op een zondagmiddag. Hij gaf me wat pointers en probeerde verder aan zijn eigen project te werken terwijl ik met mijn code stoeide. ...maar op het laatst zat hij samen met mij totaal weirde shit te debuggen, die op mijn systeem wel werkte maar op de Panini-server niet.

Ik ging tegen 7 uur totaal fucking doodmoe naar huis, maar na (weer) een Mac-maal met Jens voelde ik me weer best redelijk. Gedurende de avond installeerde ik op 2 remote servers een test-Drupal-installatie, en zag ik dat die OOK het probleem hadden met 'totaal raar beeld bij uploaden', dat ook bij de Panini-server optrad. Alleen mijn eigen ontwikkelsysteem (laptopje) scheen dat niet te hebben! Dat is niet fijn ontwikkelen en testen, natuurlijk!

Ik fixte nog de vrijdagmiddag gerapporteerde bugs aan de 'contest' en 'player' modules (en kwam achter nog meer stomme caching-problemen op Panini's stomme server) en deed verder de meeste dingen aan de upload, maar kreeg weer het laatste stukje (updaten van vrije diskruimte) niet af. Ik werkte door zonder te slapen, wat best goed ging, tot Jens om half 9 's ochtends Panini belde. Weer werden er geen harde woorden gesproken over wat er niet af was, en hielden we elkaar aan de praat over de dingetjes die nog af moesten. (Dat het beeld bij het uploaden van bestanden totaal crap werd, en zij dat ook zagen, leek niet erg te zijn, ofzo.)

Maandag 24:

Na het telefoongesprek ging ik om 10 uur slapen, werd om half 4 weer wakker, we gingen weer even naar de koffietent en bespraken daar de mails van Panini en ILAC; ik deed boodschappen.

's avonds hadden we een Skype-conversatietje met Mark, en bleek dat hij zjin vriend 'Pp' misschien kon inzetten op het TA project, het laatste project dat nog af moest en dat stil lag sinds Aaron weg was. Dat zou echt heel cool zijn.

Ik kookte en we beantwoordden een mail van Panini met foutmeldingen van die ochtend, die grotendeels aan hun eigen weirde server-installatie lagen.

Alles leek dus weer redelijk onder controle, na dagenlang doorhalen op een project dat eigenlijk te weinig betaalt. Ondanks dat ik extreem weinig had geslapen, voelde ik me een stuk beter dan voor deze periode (i.e. vorige woensdag, toen ik een tijdje ziek was en niets deed.)

Dinsdag 25 - Vrijdag 28:

Dinsdag om half 4 gesprek een Panini-directeur die zijn ontevredenheid meldde over onze constant gebroken beloften. Het telefoongesprek ging heel anders dan de dag ervoor. Ze dreigden nu serieus met het terugvorderen van al hun betaalde geld in een rechtszaak.

Jens beloofde hem dat de besproken dingen vrijdag af zouden zijn. di-wi-do werk ik door.
(* dinsdag 1e punt: gebruikte diskruimte + foutmeldingen als er teveel wordt geupload - maar nog niet aangepast tijdens het uploaden. Ook geprobeerd om weirde caching van XML files bij hun neer te leggen, omdat het hun serverinstallatie is die de oude dingen onthoudt.
* woensdag 3e punt: de display bug in de upload module wegwerken. (De door SWFupload doorgegeven buffer is te groot; dit blijkt een gedocumenteerde bug in SWFUpload onder Linux, waar omheen gewerkt moet worden. Heel irritant.) Heel veel tijd kwijt aan Javascript bugs & charset issues.
* donderdag 2e punt: diskspace dynamisch updaten direct bij elke upload van een plaatje (door JS.) Ik ken nu al Rudy's JS code ook eindelijk. Ook comic player aangepast zodat 'ie elke bij elke preview een nieuw pad aanmaakt -- om hun caching crap-probleem te omzeilen.)

Ik had woensdag/donderdag 'uitgeslapen' tot 2 uur (vanaf 5 uur 's ochtends, dus had wel wel 9 uur geslapen, terwijl mijn gemiddelde in de week ervoor tussen 5 en 6 uur slaap in lag). Had donderdag doorgewerkt aan die laatste punten, en nadat we mails uitgewisseld hadden met Panini dat de punten nu klaar waren, ging Jens zijn vriendin van het vliegveld ophalen. Intussen ging er veel mail heen en weer; vooral bugreports die niet juist bleken te zijn en die ik dus terugstuurde. En ook een "waarom is deze functionaliteit niet ingebouwd?" (up-down arrows bij upload, en views integratie). Ons antwoord daarop was "we hebben altijd gezegd dat dat mogelijk was, maar dat was geen deel van de afgesproken opdracht! We hebben dus wel af wat we beloofd hebben. We zullen dat echter dit weekend nog gratis inbouwen." ... om ze nog een beetje tevreden te houden na alle niet nagekomen beloften; we stonden met onze rug tegen de muur maar hadden tenminste zo nog iets om onze goede wil te tonen / een paar puntjes te scoren.

Er kwamen wat later ook nog wat echte bugreports in de contests-module voorbij, waardoor ik er sowieso nog werk aan zou hebben.

Vrijdag uiteindelijk om 2 uur 's middags naar bed gegaan (dus 24 uur opgeweest!), 8 uur 's avonds weer wakker, en die dag niet gewerkt. bij de mac gegeten en koffie gedaan, mail en Bluebox sysadmin gedaan, krant gelezen enz. Uiteindelijk om 5 uur 's ochtends weer naar bed.

Zaterdag 29:

Weer om 2 uur 's middags op. tot 5(?) uur e-mail gedaan en toen gaan programmeren aan de bugs in de contest-module.