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:
apr 102017
 

Als het in het onderwijs in Nederland over “programmeren” gaat worden eenvoudige vragen al heel snel ingewikkeld. Dus een vraag als “Welke programmeertalen zouden onze leerlingen/studenten moeten kennen?” (bron) is niet helemaal zonder risico. Immers, je moet dan gaan nadenken over het doel dat je daarmee hebt. Wil je ze leren programmeren? Of juist coderen? Of software ontwikkelen? Ik ga niet eens proberen naar bronnen te linken die ze op één hoop of op juist heel verschillende hopen (en dan per bron ook verschillend) gooien.

Dus laat ik het maar even veilig houden in deze blogpost. Zo’n 9 jaar geleden vroeg ik me af welke programmeertalen ik allemaal zou moeten leren. Zoals ik toen beschreef:   Basic was mijn eerste kennismaking met programmeren, maar daar kon je (toen) zo weinig mee dat ik er niet veel interesse voor had. Op de universiteit leerde ik Turbo Pascal om daar vervolgens nooit meer wat mee te doen. Daarna kwam ik in de Windows omgeving en Visual Basic (binnen Office!) en Active Server Pages (ASP) terecht. Mijn eerste kennismaking met JavaScript was in de browser, ASP werd vervangen door PHP toen ik weblogtools ging gebruiken op basis van die taal. En daarna werd het een opeenvolging van “wat heb ik nodig”. Zo kwam er een beetje Python bij, een heel klein beetje .NET en eveneens een klein beetje Java. Dat was toen. Sindsdien zijn er dingen gewijzigd en gelijk gebleven.

Lees verder….

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:
mrt 112017
 

Toen ik afgelopen week met de micro:bit en de Circuit Playground (CPG) aan de slag ging, lukte het me niet om via serial een verbinding tussen de CPG in de richting van de micro:bit op te zetten in combinatie met de CPG library. Zónder die library kon ik dataverkeer beide kanten op realiseren, zodra ik de library initialiseerde met CircuitPlayground.begin(); ging er geen verkeer meer de kant op van de micro:bit.

De oplossing bleek te liggen in het gebruik van de hardware serial aansluitingen van de CPG in plaats van software serial waarmee ik aan de slag was. Tot nu had ik alleen met de hardware serial gewerkt als het ging om communicatie via de USB-poort van een Arduino. Dat deed ik dan via bv via Serial.println("Setup complete"); waarbij ik dan in de Serial monitor op mijn computer de output kon zien, ideaal voor het debuggen. Als een Arduino board een hardwarematige seriële aansluiting heeft (soms hebben ze er meer dan 1), dan kun je de andere hardwarematige poorten ook gebruiken. Die heten dan achtereenvolgens Serial1, Serial2 etc.
De hardwarematige poorten werken prima samen met de CircuitPlayground code. Ik heb een nieuwe versie van het script op Bitbucket gezet. In CPG_Serial_Slave.ino staat de versie met de softwarematige seriële poort in CPG_Serial_hardware.ino staat het script beter werkt en dan de hardwarematige seriële poorten gebruikt. De code op de micro:bit is nog steeds dezelfde microbit-Serial-Count-Master_and_Slave.hex die je hier kunt vinden.

De werking is als volgt: nadat beide script op respectievelijk de micro:bit en de CPG geladen zijn wachten de boards op een start teken. Door op de B-knop van de micro:bit te klikken begint het script daar. De micro:bit laat een tekst zien op het display waarin aangegeven wordt dat eerst een 0 (nul) naar de CPG gestuurd wordt. De CPG wacht totdat er data via de seriële lijn binnen komt. Is dat het geval, dan wordt de string die ontvangen is omgezet in een getal. Er worden dan evenveel Neopixels aangezet als het getal hoog is. Dan wordt hetzelfde getal terug gestuurd. Dat lijkt zinloos, maar de micro:bit wacht op het terug ontvangen van een getal voordat hij verder gaat, zo blijven beide processen in sync. De micro:bit laat zien dat hij +1 bij het getal optelt voordat hij het terug stuurt. Dat gaat verder totdat het getal groter is dan 10. Er zijn maar 10 Neopixels, dus reset de micro:bit het getal dan naar 0 en stuurt de 0 door zodat ook op de CPG alle Neopixels uitgeschakeld worden.

Ook dit was een test om het communicatiemechanisme beter te begrijpen. Interessant wordt het als ik nu een telefoon via Bluetooth aan de micro:bit koppel en instellingen draadloos door kan geven, of een WeMos D1 ESP8266 chip (kost zo’n 3 euro) om er voor te zorgen dat de CPG alsnog over een Wifi-verbinding kan communiceren. Dat zou via Firmata moeten kunnen, want ook die kan zowel via USB als via de hardwarematige seriële poort aangestuurd worden. Wordt dus later vervolgd.

Deel dit bericht:
mrt 082017
 

Ik realiseerde me bij het typen van dit bericht dat ik geen aparte tags of categorieën heb voor de verschillende sectoren van het onderwijs, terwijl ik voorheen vooral over zaken die in het hoger onderwijs speelden schreef en nu ik bij het iXperium werk ook over mbo, voortgezet onderwijs en primair onderwijs. Toch ga ik die tags niet introduceren omdat ik nog steeds blijf vinden dat de sectoren veel meer van elkaar kunnen leren dan ze nu doen.

Praxisbulletin 7  met de titel “Maak het nou!” is een uitgave van Malmberg en gericht op het basisonderwijs. Redactie/samenstelling was in handen van Tessa van Zadelhoff. Het bulletin is gratis als PDF te downloaden of op papier via de uitgever te bestellen. Mijn betrokkenheid erbij was nul, ik heb het ongevraagd zojuist gelezen en wil jullie er via deze blogpost naar verwijzen.

Het bulletin is een combinatie van een aantal bijdragen die wat meer uitleg/achtergrond geven bij het hoe en waarom van wetenschap en techniek,  programmeren, computational thinking, maakonderwijs en een aantal lesvoorbeelden. Dat maakt het tamelijk laagdrempelig, maar ook wel handig als je als leerkracht zelf enthousiast bent over het onderwerp en niet meteen weet hoe je dat enthousiasme over moet brengen op directie en/of collega’s. Zo gaat het stukje “Wat hebben we nodig?” in op de vraag waarom we nou op de basisschool aandacht moeten besteden aan dit soort vaardigheden.  De stukjes “Programmeren kun je leren” en “Denken als een computer” proberen dat te doen voor programmeren en computational thinking. Het gaat ook niet altijd helemaal goed, “Makerspace op school” is nog best wel een bestellijst van spullen, maar “Ondernemerschap is kinderspel” is dan wel weer verrassend omdat ondernemerschap binnen mbo’s wel al een hot topic is (en binnen hbo / wo al heel lang), maar binnen het basisonderwijs nog lang niet altijd.
Nu ik de bijdragen voor deze blogpost op een rijtje probeer te zetten merk ik dat ik sowieso de lijn af en toe kwijt raak, waarom staat de bijdrage over computational thinking bij “make” ? En het stukje “Anders (leren) denken” had meer naar voren gemogen bij de lesvoorbeelden in het eerste deel over wetenschap en techniek.

Ik kan me daarnaast voorstellen dat leerkrachten ook wel met vragen blijven zitten. Zoals “waarom wil ik kinderen een hologramprojector laten bouwen?” en ook wel “wat leren ze dan?”. Het bulletin zegt daarover: ” Ze leggen een praktische link tussen de werking van het prisma en de nieuwe mediafunctionaliteiten van de mobiele telefoon“. Ik heb zelf zo’n projector gemaakt van plexiglas, ik denk dat je wel meer leert, bijvoorbeeld ook de praktische vaardigheid van het werken met de noodzakelijke materialen en gereedschappen. Als je bijvoorbeeld de onderzoekscyclus combineert met deze opdracht, dan laat je ze ook nadenken over alternatieve manieren om hetzelfde te bereiken. En waarom deze vorm nou zo werkt, dus hoe een prisma werkt, wat het effect is van het net niet helemaal goed plaatsen van een zijkantje, of het ook met een bolvorm zou kunnen werken in plaats van een prisma, zijn ook vragen die je zou kunnen laten stellen. Idem bij bv de “Papieren circuits”, het maken van zo’n kaart (= “leuk!”) is stap 1,  al spelenderwijs leren werken met elektronica is stap 2, koppelen aan de Makey Makey stap 3 etc. Nou staat er voor papieren circuits een uitgebreidere versie op de website met een PDF die meer voorbeelden geeft dan in dit bulletin pasten, maar het wordt nog een beetje aan de leerkrachten over gelaten om de verbindingen te leggen.

Maar goed, nou ben ik ook wel heel erg ver in de bek van dat spreekwoordelijk gegeven paard aan het kijken. Ik kan het ook omdraaien en zeggen: het bulletin biedt leerkrachten heel wat ruimte om zelf uitbreidingen te ontwikkelen en legt hen niet vast in de manier waarop ze het in hun onderwijs willen integreren. Dat maakt het extra flexibel in gebruik. 🙂
Serieus: ik zou het natuurlijk heel mooi vinden als leerkrachten dat daadwerkelijk doen. En dan natuurlijk ook die uitwerkingen, aanpassingen, implementaties weer online delen. Dan kunnen ze ook weer door anderen gebruikt worden!
Stap 1 is dan om het bulletin te downloaden of te bestellen (als je liever vanaf papier leest).

Deel dit bericht:
jan 052017
 

Ik moet even wat code parkeren naar aanleiding van wat “vakantie-uitzoekwerk”. Ik heb mijn DIY ontvanger en zender voor 433.92Mhz, voor het schakelen van mijn lampen, de kerstboom etc. vervangen door een RFXcom RFXtrx433E USB 433.92MHz Transceiver. Natuurlijk is zelfgebouwd heel leuk en leerzaam, maar de RFXcom heeft al meteen laten zien dat hij een stuk betere ontvangst heeft dan mijn eigen creatie. Net als de andere systemen, communiceert de RFXcom niet rechtstreeks met mijn OpenHab systeem, maar via een MQTT-server.

De RFXcom adapter hangt aan een Raspberry Pi machine. Niet die waar de MQTT-server en OpenHab zelf op staan, dat bleek net wat veel van het goede. Onhandig is dat RFXcom zelf geen Debian software beschikbaar stelt. Maar gelukkig zijn er anderen die daar  voor gezorgd hebben.  Zoals Anton, die deze code in Python beschikbaar gemaakt heeft.

Welke protocollen in RFXcom?
Stap #1 is om te bepalen welke protocollen de RFXcom moet ondersteunen bij het ontvangen. Hoe minder hoe beter, dan raakt hij minder in de war. Welke protocollen de verschillende apparaten gebruiken kun je opzoeken, maar je kunt ook de rfxcom applicatie opstarten en luisteren naar wat er binnen komt. Alleen, die draait niet op Debian. Een optie is om de adapter “door te verbinden” naar een poort op de Raspberry Pi en dan vanaf een andere computer verbinding te maken. Dit kan met de tool “socat”, die je even moet installeren op de Raspberry Pi en dan moet je het volgende commando runnen:
sudo socat tcp-listen:10001,fork,reuseaddr file:/dev/ttyUSB0,raw &
Het is wel belangrijk om daarna het proces weer te killen, want het Python-script en socat kunnen niet tegelijkertijd gebruik maken van de USB-poort.
Lees verder….

Deel dit bericht:
nov 162016
 

hour_of_code_2016Ten behoeve van de Hour of Code 2016 hebben Microsoft en Code.org een uitbreiding uitgebracht op de op Minecraft gebaseerde opdrachten van vorig jaar. Ik schreef daar toen al uitgebreid over, in dit bericht wil ik me even richten op de verschillen van de uitbreiding.

Heel simpel: het is een hoger level van coderen. Er wordt nu gebruik gemaakt van events die aan objecten gekoppeld zijn, het eerste uur van vorig jaar gaat uit van een lineaire programmalijn op basis van de “als gestart” actie (ok, dat zou je ook een event kunnen noemen). Nu gebruik je combinaties zoals “chicken” (object) met “when spawned” (event). Ik heb de opdrachten gemaakt. Ze zijn leuk en uitdagend, maar ik heb ook wel wat vragen erbij. Allereerst is het geheel een beetje vreemde mening van Nederlands en Engels.

hour_of_code_2016_1

Nederlands en Engels door elkaar heen.

Dat zou voor de wat oudere kinderen geen probleem moeten zijn, maar het maakt het geheel een beetje half af. Ik weet het, het is een gratis resource, dus niet te streng zijn.

Waar ik ook wat moeite mee heb is de vermenging van redelijk basale acties zoals “attack” (al zou je kunnen stellen dat ook dat een

hour_of_code_2016_2

Samengestelde opdrachten als één blokje.

samengestelde actie is) en veel complexere acties zoals “move a step toward ‘zombie'”. Die laatste bevat hoe dan ook veel meer dan één actie. Zo moet de “Iron Golem” in dit geval een keuze maken tussen een aantal zombies. Kiest hij er willekeurig eentje? De zombie die het dichtste bij is? En als dat zo is, hoe bepaal je dat?

Hier (die ene opdracht) ligt een heel individueel probleem achter. En als je het over computational thinkingvaardigheden als “probleem decompositie” hebt, dan is ook dat besef relevant.

En ten slotte vraag ik me af waar de grens ligt voor wat betreft dit soort omgevingen. Het is immers niet echt Minecraft, je bent in een gesimuleerde omgeving aan het programmeren. Voor de beginner-oefeningen vond ik deze omgeving heel logisch, maar is het voor kinderen die dit niveau aankunnen niet veel leuker om in het “echte” mindcraft te programmeren? Of met fysieke robots of “gewoon” met een micro:bit, arduino, Raspberry Pi aan de slag te gaan? Die zijn weliswaar niet gratis, maar toch.

Je ziet het, voldoende om over na te denken, zelfs als je geen doelgroep van de toepassing bent. 🙂

 

Deel dit bericht:
okt 182016
 

dash_swift_screenPersoonlijk ben ik nog niet zo onder de indruk van Apple Swift Playgrounds, de omgeving die je bij iOS 10 beschikbaar hebt om te leren programmeren in Swift. Het waarom daarvan is iets voor een andere blogpost.

Desondanks vind ik het bericht dat de makers van Dash & Dot nu een verbinding hebben met de Swift Playgrounds toch de moeite van het vermelden waard. Want het is op zich wel weer een heel interessante samenwerking waarbij ze er niet voor gekozen hebben om het wiel helemaal opnieuw uit te vinden (ok, er waren/zijn al heel wat opties om Dash & Dot te programmeren) maar om aan te haken bij een product van iemand anders. Het maakt Swift Playground ook weer iets interessanter omdat je kinderen zowel helemaal op het scherm kunt laten programmeren, maar je ook kunt kiezen voor de integratie met fysieke componenten (in dit geval Dash of Dot).

Ik heb geen Dash of Dot bij de hand, maar de uitbreiding voor in Swift Playground is gewoon te downloaden vanaf deze website, maar omdat mijn computer geen Airdrop ondersteund weet ik nog even niet hoe ik e.e.a. dan overgezet krijgt naar mijn iPad. Wordt dus vervolgd.

p.s. De afbeelding is afkomstig van Techcrunch

Deel dit bericht:
 Reacties uitgeschakeld voor Interessant: Dash & Dot programmeren via Apple Swift Playgrounds  Tags: , ,
okt 102016
 

nieuwsbericht_hanBij een recente bijeenkomst van de Vereniging van Samenwerkende Nederlandse Universiteiten (VNSU) stond de vraag centraal “Hoe kunnen we de digitalisering van de samenleving versterken?”. Een van de uitspraken die daar gedaan werd door  VSNU-voorzitter Karl Dittrich was dat het invoeren van programmeren als verplicht vak op de basisschool volgens hem een goede manier zou zijn om leraren meer digitaal vaardig te maken. Hij zag daarbij een grote rol voor de lerarenopleidingen. Dat laatste is natuurlijk positief, maar hoe zat het met dat eerste, het verplicht maken van programmeren op de basisschool?

Ik schreef er een nieuwsbericht over voor de HAN.nl website. Je kunt het hele bericht hier online lezen. En voor de duidelijkheid: ik ben zeer zeker niet tégen het leren programmeren op de basisschool, maar in het stuk pleit ik voor een integrale aanpak om leraren digitaal vaardig te maken. Pas dan heeft met hen praten over programmeren zin. Ik wil de afsluiter ook nog even herhalen:

Als we dan toch geld aan het verdelen zijn voor het verbeteren van de innovatiekracht van Nederland, laten we het dan daarin [het digitaal vaardig maken van leraren] steken in plaats van in wetsvoorstellen die nóg meer verplichtingen opleggen aan het basisonderwijs zonder hen daarbij de middelen en de mogelijkheden te bieden om dat daadwerkelijk waar te maken.

Deel dit bericht: