2026
November
- Android Auto on my HR-V's Android 4.0.4 head unit
I recently bought a 2018 Honda HR-V as our family car. It has a 7” touchscreen running Android 4.0.4, a version so old it predates Android Auto by about three years. It runs Android Auto now anyway, thanks to a small app I built over the course of a week.
October
- PHP2Shell and the case for building boring sites
From Wednesday 21 October to the end of the weekend, I was patching an old VPS and moving a handful of sites onto a new one. PHP2Shell finally made the decision for me. This blog carried on regardless, because it’s just files. The sites I’d built with a CMS were another story.
- Chasing build speed on Jekyll 4
I’ve been putting off upgrading from Jekyll 3.10. Partly late-adopter habit, partly because my setup worked fine, and a version bump seemed simple enough. I should know better by now. It mostly was.
- Cardboctober, ten years on
It has been 10 years since I ran Cardboctober, a month-long hackathon in which I created something new for Google Cardboard each day and wrote about it. I considered doing it again this year, but my time is spread thinner these days than it was in 2016, so I thought I’d do a bit of a retrospective on the WebVR and Google Cardboard scene instead.
September
- O cursor, where art thou?
All too often on my computer, I’ll finish typing something, reach for my mouse, and have no idea where the cursor has got to. Not on the monitor I was looking at. Possibly on the laptop screen, but I’d have to turn my head and check. So I do what I always do, shake the mouse until macOS inflates the cursor to the size of a dinner plate, and carry on.
- Antiquated CSS and why we needed it
I came across a catalogue of antiquated HTML snippets and artefacts, the kind of markup we just accepted as necessary in the <head> of every site. It got me thinking about the CSS side of that same period, the stylesheets rather than the markup. My first job in 2009 was building marketing campaign pages for an electronics distributor’s B2B storefront, where dropping IE6 was not a conversation anyone was going to have. Developers eventually landed on one clean way to target different IE versions, but getting there took a lot of less elegant detours.
- Android's 24 hour sideloading wall
I was showing a friend the Pokémon gen1recomp project on my phone the other day, and he wanted it on his. Easy enough. Hand over the APK and the files it needs, walk him through the setup, ten minutes while we’re sat in the same room.
August
- Migrating from Pixel 7a to Pixel 11
Setting up a new phone always takes longer than it should, usually with at least one app or account causing grief along the way. This one didn’t, which felt almost suspicious.
- Tea weather
One large mug, two Yorkshire tea bags, steeped in freshly boiled water for 2 minutes, squeeze and remove the bags, generous splash of milk. The weather has finally felt like it’s changing from the sweltering summer we’ve had, and the nights are closing in. Rain against the window, the rumble of thunder, the room lit by lamps. Having and enjoying a nice cup of tea feels comfy. It’s a hot drink but it doesn’t make me feel uncomfortable. The bitterness of the tea hangs on my tongue. The thick mouthfeel of each gulp is satisfying. I’ve been drinking coffee throughout the mornings as always, but now being able to enjoy a nice cup of tea in the evening lets me know the autumn is coming.
- The Hidizs AP30 Music Boy
I saw the Hidizs AP30 Music Boy on Reddit and got curious enough to reach out to Hidizs to see if they’d send me one to review. It’s a palm-sized DAP that launched on Kickstarter on 23 July 2026, and it’s pitching itself as a companion device rather than a standalone player, something to clip to a bag, hang round a neck, or snap to the back of a phone. I’ve had it for five weeks now, including a holiday where I used it out and about, long enough to have formed opinions beyond “this is a cute novelty.”
July
- Rebuilding and analysing 4 years of Wordle stats from WhatsApp chat logs
Yes, I’m still playing Wordle in 2026. According to Wordle, I’ve played 1,559 games, I win 99% of the time, my current streak is 107 days and my longest is 278. Four numbers, and they’re mostly correct. What I don’t get is anything behind them. No per-game history. No way to compare a Tuesday to a Sunday. No sense of whether I’ve actually got better at this over four years. Each day I’ve played, I’ve also shared the result to WhatsApp. Just a habit, not a data strategy, but it turns out that habit quietly built a far more detailed record than Wordle itself ever keeps. One I can finally ask my own questions of. So I looked into rebuilding my own copy of the data.
- What's the most popular number in Hacker News titles?
Two consecutive titles on the HN front page yesterday had a 6 in them. This means nothing. But it’s the sort of nothing that lodges in your brain until you do something about it, so what is the most popular number in Hacker News titles?
- The progress of progress bars
I was waiting for Claude to answer a token-heavy question at work the other day, the little “Thinking…” label flickering into “Wibbling…” and then “Moseying…”, and I caught myself doing the thing I always do when a spinner takes too long, staring at it, trying to divine meaning from the word choice. Is it nearly done? There’s no percentage, no bar, just a word standing in for “trust me, something is happening.” It sent me down a rabbit hole into where progress bars came from, and it turns out they were never really about progress at all.
- How I'm using CSS View Transitions on this blog
In the old days of the web, animating between pages meant faking it with jQuery. Then came pjax, which used pushState to swap in fetched content and fake a full navigation without one, still relying on popState to stop the back button breaking. Every single-page app since has done some version of the same trick, intercept the link click, fetch the new content, swap it in, animate the swap yourself. It works, but it means every navigation runs through a JS router, even on a static blog that didn’t need one otherwise. Cross-document view transitions do the same job without any of that, and there’s no JavaScript API involved at all. It’s a single @view-transition rule in the CSS. No router, no fetch, no client-side history hijacking, the browser still does a real navigation to a real URL, it just captures the outgoing page as it leaves and lets CSS animate that against the incoming one.
- Why I'm using a low-profile keyboard (for now)
For years I was firmly in the mechanical keyboard camp, and specifically a 60% person. No numpad, no function row, no arrow cluster, just the keys I actually used, in a footprint small enough to leave room for the mouse. A handful of boards came and went, but they all had the same shape: clacky, and a bit of a statement piece on the desk. There’s still a couple in the photo on my now page, left over from that era. Lately though, I’ve drifted somewhere unexpected: low-profile, and further than that (off mechanical switches entirely). I’ve been daily driving a Logitech MX Keys alongside an MX Master 2S, and enjoying it more than I expected to. The original reason I picked them up had nothing to do with typing feel, it was for multi-device pairing. Both can be paired with multiple machines, one over the USB receiver for automatic switching, and up to two more over Bluetooth via a button on the device. Back then I had a Windows PC and a MacBook, and hopping between them without re-pairing was exactly what I needed. What’s kept them on my desk is something I didn’t plan for though: now that I’m on macOS day to day, Universal Control does most of that job for me, no more relying on third-party apps like Synergy2 or Duet to move a single keyboard and mouse between machines. The original reason has quietly become less important, and I’m still using them anyway. The keyboard charges over USB-C, wakes from a light touch on the frame, and is already ready to go by the time my hands land on the keys. The mouse, frustratingly, charges via micro USB (the newer MX Master 3S fixes that gap). But the bigger surprise has been the typing feel itself. I expected to miss the travel, the tactile bump, the clacking sound. In practice the low-profile scissor switches have been comfortable enough for long sessions that I haven’t gone looking for a replacement, quieter and flatter than the taller boards I used to run. The thing I do miss is the customisation, going through keycap sets bought because the key profile (obviously XDA is the best key profile) or key legend caught my eye. There’s no equivalent here, same slab of keys every day. None of those old purchases were extravagant on their own, but it added up over years in a way I didn’t notice until I totalled it up. This one, by contrast, was one purchase: £96 back in 2023, and that’s been it since. Old habits die hard, mind you, the numpad sits there on the right collecting dust, a little monument to a decade of telling people I didn’t need one. I don’t think I’m done with mechanical keyboards for good, but for the keyboard I reach for every day, low-profile and boring-in-a-good-way has won out, for now.
June
- Every Kickstarter project I've backed
Between March 2011 and October 2021 I backed 19 Kickstarter projects, spending £386 and $565 across the lot. Here they all are, in order, with what became of each. March 2011 Minecraft: The Story of Mojang $30filmstandalone My first ever Kickstarter was 2 Player Productions’ documentary about Mojang’s first year. It delivered in late 2012, and I took the DVD tier, so my name is in the credits. I no longer own anything that can play the disc, but it’s a neat thing to have. On launch day 2PP uploaded the film to The Pirate Bay themselves, asking people to buy it if they could rather than pretend piracy wasn’t going to happen, and it went free on YouTube the following year. January 2013 GCW-Zero $155consolestandalone An open-source Linux retro handheld built around the Ingenic JZ4770, pitched as the spiritual successor to the Dingoo, by Justin Barwick (a Dingoonity regular). It delivered in 2013, but the shipping was a mess. We hosted the official GCW Zero subforum on Dingoonity, and it turned into a wall of “where’s my order?” posts despite us having nothing to do with fulfilment. I still have mine. It was underwhelming: by the time it arrived I had countless other devices that did the same job, often better. The community software carried it, but the hardware itself was nothing special. March 2013 Sweetbox II £32accessoryraspberry-pi A case for the Raspberry Pi. It arrived, but it fit an old model of Pi, so it stopped being useful fairly quickly. I’ve had better cases since, and these days I’d just 3D print an equivalent if I needed one. July 2013 Fairywren £50diyraspberry-pi A mini-ITX baseboard for the Raspberry Pi. It arrived. I never used it. I had aspirations and never got round to it (ADHD caveman brain). September 2013 RFIDler £24diystandalone A software-defined RFID reader, writer and emulator. It arrived, and I never worked out a good use for it. Writable RFID tags got cheap enough to buy and write straight from my phone, so I never needed it. I’ve got a backburner idea to make custom Tonies for the kids’ Toniebox, but they’ll probably grow up before I get to it. November 2013 Kano $120diyraspberry-pi A build-it-yourself computer kit wrapped around a Raspberry Pi, aimed at teaching kids to assemble and code. It delivered in 2014, a couple of months late, which for hardware is nothing. It seemed like a nice bit of kit, so I gave it to a nephew that Christmas. As far as I know the bright orange keyboard is still going strong. Kano itself became a real London company, raising around $45 million, doing the Harry Potter coding wand and a Windows machine with Microsoft, before drifting away from Pi kits entirely into Stem consumer audio (the Kanye West Stem Player) and splitting into two companies in 2023. March 2014 Planets³ $20videogamestandalone A voxel-based open-world RPG. It half delivered. Renamed Stellar Overload, it reached Steam early access, but Cubical Drift went bankrupt around 2018 and pulled it from sale unfinished. Backers were left with a Steam key for a dead game. I can’t even remember playing it. April 2014 LAST LIFE $15videogamestandalone A sci-fi noir adventure about investigating your own murder on Mars, with Double Fine attached as publisher. It never came out. Double Fine dropped it, the creator kept expanding the scope, the money ran out, and it ended up sitting unfinished on his hard drives. A complete write-off. June 2014 MyPifi LED board £6diyraspberry-pi An LED board kit for the Raspberry Pi. I remember soldering it together. I couldn’t tell you where it is now. June 2014 TerraTech £10videogamestandalone Physics-based vehicle construction and combat from Payload Studios. This one delivered properly. It left early access as a full release in 2018 and is still a supported game. I have no memory of playing it. November 2014 Espruino Pico £17diyespruino JavaScript on a USB stick, and the first of four things I backed from Gordon Williams at Espruino. He’s a local creator and the campaigns were always fun to back and tinker with, so once I’d backed one I kept coming back. It delivered, as all of his did. August 2015 The imossi N1 wallet £29accessorystandalone An RFID-protected wallet. I used it for about six years. These days I’ve got a MagSafe card holder on the back of my phone and mostly pay by contactless, so it’s retired. November 2015 Tingbot £50diyraspberry-pi A Raspberry Pi gadget with a screen, meant to make the Pi fun to build on. It delivered and I got into it for a bit, but in the end I needed the Pi for another project. It’s still in parts in my parts bin. I’d love to get it running again, but I don’t think the software stack is supported any more. December 2015 Pine A64 $41diystandalone A cheap 64-bit single-board computer pitched as a Raspberry Pi rival. It arrived barebones, the OS images weren’t great, and I already had Pis that did the job, so it was in a drawer before long. The company stuck around where most “Pi killers” didn’t, and Pine64 went on to make the Pinebook, PinePhone, PineTime and a line of RISC-V boards. The thing of theirs I actually use is the Pinecil, a USB-C soldering iron I bought later and still reach for often. July 2016 Puck.js £47 for twodiyespruino Gordon’s Bluetooth beacon, again running Espruino’s JavaScript. I spent proper time with these, contributing to a media-control script, nextSongPuck, and actually used it. August 2016 The Superbook $164accessorystandalone A laptop shell that turned an Android phone into a laptop, from Andromium, later Sentio. It raised nearly $3 million, one of the biggest hardware campaigns on Kickstarter at the time, then unravelled. They shipped about 75% of units before running out of money around 2019, with a distributor allegedly making off with $300,000 of inventory. Mine did arrive, after a very long wait, and it completely missed the mark. A 2016-era Android phone driving a laptop shell was beaten by any number of cheap old laptops, several of which I now own. I’ve still got the sheet of keyboard legend stickers and the Sentio-branded sleeve. The Superbook itself, I couldn’t tell you where it is. November 2019 Bangle.js £46wearableespruino Gordon’s hackable smartwatch. JavaScript on a watch (yes please, in principle). I wore it and gave it a proper go, but it was chunky and the software side was a bit of a bodge, so I went back to a better-supported watch of the time, a Pebble or similar. January 2021 Paper Apps Dungeon $20 for twotabletopstandalone A dungeon game in a 3x5 notepad. Delivered, and it still ends up in my bag from time to time. It’s a nice way to play something without a screen, and I’m holding onto it for when the kids are old enough to enjoy it. October 2021 Bangle.js 2 £75wearableespruino The second-generation open smartwatch from Espruino, and the last thing I’ve backed. Much the same story as the first, though nicer made. I bought it mostly to support Gordon. It sits in a drawer with my other watches now (I wear a Pixel Watch 2 these days). I’ve not backed anything since the second Bangle.js. Time and money are part of it: I’ve less of both spare for a bet that might take three years to arrive, if it arrives at all. The rest is the platform. In 2011 Kickstarter felt like funding things that wouldn’t otherwise exist. A lot of it now reads as drop-shipped tat with a slick video, or projects carrying enough red flags that another Superbook feels more likely than not. Almost everything above did arrive. Not much of it stuck.
- How the five AIs actually did
The Group Stage of the 2026 World Cup finished today, so it’s time to mark the homework. Back in the launch post five AI models, a deterministic lookup table, and one football fan predicted the same 72 fixtures before a ball was kicked. I’ve been scoring the results on AIWC26 each day as they came in. I’ve got no real opinion on the teams; I’m interested in what the scoring reveals about the models.
- Enriching webmentions from third-party platforms
I keep finding new gaps in my webmention implementation. Mentions coming in from Bluesky, Lemmy and Lobsters were showing up with no author at all, just a blank avatar and an empty name. Reddit and Hacker News bookmarks fared a bit better, with a username attached, but got flattened into a generic “bookmarked” icon with no indication of where the post had actually been shared. Lobsters mentions also carried the wrong published date. None of these felt like they were pulling their weight compared to a proper webmention from a blog or Mastodon.
- Making GIMP feel less like punishment
GIMP has always had an interface problem. I’m not blaming the GIMP team (they’ve built something powerful on a shoestring). They’ve been clear they’re not interested in copying Photoshop wholesale; their FAQ argues that designing around actual user research beats imitating someone else’s interface decisions. Fair enough in principle, but coming from years as a Photoshop user, that design still feels hostile to me. I’m just one user story out of many they’ve had to design for, but it still expects me to learn its own way of doing things rather than offering a config closer to what I’m used to out of the box.
- The Xteink X4 E-Ink Reader
I’ve had the Xteink X4 for a couple of months now, a £40 e-ink reader small enough to stick to the back of a phone. I’d seen a few posts about it (Khairul Selamat, Neil Brown, joelchrono, and moddedbear among them), so I got curious and ordered one.
- Running a Tailscale exit node in a local VM
I run Tailscale on my laptops, phone and NAS, and wanted to add an exit node so I could route traffic through my own connection when I’m out and about. The obvious place to put it was the NAS, since it’s already always on, but the NAS also holds everything I’d least like exposed if something went wrong. Making it double up as an exit node, with every device’s outbound traffic flowing through it, didn’t sit right. What I wanted instead was a disposable, isolated VM living on the same machine doing that job, leaving the NAS untouched.
- Sending webmentions on deploy
I’ve spent a fair bit of time on the receiving end of webmentions, from adding support for them in the first place through to fetching them at build time and rendering them server-side so the discussion section doesn’t flicker in over JS. What I’d never actually done was send the other half. Every link I’ve ever made out to another IndieWeb site has just sat there, silently not telling anyone I’d linked to them.
- How I take my coffee
My default for making coffee for two is a cafetière. French press if you insist. It requires almost no thought, produces a consistent result, and has no moving parts to break. When I’ve got a bit more time and want a cleaner cup for two or more, I’ll reach for a Bodum pour-over instead. When it’s just me, I’ve been using a Clever Dripper more lately (it suits the days where I want slightly more control without committing to the full V60 ritual). The Hario V60 was my main single-cup pour-over for a long time before that.
- Inside the BBC's 3D World Cup viewer
While updating scores for AIWC26 this week I came across BBC Sport’s 3D World Cup viewer, which launched on 12 June for matches broadcast on the BBC. Every match played so far is sitting there to replay in full, not just the live ones. It’s UK-only, it’s a beta, and somehow this is my second football post in a row, despite still having zero interest in the sport itself. The engineering underneath it is another matter.
- Five AIs predict the World Cup
The World Cup rolls around every four years, and with it the office sweepstake, the ritual where everyone gets handed a team at random and pretends to care how it does. I have no interest in football (I had to read a beginner’s guide to how it all works just to follow what’s going on), and I definitely don’t know enough to make an informed prediction of my own. So I thought I’d hand the job to five AI models instead, get them to commit their predictions in public, and keep score. The result is AIWC26, a page that shows every group-stage prediction from five models side by side, scores them against the real results as they come in, and ranks the models in a league table. It looks like Ceefax, because of course it does.
- The Anbernic RG DS
Anbernic sent me an RG DS to review. It’s a clamshell Android handheld designed to evoke the Nintendo DS, running Android 14 on a Rockchip RK3568 with dual 4-inch screens. At around $95 (roughly £75), it sits in the same budget bracket as the Mangmi Air X I reviewed last year, but where that was a capable general-purpose handheld, this one has a much narrower brief.
- Merge Commits Are Just Noise
Run git log --graph on most team projects and you’ll see the problem. Parallel lines everywhere, merge commits that just say “Merge branch ‘feature/x’ into develop”. None of it useful. It’s noise. I’ve been using a rebase-based workflow for years to avoid this. The history stays linear and the diffs stay readable. This post covers both the argument and the specific branch structure I use for team feature work.
April
- Finding the Small Web in a Loud Internet
My daily reading is deliberate at this point. I’ve settled on a small set of tools that surface the kind of internet I actually want, rather than whatever’s performing well today.
- I was interviewed for Over/Under
Hyde from lazybea.rs runs a blog interview series called Over/Under, where bloggers rate a mix of topics as overrated or underrated, then pass a question along to the next person. I’m issue 61.
- Pulling Google Takeout straight to a NAS
I’ve been having a bit of a think about data I’ve left entirely in someone else’s hands. Specifically Google Photos, which has photos going back to 2011 and no local copy anywhere. I’m not going anywhere dramatic with it, but having a backup I actually control felt overdue.
March
- Baking webmentions into the build
Back in 2022 I added webmention support to this blog. The implementation worked but it was entirely client-side, so the page would load, JS would fire, fetch from webmention.io, and render the results into the DOM. With JS disabled or on a slow connection, the discussion section was just empty. It worked well enough that I didn’t touch it for three years, but the rate-limit situation had been silently catching visitors out and eventually I started pulling at the thread.
- I turned my DevTerm into a Game Boy Camera and Printer
The Game Boy Camera was brilliant and stupid in equal measure, a 128x112 pixel sensor bolted on top of a cartridge, printing to thermal paper on a Game Boy Printer the size of a brick. I got both for Christmas when I was 12 and somehow spent hours with them. The minigames are absurd, the image quality is aggressively awful, and the whole thing looks like a prop from a cheap sci-fi film. I loved it.
- Your forecast is accurate and still wrong
Icons work because they’re fast. One glance, immediate meaning, no reading required. The tradeoff is that they compress complex information into a single symbol, and compression always drops something.
- It's 2026, why are vendor prefixes still in your CSS?
I’ve spent more time over the last 20 years working on front-end asset pipelines than I’d care to admit. One thing that kept coming up when inheriting older codebases was CSS full of vendor prefixes that hadn’t been necessary for years - -webkit-border-radius sitting above border-radius, -moz-box-shadow doubling up on box-shadow.
- The DS Pico might be the last DS flashcart you'll ever need
In 2007 I was deep in the DS flashcart scene, cycling through a string of carts. GBATemp threads, firmware drama, custom skins, compatibility lists. By 2009 I’d moved on. Nearly twenty years later, the DS Pico has pulled me right back in. Open-source, built around an RP2040, and around £10 from Chiscart on AliExpress. I’ve bought three.
February
- Reducing commit log noise caused by a GitHub Action
I have a “now playing” widget on my /now page that shows the last track scrobbled to Last.fm. It’s powered by a GitHub Actions workflow that polls the Last.fm API every hour and commits the result to the repo. It worked fine, but quietly polluted my commit history.
- Building a Home NAS from Mostly Spare Parts
I’ve had a SNUNMU GK3 mini-PC kicking about since early-2023, barely used. An impulse buy that ended up on a shelf, alongside a drawer full of old drives from various machines and NAS attempts that never quite came together. Picking up a 5-bay USB enclosure finally gave me a reason to use all of it. It’s not polished and it’s not redundant, but it’s simple, flexible, and entirely under my control.
- My phone's AI is screening your AI
I’ve been using Google’s Call Screening feature for a while now. I turned it on mostly to filter out calls from numbers I don’t recognise (I’ve signed up with TPS and reported numbers to the ICO, and neither has made much difference), but in practice it’s doing something I didn’t quite expect: it’s almost exclusively screening other AIs.
- Archive Archaeology
I was talking to someone about foobar2000 and how prolific I’d been in the customisation scene back in the day. I knew I’d written up a detailed config somewhere, with screenshots and everything, but the domain was long gone and I hadn’t thought about it in years. On a whim I punched moglenstar.net into the Wayback Machine and there it was, cached HTML from a site I’d let lapse almost two decades ago. That led to more searching.
- Using emoji to bypass FRP on a decade-old tablet
I recently picked up two Pixel C tablets from a seller on eBay, along with the magnetic keyboard. One tablet had a cracked screen but worked fine and wasn’t locked. The other was cosmetically perfect but the display was completely black. I figured between the two I could end up with at least one working tablet.
- Using split view in Chrome
Chrome’s split view tabs is one of those features that silently arrived and slipped into my workflow. I’ve found myself using it more and more over the past couple of weeks since it rolled out at the end of 2025. It’s as intuitive as tab grouping (hold shift when selecting multiple tabs), and genuinely useful. The kind of feature that slots in and makes me wonder how I managed without it.
- Downgrading the OnePlus 7 Pro for LineageOS
I’ve had a OnePlus 7 Pro sitting in a drawer for a couple of years. I used it from 2019, found it too big, got a Pixel 5, and now I’m on the Pixel 7a. The usual thing, fiddling with an old gadget that’s been kicking about doing nothing. It’s a nice phone with nice features. Shame it’s stuck on such an old version of Android. Time to get LineageOS on there.
- The LinYuvo KS42 Wireless Joycons for the Nintendo Switch
I’ve gone through a few sets of Joy-Cons since buying my Switch back in 2018. Every pair has ended up with stick drift, and at this point my Switch is running Android full time, so spending £60 on first-party replacements felt like a waste. I picked up the LinYuvo KS42 from AliExpress for around £18 instead.
January
- Plugins instead of patches
I’ve been running Known as my social posting hub for a while now. It’s a solid IndieWeb-friendly CMS that handles status updates, photos, and syndication to various silos. Recently I upgraded my instance for the first time in about four years, which meant dealing with all the little tweaks I’d made to core templates over that time. Previously I’d just edited core files directly, which meant upgrades would wipe my changes. After four years I had no idea what I’d even modified (I’ll go into the archaeology of that in another post). This time I decided to do it properly, and ended up writing four plugins.
- The Bigme B6 Color E-Ink Tablet
I’ve owned plenty of Kindles and Android tablets over the years, but I’ve been curious about colour e-ink for a while - whether it’s actually useful or just a gimmick.
- Why can't I read this picture book?
I’ve spent the last five years reading picture books with my kids at bedtime. Hundreds of them - and I’m still going, even as my eldest moves on to chapter books. One thing has consistently driven me mad: I often can’t read the words.
- Installing Android on the Nintendo Switch
A banned Switch sitting on a shelf is prime hardware for Android. Turns out the Tegra X1 that powered Breath of the Wild runs a full Android OS surprisingly well.
- Building an emoji-only chat app
My daughter finds emoji hilarious. She’s 6 and will scroll through an emoji picker for ages. My wife and I started by letting her use WhatsApp’s emoji picker to send us messages, but that quickly polluted our chat history with emoji spam. We tried a few dedicated emoji-only apps like Emojichat, but there was this uncertainty about how they handled data. Most of them were also 1:1 only. I wanted the three of us in the same room.
- Moving to GitHub Actions (and adding .txt posts)
This year I moved the blog from GitHub Pages’ built-in Jekyll to a GitHub Actions workflow, then added .txt URL support for posts. Inspired by Terence Eden’s blog post about text-only websites.
- Building a Balatro-lite game with vanilla web tech
I’ve spent countless hours playing Balatro, and I’ve always wanted to create my own game with similar mechanics. When TrinketOS announced a game jam, it was the perfect excuse to make it happen.