Articles grouped by date

2023-12

The EleksMaker

Build and usage notes for an XY-plotter

Martin Oldfield, 14 Dec 2023

2023-10

HDMI capture cards as monitors

HDMI capture cards make a serviceable monitor for non-critical tasks. I find them ideal for watching a Raspberry Pi boot.

Martin Oldfield, 28 Oct 2023

Floppy Disks in 2023

Reading data from old floppy disks in 2023.

Martin Oldfield, 18 Oct 2023

2023-06

A nice Haskell snippet

A succinct Haskell snippet using the View Patterns extension. PWM module.

Martin Oldfield, 16 Jun 2023

Strobing with the Pico PWM

Building a crude stroboscope with the Raspberry Pi Pico’s PWM module.

Martin Oldfield, 14 Jun 2023

2023-01

Wakeup Timers

Experiments with a couple of low power wakeup timers.

Martin Oldfield, 24 Jan 2023

2022-12

RESTful Hardware APIs

Putting hardware devices online via a REST API implemented with FastAPI.

Martin Oldfield, 08 Dec 2022

2022-08

Places to eat in London

Some brief notes on places to eat in London.

Martin Oldfield, 17 Aug 2022

2022-07

LoRa and The Things Network

Initial experiments talking to The Things Network with a LILYGO T-Beam over LoRa.

Martin Oldfield, 05 Jul 2022

2022-05

Places to eat in Paris

Some brief notes on places to eat in Paris.

Martin Oldfield, 25 May 2022

A breadboard-based IR receiver

Notes on an infra-red receiver for the breadboard.

Martin Oldfield, 20 May 2022

A PCB-based IR receiver

Notes on an PCB based infra-red receiver.

Martin Oldfield, 19 May 2022

2022-03

An IR transmitter for the Birdhouse

Notes on an infra-red transmitter suitable for outdoor deployment.

Martin Oldfield, 10 Mar 2022

2022-02

An IR transmitter for testing

Notes on an infra-red transmitter based around the inexpensive Blue-Pill STM32F103 development boards.

Martin Oldfield, 23 Feb 2022

2022-01

Games with IR comms

A few years ago, I explored sending Morse Code messages over an infra-red link. The ideas were incorporated in a geocache near Cambridge UK: to solve the puzzle the player has to build a simple detector for the IR signals.

Martin Oldfield, 26 Jan 2022

2021-12

Car Battery Monitor

A simple gadget to warn me if my car battery is going flat.

Martin Oldfield, 17 Dec 2021

2021-11

TinyS2 Power

Power measurements for the TinyS2, an ESP32-S2 board.

Martin Oldfield, 17 Nov 2021

Pi Pico Power

Power measurements for the Raspberry Pi Pico.

Martin Oldfield, 16 Nov 2021

Pi Pico Wireless

Aidés-memoires for using the Pimoroni Pico Wireless Pack.

Martin Oldfield, 13 Nov 2021

Simple SMTP from Python

How to send simple email from Python particular from embedded devices.

Martin Oldfield, 13 Nov 2021

2021-09

Places to eat on Skye

Some brief notes on places to eat on the Isle of Skye.

Martin Oldfield, 06 Sep 2021

2020-12

Canon lenses and the HQ camera

Fun and games with FD-Mount SLR lenses on the Raspberry Pi High Quality Camera.

Martin Oldfield, 12 Dec 2020

2020-09

Monoids in Haskell

Brief notes on monoids in Haskell.

Martin Oldfield, 07 Sep 2020

2020-08

Diagrams with Haskell

Thoughts on using Haskell

Martin Oldfield, 13 Aug 2020

2020-06

Encrypted disks on Linux

Aidés-memoires for setting up an encrypted volume on Linux.

Martin Oldfield, 11 Jun 2020

Printing from Linux in 2020

Aidés-memoires for setting up printing on a Linux box in 202.

Martin Oldfield, 11 Jun 2020

2020-05

The Creality Ender 3 Pro

Brief notes on setting up and simple printing with the Creality Ender 3 Pro 3D printer.

Martin Oldfield, 13 May 2020

2019-02

ARM development on STM32

Basic notes on setting up development on ST’s STM32 ARM chips.

Martin Oldfield, 21 Feb 2019

2019-01

iCE40 Blinky on iCEstick

A brief walkthrough of making the LEDs flash on Lattice’s iCEstick demo board.

Martin Oldfield, 29 Jan 2019

2018-10

Magnetic Bison Tubes

How I make urban magnetic geocaches.

Martin Oldfield, 31 Oct 2018

The AD9833

Fun with the AD9833 clock generator.

Martin Oldfield, 25 Oct 2018

2018-08

Black Magic Probe on Nucleo

Explicit instructions for flashing the Black Magic Probe firmware onto the ST-Link part of a Nucleo dev board.

Martin Oldfield, 10 Aug 2018

A HomeKit Light

A very simple, HomeKit compatible, light.

Martin Oldfield, 02 Aug 2018

A HomeKit Enviro pHAT Sensor

Publishing sensor data (temperature and ambient-light level) from the Raspberry Pi Enviro pHAT to HomeKit.

Martin Oldfield, 01 Aug 2018

2018-07

YAUIoTL

Yet Another Useless Internet of Things Lamp.

Martin Oldfield, 04 Jul 2018

2018-06

Setting up a Raspberry Pi

Brief notes on building a new Raspberry Pi project. puzzles.

Martin Oldfield, 29 Jun 2018

Devicetree on the Raspberry Pi

Using Devicetree (particularly) on the Raspberry Pi.

Martin Oldfield, 29 Jun 2018

2018-05

Geocaching with FPGAs

A silly application for FPGAs: solving a niche class of geocaching puzzles.

Martin Oldfield, 24 May 2018

Bayesian AB-testing

Some thoughts on AB-testing in a Bayesian framework.

Martin Oldfield, 13 May 2018

2018-03

Simple Dipole Interactions II

A better model for magnets.

Martin Oldfield, 07 Mar 2018

Simple Dipole Interactions

A simple model to explore the best arrangement for magnets near metal.

Martin Oldfield, 07 Mar 2018

iCE40 Blinky

Brief notes on getting to Blinky on an iCE40 FPGA demo board.

Martin Oldfield, 03 Mar 2018

iCE40 tools

Brief notes on open-source tools for programming iCE40 FPGAs.

Martin Oldfield, 03 Mar 2018

iCE40 Blinky on the Olimex HX1K

A brief walkthrough of making the LEDs flash on Olimex’s iCE40HX-1K board.

Martin Oldfield, 02 Mar 2018

iCE40 Blinky on HX8K Breakout

A brief walkthrough of making the LEDs flash on Lattice’s iCE40HX-8K breakout board.

Martin Oldfield, 02 Mar 2018

2018-01

Useful Geocaching Links

Helpful links for geocaching: particularly puzzle solving.

Martin Oldfield, 04 Jan 2018

2017-12

Illuminating Face ID

A quick look at Face ID illumination in the time domain.

Martin Oldfield, 01 Dec 2017

2017-11

Jansjö dimmer

A simple dimmer for the Ikea Jansjö work lamp.

Martin Oldfield, 25 Nov 2017

PureScript

Notes on PureScript.

Martin Oldfield, 11 Nov 2017

2017-10

Diffing directories

How I compare big directories.

Martin Oldfield, 29 Oct 2017

Gull’s Lighthouse

Gull’s 1988 Lighthouse problem, with an interactive demonstration.

Martin Oldfield, 29 Oct 2017

foreachE and stack space

A solution to looping over lots of things in Eff without busting the stack when writing Purescript.

Martin Oldfield, 06 Oct 2017

2017-07

An ESP8266-based switch

A simple switch for my IoT light built around an ESP8266.

Martin Oldfield, 30 Jul 2017

Mongoose OS and the ESP8266

Brief notes on Mongoose OS, an operating system focussed on IoT applications, which good ESP8266 support.

Martin Oldfield, 11 Jul 2017

The ESP8266

Brief notes on the ESP8266

Martin Oldfield, 07 Jul 2017

2017-06

Waiting for six

Brief thoughts on a dice-rolling question in David MacKay’s book.

Martin Oldfield, 29 Jun 2017

2017-04

Applicative IO

Some benefits to using the Applicative instance of IO, which I find particularly useful for casual use in ghci.

Martin Oldfield, 27 Apr 2017

2016-05

Haskell Toys

An attempt to abstract away the boilerplate when writing little command line toys in Haskell.

Martin Oldfield, 09 May 2016

Extra-project Stack

Brief notes on using the Haskell Tool Stack with local repositories, but without a specific project.

Martin Oldfield, 09 May 2016

OrUnit

Simple experiments with polymorphic return types in Haskell.

Martin Oldfield, 04 May 2016

Transpose and sequenceA

Notes towards an intuitive understanding of transpose in terms of sequenceA.

Martin Oldfield, 03 May 2016

2016-04

2D line intersection

A brief note showing the way I derive the intersection of two lines, each defined by two points.

Martin Oldfield, 03 Apr 2016

2016-03

Monads in Haskell: ((->) r)

Brief notes on the ((->) r) monad in Haskell.

Martin Oldfield, 30 Mar 2016

2016-02

Low-power LiPo Light controller

A toy project to get some experience of low-power design: LiPo powered shed lights with a battery protector.

Martin Oldfield, 03 Feb 2016

2016-01

Printing Problems

Brief notes on problems with printers. oscilloscope.

Martin Oldfield, 18 Jan 2016

2015-11

Playing with PICs on MacOS X

The tools I use when playing with PIC microcontrollers

Martin Oldfield, 26 Nov 2015

Cheap XY plotting with Arduinos

Brief notes on making an XY display with a cheap Arduino clone and ILI9340 display.

Martin Oldfield, 25 Nov 2015

2015-10

Audi MMI Waypoints

Brief notes on exporting waypoints to the Audi MMI in a 2014 A3.

Martin Oldfield, 23 Oct 2015

2015-08

XY plotting with Arduinos

Brief notes on plotting y(t) against x(t) using an Arduino Uno.

Martin Oldfield, 30 Aug 2015

XY plotting with sound cards

Brief notes on plotting y(t) against x(t) using sound cards.

Martin Oldfield, 26 Aug 2015

Sound card data

Crude characterization of the Behringer UCA202 and a generic CM6206 based interface.

Martin Oldfield, 26 Aug 2015

Generating Lissajous Curves

Using a couple of AD9850s and an Arduino to plot Lissajous curves on an oscilloscope.

Martin Oldfield, 25 Aug 2015

XY plotting with oscilloscopes

Brief notes on plotting y(t) against x(t) using an oscilloscope.

Martin Oldfield, 19 Aug 2015

Networked scopes and MacOS

Brief notes on using a networked Keysight oscilloscope with MacOS X.

Martin Oldfield, 17 Aug 2015

TI HDC1000 Evaluation

Brief notes on the HDC1000, a humidity and temperature sensor from Texas Instruments.

Martin Oldfield, 08 Aug 2015

2015-06

The Keysight U1272A and MacOS

Brief notes on reading data from an Keysight U1272A multimeter from MacOS.

Martin Oldfield, 22 Jun 2015

2015-03

Monads in Haskell: Lists &c.

Brief notes on the list and similar monads in Haskell.

Martin Oldfield, 25 Mar 2015

2015-02

Seabass

A small, silent, MinnowBoard Max in a box.

Martin Oldfield, 18 Feb 2015

MinnowBoard Max: Display

A LCD display for the MinnowBoard Max.

Martin Oldfield, 17 Feb 2015

2015-01

MinnowBoard Max: Basics

Brief notes on booting up a MinnowBoard Max.

Martin Oldfield, 30 Jan 2015

An Intervalometer

A simple intervalometer driven by a PIC microcontroller.

Martin Oldfield, 18 Jan 2015

MinnowBoard Max: GPIO

Controlling GPIO lines on the MinnowBoard Max.

Martin Oldfield, 18 Jan 2015

2014-12

Kernel Munging Cookbook

Some recipes I find useful when mucking around with the Linux kernel.

Martin Oldfield, 30 Dec 2014

MinnowBoard Max: SPI

Controlling the SPI bus on the MinnowBoard Max.

Martin Oldfield, 30 Dec 2014

MinnowBoard Max: LEDs

Using the Linux LED subsystem on the MinnowBoard Max.

Martin Oldfield, 30 Dec 2014

MinnowBoard Max: PWM

Controlling the PWM drivers on the MinnowBoard Max.

Martin Oldfield, 30 Dec 2014

Sons and Daughters

Exploring why various forms of family management don’t lead to more boys.

Martin Oldfield, 14 Dec 2014

2014-08

Monads in Haskell: Algebra

Brief notes on the algebraic side of monads in Haskell.

Martin Oldfield, 30 Aug 2014

Monads in Haskell: Reader

Brief notes on the reader monad in Haskell.

Martin Oldfield, 30 Aug 2014

Places to drink in Paris

Some brief notes on places to drink in Paris.

Martin Oldfield, 15 Aug 2014

2014-05

Leaving Arduino

Although the Arduino continues to provide good, cheap, development boards, I increasingly dislike the IDE and software framework. Here are some notes on moving away from it.

Martin Oldfield, 24 May 2014

Avrdude Cookbook

I find it hard to remember the options I need when calling avrdude, but I don’t know enough to work them out reliably every time. So, here’s my handy crib-sheet.

Martin Oldfield, 23 May 2014

Atmel pin macros

Brief notes on experimental macros for manipulating pins on AVR mega microcontrollers.

Martin Oldfield, 22 May 2014

2014-04

SSR in a box

Brief notes on putting a solid-state relay in a box.

Martin Oldfield, 29 Apr 2014

2013-12

Arduino from the command line

How to compile Arduino code from the command line.

Martin Oldfield, 29 Dec 2013

A NTP driven Nixie Clock

A Nixie clock which gets its time from a Raspberry Pi pretending to be a GPS receiver.

Martin Oldfield, 29 Dec 2013

Useful Raspberry Pi Links

Links I found useful when starting to play with the Raspberry Pi.

Martin Oldfield, 29 Dec 2013

The TM1638 & the Raspberry Pi

A tiny library to interface cheap TM1638 displays to the Raspberry Pi.

Martin Oldfield, 29 Dec 2013

Places to eat in California

Some brief notes on places to eat in California.

Martin Oldfield, 29 Dec 2013

Raspberry Pi Identification

Being rather cheap little animals, Raspberry Pis tend to proliferate, and before long it’s hard to keep track of them all. Naming them helps, and software can make that more efficient.

Martin Oldfield, 29 Dec 2013

Raspberry Pi Streaming video

Notes on streaming video from a Raspberry Pi camera to MacOS X and iOS devices.

Martin Oldfield, 15 Dec 2013

2013-10

Paste dispensing

Notes on dispensing solder paste

Martin Oldfield, 14 Oct 2013

A blast of hot air

Notes on soldering SMD parts with hot air.

Martin Oldfield, 14 Oct 2013

2013-08

Importing tasks into OmniFocus

A simple command line program for importing tasks described by a YAML document into OmniFocus.

Martin Oldfield, 31 Aug 2013

2013-06

A DIY Vacuum Pickup Tool

A cheap DIY vacuum pickup tool, helpful for SMD assembly.

Martin Oldfield, 24 Jun 2013

ADT74x0 temperature sensing

Analog Devices make some nice I²C temperature sensors, including the ADT7420 which is accurate to 0.25̣̣°C. Here’s a user space client for them.

Martin Oldfield, 10 Jun 2013

Linux WiFi configuration

Aidés-memoires for configuring WiFi on a Raspberry Pi.

Martin Oldfield, 05 Jun 2013

Finding Geocaches in English

A short program to find caches which are described in English. Very handy when caching abroad!

Martin Oldfield, 05 Jun 2013

A Toy Language Model

I wanted a toy language model so that I could write software which would identify the language of text.

The motivation for this is simple: given a list of geocaches, which ones have descriptions which I can understand!

Martin Oldfield, 05 Jun 2013

Raspberry Pi GPIO cable

A useful cable to connect the GPIO port to a breadboard.

Martin Oldfield, 05 Jun 2013

Apple Cake

A recipe for apple cake.

Martin Oldfield, 05 Jun 2013

Starch Free Tiramisu

At a recent dinner party, one of my guests couldn't eat starch. This didn't seem compatible with my desire to serve tiramisu, but happily the lure of creamy coffee proved enough of an inspiration to find a solution: instead of coffee soaked sponge use coffee jelly.

Martin Oldfield, 05 Jun 2013

Church Numerals

Fun and games with Church numerals in Haskell.

Martin Oldfield, 05 Jun 2013

TCP-IP v4.16 and Olimex flash

An easy way to patch recent versions (e.g. 4.16) of the Microchip PIC TCP-IP stack to work with the Atmel flash EEPROMs on Olimex boards.

Martin Oldfield, 05 Jun 2013

The Bus Pirate on MacOS

Self-help notes on using the bus pirate on MacOS—mainly links to other documentation.

Martin Oldfield, 05 Jun 2013

Time-lapse photography

Brief notes on making time-lapse movies with a DSLR camera.

Martin Oldfield, 05 Jun 2013

Unicode games with perl, MySQL, and XML

Not for the first time I wasted a few hours getting Unicode things to 'just work' in a Perl project which mixed XML and MySQL. Hopefully these notes will prevent another repetition.

Martin Oldfield, 05 Jun 2013

Places to eat in the Lake District

Some brief notes on places to eat in the Lake District taken on a trip in September 2008.

Martin Oldfield, 05 Jun 2013

Filtering GPS tracks

In practice I find that the tracklogs stored by my Garmin GPS receiver are quite noisy. gpsbabel easily filters the data, but having forgotten the relevant rules once, I thought I'd document them here.

Martin Oldfield, 05 Jun 2013

Places to eat and drink in Copenhagen

Some brief notes on places to eat and drink in Copenhagen.

Martin Oldfield, 05 Jun 2013

Replacing a Logitech Mouse Button

How to fix a dodgy button on a Logitech mouse: the key was finding a replacement for the Omron D2FC-F-7N.

Martin Oldfield, 05 Jun 2013

ADSL modem rebooting

Controlling things over Ethernet, here a hung ADSL modem, with the PIC Mini Web from Olimex. This is more of a brief sketch, to test the blogging software, than anything too deep or insightful.

Martin Oldfield, 05 Jun 2013

The TTi TF930 and MacOS

Brief notes on reading data from a TTi TF930 3GHz counter from MacOS.

Martin Oldfield, 05 Jun 2013

A Spinning Sphere

Calculating the moment of inertia of sphere. Overlong in itself, but hopefully a fine preliminary to the related calculation for a tetrahedron.

Martin Oldfield, 05 Jun 2013

A Turning Tetrahedron

The tetrahedron's a simple solid, but its moment of inertia isn't in the usual tables, so I thought I'd calculate it. There are two calculations here: one's straightforward but long, the other's short and cunning.

Martin Oldfield, 05 Jun 2013

Post the First

The first article

Martin Oldfield, 05 Jun 2013

Perl tools for MPFS2

Recent versions of Microchip's TCP/IP stack (after version 4.11) use a new filing system and web server: MPFS2 and HTTP2. Microchip supply a Windows program, MPFS2.exe to manage things, but this is quite inconvenient for people on Linux or OS X. These Perl programs try to help.

Martin Oldfield, 05 Jun 2013

The AArduino

Although the Arduino is very convenient, I wanted to build my own from parts you can buy from RS or Farnell. Rather than cloning the Arduino, I took the opportunity to make some changes: I removed the USB/Serial interface because I've got a ICSP programmer, but added crude support for dual AA battery support. The AA cells suggest a good name: the AArduino!

Martin Oldfield, 05 Jun 2013

Faking geocaches in Garmin GPX files

Garmin GPS receivers have a special mode to handle geocaches, but it's not been clear to me how the gadget decides which waypoints are geocaches. These brief notes describe something which works for me.

Martin Oldfield, 05 Jun 2013

Watchdog

Watchdog: automatically do things when files change.

Martin Oldfield, 05 Jun 2013

A Coordinate Decoder

A simple PIC-based coordinate decoder for geocache puzzles.

Martin Oldfield, 05 Jun 2013

Moments of Inertia

Some basic facts about the moment of inertia

Martin Oldfield, 05 Jun 2013

Etch to lenny upgrades on Xen

I have a bunch of virtual Debian machines on a Xen box. When they were installed I used etch, but I've just moved one domU to lenny: here's my crib sheet. I suspect it won't be generally useful.

Martin Oldfield, 05 Jun 2013

Perl and Xcode 4

I just bought a new Mac and installed Xcode 4 on it. However, I couldn't build any Perl modules with XS (bits of C) in them. Here's a solution!

Martin Oldfield, 05 Jun 2013

Getting an ARM toolchain on MacOS 10.6

I'm starting to play with ARM microcontrollers, and building a toolchain is a necessary step. Here's a log of my experiences.

Martin Oldfield, 05 Jun 2013

Time Machine hassles

One of my Macs recently died and I wanted to recover data from a Time Machine. Sadly this wasn't entirely trivial.

Martin Oldfield, 05 Jun 2013

Haskell qua calculator

Although Haskell is a fine language for hard-core programming, it’s increasing my tool of choice for trivial arithmetic too.

Martin Oldfield, 05 Jun 2013

MacOS X and the Olimex AVR-ISP500

How to make the Olimex AVR-ISP500 work on MacOS 10.5.6: install version 1.005 of the firmware.

Martin Oldfield, 05 Jun 2013

Stripboard Templates

A simple Perl script to generate blank stripboard templates.

Martin Oldfield, 05 Jun 2013