I’ve been hooked on the Guitar Hero games ever since I first played Guitar Hero II back in 2006.[1] That’s continued over the years, through many of the later iterations, playing custom tracks on a modded copy of Guitar Hero III (PC), and in recent years with the moddable-by-design fanmade revival Clone Hero. Partners and close friends will know that I’m an absolute fiend at it.| Luna’s Blog
Clopen Mic Night 4| moonbase.lgbt
unthinkable(un·think·able)| Luna’s Blog
ad nauseam| moonbase.lgbt
Have you ever bought a pre-owned game cartridge or MP3 player or something, and the previous owner’s data is still on it — and for a brief moment, you feel a sense of connection with that stranger through their lingering data, and a twinge of sadness at the idea of deleting it to use the device for yourself?| moonbase.lgbt
Watson| moonbase.lgbt
My blog is powered by a few hundred lines of Python code, turning a pile of json, markdown, and mustache templates into the static HTML that you’re looking at right now. In the source repository, each article is a folder containing at minimum a markdown file, plus any additional assets the article might need (images, videos, scripts, etc).| Luna’s Blog
In 2009, I join Twitter.| Luna’s Blog
This article does not contain plot spoilers for the Doctor Who 60th Anniversary specials.| Luna’s Blog
Since the dawn of October 1st 2022, the world has been plagued by the question:| Luna’s Blog
A little while back I was approached by the ZINE Radio demoscene podcast, inviting me on the show to speak about Executable Graphics, my field of expertise. Naturally I was eager to take part, so if you’ve ever wanted to hear me talk demoscene, here’s the interview for your listening pleasure:| Luna’s Blog
Recently I found myself needing to encode a string into UTF-16, for a hobby project interoperating with some software from the late ’90s.| Luna’s Blog
Note: This was originally a Twitter thread, and has been lightly edited for presentation here.| Luna’s Blog
Note: This is an edited retelling of the original Twitter thread from June 2021.| Luna’s Blog
Note: This was originally a Twitter thread, and has been lightly edited for presentation here.| Luna’s Blog
Note: This was originally a Twitter thread, and has been lightly edited for presentation here.| Luna’s Blog
Note: This was originally a Twitter thread, and has been lightly edited for presentation here, with some additional clarifications.| Luna’s Blog
Note: This was originally a Twitter thread, and has been lightly edited for presentation here.| Luna’s Blog
Note: This is an article from my old dev blog. External links have been updated, but the text is otherwise reposted verbatim.| Luna’s Blog
Note: This is an article from my old dev blog. The text is reposted verbatim.| Luna’s Blog
Note: This is an article from my old dev blog. External links have been updated, but the text is otherwise reposted verbatim.| Luna’s Blog
Note: This is an article from my old dev blog. The text is reposted verbatim.| Luna’s Blog
Note: This is an article from my old dev blog. External links have been updated, but the text is otherwise reposted verbatim.| moonbase.lgbt
Posted 13 June 2025 by | moonbase.lgbt
Olympus OM-20, Zuiko 200mm f/4, Kodak Ultramax 400| moonbase.lgbt
harman phoenix kinda rules actually| Luna’s Blog
It’s always nice when I’m able to get the subject in focus before they fly away ^^| Luna’s Blog
Olympus OM-20, Soligor 400mm f/6.3, Ilford HP5+ pushed to 800| moonbase.lgbt
Coming up next on ITV, The Inside Outtakes — deleted scenes and unused material from Bo Burnham’s 2021 musical comedy special Inside.| moonbase.lgbt
Some thoughts on the ergonomics of compiler version flags.| moonbase.lgbt
Olympus OM-20, Zuiko 50mm f/1.8, Ilford HP5+ pushed to 1600| moonbase.lgbt
Olympus OM-20, Zuiko 50mm f/1.8, Ilford HP5+ pushed to 1600| Luna’s Blog
Olympus OM-20, Zuiko 50mm f/1.8, Ilford HP5+ pushed to 1600| Luna’s Blog
Olympus OM-20, Zuiko 50mm f/1.8, Ilford HP5+ pushed to 1600| Luna’s Blog
“Try pushing HP5 to 1600” they said, and they were right.| Luna’s Blog
The last place I lived, there were several magpies that liked to play in the neighborhood. They would always put a smile on my face, and I miss them a lot.| moonbase.lgbt
Cohost was a place where I felt able to be vulnerable, in a way I don’t elsewhere online. | Luna’s Blog
I finished shooting another roll of film earlier today, which means y’all get to enjoy these satisfying camera noises before I load the next one.| Luna’s Blog
discord:paywalls being in more than 100 servers| Luna’s Blog
Olympus OM-20, Zuiko 200mm f/4, Kentmere Pan 400| Luna’s Blog
A lot of people don’t know this one weird trick — much like JavaScript, C also lets you perform arithmetic with mixed types:| Luna’s Blog
I encountered these lovely geese while out-of-town for a flat viewing a month or so ago. I’m still pretty new to film photography (and non-smartphone photography in general) but I’m very pleased with how these shots came out.| Luna’s Blog
I think I’m gonna die mad about this.| Luna’s Blog
You may be familiar with an oft-repeated factoid about the word bear, referring to mammals of the family Ursidae. It typically goes something like this:| Luna’s Blog
Did you know that humans are fallible?| moonbase.lgbt
Olympus OM-20, Zuiko 50mm f/1.8, Kodak Gold 200I spotted these while out on a walk a month or so ago, before autumn arrived. I’ve no idea what they are (my plant knowledge is essentially non-existent) but if anyone can identify them I’d love to know.| Luna’s Blog
This too is yuri.| Luna’s Blog
I’d like to expand and explore these ideas more, but I know what I’m like when it comes to writing my thoughts in long form, and given the choice between “post unstructured thoughts now” and “struggle to write a longer version and end up not publishing at all”, here’s the CliffsNotes:| Luna’s Blog
A new entry in the Uxbridge English Dictionary:| Luna’s Blog
The year is 202X, and you’re still writing C++.| Luna’s Blog
Olympus OM-20, Zuiko 200mm f/4, Kodak Gold 200, dev+scan by Come Through Lab#film photograpy#photography| Luna’s Blog
My blog engine is a horrible mess of duct tape and prayers. This is because I looked at the popular blog engines a few years back, and decided I’d rather use my own mess instead of someone else’s.[1] When I wrote the RSS feed generator,[2] I wrote it so that the updated field for each entry would be populated with the timestamp of the last git commit to touch the corresponding article (or any of its assets, images, etc). At the time, this made sense to me as a way to avoid having to manua...| Luna’s Blog
TL;DR: If you plan to publicly re-host posts from your official Cohost data export, strip the EXIF metadata from the images first — they may contain unredacted location data.| Luna’s Blog
...now you have!| Luna’s Blog
A new entry in the Uxbridge English Dictionary:| Luna’s Blog
With Cohost closing its doors, and everyone making their own personal sites with blogs and RSS rather than relapse back to the algorithm-driven social media hellscape, a lot of us have been making 88×31 buttons for our websites, just like the olden days.| Luna’s Blog
The Game of Video Quick Draw| Luna’s Blog
The classic British radio comedy panel game I’m Sorry I Haven’t A Clue features a recurring segment called Uxbridge English Dictionary, in which panellists take turns proposing humourous new definitions for existing words. This became somewhat of a phenomenon, sparking multiple physical books over many years, and of course countless listeners take to social media to suggest their own definitions.| Luna’s Blog
So here’s a neat lil’ thing I set up a while ago and habitually forgot about. Like most of the modern internet, if you visit my website via an insecure connection, you’ll be automatically redirected to use a secure TLS connection. Naturally, this means that older browsers can no longer visit the site, and I think that’s rather sad.| Luna’s Blog
This was originally posted on Cohost, a wonderful site which is sadly not long for this world.| Luna’s Blog
Presenting an unorthodox approach to the classic Fizz Buzz interview problem.| Luna’s Blog
In which I present a rapid-fire history lesson:| Luna’s Blog
A panel of demosceners explore how the creative process can thrive in the presence of self-imposed limitations. While this was recorded, the recording has not been made available publicly.| Luna’s Blog
In which I take the audience on a whistle-stop tour of the many horrible manifestations of the comma operator in C++.| Luna’s Blog
Originally released on Twitter, to critical acclaim.| Luna’s Blog
In which I explore the correspondence between regular expressions and finite state machines, inspired by Alex Clemmer’s It’s super effective! Solving Pokemon Blue with a single, huge regular expression.| Luna’s Blog
I want to order a pizza.| moonbase.lgbt
This began as a quick-and-dirty experiment[1] to visualize the UK National Minimum Wage in real-time, inspired by Blake Fall-Conroy’s Minimum Wage Machine.| moonbase.lgbt
I use the Freeform app quite a lot for doodling on my iPad.[1] It’s not a perfect app, but it works for my needs, those needs being “recapturing that childhood habit of idly doodling on grid paper”. However, I’ve noticed something that I now can’t un-notice.| moonbase.lgbt