News

Soundbyte 101: Mooi

7 juli 2013

We hebben er even op moeten wachten, maar het was dit weekend mooi zomerweer. Ook nu de schemer al is ingetreden geeft de thermometer nog altijd 23 graden aan. Een weekend naar mijn hart; barbecueën, zwembadje in de tuin voor de kids en de tour die is aanbeland in de Pyreneeën. Eindelijk echte bergen waar de klassementsrenners zich moesten laten zien. Het mooie landschap en de strijd ertegen. Ik kan er uren naar kijken, zeker wanneer er twee Nederlanders in de top 5 staan.

Het is vandaag voor mij de laatste dag van een paar weken vakantie. Met de muziek van deze soundbyte ga ik proberen aan te sluiten bij het gevoel dat de tour en vakantie bij mij oproept. Ik versta er weinig van, maar vind ‘m mooi.

In de eerste week van m’n vakantie besloot ik de vrije tijd te gebruiken om ook weer ‘ns wat extra kilometers op de racefiets te maken. Dagelijks maakte ik m’n rondjes, het ging weer beter en beter en de rondjes brachten mij steeds verder en verder. En toen gebeurde dat wat na iedere meter waarschijnlijker wordt; een lekke band. Argh, het was al laat en –hoewel op de terugweg– nog best een eind van huis. Ik had wel ’n vers bandje mee, maar was in een vlaag van onfeilbaarheid m’n pomp ‘vergeten’. (En nee, die zit niet met zo’n klemmetje vast aan m’n fiets, want dat is niet mooi. Het is een racefiets, geen kerstboom.) Geen zin om anderen lastig te vallen met mijn stommiteit ben ik op m’n sokken naar huis gelopen (op fietsschoenen kun je niet lopen). Eenmaal thuis ben ik me ‘ns echt gaan verdiepen in ‘de fietsband’, want dit moest anders kunnen..

Er zijn drie eigenschappen van een raceband belangrijk; De *rolweerstand*, hoe makkelijker hij rolt hoe beter uiteraard. De *grip* is van belang, want als je eenmaal op volle snelheid een bocht instuurt dan wil je ook graag de controle over je fiets houden. En *lekbestendigheid*, uiteraard. Nu blijkt, zo heeft het internet mij geleerd, dat deze eigenschappen op enige wijze tegenstrijdig met elkaar te zijn. De band die op alle drie de eigenschappen maximaal scoort bestaat niet. Het is een kwestie van keuzes maken. Dat deed me denken aan Brewer’s theorema, die simpel gezegd stelt dat het onmogelijk is voor een gedistribueerd systeem (i.e. network partition) om zowel *consistentie* (alle nodes in het systeem zien dezelfde data op hetzelfde moment) en *beschikbaarheid* (als een node in het systeem uitvalt beperkt het de andere nodes niet in hun functioneren) te garanderen. Dit is weer helemaal opportuun in al het nosql vertical scaling geweld en goed om te weten wanneer je kijkt naar de verschillende gedistribueerde zoekdiensten als Elasticsearch en SolrCloud die de laatste tijd een stammenstrijd voeren. Het is een kwestie van keuzes maken.

Hoe dan ook, de keuze is gevallen op een all-round bandje met uiteraard een goede lekbestendigheid met redelijke grip en een redelijke rolweerstand van een Franse fabrikant. Wat me uiteindelijk over de streep trok had weinig met de eerdergenoemde eigenschappen van doen. De bandjes zijn wit en dat kleurt zo mooi bij m’n witte fiets 😉

Tijdens de vele kilometers alleen op de fiets die volgden dwalen mijn gedachten vaak af naar de uitdagingen die horen bij ons mooie vak. Complexiteit in software is zo’n onderwerp dat me maar bezig blijft houden.

John Holt beschreef de twee soorten complexiteit:

“Accidental (or incidental) complexity is complexity that arises in computer programs or their development process which is non-essential to the problem to be solved. While essential complexity is inherent and unavoidable, accidental complexity is caused by the approach chosen to solve the problem.”[1]

Duidelijk toch? Er is complexiteit die hoort bij het probleemdomein en het ene domein is mogelijk complexer dan het andere. Niets aan te doen. En dan is er nog de complexiteit die geïntroduceerd wordt vanuit de implementatie en daar is de software engineer al dan niet op voorspraak van ’n software architect debet aan. Soms is de extra complexiteit gerechtvaardigd, soms (vaak?) niet. Met als gevolg dat oplossingen nodeloos ingewikkeld zijn en complexiteit kost geld[2].

De moeilijkheid zit ‘m in het vaststellen wanneer de toegevoegde complexiteit al dan niet te rechtvaardigen is. Ik heb weleens gekscherend gezegd, dat als ik een oplossing niet direct begrijp deze dan te ingewikkeld en dus fout is. Deze maatstaf wordt echter zelden zomaar geaccepteerd 😉 En daarbij, niemand doet zomaar nodeloos ingewikkeld, toch? Er is vast een probleem dat getackeld moest worden. Misschien, maar niet ieder probleem behoeft altijd een oplossing. Het is een kwestie van keuzes maken.

Ik heb er weer zin in.

-DickWe hebben er even op moeten wachten, maar het was dit weekend mooi zomerweer. Ook nu de schemer al is ingetreden geeft de thermometer nog altijd 23 graden aan. Een weekend naar mijn hart; barbecueën, zwembadje in de tuin voor de kids en de tour die is aanbeland in de Pyreneeën. Eindelijk echte bergen waar de klassementsrenners zich moesten laten zien. Het mooie landschap en de strijd ertegen. Ik kan er uren naar kijken, zeker wanneer er twee Nederlanders in de top 5 staan.

Het is vandaag voor mij de laatste dag van een paar weken vakantie. Met de muziek van deze soundbyte ga ik proberen aan te sluiten bij het gevoel dat de tour en vakantie bij mij oproept. Ik versta er weinig van, maar vind ‘m mooi.

In de eerste week van m’n vakantie besloot ik de vrije tijd te gebruiken om ook weer ‘ns wat extra kilometers op de racefiets te maken. Dagelijks maakte ik m’n rondjes, het ging weer beter en beter en de rondjes brachten mij steeds verder en verder. En toen gebeurde dat wat na iedere meter waarschijnlijker wordt; een lekke band. Argh, het was al laat en –hoewel op de terugweg– nog best een eind van huis. Ik had wel ’n vers bandje mee, maar was in een vlaag van onfeilbaarheid m’n pomp ‘vergeten’. (En nee, die zit niet met zo’n klemmetje vast aan m’n fiets, want dat is niet mooi. Het is een racefiets, geen kerstboom.) Geen zin om anderen lastig te vallen met mijn stommiteit ben ik op m’n sokken naar huis gelopen (op fietsschoenen kun je niet lopen). Eenmaal thuis ben ik me ‘ns echt gaan verdiepen in ‘de fietsband’, want dit moest anders kunnen..

Er zijn drie eigenschappen van een raceband belangrijk; De *rolweerstand*, hoe makkelijker hij rolt hoe beter uiteraard. De *grip* is van belang, want als je eenmaal op volle snelheid een bocht instuurt dan wil je ook graag de controle over je fiets houden. En *lekbestendigheid*, uiteraard. Nu blijkt, zo heeft het internet mij geleerd, dat deze eigenschappen op enige wijze tegenstrijdig met elkaar te zijn. De band die op alle drie de eigenschappen maximaal scoort bestaat niet. Het is een kwestie van keuzes maken. Dat deed me denken aan Brewer’s theorema, die simpel gezegd stelt dat het onmogelijk is voor een gedistribueerd systeem (i.e. network partition) om zowel *consistentie* (alle nodes in het systeem zien dezelfde data op hetzelfde moment) en *beschikbaarheid* (als een node in het systeem uitvalt beperkt het de andere nodes niet in hun functioneren) te garanderen. Dit is weer helemaal opportuun in al het nosql vertical scaling geweld en goed om te weten wanneer je kijkt naar de verschillende gedistribueerde zoekdiensten als Elasticsearch en SolrCloud die de laatste tijd een stammenstrijd voeren. Het is een kwestie van keuzes maken.

Hoe dan ook, de keuze is gevallen op een all-round bandje met uiteraard een goede lekbestendigheid met redelijke grip en een redelijke rolweerstand van een Franse fabrikant. Wat me uiteindelijk over de streep trok had weinig met de eerdergenoemde eigenschappen van doen. De bandjes zijn wit en dat kleurt zo mooi bij m’n witte fiets 😉

Tijdens de vele kilometers alleen op de fiets die volgden dwalen mijn gedachten vaak af naar de uitdagingen die horen bij ons mooie vak. Complexiteit in software is zo’n onderwerp dat me maar bezig blijft houden.

John Holt beschreef de twee soorten complexiteit:

“Accidental (or incidental) complexity is complexity that arises in computer programs or their development process which is non-essential to the problem to be solved. While essential complexity is inherent and unavoidable, accidental complexity is caused by the approach chosen to solve the problem.”[1]

Duidelijk toch? Er is complexiteit die hoort bij het probleemdomein en het ene domein is mogelijk complexer dan het andere. Niets aan te doen. En dan is er nog de complexiteit die geïntroduceerd wordt vanuit de implementatie en daar is de software engineer al dan niet op voorspraak van ’n software architect debet aan. Soms is de extra complexiteit gerechtvaardigd, soms (vaak?) niet. Met als gevolg dat oplossingen nodeloos ingewikkeld zijn en complexiteit kost geld[2].

De moeilijkheid zit ‘m in het vaststellen wanneer de toegevoegde complexiteit al dan niet te rechtvaardigen is. Ik heb weleens gekscherend gezegd, dat als ik een oplossing niet direct begrijp deze dan te ingewikkeld en dus fout is. Deze maatstaf wordt echter zelden zomaar geaccepteerd 😉 En daarbij, niemand doet zomaar nodeloos ingewikkeld, toch? Er is vast een probleem dat getackeld moest worden. Misschien, maar niet ieder probleem behoeft altijd een oplossing. Het is een kwestie van keuzes maken.

Ik heb er weer zin in.

-Dick

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *