A picture of me.

Tom Hodson

Maker, Baker Programmer Reformed Physicist RSE@ECMWF


Blog

Date Posted

A photo of the main circuit board in this 3D printer.

RARA Elegoo Printer Notes

Notes for the 3D printer at my co-working space.

USB-C PSU Monitor Board Bringup

Finally testing boards I got back manufactured last year.

A map centered on London with a colourful overlay showing weather data.

ECMWF WMS Maps

A fun little web map data source.

Executable code snippets in docs and HTML object representations

It just looks so nice.

A volumetric render of a CT scan of my jaw.

Volume Rendering

A had this old CT scan lying around from when I had my wisdom teeth removed so I thought I’d try rendering it.

An image of my face, half is a normal colour photgraph and half is a depth map in black and white.

Unexpected Depths

Did you know iPhone portrait mode HEIC files have a depth map in them?

An image of Mixtela’s latest project, a pendant with a fluid simulation running on a LED matrix.

Replacing an image colour with transparency

What happens if you convert an RGB image to RGBA by pretending it was sitting on a white background?

A tricky index proof

An ‘exercise for the reader’ has been bugging me all week.

Manipulate image pixels in Python

I had a black and white image but I wanted a black image with the white bits transparent.

An image of an index the expression for $\epsilon_{ijk}\partial_j u_k$ which in words would be the curl of u

Einstein summation is really nice.

Good mathematical notation is like a really good font.

2024 Roundup

Wherein I look back at what I got up to in 2024, mostly for my own benefit.

A 240x240 pixel (so low res) image of a slightly sci-fiesque looking circular display showing so linear and curved bars, 24.4 volts, in bigger font 213w and 8.7A.

MicroPython Simulator

A simulator for my USB C Power supply project using Micropython running in websassembly.

Kicad Notes

A collection of Kicad related links and notes.

A crudely edited version of XKCD 353, the one about python, but with a greek letter mu stuck in front of “python”.

MicroPython

Embedded Programming is fun again!

Sensor.Community Workshop at EMFcamp

Instructions for a workshop I’m running/ran at Electromagnetic Field 2024

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

Let’s do some raytracing through curved spacetime!

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

A nifty little web simulation technique to test out embedded code before putting it on real hardware.

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.