Ik heb vanaf 1981 ervaring als software ontwikkelaar bij diverse banken, als zelfstandige en met een uitstapje naar de logistieke sector ben ik de laatste 17 jaar actief geweest bij een verzekeringsmaatschappij. Vanaf de middelbare school (VWO-B) ben ik in 1979 geheel onverwacht met computers in aanraking gekomen door een baantje te accepteren als computer operator bij een bank. De interesse was gewekt, na een test mocht ik de opleiding tot Cobol programmeur volgen en zo ben ik in 1981 software gaan ontwikkelen in Cobol en na een cursus Assembler heb ik daar ook nog onderhoud in gedaan.
Intussen heb ik in veel talen geprogrammeerd en veel systemen gezien. Van procedureel via Object Oriented tot declaratief. De mate van abstractie gaat omhoog en daardoor maak je beter gebruik maken van bestaande patronen met als gevolg minder fouten en betere ondersteuning in de IDE. De laatste 2 jaar gebruik ik voornamelijk de DotNet omgeving. Als ervaren C++, Delphi (Pascal) en Java (gecertificeerd) programmeur ben ik vanaf het eerste begin met C# gestart, ik heb ook VB gebruikt, veel later ben ik F# gaan gebruiken en nu C# functionele trekjes krijgt, ook weer C#. Natuurlijk kon ik ook niet om om javascript heen, en heb ik alternatieven gebruikt zoals Dart en Typescript. Met de tijd komen er meer talen bij, verdwijnen gaat langzamer, talen blijven hangen, kijk maar naar Cobol. Het is dan ook makkelijk om ervaring te hebben in zoveel talen, soms kom je ze gewoon weer tegen. Veel nieuwe talen zijn gedeeltelijk gebaseerd op populaire constructies uit andere talen waardoor je ze snel eigen maakt. Ik ben zelf vooral gecharmeerd van sterke typering en de mogelijkheid van de compiler om op basis daarvan andere types af te leiden en daarmee fouten op te sporen. Functionele talen zijn hier kampioen in, als mijn programma in F# door de compiler komt heb ik nog maar weinig problemen als ik het uitvoer. Toch blijft testen natuurlijk noodzakelijk. Ik ben nog altijd enthousiast over de ontwikkelingen op computertaal terrein en experimenteer daar nog graag mee. Als (technisch aangelegde) ontwikkelaar heb je ook te maken met de infrastructuur, ik heb in al die jaren heel wat ervaring opgebouwd. Tegenwoordig gebruik ik de Cloud systemen die een boel rompslomp van je wegnemen en die een ontwikkelaar enthousiast maken door “Infra as Code” principes.
Mijn expertise is ontwikkeling en integratie van systemen. De uitwisseling van gegevens tussen verschillende domeinen loopt via zorgvuldig ontworpen interfaces. Een goed ontworpen interface voorkomt ellende bij dagelijks gebruik en bij het beheer in de toekomst. Daardoor is het zo nuttig en leuk om te ontwerpen. En bij het bouwen zijn vaak heel verschillende soft- en hardware technieken betrokken.
De ontwikkelde systemen moeten betrouwbaar en veilig zijn. Omdat betrouwbaar en veilig in het hele systeem zitten, dus niet alleen de ontwikkeling van het programma maar ook alles wat er om heen zit, zoals de configuratie van resources, het uitrollen van de juiste versie, vind ik dat die operationele tak er bij hoort. Dus naast de sources van programma’s komen ook de operationele gegevens in Git, bij elkaar, zodat iedere wijziging traceerbaar is. Ik heb hiervoor een methodiek ontwikkeld, omdat het lastig is zo uit het niets op te zetten. De methodiek zorgt voor ondersteuning, denk aan intellisense en fout detectie en werkt als template.
Ik ben begonnen als Computer Operator, daarna heb ik als Cobol en Assembler programmeur gewerkt na een intensieve opleiding tot programmeur.
Als een van de eerste heb ik aan balie automatisering gedaan met het programmeren van balie terminals en geldautomaten. Datasaab was de leverancier van de hardware en had een eigen ecosysteem met zijn mini computer en een eigen software omgeving. Er werd geprogrammeerd in DIL (Datasaab Interpretive Language).
Van de ene bank naar de andere. Ik heb hier vooral aan het transactie systeem en aan databases gewerkt, daarnaast was ik expert geworden op het Sperry Univac 1100 mainframe, thuis in de assembler taal heb ik veel technische klusjes uitgevoerd.
Nu iets heel anders, een groothandel in medicijnen en kantoorartikelen. Hier heb ik geprogrammeerd aan de logistieke systemen in C op DOS en OS/2 en AIX, aan een apotheek systeem in Delphi en aan de besturing van PLC’s in een magazijn. Vele klussen, meestal technisch van aard vanwege allerhande apparatuur die gebruikt werd in het magazijn. Hier heb ik op een AIX systeem een modem pool aangestuurd om de orders van apotheken binnen te krijgen. Later heb ik een gemoderniseerde variant gemaakt via ISDN, alleen niet in C maar in Delphi (Pascal).
Ik heb me bij Delta Lloyd voornamelijk bezig gehouden met systeem integratie. Het was het tijdperk van de Enterprise Service Bus en Java als programmeertaal, ik heb alle producten van IBM gezien, mijn expertise is MQ, message georiënteerde communicatie en File Transfer. Ik weet alles over het transport van gegevens maar ook hoe je die veilig verwerkt. En op veel systemen, ik heb gewerkt op Windows, Aix, Linux (RHEL, Suse) en z/OS. Na de overname door Nationale Nederlanden ben ik bezig geweest met een assurantie pakket, gemaakt rond een Oracle database, dat volledig in de AWS cloud ging draaien. Mijn laatste grote klus is een migratie geweest van DL systemen naar de infrastructuur van NN. Dat was een uitdaging omdat steeds kleine stukjes werden gemigreerd en alles wat dat raakte, aangepast moest worden. Dat ging uiteindelijk volledig automatisch, mijn oplossing genereerde op basis van zo’n migratie alle aanpassingen. Werkte een gemigreerd stukje toch nog niet goed dan kon de terugweg ook gegenereerd worden. De methodiek die ik hier gebruikt heb ligt ten grondslag aan de oplossing die ik uitgevonden heb voor het gecombineerde “DevOps” beheer voor de ontwikkeling en uitrol van betrouwbare en veilige systemen. Ik heb ook aan front-end systemen gewerkt als ontwikkelaar heb ik in een team van 5 personen een hackathon gewonnen. Onze winnende oplossing was een angular applicatie die via een api in de cloud, een foto van een auto schade kon uploaden en die met ons getrainde model via Machine Learning werd beoordeeld. In totaal heb ik 3 keer meegedaan, de andere keren heb ik de front-end geprogrammeerd in Fable, een techniek die op basis van F#, React componenten gebruikt en uiteindelijk transpileert naar javascript. In mijn allerlaatste project heb ik met Gatsby, gebaseerd op React, en javascript een App voor het hypotheek bedrijf in België ontwikkeld.
Mijn bedrijf is gericht op het betrouwbaar en veilig maken van (bestaande) systemen. Ik heb een eigen ontwikkelde methodiek die uitgaat van het traceerbare gecombineerde beheer van development en operations. Dat gebeurt in een aparte omgeving waaruit een na zorgvuldig testen, een geëxporteerde beschrijving ontstaat die als een orgelboek op een draaiorgel wordt uitgevoerd. De methodiek geeft handvatten hoe je met zo weinig mogelijk inspanning de vereiste versleuteling van data, scripts en secrets kan implementeren.
De techniek van vastleggen en exporteren van de essentiële beschrijving van een systeem is gebaseerd op het dotnet framework met zijn enorm goede compilers en zijn platform onafhankelijke implementaties. Alleen het beheer gaat met dotnet, maar wat je ermee beheert kan van alles zijn, van gecompileerde talen tot scripts van Java tot Python, het maakt niet uit. De methodiek combineert development met operations en is bedoeld voor gebruik door een DevOps team. Het kern idee gaat uit dat alles wat van invloed is op de werking van een systeem opgeslagen wordt in Git zodat iedere wijziging, hoe klein ook, traceerbaar is. Vanwege de hoeveelheid en variatie moet de kern van die gegevens formeel beschreven zijn, om fouten te voorkomen en om automatisch te verwerken. Een ander deel van de gegevens is er alleen om dat formele gedeelte te voeden. Ter verduidelijking kan je een compilatie voorstellen, het gaat om het gecompileerde stuk, maar je hebt de source nodig om dat te krijgen, en wijzigingen op de source wil je kunnen traceren. Van het formele gedeelte wordt een exportbestand gemaakt voor het runtime systeem, maar alleen als alle testen goed gegaan zijn. Het is te vergelijken met het orgelboek van een draaiorgel.
De kern van betrouwbaar en veilig is dat alleen iets uitgevoerd wordt als het uit Git komt en getest is. Daarom hoef je geen faciliteiten meer te bieden op de server om een handmatige correctie te doen. Voor iemand die toch nog toegang heeft wordt het onmogelijk gemaakt om iets te wijzigen en te lezen. Het runtime systeem, het draaiorgel, helpt de bestaande programma’s door bijvoorbeeld versleutelde gegevens ontcijferd aan te bieden, of geheimen (secrets) vanuit de Key Vault door te geven.
Mijn werk bestaat uit training en hulp bij migratie naar een betrouwbare en veilige situatie. Ik geef introductie dagen of dagdelen, of ik werk mee bij het uitvoeren van een migratie.