Leven

We hebben sinds twee jaar een robotmaaier die het gras maait in de achtertuin. Behalve dat het handig is, is zo’n robotmaaier fascinerend om te zien, omdat hij (we noemen hem ‘Robbie’) in allerlei opzichten lijkt te ‘leven’.

Zo’n robotmaaier werkt op een eenvoudig maar doeltreffende wijze. Het grasveld wordt afgebakend met een enkele stroomdraad die enkele centimeters is ingegraven. De robotmaaier heeft een sensor die deze grens kan detecteren. Er is een oplaadstation en een extra draad waarlangs de robotmaaier de weg terug naar het oplaadstation kan vinden. een belangrijk aspect dat de maaier zo eenvoudig en doeltreffend maakt is dat hij bij elke grens die hij bereikt een willekeurige draai maakt en dan zijn pad vervolgt. Dat lijkt inefficiënt maar blijkt in de praktijk goed te werken. Met een maaibereik van zo’n 10 cm kan hij een grasveld van 6 bij 15 meter in een uurtje of drie volledig gemaaid hebben.

Als gezegd lijkt het gedrag van Robbie op dat van een levend wezen. Zo kan Robbie een aantal zaken ‘waarnemen’. Hij heeft als het ware twee zintuigen voor de waarneming van zijn omgeving: (1) de sensor waarmee hij de grenzen van het grasveld waarneemt en de geleidingsdraad terug naar het oplaadstation en (2) een bots-sensor waarbij kan waarnemen wanneer hij ergens tegenaan botst. Daarnaast kan hij nog twee interne zaken waarnemen: (1) wanneer zijn accu opgeladen of juist leeg is en (2) een klok waarmee hij ‘weet’ wanneer het tijd is om te gaan maaien. Hij heeft tot slot een beperkte vorm van communicatie: als hij dreigt vast te lopen, bijvoorbeeld als hij moeite heeft zich uit de hoek van een ligbedje en de rand van het grasveld uit te manoeuvreren, dan piept hij een aantal keren, net als wanneer je hem halverwege een maaibeurt optilt of stopt.

De combinatie van waarnemingsvermogen en (voorgeprogrammeerd) gedrag geven de indruk dat Robbie leeft. Als zijn klok het aangeeft en hij voelt zich energiek genoeg komt hij in beweging. Hij rolt uit zijn oplaadstation, zet zijn maaimessen in beweging, zoekt een willekeurige richting en gaat op pad. Hij rijdt net zo lang tot hij de grens van zijn werkterrein bereikt (of tegen een object aan botst), rolt een stukje terug, draait een willekeurige hoek en vervolgt zijn weg. Op een gegeven moment neemt hij waar dat zijn energie onder een bepaalde waarde is gedaald en als hij dan de geleidingsdraad passeert, dan wijzigt hij zijn gedrag. Hij weet dan precies hoe te bewegen om langs die geleidingsdraad de weg terug te gaan naar het oplaadstation. Daar aangekomen neemt hij bovendien waar dat hij daar vlakbij is, zodat hij afstand genoeg houdt om zo te draaien dat hij uiteindelijk met zijn achterkant op het oplaadstation ‘parkeert’, klaar om weer op pad te gaan zodra het energieniveau weer voldoende is, en zijn klok aangeeft dat het maaitijd is.

Natuurlijk is er alleen in grammaticale zin sprake van een ‘hij’ die subject is van waarnemen, rijden etc. Robbie is geen persoon, maar een robot, een fraai stukje techniek. Maar het roept wel allerlei vragen op met betrekking tot persoon-zijn, subject-zijn. Stel dat we Robbie zien als een levend wezen. Hoe zou zijn wereld er dan volgens hem uitzien? Hij kent geen andere werkelijkheid dan die binnen de grenzen van het grasveld. Binnen die grenzen kent hij een zekere mate van vrijheid. In dat opzicht verschilt hij niet van andere levende wezens voor wie vrijheid ook altijd begrensd is. Als hij dreigt vast te lopen, probeert hij net zolang te draaien en heen en weer te rijden tot hij de weg naar vrijheid terugvindt, of tot de accu op is. Duurt dat te lang dan geeft hij als gezegd piepjes om dat aan te geven. Je zou het kunnen zien als het equivalent van het gevoel in de knel te zitten. Hij kent vermoeidheid, heeft een thuis waar hij zich kan opladen en weet hoe hij die moet terugvinden. In allerlei opzichten vergelijkbaar met een levend wezen.

Geen leven zonder dood. Ook wat dat betreft lijkt Robbie op een levend wezen maar toch verschilt hij ook in een belangrijk opzicht. Hij lijkt er op doordat hij stuk kan. Zijn batterij zal op een gegeven moment niet meer voldoende opladen om er op uit te kunnen trekken. Zijn motor kan kapot raken, etc. Dan zou je kunnen concluderen dat hij dood is. Maar een belangrijk verschil lijkt mij toch dat je Robbie uit kan zetten, zonder dat dat einde verhaal betekent. Je kunt hem tijdelijk uitzetten, waardoor hij dood is, en daarna weer tot leven wekken door hem op te laden en/of aan te zetten. En dat kennen we niet van levende wezens: die staan altijd aan, ook al is dat op een minimaal niveau zoals in een toestand van slaap bijvoorbeeld. Als je Robbie uitzet is hij dood, zit er geen leven in, tot het moment dat je hem weer aanzet. En dan leeft hij weer. Dat lijkt me een fundamenteel verschil met hoe wij de dood van levende wezens kennen.

Er is een tweede fundamenteel verschil tussen Robbie en echte levende wezens dat hiermee samenhangt. Levende wezens kunnen het leven doorgeven. Dat houd ook in dat alle levende wezens hun leven hebben gekregen. Ook dat is een verschil tussen Robbie en levende wezens. Robbie kan zijn leven niet doorgeven, kan zich niet voortplanten. Hij heeft wel in zekere zin zijn leven gekregen, namelijk van zijn ontwerper en fabrikant. Maar zoals levende wezens het leven dat zijn hebben gekregen weer door kunnen geven, zo kan Robbie dat niet.

Hoe maak je met CSS een vinkje?

Een rood vinkje achter een tekst maak je als volgt. In het voorbeeld zet ik achter het eerste list-item <li> met de class ‘vinkje’ een rood vinkje.

  • Eerste
  • Tweede

Om het vinkje absoluut te kunnen positioneren ten opzichte van het list-item, maken we de position van het list-item relative. We plaatsen het vinkje met het pseudo-element ::after achter de inhoud van het list-item. We geven de breedte en de hoogte verschillende waarden. Vervolgens maken we alleen de rechter- en de onderrand rood; de beide andere randen maken we transparant. Ten slotte draaien we het geheel 45 graden, zodat het met de punt naar beneden staat.

li.vinkje {position:relative;}
li.vinkje::after { 
  content: " ";
  position:absolute;
  top: 10px;
  width:7px;
  height:13px;
  margin-left:10px;
  border-width:3px;
  border-style:solid;
  border-color: transparent red red transparent;
  transform: rotate(45deg);
}

Hoe maak je met CSS een tooltip?

Een tooltip is een aanwijzing bij bijvoorbeeld een formulier-element. Als je met je muis over het formulier-element gaat wordt een korte aanwijzing zichtbaar. In het onderstaande voorbeeld is de tooltip geplaatst bij een checkbox.

Voorbeeld:
Zet hier je aanwijzing

Om een tooltip te maken zet je om het formulier-element een <span> en daarbinnen een tweede <span>. De HTML-code:

<span class="tooltip">
  <input type="checkbox">
  <span class="tooltiptext">Zet hier je aanwijzing</span>
</span>

En dan de CSS. De positioning van de tooltip-container is relative, zodat de positioning van de tooltip-text absolute is ten opzichte van de tooltip-container.

.tooltip {
  position: relative; 
  display: inline-block;
}

Vervolgens maak je de tooltip-text op. Door de absolute positioning ten opzichte van de tooltip-container kan je de tooltip-text rechts van het formulier-element plaatsen.

.tooltip .tooltiptext {
  visibility: hidden;
  width: 300px;
  background-color: #333;
  color: #fff;
  text-align: center;
  padding: 5px 0;
  border-radius: 6px;
  position: absolute;
  z-index: 1;
  top: -5px;
  left: 120%; /* de tooltip komt rechts van het formulier-element */
}

De tooltip-text krijgt een pijltje aan de linkerkant. De manier waarop je zo’n pijltje maakt heb ik in een eerdere post beschreven.

.tooltip .tooltiptext::after {
  content: " ";
  position: absolute;
  top: 50%;
  right: 100%; 
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent #333 transparent transparent; 
}

Ten slotte gebruik je CSS om de tooltip-text te laten verschijnen wanneer je met je muis over het formulier-element beweegt.

.tooltip:hover .tooltiptext {
  visibility: visible;
}

Waarom terugreizen in de tijd niet kan

De relativiteitstheorie leert dan wel dat tijdreizen mogelijk is en dat tijd een vierde dimensie is, echter de mogelijkheid van terugreizen in de tijd wordt niet betoogd. Het gaat steeds om reizen naar de toekomst. Waarom kan terugreizen in de tijd dan niet? Voor een meer fundamenteel betoog waarom tijdreizen naar het verleden niet kan, moeten we eerst kijken naar tijd zelf, en in het bijzonder naar heden, verleden en toekomst.

Het eerste inzicht dat we nodig hebben is dat ons spreken over tijd analoog is, en wel analoog aan ons spreken over ruimte. Dat we dat soms vergeten komt volgens mij doordat we over tijd spreken als vierde dimensie, naast de drie dimensies van ruimte. Dat laat ons gemakkelijk denken dat tijd net zoiets is als lengte, hoogte en diepte. We stellen ons tijd voor als een vierde as op een assenstelsel.

Analogie wijst er op dat er overeenkomst is en verschil en we zijn ons bij het nadenken over tijdreizen onvoldoende ervan bewust van de verschillen. En de verschillen tussen de tijd-as en de drie ruimtelijke assen zijn legio. Te beginnen met het feit dat de drie ruimtelijke assen ruimtelijke weergaven zijn van de ruimtelijke dimensie, terwijl de tijd-as een ruimtelijke weergave is van iets dat niet ruimtelijk is. De tijd-as is echter niet, zoals de x-as, de y-as en de z-as van de ruimte, een t-as waarlangs je vrijelijk heen en weer of op en neer kunt bewegen. Wel in gedachten natuurlijk, maar niet in werkelijkheid.

Omdat in te zien moeten we bedenken dat de tijd-as niet ‘is’, zoals de drie ruimtelijke assen over de lengte van hun assen ‘zijn’. Neem als voorbeeld mijn woonhuis. De lengte van het huis ‘is’, de hoogte ‘is’ en de diepte ‘is’ ook. Ik zit nu in de werkkamer op de begane grond, terwijl mijn dochter op het zelfde moment in de eetkamer ‘is’ en mijn vrouw op de slaapkamer op de eerste verdieping ‘is’. Mijn dochter is in afstand langs de x-as en de z-as een paar meter verderop ten opzichte van waar ik mij bevind, terwijl zij zich op dezelfde hoogte bevindt op de y-as (namelijk de begane grond). Mijn vrouw is niet alleen op de x-as een paar meter van mij verwijderd maar ook op de y- en de z-assen. Maar waar wij ons ook bevinden in ons huis, we bevinden ons allen in hetzelfde nu.

Als we nu in hetzelfde huis de vierde as, die van tijd, toevoegen, dan zien we vanzelf waar het verschil zit. Want terwijl ik nu in mijn werkkamer ‘zit’, ‘zat’ ik een uur geleden aan de eettafel en verwacht ik dat ik later vandaag op de bank ‘zal zitten’. De temporele vervoeging van het werkwoord ‘zitten’ maakt ons er op attent dat slechts het heden is, en dat het verleden noch de toekomst is, maar respectievelijk was en zal zijn. Het verleden is als zodanig niet present in het heden en de toekomst evenmin. Het verleden is wel present in het heden, maar slechts als herinnering, en de toekomst is present in het heden enkel als anticipatie.

Naar analogie van de ruimtelijke dimensies spreken we over het bewegen door de tijd heen als ‘reizen’, en zoals we in de ruimte ergens naar toe kunnen reizen en weer terug, zo ontlenen we aan het analoge spreken over tijdreizen de gedachte dat we ook in de tijd ergens heen kunnen reizen en vandaar weer terug. Een punt op de tijdas wordt dan een plaats waar we naar toe zouden kunnen gaan. We maken ons van die plaatsen op de tijd-as een plaatje zoals we van de wereld een wereldkaart maken met plaatsen waar we heen kunnen. En zoals de plaatsen op de wereldkaart ‘zijn’ in het heden waar we nu naar toe zouden kunnen gaan, of althans via moderne media nu contact mee kunnen leggen, zo ligt de gedachte voor de hand dat ook de momenten op de tijdlijn in verleden of toekomst ‘plaatsen’ zijn waar we naar toe kunnen reizen of contact mee kunnen maken.

Tijd is echter niet een vierde ruimtelijke dimensie. De punten op de tijd-as, de momenten in verleden en toekomst zijn niet. Het verleden was ooit en zal nooit meer zijn en de toekomst zal ooit zijn, maar is er nog niet. Alleen het nu is, en omdat een moment in het verleden niet is, maar was, kunnen we er niet naar toe reizen als naar een plaats.

Zoals in een eerdere post uiteengezet ligt dat voor de toekomst anders: daar kunnen we wel heen. Sterker: daar gaan we heen. Het zal echter een enkel reis zijn.

Dit is de derde post over tijdreizen. In de vierde en waarschijnlijk laatste post ga ik nadenken over hoe terugreizen in de tijd toch mogelijk zou kunnen zijn.

Terugreizen in de tijd

In verreweg de meeste films, series en boeken waarin de hoofdpersonen reizen door de tijd, reizen zij terug naar het verleden. Er zijn grofweg twee varianten die elk verschillende paradoxen en inconsequenties opleveren

In de eerste variant van reizen naar het verleden is er een vaste onveranderlijk tijdlijn. Als iemand in deze variant terugreist naar het verleden, dan heeft dat niet tot gevolg dat het verleden verandert. De tijdreis zelf is slechts onderdeel van een vanaf het begin vaststaande ontwikkeling. Klassiek voorbeeld hiervan vormen de drie eerste Terminatorfilms. Alle handelingen, die door de hoofdrolspelers gedaan worden en door de toeschouwers ervaren worden als vrije keuze, bedoeld om het naderende onheil af te wenden, blijken uiteindelijk precies bij te dragen aan een uitkomst, die vanaf het begin heeft vast gestaan. De paradox die in deze variant veelvuldig optreedt is dat iets uit de toekomst oorzaak is van iets in het verleden. Zo is de hoofdpersoon van de eerste Terminatorfilm Kyle Reese de vader van John Connor, die hem vanuit de toekomst terugstuurt in de tijd naar 1984.

De tweede variant gaat uit van een veranderbare tijdslijn, waarin de reis terug in de tijd gevolgen heeft voor de toekomst die wordt achtergelaten. Een leuke film met dit concept is About time, waarin de hoofdpersoon van zijn vermogen om door de tijd te reizen gebruik maakt om de liefde van zijn leven te veroveren. Deze variant is een stuk complexer dan de eerste variant en leidt daardoor regelmatig tot allerlei inconsequenties. Zo gebeurt het in veel films en series met dit concept van tijdreizen, dat ingrijpen in het verleden gevolgen heeft voor iedereen en alles, behalve voor degene die door de tijd reist. Een film waarin deze inconsequentie goed zichtbaar wordt is de film Back to the future. Als Marty McFly’s terugkeert naar het heden blijkt het gezin dat hij aan het begin van de film achterliet radicaal veranderd te zijn. De enige echter die onveranderd is is Marty McFly zelf. De inconsequentie bestaat er in dat in de nieuwe toekomst de personages rondom Marty herinneringen hebben aan Marty, die Marty zelf niet deelt.

Interessant is de belangrijke rol die het toeschouwerperspectief inneemt. In de serie Timeless volgt de toeschouwers de hoofdpersonen tijdens hun reizen naar het verleden. Deze resulteren in verandering van de tijdlijn en daarmee verandering van de toekomst die wordt achtergelaten. Wat niet verandert zijn de hoofdpersonen en hun herinneringen. Zo verdwijnt in een van de eerste afleveringen de zus van de hoofdpersoon uit de tijdlijn, maar blijft de hoofdpersoon haar zus herinneren. De dominantie van het toeschouwerperspectief blijkt echter vooral uit het feit dat de lengte van de tijdreis (de tijd die de hoofdpersonen doorbrengen in het verleden) gelijk is aan de tijd die de achterblijvers moeten wachten voordat de tijdreizigers weer terugkeren. Voor de toeschouwer is dat vanzelfsprekend: die volgen de tijdreizigers op hun reis terwijl ze tegelijkertijd de achterblijvers volgen in hun afwachting van de terugkeer van de reizigers.

Iets vergelijkbaars gebeurt in dezelfde serie als de tijdreizigers andere tijdreizigers achterna reizen naar het verleden en zich haasten om op tijd te komen, waarbij ze standaard later arriveren in het verleden dan degene die zij achterna zitten. Sterker: zo komen precies zoveel later aan als ze later vertrokken zijn.

Dit is de tweede post over tijdreizen. In de volgende post bespreek ik waarom terugreizen in de tijd niet kan.

Tijdreizen is mogelijk

Tijdreizen is mogelijk. Sterker: tijdreizen doen we iedere dag. Tijdreizen kan echter slechts één kant op: richting toekomst en onder normale omstandigheden met een snelheid van 24 uur per dag.

Dat brengt ons bij een vraag die we eerst moeten beantwoorden als we het over tijdreizen willen hebben: met welke grootheid druk je de snelheid uit waarin we reizen door de tijd?

Snelheid drukken we als het gaat om ruimtelijke bewegingen uit in meter per seconde. Als tijd als vierde dimensie naar analogie van ruimtelijke bewegingen verstaan wordt als een ‘beweging door de tijd’, dan zou de snelheid uitgedrukt moeten worden in de bewogen tijd per tijdseenheid: tijd gedeeld door tijd dus.

Je kunt dan bij tijdreizen drie snelheden onderscheiden:

  1. 1 s/s. Dit is de snelheid waarmee wij onder normale omstandigheden tijdreizen. Iedere seconde reizen we een seconde door de tijd, richting toekomst.
  2. > 1 s/s. Dit is tijdreizen zoals we deze in science fiction films tegenomen. We reizen naar de toekomst. Sneller dat de standaard snelheid van 1 s/s.
  3. < 1 s/s. Tijdreizen is echter pas tijdreizen als je ook terug kan, bij voorkeur met een snelheid van meerdere jaren per seconde.
    Een interessant geval is reizen met een snelheid van 0 s/s. Reizen met een snelheid van nul seconde per seconde betekent niet dat we niet reizen. Omdat de rest van de wereld door de tijd reist met een snelheid van 1 s/s betekent reizen met een snelheid van 0 s/s dat je teruggaat in de tijd.

Reizen naar de toekomst met een snelheid groter dan 1 s/s is mogelijk en wel langs twee wegen:

  1. Langs de weg van de beleefde tijd: de tijd verstrijkt ’s nachts immers voor degene die slapen een stuk sneller dat 1 s/s. Als je snel in slaap valt en vervolgens aan een stuk door slaapt, zou dat neer komen op een ‘beleefde snelheid’ van zo’n 8 uur /s. Echter de klok laat de volgende ochtend zien dat je in werkelijkheid met de gewone snelheid van 1 s/s door de tijd gereisd hebt. Een bijzonder geval vormt cryogene slaap, een concept dat bijvoorbeeld gebruikt wordt in een science fiction film als Passengers met Jennifer Lawrence, waarin een lange ruimtereis wordt gemaakt, terwijl de bemanning in een kunstmatige slaap is gebracht. Dit is een bijzonder geval, omdat bij deze vorm van ‘slapen’ (en dus tijdreizen) de ruimtereiziger niet alleen voor haar beleving reist door de tijd, maar in lichamelijke zin daadwerkelijk niet of nauwelijks ouder wordt. Wie op deze wijze naar een andere sterrestelstel reist en weer terug, is voor haar beleving en lichamelijk misschien slechts enkele weken ouder geworden, terwijl zij in (aardse) werkelijkheid tientallen of misschien zelfs honderden jaren is weg geweest.
  2. De relativiteitstheorie leert dat wie door de ruimte reist met een snelheid dicht tegen die van het licht (300.000 km/s) trager door de tijd reist dan die wie met maximaal 130 km per uur over de Nederlandse snelwegen raast. Iemand die in een raket een aantal rondjes om de zon maakt met een snelheid van tegen de 300.000 km/s reist dus naar de toekomst. Een voorbeeld hiervan tref je aan in de science fiction film Interstellar.

Dit is de eerste post over tijdreizen. De volgende keer zal ik het hebben over reizen naar het verleden.

Hoe maak je met CSS een driehoekje?

Voor mijn eigen CMS zocht ik naar een pijltje omhoog en een pijltje omlaag. Wilde je vroeger zo’n pijltje of driehoekje op je website, dan was je genoodzaakt in een grafisch programma een driehoekje te tekenen en het grafische bestandje vervolgens in je webpagina te plaatsen. Inmiddels heb ik ontdekt dat veel professionele websites dit rechtstreeks met CSS doen.

Een driehoekje maak je met CSS als volgt. Je neemt een blok zonder hoogte en breedte. Vervolgens definieer je randen (borders), waarbij je (voor een pijltje naar beneden) de bovenste rand een kleur geeft en de overige randen transparant maakt. In code:

width: 0px;
height: 0px;
border-top: 5px solid black;
border-left: 5px solid transparant;
border-right: 5px solid transparant;
border-bottom: 5px solid transparant;

Alleen de bovenrand is in deze CSS opmaak zichtbaar. De schuine kanten links en rechts worden veroorzaakt doordat twee randen die haaks op elkaar staan schuin worden afgesneden. De transparante linker- en rechterrand snijden de bovenrand dus links en rechts schuin af.

Het resultaat is een driehoekje met de punt naar beneden, 10px breed (twee keer de breedte van de randen) en 5px hoog.