Home About Meetings

September 11 2017 WebAssembly, Node-RED, asciinema, Review of the Year and Magicbane Meet

Posted on 2017-09-21 21:55:36 +0000 by John

Shi brought some cakes, including a beautiful chocolate cake, to celebrate our ninth birthday.

Kriss and Shi introduced WebAssembly on which all the browser manufacturers have agreed to work. WebAssembly provides a virtual CPU which maps to the actual CPU in the device on which you can run C programs compiled to run on the virtual CPU. It operates at a lower level than the Java VM and the code, which runs closer to bare metal than anything else, will run in any browser — as long as the browser manufacturers are not lying. Because it runs in a sandbox, it is as secure as Javascript.

Shi then demonstrated Fun64, which uses a simple game engine, GameCake, written in Lua that will run on any device because Kriss only uses libraries that run everywhere. (They have given up on Native Client — see April 2015 meeting.) They use GitHubGist.

The game started in 1981 when Kriss was 9 and he had only ½KB of memory; so he ran out of memory. Shi demonstrated a space invaders and a platform game they had written.

Kriss explained that Lua calls C functions that are then compiled to WebAssembly which uses the clang compiler and can therefore run most C programs.

Shi also demonstrated Shadertoy which uses shaders written in GLSL (OpenGL Shading Language) running on the GPU. The shader code is inside the Lua code.

Brian demonstrated the Internet Radio selector he had built using Node-RED and a Raspberry Pi, beginning with a quick resumé of the talk he had given a year ago.

Node-RED provides a dashboard on which you can manipulate a palette of nodes which you download from the website and you can edit what the nodes do and the flows between the nodes. You do need to know something about programming the Raspberry Pi GPIO.

The buttons on his control box are connected to a Raspberry Pi pin on one side and the 0V rail on the other. Node-RED can simulate a resistor even if you do not have one. When you press a button, the current oscillates and so he has set the debounce to 100ms, though 25ms is probably enough. Note that resistor pullup is essential to distinguish between a signal representing 0 or 1. If there are latency issues, it is better to use hardware debouncing.

Inputs can be from:

Outputs can be to:

Brian then demonstrated selecting Radio 4, using The Archers signature tune, the World Service, using Lily Bolero, and Radio Caroline, using Caroline, followed by a demonstration of using the Node-RED dashboard to edit nodes and flows. A flow can be saved as a text file and re-used and you can write your own functions and submit them to the website.

Asked about Bluetooth, Brian said he had not tried using that.

This prompted a mention of the recent LoRaWAN record for transmitting a message via a 25 mile high balloon.

Brian also mentioned that Android Oreo will have a standard interface allowing vendors to make their own hardware adaptations without interfering with the update process for the Android OS; John commented that Gary Kildall had implemented this in CP/M in the 1970s!

David then demonstrated asciinema (whose website is sponsored by Brightbox) by using

asciinema rec

to record his keypresses and then replaying and saving the result.

John presented the review of the year.

Darren said that he had found that his DVB dongle is supported in the kernel and had been advised to use mythTV; Brian explained that he did not need to use mythTV, just use the notes on configuring the dongle to get it to work.

David Devlin, a newcomer to BradLUG, demonstrated his work with BlitzMax which is based on Blitz BASIC on the Commodore 64 and which is now open source. He demonstrated The Wizard’s Lair, Rising Runner and Heraldia. The first two are on Steam for £1.99.