Tip: The Coding Train

 Gepubliceerd door om 19:44  Programmeren
feb 092020
 

The Coding Train is eigenlijk een site die niet heel veel toelichting nodig heeft. Je kunt beter gewoon een paar filmpjes van Daniel Shiffman bekijken. Dan weet je snel genoeg of het iets voor je is of niet.

Ik kwam er zelf pas heel recent langs, deze maffe aflevering van Coding in the Cabana was mijn kennismaking. Daarna bekeek ik ook de andere twee afleveringen die er in die serie al waren en ging ik verder met de andere tutorials op het kanaal. Het zal er wel mee te maken hebben dat ik een nerd ben en er dus van kan genieten als een andere nerd helemaal uit zijn dak gaat als hij een programmeeruitdaging opgelost heeft.

Dat Daniel met Processing of P5JS werkt helpt daarbij absoluut omdat al zijn oplossingen wel een grafische component hebben. Dat maakt de resultaten ook interessant, zoals bij deze bijvoorbeeld:

Genoeg gepraat erover: gewoon even kijken! (en laat even weten wat je er van vind).

Deel dit bericht:
jan 092020
 

Het is het onderdeel van de competenties rond ict-geletterdheid waar docenten, leraren, eigenlijk bijna iedereen het meest moeite mee hebben: computational thinking.
Al was het maar omdat het in tegenstelling tot de andere onderdelen (ict-basisvaardigheden, informatievaardigheden, mediawijsheid) een Engelstalig begrip is. Hele discussies vinden plaats om na te denken over een goede Nederlandse vertaling. Maar wat is het nou eigenlijk, waar komt het vandaan, waarom moeten we er aandacht aan besteden?

Het boek “Computational Thinking” van Peter Denning en Matti Tedre probeert antwoord te geven op deze vragen. Daar hebben ze bijna 200 pagina’s voor nodig (150 zonder de bijlagen). In het Engels. Dus daarom een “korte” samenvatting van de inhoud. Niet met de bedoeling om die 150 pagina’s te vervangen, maar om je een beeld te geven van de inhoud.

Omdat het een redelijk lang verhaal is, kun je het ook in zijn geheel als PDF downloaden.

Lees verder….

Deel dit bericht:
jul 252019
 

Terwijl iedereen het warm heeft in Nederland en ook vandaag weer een nieuw warmterecord bereikt is, dacht ik “laat ik eens een blogpost over hitte maken”, schijnt actueel te zijn.

Was het ook voor mij, zo bleek. Sinds maandag ligt er namelijk een Raspberry Pi 1B in een (open) kistje in de tuin, verbonden aan de antenne voor de NOAA satellieten (zie dit bericht).
En die plek in de tuin wordt (zo weet ik inmiddels) overdag tamelijk warm. Elders had ik gelezen dat ook telefoons, laptops etc. problemen konden krijgen als ze het te warm krijgen (de Raspberry Pi 4 wordt uit zichzelf al snel te warm en schakelt dan terug in snelheid), dus wilde ik weten hoe warm die Raspberry Pi het had.

Uiteraard bleek al iemand anders het antwoord op die vraag uitgewerkt te hebben, in deze blogpost van Lars kun je het script vinden dat hij gebruikt. Ik zou meteen even het tweede, uitgebreidere script gebruiken dan krijg je ook de processorbelasting, het percentage gebruik van de micro-SD kaart en het geheugengebruik. Lars legt uit hoe je die informatie via MQTT kunt doorsturen. Hij stuurt het door naar een externe MQTT-server van Adafruit, ik gebruik (uiteraard) mijn eigen MQTT-server die onderdeel is van de Home Assistant installatie die de rest van de apparaten aanstuurt.

Daar bleek al snel dat de Raspberry Pi in de tuin het vandaag wel heel erg warm kreeg.

Na deze screenshot steeg de temperatuur nog door naar 101,4 °C. Dat is veel meer dan de 85 °C die als maximum voorgeschreven wordt. Het zit nog ruim onder de 125 °C die in het bericht genoemd wordt, maar voor mij was het voldoende reden om de Raspberry Pi af te sluiten en voor de rest van de dag maar even binnen neer te zetten. Er kwam een geur van de case af een beetje leek op een hete soldeerbout, lijkt me niet goed.
Ik heb de cronjob voor het script op 1 keer updaten elke 10 minuten staan. Bij gebruik van Home Assistant kan ik dan eenvoudig een waarschuwing instellen voor als de temperatuur boven de 90 °C uit komt. Niet direct noodzakelijk voor deze testopstelling die na morgen toch weer afgebroken wordt, maar handig om te weten ook voor de andere systemen die in huis in gebruik zijn. Omdat het hier om de temperatuur in de processor zelf gaat, is een graad of 40 °C hier helemaal geen probleem.

Het script werkte niet “zomaar” op mijn Raspberry Pi. Python was uiteraard al geïnstalleerd, maar voor het verkrijgen van de info en het versturen van berichten via MQTT waren twee andere libraries nodig:

sudo pip install paho-mqtt
sudo pip install psutil

Nou, en dan voor de geschiedenisboeken toch nog even een aantal andere temperaturen om het huis: De airco staat UIT op de studeerkamer op zolder, AAN op de eerste verdieping (waar de slaapkamers liggen). De serre heeft een dak van dubbellaags kunststof dus dat is een broeikast, maar zoals je ziet doet de volle zon op het balkon aan de voorkant van het huis (op het zuiden) ook haar werk.

Tja, gewoon rustig aan doen dus.

Deel dit bericht:
jan 212019
 

Ik zag dat ik er een tijdje geleden wel al een tweet over gestuurd had, maar dat ik er nog geen blogpost over gemaakt had. Ik heb het over Thonny, een open source, gratis ontwikkelomgeving (IDE) voor Python en (micro-)Python.

De tweet stuurde ik toen ik zag dat de omgeving standaardonderdeel zou worden van de Linuxversie die voor de Raspberry Pi gemaakt wordt, maar dit weekend ontdekte ik dat je hem ook voor microPython kunt gebruiken. En dat is handig in combinatie met bijvoorbeeld een ESP8266 of een ESP32. Vooral ook omdat Thonny dan ook het uploaden en downloaden van de bestanden voor zijn rekening neemt en een REPL-console ingebouwd heeft.

Het flashen / updaten van de firmware op de ESP8266/ESP32 vanuit de tool heb ik niet gedaan/geprobeerd, daarvoor vertrouw ik liever op esptool.py. Voor de ESP8266 die ik bij de hand had gebruikte ik de kale microPython versie  op de EPS32 heb ik de Loboris-firmware gezet. Die heeft als voordeel dat er al heel wat modulen bijgevoegd zijn.

Voorlopig vind ik de combinatie best fijn. MicroPython op de ESP32 chips blijft toch hier en daar nog wat behelpen. Vooral omdat een van de extra features ten opzichte van de ESP8266, de ondersteuning voor BLE, nog niet beschikbaar is binnen microPython. En dan is de keuze voor terugkeer naar bv de Arduino IDE in de meeste gevallen het meest voor de hand liggend.

Wil je kennismaken met Python, dan hoef je niet eens zaken te installeren. Dan zou ik eerst eens bij Repl.it kijken. Zie ook de berichten op dit blog daarover.

 

 

Deel dit bericht:
jan 062019
 

Als breingymnastiek tijdens de vakantie kregen we bij het iXperium / Centre of Expertise afgelopen vakantie bijgevoegde raadsel mee van Marijke. Ik kende het type puzzel en had ze ook al meerdere keren “op papier” gemaakt. Het is namelijk een logische puzzel waarbij je (in dit geval) voor elk huis een kolom maakt en voor elke eigenschap een rij (kleur, nationaliteit, huisdier, drank, sigaretten). Het idee is dat de aanwijzingen je in staat stellen dusdanig veel vakjes in te vullen dat de ontbrekende waarden daar automatisch uit afgeleid kunnen worden.
Leuk. Maar dat moest toch ook met de computer kunnen? Vast wel, maar dát had ik nog niet eerder gedaan. En hoewel ik daarmee niet voldeed aan een van de voorwaarden (“geen gebruik maken van internet voor het vinden van oplossingen”) ben ik er (buiten mededinging) toch mee aan de slag gegaan.

De eerste uitdaging was proberen te achterhalen welke programmeertaal het meest geschikt was. Het eerste waar ik achter kwam (dat wist ik nog niet) is dat het in het Engels een Zebra Puzzle heet en dat het betwijfeld wordt dat hij daadwerkelijk door Einstein verzonnen is. Daarna bleek al heel snel dat Prolog (een taal die al sinds de universiteit niet meer gebruikt had) gezien werd als de meest logische taal om het probleem mee op te lossen.
En dat klopt ook wel, zo bleek toen ik zag hoe het oorspronkelijke probleem in Prolog beschreven was. De versie de Marijke ons gestuurd had, gebruikte wat andere zinnen, maar veel van de Prolog code bleef qua structuur exact gelijk.

En helemaal fijn was dat ook voor Prolog een online omgeving beschikbaar is waar je de code in kunt schrijven/aanpassen en uitvoeren. Dat maakte het gemakkelijk de oplossing met Marijke te delen en nu hier online te plaatsen (de vakantie en de inzendtermijn zijn voorbij). Je kunt de code hier bekijken en uitproberen: https://swish.swi-prolog.org/p/fish_puzzle_marijke.pl
De opdracht fish_owner(Owner). geeft de oplossing, de opdracht houses(Houses). geeft de hele tabel.

En denk je nou, dat wil ik ook uitproberen! Nou, dat kan. Hier op deze pagina staan nog meer dan genoeg puzzels met dezelfde structuur. Ook de “very hard puzzles” moeten op deze manier op te lossen zijn. Durf je de uitdaging aan?

Deel dit bericht:
okt 282018
 

De site/toepassing is niet nieuw, maar ik had simpelweg nog geen reden gehad om er eerder naar te kijken: MIT App Inventor.

Vandaag heb ik er voor het eerst mee geëxperimenteerd. De aanleiding is een wat groter project waarbij ik sensorwaarden die via een ESP32 worden verzameld direct op een mobiel apparaat wil kunnen ontvangen (dus niet via WiFi / MQTT etc). Het idee is om daar BLE (Bluetooth Low Energie) voor te gebruiken, de ESP32 heeft standaard WiFi en BLE ingebouwd. Maar de standaard apps die je voor BLE kunt downloaden hadden wat moeite met het verwerken en zeker met het netjes weergeven van de data die op deze manier binnen kwam. Zelf een app bouwen voor iOS of Android had ik in het verleden wel al eens geprobeerd, maar in beide gevallen was het installeren van de benodigde tools/software en het krijgen van een basisbegrip van hoe e.e.a. werkt al voldoende reden om daar niet teveel extra tijd in te steken.

Ik was dan ook een beetje sceptisch toen ik de verwijzing naar MIT APP Inventor tegenkwam. Maar, de eerste indruk na een paar uurtjes testen is heel positief. Goed, de eerste beperking voor nu is nog dat er nog geen ondersteuning is voor iOS. Dat was voor mij geen echt probleem, ik heb beide ter beschikking.
Heel prettig is wat mij betreft dat ik meteen in de online omgeving aan de slag kon. Ik kon met een Google account inloggen, naar keuze voor mij dan dus via @gmail.com of via @ixperium.nl omdat we Google Apps for Education gebruiken. Maar helemaal mooi werd het na het koppelen van mijn Android toestel via de MIT AI2 Companion App die ik via Google Play kon installeren. Na het scannen van een QR-code of het invoeren van een korte code werd mijn toestel gekoppeld aan het project waar ik mee bezig was. Dat betekende dat wijzigingen meteen werden doorgevoerd en te testen waren.

Het bouwen van een applicatie voelde heel vertrouwd, enerzijds heb je de ontwerpomgeving waar je knoppen, lijsten etc. op je scherm plaatst. Om er voor te zorgen dat die knoppen daadwerkelijk iets doen gebruik je de “Blocks” omgeving. Als je met Scratch kunt werken of met de Blocky achtige omgevingen zoals ook bij de Micro:bit gebruikt worden, dan kun je hiermee eenvoudig overweg.
En ook wijzigingen die je hier doorvoert worden meteen in de app op je smartphone doorgevoerd.

Heb je app helemaal klaar, dan kun je een .apk bestand downloaden op je smartphone. Dat is dus een “echte” app die gewoon zelfstandig werkt, los van de online omgeving. Nou staan de meeste smartphone tegenwoordig zo ingesteld dat ze niet zomaar apps installeren die niet in Google Play staan. Maar als het goed is, dan is dat één vinkje dat je moet aanzetten. Ik heb nog niet uitgezocht hoeveel werk de optie is om je app via Google Play te delen via App Inventor, want dat is voor mijn doel niet nodig.

Conclusie
Voorlopige conclusie is dat deze omgeving voldoende flexibiliteit biedt voor wat ik nodig heb.  De app is nog niet klaar dus nog geen filmpje etc. van het eindresultaat. Dat wordt nog vervolgd.

Deel dit bericht:

Jarig op Moederdag?

 Gepubliceerd door om 22:34  Algemeen, Programmeren
apr 012018
 

Het zijn zo van die vragen die opeens over de ontbijttafel vliegen. Een van mijn neven is geboren op Moederdag. Toen was dat 9 mei.
Vraag #1: kun je daaruit afleiden welk jaar het is?
Vraag #2: hoe vaak is hij op Moederdag jarig?

Tja, en als het dan weekend is, dan is er tijd om op zoek te gaan naar een antwoord. Het werd een combinatie van het opknippen van het probleem in stukjes en voor een deel brute rekenkracht (nou ja).

Het opknippen van het probleem was niet zo moeilijk: wanneer valt Moederdag? Het is de tweede zondag van mei. De eerste zondag valt op zijn vroegst op 1 mei, op zijn laatst op 7 mei. Dat betekent dat de tweede zondag op zijn vroegst op 8 mei en op zijn laatst op 14 mei valt. Als je de zondagen telt tussen 1 mei en 14 mei, dan weet je dat de tweede die je tegen komt Moederdag is.
Als je dan kijkt of die dag gelijk is aan 9, dan weet je of zijn verjaardag samenvalt met Moederdag.

Gereedschap voor het tweede deel was vandaag repl.it en dus Python. Ik heb de code hier gedeeld: https://repl.it/@PiAir/Jarigopmoederdag.

Als je de link volgt en de code uitvoert, dan zie je dat het best vaak voor komt. Afleiden in welk jaar hij geboren is kan op basis hiervan niet. Dus dat jaartal heb ik onderdeel van de code gemaakt (de code kijkt 50 jaar terug ten opzichte van dat jaar en 100 jaar vooruit). En de uitvoer laat zien dat er heel duidelijk een regelmaat is: elke 6, 5, 6, 11 jaar valt zijn verjaardag samen met Moederdag.

Geen oplossing voor een belangrijk wereldprobleem. Maar ja, het was een vraag die we hadden. 🙂

Deel dit bericht:

Programmeren met de kerstman

 Gepubliceerd door om 17:01  Algemeen, Programmeren
dec 232017
 

Alle scholen hebben inmiddels Kerstvakantie. En zelf doen we eigenlijk helemaal niet aan de Kerstman, maar de Santa Tracker van Google met ingebouwde “leren programmeren” omgeving is leuk genoeg om even naar te linken: https://santatracker.google.com/codelab.html

Leuk om zelf uit te proberen, samen met de kids….

De gewone tracker met al zijn extra’s is hier te vinden: http://g.co/santatracker

 

 

Deel dit bericht:
nov 202017
 

De TIOBE index is een indicatie van de populariteit van programmeertalen. Het is een Nederlandse index (uit Eindhoven) en TIOBE staat voor “The Importance of Being Earnest” (klik maar even op de link voor verdere toelichting daarover).

De index wordt berekend aan de hand van het aantal resultaten dat je krijgt als je naar de programmeertaal zoekt in een aantal populaire zoekmachines: Google, Google Blogs, MSN, Yahoo!, Wikipedia en YouTube. Het is dus niet persé een index op basis van het daadwerkelijk gebruik van de programmeertalen, maar dat zou ook best moeilijk zijn, want wat tel je dan (aantal programma’s, aantal regels code, …. ?).  Het idee is dus dat hoe meer informatie over een programmeertaal online te vinden is, des te populairder je mag veronderstellen dat de programmeertaal is.

(als de resultaten voor jouw favoriete taal je dus niet bevallen, kun je altijd nog de validiteit van de index in twijfel trekken!)

Hoe dan ook, op basis van de TIOBE index komen een aantal oude bekenden nog steeds bovenaan in de lijst voor. Java voert de lijst aan, C / C++ / C# staan alledrie in de top 5. Python staat op 4, JavaScript op 6, PHP op 8 en Visual Basic .Net op plek 7.

Ik kwam bij de index vanwege een bericht op mspoweruser.com waar ze maar wat blij waren dat ze konden verwijzen naar Infoworld.com waar ze geconstateerd hadden dat Swift, de programmeertaal van Apple, na een initiële opkomst in de index, nu flink gekelderd was in de index. Van plek 12 naar plek 20.

Nogmaals, dat betekent niet persé dat Swift minder gebruikt wordt, wel dat er minder over gepubliceerd wordt.

De (mogelijke) verklaring die Infoworld gaf is dat Swift nou eenmaal maar voor één platform is: iOS, terwijl andere talen, zoals JavaScript en C# gebruikt worden in cross-platform ontwikkeltools Xamarin van Microsoft, Cordova van Apache en Ionic. Ook Java zou daaronder te lijden hebben, maar niet voldoende om van de nummer 1 plek gedrukt te worden.

Als je het hebt over het op school gebruiken van programmeertalen die ook in het wild populair zijn, dan is Python in ieder geval niet eens zo’n vreemde keuze.

 

Deel dit bericht:
mrt 262017
 

De Puck.js is een nogal eigenaardig apparaat. Het is een soort knop (je kunt hem ook echt indrukken) met ingebouwd een programmeerbare chip met ondersteuning voor Bluetooth Low Energy (BLE), GPIO poorten, een infraroodzender, een thermometer, ingebouwde lichtsensor, een sensor voor magnetisme, een rode/groene/blauwe LED.

Je programmeert hem met behulp van Javascript via BLE. En in dat laatste zit hem eigenlijk wel de uitdaging. De maker gaat er namelijk vanuit dat je daarvoor Web Bluetooth gebruikt. Handig, gewoon ingebakken in de browser. Alleen….op iOS / de iPad is dat nog niet standaard aanwezig en op Windows 7 of 10 ook nog niet. Op een Chromebook overigens wel weer. Idem voor Android, maar het 5,5 inch scherm van mijn telefoon is daar toch net wat klein voor.

Er is nu een soort van alternatieve manier beschikbaar op iOS en dat is via de applicatie WebBLE. Die is niet gratis, je betaald er €1,99 voor, maar dan kun je vanaf je iPad ook programmeren. Gaat net wat beter vanwege de optie om daar een toetsenbord bij te gebruiken.
De schermindeling is echter nog niet helemaal optimaal voor gebruik op een iPad Mini in liggende weergave.

Er zou een optie moeten zijn via https://www.espruino.com/ide/relay om de verbinding van de iPad te delen met mijn Windows laptop zónder Web Bluetooth ondersteuning. Maar ondanks de stap voor stap instructie in deze video is me dat nog niet gelukt.

Zoals gezegd, het is een intrigerend apparaatje. Ik heb 2 van de pucks aangeschaft maar voorlopig leveren ze vooral nog veel frustratie ehm leermomenten op en heb ik ze nog niet echt voor iets nuttigs in kunnen zetten.
De vraag over de relay functie heb ik op het forum uitgezet, dus wie weet wordt dat nog opgelost.

p.s. Gordon heeft in het verleden heel snel op andere vragen gereageerd en heeft dus wel wat credit opgebouwd, sowieso omdat ik de puck.js niet écht voor productiedoeleinden nodig heb. Ik kan wachten terwijl het product zich verder ontwikkeld.

 

Deel dit bericht: