Johan Henselmans, die werkt onder de bedrijfsnaam Netsense maar ook onder de namen Timerot, ReadRFid en soms als Coreservices, Qrafya of Mycayoca, is een manusje van alles die werkt en heeft gewerkt als systeem-beheerder, ontwikkelaar, project-manager, onderzoeker, organisatie-adviseur, schrijver en trainer. Hij heeft gewerkt met verschillende besturingssystemen (SunOS, Linux, FreeBSD, MacOs) en programmeertalen, van Cobol tot Go, Javascript tot Dart, Basic tot (Objective-)C, Bash tot Perl en Python, en heeft databasese gebruikt van Access tot Mysql/MariaDB en Postgresql, en heeft gewerkt in organisaties zo groot als een nationale bank en zo klein als een een-mans bedrijf. Hij is op dit moment toe aan een nieuwe opwindende uitdaging betrekking hebben op het redden van de mensheid van een door opwarming van de aarde te verwachten uitsterving.
Hij is afgestudeerd organisatie-socioloog en ook opgeleid als IT-architect. Als men aandringt spreekt hij, afgezien van zijn moedertaal (Nederlands), Engels, Duits, Frans en wat italiaans. Als hij afdoende vergiftigd is, tracht hij wel eens al deze talen tegelijk te spreken.
Af en toe speelt hij op een van de gitaren die hij in de loop van de tijd heeft aangeschaft. Vraag hem maar niet waarom hij zo weinig oefent.
Kandidaats in Sociologie, met milieukunde als specialisme, 1975-1979
Universiteit van Amsterdam
Ambi IT-opleiding as a systeem ontwerpen, 1985-1988
Novi
Doctoraaal in Sociologie, gespecialiseerd in het creëren van AI-modellen over besluitvorming, 1989-1991
Universiteit van Amsterdam
Verschillende Apple-Mac cursussen, werkzaam als Apple-certified trainer, 2006-2009
LAI
Verschillend programmeer-talen, van SPSS en Prolog tot Go en Flutter., 1979-2019
Netsense probeert zo pragmatisch mogelijk te werken om zijn doel te bereiken: een product op tijd en binnen het gestelde budget te leveren.
Omdat het gezond is! Effe serieus: een van de problemen met programmeren is dat het zwaar werk is: je moet je behoorljk concentreren, met veel herhalende taken. Dat betekent dat we gemakkelijk fouten kunnen maken, en dat deze fouten onmiddellijk gevolgen hebben: een programma werkt dan niet, of niet correct.
Om dat te voorkomen zijn er verschillende benaderingen. Twee sets ogen om fouten te voorkomen is een van de mogelijkheden.
Testen als onderdeel van het programma is een ander onderdeel. Dit voorkomt slordige omweggetjes.
Korte deel projecten, met duidelijke doelen en verhaallijnen is een ook een onderdeel. Dit voorkomt grote projecten zonder breekpunten, en maakt het mogelijk om snel de software aan te passen als de programmatuur niet de kant opgaat die je zou willen.
Dit zijn allemaal denkbeelden van extreem programmeren, van DSDM, van agile werken en van andere moderne werksmethoden.
Hierboven beschrijven we de ideale wereld, waarbij er voldoende tijd en mankracht is om op een rustige en evenwichtige manier tot een goed resultaat te komen. De praktijk valt nogal eens anders uit: te laat komt men er achter dat het werk niet op tijd klaar komt, dan worden er extra mensen ingeschakeld, waardoor het project nog meer vertraagt, vervolgens laten we bepaalde eisen maar zitten, wordt het testen ingekort, of niet gedaan, en eindigen we met de hakken over de sloot net voor de afsluitende borrel met een product dat niemand gelukkig maakt, maar het is in ieder geval iets…
Enfin, we doen ons best.
Een ander begrip dat we voor ogen willen houden is de bruikbaarheid en toegankelijkgeid van de programma’s die we schrijven. Dat betekent niet alleen dat visueel gehandicapte personen in staat moeten zijn de software te gebruiken, maar ook een duidelijke scheiding tussen de presentatie-laag van het programma en de gegevens-inhoud van het programma, ook wel het zicht op en de gegegevens van het programma genoemd.
Deze scheiding maakt het een stuk eenvoudiger om de gegevens te ontsluiten voor andere platformen:
slimme telefoon-apps in plaats van web-browsers, tablets in plaats van pc’s.
Tenslotte wordt het meeste van wat we bouwen met de bron-code geleverd. Dat betekent niet dat de klant de eigernaar van de code is, tenzij dat op uitdrukkelijk verzoek zo is afgesproken. Het betekent dat andere ontwikkelaars de code kunnen verbeteren en fouten kunnen repareren, zelfs als de oorspronkelijke ontwikkelaar niet meer betrokken is bij het project.
Netsense gebruikt bij voorkeur bestandsformaten die openbaar zijn, met besturingssystemen waarvan de broncode beschikbaar is, met programmeertalen die niet aan een bepaald besturingssysteem gebakken zitten.
De gebruiker is eigenaar van de gegevens die hij op een computer opslaat. Als een gebruiker zijn gegevens opslaat in een bestandsformaat waarvan hij de structuur niet kan achterhalen, dan kan dat zeer vervelende gevolgen hebben op latere termijn. Gegevens zijn niet meer te achterhalen omdat het programma waarmee de gegevens zijn opgeslagen niet meer werkt op nieuwere systemen. Of gegevens raken corrupt, en kunnen alleen maar gerepareerd worden middels kennis die bij de maker van het bestandsformaat aanwezig is.
Daarom proberen wij zoveel mogelijk gebruik te maken van gereedschappen en bestandsformaten die de gebruiker altijd in staat blijven stellen om zijn gegevens te achterhalen. Ook als de gebruiker besluit van leverancier te wisselen.
Daarom zijn we voorstander van gebruik Postgresql en Mariadb as database systemen van SVG, JPEG2000 en PNG als grafische formaten, Mpeg4 voor video, PDF, HTML, MarkDown en Open Document als tekstdocumentformaten.
Als besturingssysteem gaat onze voorkeur uit naar een besturingssysteem waarvan de broncode beschikbaar is: Linuxen, FreeBSD, NetBSD, OpenBSD and Mac OS zijn daar voorbeelden van.
In de huidige internet tijd is het van groot belang dat de gegevens die u opslaat op uw computers goed beschermd zijn tegen aanvallen via het netwerk waarop de meeste computers zijn aangesloten. Een besturingssysteem waarvan de grondslagen van de werking en van de beveiliging door iedereen te controleren en te verifiëren zijn, heeft een betere kans daaraan te voldoen dan een besturingssysteem waarvan de broncode niet beschikbaar is.
Dat wil niet zeggen dat er in de besturingssystemen waarvan de broncode beschikbaar is geen fouten zullen zitten. Maar het is beter mogelijk zelf te bepalen of de fout serieus is, of kan wachten op een reparatie door de leverancier van het besturingssysteem, en eventueel speficieke onderdelen van het besturingssysteem uit te schakelen totdat er reparaties beschikbaar zijn.
Wij willen niet dat de klant gedwongen is om een bepaald bestuingssysteem te gebruiken omdat het gewenste programma alleen maar beschikbaar zou zijn op dat specifieke besturingssysteem. Als een klant een ander besturinggsysteem kiest, dan moet dat mogelijk zijn. We kiezen bij voorkeur programmeertalen die dat mogelijk maken, zoals Perl, PHP, Python, Go, Flutter. Ik placht veel in C en Java/WebObjects te ontwikkelen. C is een taal die het zeer gemakkelijk maakt om onleesbare code te maken die bovendien geheugenlekken veroorzaakt, Java en WebObjects zijn met dank aan Oracle en Apple hebben zich ervan verzekerd dat deze talen en functiebibliotheken uiteindelijk vergeten zullen worden. Sindsdien heb ik ook mijn aandacht verlegd naar andere programmeertalen.
En we kiezen bij voorkeur ontwikkelgereedschappen voor die programmeertalen die de keuze voor een specifiek besturingssysteem vermijden.
Ook de gereedschappen die we gebruiken proberen we zo generiek mogelijk te houden, zonder voor een bepaald besturingssysteem te hoeven kiezen zoals SublimeText, Visual Code Studio en Emacs
Om hardware te ontwikkelen gebruiken we KiCad, en we geven de voorkeur aan Beaglebone als ontwikkelplatform. Voor nu, totdat open hardware op basis van RISC-V voor alle mogeljke toepassingen bruikbaar wordt.