• Original timestamps for Git

    How to commit files to Git with the original timestamp. (Or an alternative to https://githistorygenerator.com/ that can make you less employable by revealing side projects from the last century.) I had a few copies of an old project amiga-scroller on an old hard disk image. The files were checked into...


  • Exploring C++20 coroutines for embedded development

    Introduction This post is about using C++ coroutines to suspend and resume functions in real time. The objective is a simple way of building real time tasks using only C++, without the need for an RTOS or operating system kernel. Coroutines are functions that can be suspended and resumed, using...


  • Building a header-only C++20 coroutine runtime

    Creating the coroutines runtime infrastructure A simple coroutine example was presented in “C++20 coroutines, header only, without an OS”. This post describes the runtime used for that example in detail. This story is also published on Medium. Summary of the runtime files The runtime for this example is a set...


  • NXP MCUXpresso SDK USBPD Stack

    Old Code Restoration This is code I’ve contributed to professionally and delivered to NXP. NXP have released it under the BSD 3-Clause license, so I’ve made a copy for reference: https://github.com/nakane1chome/MCUXpresso-SDK-USBPD-Stack/tree/main I have not included other parts of MCUXpresso, so it is unlikely to compile as-is. About This is a...


  • Housing Rent vs Mortgage Calculator

    Ever since reading this Economist article many years ago I’ve been interested in the actual cost of home ownership vs renting, as opposed to the the “rent money is dead money” argument. Some time ago I built a model to evaluate scenarios for myself. The model can be accessed here:...