27 november 2017

Ouderworden

Een van die dingen als je ouder wordt is dat alles veel sneller lijkt te gaan. Daarentegen, dingen die je doet gaan in werklijkheid veel langzamer.

Bijvoorbeeld.

Op je 62e beginnen met een andere programmeer taal te leren gaat niet zo gemakkelijk meer als zo'n 30 jaar geleden. Dat merk je aan de snelheid waarmee iets blijft beklijven of tijd waarin je iets kan toepassen en oplossen. Het duurt allemaal wat langer. Een van die dingen is dat je ergens langer over na wilt denken. Vroegah, toen klooide je in een dag of zo gewoon wat in elkaar en bij de eerste test bleek al snel dat het bagger was. Volgde er altijd nog een middagje of wat met bijslijpen zodat het programma ook daadwerkelijk werkte. Dat leverde niet altijd de mooiste code op. Ontwikkelen moest immers altijd op een holletje gebeuren. Tijd was een boel geld.
Nu de tijd weer helemaal van mijzelf is en grátis, wordt de tijd ervoor genomen eerst eens goed na te denken, of zowaar een ontwerpje te krabbelen al hangend in je makkelijke zitstoel. Daarna ga je eens wat uit proberen in een test en ontwikkel omgeving (met een groot woord) 
Dat is dus gewoon een aparte raspi waaraan van alles is vastgeknoopt en het er uitziet alsof er een kluwen draadjes over je buro lopen. Wat natuurlijk ook zo is. Kortom ik ben een paar uur per dag lekker bezig hiermee. Raspi's zijn leuk omdat je voor een paar tienen de wereld aan dat boardje vast kunt knopen zonder dat het een kapitaal kost. Moet je nerd voor zijn om dat leuk te vinden geef ik toe.
Met dat proces achter de rug waarbij je al of niet wat op papier hebt staan in de vorm van een schemaatje of een paar krabbels van ideeën ga je serieus aan de slag. Iedere module of nieuw stukje programma code wordt getest en bijgeschaafd totdat het me een tevreden geeft over het resultaat. Er wordt niet verder gegaan totdat de fout of niet werken van iets is verholpen. Dat neemt veel tijd. Ook al omdat er met opzet niet de hele dag aan die zooi geprutst gaat en kan worden. 
Agenda
Het klinkt gek maar als retraitées krijgen we het steeds drukker. Afspraken werden tot niet al te lang geleden op papiertjes of op het whiteboard geschreven of eraan gekleeft.  Maar dingen die altijd terug kwamen of waarvan de tijden verzet werden konden weleens vergeten worden, of kwam je niet op de afgesproken tijd. Natuurlijk kun je zoiets gewoon downloaden en installeren waarna je meestal de gratis dingen krijgt die net niet aan je wensen voldoen, of teveel toeters en bellen hebben, of waarvoor je net zoiets krijgt maar dan elk jaar een abo betaald en je niet weet wie er allemaal mee kijkt. Dus, kwam er een eigen gemaakt dingetje dat via ons interne web overal in huis te bekijken is.

LMQR  agenda
Het "gevaar" daarmee is dat je er aan blijft schaven, kneden en uitbreiden. Gelukkig is dat gevaar eigenlijk niet zo groot omdat alleen dat wat we nodig hebben wordt gemaakt. Na een paar uurtjes knutselen zit er weer iets nieuws in de agenda.
problem: Altijd moest je naar de garage lopen om op het schema te kijken wanneer er recycle afval of gewoon huishoudelijk afval opgehaald werd. 
solution: Makkelijker om dat te zien via de agenda op het computertje via het intraweb vond mijn schatje. 
execution: Dus ff klooien aan de data, feestdagen en vakanties waren weer uitzonderingen op de regel. 

En, hop, weer een feature (zie de gele en paarse blokjes in het plaatje).
Boekingen
Nog zo'n projectje. Tot vorig jaar hielden we de reserveringen eerst bij in een schriftje, vervolgens in een papieren agenda of zoals de vorige seizoenen electronisch. Helaas dat raak je wel eens kwijt of is ineens niet meer beschikbaar. Dat deed me vorig jaar besluiten zelf iets te gaan maken. Iets wat meer specifiek aan onze behoeftes voldeed en via ons intranet in te zien.
boekingen 2017
Omdat dit dingetje zelf is gemaakt kunnen nieuwe ideeën van mijn schatje of mijzelf er gewoon ingefietst worden. Een kwestie van een paar uurtjes prutsen. Zo groeit zoiets naar behoefte. Vanzelf komen er dan verzoekjes of ideeën: zou handig zijn als...  
Zo waren er de boilers die als er geen gasten waren uitgezet werden. Dan gebeurde het wel eens dat ik vergat om die op tijd weer aan te zetten. Dat loopt nu via de boekingsagenda, vol automatisch gaan de boilers aan als er voor die dag gasten in het huis aanwezig zullen zijn. Dat idee bleek nog niet eens zo gek te zijn geweest omdat van de EDF (el. maatschappij) met een schrijven kwam dat de boilers 25% van onze stroom consumptie vertegenwoordigen. Voortaan geen fikkende boilers meer die alleen maar staan bij te verwarmen terwijl er geen gasten zijn. Dat zal misschien dan weer op de rekening te zien zijn.

Verkeerd
Gaat er ook wel eens iets grandioos de mist in? Jawel. Bijna nooit loopt er bloed uit maar is het gewoon lastig als iets niet meer werkt. Je begint er toch op te bouwen dat bepaalde dingen gewoon werken. Bijna altijd is het iets met het updaten van de software van de RaspberryPi's zelf wat roet in het eten gooit. Sommige dingen werken dan ineens niet meer. Na veel gemopper kom je er dan achter dat het wéér eens een stukje was dat een andere naam of plek op het systeem had gekregen, of dingen veel nauwkeuriger uitgewerkt moesten worden. Het gebeurde een paar weken geleden zomaar dat de boilers niet meer aangezet werden. Of dat pompen midden in de winter aangingen met bevriezing als gevolg. Geleidelijk aan leer je dat soort dingen te beveiligen tegen dat het kan gebeuren, maar toch, wie weet wat de volgende storing is. Of wat te denken van een ritsje datums in een verzameling waarbij alleen de 7de en de 8ste van een maand ineens fouten opleverden. Als buitengemeen merkwaardig ervaar ik dat.
Dan weet ik ook wel dat je als professioneel programmeur alle situaties overweegt en daar code voor bouwt. Maar hier, in Le Mouton Qui Rit? Afijn, toch begin je er maar aan bij kritische delen om extra beveiliging in te bouwen. De UPS werd daarom in capaciteit uitgebreid, dingen worden momenteel fysiek dubbel uitgevoerd, kaartjes voor bepaalde Raspi's liggen als kopie klaar - die geven het namelijk best wel vaak op. Er liggen sensoren op voorraad en ga zo maar door. En niet te vergeten om backups van je code te maken. Het lijkt bijna professioneel deze opzet ;=)
Toegegeven, kijk je een paar maanden later nog eens naar je programma code dan jeuken de vingers om daar orde in aan te brengen, een optimalisatie slag uit te voeren of zelfs te fatsoeneren. Zo klinkt op de fora de kreet "Pythonic" wel eens, de programmeer taal die gebruikt wordt heet namelijk Python. Als je beseft wat ze daarmee bedoelen ga je eens je eigen code bekijken en dan volgen er vanzelf wel verbeteringen of betere structuren in de code.

Leren
Ben ik nu zo'n Python jockey geworden? Nee integendeel. Ja, je leert elke keer weer wat bij. Zelf krijg ik wel voortdurend het gevoel dat het beter kan. Om dit leer proces wat te versnellen en ietsjes fundamenteler aan te pakken ben ik nu bezig een script in elkaar te sleutelen dat me gaat helpen mijn gemaakte code te analyseren en te houden tegen de Python commando's die de programmeertaal uitmaken. Mooi zou zijn als ik wat code in handen zou krijgen van de wat meer geroutineerde programmeurs en daar ook zo'n analyse op los te laten. Dan zie je vast verschillen in frequentie van commando's tussen hullie en mijn code. Daarna zullen er best nog wel andere verschillen in opduiken. Het is een plan wat ik wellicht in januari het beste kan afwerken als mijn knie geopereerd is. Dan is het toch een tijdje stilzitten geblazen.
Verder wordt mijn blokkendoos (biebliotheek) met veel gebruikte routines steeds groter, wat het bouwen van apps dan weer versneld. Zonder een poging te doen om die blokkendoos dan als een soort IKEA universeel bouwpakket te willen gebruiken.

Geen opmerkingen: