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:
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:
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: , ,
sep 282016
 

Karl Dittrich vindt dat er [..] een taak is weggelegd voor de lerarenopleidingen. “Vooral op het gebied van onderwijs ligt er een belangrijke taak weggelegd voor universiteiten en hogescholen, daarbij denk ik aan de lerarenopleidingen. Wij moeten zorgen dat wij leraren voor de klas krijgen die om kunnen gaan met die digitalisering. Ierland heeft ingezet op verplicht programmeren op de basisschool, dat lijkt mij voor Nederland een prima plan.”

(bron)

Of het verplicht stellen van programmeren op de basisschool nou de beste oplossing is, daar is het laatste woord in Nederland zeker nog niet over gezegd (mijn persoonlijke mening: als je afhankelijk bent van de politiek om het te verplichten, dan weet je zeker dat er geen draagvlak is en zonder draagvlak ben je nergens). Maar het belang van leraren voor de klas die om kunnen gaan met de toenemende digitalisering van de samenleving, dat lijkt me veel minder een discussiepunt!

Deel dit bericht:
 Reacties uitgeschakeld voor Discussie: Hoe kunnen we de digitalisering van de samenleving versterken?  Tags: , ,
sep 112016
 

micropythonHet was hier weer even een paar dagen stil. En ook nu nog geen kant en klare “zo moet je nadoen wat ik gedaan heb” blogpost, meer een “dit heb ik zover voor elkaar”.
Het logo hiernaast is van MicroPython, zie het maar als het kleinere broertje of zusje van Python. Waarom kleiner (“micro”)? Kleiner, omdat het daarom mogelijk geworden is om Python zo goed als volledig/volwaardig te draaien op devices waarvan dat voorheen niet mogelijk was. Een voorbeeld daarvan is de micro:bit, maar die zal voorlopig nog erg zeldzaam zijn in Nederland. Met dank aan een succesvolle Kickstarter die onlangs plaats gevonden heeft, is er nu ook een versie voor de ESP8266. En daar heb ik er wel een paar van in huis. Daarnaast zal ook de LoPy, die als het goed is eind deze maand verstuurd wordt, direct ondersteuning hebben voor MicroPython. Tijd dus om er alvast eens in te duiken.

Je kunt best veel lezen over MicroPython, maar ik kan je zeker de videoserie aanraden die Tony DiCola op het moment maakt voor Adafruit. Ze zijn wat langer, soms 45 minuten of iets langer, Maar Tony gaat heel uitgebreid en geduldig op de verschillende aspecten van MicroPython in. De video’s worden als livestream gemaakt, maar daarna toegevoegd aan hun eigen pagina met veel tekstuele toelichting, code-snippets en verwijzingen. Je kunt die op de Adafruit Learn website vinden.

Voor wat betreft “lezen” is deze eerste pagina sowieso een heel goede om te beginnen. Daar kun je o.a. verwijzingen vinden naar:

Lees verder….

Deel dit bericht:

sockjs/sockjs-client · GitHub

 Gepubliceerd door om 08:21  Programmeren
jul 082014
 

SockJS is a browser JavaScript library that provides a WebSocket-like object. SockJS gives you a coherent, cross-browser, Javascript API which creates a low latency, full duplex, cross-domain communication channel between the browser and the web server.

Under the hood SockJS tries to use native WebSockets first. If that fails it can use a variety of browser-specific transport protocols and presents them through WebSocket-like abstractions.

SockJS is intended to work for all modern browsers and in environments which don’t support WebSocket protocol, for example behind restrictive corporate proxies.

via sockjs/sockjs-client · GitHub.

Een van de problemen met socket.io (zoals ik o.a hier gebruik) is dat het nóg een extra poort is die je in je firewall open moet zetten. Op mijn Raspberry Pi thuis is dat natuurlijk niet direct een probleem, maar ik weet niet 100% zeker of die verbinding ook overal onderweg door alle proxies en zo heen komt (iets om nog testen). Sockjs zou daar een alternatief voor moeten zijn.

Deel dit bericht:
 Reacties uitgeschakeld voor sockjs/sockjs-client · GitHub