About ten years ago, I looked at the Ghost blogging platform that originally powered this website and asked myself why. Why was I running a dynamic application on server hardware to serve a website that was completely non-interactive to everyone but me? Why was it necessary that every time someone visited a page on the site, server-side code would execute to pull content from a database and slot…
Throughout my career, I’ve had various side roles related to technical writing: in addition to doing the writing itself, I’ve built various writing and documentation tools and written a handful of style guides and how-tos. One thing that I don’t think I ever quite got right was imparting the correct usage of inline code (also called monospace / fixed-width / verbatim text ).…
Disclosure: I received a free review copy of this game from the developer. Regular readers of this blog will know that I am a big fan of point-and-click adventure games, to the point where the genre comprises the majority of my game review output on this website – the overwhelming majority, if we’re willing to define the genre broadly. I’ve played a lot of adventure games, from…
Today marks the public release of Riverbucket, a self-hostable, open-source web application for following blogs and saving bookmarks. I started the project a few weeks ago to get more experience with Codex after being a Claude Code maxi, and have been using it as a replacement for three different software platforms I previously relied on. The code is available in this Github repository , free for…
Google’s Nano Banana / Gemini Image family of image generation models are some of the most powerful tools for generating complex and precise AI images. However, when created through the official Gemini interface , all generated images are stamped with an unsightly Gemini spark logo 1 in the bottom-right corner, making them unsuitable for any kind of external use. I am so sick of seeing this…
As of today, I’ve been writing this blog for twelve years. Much has changed in that time. Like everyone in tech and tech-adjacent fields, much of the work I do on a daily basis has been transformed by recent advances in AI; first gradually, then suddenly. I’ve been a pretty enthusiastic user of generative AI since late 2022, though I had a fair amount of initial skepticism about…
A few months ago, I wrote about the deep weirdness of LLM technology , and how we’re all still learning how to approach its outputs. The marketing and popular perception of these models is that of a helpful robot assistant, and leaning into that characterisation is also a core part of what makes the technology useful in ways that straightforward text completion models weren’t. By pretending to be…
Over a decade ago, I had an Ubuntu install with a broken Unity desktop environment. Rather than fix it, I switched over to a tiling window manager , namely i3 . Since then, I’ve used i3 on every new Linux install. i3 is a window manager for X11, the windowing system used by most *nix systems since the 1980s. A replacement, Wayland, began development in 2008, but is still considered the new…
Most computer keyboards have a character key that produces this symbol: -. This is a hyphen, used to join compound modifiers, compound numbers (fifty-seven) and for certain nouns (father-in-law, break-in). The mark’s proper use is quite fiddly: we say “well-heeled benefactor” but remove the hyphen for “benefactor is well heeled” and omit it if the first word of the…
# I Over the past three years, services powered by large-language models have been rapidly adopted by consumers and businesses alike. Hope in the tech’s potential has made the graphics card company Nvidia a trillion-dollar stock. The technology is truly exciting and ground-breaking, with immense potential, but also deeply weird. We’ve never had to deal with anything quite like this…
Last month, I gave a talk on the exploitation of insecure Firebase applications with my Baserunner tool at BSides Joburg . I first developed this tool while pentesting a Firebase app in 2021, and have used it in many similar assessments since. It’s essentially a database query tool. Given a Firebase configuration and user credentials, it can run the same Firestore, Realtime Database, and…
As I am incapable of entering a used bookstore without purchasing something, I recently picked up a second-hand copy of RL Stine’s 2012 novel Red Rain . Stine is better known for the Goosebumps series of horror stories for children, a series I have a lot of nostalgic fondness for. This was one of his two attempts at writing horror for an adult audience. Another thing I have a nostalgic…
Last year I celebrated this blog’s tenth anniversary , so this year’s retrospective post marks eleven. Since that last retrospective, my posts have mainly been spurred by two manic projects: doing increasingly complicated things with Hugo render hooks and doing 60% of Advent of Code 2024 using a different programming language for each challenge. 1 I also reviewed a bad movie and,…
I ended my last post about AI image generation on the following note: ↗ DALL-E 3’s ability to create pleasant, mostly coherent images with plenty of fine detail from text prompts alone makes many of the Stable Diffusion techniques above feel like kludgey workarounds compensating for an inferior text-to-image core. […] I think it’s also likely that OpenAI is leveraging the same…
Advent of Code is a yearly programming event. For the 2024 edition, I decided to complete each challenge in a different language. After trying a lot of different language paradigms over the last two parts of this series, from rules-based to functional to logic to array, this next part represents something of a comedown. All of the languages I used for these five days were some flavour of…