Accuratere biologische metaforen for fun and (no) profit

Vroeger, toen baby’s nog niet gewoon door de ooievaar werden gebracht, zorgde men voor nageslacht door sperma te planten in een dame en daar groeide dan een baby uit. Bij de Grieken dan. (Bij de Romeinen hadden de vrouwen zelf ook sperma en was het de combinatie waar zich de magie voltrok.)

Enfin, dit idee was vrij populair, niet zo gek als je bedenkt dat onze homies Pythagoras en Aristoteles er fan van waren (ook de grootste genie├źn praten soms poep, dat blijkt maar weer) en het heeft dan ook tot in de 17e eeuw ons denken doordesemd… en tot op de dag van vandaag onze taal.

Want, lieve mensen, ook wij 21e-eeuwers die beter zouden moeten weten noemen sperma nog steeds zaad. En dat is fout. Het is een scheve metafoor. Als je zo graag een link wilt leggen tussen de plant- en dierkunde is er een overduidelijk functioneel equivalent van sperma, en dat is stuifmeel.

Tja, als je het je eenmaal gerealiseerd hebt kun je het je niet ont-realiseren. En dan is het wel irritant dat iedereen het verkeerd doet. Om dat in mijn eigen wereldje op te lossen heb ik daarom een greasemonkey-scriptje geschreven zodat in mijn browser de metaforen tenminste correct worden toegepast. Dit is het resultaat:

Voor wie het zelf ook wil proberen, dit is het script.

// ==UserScript==
// @name        Stuifmeel
// @namespace   https://nescia.nl/anna
// @description Verander het woord 'zaad' in 'stuifmeel' op plekken waar dat waarschijnlijk passender is.
// @version     1
// @grant       none
// @exclude     http://*seed*
// @exclude     http://*garden*
// @exclude     http://*zaad*
// @exclude     http://*zad*
// ==/UserScript==
textNodes = document.evaluate('//text()', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var searchRE_1 = new RegExp('(zijn |mijn |je |uw |hun |donor|mannelijk )zaad', 'gi');
var replace_1 = '$1stuifmeel';
var searchRE_2 = new RegExp('zaad(donor|bal|leider)', 'gi');
var replace_2 = 'stuifmeel$1';
var searchRE_3 = new RegExp('(sperma.+)stuifmeel', 'gi');
var replace_3 = '$1stuifmeel';
var searchRE_3a = new RegExp('stuifmeel(.+sperma)', 'gi');
var replace_3a = 'stuifmeel$1';
var searchRE_4 = new RegExp('(his |my |your |their |donor |male |manly )seed', 'gi');
var replace_4 = '$1 pollen';
var searchRE_5 = new RegExp('(sperm.+)pollen', 'gi');
var replace_5 = '$1pollen';
var searchRE_5a = new RegExp('pollen(.+sperm)', 'gi');
var replace_5a = 'pollen$1';

for (var i = 0; i < textNodes.snapshotLength; i++) {
  var node = textNodes.snapshotItem(i);
  node.data = node.data.replace(searchRE_1, replace_1);
  node.data = node.data.replace(searchRE_2, replace_2);
  node.data = node.data.replace(searchRE_3, replace_3);
  node.data = node.data.replace(searchRE_3a, replace_3a);
  node.data = node.data.replace(searchRE_4, replace_4);
  node.data = node.data.replace(searchRE_5, replace_5);
  node.data = node.data.replace(searchRE_5a, replace_5a);
}

 

Programmeuse

Als ik deze weken twee uur per dag code schrijf is het veel.

Dat is ingewikkeld, want ik had ooit bedacht dat ik code schrijven superleuk vind en het wel erg tof zou zijn als ik iemand over kon halen om me dat de hele dag te laten doen en me daar dan ook geld voor te geven. Dat was gelukt. Hoera! Blije Anna.

Na een tijdje begon ik in meer dan de helft van de gevallen het gevoel te ontwikkelen dat ik enigszins wist waar ik mee bezig was, en toen kreeg ik een groepje fijne collega’s om aan te vertellen waar we mee bezig zijn.

(Ik heb aan m’n teamleider geprobeerd uit te leggen dat hoogstens 1 per 9 maanden toch meer een normaal tempo is, daar was hij niet van onder de indruk.)

Wat heel tof is want het zijn leuke collega’s en ik hoef de saaie dingen niet meer te doen we zijn met z’n allen mooie projecten aan het bouwen. En iets goed uitleggen is minstens zo moeilijk als het uitprogrammeren. En iedereen heeft er begrip voor dat ik nog maar net kom kijken, op het whoa-ik-was-toch-de-junior-hier-waar-komen-al-die-mensen-vandaan-vlak.

Dus het is leuk!

Maar als ik dan ‘s ochtends voordat de rest er is het rijtje bugs op mijn naam aan het platstampen ben denk ik toch… wat is het tof om code te schrijven. En daar geld voor te krijgen.

loopy

Ik heb Programming Praxis ontdekt! Superleuk.

De eerste opdracht die ik tegenkwam was “Schrijf een programma dat een te specificeren karakter uit een te specificeren string haalt, maar alleen als dat karakter los voorkomt, niet als er twee of meer van achter elkaar staan.”

In Ruby ziet dat er zo uit:

inputString = 'XabXXcdX'
outputString = ''
singleton = 'X'
previous = ''  
streak = false

inputString.each_char { |current|     
    if previous == singleton && current == singleton then 
      outputString += previous    
      outputString += current unless streak == true
      streak = true
      next
    elsif previous != singleton then
        outputString += previous unless previous == ''  
    end   
    previous = current 
    streak = false   
}                              
puts outputString

 

Ik vind het nog niet helemaal mooi, die extra check voor previous == ” is bijvoorbeeld een beetje jammer. Maar ik heb wel leuke dingen geleerd:

  • de each_char-methode. Zoals zo vaak met Ruby dacht ik “zoiets bestaat vast.” En dat deed het! Cool.
  • Het verschil tussen ==, .equal? en .eql?, hetwelke┬áanders is dan in Java onthoud dit Anna
  • Code plakken in WordPress kan met een plugin. Deze vind ik wel erg zwaar.