Yes! Vijfentwintig posts in ongeveer een jaar. Missie geslaagd dus: gemiddeld om de twee weken een post publiceren. In deze post wil ik die reis samenvatten, vertellen wat ik heb geleerd en hoe ik hoop verder te gaan.
25 tweewekelijkse porties code
Toen ik met deze blog begon, liet ik me inspireren door de #100DaysOfCode- challenge, die toen populair was op sociale media. Elke dag een kleine oefening maken sprak me alleen niet zo aan. Door de jaren heen heb ik er al veel gedaan om te leren programmeren. Ik werk liever aan grotere projecten met een duidelijk doel die ik later nog kan gebruiken. Zo ontstond het idee om daar twee weken aan te werken en er een blogpost over te schrijven.
Een jaar in cijfers
Vorig jaar werd de blog gelezen door 382 mensen uit 53 landen. Omdat dit een puur persoonlijke blog is, besteedde ik in het begin weinig aandacht aan SEO en promootte ik posts niet uitgebreid. Daardoor werd de blog maar door een handvol mensen bekeken … tot september. Toen steeg het aantal bezoekers plots sterk. Dat kwam vooral door twee posts: de Gwent Pro Rank-analyse en de integratie van de Aqara Cube in Home Assistant. Rond die tijd begon ik sommige posts ook op Twitter in de kijker te zetten. Dat levert wel een korte piek aan bezoeken op, maar het meeste verkeer komt via organische zoekresultaten. Het is fijn om te zien dat mensen enkele van mijn posts beginnen te lezen. Als ik twijfel over het onderwerp van een volgende post, geef ik misschien voorrang aan een onderwerp dat eerder populair was.
Wat ik heb geleerd
Datawetenschap
Projecten met tools voor datawetenschap hebben me veel handiger gemaakt met pandas, numpy, seaborn en SciKit-Learn. Door ze in een Jupyter Notebook uit te werken, kunnen code en uitleg op één plek worden gecombineerd. Google Collab en Binder maken het heel eenvoudig om die met de wereld te delen, zodat mensen ze makkelijk kunnen uitvoeren, aanpassen en opnieuw uitvoeren. Hoewel meer technische posts doorgaans minder bekeken worden, zijn toegankelijkere posts (zoals de Gwent Pro Rank-analyse) behoorlijk populair. Daarom zal ik proberen zulke inhoud over twee posts te verdelen: een technische met de code en een algemenere met de grafieken, resultaten en interpretatie.
Door aan problemen van CodeForces te werken, ontdekte ik mijn achilleshiel … algoritmen! Ik heb wel gevorderde vakken wiskunde en statistiek gevolgd, maar algoritmen zoals het knapzakprobleem en hoe je die omzet in code kwamen nooit aan bod, omdat ik geen klassieke informaticaopleiding heb gevolgd. Daardoor loop ik vaak vast op opdrachten waarvoor dynamisch programmeren nodig is. Meestal kan ik wel een oplossing bedenken die op basis van een reeks regels goede resultaten geeft (oftewel een greedy algorithm), maar die levert mogelijk niet de optimale oplossing op … Bij de projecten waaraan ik werk maakt dat zelden uit, maar ik zou graag oplossingen kunnen implementeren die gegarandeerd het optimale resultaat opleveren. Daar werk ik al een tijdje met tussenpozen aan en intussen kan ik steeds moeilijkere uitdagingen oplossen. Ik hoop een vervolg op die post te schrijven met oplossingen voor opgaven met een moeilijkheidsgraad ruim boven 2000.
Webprojecten
Voor mij zijn dit manieren om met nieuwe tools en technologie te spelen. Voor mijn dagelijkse werk ontwikkel ik tools om biologische en biomedische gegevens via webinterfaces te verkennen. Omdat dat in een academische context gebeurt, werken er maar weinig mensen aan en zit er flink wat tijd tussen de start en afronding van een project. Zodra de tech stack gekozen is, is er weinig ruimte om die te veranderen en blijft hij vaak jarenlang in gebruik. Via deze blog kan ik experimenteren met kleine projecten die andere pakketten gebruiken.
Door deze blog te ontwikkelen met Jekyll en Ruby (bekijk enkele zelfgemaakte uitbreidingen in deze post), DeckLock (zie deel 1, 2 en 3) met Pelican en Python, en de nieuwe versie van mijn cv met GatsbyJS, maakte ik kennis met nieuwe tools, technologieën en werkwijzen. Op mijn lijstje voor toekomstige projecten staan FastAPI, Graphene (GraphQL), Svelte en TinyDB … ik moet alleen nog iets nuttigs bedenken om te ontwikkelen.
DeckLock, een tool om decks van enkele verzamelkaartspellen op te slaan, gebruik ik voortdurend om Gwent-decks aan het einde van elk seizoen te archiveren. Ook de paar KeyForge-decks die ik vorig jaar kocht, kon ik er moeiteloos aan toevoegen. Sinds de laatste post zijn er enkele verbeteringen aangebracht (die al op GitHub staan), waar waarschijnlijk een toekomstige post uit voortkomt.
Hardware
De meest bekeken post van dit jaar verraste me enigszins. Het is de integratie van de Aqara Cube in Home Assistant. Iets wat ik bijna helemaal niet had gepubliceerd! Ik besefte wel dat een post met instructies handig zou zijn om dit later opnieuw te doen wanneer ik voor Home Assistant naar een nieuwe Raspberry Pi overstap, maar het leek te specifiek voor mijn eigen situatie en weinig interessant voor anderen. Daar zat ik naast! Blijkbaar vulde de post echt een niche: hij wordt het vaakst bekeken en het vaakst via organische zoekresultaten gevonden. Omdat er veel meer interesse is in Home Assistant dan ik had verwacht, kun je nog enkele posts verwachten over de integratie van meer Aqara-sensoren en het maken van je eigen plug-ins (als je niet op de post wilt wachten, staat de code al op GitHub voor een plug-in die ik maakte en waarmee je verbinding kunt maken met meer dan 300 lokale weerstations op basis van het Leuven-sjabloon…)
Dingen bouwen was geweldig. Het mechanische toetsenbord dat ik maakte, was mijn trouwe metgezel terwijl ik duizenden regels code schreef. Zoals de vorige post over STL-bestanden bewerken al verklapt … er komt een Bluetooth-luidspreker aan! Er zijn hier alleen geen goede lokale leveranciers voor de elektronica voor zulke projecten. Daardoor moet ik de meeste onderdelen bij AliExpress bestellen en kan het maanden duren voor ze aankomen. Elk probleem met een onderdeel zorgt meteen voor veel vertraging van een post (de leds voor het toetsenbord zijn bijvoorbeeld nooit aangekomen en er zijn problemen met de Bluetooth-ontvangermodule voor de luidspreker) … Hoewel ik enorm van zulke projecten geniet, kan ik dit soort posts dus niet betrouwbaar publiceren.
Conclusie
2020 zal door de wereldwijde COVID-19-pandemie de geschiedenisboeken ingaan, maar doordat ik noodgedwongen meer tijd thuis doorbracht, kon ik wel meer aan deze blog werken en mijn vaardigheden verbeteren. Als je dit leest, hoop ik dat je de vorige posts met plezier hebt gelezen. Er komen snel meer posts aan!
Header door Nikhita Singhal op Unsplash
Vond je dit artikel interessant? Trakteer me op een koffie