I'm playing a show tonight at the local science education centre, Scitech, for their adult event, After Dark.
I'll play live electronic music using some Gameboy, Commodore 64, and Raspberry Pi gear and algorave Pd patches. I'll also give a little talk about the tech and how it works.
A couple of years ago my friend Joe recommended this stuff called Plastimake to me.
It is a hard plastic which goes soft and malleable at around 60 degrees celcius. You drop some in boiling water until it goes clear and soft and then you can mold it into whatever shape you want. It cools and hardens again quickly in whatever shape you have molded it into. You can re-heat it to soften and re-use it again.
Scout and I have used it several times to hand craft little figures for play. I've also used it around the home and when prototyping things as it's a very quick way to get a hard plastic into exactly the shape you want.
Here's their video which is clear and honest:
A list of real questions that could be answered by teensy little technology nuggets.
- In which physical folder is my child's birth certificate?
- What items of mine are not here?
- How much hand soap refill is left in my bathroom cupboard?
- What is the smallest storage space in which I can fit all of my furniture?
- Which items that I own do I never use?
- At what time of day do I interact with different items I own?
- What is the total weight of my filing cabinet and work desk?
- I need a new one of these, pull up the page where I purchased it in my browser.
- This thing does not belong to my grandmother. Who did she borrow it from before she died?
- List the items in my craft box which have "needle" in the name.
- How much television are my kids watching and what percentage are educational shows?
- Are there any NE5532s in my tool box?
- Graph my family's diet composition. How much of it is fresh food?
- Place a grocery order under $50 for the items I most commonly use that I will soon run out of.
- Search all of the physical books in my personal library for the following phrase.
- Are my running shoes in this house or the holiday house?
- We are leaving this hotel. Have we packed everything?
- Where have I put my phone and keys?
Most of these question could be answered without an internet connection. "Of Things" sounds kind of weird by itself though.
"Internet connected lightbulb" does not provide a use-case that anybody wants or needs.
The things should be telling us their data. They should not be telling corporations our data.
What you want is dumb little things that do one thing well. Good traditional design plus CPU, I/O, and memory.
Things that talk straight to us [and nobody else] with IR, sound, light, QR code, and raw radio.
Is there a word for "Internet of Things" objects which don't have an internet connection?
Maybe "ov things" lol.
"Neat little ov thing you got there friend."
I'm discovering Tiny Core Linux, a beautifully executed, minimalist, immutable-by-default GNU/Linux distribution that runs nicely on the Raspberry Pi and other x86 and ARM devices.
The documentation is comprehensive but arcane so here are my field notes.
I'm using piCore the Raspberry Pi variant of TinyCore but most of these notes should work for other variants too. These notes assume you are already a GNU/Linux desktop user and know basic Linux command line fu.
I'm a huge fan of this distribution!
Here's the official README for the Raspberry Pi version.
Write the disk image to your SD card
sudo dd if=piCore-9.0.3.img of=/dev/mmcblk0
Make sure you get your sd card's device (e.g. mmcblk0
) correct so you don't overwrite the wrong disk!
Tip: you can see where dd
is up to by sending it a signal:
sudo kill -SIGUSR1 `pgrep -f mmcblk0`
After this put the sd card into your Raspberry Pi and it'll boot Tiny Core Linux with an SSH server running so that you can access it remotely over the network.
Find the Pi on your network
find-pis: use this little script to find the Raspberry Pi on your network so that you can ssh to it.
Default login:
username: tc
password: piCore
Immutable by default
Tiny Core Linux is a perfect fit for Raspberry Pi because it does not write to disk by default. Note that between reboots if you want to persist any changes you've made, you need to do it manually with filetool.sh -b
. You'll especially want to do this after first boot to persist the SSH server keys. This includes any changes you make to files in the home directory.
This lack of disk writes is a huge boon because it prevents issues that distributions like Raspbian have with SD card corruption when you power off the Raspberry Pi. Immutability is also just a good thing generally for building robust software systems.
Tiny Core Linux package repository
The packages are .tcz
files which like most package formats are a zipped up collection of files with some metadata. You can browse the packages available to the Raspberry Pi distribution.
Various useful commands
Persist current state to disk:
filetool.sh -b
Where to specify additional default file locations for persistence:
/opt/.filetool.lst
Download and install packages (nodejs binary package in this example):
tce-load -wi node.tcz
Show which packages are currently installed:
tce-status -i
Install a package for doing C/C++ compilation & development:
tce-load -wi compiletc
Find current OS version info:
version
Search for and install packages with console UI:
tce
Where to put your own startup and shutdown scripts:
/opt/bootlocal.sh
/opt/shutdown.sh
Getting WiFi working
You'll want the packages wifi
and firmware-rpi3-wireless
and then reboot and set up a connection:
sudo wifi.sh
Don't forget to persist your changes.
Getting sound working
You'll want the alsa
and alsa-utils
packages.
I managed to compile Pure Data and output a basic test tone. I went into the src
folder of Pd and issued make -f makefile.gnu
to build it from the source after checking it out from git.
GPIO access
I managed to interface with the Raspberry Pi GPIO by installing node
and then using the onoff
package installed via npm
. Lots of dev packages were required for a successful build (compiletc
probably covers most of them). Each time npm threw an error I looked at what the error message was to determine which package to install next until it built successfully.
I managed to get an LED to blink on pin 16 with this code:
var Gpio = require('onoff').Gpio;
led = new Gpio(16, 'out');
led.writeSync(1);
c = 0
setInterval(function() { led.writeSync(Number(c = !c)); }, 1000);
I had to run node
as root to get access to the GPIO.
Philosophical waxing
GNU/Linux has now been subsumed into the technological substrates of the world. It is found in most phones, servers and appliances that people interact with every day. There are probably 10 copies of Linux running in the median developed-world household. It has become infrastructure, like roads and wires and water pipes.
I don't see that many young people at GNU/Linux meetups these days. I don't think we GNU/Linux nerds are required by the world in the same way that we were before when it was sparkly and new.
It's exciting for me to find Tiny Core Linux which has re-ignited the spark of enthusiasm for this technology.