Dan Larimer over democratie als gedecentraliseerde consensus

Ik schrijf al meer dan twintig jaar over allerlei technische onderwerpen en ik heb daarbuiten nog heel wat andere interesses. Maar het is nog maar enkele jaren geleden dat ik in een epifanie plots de rode draad in al die onderwerpen zag: decentralisatie.

  • Ik geloof in de kracht van opensourcesoftware omdat de gebruikers daardoor niet alleen consument maar ook producent zijn.

  • Ik ben een groot voorstander van self-hosted software zodat je niet afhankelijk bent van clouddiensten van grote bedrijven.

  • Tien jaar geleden al schreef ik over Bitcoin en ik vind blockchains en andere vormen van distributed ledgers fascinerende technologie om zonder centrale controle transacties te kunnen uitvoeren.

  • In mijn strijd voor meer privacy vind ik het vooral belangrijk dat mensen controle over hun eigen data hebben, en daarom ben ik een grote fan van technologieën zoals Nextcloud, Solid en end-to-end encryptie.

  • Ik vind het belangrijk dat je zelf dingen kunt maken en programmeren, en ik ben dan ook blij dat ik deel uitmaak van de DIY/makersbeweging die dit democratiseert met de Raspberry Pi, ESP32, Arduino, 3d-printers, fablabs enzovoort.

  • Ik vind dat huishoudens zoveel mogelijk zelfvoorzienend zouden moeten zijn, niet alleen voor energie, maar ook voor voedsel.

More Equal Animals - The Subtle Art of True Democracy (Bron: Dan Larimer)

Toen ik dan in het begin van dit jaar Dan Larimers (gratis te downloaden) boek More Equal Animals - The Subtle Art of True Democracy ontdekte, las ik dit bijna in één ruk uit. Op bijna elke pagina las ik wel inzichten die verweven waren met de rode draad in mijn interesses.

In essentie is een blockchain een techniek om zonder centrale aansturing tot consensus te komen. Bij Bitcoin is dat consensus over transacties, maar volgens Larimer kun je de principes van blockchains ook op onze samenleving zelf toepassen. Een succesvolle samenleving implementeert volgens Larimer een proces dat zoveel mogelijk tot consensus leidt.

Democratie is in die ogen een proces om geschillen te beslechten met meerdere partijen en dat is iets waarin blockchains zo goed zijn. Echte democratie gaat volgens Larimer dan ook over het coördineren met andere personen terwijl je nog je persoonlijke autonomie en macht behoudt. En de ideale vorm van de samenleving bestaat dan uit gedecentraliseerde, autonome gemeenschappen op alle niveaus.

Voor PC-Active schreef ik uitgebreider over de visie die Larimer in zijn boek beschreef. Als onderwerpen zoals persoonlijke autonomie, gedecentraliseerd bestuur, een antifragiele samenleving en de gevaren van moral hazard je nauw aan het hart liggen, dan is het boek More Equal Animals een aanrader.

Visualiseer data van je Bluetooth-sensors

Bluetooth Low Energy (BLE) is een dankbaar protocol om als hobbyprogrammeur mee te werken. De specificaties zijn allemaal op de website van de Bluetooth SIG te vinden en zowat elk ontwikkelplatform kent wel een of meerdere BLE-bibliotheken.

In een artikel voor Computer!Totaal leg ik uit hoe je data van BLE-sensors uitleest in je eigen Arduino-code die op een ESP32-microcontroller draait, en het resultaat visualiseert op het scherm van een M5Stack Core.

Een BLE-apparaat kan op twee manieren communiceren: door data te broadcasten naar iedereen in de buurt, of door een één-op-één verbinding te maken met een ander apparaat en daarnaar data te zenden. In het artikel werk ik voor beide communicatiemanieren een voorbeeldprogramma uit.

Broadcasten gebeurt vaak door omgevingssensoren. De RuuviTag is zo'n sensor die temperatuur, luchtvochtigheid, luchtdruk en beweging detecteert. 1 De sensor broadcast zijn data elke seconde via BLE als manufacturer data. Het protocol is volledig gedocumenteerd. In het artikel in Computer!Totaal leg ik uit hoe je de temperatuur hieruit decodeert en op het scherm van de M5Stack Core toont.

Andere apparaten gebruiken verbindingen. De Bluetooth SIG heeft een heel aantal services voor verbindingen gedefinieerd waarvan je de specificaties gewoon kunt raadplegen. Een populaire is de service Heart Rate. In het artikel beschrijf ik hoe je de code schrijft om met behulp van de bibliotheek NimBLE-Arduino met een hartslagsensor te verbinden en realtime je hartslag op het scherm van de M5Stack Core te tonen. Ideaal voor tijdens het sporten! 2

/images/m5stack-heart-rate-display.jpg
1

De nRF52832-gebaseerde RuuviTag is open hardware en ook de firmware is opensource.

2

Ik heb ondertussen ook een versie van de code geschreven voor de nieuwere M5Stack Core2: M5Core2 Heart Rate Display.

Energiezuinigere neurale netwerken door pulsen

Als we onze hersenen als technologie zouden beschouwen, zou elke ingenieur onder de indruk zijn: met een verbruik van amper 20 watt slaagt ons brein erin om talloze gevarieerde en complexe taken uit te voeren, zoals spraak en beeld herkennen, navigeren in omgevingen waar we nog nooit geweest zijn, nieuwe vaardigheden leren en redeneren over abstracte zaken. Het is dan ook geen wonder dat onze hersenen al sinds jaar en dag als inspiratie dienen om computers 'intelligentie' te geven.

Een belangrijke aanpak in machinaal leren vormen (kunstmatige) neurale netwerken. Ze bootsen de werking van de hersenen na, die een biologisch neuraal netwerk vormen: een kluwen van talloze verbindingen tussen neuronen (hersencellen). Een kunstmatig neuraal netwerk bestaat meestal uit meerdere lagen:

  • Een invoerlaag van neuronen die de invoer van een probleem voorstellen, bijvoorbeeld de pixels in een foto.

  • Een uitvoerlaag van neuronen die de oplossing van het probleem voorstellen. Die herkennen bijvoorbeeld dat er in de foto een hond te zien is.

  • Eén of meer verborgen lagen die berekeningen uitvoeren. Die herkennen bijvoorbeeld vacht, grootte, aantal poten enzovoorts.

/images/neuraal-netwerk.png

Een neuraal netwerk programmeer je niet door expliciet aan te geven hoe het een probleem moet oplossen; je 'traint' het door het vele voorbeelden van een probleem te geven. De parameters van alle neuronen van het neurale netwerk convergeren door die training dan naar de juiste waarden, zodat het de taak leert uit te voeren.

Vooral deep learning maakt het laatste decennium furore in de wereld van machine learning. Bij deep learning maak je gebruik van een neuraal netwerk met een groot aantal lagen tussen invoer en uitvoer. Door dit grote aantal lagen zijn eindelijk heel complexe taken mogelijk. Een neuraal netwerk als GPT-3 gebruikt zo'n honderd lagen. Als je het volledig zelf zou willen trainen, kijk je aan tegen enkele miljoenen euro's aan kosten om gpu-rekenkracht in de cloud te huren. En dan spreken we nog niet over het energieverbruik en de erbij horende CO₂-uitstoot.

Terwijl de neuronen in onze hersenen met pulsen communiceren, is dat aspect bij de klassieke neurale netwerken niet overgenomen omdat discontinue pulsen nu eenmaal wiskundig moeilijker te hanteren zijn dan continue signalen. Toch is er al de hele geschiedenis van AI ook een aanpak geweest om neurale netwerken te modelleren met pulsen. Dat noemen we een gepulst neuraal netwerk (spiking neural network). Door hun wiskundige complexiteit zijn ze nooit doorgebroken.

In een artikel over gepulse neurale netwerken voor PC-Active beschreef ik onlangs recent onderzoek van het Amsterdamse Centrum Wiskunde & Informatica (CWI) en het Eindhovense onderzoekscentrum IMEC/Holst Centre naar een nieuw algoritme dat een factor honderd energiezuiniger zou zijn dan de beste hedendaagse klassieke neurale netwerken. Voorlopig is de techniek nog beperkt tot zo'n duizend neuronen, maar daarmee liggen toepassingen zoals spraakherkenning, de classificatie van elektrocardiogrammen (ecg) en het herkennen van gebaren al in het verschiet.

Maak je eigen kvm-over-ip-systeem met Pi-KVM

Als je nas of server op zolder is gecrasht, wil je waarschijnlijk voorkomen dat je het probleem ter plaatse moet oplossen. Met een kvm-over-ip-systeem kun je op afstand ingrijpen via het netwerk. Met Pi-KVM bouw je zoiets zelf met een Raspberry Pi en enkele goedkope componenten.

Op de GitHub-pagina van Pi-KVM staat uitgelegd welke componenten je nodig hebt om je eigen kvm te maken:

  • Raspberry Pi 4

  • hdmi-naar-csi-2-adapterbordje of hdmi-naar-usb-dongel

  • een usb-splitter om de usb-c-aansluiting van de Raspberry Pi 4 zowel voor stroom als usb-otg in te zetten

De Raspberry Pi 4 krijgt dan toegang tot de hdmi-uitvoer van je nas of server en emuleert een toetsenbord, muis en opslag. De opensourcesoftware Pi-KVM biedt dit alles in een webinterface aan, zodat je via je webbrowser op je nas of server kunt werken alsof je ernaast zit:

/images/pikvm-opslag.png

Voor PCM schreef ik het artikel Pi-KVM: Nas benaderen via Raspberry Pi op afstand. Ik leg er uit hoe je zelf een usb-splitter maakt van twee usb-kabels en hoe je Pi-KVM installeert en instelt en het gebruikt om een iso-image aan te koppelen en op je nas of server te installeren.

De ontwikkelaars hebben ook een eigen HAT ontwikkeld die je op de Raspberry Pi 4 kunt monteren. De verkoop start binnenkort.

GPT-3: overtuigende onzin

Het Amerikaanse onderzoekslaboratorium OpenAI heeft vorig jaar een neuraal netwerk getraind dat tekst kan schrijven die bijna menselijk lijkt. Het taalmodel maakt gebruik van deep learning met maar liefst 175 miljard parameters. In mei 2020 werd GPT-3, zoals het model heet, voorgesteld. Het is de derde in een reeks van taalmodellen met de naam Generative Pre-trained Transformer.

Op wat voor soort teksten werd GPT-3 dan getraind? Een gefilterde versie van het webarchief van Common Crawl, een andere dataset van webpagina's, WebText2, de inhoud van heel wat boeken (datasets Books1 en Books2) en de inhoud van Wikipedia. Eigenlijk dus zowat alles wat je maar op internet kunt vinden. In totaal ongeveer 450 gigabytes invoer. Opvallend is dat GPT-3 daardoor niet alleen op menselijke teksten is getraind, maar ook op computercode zoals css, jsx en Python. GPT-3 kan daardoor teksten genereren variërend van poëzie tot proza en nieuwsberichten en computerprogramma's.

OpenAI gaf vorig jaar enkele honderden ontwikkelaars toegang tot een bètaversie van de GPT-3 API en verzekerde zich daardoor van enkele maanden media-aandacht. Het wapenfeit waarmee GPT-3 het meest in het nieuws kwam, was dat het volledige nieuwsartikelen uit zijn duim kon zuigen. Je geeft dan een titel en subtitel op en het model schrijft hierover een kort artikel van ongeveer 200 woorden. Die artikelen blijken op het eerste gezicht verrassend coherent te zijn, maar vaak ook duidelijk verkeerde informatie te bevatten of opvallende herhalingen van zinnen.

Vorig jaar schreef ik voor PC-Active in mijn rubriek Denkwerk een artikel over GPT-3, Een computer die als een mens schrijft. Het is nu ook online te lezen. Je vindt er heel wat voorbeelden van wat er misloopt met GPT-3.

Mijn conclusie:

GPT-3 genereert tekst die bij een oppervlakkige lezing niet te onderscheiden is van een door een mens geschreven tekst. Tegelijk heeft dit taalmodel totaal geen begrip van wat het schrijft. Dat is een gevaarlijke combinatie: er kan onzin in de tekst staan, maar zo overtuigend beschreven dat nietsvermoedende lezers het gewoon geloven. Maar eigenlijk is dat niet zo heel verschillend van wat we nu al hebben: veel mensen schrijven ook onzin. GPT-3 is gewoon een samenvatting van de teksten van miljoenen mensen.

Kortom, GPT-3 is een kind van zijn tijd.

Geef je MQTT-gebaseerd domoticasysteem een dashboard met Homepoint op een M5Stack Core

Je domoticasysteem stuur je in veel gevallen aan via een webinterface op je laptop of een mobiele app op je smartphone. Maar altijd toegang tot je domoticasysteem hebben via een klein schermpje aan de muur is zeker zo handig. Je kunt zo'n apparaatje zelf in elkaar knutselen met een microcontrollerbordje, een schermpje en wat knoppen, maar als je het in de woonkamer wilt gebruiken, wil je niet dat er allerlei losse draadjes en printplaatjes te zien zijn.

Homepoint op een M5Stack Core

M5Stack, een jong Chinees bedrijf, biedt allerlei producten aan die gebouwd zijn rond een ESP32-microcontroller, die er niet als een ontwikkelbordje uitzien. Vooral interessant is de M5Stack Core BASIC Kit: een modulair, stapelbaar ESP32-bordje met een lcd-scherm van 2 inch en drie knoppen in een sobere behuizing. Die ziet er niet slecht uit in je woonkamer. De module is heel compact: 13 mm hoog, en 54 mm lang en breed. Ik heb er ondertussen al enkele in huis staan.

Een van de programma's die je op de M5Stack Core 1 kunt installeren, is Homepoint. Het biedt een interface om een op MQTT gebaseerd domoticasysteem aan te sturen en de status van sensors te tonen.

Voor Computer!Totaal schreef ik een artikel over hoe je Homepoint op je M5Stack Core installeert en er een dashboard voor je domoticasysteem van maakt. Ik leg er diverse configuraties uit. Een volledige configuratie vind je ook in het artikel dat ik een tijdje geleden over Homepoint in het Engelstalige gedeelte van mijn blog schreef.

Een systeem zoals Homepoint op een apparaatje zoals de M5Stack Core maakt je domoticasysteem veel toegankelijker. Een dashboard dat altijd beschikbaar is zonder dat je een laptop hoeft open te klappen of een smartphone moet ontgrendelen, doet je veel meer gebruikmaken van de sensorgegevens. Zo is de vraag "Is het koud buiten?" hier nu snel beantwoord :-)

1

De M5Core2 is momenteel nog niet ondersteund.

MQTT: hét protocol voor domotica

Als je een tijdje met domotica bezig bent, dan heb je waarschijnlijk apparaten in huis die allerlei protocollen gebruiken: Z-Wave, ZigBee, KNX, Loxone, maar ook Wi-Fi en Bluetooth. Dat levert al snel een taalbarrière op vanwege alle apparaten die hun eigen taaltje spreken.

Fabrikanten dachten daar iets op te hebben gevonden: ze ontwikkelden hun eigen domoticaplatforms die al deze standaarden ondersteunden. Zo heb je HomeKit van Apple en SmartThings van Samsung. En uiteraard bestaan er ook opensourceplatforms die hetzelfde bereiken, zoals Home Assistant.

Maar waarom al die moeite doen als er al twintig jaar een open protocol bestaat om op een gestandaardiseerde manier boodschappen uit te wisselen via ip-netwerken? MQTT (Message Queuing Telemetry Transport) is hét protocol voor domotica. Op de website van het project staat het concept van MQTT mooi geïllustreerd:

/images/mqtt-publish-subscribe.png

In een artikel in Computer!Totaal leg ik uit hoe MQTT werkt en hoe je het voor domotica gebruikt, bijvoorbeeld door een MQTT-broker zoals Eclipse Mosquitto op een Raspberry Pi of Linux-server in huis te installeren. Je leest er ook hoe je Home Assistant en Node-RED met je MQTT-broker integreert.

Het grootste deel van het artikel besteed ik aan allerlei projecten die andere protocols met MQTT koppelen en die je op een Raspberry Pi kunt installeren:

  • bt-mqtt-gateway om Bluetooth-sensoren uit te lezen

  • rtl_433toMQTT om via een RTL-SDR usb-dongle draadloze weersensoren uit te lezen die in de ISM-band rond 433,92 MHz uitzenden

  • Zwave2Mqtt om Z-Wave-apparaten aan te sturen

  • Zigbee2MQTT om Zigbee-apparaten (inclusief Philips Hue en IKEA Trådfri) aan te sturen

  • knx-mqtt-bridge om KNX-apparaten aan te sturen

  • LoxBerry met zijn MQTT Gateway om met Loxone-apparaten te communiceren

De meeste van deze projecten gebruik ik al jaren in mijn eigen domoticasysteem thuis, dat op een Raspberry Pi 4 draait.

Flexibel domoticasysteem

Waarom dan niet een domoticaplatform als Home Assistant gebruiken, dat ook allerlei protocols ondersteunt en een alles-in-éénoplossing aanbiedt? Ik ben zo inderdaad begonnen, maar Home Assistant is nogal beperkend: er wordt van uitgegaan dat je alles op één machine draait. Maar als je Raspberry Pi met Home Assistant in de kelder staat en je Zigbee-apparaten vooral op de zolder, zul je weinig ontvangst hebben met de Zigbee-transceiver op je Raspberry Pi aangesloten. Door bovenstaande programma's al die protocols naar MQTT te laten vertalen, kun je ze in principe allemaal op een andere machine draaien, die je plaatst waar die het beste bereik heeft.

Bovendien bestaat MQTT al veel langer dan Home Assistant en is het heel flexibel. Ik gebruik nog altijd Home Assistant, maar niet als alles-in-éénoplossing: in mijn domoticasysteem is het gewoon een van de vele onafhankelijk werkende componenten, namelijk een front-end. Home Assistant is dan ook uitstekend met MQTT te integreren. Wil ik ooit overschakelen naar een andere front-end, dan kan dat heel eenvoudig zonder dat dit een impact heeft op de andere componenten, zolang die front-end maar MQTT ondersteunt. En als ik bt-mqtt-gateway en rtl_422toMQTT wil vervangen door OpenMQTTGateway op een ESP32-microcontrollerbordje, dan kan dat ook. Dankzij MQTT kan mijn domoticasysteem met mijn veranderende wensen mee evolueren.

Neurale netwerken op de Raspberry Pi met de Google Coral USB Accelerator

Neurale netwerken zijn een belangrijke techniek in machinaal leren, maar helaas ook rekenintensief en energieverslindend. Met de Coral USB Accelerator biedt Google een handig versnellerbordje aan. Je gebruikt het op je laptop of een Raspberry Pi 4.

Het hart bestaat uit een Edge TPU-coprocessor, die slechts 2 W verbruikt, een heel laag verbruik voor dit soort berekeningen. De Edge TPU is geoptimaliseerd voor TensorFlow Lite, een uitgeklede versie van het opensourceplatform TensorFlow voor machinaal leren.

/images/rpi4-coral-usb-accelerator.jpg

Modellen

Google heeft op één webpagina al zijn modellen voor de Edge TPU geplaatst, waar je ze eenvoudig kunt downloaden. Vooral voor beeldclassificatie zijn er veel modellen beschikbaar. Zo zijn er drie versies van EfficientNet, waarmee je 1000 types objecten kunt herkennen in kleine, gemiddelde of grotere afbeeldingen. Ook van MobileNet zijn er diverse varianten: om 1000 objecten te herkennen, 1000 insecten, 2000 planten en 900 soorten vogels. Ook van Inception, dat 1000 types objecten herkent, zijn er vier versies beschikbaar.

/images/edge-tpu-modellen.png

Ook voor objectherkenning zijn er meerdere modellen. Objectherkenning doet meer dan beeldclassificatie: bij die laatste krijg je gewoon een label "vogel" als er een vogel in het beeld staat. Een model voor objectherkenning vertelt je niet alleen dat er een vogel te zien is, maar toont je ook de locatie. Dat kun je dan visualiseren met een kader rond het object. Er zijn twee versies van MobileNet SSD die de locatie van 90 types objecten kunnen herkennen, en één versie die de locatie van een menselijk gezicht detecteert.

Als je wat verder zoekt, vind je ook elders nog wel andere modellen. Maar je moet er altijd zeker van zijn dat ze voor de Edge TPU zijn gecompileerd. En welk model voor jouw toepassing geschikt is, hangt af van de beelden die je wilt verwerken. Ik raad aan om verschillende modellen te testen.

Aan de slag met de Coral USB Accelerator

In een artikel in Linux Magazine leid ik je door de installatie van de Coral USB Accelerator op Raspberry Pi OS en enkele voorbeelden van machinaal leren:

  • Vogelsoorten herkennen in afbeeldingen.

  • Sleutelwoorden herkennen in een audiostroom van de microfoon.

  • Bestaande modellen voor beeldclassificatie hertrainen met transfer learning om nieuwe klassen objecten te herkennen.

  • Objecten en hun locatie herkennen in afbeeldingen.

Er zijn vele voorbeeldprogramma's in Python te vinden voor de Edge TPU. Bekijk zeker eens de officiële pagina met voorbeelden. Maar ook op GitHub vind je allerlei interessante third-party projecten. Je kunt ook realtime de beelden van een Raspberry Pi Camera Module analyseren.

Dankzij de Google Coral USB Accelerator komen krachtige AI-toepassingen binnen handbereik van de Raspberry Pi waarvoor je vroeger toegang tot krachtige servers in de cloud nodig had.

Simuleer elektronische schakelingen met Qucs

Begrip in elektronica krijg je pas door veel elektronische schakelingen uit te proberen en het gedrag te observeren. Dat kan met fysieke elektronische componenten, maar ook met simulaties.

In academische middens en de industrie wordt er veel gebruikgemaakt van de simulatiesoftware Multisim van National Instruments (NI). Dat is propriëtaire software, je hebt er een licentie voor nodig en ze draait alleen op Windows. Gelukkig bestaat er ook opensourcesoftware om elektronische schakelingen te simuleren onder Linux. Een van die programma’s is Qucs (Quite Universal Circuit Simulator).

Het duurde even voor ik doorhad hoe Qucs werkte, want het programma heeft niet de meest gebruiksvriendelijke interface en de documentatie is nogal fragmentarisch, op specialisten gericht en vaak verouderd. Maar zodra je de basis onder de knie hebt, werkt het programma vrij consistent.

In een artikel dat ik voor Linux Magazine schreef, simuleer ik enkele elektronische schakelingen met Qucs:

  • een spanningsdeler, als voorbeeld van een DC-simulatie;

  • een bruggelijkrichter, als voorbeeld van een transiënte simulatie;

  • een RC-filter, als voorbeeld van een Bodediagram om de frequentieafhankelijkheid van schakelingen te bestuderen.

Die laatste ziet er dan zo uit:

/images/qucs-filter.png

Ik ben geen professioneel elektronicus, maar al met al vind ik Qucs heel geschikt om de occasionele elektronische schakeling die ik maak te simuleren, en ik ga het programma zeker nog gebruiken. En dan heb ik nog maar een fractie van de mogelijkheden uitgeprobeerd. Zo ondersteunt Qucs ook heel wat wiskundige functies en laat het je zelfs toe om scripts met GNU Octave uit te voeren.

GANisme: algoritmische kunst met een hoek af

In 2018 werd het schilderij Edmond de Belamy verkocht bij veilinghuis Christie’s in New York. De koper betaalde maar liefst 432.500 dollar, veel meer dan de 7.000 tot 10.000 dollar die men voor de veiling verwachtte. Was het omdat het Parijse kunstenaarscollectief Obvious zo goed was? Nee, het was omdat de werkelijke kunstenaar een computer was, zoals te zien aan de handtekening rechts onderaan het schilderij.

Edmond de Belamy (bron: Obvious)

Edmond de Belamy was het resultaat van een generative adversarial network (GAN) en de handtekening maakte onderdeel uit van het algoritme. Het werd getraind op een verzameling van 15.000 portretten van de 14de tot de 19de eeuw uit de online kunstencyclopedie WikiArt. Daarna kon je met het systeem naar believen kunstwerken creëren in dezelfde stijl. Een van die resultaten was een wat vaag portret van een man in iets wat een kostuum lijkt, met een misvormd gezicht. Edmond de Belamy was het eerste door AI (artificial intelligence) gecreëerde kunstwerk dat bij Christie’s werd geveild. Obvious maakte nog andere portretten op dezelfde manier, in de collectie La Famille de Belamy.

In een artikel dat ik voor PC-Active schreef in mijn rubriek Denkwerk ga ik dieper in op computerprogramma's die schilderijen maken in deze kenmerkende stijl die GANisme genoemd wordt. Ik kijk ook naar enkele kunstenaars die neurale netwerken trainden op hun eigen kunstwerken om zo nog betere kunst te maken. Het levert fascinerende resultaten op!