A picture of me.

Tom Hodson

Maker, Baker Programmer Reformed Physicist RSE@ECMWF


ThreeJS Earth

A small earth renderer made using ThreeJS

Weekend builds: Bookshelf

We needed something to lift our books a little off the surface of the windowsill…

Notes on building this site

Mostly a note to self so that I can check this when I forget late how it works.

A small map.

Interactive web maps from a static file

PMTiles is a cool new technology to serve interactive vector maps from a static file.

A scatter graph of run time vs run distance for all my runs on strava. There are lots of points between 5-15km, a couple around 21km and one single point way out at 42km.

My First Full Marathon!

I ran the Amsterdam marathon! My first official race and the longest distance I’ve run in one go!

Maps Maps Maps: Part 2

In which I make my first laser etched map!

Weekend builds: Lasercut stool

This little plant pot stand was a nice weekend project.

Maps Maps Maps: Part 1

I want to make some really big laser etched maps.

A scatter graph of run time vs run distance for all my runs on strava. It shows that I mainly run between 5 and 6 min per kilometer, regardless of distance

My First Half Marathon!

I ran my first half marathon! Let’s look at the data.

Selfhosting: Miniflux and RSSHub

Notes to self on selfhosting an RSS reader.

A render of a 3D printed shelf sitting above a shaver outlet, it spins slowly.

Toothbrush Shelf

It can be hard to find genuine everyday uses of 3D printing, but after a while you do find some.

A screenshot of a small javascript widget that lets you evaluate python code. It's showing some numpy code and its evaluated output.

A little REPL in every blog post

A JS library to run python snippets in the browser.

A screenshot of some python code showing a PEG grammar definition.

Parsing is fun!

I came across something I wanted to quickly parse that was too niche to find a ready made parser for. Join me on a quick whip tour of writing a grammar for a PEG parser.

An image of a nice animated progress bar in a jupyter notebook output cell.

Progress bars and log output in Jupyter notebooks

How to get an updatable message printing a tqdm progress bar.

A 3D render of a simple PCB.

My first PCB!

I’ve always wanted to get a PCB manufactured but only recently found a something that I actually needed and was simple enough for a first attempt.

The orange, abstract, Jupyter logo and the Mamba logo which is a cute black snake.

Jupyter and Conda setup

These are my notes to myself about how to setup jupyter+conda/mamba environments.

A 3D render of some shelves fitting into a triangular space under a ladder.

Fantasy Ikea Shelves

We needed some shelves to fit an odd space under a ladder…

A spinning image of the earth but distorted as if it were a black hole.

Rendering General Relativity

I wrote this jupyter notebook for a python course at Imperial, it’s based on https://rantonels.github.io/starless/

A rendered image of a breadboard with an LED and resistor wired up in series to an arduino.

Using emscripten to simulate an arduino project

The Sensor Watch project has this nifty JS simulation for testing the firmware. Here I’ll go through a toy example of how it glues together the C firmware code and the JS visualisation.

A simple vector image of a classic casio watch.

Sensor Watch

I finally got my Sensor Watch! It’s a replacement logic board for those classic Casio watches you see everywhere.

A diagram showing showing circles with arrows in them linked by lines that represents a simple physical model of electron spins interacting.

How to Animate Inkscape SVGs with d3

In which a simple thing turns out to be surprisingly in-depth!

A screenshot of a slide deck with computer code on it.

Command Line Slides

I made a set of interactive slides for a course on the command line, complete with command line playback!

A screenshot of a web app that visualises dependencies between courses by linking them with lines.

Learning Paths

A small tool to visualise dependencies of courses.

My Jupyter and Conda Mamba setup

I really like working in Jupyterlab but getting it to work nicely is always a bit challenging, these are my notes for roughly how I have it set up.

Building Overleaf projects locally

I wanted to work on an overleaf project while on the train without reliable internet.

An image of a TS100 soldering iron showing a custom bootscreen that says 'solder boy'.

Making a custom bootscreen for your TS100 Soldering Iron

It’s a right of passage to add a custom bootscreen to your TS100 soldering iron but it took me a while to figure out how to generate a 1bit per pixel bitmap image.