blogheader
Zakelijke zaken
Zakelijk & ICT
 

Een terugblik op de wereld van ICT

Door te melden op LinkedIn dat ik docent ga worden krijg je een leuk beeld van het gebruik van social media. Door een link naar deze blog te maken kun je op Google Analytics ook nog eens mooi zien of mensen je artikeltje lezen en hoe lang ze blijven hangen. Eén van de reacties van een mede oud-student was dat het inmiddels 28 jaar geleden is dat we aan de opleiding begonnen. Tijd voor jeugdsentiment dus. Hier wat ontwikkelingen en anekdotes uit mijn wereld van computing power en software ontwikkeling. 

Portable Power met de Casio PB200

Mijn eerste echte programmeerbare computer was een veredelde rekenmachine van Casio met 2.3Kb geheugen en een HD61913A01 processor. Je had één regel display met 12 posities en kon ongeveer 1568 "stappen" programmeren in een basic achtige taal. Er waren grappige spelletjes op te maken maar de machine was vooral bedoeld om complexe berekeningen te kunnen doen. Toch leerde ik hier mijn eerste FOR-lus en dergelijke. 

Je kon zelfs het apparaat aansluiten op een casettedeck om je programma's veilig te stellen. Dat moest via een apart aan te schaffen dockingstation die we natuurlijk ook meteen kochten. Het ding kwam in een keurige nepleren hoesje waardoor hij ook mooi mee naar school kon. Bijvoorbeeld om je natuurkunde formules in op te slaan en door te rekenen. Reuze handig!

De Z80 processor

Mijn ICT carriere begon thuis en op school met de Z80 processor. Deze was onder andere te vinden in de Schneider en MSX computers. Onze eerste MSX computer deed thuis zijn intrede op de kerst toen ik (volgens mij) 15 jaar was. We gingen natuurlijk meteen aan de slag met basic programmeren en games spelen. Met de oude vertrouwde cassette recorder kon je je werk veiligstellen en weer ophalen. Niks geen floppies of USB Sticks. Gewoon geduld hebben om na 5 minuten wachten verder te kunnen met je werk. 

Al snel schakelden mijn programmeur vriend en ik over op machine taal (mnemonics) die we dan door een compiler haalden en zo geregeld onze computer lieten vastlopen. Deze taal hadden we op school geleerd op de vrijdag middag van onze wiskunde leraar. Op een computer die meer leek op een toetsenbord met ingebouwde tape-deck genaamd Schneider Amstrad CPC. Deze Amstrad had dezelfde Z80 processor en dus dezelfde instructie set.

We maakten de gekste dingen in machine taal en kochten zelfs het MSX ROM BIOS handboek zodat we echt álles wisten van onze computer. Vrienden met échte durf hanteerden zelfs de soldeerbout. Wij maakten een 'MSX Monitor' waarmee we in de achtergrond konden meekijken in het geheugen en zo spelletjes probeerden te hacken. Dan ontdekten we met de 'Memory compare' functie van onze monitor waar de levens opgeslagen waren om die vervolgens op 99 te zetten. Wel in BCD notatie he! 

We deden zelfs mee met een heuse programmeerwedstrijd die begon in de bibliotheek van Leeuwarden en eindigde in het MECC in maastricht. Ik deed mee met mijn 'Character Editor' en mijn broer met een zelf gemaakt platform game met prima graphics (nooit mijn sterke kant geweest overigens). Ik mocht zowaar door naar de finale in Maastricht waar het nerd-gehalte spectaculair was. Daar konden we duidelijk niet tegen op, en ik ging samen met mijn vriend naar huis met slechts een pak printerpapier (kettingpapier zonder zebra regels). 

Wel liepen we op dat evenement tegen mensen aan die wel brood zagen in onze MSX Monitor die dus in machinetaal was geschreven. Waarom dat uiteindelijk nooit iets is geworden is mij inmiddels volledig ontschoten.

De eerste IBM PC

Tegen de tijd dat het VWO-diploma in zicht kwam werd het tijd voor een betere computer. We schrijven inmiddels 1987. Via mijn oom die bij V&D werkte kochten we voordelig een Vendex Headstart met twee 5,25" floppy drives, een 8088 processor en een handvol geheugen (ik vermoed 512KB). Het opstarten ging van floppy. Dus je had wel een kip-ei probleem als je floppy met het Operating Systeem (DOS 4 waarschijnlijk) kapot ging. Ook daar gingen we meteen aan de slag met programmeren en gamen. Wel gingen we terug van een kleuren computer naar een monochrome uitvoer. In die tijd betekende dat vaak groenbeeld monitoren die lekker veel licht gaven en de neiging hadden om in te branden (het effect dat zelfs als het scherm leeg was je nog letters leek te zien).

Deze machine draaide op een chip waar de snelheid nog in MHz werd aangeduid, en dan vaak nog in cijfers van 1 getal voor de komma: 4,77Mhz. Antiek dus. Als je lef had wipte je deze chip er uit en zette je er een V20 in die sneller was. Destijds zaten die chips nog niet in een ZIF-socket en moest je dus echt met een speciale tang of schroevendraaier die dingen er uit wippen en zien dat je de kostbare nieuwe chip er in één keer recht inschoof anders waren je pootjes krom.

Het vervolg: de x86 serie

Na de 8088 kwamen in rap tempo de opvolgers. De eerste 8086 kwam in huis, later gevolgd door de 80286 die ik van een docent van de HIO overnam. Zowaar 2MB geheugen en 3,5" floppy. Verder kwam er een "paperwhite" scherm bij in plaats van een groenbeeld monitor. Eenmaal uitgestudeerd was het tijd voor de opvolger: de eerste 80386 met kleurenscherm van Vobis Computers uit Leeuwarden. Dat kostte destijds een bruto maandsalaris (maar dan dus netto!) en was een rib uit je lijf. Soms kon je via een "PC Privé" projecten dergelijke bedragen bruto/netto afbetalen met je salaris. We stapten daarmee over naar de mogelijkheid om 32bits applicaties te bouwen en uit te voeren. Met meer geheugen werd het helemaal een feest. Maar let wel: 16MB geheugen kostte destijds in 1993 nog wel fl. 1600,- (dat is grofweg één maandsalaris netto destijds). En we praten nog steed over klokfrequenties van rond de 40MHz! En er zat waarschijnlijk zelfs een echte harde schijf in, waarvan de omvang nog in MB's werd uitgedrukt. 

De Pentium bug

 Na de 80386 kwam de 80486 op het bureau en werd op het werk (IKM Engineering in Gouda) de eerste Pentium (80586) aangeschaft. En daar bleek een fout in te zitten. Dat betekende daadwerkelijk dat je de CPU uit de computer moest vissen, opsturen, formulier en vullen en wachten op de nieuwe. Uniek. We schrijven inmiddels 1994. En nog steeds zitten we met de CPU snelheden onder de 500Mhz, is 8MB geheugen al erg veel en netwerken we nog vooral met Novell, IPX en bestond er nauwelijks internet.

Software bouwen en klanten

Totdat ik aan het werk ging waren de programmeer opdrachten vooral academisch van aard en zat je thuis wat te hobby-en met een project waar waarschijnlijk nooit iemand anders dan jij zelf gebruik van zou maken. Eenmaal aan het werk was dat wel anders. Met een stevige dosis voorbereiding van de HIO gingen we het veld van informatie analyse te lijft. Op de opleiding hadden we daar diverse vakken voor:

  • Informatie Analyse (volgens NIAM) en Systeem Ontwerp
  • Einde jaars projecten waar je moest samenwerken
  • Programma Ontwerp
  • Informatiesystemen en database ontwerp
  • Ondersteunende vakken en communicatieve vaardigheden

Met de einde jaars projecten waren we bijv. 6 tot 12 weken aan het werk met één grote opdracht in een team van 4-6 mensen. De projecten waren:

  • eerste jaar: bouw de kieswet na. Je krijgt van ons het aantal stemmen per kiesdistrict en jij moet de indeling van de 2e kamer bepalen
  • tweede jaar: bouw een melkfabriek met lopende banden, liften en opslag die op 2 platformen (IBM + Atari) kon draaien. Je krijgt van ons een bestelling en moet aantonen dat die foutloos uitgeleverd wordt
  • derde jaar: bouw een cruise control die realtime reageert op invloeden van buitenaf. Je kunt bij de docent de specificaties ophalen
  • vierde jaar: bouw een NIAM applicatie met database, natuurlijke taal invoer en grafische weergave. Elk team krijgt één deelproduct dat uiteindelijk moet samenwerken als één applicatie

Je ziet hier in de opbouw twee zaken. Ten eerste de mate van specificaties van de opdracht. De kieswet is maar voor één uitleg vatbaar, al is dat niet eenvoudig. Het bouwen van het NIAM landschap was zo ruim opgezet dat eigenlijk alleen duidelijk was dat de combinatie van producten één geheel moest vormen. Ten tweede de opzet van de teams. Eerst waren we allemaal programmeur en vochten we intern om de beste oplossing. Bij het laatste project werd er een roulerende projectleider aangewezen die wekelijks om de tafel ging met de docenten die als opdrachtgever en begeleider fungeerde. Verder moesten we interfaces en deadlines afstemmen met de andere teams. 

Leuk detail is dat één van de studiegenoten uiteindelijk daadwerkelijk gewerkt heeft aan het opzetten van de software van een melkfabriek.

Op mijn stage bij AT&T in Hilversum en mijn afstudeerdproject bij de CHNN (Christelijke Hogeschool Noord-Nederland, tegenwoordig Stenden) werd al duidelijk dat de echte wereld niet veel gestructureerder werkten dan wij als studenten bij deze grote opdrachten. Zo bouwden ik met een andere stagair voor AT&T verder op een planningstool. Samen met onze stage opdrachtgever werkten we aan het grafische module om bijv. blokkades te kunnen opgeven in verband met overwerk. Trots presenteerden wij onze prestaties aan het team dat deze gegevens moest gaan invoeren. We stuitten echter op behoorlijke weerstand: het team was helemaal niet van plan om dergelijke informatie af te staan omdat ze helemaal niet van plan waren om structureel over te werken. 

Bij mijn afstudeeropdracht maakte ik een zeer eenvoudige applicatie om de voortgang van afstudeerders en stagiaires van de afdeling "Gedrag & Maatschappij" op de CHNN te kunnen bijhouden. Ook dat ging zeer moeizaam. Men was meer bezig met het vak Drama dan digitalisering: boven op de computer monitor stond de ouderwetse typemachine waarop het stage verslag werd getypt. 

Kortom: het verzamelen van goede requirements en een indruk van "wie is de eindgebruiker" was in de echte wereld een behoorlijke kluif. 

Unix, NeXT en Mini

Iets wat destijds redelijk academisch van aard leek was de Unix wereld. Van Linux hadden we nog nooit gehoord trouwens. Maar op de HIO opleiding maakten we gebruik van het NeXT systeem en een Prime computer. Eigenlijk hadden we geen idee wat die Prime nu eigenlijk was. Blijkbaar was het een 'mini'. Je moest er op inloggen met een terminal emulator en dan konden we werken met Oracle (SQL en Forms). En heel belangrijk: je kon daar e-mailen. Dus wij stuurden e-mails naar Majordomo mailing list (Usenet) om te kijken welke headers er waren in bepaalde nieuwsgroepen. Want er waren nog nauwelijks (normale) mensen die e-mail konden ontvangen. 

Daarnaast kregen we les in Unix: shell programming, sed, awk, grep en i-nodes. Ook toen was ik al onder de indruk van dat systeem, vooral omdat ik op mijn stage opdracht daar ook mee mocht werken. Daar hadden ze al grote schermen (21") met een grafische omgeving binnen de Sun Sparc machines. En er werd nog afgerekend in CPU-cycles..... Maar op school hadden wij NeXT. Slechts weinig mensen weten dat toen Steve Jobs stopte bij Apple hij een nieuwe computersysteem ging verkopen genaamd NeXT.  Voor ons op het bureau stond een pizzadoos met een zwart-wit beeldscherm er op met muis en toetsenbord. Met de programmeertaal "Objective C" maakten we de eerste echte grafische applicaties en konden we een netwerk benutten om berichten tussen applicaties uit te wisselen. Saillant detail is dat de NeXT de allereerste wereldwijde computer was die als webserver fungeerde op het World Wide Weg dat destijds in ontwikkeling was. 

Het mooie van deze programmeertaal Objective C is dat alles een object is, en je dus eigenlijk niet meer na hoeft te denken hoe je met pointers en zo omgaat. Zelfs een Integer was een object. Ideaal. Een van de studiegenoten heeft later veel werk verzet voor de metro's van Rotterdam die van dit computerplatform gebruik maakten. 

Tegenwoordig ben ik groot Linux fan en zijn de prive computers thuis op één na allemaal Debian based GNU/Linux:

  • server met Ubuntu (Unity) 16.04 LTS
  • Laptop met Ubuntu Mate 16.04 LTS 
  • Desktop met Lubuntu 16.04 LTS
  • RaspberryPi 1B (2x) met Debian Jessie
  • RaspberryPi 2B met OpenElec
  • RaspberryPi 3b met Debian Jessie

En wat doen die dingen zoal:

  • GIT-repository voor al mijn websites
  • MySQL & Apache server
  • LDAP Server (voor authenticatie/autorisatie van Apache en OAuth integratie met GoogleContacts)
  • MPD-server
  • Kodi
  • werkstations voor huiswerk en website development
  • Virtual Box voor virtuele machines (Windows & Debian speeltuinen)
  • NAS (Samba) & Backup (o.a. richting StackStorage van IPTrans) via cron & rsync

Om te zorgen dat ik op mijn zakelijke Windows machine ook gebruik kan maken van een Bash-shell moet ik op Windows 7 nog uitwijken naar Cygwin. En ja, je kunt daar zelfs een light-weight grafische desktop krijgen. Wat ik dan weer optimaal jeugdsentiment vind is dat ik de NeXT window manager kan gebruiken die ik dus 25 jaar geleden op de opleiding op mijn scherm had staan. Niet omdat het nodig is (je hebt immers al Windows als grafische omgeving), maar gewoon omdat het kan. 

Maar het goede nieuws is dat je op Windows 10 inmiddels netjes een Bash-shell aan kan zetten. Daarmee kunnen we eindelijk ook in de zakelijke omgeving met grep, awk, sed en dergelijke aan de slag om grote files te processen. 

Side note: inmiddels hebben we op Ubuntu ook toegestaan dat we Microsoft Powershell kunnen doen. Of ik daar nu gelukkig van moet worden weet ik nog niet, maar ik heb het wel eens geinstalleerd om te kijken hoe dat werkt. En ook MS SQL Server draait inmiddels netjes op Ubuntu zonder Wine en andere vervuilende lagen. De cross-over tussen Microsoft en Linux lijkt dus de eerste serieuze stappen gezet te hebben. 

Conclusies

Ik kreeg op mijn 15e jaar de eerste computer op mijn bureau. Nu ruim 30 jaar later hebben we machines in onze broekzak zitten met 4x zoveel cores, 500x meer geheugen, 500x snellere processoren en bijna oneindig meer opslag (ik heb er 32GB in zitten). Mijn laptop en thuiscomputer zijn nog erger: van 2MHz naar 3,2GHz: 1500x sneller met 6x zoveel cores. Van 640Kb naar 8GB. Mijn grafische kaart heeft meer geheugen en rekenkracht dan mijn eerste computer.

En dat tegen een kostprijs die maar een fractie is. Waren we in 1990 nog 1200 gulden kwijt voor 16MB geheugen, tegenwoordig koop je voor € 100 nu 16GB geheugen. Dat is van fl75,- per MB naar €0,012 per MB. De omvang van de apparaten is ook vele malen kleiner. Verder zijn we bijna altijd met de hele wereld verbonden en hebben we inmiddels verbindingen naar huis van 1GBPS naar het internet en de baas zijn infrastructuur. Terwijl we vroeger met 56k6 modem inbelden op een telefoonlijn en dus vervolgens de halve avond niet telefonisch bereikbaar waren. Dat zijn technologisch gezien wel de grootste verschillen. 

Op het gebied van software ontwikkeling zien we de 4e generatie talen opdoemen waarmee je meer grafisch kan modelleren. Ondertussen zien we steeds meer embedded software zoals Android op je TV en Linux op een reclamezuil of je HDD recorder. 

Ik vind het allemaal prachtig die nieuwe dingen, maar ben ook blij dat ik bij de basis ben begonnen. Ik weet tenminste wat een Bitwise-And operatie is, hoe je I/O-redirection doet en bouw mijn eigen PC (dat laatste wordt wel steeds lastiger om de juiste onderdelen bij elkaar te krijgen). Verder ken ik de principes van parameteroverdracht van functies, ken ik het verschil tussen een compiler en een interpreter (zoals Java) en kan ik soms zaken eenvoudig oplossen met reguliere expressies. Een natuurlijke nieuwsgierigheid hebben er voor gezorgd dat ik een website kan bouwen met Apache, PHP, MySQL en Javascript, snap hoe OAuth en SAML werken en hoe HTTP werkt. 

Gek genoeg ga ik dus nu aan het werk als docent Business & ICT waar de component techniek waarschijnlijk een stuk lager is dan in mijn dagelijkse werk en hobby. Ik ben benieuwd....

 

Published by Martin Molema (Webmaster),