<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://planb.nicecupoftea.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://planb.nicecupoftea.org/" rel="alternate" type="text/html" /><updated>2025-12-02T14:06:02+00:00</updated><id>https://planb.nicecupoftea.org/feed.xml</id><title type="html">Plan B - Libby Miller’s blog</title><subtitle>Technical experiments and writeups by a creative technologist. Powered by Tea.</subtitle><entry><title type="html">Makevember 2025</title><link href="https://planb.nicecupoftea.org/2025/12/01/makevember.html" rel="alternate" type="text/html" title="Makevember 2025" /><published>2025-12-01T00:00:00+00:00</published><updated>2025-12-01T00:00:00+00:00</updated><id>https://planb.nicecupoftea.org/2025/12/01/makevember</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/12/01/makevember.html"><![CDATA[<p>As usual, I did <a href="https://planb.nicecupoftea.org/2025/05/14/mayke/">Makevember</a> this year - you make a 
thing a day in November and share it, and after some playing around I settled on a bit of a plan: a music camera.</p>

<p>I’ve been making <a href="2025-09-03-accounts-music.md">musical visualisations based on data</a> (mostly Cube 
Accounts data, but also some other datasets) - the challenge being to take some fixed points and change things 
like speed, synth type, key to make them sound niceish, and then make something representative appear on-screen. I 
settled on clientside Javascript for this after some experiments with Python - you can see a bunch of the better 
results in the blog post above. The challenge is that making small changes is time consuming, and I never 
really get into the flow of making the thing sound and look good because I have to keep stopping and changing the 
code.</p>

<p>I’ve had a visual tool in mind for a while and Makevember was an opportunity to take some steps towards it.</p>

<p>The idea is to take some suitable parameters and add and remove them to change the musical character of a fixed 
set of notes. The fixed set is a printout of some data as little squares spread out on an A4 sheet. This is 
calibrated to fit roughly in a square in the centre of the paper and be printable at A4 at 72dpi.</p>

<p><img src="/assets/2025/12/squares.png" /></p>

<p>I then use a Raspberry Pi camera to read the little squares and translate them to midi notes based on a key. This 
is all based on pixels….round tripping is a bit approximate and untested, but it’s more or less right.</p>

<p>Then I add lego bricks of different colours to change the parameters - in this case the defaults are slow tempo, 
beepy synth and key of C, and adding various coloured bricks flips that to a fast tempo, crunchy synth and key of 
C#.</p>

<p><img src="/assets/2025/12/bricks.jpg" /></p>

<p>I’m not sure if it conceptually quite works, but I quite like where it’s gone. It’s inspired by <a href="https://github.com/jarkman/WhiteboardTechno">WhiteboardTechno</a> by Richard and <a href="https://mewo2.com/2024/09/16/">this work by Martin</a>. And in the back of my head is <a href="https://en.wikipedia.org/wiki/Oramics">Oramics</a>, though this is only superficially related.</p>

<p>From a technical perspective I learned a lot, and I like the final noise - but I don’t think there’s enough 
capacity in the variables to make enough of an interesting piece of music - and maybe this is connected with the 
lack of randomness or serendipity in the process. But perhaps it’s a first step.</p>

<p>I used OpenCV in Python to start with and then got frustrated by the lack of simple audio libraries in Python, so moved 
to a headless browser and OpenCV in client side Javascript (with Tone.js for the music). This will make it easier 
to eventually spit out the code for a finished piece, too.</p>

<p>Here’s the result so far (it picks up a bit at the end):</p>
<video controls="" width="500" height="400">
<source src="/assets/2025/12/music-camera.mp4" type="video/mp4" />
</video>

<p>You may well ask - why not use a camera from a laptop instead of a headless browser and Chrome’s dev tools? I had 
in mind an appliance, thinking maybe I can scale it up and down, but still be able to test it on a laptop. Apart 
from a few teething issues, headless Chromium on a Pi 4 works very well (the main problem was that the windowing 
layer now shows a dialogue for you to accept the browser’s use of a camera, which of course doesn’t show up if you 
are using it headlessly; solution was to use it once with a screen to get the permissions remembered - but there’s 
probably another way).</p>

<p><img src="/assets/2025/12/screenshot.png" /></p>

<p>I’ve stashed the code <a href="https://github.com/libbymiller/music-machine">here</a>.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[As usual, I did Makevember this year - you make a thing a day in November and share it, and after some playing around I settled on a bit of a plan: a music camera.]]></summary></entry><entry><title type="html">Accounts Music</title><link href="https://planb.nicecupoftea.org/2025/09/03/accounts-music.html" rel="alternate" type="text/html" title="Accounts Music" /><published>2025-09-03T00:00:00+01:00</published><updated>2025-09-03T00:00:00+01:00</updated><id>https://planb.nicecupoftea.org/2025/09/03/accounts-music</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/09/03/accounts-music.html"><![CDATA[# Accounts Music

I've been making various pieces of data into music and visualisations this year and last. This is a 
post to bring them together in one place. The first was accounts data from the Cube (here's a <a href="https://planb.nicecupoftea.org/2024/10/17/commandline-sonic-pi-for-real-time-bar-expenditure-music/">previous post on the topic</a>).

(Can Jekyll do iframes? let's see)

Click on the iframe with sound up to hear it (click again to stop it).
Overall, where the data is less complex I've added more musical trills. These are all in the key of C.


# Cube end of year accounts

Each blob is a week, with the number of sides to the blobs representing the number of events, and the 
colour of the blob representing the type of event that brought in the most money that week. The colour 
of the background represents the season.

<iframe src="https://dev.nicecupoftea.org/2025/05/cubemusic/eoy12_counterpoint.html" title="Cube End of Year accounts" height="400" width="700" ></iframe>


# Radar charity participant data

A friend asked me to look at data from the charity they work with. This one is about participation over 
time, month by month over multiple years. The number of side to the blobs are the number of hospitals 
involved in recruitment and the size and colour is related to the number of participants. You can 
clearly see the impact of Covid.

<iframe src="https://dev.nicecupoftea.org/2025/05/radarmusic/radar_v5.html" title="Radar participation" height="400" width="700" ></iframe>


# Cybernetics society end of year accounts


A another friend asked me to have a go with this accounts data. This was the final version with loud crunchy 
synths, which are my favourite.  As with the Cube Accounts, it's only income, not expenditure!

<iframe src="https://dev.nicecupoftea.org/2025/05/new_test/cybernetics_loops_yhbw.html" title="Cybernetics Societyof Year accounts" height="400" width="700" ></iframe>


# Bonus Cube Accounts from Dec 2024

This one is more interesting as it's a collaboration with the talented Mr Hopkinson and so it is funny 
(it's the one we last showed there as a trailer). A video this time, based on the same code but 
enhanced.

<video controls width="500" height="400">
<source src="/assets/2025/09/accounts_music_dec_20250312.mp4" type="video/mp4">
</video>]]></content><author><name></name></author><summary type="html"><![CDATA[Accounts Music]]></summary></entry><entry><title type="html">Bat detecting with an iPhone</title><link href="https://planb.nicecupoftea.org/2025/07/18/bat_detecting-iphone.html" rel="alternate" type="text/html" title="Bat detecting with an iPhone" /><published>2025-07-18T00:00:00+01:00</published><updated>2025-07-18T00:00:00+01:00</updated><id>https://planb.nicecupoftea.org/2025/07/18/bat_detecting-iphone</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/07/18/bat_detecting-iphone.html"><![CDATA[# Bat detecting with an iPhone

I've been using an <a href="https://www.openacousticdevices.info/audiomoth">Audiomoth</a> as a USB microphone to do some <a href="https://planb.nicecupoftea.org/2025/06/13/acoupi-batdetect2-with-a-raspberry-pi-4-and-audiomoth-mic/">bat 
detection and classification experiments with a Raspberry Pi</a> as well as some tests with using 
it as a passive recording device coupled with classifiying the data on my laptop using <a href="https://github.com/macaodha/batdetect2">batdetect2</a> 
and / or cross checking with the <a href="https://www.bto.org/our-work/science/research-areas/acoustic-monitoring">BTO Acoustic Pipeline</a> (which does bats and birds). All lots of 
fun.

The Audiomoth is not itself particularly expensive (and is open hardware) but there don't seem to 
be any redistributors in the UK, which makes postage rather expensive (it's delivered from 
Germany). Someone pointed me at the <a href="https://www.pippyg.com/">Pippyg</a> as an alternative, and so I bought one for £65 from <a href="https://www.wildlifeservices.uk/product-page/apodemus-pippyg">Wildlife Services</a> (who were incredibly fast; you can also get it from <a href="https://www.pippyg.com/pippyg-faq.html">other places</a> in the UK but it was out of stock when I looked. You can also build your own).

Somewhere on the web I found an example of the Pippyg working as a USB mic with an iPhone, with 
an app that changes the sound to human-audible and all that good stuff. And last night I got it 
working - and what a very lovely thing it is. Here are some quick notes as there were a few 
little gotyas I ran into. Unfortunately it doesn't work on Android.

# Setup

The version of the Pippyg (black rather than green) I got didn't come with any software on it and 
doesn't have a button for flashing. Instead you need to touch the two pins marked 'flash' 
together, and then **while doing this** plug it into your computer. This is all in the <a href="https://www.pippyg.com/how-to-use-pippyg.html">video on the PippiG site</a>, which is worth watching, but I missed this detail first time round, partly 
because I thought it _had_ been flashed already because the microphone light was responding to 
sounds. The firmware is <a href="https://drive.google.com/file/d/1VDPolLIpp_5VUmLXxC4j5pgVWezXk8S-/view">here</a>. This guide is <a href="https://shop.smithrobotics.co.uk/howtoguide">also useful</a>.

<figure>
<img src="{{site.baseurl}}/assets/2025/07/pippyg_and_iphone.jpeg" alt="iphone connected to a pippyg bat mic sitting on a scruffy looking leather sofa. The iphone has an app for detecting bats on it"/>
    <figcaption>Photo by Damian</figcaption>
</figure>

Once it's showing up as a drive (it's based on a Pi Pico) you can drag the USB mic firmware onto 
the drive and it'll just work (I tested it by using it as a USB mic for my laptop, Damian's smart 
idea). The firmware is <a href="https://drive.google.com/file/d/1VDPolLIpp_5VUmLXxC4j5pgVWezXk8S-/view">here</a>, and is confusingly named 'Pippistrelle*' even though that's another 
product in the same line.

To make it work on an iPhone you need an OTG connector as well as micro USB to USB data cable. I 
happened to have one but I've <a href="https://www.ebay.co.uk/sch/i.html?_nkw=lightning+otg+adapter">ebayed a few cheaper ones</a> to see if they work too.

The iPhone app is <a href="https://apps.apple.com/gb/app/bat-detector/id6504186190">this one, "Bat Detector"</a>, whch will tell you if the mic is not configured (my iPhone at first - 
before I'm flashed the device - complained about unsupported device 'pico' taking too much 
power).

# This is lovely

...hearing our pippstrelles :-)

<img src="{{site.baseurl}}/assets/2025/07/batdetected.png" alt="A screenshot from Bat Detect app showing heteordyne and time expansion selected and a series of green and yellow lines and it says Frequency 57.1khz"/>


# Next things

So I guess the audiomoth can probably work like this too? And I suppose there are iPhone apps 
which do classification, not looked yet. But you can more or less tell what sort of bat you have 
just by the <a href="https://media.nhbs.com/equipment/British%20Bat%20Frequencies.pdf">frequency</a> - or do some recordings using the app (they show up in files, search for 
'bat') and process them on a laptop or send off to the BTO acoustic pipeline, which is a 
fantastic resource and free if you make the data public.]]></content><author><name></name></author><summary type="html"><![CDATA[Bat detecting with an iPhone]]></summary></entry><entry><title type="html">Acoupi batdetect2 with a Raspberry pi 4 and Audiomoth mic</title><link href="https://planb.nicecupoftea.org/2025/06/13/acoupi-batdetect2-with-a-raspberry-pi-4-and-audiomoth-mic/" rel="alternate" type="text/html" title="Acoupi batdetect2 with a Raspberry pi 4 and Audiomoth mic" /><published>2025-06-13T00:45:04+01:00</published><updated>2025-06-13T00:45:04+01:00</updated><id>https://planb.nicecupoftea.org/2025/06/13/acoupi-batdetect2-with-a-raspberry-pi-4-and-audiomoth-mic</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/06/13/acoupi-batdetect2-with-a-raspberry-pi-4-and-audiomoth-mic/"><![CDATA[<p>As part of <a href="https://planb.nicecupoftea.org/2025/05/14/mayke/">#mayke</a> I made up a portable bat classifier using a Pi4, <a href="https://github.com/acoupi/acoupi">Acoupi</a> and an <a href="https://www.labmaker.org/collections/earth-and-ecology/products/audiomoth-v1-2-0">audiomoth mic</a>.<br>The idea eventually is to hook it up to <a href="https://planb.nicecupoftea.org/2025/04/29/a-lora-lora-faff/">LoRaWAN</a> so we can see detections remotely. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3892,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/06/batnet-1.jpg"><img src="{{site.baseurl}}/assets/2025/06/batnet-1.jpg?w=768" alt="" class="wp-image-3892"></a><br />
<figcaption class="wp-element-caption">My cardboard birdnet version of the setup</figcaption>
</figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>I got a load of useful hints from <a href="https://ecoevo.social/@sarahdalgulls">Sarah on Mastodon</a> (thank you!)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Acoupi is a framework for classifiers running on-device - it can use birdnet or batnet machine learning models, maybe others? The <a href="https://github.com/acoupi/acoupi">docs</a> are pretty good but I want to preserve a few more details for my setup.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I started with bookworm 64bit lite installed using the Raspberry Pi imager. I set up my audiomoth using <a href="https://www.openacousticdevices.info/usb-microphone">these instructions </a>and attached it to the Pi via USB. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Install uv</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>curl -LsSf https://astral.sh/uv/install.sh | sh</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Then, install acoupi -</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>curl -sSL https://github.com/acoupi/acoupi/raw/main/scripts/setup.sh | bash</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Install pip3</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sudo apt install python3-pip</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Install acoupi-batdetect</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>pip3 install acoupi_batdetect2</code> <code>--break-system-packages</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Acoupi can send detections to an MQTT server. I want to run that server on the device itself because I want it to be self-contained and it's an easy way to get at the data.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So, install mosquitto</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sudo apt install mosquitto mosquitto-clients</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>check it's running:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>ps ax | grep mos </code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>4032       Ss     0:00 /usr/sbin/<strong>mos</strong>quitto -c /etc/<strong>mos</strong>quitto/<strong>mos</strong>quitto.conf</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>A handy little pair of commands to check mqtt is working are - </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>mosquitto_pub -h localhost -p 1883 -m 'hello' -t 'acoupi'   <br>mosquitto_sub -v -h localhost -p 1883 -t '#'</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Set up acoupi-batdetect2 - </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>acoupi setup --program acoupi_batdetect2.program</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Here are my answers. Note that it can take 15-30 secs to process a 3 second file sometimes, so <a href="https://github.com/acoupi/acoupi/issues/80">if you record every 10 seconds they will build up</a>. 20 seconds seems ok.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code><code>Collecting program files. It will take a minute or so, be patient...
Would you like to set <strong>timezone</strong>=<strong>'Europe/London'</strong>? [Y/n]: 
[at this point the pi farts out a load of stuff about missing audio things]
<strong>Available audio devices:</strong>
Index  Name                                    Channels  Sample Rate
<strong>[ 1]   </strong>384kHz AudioMoth USB Microphone         1         384000.0  
Select an audio device index (1): 1
<strong>Info of selected audio device:</strong>
index                = 1
name                 = 384kHz AudioMoth USB Microphone
max channels         = 1
default sample rate  = 384000.0
Select the number of audio channels (1) [1]: 1
Select the samplerate. The default samplerate is recommended but your device might support other sampling rates. [384000.0]: 
Would you like to set <strong>recording</strong>? [y/N]: y
Would you like to set <strong>recording.duration</strong>=<strong>3</strong>? [Y/n]: 
Would you like to set <strong>recording.interval</strong>=<strong>20</strong>? [Y/n]: 
Would you like to set <strong>recording.schedule_start</strong>=<strong>datetime.time(19, 0)</strong>? [Y/n]: 
Would you like to set <strong>recording.schedule_end</strong>=<strong>datetime.time(7, 0)</strong>? [Y/n]: 
Would you like to set <strong>paths</strong>? [y/N]: y
Would you like to set <strong>paths.tmp_audio</strong>=<strong>PosixPath('/run/shm')</strong>? [Y/n]: 
Would you like to set <strong>paths.recordings</strong>=<strong>PosixPath('/home/pi/storages/recordings')</strong>? [Y/n]: 
Would you like to set <strong>paths.db_metadata</strong>=<strong>PosixPath('/home/pi/storages/metadata.db')</strong>? [Y/n]: 
Would you like to set <strong>messaging.messages_db</strong>=<strong>PosixPath('/home/pi/storages/messages.db')</strong>? [Y/n]: 
Would you like to set <strong>messaging.message_send_interval</strong>=<strong>120</strong>? [Y/n]: 
Would you like to set <strong>messaging.heartbeat_interval</strong>=<strong>3600</strong>? [Y/n]: 
Would you like to set <strong>http</strong>? [y/N]: 
Would you like to set <strong>mqtt</strong>? [y/N]: y
Please provide a value for <strong>messaging.mqtt.host</strong>.: localhost
Please provide a value for <strong>messaging.mqtt.username</strong>.: none
Please provide a value for <strong>messaging.mqtt.password</strong>.: none
Would you like to set <strong>messaging.mqtt.topic</strong>=<strong>'acoupi'</strong>? [Y/n]: 
Would you like to set <strong>messaging.mqtt.port</strong>=<strong>1884</strong>? [Y/n]: n
Please provide a value for <strong>messaging.mqtt.port</strong>. [1884]: 1883
Would you like to set <strong>messaging.mqtt.timeout</strong>=<strong>5</strong>? [Y/n]: 
Would you like to set <strong>detections</strong>? [y/N]: y
Would you like to set <strong>detections.threshold</strong>=<strong>0.2</strong>? [Y/n]: 
Would you like to set <strong>model</strong>? [y/N]: Y
Would you like to set <strong>model.detection_threshold</strong>=<strong>0.4</strong>? [Y/n]: 
Would you like to set <strong>saving_filters</strong>? [y/N]: 
Would you like to set <strong>saving_managers</strong>? [y/N]: 
Would you like to set <strong>summariser_config</strong>? [y/N]:</code></code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p>(Note that it won't accept blank/no username / password for the mosquitto server. I edited the file after as I'm being lazy and not configuring mosquitto except for defaults - that explains 1883 vs 1884 as the port too.)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So after the 'none' mqtt u/p edit my config is now</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>cat ~/.acoupi/config/program.json </code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code><code>{
  "timezone": "Europe/London",
  "microphone": {
    "device_name": "384kHz AudioMoth USB Microphone",
    "samplerate": 384000,
   "audio_channels": 1
 },
 "recording": {
   "duration": 3,
   "interval": 20,
   "chunksize": 8192,
   "schedule_start": "19:00:00",
   "schedule_end": "07:00:00"
 },
 "paths": {
 </code> <code>"tmp_audio": "/run/shm",
   "recordings": "/home/pi/storages/recordings",
   "db_metadata": "/home/pi/storages/metadata.db"
 },
 "messaging": {
   "messages_db": "/home/pi/storages/messages.db",
   "message_send_interval": 120,
   "heartbeat_interval": 3600,
   "http": null,
   "mqtt": {
     "host": "localhost",
     "username": "",
     "password": "",
     "topic": "acoupi",
     "port": 1883,
     "timeout": 5
  }
 },
 "detections": {
   "threshold": 0.4
 },
 "model": {
   "detection_threshold": 0.6
 },
 "saving_filters": {
   "starttime": "19:00:00",
 </code> <code> "endtime": "07:00:00",
  "before_dawndusk_duration": 0,
  "after_dawndusk_duration": 0,
  "frequency_duration": 0,
  "frequency_interval": 0,
  "saving_threshold": 0.3
 },
 "saving_managers": {
  "true_dir": "bats",
  "false_dir": "no_bats",
  "timeformat": "%Y%m%d_%H%M%S",
  "bat_threshold": 0.5
 },
 "summariser_config": {
  "interval": 3600,
  "low_band_threshold": 0,
  "mid_band_threshold": 0,
  "high_band_threshold": 0
 }
}</code></code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p>At that point you could do a test by setting it up like this (with your gps coordinates):</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>acoupi deployment start</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>Enter the name of the deployment: bats<br>Enter the latitude of the deployment: 51.45<br>Enter the longitude of the deployment: -2.59</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>and then doing this:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>mosquitto_sub -v -h localhost -p 1883 -t '#'</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>to see the bat data come in, maybe also with</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>tail -f ~/.acoupi/log/*</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The deployment will restart when you restart the device.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Of course proving that any of this is detecting real things is a bit tricky, particularly for bats. I tried installing <a href="https://github.com/acoupi/acoupi_birdnet">acoupi-birdnet</a> as at least I could hear what it was recording. It was all pretty similar to install and seemed to work well (although interestingly it includes gunshots, human speech, wolves, power tools and dogs as well as birds, and it seems very certain about some of those, and there are no wolves or gunshots round here). <br><br>With batnet I also managed to see (with my eyes) and detect (with the classifier) a Pipistrelle, and had a play with changing the audio recording so I could hear it, like this:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sox 20250528_214125.wav 20250528_214125_warp2.wav pitch -6000</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>(from <a href="https://stackoverflow.com/questions/73073166/how-to-warp-shift-a-pitch-so-i-can-hear-a-bat">here</a>), and making a spectrogram</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sox 20250528_214125.wav -n rate 384.0k spectrogram -l -m -X 160 -z 95 -Z 0 -r -Y 257 -o spectro.png</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3887,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/06/4915948be13ff8d7.png"><img src="{{site.baseurl}}/assets/2025/06/4915948be13ff8d7.png?w=480" alt="" class="wp-image-3887"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>A participant in a <a href="https://hachyderm.io/@ncmreynolds/114652729580691234">planned hack in this area</a> suggested running the audio though <a href="https://www.bto.org/our-work/science/research-areas/acoustic-monitoring">this bioacoustic pipeline</a> to test it. Comments<a href="https://github.com/acoupi/acoupi/issues/74"> in this thread </a>were really helpful on the mysterious Nyctalus I kept finding (<a href="https://www.biorxiv.org/content/10.1101/2022.12.14.520490v1">preprint article</a>).</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>As well as getting the data out I want to additionally display it on a little screen I have, <a href="https://shop.pimoroni.com/products/display-hat-mini?variant=39496084717651">displayHatMini</a>. So - </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>pip3 install displayhatmini --break-system-packages</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>enable spi:<br><code>sudo raspi-config nonint do_spi 0</code> <br><code>cat mqtt_display.py</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>#!/usr/bin/env python3
import time
import paho.mqtt.client as mqtt
from paho.mqtt.client import CallbackAPIVersion
import random
from displayhatmini import DisplayHATMini
import json

try:
    from PIL import Image, ImageDraw, ImageFont
except ImportError:
  print("""This example requires PIL/Pillow, try:
sudo apt install python3-pil
""")

width = DisplayHATMini.WIDTH
height = DisplayHATMini.HEIGHT
buffer = Image.new("RGB", (width, height))
draw = ImageDraw.Draw(buffer)
displayhatmini = DisplayHATMini(buffer)

draw.rectangle((0, 0, width, height), (0, 0, 0))
displayhatmini.display()


def text(draw, text, position, size, color):
    #fnt = ImageFont.load_default()
    fnt = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 28, encoding="unic")
    draw.text(position, text, font=fnt, fill=color)

client = mqtt.Client(CallbackAPIVersion.VERSION2,
                     client_id="test-client")

def on_connect(client, userdata, flags, reason_code, properties):
  print(f"Connected: reason_code={reason_code}, properties={properties}")
  client.subscribe("acoupi", qos=1)

"""
data is like this {'tag': {'key': 'species', 'value': 'Pipistrellus pipistrellus'}, 'confidence_score': 0.526}
"""

def on_message(client, userdata, msg):
  print(f"{msg.topic}: {msg.payload.decode()}")
  draw.rectangle((0, 0, width, height), (0, 0, 0))
  displayhatmini.display()
  x = msg.payload.decode()
  y = json.loads(x)
  if(y["detections"]):
    species = y["detections"][0]["tags"][0]["tag"]["value"]
    score = y["detections"][0]["tags"][0]["confidence_score"]
    dt = y["recording"]["created_on"]
    print("species",species)

    text(draw, species, (25, 25), 15, (255, 255, 255))
    text(draw, str(score), (25, 100), 15, (255, 255, 255))
    text(draw, str(dt), (25, 175), 15, (255, 255, 255))
    displayhatmini.display()

client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost",
               port=1883,
               keepalive=60)
client.loop_forever()</code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p>For completeness</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>cat display.service</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>[Unit]
Description=display

[Service]
Type=simple
WorkingDirectory=/home/pi/
ExecStart=/usr/bin/python3 mqtt_display.py
Restart=on-failure
StandardOutput=syslog
SyslogIdentifier=display
Type=idle
User=pi

[Install]
WantedBy=multi-user.target</code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p><code>sudo cp display.service /etc/systemd/system/<br>sudo systemctl enable display.service <br>sudo systemctl start display.service <br>sudo systemctl status display.service</code> </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Even more for completeness - I find that sometimes if I get a power failure or for other undetermined reasons the message.db and metadata.db seems to lose data or maybe get corrupted. So here's a tiny python script to log it all as well.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>import paho.mqtt.client as mqtt #import the client1
import time
import json
import traceback

def on_message(client, userdata, message):
    decoded_message=str(message.payload.decode("utf-8"))
    msg=json.loads(decoded_message)
    print("message received " ,decoded_message)
    print("message topic=",message.topic)
    try:
      with open("message_log.txt", "a") as myfile:
         myfile.write(decoded_message)
         myfile.write('\n')
    except Exception as e: 
      print(e)
      print("Exception")
      traceback.print_exc()

broker_address="127.0.0.1"

print("creating new instance")
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, "P1") 

client.on_message=on_message #attach function to callback
print("connecting to broker")
client.connect(broker_address) #connect to broker
print("Subscribing to topic","acoupi")
client.subscribe("acoupi")

client.loop_forever()</code></pre>]]></content><author><name></name></author><category term="bats" /><category term="raspberry-pi" /><summary type="html"><![CDATA[As part of #mayke I made up a portable bat classifier using a Pi4, Acoupi and an audiomoth mic.The idea eventually is to hook it up to LoRaWAN so we can see detections remotely. My cardboard birdnet version of the setup I got a load of useful hints from Sarah on Mastodon (thank you!) Acoupi is a framework for classifiers running on-device - it can use birdnet or batnet machine learning models, maybe others? The docs are pretty good but I want to preserve a few more details for my setup. I started with bookworm 64bit lite installed using the Raspberry Pi imager. I set up my audiomoth using these instructions and attached it to the Pi via USB. Install uv curl -LsSf https://astral.sh/uv/install.sh | sh Then, install acoupi - curl -sSL https://github.com/acoupi/acoupi/raw/main/scripts/setup.sh | bash Install pip3 sudo apt install python3-pip Install acoupi-batdetect pip3 install acoupi_batdetect2 --break-system-packages Acoupi can send detections to an MQTT server. I want to run that server on the device itself because I want it to be self-contained and it's an easy way to get at the data. So, install mosquitto sudo apt install mosquitto mosquitto-clients check it's running: ps ax | grep mos 4032       Ss     0:00 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf A handy little pair of commands to check mqtt is working are - mosquitto_pub -h localhost -p 1883 -m 'hello' -t 'acoupi'   mosquitto_sub -v -h localhost -p 1883 -t '#' Set up acoupi-batdetect2 - acoupi setup --program acoupi_batdetect2.program Here are my answers. Note that it can take 15-30 secs to process a 3 second file sometimes, so if you record every 10 seconds they will build up. 20 seconds seems ok. Collecting program files. It will take a minute or so, be patient... Would you like to set timezone='Europe/London'? [Y/n]:  [at this point the pi farts out a load of stuff about missing audio things] Available audio devices: Index  Name                                    Channels  Sample Rate [ 1]   384kHz AudioMoth USB Microphone         1         384000.0   Select an audio device index (1): 1 Info of selected audio device: index                = 1 name                 = 384kHz AudioMoth USB Microphone max channels         = 1 default sample rate  = 384000.0 Select the number of audio channels (1) [1]: 1 Select the samplerate. The default samplerate is recommended but your device might support other sampling rates. [384000.0]:  Would you like to set recording? [y/N]: y Would you like to set recording.duration=3? [Y/n]:  Would you like to set recording.interval=20? [Y/n]:  Would you like to set recording.schedule_start=datetime.time(19, 0)? [Y/n]:  Would you like to set recording.schedule_end=datetime.time(7, 0)? [Y/n]:  Would you like to set paths? [y/N]: y Would you like to set paths.tmp_audio=PosixPath('/run/shm')? [Y/n]:  Would you like to set paths.recordings=PosixPath('/home/pi/storages/recordings')? [Y/n]:  Would you like to set paths.db_metadata=PosixPath('/home/pi/storages/metadata.db')? [Y/n]:  Would you like to set messaging.messages_db=PosixPath('/home/pi/storages/messages.db')? [Y/n]:  Would you like to set messaging.message_send_interval=120? [Y/n]:  Would you like to set messaging.heartbeat_interval=3600? [Y/n]:  Would you like to set http? [y/N]:  Would you like to set mqtt? [y/N]: y Please provide a value for messaging.mqtt.host.: localhost Please provide a value for messaging.mqtt.username.: none Please provide a value for messaging.mqtt.password.: none Would you like to set messaging.mqtt.topic='acoupi'? [Y/n]:  Would you like to set messaging.mqtt.port=1884? [Y/n]: n Please provide a value for messaging.mqtt.port. [1884]: 1883 Would you like to set messaging.mqtt.timeout=5? [Y/n]:  Would you like to set detections? [y/N]: y Would you like to set detections.threshold=0.2? [Y/n]:  Would you like to set model? [y/N]: Y Would you like to set model.detection_threshold=0.4? [Y/n]:  Would you like to set saving_filters? [y/N]:  Would you like to set saving_managers? [y/N]:  Would you like to set summariser_config? [y/N]: (Note that it won't accept blank/no username / password for the mosquitto server. I edited the file after as I'm being lazy and not configuring mosquitto except for defaults - that explains 1883 vs 1884 as the port too.) So after the 'none' mqtt u/p edit my config is now cat ~/.acoupi/config/program.json  { "timezone": "Europe/London", "microphone": { "device_name": "384kHz AudioMoth USB Microphone", "samplerate": 384000, "audio_channels": 1 }, "recording": { "duration": 3, "interval": 20, "chunksize": 8192, "schedule_start": "19:00:00", "schedule_end": "07:00:00" }, "paths": { "tmp_audio": "/run/shm", "recordings": "/home/pi/storages/recordings", "db_metadata": "/home/pi/storages/metadata.db" }, "messaging": { "messages_db": "/home/pi/storages/messages.db", "message_send_interval": 120, "heartbeat_interval": 3600, "http": null, "mqtt": { "host": "localhost", "username": "", "password": "", "topic": "acoupi", "port": 1883, "timeout": 5 } }, "detections": { "threshold": 0.4 }, "model": { "detection_threshold": 0.6 }, "saving_filters": { "starttime": "19:00:00", "endtime": "07:00:00", "before_dawndusk_duration": 0, "after_dawndusk_duration": 0, "frequency_duration": 0, "frequency_interval": 0, "saving_threshold": 0.3 }, "saving_managers": { "true_dir": "bats", "false_dir": "no_bats", "timeformat": "%Y%m%d_%H%M%S", "bat_threshold": 0.5 }, "summariser_config": { "interval": 3600, "low_band_threshold": 0, "mid_band_threshold": 0, "high_band_threshold": 0 } } At that point you could do a test by setting it up like this (with your gps coordinates): acoupi deployment start Enter the name of the deployment: batsEnter the latitude of the deployment: 51.45Enter the longitude of the deployment: -2.59 and then doing this: mosquitto_sub -v -h localhost -p 1883 -t '#' to see the bat data come in, maybe also with tail -f ~/.acoupi/log/* The deployment will restart when you restart the device. Of course proving that any of this is detecting real things is a bit tricky, particularly for bats. I tried installing acoupi-birdnet as at least I could hear what it was recording. It was all pretty similar to install and seemed to work well (although interestingly it includes gunshots, human speech, wolves, power tools and dogs as well as birds, and it seems very certain about some of those, and there are no wolves or gunshots round here). With batnet I also managed to see (with my eyes) and detect (with the classifier) a Pipistrelle, and had a play with changing the audio recording so I could hear it, like this: sox 20250528_214125.wav 20250528_214125_warp2.wav pitch -6000 (from here), and making a spectrogram sox 20250528_214125.wav -n rate 384.0k spectrogram -l -m -X 160 -z 95 -Z 0 -r -Y 257 -o spectro.png A participant in a planned hack in this area suggested running the audio though this bioacoustic pipeline to test it. Comments in this thread were really helpful on the mysterious Nyctalus I kept finding (preprint article). As well as getting the data out I want to additionally display it on a little screen I have, displayHatMini. So - pip3 install displayhatmini --break-system-packages enable spi:sudo raspi-config nonint do_spi 0 cat mqtt_display.py #!/usr/bin/env python3 import time import paho.mqtt.client as mqtt from paho.mqtt.client import CallbackAPIVersion import random from displayhatmini import DisplayHATMini import json]]></summary></entry><entry><title type="html">#mayke</title><link href="https://planb.nicecupoftea.org/2025/05/14/mayke/" rel="alternate" type="text/html" title="#mayke" /><published>2025-05-14T11:55:40+01:00</published><updated>2025-05-14T11:55:40+01:00</updated><id>https://planb.nicecupoftea.org/2025/05/14/mayke</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/05/14/mayke/"><![CDATA[<!-- wp:paragraph -->
<p>Yesterday I gave a 5 min talk at <a href="https://dorkbotbristol.org">Dorkbot Bristol</a> "#mayke special" about what Mayke is, and a little bit about why we've been doing it. Here's a slightly expanded version.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>Ma(y)ke Manifesto
------------------------------
Grasp the means of production
 and
Make something, big or tiny, every day in May
unless
 You want to slack off for the day.
There is no fayle, only mayke</code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p>A few of us are doing #mayke this year, sharing on <a href="https://mastodon.me.uk/tags/mayke">mastodon</a> and discord (because of the "slack off" clause, you absolutely can start now even though we're nearly half way through May. Join us!)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I think I invented mayke? maybe? I had a sudden doubt as I said it yesterday - I definitely remember talking to <a href="http://www.jarkman.co.uk">Richard</a> about it - but in any case it has a lot of history and precedent so "inventing" is rather a strong word.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Jason Marc Taylor's year long project</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Sometime in 2017 I came across Jason's site somehow and just thought - what an amazing idea! <a href="https://www.rejason.com/">Jason</a> made a thing <a href="https://everydayobject.wordpress.com/tag/everyday-objects/">every day for an entire year</a>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p>
<!-- wp:paragraph --></p>
<p><em>"So it's a silly idea but a challenge for me to make an object a day for the whole of 2012…. I'm going to try and transform everyday objects in someway (cause that's what I do) then post the results, I'm not saying they will be any good but hopefully they will spark my imagination in some way…so as I write this there is one day left. Enjoy 2012, make it great!"</em></p>
<p><!-- /wp:paragraph -->
</p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:image {"width":"270px","height":"auto","align":"center"} --></p>
<figure class="wp-block-image aligncenter is-resized"><img src="{{site.baseurl}}/assets/2025/05/spinge.png" alt="" style="width:270px;height:auto"><br />
<figcaption class="wp-element-caption">"Spinge" by Jason Marc Taylor</figcaption>
</figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>His things are lovely, funny things made of household objects. I thought it was a great idea and so for a few months in 2017 I had a go at making a thing a day and putting it on tumblr (I've since rescued it from tumblr and put them <a href="https://mayke.nicecupoftea.org/oldmayke/">here</a>). My job at the time didn't feel very creative so that was part of why I wanted to do it then. Quite a few of the things I made were a bit shit, but I was making lots of things and some I was quite proud of.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:gallery {"linkTo":"file"} --></p>
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":3832,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/166582298572_0-1.jpg"><img src="{{site.baseurl}}/assets/2025/05/166582298572_0-1.jpg?w=768" alt="" class="wp-image-3832"></a><br />
<figcaption class="wp-element-caption">A flying machine</figcaption>
</figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3833,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/screenshot-2025-05-14-at-11.09.07-1.png"><img src="{{site.baseurl}}/assets/2025/05/screenshot-2025-05-14-at-11.09.07-1.png?w=988" alt="" class="wp-image-3833"></a><br />
<figcaption class="wp-element-caption">Croc nest</figcaption>
</figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3834,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/screenshot-2025-05-14-at-11.09.20-2.png"><img src="{{site.baseurl}}/assets/2025/05/screenshot-2025-05-14-at-11.09.20-2.png?w=789" alt="" class="wp-image-3834"></a><br />
<figcaption class="wp-element-caption">Croc walker</figcaption>
</figure>
<p><!-- /wp:image --></figure>
<p><!-- /wp:gallery --></p>
<p><!-- wp:paragraph --></p>
<p>This time coincided with me spending a lot of time at <a href="https://bristolhackspace.org">Bristol Hackspace</a>. When I was stuck, there were people to help and lots of bits and pieces to make things with, and the general spirit of "half a thing is ok".</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>#makevember</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>In 2018 there was #makevember. Dominic Morrow's <a href="https://chickengrylls.wordpress.com/2017/10/31/the-makevember-manifesto/">idea</a>, inspired by Inktober and much more fun than doing it alone. We all talked about it on twitter when twitter was fun. <a href="https://www.airgiants.co.uk/about-us.html">Robert</a> made a bot that retweeted #makevember and so we actually saw each others' work.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Dominic thought very carefully about what #makevember was, and how to balance the momentum of doing it every day with the pressure of having to do it every day:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:group {"layout":{"type":"constrained"}} --></p>
<div class="wp-block-group">
<!-- wp:group {"layout":{"type":"flex","orientation":"vertical"}} --></p>
<div class="wp-block-group">
<!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p>
<!-- wp:paragraph --></p>
<p><strong>"Every day in November make a thing – </strong>if you can’t do it every day then do what you can, but the idea is to push yourself to work daily and with less procrastination. Do not attempt to put your ducks in a row first. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list">
<!-- wp:list-item --></p>
<li>
<strong>Try to make something extra –</strong> art, craft, code, robots, video… anything…( but not your lunch or a mess or something you’d normally make anyway) something different with methods and materials that you don’t often try. #makevemeber is not for promoting your ETSY or tindie page or your everyday work #makevember stuff shouldn’t be FOR SALE. Make something different.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<strong>Don’t take more than a day to make it</strong> <strong>– </strong>if you only have 5 minutes that’s enough</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<strong>Use what you have to hand, limiting your choice makes it easier –</strong> if you only have some mud and a stick, what would you make? Paper and a pen, what would you make? If you only have the stuff in your waste paper basket, what could you make?</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<strong>Do it wherever you find yourself –</strong> working outside your usual space is good. If you find yourself on a train or plane, at the beach or in a hotel… what can you make?</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<strong>Share it online with a photo or video – </strong>Instagram/twitter/facebook whatever, you know what to do #makevember</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<strong>Be kind to yourself –</strong> it is more than okay to share something that is not going to change the world or that is a little bit squiffy or half-formed, even something that didn’t work.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<strong>Done, is good enough – </strong>You’ve been locked in a room you have only what’s in your pockets and in the room and a short time to make something, ask yourself, what would MacGyver do?"</li>
<p><!-- /wp:list-item -->
</ul>
<p><!-- /wp:list -->
</p></blockquote>
<p><!-- /wp:quote -->
</div>
<p><!-- /wp:group -->
</div>
<p><!-- /wp:group --></p>
<p><!-- wp:paragraph --></p>
<p>Unfortunately I don't have very good pictures for this - I'm not on twitter any more, but here's a few I found (check out that lovely <a href="https://wolfcatworkshop.com/wordpress/index.php/portfolio/one-month-small-machines/">automata</a>!)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:gallery {"linkTo":"file"} --></p>
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":3845,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/1.png"><img src="{{site.baseurl}}/assets/2025/05/1.png?w=480" alt="" class="wp-image-3845"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3841,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/2.png"><img src="{{site.baseurl}}/assets/2025/05/2.png?w=512" alt="" class="wp-image-3841"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3846,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/3.png"><img src="{{site.baseurl}}/assets/2025/05/3.png?w=512" alt="" class="wp-image-3846"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3844,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/4.png"><img src="{{site.baseurl}}/assets/2025/05/4.png?w=510" alt="" class="wp-image-3844"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3843,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/5.png"><img src="{{site.baseurl}}/assets/2025/05/5.png?w=512" alt="" class="wp-image-3843"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3842,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/6.png"><img src="{{site.baseurl}}/assets/2025/05/6.png?w=512" alt="" class="wp-image-3842"></a></figure>
<p><!-- /wp:image --></figure>
<p><!-- /wp:gallery --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>#mayke now</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>As I was speaking yesterday I thought - for the first time - but <em>why</em> do it? It seemed such an obvious thing to me to do once it was suggested, I didn't question it. But there are some interesting effects of doing it, if you're thinking about joining in. It depends a bit on your approach.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>My favourite way of doing it is just to see where life takes me, very much the makevember idea, to not think about it too much and just see what I can make with what I have around me. This has a lovely side effect that everything becomes a potential material for making, you kind of see the world differently. <a href="https://mastodon.scot/@ultrazool/114467949913329582">Zool</a> has been using <a href="https://concretedog.blogspot.com/2022/09/unconscious-making-useful-note-board.html">Concretedog's</a> idea of "unconscious making" for this which I <em>love</em>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>But that's quite hard - you really need to be up for it. And I have a lot of unfinished things and things I want to start. So this time I've been doing a few multi-day experiments towards those. Barney did this for makevember one time ("<a href="https://barnoid.org.uk/makevember2018/">Mechanical sequencer</a>") and <a href="https://chaos.social/@oliverchild">Oliver</a> and <a href="https://friend.camp/@mewo2">Martin</a> are doing it now and coming up with some ace stuff (web control of 3D printing in real time and a manga translation device respectively). Mine (so far) are "Spring simulator" and "Cube accounts music (cont.)", documented <a href="https://mayke.nicecupoftea.org">here</a>. The benefit here is to start stuff or finish it, and keep going. Interim steps in public are great with a supportive community.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Another thing you can do is explore something, maybe a technique or technology with no particular aim. Tiff's been inventing "<a href="https://www.instagram.com/reel/DJNAV_sNHia/">shonkoprinting</a>" and <a href="https://chaos.social/@jarkman">Richard</a> often does this kind of experimentation too.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I think it's a way to not procrastinate, to do something, maybe learn something, and keep your creative muscles exercised. Good things I think. Join us! Go on!</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>[later]</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I realised this is related to a book I have been reading, <a href="https://www.oliverburkeman.com/meditationsformortals">Meditation for Mortals by Oliver Burkeman</a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p>
<!-- wp:paragraph --></p>
<p>The answer is: you just do them. You pick something you genuinely care about, and then, for at least a few minutes - a quarter of an hour, say - you do some of it. Today. It really is that simple. </p>
<p><!-- /wp:paragraph -->
</p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:gallery {"linkTo":"file"} --></p>
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":3855,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/img_6514.jpg"><img src="{{site.baseurl}}/assets/2025/05/img_6514.jpg?w=768" alt="" class="wp-image-3855"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":3854,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/05/img_6515.jpg"><img src="{{site.baseurl}}/assets/2025/05/img_6515.jpg?w=768" alt="" class="wp-image-3854"></a></figure>
<p><!-- /wp:image --></figure>
<p><!-- /wp:gallery --><br />]]></content><author><name></name></author><summary type="html"><![CDATA[Yesterday I gave a 5 min talk at Dorkbot Bristol "#mayke special" about what Mayke is, and a little bit about why we've been doing it. Here's a slightly expanded version. Ma(y)ke Manifesto ------------------------------ Grasp the means of production and Make something, big or tiny, every day in May unless You want to slack off for the day. There is no fayle, only mayke A few of us are doing #mayke this year, sharing on mastodon and discord (because of the "slack off" clause, you absolutely can start now even though we're nearly half way through May. Join us!) I think I invented mayke? maybe? I had a sudden doubt as I said it yesterday - I definitely remember talking to Richard about it - but in any case it has a lot of history and precedent so "inventing" is rather a strong word. Jason Marc Taylor's year long project Sometime in 2017 I came across Jason's site somehow and just thought - what an amazing idea! Jason made a thing every day for an entire year. "So it's a silly idea but a challenge for me to make an object a day for the whole of 2012…. I'm going to try and transform everyday objects in someway (cause that's what I do) then post the results, I'm not saying they will be any good but hopefully they will spark my imagination in some way…so as I write this there is one day left. Enjoy 2012, make it great!" "Spinge" by Jason Marc Taylor His things are lovely, funny things made of household objects. I thought it was a great idea and so for a few months in 2017 I had a go at making a thing a day and putting it on tumblr (I've since rescued it from tumblr and put them here). My job at the time didn't feel very creative so that was part of why I wanted to do it then. Quite a few of the things I made were a bit shit, but I was making lots of things and some I was quite proud of. A flying machine Croc nest Croc walker This time coincided with me spending a lot of time at Bristol Hackspace. When I was stuck, there were people to help and lots of bits and pieces to make things with, and the general spirit of "half a thing is ok". #makevember In 2018 there was #makevember. Dominic Morrow's idea, inspired by Inktober and much more fun than doing it alone. We all talked about it on twitter when twitter was fun. Robert made a bot that retweeted #makevember and so we actually saw each others' work. Dominic thought very carefully about what #makevember was, and how to balance the momentum of doing it every day with the pressure of having to do it every day: "Every day in November make a thing – if you can’t do it every day then do what you can, but the idea is to push yourself to work daily and with less procrastination. Do not attempt to put your ducks in a row first.  Try to make something extra – art, craft, code, robots, video… anything…( but not your lunch or a mess or something you’d normally make anyway) something different with methods and materials that you don’t often try. #makevemeber is not for promoting your ETSY or tindie page or your everyday work #makevember stuff shouldn’t be FOR SALE. Make something different. Don’t take more than a day to make it – if you only have 5 minutes that’s enough Use what you have to hand, limiting your choice makes it easier – if you only have some mud and a stick, what would you make? Paper and a pen, what would you make? If you only have the stuff in your waste paper basket, what could you make? Do it wherever you find yourself – working outside your usual space is good. If you find yourself on a train or plane, at the beach or in a hotel… what can you make? Share it online with a photo or video – Instagram/twitter/facebook whatever, you know what to do #makevember Be kind to yourself – it is more than okay to share something that is not going to change the world or that is a little bit squiffy or half-formed, even something that didn’t work. Done, is good enough – You’ve been locked in a room you have only what’s in your pockets and in the room and a short time to make something, ask yourself, what would MacGyver do?" Unfortunately I don't have very good pictures for this - I'm not on twitter any more, but here's a few I found (check out that lovely automata!) #mayke now As I was speaking yesterday I thought - for the first time - but why do it? It seemed such an obvious thing to me to do once it was suggested, I didn't question it. But there are some interesting effects of doing it, if you're thinking about joining in. It depends a bit on your approach. My favourite way of doing it is just to see where life takes me, very much the makevember idea, to not think about it too much and just see what I can make with what I have around me. This has a lovely side effect that everything becomes a potential material for making, you kind of see the world differently. Zool has been using Concretedog's idea of "unconscious making" for this which I love. But that's quite hard - you really need to be up for it. And I have a lot of unfinished things and things I want to start. So this time I've been doing a few multi-day experiments towards those. Barney did this for makevember one time ("Mechanical sequencer") and Oliver and Martin are doing it now and coming up with some ace stuff (web control of 3D printing in real time and a manga translation device respectively). Mine (so far) are "Spring simulator" and "Cube accounts music (cont.)", documented here. The benefit here is to start stuff or finish it, and keep going. Interim steps in public are great with a supportive community. Another thing you can do is explore something, maybe a technique or technology with no particular aim. Tiff's been inventing "shonkoprinting" and Richard often does this kind of experimentation too. I think it's a way to not procrastinate, to do something, maybe learn something, and keep your creative muscles exercised. Good things I think. Join us! Go on! [later] I realised this is related to a book I have been reading, Meditation for Mortals by Oliver Burkeman The answer is: you just do them. You pick something you genuinely care about, and then, for at least a few minutes - a quarter of an hour, say - you do some of it. Today. It really is that simple.]]></summary></entry><entry><title type="html">A LoRa LoRa Faff</title><link href="https://planb.nicecupoftea.org/2025/04/29/a-lora-lora-faff/" rel="alternate" type="text/html" title="A LoRa LoRa Faff" /><published>2025-04-29T10:29:21+01:00</published><updated>2025-04-29T10:29:21+01:00</updated><id>https://planb.nicecupoftea.org/2025/04/29/a-lora-lora-faff</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/04/29/a-lora-lora-faff/"><![CDATA[<!-- wp:paragraph -->
<p>This is a version of a talk I gave at Dorkbot in May 2024. It was pretty funny because it had lots of pictures of Cilla Black, because my brain always says "Lorra lorra" in her voice when I think of LoRa. But I don't know how she would actually feel about it so this is MoRe SeRious.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>At that point I'd just left the BBC, I like puzzles and was looking for interesting mini-projects. I love <a href="https://www.bristolwireless.net">Bristol Wireless</a>' ethos, and love the idea of tiny long distance packets of data, so maybe LoRa(WAN) would be fun? </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>However, I'm a self taught programmer, more comfortable at the Javascript or Python levels of the stack. I rarely RTFM 😬. Maybe bad a idea? -&gt; ⚠️❌</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So the rest of this is - <br>* A little bit about LoRa(WAN) and what it is<br>* The three main faffs I've discovered (so far)<br>* A few ideas of what we could do with it<br>* Links and tips</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This is from the point of view of someone starting out, who found it all a bit tricky but got there in the end. We now have a working gateway up and running in Bedminster 🎉</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Some definitions</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong><em>LoRaWAN</em></strong>: ITU[*]-standardised protocol and network architecture for LoRa <br>[*]International Telecommunications Union</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong><em>LoRa</em></strong>: proprietary radio communication technique for sending a few bytes[*] of data to other similarly equipped devices<br>[*]0.3 kbit/s - 27 kbit/s according to wikipedia</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong><em>The Things Network (TTN)</em></strong>: mechanism to route your bytes anywhere and do something with them</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong><em>Semtech</em></strong>: company that make all the LoRa Radio chips and own the LoRa patent</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Some examples of usage</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong><em>Node to node</em></strong> (device to device) - Usually ESP32 + LoRa radio. The nodes talk to each other directly without intermediary. Meshtastic uses this to pass messages on, but often you'd just be getting a pair to talk to each other. This is reasonably easy to get going.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>+--------+          +--------+
|Node    |&lt;-------&gt; |Node    |      
+--------+          +--------+</code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p><strong><em>Node to Gateway to The Things Network</em></strong> typically ESP32 -&gt; Raspberry Pi hat or dedicated gateway.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong><a href="https://www.thethingsnetwork.org">The Things Network</a></strong>'s main business model seems to be running private LoRaWAN networks for companies. They also provide certified training and a conference. They also run a free, open network of gateways that anyone can add to or use. Here's a <a href="https://ttnmapper.org/heatmap/">map</a> of their gateways.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>In this usage the node talks to the <em>nearest</em> gateway, even if it's not yours, and gets funneled to your part of the Things Network (TTN) where you can retrieve it. On the free tier it's not stored, so you need to get it and do something with it, e.g. via MQTT. This gives you better range but means you are restricted in what you can send and how often by fair use - and you need a library that supports TTN.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>                                        +---+       	 
                 +-------+           	| T |       	 
+--------+       |Gateway|              | T |     +------+
|Node    | ----&gt; |in     + -----------&gt; | N | --&gt; |MQTT  |
+--------+       |range  |           	|   |     |etc   |
                 +-------+ +-------+ 	+---+     +------+
 +--------+                |Gateway|      ^          	 
 |Node    | --------------&gt;|in     + -----+          	 
 +--------+                |range  |                 	 
                           +-------+                  	</code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p>TTN run the servers. These apparently can also be deployed on AWS - and an open source version of the server is available. I've not tried doing that - all my experiments have been via TTN's free tier with their servers.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>The Faffs</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Faff #1: Nodes<br></strong>✅ It's reasonably easy to get device-to-device communication working.<br><strong>✅ </strong>There are quite a few Arduino-IDE-compatible libraries and quite a few devices available<br><strong>But!</strong><br>⚠️ Get the wrong device and you're in a world of pain (Heltec, I'm looking at you)<br><strong>✅  Unless! </strong>You use the <a href="https://github.com/jgromes/RadioLib">RadioLib library</a><br>⚠️ <strong> Although! </strong>the RadioLib library doesn't actually have a simple device-to-device example</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Faff #2: Gateways<br></strong>⚠️The iC880A hat seemed to work but we couldn't see how to debug it or see packets<br>✅ The LR1302 hat worked fine (apart from a few weird bugs in the docs and also the spectral scan doesn't work)<br>⚠️The TTN indoor gateway worked seamlessly but the docs were super-confusing </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Faff #3: TTN<br></strong>The mental model is a little confusing. You can have gateways and applications and these are separate. But the main issue is device setup.<br>All I can say here is:<br>* Find a library that supports LoRaWAN specification 1.1.0<br>* The rest is a world of pain<br>* I have never found a good explanation of what to put for regional parameters / technical specifications </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3802,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/04/screenshot-2025-04-29-at-10.20.54.png"><img src="{{site.baseurl}}/assets/2025/04/screenshot-2025-04-29-at-10.20.54.png?w=1024" alt="" class="wp-image-3802"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>If you are testing, just use all zeros for the EUI. You can also just make the number up, or some devices will generate it for you. Let the site autogenerate all the other numbers. <br>You may be tempted to use v1.0.0 because it has fewer strange numbers to add DO NOT DO THIS.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3804,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/04/screenshot-2025-04-29-at-10.19.37.png"><img src="{{site.baseurl}}/assets/2025/04/screenshot-2025-04-29-at-10.19.37.png?w=1024" alt="" class="wp-image-3804"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Watch out for LSB/MSB (byte order) and hex, uint_32t - RadioLib is clear what you need here, many libraries are not</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3806,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/04/screenshot-2025-04-29-at-10.19.39.png"><img src="{{site.baseurl}}/assets/2025/04/screenshot-2025-04-29-at-10.19.39.png?w=1024" alt="" class="wp-image-3806"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Worth it? </strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Hopefully<br></strong>We could have lots of tiny, low-power devices dotted around Bristol, sending or receiving little pieces of information, all within community control. Like -</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Allotment moisture sensors<br>Bird or animal detectors<br>Docks water quality sensors <br>Bike path usage<br>Twinkly LED installations (maybe)<br>other things?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Tips and links</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Use <a href="https://github.com/jgromes/RadioLib">RadioLib</a> for node devices <br>Use the <a href="https://web.archive.org/web/20231203031513/https://www.elecrow.com/wiki/index.php?title=LR1302_LoRaWAN_Gateway_Module">LR1302</a> hat for a gateway <br>Use LilyGo devices for nodes<br>Use LoRaWAN protocol version 1.1.0</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --><br />]]></content><author><name></name></author><category term="lora" /><category term="lorawan" /><summary type="html"><![CDATA[This is a version of a talk I gave at Dorkbot in May 2024. It was pretty funny because it had lots of pictures of Cilla Black, because my brain always says "Lorra lorra" in her voice when I think of LoRa. But I don't know how she would actually feel about it so this is MoRe SeRious. At that point I'd just left the BBC, I like puzzles and was looking for interesting mini-projects. I love Bristol Wireless' ethos, and love the idea of tiny long distance packets of data, so maybe LoRa(WAN) would be fun? However, I'm a self taught programmer, more comfortable at the Javascript or Python levels of the stack. I rarely RTFM 😬. Maybe bad a idea? -&gt; ⚠️❌ So the rest of this is - * A little bit about LoRa(WAN) and what it is* The three main faffs I've discovered (so far)* A few ideas of what we could do with it* Links and tips This is from the point of view of someone starting out, who found it all a bit tricky but got there in the end. We now have a working gateway up and running in Bedminster 🎉 Some definitions LoRaWAN: ITU[*]-standardised protocol and network architecture for LoRa [*]International Telecommunications Union LoRa: proprietary radio communication technique for sending a few bytes[*] of data to other similarly equipped devices[*]0.3 kbit/s - 27 kbit/s according to wikipedia The Things Network (TTN): mechanism to route your bytes anywhere and do something with them Semtech: company that make all the LoRa Radio chips and own the LoRa patent Some examples of usage Node to node (device to device) - Usually ESP32 + LoRa radio. The nodes talk to each other directly without intermediary. Meshtastic uses this to pass messages on, but often you'd just be getting a pair to talk to each other. This is reasonably easy to get going. +--------+ +--------+ |Node |&lt;-------&gt; |Node | +--------+ +--------+ Node to Gateway to The Things Network typically ESP32 -&gt; Raspberry Pi hat or dedicated gateway. The Things Network's main business model seems to be running private LoRaWAN networks for companies. They also provide certified training and a conference. They also run a free, open network of gateways that anyone can add to or use. Here's a map of their gateways. In this usage the node talks to the nearest gateway, even if it's not yours, and gets funneled to your part of the Things Network (TTN) where you can retrieve it. On the free tier it's not stored, so you need to get it and do something with it, e.g. via MQTT. This gives you better range but means you are restricted in what you can send and how often by fair use - and you need a library that supports TTN. +---+ +-------+ | T | +--------+ |Gateway| | T | +------+ |Node | ----&gt; |in + -----------&gt; | N | --&gt; |MQTT | +--------+ |range | | | |etc | +-------+ +-------+ +---+ +------+ +--------+ |Gateway| ^ |Node | --------------&gt;|in + -----+ +--------+ |range | +-------+ TTN run the servers. These apparently can also be deployed on AWS - and an open source version of the server is available. I've not tried doing that - all my experiments have been via TTN's free tier with their servers. The Faffs Faff #1: Nodes✅ It's reasonably easy to get device-to-device communication working.✅ There are quite a few Arduino-IDE-compatible libraries and quite a few devices availableBut!⚠️ Get the wrong device and you're in a world of pain (Heltec, I'm looking at you)✅  Unless! You use the RadioLib library⚠️  Although! the RadioLib library doesn't actually have a simple device-to-device example Faff #2: Gateways⚠️The iC880A hat seemed to work but we couldn't see how to debug it or see packets✅ The LR1302 hat worked fine (apart from a few weird bugs in the docs and also the spectral scan doesn't work)⚠️The TTN indoor gateway worked seamlessly but the docs were super-confusing  Faff #3: TTNThe mental model is a little confusing. You can have gateways and applications and these are separate. But the main issue is device setup.All I can say here is:* Find a library that supports LoRaWAN specification 1.1.0* The rest is a world of pain* I have never found a good explanation of what to put for regional parameters / technical specifications If you are testing, just use all zeros for the EUI. You can also just make the number up, or some devices will generate it for you. Let the site autogenerate all the other numbers. You may be tempted to use v1.0.0 because it has fewer strange numbers to add DO NOT DO THIS. Watch out for LSB/MSB (byte order) and hex, uint_32t - RadioLib is clear what you need here, many libraries are not Worth it? HopefullyWe could have lots of tiny, low-power devices dotted around Bristol, sending or receiving little pieces of information, all within community control. Like - Allotment moisture sensorsBird or animal detectorsDocks water quality sensors Bike path usageTwinkly LED installations (maybe)other things? Tips and links Use RadioLib for node devices Use the LR1302 hat for a gateway Use LilyGo devices for nodesUse LoRaWAN protocol version 1.1.0]]></summary></entry><entry><title type="html">Rescuing a broken hard drive with ddrescue</title><link href="https://planb.nicecupoftea.org/2025/04/28/rescuing-a-broekn-hard-drive-with-ddrescue/" rel="alternate" type="text/html" title="Rescuing a broken hard drive with ddrescue" /><published>2025-04-28T10:04:30+01:00</published><updated>2025-04-28T10:04:30+01:00</updated><id>https://planb.nicecupoftea.org/2025/04/28/rescuing-a-broekn-hard-drive-with-ddrescue</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/04/28/rescuing-a-broekn-hard-drive-with-ddrescue/"><![CDATA[<!-- wp:paragraph -->
<p>Some quick notes in case I ever have to do it again. A WARNING and REMINDER: this took 7 days for a 2TB disk.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>One of my backup drives died and wouldn't mount. Really I was using it as an archive as I keep running out of disk space. This is probably a bad idea. Anyway I have rescued it.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>My initial thought was using dd but this just kept failing (on unmounted disks; 5 was my new one, 4 the old one, identified using Disk Utility on my mac or <code>diskutil list</code>)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sudo dd bs=4M if=/dev/disk5s2 of=/dev/disk4s1<br>dd: /dev/disk5s2: Input/output error</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>A bit of searching round I found a shit article on <code>ddrescue</code> but that led me to the excellent <a href="https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Important-advice">manual page</a>. The first example on there worked for me as a template ("Example 1: Fully automatic rescue of a whole disc with two ext2 partitions").</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I used <code>brew install ddrescue</code> then</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sudo ddrescue -f -r3 /dev/disk4 /dev/disk5 mapfile</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>[5 passes for <code>Copying non-tried blocks</code>, 2 for <code>Trimming failed blocks</code>, 3 for <code>Retrying bad sectors</code>]</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>rescued:    2000 GB,   bad areas:         14,       run time:  7d  1h 14m</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>then</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>sudo fsck_hfs -fy -l /dev/disk5s2</code></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><code>** The volume LaCie appears to be OK.<br></code>Hooray!</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --><br />]]></content><author><name></name></author><summary type="html"><![CDATA[Some quick notes in case I ever have to do it again. A WARNING and REMINDER: this took 7 days for a 2TB disk. One of my backup drives died and wouldn't mount. Really I was using it as an archive as I keep running out of disk space. This is probably a bad idea. Anyway I have rescued it. My initial thought was using dd but this just kept failing (on unmounted disks; 5 was my new one, 4 the old one, identified using Disk Utility on my mac or diskutil list) sudo dd bs=4M if=/dev/disk5s2 of=/dev/disk4s1dd: /dev/disk5s2: Input/output error A bit of searching round I found a shit article on ddrescue but that led me to the excellent manual page. The first example on there worked for me as a template ("Example 1: Fully automatic rescue of a whole disc with two ext2 partitions"). I used brew install ddrescue then sudo ddrescue -f -r3 /dev/disk4 /dev/disk5 mapfile [5 passes for Copying non-tried blocks, 2 for Trimming failed blocks, 3 for Retrying bad sectors] rescued:    2000 GB,   bad areas:         14,       run time:  7d  1h 14m then sudo fsck_hfs -fy -l /dev/disk5s2 ** The volume LaCie appears to be OK.Hooray!]]></summary></entry><entry><title type="html">Prototyping and Power</title><link href="https://planb.nicecupoftea.org/2025/01/25/prototyping-and-power/" rel="alternate" type="text/html" title="Prototyping and Power" /><published>2025-01-25T13:55:06+00:00</published><updated>2025-01-25T13:55:06+00:00</updated><id>https://planb.nicecupoftea.org/2025/01/25/prototyping-and-power</id><content type="html" xml:base="https://planb.nicecupoftea.org/2025/01/25/prototyping-and-power/"><![CDATA[<!-- wp:paragraph -->
<p>This is my talk from the <a href="https://www.watershed.co.uk/studio/">Pervasive Media Studio</a> <a href="https://pmstudio.co.uk/studio/events/2025/01/24/lunchtime-talk-prototyping-and-power">Lunchtime Talk on 24 Jan 2025</a>. For more on the importance of shonky prototypes, here's my previous talk, "<a href="https://planb.nicecupoftea.org/2024/08/26/poking-holes-in-reality-with-prototypes/">Poking Holes in Reality with prototyping</a>". </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Thanks to the PM studio and Lawottim for hosting me. There's a video version <a href="https://www.youtube.com/watch?v=aQtQZZSLrQk">on Youtube here</a>. Thanks to everyone who reviewed it for me.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3692,"width":"464px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.22.50.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.22.50.png?w=1024" alt="A hand holding up a box saying cheesy storylines, stock characters, death" class="wp-image-3692" style="width:464px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>This is a talk about a little bit of my own history, some of the really great projects I've worked on, a recommendation for certain type of approach to projects, and a call to action to consider a missing piece of the problem. It's very much my personal view. My ex-colleagues may percieve things differently!</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3694,"width":"466px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.22.52.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.22.52.png?w=1024" alt="A picture of Libby in front of a load of economics books, wearing a Mr Happy tshirt and entitled how it started" class="wp-image-3694" style="width:466px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Here's me nearly 30 years ago. Not Mr Happy. fed up with my PhD, disappointed in the whole subject. I had not found my tribe; phds are a lonely business and philosophy of economics was an outlier in Bristol's economics department, which was mostly about mathematical modelling, auction theory and markets.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3696,"width":"467px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.22.54.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.22.54.png?w=1024" alt="A very geeky looking Libby in front of an old CRT monitor surrounded by computer books entitled how it's going" class="wp-image-3696" style="width:467px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>By showing me 'view source' in html - something he did to multiple people, with similar effects - my housemate <a href="https://uk.linkedin.com/in/danbri">Dan Brickley</a> sent me on a journey to confirmed geek.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3695,"width":"468px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.22.56.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.22.56.png?w=1024" alt="A more recent picture of Libby pretending to hold up a massive rock at Avebury" class="wp-image-3695" style="width:468px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>I forged myelf a career in technology, taught myself how to program, worked on the Semantic Web at the wonderful <a href="https://www.bristol.ac.uk/ilrt/">ILRT</a> with Dan at Bristol University, then in a long-forgotten peer-to-peer web TV startup ('<a href="https://en.wikipedia.org/wiki/Joost">Joost</a>').</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>In March 2024 I left BBC R&amp;D (<a href="https://www.bbc.co.uk/rd/search/?query=irfs&amp;page=1">IRFS</a> and Audiences teams) after nearly 15 years, where by the end I co-led a small team tasked with finding things the BBC could do in the future, with specific reference to young people, who …basically don't use the BBC right now. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>All this time later, through working in research, a startup and then more research, technology has served me very well, and yet - technology as something that now pervades everything we do has not served us well. In fact I find myself drawn away from technology and towards things that are real, physical and tangible, have no screens, and allow people to stop, think, and form their own ideas.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3697,"width":"460px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.22.57.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.22.57.png?w=1024" alt="A picture of a burning crisp sandwich" class="wp-image-3697" style="width:460px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><em>[Image from <a href="https://vole.wtf/buttystock/">Buttystock</a> "<strong>Burning crisp sandwich on a plate on a log"</strong> by <a href="https://vole.wtf/buttystock/~mytalkingfist-moosecream/35/">mytalkingfist &amp; moosecream</a>]</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>One of the reasons I was interested in Economics to start with was that I was intrigued by the way new things get invented and made. It drew me to Economics, and yet it's not something Economics was (maybe is, I'm long out of that game) equipped to answer.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>But I wanted to know, how did a new sandwich get invented? </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Actually the closest shop to my office at the UOB was a shop where you could choose your sandwich fillings and combine them. Having tried a few different things, I "invented" one (stilton and walnut, better, no salad, salt and pepper) which I still regard as the optimal sandwich. There the amateur sandwich maker, me, could invent a sandwich with the help of the expert, covering a range of options with many possible combinations.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So that's one way.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3700,"width":"466px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.22.59.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.22.59.png?w=1024" alt="Two people getting helped to wear VR headsets against a green background" class="wp-image-3700" style="width:466px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>And the "expert-amateur [sandwich] discovery problem" seems to me to be an extremely important one.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Because people are experts in themselves and their own lives and we - you - are experts in other things (combining sandwich fillings, Javascript, Raspberry Pi audio streaming, ESP32s, whatever it is). So we need to try and combine those areas of expertise if we are to make something useful to people.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3701,"width":"468px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.01.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.01.png?w=1024" alt="A view of constellations of stars with three red circles and out of them, arrows pointing in various directions" class="wp-image-3701" style="width:468px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Here's my philosophy of R&amp;D.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>If we think about the possible space of, let's say, lunchtime foods, then we should start in places we might not even have thought of (by asking the people who are experts in their own lives) and then burrowing around the space around those places using <em>our</em> expertise. So we'll find out about maybe an interesting new Thai-German crossover place that people are going to and then invent things like basil and chili pretzels or green curry schnitzel sandwiches on dark bread and then test these and end up somewhere hopefully (and testably) popular.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So we're interacting with the people who are experts in their own lives at least twice: once to find out what they are already doing, and once to test our ideas. with them. Actually we probably ought to do the testing bit multiple times. And <em>our expertise</em> comes in when we're burrowing around the new space we have found.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3702,"width":"458px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.02.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.02.png?w=1024" alt="Three connected onion-like blobs indicating expanding ideas and culling them repeatedly" class="wp-image-3702" style="width:458px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>This is a version of the 'double diamond' or as we used to call it - <a href="https://web.archive.org/web/20100820081627/https://lostgarden.com/2010/08/visualizing-creative-process.html">three onions</a>. Essentially you are being extremely expansive and thinking of as many ideas as you can, and then filtering the ideas back down to the best ones - repeatedly. The difference here is I'm saying more about where we <em>start</em> each onion.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3737,"width":"454px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.03-1.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.03-1.png?w=1024" alt="A baffling diagram consisting of a square with two lines to the middle labeled A and B" class="wp-image-3737" style="width:454px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Now, I've (fairly!) recently left BBC R&amp;D so it's still weighing on my mind: what we did that was great, why it was great, and why, <em>ultimately we didn't manage to change a thing</em>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>When I joined BBC R&amp;D, with a few honourable exceptions, there were few interactions with "end users" and if there were, they tended to be "user testing" at the end of a project.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This always baffled me. Don't you want to know if the thing you want is actually wanted?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Well actually, on reflection, no.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This is a case where - to be really honest - no-one wants to hear that what they have invented is not wanted. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Research projects are in some sense about power, authority and who decides what gets made, and this matters, because while the power structures are in place, favoured projects will continue, and crowd out more interesting, relevant and useful ones.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So this is a story about a struggle to place some structures in place that would defeat - or at least prove valiant opponents to - the existing power structures in the organisation. But what we <em>thought</em> we were doing was implementing something that was already happening - but doing it in a more effective way.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3706,"width":"462px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.06.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.06.png?w=1024" alt="Lots of postcards drawn on by people enetiled 'wrong radios'" class="wp-image-3706" style="width:462px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>I was part of this attempt to solve the expert-amateur discovery problem in R&amp;D: <strong>how do you give amateurs - perhaps your future users or some people who need something - the tools to contribute meaningfully to some technical enterprise?</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Solving the expert-amateur discovery problem is important for any organisation that wants to remain relevant as technologies, tastes, opinions change over time. Not just for lunch.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Here's an example of what I mean.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>We dipped a toe in the water of understanding what people wanted by making these <a href="https://www.flickr.com/groups/2386878@N23">simple postcards</a> - the project was about radio, we wondered what people wanted from a radio and this avoided the "blank page" problem - and most people could engage with a bit of drawing about their lives.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3707,"width":"472px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.07.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.07.png?w=1024" alt="A postcard scribbled on" class="wp-image-3707" style="width:472px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>But one thing we discovered - obvious in retrospect but startling at the time - was that young people just didn't use physical radios. This little postcard process just didn't work for them because they didn't use them - if anything they were annoyed by their parents using them. So getting them to imagine what their ideal physical radio would do didn't work.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>So this is an example of a technique which by its failure reveals that the whole sandwich ecosystem has been disrupted by, I dunno, the falafel upstarts.  Lots of people are still buying sandwiches, but the falafel movement has revealed a major change in lunch habits.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Not sure how far I can take this analogy. But the point is, we woudn't have realised this without going out and asking humans about their lives in an inventive fashion, well before we started to actually prototype anything. Ultimately in this case it allowed us to broaden out our remit from sandwiches to lunch, or more non-metaphorically, from radio to the role of audio in peoples' lives, and respond to changes within society that we hadn't realised were there.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3708,"width":"454px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.09.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.09.png?w=1024" alt="A supermarket aisle with a sign saying 'milk, wellbeing, eggs'" class="wp-image-3708" style="width:454px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Why is it important?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list">
<!-- wp:list-item --></p>
<li>If you care about the quality and usefulness of the work you are doing, OR</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>you care that your work improves the world OR</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>you think it's important for fairness that people are involved in things that affect their lives OR</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>you want to find something new in a crowded market</li>
<p><!-- /wp:list-item -->
</ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>or some combination, then this is a good way of going about it. And we wanted to do all of these things. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3711,"width":"460px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.10.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.10.png?w=1024" alt="A feedback postcard from the Warershed saying 'I enjoyed this immensely'" class="wp-image-3711" style="width:460px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>People are experts in their own lives but you need <strong>ways</strong> to help them express what they think, want and need. Often people will be too shy, or just talk about things they have seen, or films or TV or something they heard on a podcast. You need to get them to reflect on their lives, and think, feel, and imagine the future.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>One of our areas of expertise of our group in R&amp;D was in designing techniques to help people do this. And many of them centred around prototypes.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3710,"width":"450px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.11.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.11.png?w=1024" alt="A triangle with points labeled role, look and feel and implementation" class="wp-image-3710" style="width:450px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><em>[Image from "<a href="https://hci.stanford.edu/courses/cs247/2012/readings/WhatDoPrototypesPrototype.pdf">What do prototypes prototype?</a>", Houde and Hill]</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>But perhaps not prototypes as you might be thinking of them.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I'm not talking about technology demonstrators or tests, or alpha websites.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I'm talking about things that elicit feelings and thinking from people about their lives, with respect to some technology.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The experimentation we did suggests that although something real-looking can help people imagine the role it would play in their lives, perhaps counter-intuitively, something <em>unlike</em> the real thing but which captures their imagination can be much more useful (and also, usually, cheaper)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3712,"width":"450px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.13.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.13.png?w=1024" alt="A physocal paper sign on a lamppost saying 'be the first of your friends to like this' with tear-off strips" class="wp-image-3712" style="width:450px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>One technique we used draws on "thingness", (<a href="https://www.jarkman.co.uk/">Richard Sewell</a>'s term) - if you can get people to interact with the right kind of thing - a <strong>physical</strong> thing ideally, and one which <strong>embodies one idea</strong> - then you can get great feedback and attention, authentic and genuine involvement in imagining what it would be like if this thing were real. And then you can apply those insights to digital objects or sandwiches or whatever you need to.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3713,"width":"456px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.14.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.14.png?w=1024" alt="A cardboard box inscribed with 'archers avoider'" class="wp-image-3713" style="width:456px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Here's an Archers Avoider. <a href="https://www.bbc.co.uk/programmes/b006qpgr">The Archers</a>, as I'm sure you all know, is an extremely long-running audio soap opera on Radio 4. Many many people love the Archers. Many many people also hate it.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The Archers Avoider just does one thing - you press a button on the top and it avoids the Archers for you. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This enabled us to have a variety of enlightening conversations about what you want to avoid on the radio, what stops you listening, what radio doesn't allow you to do, and what you do when other people just won't stop listening to the Archers when you are in the room. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Of course, if the BBC ever did make an Archers Avoider (which obviously it never would) it would be a button on the app, but the physical embodiment of that button helped people <strong>imagine what it might be like to react and behave in that world</strong> It did this because it was both silly and funny and single-minded. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3714,"width":"450px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.15.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.15.png?w=1024" alt="A cardboard box with a drawing of a sheep on it and the words 'exclusively archers'" class="wp-image-3714" style="width:450px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>For balance, here's an "Exclusively Archers" version that we also made, which switched itself on when the Archers came on and off again afterwards. also just does one (opposite) thing too.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3603,"width":"446px","height":"auto","sizeSlug":"full","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2024/08/prototypes.gif"><img src="{{site.baseurl}}/assets/2025/01/prototypes.gif" alt="Animated gif showing various cardboard prototypes of radios and TVs" class="wp-image-3603" style="width:446px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Physicality and thingness get you a long way in getting over the expert-amateur barrier. Physical objects avoid the flattening, boringness of screens and also the distractableness of phones and laptops - and so can persuade people to give you their attention and imagination. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>You'll also notice quite a few of these things are also quite silly.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3717,"width":"442px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.18.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.18.png?w=1024" alt="A picture of some yellow earplugs decorated to look like bees and some instructions about how to use your new tellebees" class="wp-image-3717" style="width:442px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Thingness - singluarity of purpose - helps with testability by decomposing the problem.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Physical things summon peoples' imagination and attention</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>But humour and silliness defuse one of the most significant problems in this relationship - power.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3718,"width":"432px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.20.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.20.png?w=1024" alt="A vertically folding garage door at Spike Island spelling out " class="wp-image-3718" style="width:432px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>In a corporate environment it's not really the done thing to do silly or funny things - and yet, it's the best way to give yourself and others permission to say what isn't being said. Plus it's (obviously) a lot more fun.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3615,"width":"432px","height":"auto","sizeSlug":"full","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2024/08/kids_prototypes.gif"><img src="{{site.baseurl}}/assets/2025/01/kids_prototypes.gif" alt="An animated gif showing amazing inventions made by the children we worked with." class="wp-image-3615" style="width:432px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>And when it comes to working with people where there's a big power differential, it lets them know that you are not intransigent and you don't know everything.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>And here we come to one of my favourite projects - and one that proves that the expert-amateur power differential can be overcome even when it's huge. My friend <a href="https://www.bbc.co.uk/rd/author/?id=author-people-jasmine-cox">Jasmine Cox</a> and the talented <a href="https://uk.linkedin.com/in/marvin-mckenzie-31179392">Marvin McKenzie</a> worked with 8 and 9 year olds to invent <a href="https://www.bbc.co.uk/rd/blog/2022-11-bbc-100-objects-collection-centenary">a thing for the future</a>. We had to get past our "boffin" status and make sure that the kids understood that their ideas were valuable - while trying to understand their lives and not just have them talk about Wall-E or something they had done in class.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Silly and funny is a lot easier with kids of course.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":576,"width":"422px","height":"auto","sizeSlug":"full","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2014/12/15387864414_34ee39ed28_z.jpg"><img src="{{site.baseurl}}/assets/2025/01/15387864414_34ee39ed28_z.jpg" alt="A selection of catwigs cards arranged on a multi-coloured carpet" class="wp-image-576" style="width:422px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>But power differentials appear within the "expert" realm too and silliness can work there too.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>After I moaned about the inability of R&amp;D to <em>stop</em> projects, Richard and I made <a href="https://planb.nicecupoftea.org/2014/12/13/catwigs-a-conversation-with-your-project/">catwigs</a> (<a href="https://github.com/libbymiller/catwigs_cards">github</a>), a tool to critique a project - in a funny way - in several dimensions.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Here, humour is used as a power-reset button within a group working on a project, allowing people to speak out where they might not, </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This was quite a powerful lesson for me, that turn-taking and explict rules for speaking can help enormously when people are hesitant to speak up, often those with actual hands-on knowledge of a project, and especially if they are young, shy and geeky, or have not been listened to before.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>And it leads to all sorts of questions about projects</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list">
<!-- wp:list-item --></p>
<li>who decides when to start and stop them?</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>is anyone going to give up their power?</li>
<p><!-- /wp:list-item -->
</ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>For any of these techniques to be effective, you've got to <strong>want</strong> to know more and <strong>accept</strong> that you don't know everything, that being great with say, node.js or immersive video or finance or management doesn't make you an expert on what these particular young people want from TV, for example.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3756,"width":"448px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/image.png"><img src="{{site.baseurl}}/assets/2025/01/image.png?w=1024" alt="A load of cardboard prototypes of different devices showing what happeneds when a message is passed between them" class="wp-image-3756" style="width:448px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>And what about the "burrowing" part, the part where the experts take the new position in thingspace and think of things to make inspired by it? In some ways this is the exciting part, and the most fun part. We've done it collaboratively with potential end users, but also created various techniques to explore as much of that space as possible. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Analogies are great for this ("what if TV was a dog? milk?" [another Richard Sewell special]) and processes and tools that take examples from the physical world and then use that to think about the problem ("what is it about IKEA that makes discovery of new things interesting?") [from a hopefully forthcoming article by Mathieu Triay and Andrew Wood]. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Physicality comes in here too. Acting things out is a brilliant way of imaginatively placing yourself in a situation where you might use something. Even <strong>imagining</strong> examples from the physical world can help.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>[I didn't mention this in my talk but there are lots of existing techniques for this sort of thing - the term to look for is  "design thinking"]</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3719,"width":"426px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.25.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.25.png?w=1024" alt="A sign post for Winterbourne, almost completely covered with plants and flowers" class="wp-image-3719" style="width:426px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>But the key thing is not to flatten or ignore or fail to develop ideas before they have had some space to flourish and effloresce. And this means - as with the catwigs example - giving all individuals space to speak and experiment. It also means that diverse, differently skilled, teams with different life experiences enable you to cover more of that potential space (there's plenty of <a href="https://www.ft.com/content/a8582cf4-93ac-11e7-bdfa-eda243196c2c">evidence</a> (<a href="https://archive.ph/Zn8uJ">archive</a>) for this too).</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Using these prototyping principles (and many custom techniques that we invented) in various combinations, we made some lovely things that people wanted. For example:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3760,"width":"432px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-25-at-12.36.14.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-25-at-12.36.14.png?w=1024" alt="A screenshot of Orbit music showing concentric circles surrounded by blobs representing tracks" class="wp-image-3760" style="width:432px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://www.bbc.co.uk/orbitmusic">Orbit music</a> a music browser purely about discovery, that helps you find genuinely new things to listen to in a beautiful and enjoyable way.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3722,"width":"428px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.49.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.49.png?w=1024" alt="a picture of 10 different prototypes we made" class="wp-image-3722" style="width:428px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>I didn't make this - it was mostly down to the brilliant <a href="https://www.mathieutriay.com/">Mathieu Triay</a> - but I helped with the research. This was a project designed by my friend <a href="https://uk.linkedin.com/in/tristanferne">Tristan Ferne</a>. It was about the BBC's incredible music resource, <a href="https://www.bbc.co.uk/introducing">BBC Introducing</a>, a place for new and emerging artists to get their work heard on the BBC.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>We spent a good deal of time experimenting to try and understand how best to collaborate with our target audience of 18-24s.  In the end we had a really good process that <strong>treated them almost as clients</strong>. We interviewed them about their lives, showed them a wide range of possible thing-like prototypes based on those interviews, and then generated even more prototypes based on what they told us.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The second project I want to talk about is <a href="https://www.bbc.co.uk/rd/blog/2017-06-tellybox-nine-speculative-prototypes-for-future-tv">Tellybox</a> - in the end we made four ways to help you make the best of the time you have to watch something with someone.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3605,"width":"434px","height":"auto","sizeSlug":"full","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2024/08/thingness.gif"><img src="{{site.baseurl}}/assets/2025/01/thingness.gif" alt="Animated gif showing how we got from a physical object to a digital one." class="wp-image-3605" style="width:434px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>This project started with user research about what was difficult about watching TV, which turned out to be choosing what to watch. TV watching is a low stress, low effort way of hanging out with others, but this is completely ruined if you spend the first 30 mins of a limited time arguing about what to watch or scrolling through a TV app, getting more and more bored, irritated and despondent [it me].</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>We made and tested drawings, some very silly design fictions, nine working phyiscal prototypes, and then figured out a way to turn them into four digital objects which we could also test. The results included: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list">
<!-- wp:list-item --></p>
<li>a game where one player chooses five programmes, the next two, and the next one - and then you are all / both invested in whatever you both choose</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>a randomiser that picks for you</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>something that allows you to select programmes that fit the time you have (this would be trivially easy to implement, at least from a data point of view!)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>a voice based app that allowed you to vaguely select a kind of programme to watch, for vibe-based watching</li>
<p><!-- /wp:list-item -->
</ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>The final project I want to talk about is <a href="https://www.bbc.co.uk/rd/blog/2020-05-iplayer-watch-party-group-watching-viewing">BBC Together</a> - which was less thing-like and physical object based, because it was made during Covid.  Like a lot of people at the time, we wanted to make something that would help, and we already had the synchronisation technology.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"lightbox":{"enabled":false},"id":3771,"width":"438px","height":"auto","sizeSlug":"large","linkDestination":"custom","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://www.bbc.co.uk/rd/blog/2020-05-iplayer-watch-party-group-watching-viewing"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-25-at-13.21.30.png?w=1024" alt="A screenshot of BBC Together" class="wp-image-3771" style="width:438px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>So we built a way to watch TV with loved ones at precisely the same time when you are apart from them. And here's a lesson I learned from this about evaluation and testing that's also a clue about power: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>You can't do what people want you to do.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>You can't show that you have the ideas, best structure, the best techniques, by getting large numbers of people using it, or by getting great qualitative feedback, because the counterfactual is what exists already - which at the BBC, already has more people using it than you could possibly have for a prototype.   </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>BBC Together had many thousands of users and very high ratings. But that wasn't enough to change peoples' minds.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3727,"width":"434px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.53.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.53.png?w=1024" alt="A cream coloured kitten biting a laptop" class="wp-image-3727" style="width:434px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>So blah blah yes Libby is great at this stuff, sees things differently, is very employable and so on. And, yes, yes I am. But</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The structures and norms we put in place around listening to potential end users, getting them to imagine futures, working in multidisciplinary teams, listening to our colleagues, speaking truth to power, making all this part of projects, showing everyone the results over and over - long term, didn't even change R&amp;D, never mind the BBC.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3728,"width":"440px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.55.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.55.png?w=1024" alt="Graffiti from teh Cube toilets 'Everything will be ok in the end with 'will' crossd out and replaced with 'won't'" class="wp-image-3728" style="width:440px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>And that's where it all falls down of course 😩</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3729,"width":"430px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.56.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.56.png?w=1024" alt="The old Post office near Temple Meads being destroyed by a massive building smasher, with the quote below over it" class="wp-image-3729" style="width:430px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Musing on this, as one does after nearly 15 years trying and failing to do something, I recently came upon a rather brilliant <a href="https://third-bit.com/ideas/not-on-the-shelves/2024/">page of books that should exist but don't</a>. And this specific one chimed with me - </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><em>"This book is for people who have been managing research projects long enough to become frustrated and furious by institutional inefficiency, inertia, and hypocrisy. Drawing on more than a century of community organizing, it explains how to figure out where power actually resides, how to build support for change, how to get into a position to make those changes…this book focuses on the practical "how" of being the right person in the right room on the right day to make things better a little bit at a time."</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>That seems like a very good expression of the remaining part of the problem. Flogging my analogy to death, we know <strong>how</strong> to find out how lunching is evolving, and we know how to <strong>invent</strong> different kinds of lunches, and both of those are really valuable to lunch-providing - or even any sustinance-providing organsations, if they are willing to listen. But what we don't know - never knew because we took people at face value when they said they were amenable to change - is how to <strong>get</strong> them to listen and then <strong>act</strong>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>We were trying to build new ruts, a new culture - but it didn't take, perhaps because we thought that it would be obvious how great the techniques were by the cool things we came up with. And in R&amp;D you expect to fail, multiple times (but not <em>all</em> the time).</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3730,"width":"422px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.57.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.57.png?w=1024" alt="The Avon Gorge with the quote below written over it" class="wp-image-3730" style="width:422px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Mathieu made a very interesting point while critiquing these slides for me: in fact people did, eventually <strong>listen</strong> to us - but they didn't - or couldn't - <strong>act</strong> on the recommendations we gave them, even when we presented them with existential threats to the organisation. It was just too difficult for them to do so. Inertia, conservatism (small c) and technical debt were all reasons not to act.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><em>"It's easier to drop it…until time and external forces have eroded enough of a path that there isn't a choice left and everyone falls all at once in the new ravine"</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3731,"width":"416px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.58.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.58.png?w=1024" alt="An Extinction Rebellion protest on Stokes Croft with the quote below written on top of it" class="wp-image-3731" style="width:416px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>I'm interested in how we might accelerate this falling into the ravine -  I think <a href="https://people.well.com/conf/inkwell.vue/topics/551/Bruce-Sterling-and-Jon-Lebkowsky-page03.html#post59">this quote from Cory Dotorow</a> is probably key - </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><em>"Any time you see a group of people who've tried over some long timescale to do something, without success, it's *possible* that their failure is down to having bad tactics, but it's *far* more likely that they've failed because they just aren't powerful enough on their own to save the owls, or the planet, or their would-be ethnostate or whatever they're agitating for."</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Change comes from coalitions of groups with the same interest, so if we think we have some great, successful, fair ways of working, then we need to build coalitions to make them the new norms, the new ruts, the new ravine.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This is important because these techniques and attitudes can - if actually acted upon - lead us to technologies that are closer to <em>what people actually want and need</em>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":3732,"width":"398px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.23.59.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.23.59.png?w=1024" alt="Three cats having an outdoor meeting" class="wp-image-3732" style="width:398px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>What I'd love to know from you:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list">
<!-- wp:list-item --></p>
<li>have you tried techniques like this? </li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>have you succeeded? </li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>how did you know you had succeeded?</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Have you changed institutional minds? how??</li>
<p><!-- /wp:list-item -->
</ul>
<p><!-- /wp:list --></p>
<p><!-- wp:image {"id":3733,"width":"398px","height":"auto","sizeSlug":"large","linkDestination":"media","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://libbymiller.wordpress.com/wp-content/uploads/2025/01/screenshot-2025-01-24-at-15.24.00.png"><img src="{{site.baseurl}}/assets/2025/01/screenshot-2025-01-24-at-15.24.00.png?w=1024" alt="A picture of libby's head with various criticisms around it on a whiteboard. This is a joke from Hot Fuzz" class="wp-image-3733" style="width:398px;height:auto"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>I'm off to build some coalitions I think! </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I'm very interested in any thoughts and questions you have.</p>
<p><!-- /wp:paragraph --><br />]]></content><author><name></name></author><summary type="html"><![CDATA[This is my talk from the Pervasive Media Studio Lunchtime Talk on 24 Jan 2025. For more on the importance of shonky prototypes, here's my previous talk, "Poking Holes in Reality with prototyping". Thanks to the PM studio and Lawottim for hosting me. There's a video version on Youtube here. Thanks to everyone who reviewed it for me. This is a talk about a little bit of my own history, some of the really great projects I've worked on, a recommendation for certain type of approach to projects, and a call to action to consider a missing piece of the problem. It's very much my personal view. My ex-colleagues may percieve things differently! Here's me nearly 30 years ago. Not Mr Happy. fed up with my PhD, disappointed in the whole subject. I had not found my tribe; phds are a lonely business and philosophy of economics was an outlier in Bristol's economics department, which was mostly about mathematical modelling, auction theory and markets. By showing me 'view source' in html - something he did to multiple people, with similar effects - my housemate Dan Brickley sent me on a journey to confirmed geek. I forged myelf a career in technology, taught myself how to program, worked on the Semantic Web at the wonderful ILRT with Dan at Bristol University, then in a long-forgotten peer-to-peer web TV startup ('Joost'). In March 2024 I left BBC R&amp;D (IRFS and Audiences teams) after nearly 15 years, where by the end I co-led a small team tasked with finding things the BBC could do in the future, with specific reference to young people, who …basically don't use the BBC right now.  All this time later, through working in research, a startup and then more research, technology has served me very well, and yet - technology as something that now pervades everything we do has not served us well. In fact I find myself drawn away from technology and towards things that are real, physical and tangible, have no screens, and allow people to stop, think, and form their own ideas. [Image from Buttystock "Burning crisp sandwich on a plate on a log" by mytalkingfist &amp; moosecream] One of the reasons I was interested in Economics to start with was that I was intrigued by the way new things get invented and made. It drew me to Economics, and yet it's not something Economics was (maybe is, I'm long out of that game) equipped to answer. But I wanted to know, how did a new sandwich get invented?  Actually the closest shop to my office at the UOB was a shop where you could choose your sandwich fillings and combine them. Having tried a few different things, I "invented" one (stilton and walnut, better, no salad, salt and pepper) which I still regard as the optimal sandwich. There the amateur sandwich maker, me, could invent a sandwich with the help of the expert, covering a range of options with many possible combinations. So that's one way. And the "expert-amateur [sandwich] discovery problem" seems to me to be an extremely important one. Because people are experts in themselves and their own lives and we - you - are experts in other things (combining sandwich fillings, Javascript, Raspberry Pi audio streaming, ESP32s, whatever it is). So we need to try and combine those areas of expertise if we are to make something useful to people. Here's my philosophy of R&amp;D. If we think about the possible space of, let's say, lunchtime foods, then we should start in places we might not even have thought of (by asking the people who are experts in their own lives) and then burrowing around the space around those places using our expertise. So we'll find out about maybe an interesting new Thai-German crossover place that people are going to and then invent things like basil and chili pretzels or green curry schnitzel sandwiches on dark bread and then test these and end up somewhere hopefully (and testably) popular. So we're interacting with the people who are experts in their own lives at least twice: once to find out what they are already doing, and once to test our ideas. with them. Actually we probably ought to do the testing bit multiple times. And our expertise comes in when we're burrowing around the new space we have found. This is a version of the 'double diamond' or as we used to call it - three onions. Essentially you are being extremely expansive and thinking of as many ideas as you can, and then filtering the ideas back down to the best ones - repeatedly. The difference here is I'm saying more about where we start each onion. Now, I've (fairly!) recently left BBC R&amp;D so it's still weighing on my mind: what we did that was great, why it was great, and why, ultimately we didn't manage to change a thing. When I joined BBC R&amp;D, with a few honourable exceptions, there were few interactions with "end users" and if there were, they tended to be "user testing" at the end of a project. This always baffled me. Don't you want to know if the thing you want is actually wanted? Well actually, on reflection, no. This is a case where - to be really honest - no-one wants to hear that what they have invented is not wanted. Research projects are in some sense about power, authority and who decides what gets made, and this matters, because while the power structures are in place, favoured projects will continue, and crowd out more interesting, relevant and useful ones. So this is a story about a struggle to place some structures in place that would defeat - or at least prove valiant opponents to - the existing power structures in the organisation. But what we thought we were doing was implementing something that was already happening - but doing it in a more effective way. I was part of this attempt to solve the expert-amateur discovery problem in R&amp;D: how do you give amateurs - perhaps your future users or some people who need something - the tools to contribute meaningfully to some technical enterprise? Solving the expert-amateur discovery problem is important for any organisation that wants to remain relevant as technologies, tastes, opinions change over time. Not just for lunch. Here's an example of what I mean. We dipped a toe in the water of understanding what people wanted by making these simple postcards - the project was about radio, we wondered what people wanted from a radio and this avoided the "blank page" problem - and most people could engage with a bit of drawing about their lives. But one thing we discovered - obvious in retrospect but startling at the time - was that young people just didn't use physical radios. This little postcard process just didn't work for them because they didn't use them - if anything they were annoyed by their parents using them. So getting them to imagine what their ideal physical radio would do didn't work. So this is an example of a technique which by its failure reveals that the whole sandwich ecosystem has been disrupted by, I dunno, the falafel upstarts.  Lots of people are still buying sandwiches, but the falafel movement has revealed a major change in lunch habits. Not sure how far I can take this analogy. But the point is, we woudn't have realised this without going out and asking humans about their lives in an inventive fashion, well before we started to actually prototype anything. Ultimately in this case it allowed us to broaden out our remit from sandwiches to lunch, or more non-metaphorically, from radio to the role of audio in peoples' lives, and respond to changes within society that we hadn't realised were there. Why is it important? If you care about the quality and usefulness of the work you are doing, OR you care that your work improves the world OR you think it's important for fairness that people are involved in things that affect their lives OR you want to find something new in a crowded market or some combination, then this is a good way of going about it. And we wanted to do all of these things.  People are experts in their own lives but you need ways to help them express what they think, want and need. Often people will be too shy, or just talk about things they have seen, or films or TV or something they heard on a podcast. You need to get them to reflect on their lives, and think, feel, and imagine the future. One of our areas of expertise of our group in R&amp;D was in designing techniques to help people do this. And many of them centred around prototypes. [Image from "What do prototypes prototype?", Houde and Hill] But perhaps not prototypes as you might be thinking of them. I'm not talking about technology demonstrators or tests, or alpha websites. I'm talking about things that elicit feelings and thinking from people about their lives, with respect to some technology. The experimentation we did suggests that although something real-looking can help people imagine the role it would play in their lives, perhaps counter-intuitively, something unlike the real thing but which captures their imagination can be much more useful (and also, usually, cheaper) One technique we used draws on "thingness", (Richard Sewell's term) - if you can get people to interact with the right kind of thing - a physical thing ideally, and one which embodies one idea - then you can get great feedback and attention, authentic and genuine involvement in imagining what it would be like if this thing were real. And then you can apply those insights to digital objects or sandwiches or whatever you need to. Here's an Archers Avoider. The Archers, as I'm sure you all know, is an extremely long-running audio soap opera on Radio 4. Many many people love the Archers. Many many people also hate it. The Archers Avoider just does one thing - you press a button on the top and it avoids the Archers for you.  This enabled us to have a variety of enlightening conversations about what you want to avoid on the radio, what stops you listening, what radio doesn't allow you to do, and what you do when other people just won't stop listening to the Archers when you are in the room.  Of course, if the BBC ever did make an Archers Avoider (which obviously it never would) it would be a button on the app, but the physical embodiment of that button helped people imagine what it might be like to react and behave in that world It did this because it was both silly and funny and single-minded.  For balance, here's an "Exclusively Archers" version that we also made, which switched itself on when the Archers came on and off again afterwards. also just does one (opposite) thing too. Physicality and thingness get you a long way in getting over the expert-amateur barrier. Physical objects avoid the flattening, boringness of screens and also the distractableness of phones and laptops - and so can persuade people to give you their attention and imagination.  You'll also notice quite a few of these things are also quite silly. Thingness - singluarity of purpose - helps with testability by decomposing the problem. Physical things summon peoples' imagination and attention But humour and silliness defuse one of the most significant problems in this relationship - power. In a corporate environment it's not really the done thing to do silly or funny things - and yet, it's the best way to give yourself and others permission to say what isn't being said. Plus it's (obviously) a lot more fun. And when it comes to working with people where there's a big power differential, it lets them know that you are not intransigent and you don't know everything. And here we come to one of my favourite projects - and one that proves that the expert-amateur power differential can be overcome even when it's huge. My friend Jasmine Cox and the talented Marvin McKenzie worked with 8 and 9 year olds to invent a thing for the future. We had to get past our "boffin" status and make sure that the kids understood that their ideas were valuable - while trying to understand their lives and not just have them talk about Wall-E or something they had done in class. Silly and funny is a lot easier with kids of course. But power differentials appear within the "expert" realm too and silliness can work there too. After I moaned about the inability of R&amp;D to stop projects, Richard and I made catwigs (github), a tool to critique a project - in a funny way - in several dimensions. Here, humour is used as a power-reset button within a group working on a project, allowing people to speak out where they might not,  This was quite a powerful lesson for me, that turn-taking and explict rules for speaking can help enormously when people are hesitant to speak up, often those with actual hands-on knowledge of a project, and especially if they are young, shy and geeky, or have not been listened to before. And it leads to all sorts of questions about projects who decides when to start and stop them? is anyone going to give up their power? For any of these techniques to be effective, you've got to want to know more and accept that you don't know everything, that being great with say, node.js or immersive video or finance or management doesn't make you an expert on what these particular young people want from TV, for example. And what about the "burrowing" part, the part where the experts take the new position in thingspace and think of things to make inspired by it? In some ways this is the exciting part, and the most fun part. We've done it collaboratively with potential end users, but also created various techniques to explore as much of that space as possible.  Analogies are great for this ("what if TV was a dog? milk?" [another Richard Sewell special]) and processes and tools that take examples from the physical world and then use that to think about the problem ("what is it about IKEA that makes discovery of new things interesting?") [from a hopefully forthcoming article by Mathieu Triay and Andrew Wood].  Physicality comes in here too. Acting things out is a brilliant way of imaginatively placing yourself in a situation where you might use something. Even imagining examples from the physical world can help.   [I didn't mention this in my talk but there are lots of existing techniques for this sort of thing - the term to look for is "design thinking"] But the key thing is not to flatten or ignore or fail to develop ideas before they have had some space to flourish and effloresce. And this means - as with the catwigs example - giving all individuals space to speak and experiment. It also means that diverse, differently skilled, teams with different life experiences enable you to cover more of that potential space (there's plenty of evidence (archive) for this too). Using these prototyping principles (and many custom techniques that we invented) in various combinations, we made some lovely things that people wanted. For example: Orbit music a music browser purely about discovery, that helps you find genuinely new things to listen to in a beautiful and enjoyable way. I didn't make this - it was mostly down to the brilliant Mathieu Triay - but I helped with the research. This was a project designed by my friend Tristan Ferne. It was about the BBC's incredible music resource, BBC Introducing, a place for new and emerging artists to get their work heard on the BBC. We spent a good deal of time experimenting to try and understand how best to collaborate with our target audience of 18-24s.  In the end we had a really good process that treated them almost as clients. We interviewed them about their lives, showed them a wide range of possible thing-like prototypes based on those interviews, and then generated even more prototypes based on what they told us. The second project I want to talk about is Tellybox - in the end we made four ways to help you make the best of the time you have to watch something with someone. This project started with user research about what was difficult about watching TV, which turned out to be choosing what to watch. TV watching is a low stress, low effort way of hanging out with others, but this is completely ruined if you spend the first 30 mins of a limited time arguing about what to watch or scrolling through a TV app, getting more and more bored, irritated and despondent [it me]. We made and tested drawings, some very silly design fictions, nine working phyiscal prototypes, and then figured out a way to turn them into four digital objects which we could also test. The results included: a game where one player chooses five programmes, the next two, and the next one - and then you are all / both invested in whatever you both choose a randomiser that picks for you something that allows you to select programmes that fit the time you have (this would be trivially easy to implement, at least from a data point of view!) a voice based app that allowed you to vaguely select a kind of programme to watch, for vibe-based watching The final project I want to talk about is BBC Together - which was less thing-like and physical object based, because it was made during Covid. Like a lot of people at the time, we wanted to make something that would help, and we already had the synchronisation technology. So we built a way to watch TV with loved ones at precisely the same time when you are apart from them. And here's a lesson I learned from this about evaluation and testing that's also a clue about power:  You can't do what people want you to do. You can't show that you have the ideas, best structure, the best techniques, by getting large numbers of people using it, or by getting great qualitative feedback, because the counterfactual is what exists already - which at the BBC, already has more people using it than you could possibly have for a prototype.    BBC Together had many thousands of users and very high ratings. But that wasn't enough to change peoples' minds. So blah blah yes Libby is great at this stuff, sees things differently, is very employable and so on. And, yes, yes I am. But The structures and norms we put in place around listening to potential end users, getting them to imagine futures, working in multidisciplinary teams, listening to our colleagues, speaking truth to power, making all this part of projects, showing everyone the results over and over - long term, didn't even change R&amp;D, never mind the BBC. And that's where it all falls down of course 😩 Musing on this, as one does after nearly 15 years trying and failing to do something, I recently came upon a rather brilliant page of books that should exist but don't. And this specific one chimed with me -  "This book is for people who have been managing research projects long enough to become frustrated and furious by institutional inefficiency, inertia, and hypocrisy. Drawing on more than a century of community organizing, it explains how to figure out where power actually resides, how to build support for change, how to get into a position to make those changes…this book focuses on the practical "how" of being the right person in the right room on the right day to make things better a little bit at a time." That seems like a very good expression of the remaining part of the problem. Flogging my analogy to death, we know how to find out how lunching is evolving, and we know how to invent different kinds of lunches, and both of those are really valuable to lunch-providing - or even any sustinance-providing organsations, if they are willing to listen. But what we don't know - never knew because we took people at face value when they said they were amenable to change - is how to get them to listen and then act. We were trying to build new ruts, a new culture - but it didn't take, perhaps because we thought that it would be obvious how great the techniques were by the cool things we came up with. And in R&amp;D you expect to fail, multiple times (but not all the time). Mathieu made a very interesting point while critiquing these slides for me: in fact people did, eventually listen to us - but they didn't - or couldn't - act on the recommendations we gave them, even when we presented them with existential threats to the organisation. It was just too difficult for them to do so. Inertia, conservatism (small c) and technical debt were all reasons not to act. "It's easier to drop it…until time and external forces have eroded enough of a path that there isn't a choice left and everyone falls all at once in the new ravine" I'm interested in how we might accelerate this falling into the ravine -  I think this quote from Cory Dotorow is probably key -  "Any time you see a group of people who've tried over some long timescale to do something, without success, it's *possible* that their failure is down to having bad tactics, but it's *far* more likely that they've failed because they just aren't powerful enough on their own to save the owls, or the planet, or their would-be ethnostate or whatever they're agitating for." Change comes from coalitions of groups with the same interest, so if we think we have some great, successful, fair ways of working, then we need to build coalitions to make them the new norms, the new ruts, the new ravine. This is important because these techniques and attitudes can - if actually acted upon - lead us to technologies that are closer to what people actually want and need. What I'd love to know from you: have you tried techniques like this?  have you succeeded?  how did you know you had succeeded? Have you changed institutional minds? how?? I'm off to build some coalitions I think!  I'm very interested in any thoughts and questions you have.]]></summary></entry><entry><title type="html">19 things I learned while visiting Japan</title><link href="https://planb.nicecupoftea.org/2024/12/24/19-things-i-learned-while-visiting-japan/" rel="alternate" type="text/html" title="19 things I learned while visiting Japan" /><published>2024-12-24T19:39:06+00:00</published><updated>2024-12-24T19:39:06+00:00</updated><id>https://planb.nicecupoftea.org/2024/12/24/19-things-i-learned-while-visiting-japan</id><content type="html" xml:base="https://planb.nicecupoftea.org/2024/12/24/19-things-i-learned-while-visiting-japan/"><![CDATA[<!-- wp:paragraph -->
<p>Everyone seems to have one of these - hope mine is useful to someone - I visited in November 2024.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol class="wp-block-list">
<!-- wp:list-item --></p>
<li>If you have backups running on your phone and a non-Japan plan, disable roaming before you get there or it'll cost you. We got an eSim (I used Sakura) for £35 for 2 weeks for unlimited data. Internet works in tunnels and on the underground lines. Wheeee!</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>If you have an iPhone (didn't test Android) you can get a Suica IC card on your phone by just  doing "add card"  in Wallet. That means you can use the Tokyo metro and trains, some buses, and some vending machines too by tapping in - without needing to use cash or calculate how much a journey will be, which is massively useful.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>You can also top these up using Apple Pay</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Lots of places - including some corner shop 7-11 type places - took physical contactless UK cards. Some took virtual cards (like Apple Pay). Especially in Tokyo. </li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Cash was sometimes the only option outside Tokyo / touristy places. But you can get cash from most 7-11 type places. And a tiny, lovely, Sushi place in Yudanaka (<a href="https://www.google.com/maps/place/Isamizushi/@36.7408806,138.4138614,17z/data=!3m1!4b1!4m6!3m5!1s0x601df4bfa6eee29d:0x276e7377d682bd!8m2!3d36.7408806!4d138.4164417!16s%2Fg%2F1tlbp6__?entry=ttu&amp;g_ep=EgoyMDI0MTIxMS4wIKXMDSoASAFQAw%3D%3D">Isamizushi</a>) took contactless.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>USB A or normal Japanese plugs (same as USA) were common on long distance trains but not USB C</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>You have to self-certify as being old enough to drink alcohol (by clicking 'yes') on the machines (which are supervised by people) in 7-11 type shops. </li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<a href="https://japantravel.navitime.com/en/area/jp/route/">Navitime</a> is great for route planning and includes Japan rail pass options</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>
<a href="https://japanrailpass.net/en/">Japan Rail pass</a> doesn't work on metro lines or some rail lines, including the one you are most likely to wander into at Haneda Airport. If you've got an IC card though, it's really cheap and you don't need to worry.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>If you have a rail pass, the <a href="https://www.japanrailpass-reservation.net">rail pass site</a> is good for planning routes and booking reservations for Skinkansen, but you have to pick up the reservations from a physical machine in a station.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Getting anywhere in Tokyo takes ages even though the transport is incredibly good and has destinations, announcements, maps etc in English, Chinese and Korean as well as Japanese. It's just very big, very busy, and stations always have multiple exits.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>There are loads of great public toilets everywhere</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Lots of art galleries and museums are closed on Mondays in Tokyo</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>All railway stations have their own little tune that plays as the doors shut</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Reddit was good for questions and tips</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>There's quite a bit of craft beer in Japan. There's a really really nice, friendly beer place in Shimbashi ("<a href="https://maps.app.goo.gl/THnhAYRhq3VMCATm8">Dry Dock</a>", try the chicken) and another in Asakusa <a href="https://maps.app.goo.gl/KQvjd3bpxUu8aUV9A">"The Day"</a> (with hotdogs).</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Quite a lot of people speak English, especially in Tokyo.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>There are some large supermarkets, but they are quite hard to find.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>OMG the plastic</li>
<p><!-- /wp:list-item -->
</ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --><br />]]></content><author><name></name></author><category term="asia" /><category term="japan" /><category term="japan-travel" /><category term="tokyo" /><category term="travel" /><summary type="html"><![CDATA[Everyone seems to have one of these - hope mine is useful to someone - I visited in November 2024. If you have backups running on your phone and a non-Japan plan, disable roaming before you get there or it'll cost you. We got an eSim (I used Sakura) for £35 for 2 weeks for unlimited data. Internet works in tunnels and on the underground lines. Wheeee! If you have an iPhone (didn't test Android) you can get a Suica IC card on your phone by just doing "add card" in Wallet. That means you can use the Tokyo metro and trains, some buses, and some vending machines too by tapping in - without needing to use cash or calculate how much a journey will be, which is massively useful. You can also top these up using Apple Pay Lots of places - including some corner shop 7-11 type places - took physical contactless UK cards. Some took virtual cards (like Apple Pay). Especially in Tokyo. Cash was sometimes the only option outside Tokyo / touristy places. But you can get cash from most 7-11 type places. And a tiny, lovely, Sushi place in Yudanaka (Isamizushi) took contactless. USB A or normal Japanese plugs (same as USA) were common on long distance trains but not USB C You have to self-certify as being old enough to drink alcohol (by clicking 'yes') on the machines (which are supervised by people) in 7-11 type shops. Navitime is great for route planning and includes Japan rail pass options Japan Rail pass doesn't work on metro lines or some rail lines, including the one you are most likely to wander into at Haneda Airport. If you've got an IC card though, it's really cheap and you don't need to worry. If you have a rail pass, the rail pass site is good for planning routes and booking reservations for Skinkansen, but you have to pick up the reservations from a physical machine in a station. Getting anywhere in Tokyo takes ages even though the transport is incredibly good and has destinations, announcements, maps etc in English, Chinese and Korean as well as Japanese. It's just very big, very busy, and stations always have multiple exits. There are loads of great public toilets everywhere Lots of art galleries and museums are closed on Mondays in Tokyo All railway stations have their own little tune that plays as the doors shut Reddit was good for questions and tips There's quite a bit of craft beer in Japan. There's a really really nice, friendly beer place in Shimbashi ("Dry Dock", try the chicken) and another in Asakusa "The Day" (with hotdogs). Quite a lot of people speak English, especially in Tokyo. There are some large supermarkets, but they are quite hard to find. OMG the plastic]]></summary></entry><entry><title type="html">Resizing a disk at Mythic Beasts</title><link href="https://planb.nicecupoftea.org/2024/10/22/resizing-a-disk-at-mythic-beasts/" rel="alternate" type="text/html" title="Resizing a disk at Mythic Beasts" /><published>2024-10-22T14:17:51+01:00</published><updated>2024-10-22T14:17:51+01:00</updated><id>https://planb.nicecupoftea.org/2024/10/22/resizing-a-disk-at-mythic-beasts</id><content type="html" xml:base="https://planb.nicecupoftea.org/2024/10/22/resizing-a-disk-at-mythic-beasts/"><![CDATA[<!-- wp:paragraph -->
<p>I have a server hosted at <a href="https://www.mythic-beasts.com/">Mythic Beasts</a> and I'd run out of disk space. They have <a href="https://www.mythic-beasts.com/support/servers/virtual/upgrade#sec-resize-the-file-system">instructions</a> but I'm not experienced enough to be able to follow them as is, though I broadly followed it to make sure I was roughly on track. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Here's what I did so I can do it again. I do not necessarily think I did it in the optimal or correct way, but it did work. YMMV.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:code --></p>
<pre class="wp-block-code"><code>&gt; df
...
/dev/mapper/nicecupoftea2--vg-root 156193244 135604120  12628756  <strong>92%</strong> /
...

&gt; sudo lsblk

...
sr0                           11:0    1   667M  0 rom  
<strong>vda</strong>                          252:0    0   200G  0 disk 
├─vda1                       252:1    0   487M  0 part /boot
├─vda2                       252:2    0     1K  0 part 
└─vda5                       252:5    0 159.5G  0 part 
  ├─nicecupoftea2--vg-root   253:0    0 151.5G  0 <strong>lvm</strong>  /
  └─nicecupoftea2--vg-swap_1 253:1    0     8G  0 lvm  [SWAP]


&gt; sudo parted /dev/<strong>vda</strong>

(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
        32.3kB  1049kB  1016kB            Free Space
 1      1049kB  512MB   511MB   primary   ext2         boot
        512MB   513MB   1048kB            Free Space
 2      513MB   172GB   171GB   extended
 5      513MB   172GB   171GB   logical                lvm
<strong>        172GB   215GB   43.0GB            Free Space
</strong>
(parted) mkpart 
Partition type?  primary/logical? primary                                 
File system type?  [ext2]?                                                
Start? 173GB
End? 215GB
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size    Type      File system  Flags
 1      1049kB  512MB  511MB   primary   ext2         boot
 2      513MB   172GB  171GB   extended
 5      513MB   172GB  171GB   logical                lvm
<strong> 3      173GB   215GB  41.7GB  primary   ext2         lba
</strong>
&gt; sudo fdisk -l

Device     Boot     Start       End   Sectors   Size Id Type
/dev/vda1  *         2048    999423    997376   487M 83 Linux
/dev/vda2         1001470 335542271 334540802 159.5G  5 Extended
<strong>/dev/vda3       337891328 419430399  81539072  38.9G 83 Linux
</strong>/dev/vda5         1001472 335542271 334540800 159.5G 8e Linux LVM

&gt; sudo pvcreate /dev/vda3
Physical volume "/dev/vda3" successfully created.

&gt; sudo vgdisplay
  --- Volume group ---
  VG Name               <strong>nicecupoftea2-vg</strong>
  System ID             
  Format                lvm2
...

&gt; sudo vgextend <strong>nicecupoftea2-vg</strong> /dev/vda3
  Volume group "nicecupoftea2-vg" successfully extended

&gt; sudo lvextend -l +100%FREE nicecupoftea2-vg/root
Filesystem at /dev/mapper/nicecupoftea2--vg-root is mounted on /; online resizing required
old_desc_blocks = 10, new_desc_blocks = 12
The filesystem on /dev/mapper/nicecupoftea2--vg-root is now 49911808 (4k) blocks long.

&gt; df
Filesystem                         1K-blocks      Used Available ...
/dev/mapper/nicecupoftea2--vg-root 196321316 135604972  51129744  <strong>73%</strong> /
...</code></pre>
<p><!-- /wp:code --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Various links</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://www.redhat.com/en/blog/resize-lvm-simple">How to resize a logical volume with 5 simple LVM commands</a> guide helped and so did <a href="https://www.redhat.com/en/blog/partitions-parted">Creating and managing partitions in Linux with parted</a>. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://www.rootusers.com/lvm-resize-how-to-increase-an-lvm-partition/">Overview of Logical Volume Manager</a> (LVM) was handy, and <a href="https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-expanding-the-virtual-machine-disk/">How to Increase the size of a Linux LVM by expanding the virtual machine disk</a> (steps to take, what the hex things mean).</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>I didn't know whether to use ext4 or what so I went with the default/existing, ext2 (<a href="https://unix.stackexchange.com/questions/551030/why-does-parted-need-a-filesystem-type-when-creating-a-partition-and-how-does-i">some info</a>). I didn't know if it should be<a href="https://www.thegeekdiary.com/how-to-create-a-partition-using-parted-command/"> logical or physical</a>, my conclusion was that it <a href="https://superuser.com/questions/653234/primary-or-logical-partition">didn't matter</a> for my purposes.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --><br />]]></content><author><name></name></author><category term="linux" /><summary type="html"><![CDATA[I have a server hosted at Mythic Beasts and I'd run out of disk space. They have instructions but I'm not experienced enough to be able to follow them as is, though I broadly followed it to make sure I was roughly on track. Here's what I did so I can do it again. I do not necessarily think I did it in the optimal or correct way, but it did work. YMMV. &gt; df ... /dev/mapper/nicecupoftea2--vg-root 156193244 135604120 12628756 92% / ...]]></summary></entry></feed>