I recently picked up a dirt cheap copy of the Quadrillion puzzle game in great condition for the kids only to find that it was missing a piece. It made the perfect excuse to dust off the 3D printer and flex my programmatic CAD skills. 
 
 Coding began after taking a few quick readings from the digital caliper. The webbed bridge between the balls ( meniscus ?) was the trickiest part but I…

 Cloudflare (CF) recently expanded their offerings within the Workers AI product. Not only are there more model options but token thresholds have been raised. In order to access these larger token tiers you need to use response streaming done via Server-Sent Events (SSE) . In a nutshell, SEE is simply a one-way version of WebSockets. You make a request to an HTTP resource and the host…

 tl;dr 
 Like Googling, LLM prompt engineering is a basic skill that will become indispensible to personal and professional projects as LLMs become more entrenched in our computing activities. I created an LLM frontend which uses Google Sheets to trigger and record prompt iterations. Systematically develop an intuition for prompting and track/share your progress without additional effort.…
If you’ve ever had trouble printing large images and documents properly on MacOS, read on! 
 Background 
 Home learning is an essential part of early primary education and the UK Department for Education has some nicely distilled guidance on what sort of topics should be covered to advance through all the yearly checkpoints. As part of my own effort in promoting numeracy within the…
If you need to use serial ports created by Serial-to-USB (S2U) adaptors in MacOS with your Windows apps running in Wine, you’ll need to map them so that Wine can correctly detect and use them. For the Wine version of the Bookman Desktop Manager 1.3 , I needed to map the port it used to COM1 : 
 
 Unplug all of your S2U adapters to begin 
 Run ls /dev/tty.usb* to list all of the…
A bit of history 
 Franklin Bookman devices were early eBook readers with plug in ROM cards that distributed (mostly) reference content. Later iterations could read user-written memory cards containing licensed content. These models often came with a “connectivity kit” that included 
 
 a serial / USB data transfer cable 
 a 2MB / 4MB read-write memory card 
 a…

 KiCad is the open source standard for PCB design and these days a prerequisite for cheap professional PCB manufacture. I’m learning this tool out of necessity; the ultimate goal is to create a breakout board for a TSOP-50 (50-pin Thin Small Outline Package format) mask ROM chip located on a Franklin Bookman II device containing its onboard firmware in order to further my reverse…

 10 Easy Steps to being the coolest sysadmin in 2005 
 Ever wonder how complicated it would be to do some casual Linux administration from a mid-2000s PocketPC device?
Wonder no more! I’ll show you how a Dell Axim X51v along with
an infrared wireless keyboard can successfully connect via SSH into an Amazon EC2 Linux instance. 
 
 
 Download your PEM file, this is…
As part of a Dell Axim PDA bundle, I came into possession of this curious Dell Navteq BT-332 Bluetooth GPS Receiver
that I’m planning to use with an offline OSM app on a laptop (something normally without a location sensor). 
 Before phones and other devices integrated location sensors the common setup was having an external GPS receiver that
would process and relay location data…
My holiday project of implementing a Sierra AGI web runtime is coming along nicely. The game engine was revolutionary for its time. It was effectively an entire creative suite (content tooling, bytecode VMs for distribution to different computer architectures) that allowed the early Sierra On-Line game company to sell its games on many different early personal computer systems. 
 
 The…
Holiday projects in the 2020 season were extremely plentiful owing to the local COVID-19 lockdown measures. This was another game-related venture that I undertook in late November 2020 til early January 2021. What started off as a simple three.js experimentation sandbox to learn the ins and outs of the library and its API soon became a vastly expanded custom game engine project. Progress is…
The end of year winter season is a time when many of my family and friends celebrate their birthdays. This year
I came across a Cantonese birthday song beyond the basic “happy birthday” / 生日快樂 that made me ponder whether
other such “folk” birthday songs existed. 
 What are people singing about when they sing a common happy birthday song in their own language?…
The name comes from the first thing I tried to recreate within it: the NASA worm logo. 
 There’s a Twitter account I follow which often posts design-related inspiration and imagery from various books, artists,
and commercial products: @presentcorrect. I happened upon a post that caught my eye. It was this page from the Gujarati
Type Foundry Book (1940): 
 
 I knew I had…
After releasing the GHLiveBLE tool, there were a number of hardcore Clone Hero enthusiasts who were curious to find out the poll rate of the GHLive bluetooth guitar controller. Given that the poll rate being how fast the controller can register button presses to the computer, a higher rate would allow for more “precise” play for the dedicated rhythm game fans. 
 And so, I set out…
What follows is a collection of notes I compiled for setting up my current (as of 2019)
3D printer. Table of contents for major sections as follows: 
 1. Costs
2. Subtractive modifications
3. Printable mods
4. Octoprint
5. `mjpg-streamer` tweaks
6. Raspbian tweaks
7. G-Code tweaks
 1. Costs 
 1 x Ender 3: £176 
 
 50% cheaper vs previous 3D printer…
Friday night Pho is one of our house traditions. Nobody
can resist the delicious combination of tastes that this simple
Vietnamese noodle soup offers. 
 After years of eating pho, I finally decided to attempt making it
for myself from scratch (or as from scratch as possible) purely
as an exercise of appreciation for this noodle dish. 
 Recipe 
 Like all…
I’ve been using Preact as my alternative (API compatible) React of choice for a
few side projects for a while now, the main advantage being the API compatibility
with a significantly smaller sized addition to dependencies. 
 Likewise, my favorite CSS-in-JS microlibrary: Picostyle 
has similar file-size advantages. 
 Micro-libraries are great because they are…
As a way to learn the MacOS Cocoa API and Swift, I set out to write a MacOS system tray app
that would provide IBM Model M “clicky” keyboard sound effects whenever the OS detected a key up or down event. 
 To my complete surprise I was able to get a functional app working within an afternoon, which
goes to prove that the ecosystem for writing MacOS apps is well designed and…
While block indentation alignment (1) is enough for most people, I believe further alignment formatters,
especially tabular or “vertical” alignment (2) tools, can greatly help in reducing the time it takes to visually process details in code: 
 // (1)
const bike: Record<string|number> = {
 wheelSize: 16,
 topTubeLength: 24.5,
 manufacturer:…
This post is a Celestial Combat devlog and also be found here . 
 Some of the code for Celestial Combat has been structured to provide a easy facility for
switching major subsystems of the game on/off. Additionally, unit testing is not time-efficient
given the benefits vs effort involved: we offer a cheaper solution in the form of scenario tests. 
 Feature toggles 
 You have…
This post is a Celestial Combat devlog and also be found here . 
 Writing code is a necessary evil to get things done on a project and often the best kind of code
is no code at all. Good tooling helps us do things: 
 
 FASTER: avoid writing code when the task least requires it 
 CHEAPER: avoid writing code when results are not worth the effort 
 EASIER: avoid barriers for…
In my childhood, I used to move around a lot. We usually didn’t have
allowances for things that other kids used to hold onto, to be kept
between moves. Instead I collected music files and other digital treasures
that pleased my young brain. 
 One file that’s firmly stuck in my memory was theme music for the
1996 Microsoft Interactive CD Sampler main menu. I…
This post is a Celestial Combat devlog and also be found here . 
 Game design is essentially UX design. Bad experience design is more than jarring: it drives beginner players
away. CelCom previously had an example of bad experience design in one of it core gameplay mechanics:
landing spaceships was awkward and difficult. First you needed to be able to find the planet you want to land…
This post is a Celestial Combat devlog and also be found here . 
 Celestial Combat is a game large in ambition and scope. Battles
often span multiple solar systems with hundreds of spacecraft and
planets with caches of materials for war production. 
 As the gameplay solidified, finding a way to persist player progress grew more important.
Saving score and progress within a…
My daughter is approaching the 6 month mark. This is a time when
kids start to develop gross motor skills and begin to express
themselves through play. In anticipation, I jumped at the chance
to make some dynamic toys for her in addition to the mostly
rigid ones she’s collected so far. 
 
 
 

 Ended up doing a Friday late night build. Since I didn’t…
A coding font called Dank Mono showed up in my programming feed recently.
As someone who is always looking for ways to improve my coding environment, changing the
default IDE font seemed like something worth investigating. 
 
 I was pretty happy with Iosevka already but was curious to
see if Dank Mono was worth the social media hype; setting it as the IDE font would be the best…
I’ve long been interested in 360 panoramic photos and videos and being a patient tech consumer, I was fortunate to get the 2016 Gear 360 camera for the low price of £80 shipped; 22% of the original launch price of £350. 
 
 Additionally, I wrote a simple 360 web viewer , so I can use any image host (e.g. Imgur, Dropbox, etc.) and not be tied to a specific online platform like Kuula.

 These cheap bluetooth gamepads are often branded and sold as remote shutter buttons
for smartphones. I think their best purpose is actually to be used as gamepads, especially
for mobile devices and bluetooth-enabled PCs. They can be routinely found on either eBay or
Amazon for around $3 or 5 GBP, shipping included. This makes them one of the best value bluetooth input…
If you’ve done everything you’ve known how to get a Raspberry Pi Zero W (v1.1) to work but can’t
get it to boot up and recognize the Wifi, there’s a chance you may have a defective board. 
 
 
 

 Setup 
 After purchasing you should have been able to do this to get it working: