That one Time we Snuck Into Romeo Pier
&& [ other ] && 0 comments
Old Romeo Pier was demolished in 2018.
Two decades before that a group of bored teenagers from in and around Half Moon Bay, CA decided it would be a good idea to sneak out onto the long closed to the public pier at night.
I was one of those teenagers that ventured out there in April of 2004. At that age I used to carry a camera with me at all times (according to the intact metadata it was a Casio EX-Z40).
I do remember being pretty freaked out. The walk out to the building at the end of the pier was long and extremely dangerous. The decking was rotting and full of holes that could have easily sent one of us into the harbor. And it was dark - we didn’t use flashlights for fear of being seen. Ever heard that teenagers are dumb?
To this day the inside of the building is still the creepiest place I have ever been. The floor was covered with bird shit and dust. It smelled like the ocean mixed with mildew. The sound of the water moving underneath the floor combined with chains clanking with the tide really added to the horror film ambiance. Disturbingly there was no graffiti - the presence of any would have been a comfort.
And then there was the meat hook. Really? A meat hook hanging from the ceiling? Even at the time I remember thinking that was too cliche to be real. It looks like I even took a photo of it. (Upon closer inspection in 2025 it doesn’t appear to actually be a meat hook.)
Anyway, I did some searching and really couldn’t find any photos of this place, so I thought I’d share mine. These likely aren’t representative of the Romeo Fish Company during it’s heyday, but at least it’s something.
This Historic Building Documentation Report from the county of San Mateo contains a good history of the pier.
The Technium - A Great But Little Known Podcast
&& [ code ] && 0 comments
Recently I stumbled upon the 9Front website while doing a bit of research on Plan9. This only increased my interest. Seriously, check out the 9Front website. It’s pretty wild.
But the dog needs walking, so that day I decided to do a search for Plan9 in the podcast app to see if I could keep the mood going.
That’s where I stumbled upon the Technium Podcast a show where two dudes drink something and talk about new and old tech. Not exactly a novel concept, but I was almost immediately impressed. Their episode on Plan9 was well-researched and entertaining. The level of technicality is pretty high, something that is very hard to find in podcasts. If you aren’t already a programmer, some of their shows might be difficult.
![]()
Other episodes I enjoyed were on the APL language and Smalltalk
Sadly they seem to have stopped doing the show - their last being titled “LLMs eat software development” which is a bit ominous. I looked them up on YouTube, only about 400 subscribers. They deserve many more!
View .fit Files in the Terminal With f2i
&& [ code, rust, astronmy ] && 0 comments
Ever wanted to preview astronomical .fit files directly in your terminal without the need for DS9? Neither have I, but no matter - now you can.
It’s also just a crazy fast thumbnailer. Python is great but Rust beats it out if you can get it to work for you. In this case, ndarray and cfitsio were up to the task.
Messing with AI Bots for Fun with django-llm-poison
&& [ python, code, django ] && 4 comments
The internet is filling up with AI slop and you and I dear reader, are unwilling accomplices to this rapid decline. Big tech may have created the models but the models are trained on our words. Social media posts, forum rants and of course blogs like this one, all hoovered up into the LLM.
At least in some cases, we have a choice of whether to continue to feed the machine.
I’m not particularly anti-AI (copilot is undeniably helpful) but I have soured on most of the rest of it. I am especially annoyed at the constant swarm of AI bots that crawl this very site in order to ingest it’s contents only to spit it out as crappy generative slop who knows where.
My answer is a middle-finger of sorts to these bots. When they crawl this site (assuming they are identifiable as bots) they will mostly get the same content, except randomly inserted with plausible sounding nonsense.
To demonstrate view this very post with bot-mode enabled.
I’ve packaged it up as a reusable Django app django-llm-poison so that others running Django powered websites can use it as well.
It works by generating Markov chains from the content on the site. When a bot requests content the response is the same but with every few sentences replaced by Markov nonsense (I am aware of the irony of using very primitive generative “AI” to combat current AI). In this way, the quality of training data provided by this site is greatly diminished while remaining the same for human visitors.
Of course this site is an insignificant blip in the vast sea of information, but nonetheless, I derive a certain satisfaction for this small act of techno-disobedience.
The Arch Linux Subreddit is Horrifying
&& [ code, linux, arch ] && 1 comments
This is not a rant about elitest arch-using neckbeards (I am one!) being mean on the internet. No, the Arch Linux Subreddit is horrifying because it provides a glimpse into just how absolutely busted some of it’s user’s machines are.
I’ve been using Arch for the better part of 10 years. It’s been rock-solid the entire time. But I keep hearing about it’s supposed instability. Well, now I understand why. This is a lesson in why no matter how good your software is PEBCAK nullifies all.
As a perfect example consider this thread: How Often Do You Run sudo pacman syu?

This is subtle, but potentially the most offending post in the entire thread. This user is constantly performing what is what is called a partial upgrade. Esentially they are installing software that might depend on updated libraries that are not present on the system because they are not doing full upgrades. Very bad, and the arch wiki warns explicitly against doing this this exact thing. If I had to try to cause my system to become unstable, I couldn’t think of a better way than this.
It gets better:

This is just abuse! Not only of the machine but of Arch’s mirrors. There is so much redundancy in here it hurts. Absolutely unnecessary.
Also in this thread a lot of people saying “never” “every 3 months” or “when something breaks”. I’m not saying you need up update impulsively, but a rolling release distro works best when it’s actually kept rolling. Massive updates only a few times a year can be problematic.
It’s not my intention to make fun of less experienced people here, or the slice of them that happen to hang out on Reddit. But when you hear someone complain that Arch is unstable, keep in mind the myriad of ways it might not be the distribution’s fault.
A Repository of Themes for the Cosmic Desktop
&& [ code, linux, cosmic ] && 2 comments
System76 recently released the first alpha of their new desktop environment, COSMIC. It has some neat theming capabilities, something I’ve missed since who knows how long ago when GNOME started removing the ability to theme GTK.
The COSMIC settings app already provides the ability to import and export themes. So I thought it would be cool if there was a place where people could share thier creations. Like the gnome-look.org of old, before it was completely gimped.
Since no such site existed, I made it myself!
I didn’t want to have to rely on screenshots. They are boring, inconsistent, not always demonstrative of the actual product. So I decided that extracting the actual theme parameters and applying them to a fake “window” using CSS would be a fun approach. As a bonus, these preview windows are interactive! For example to download a theme, you press a “download theme” button which is styled in the theme itself.
In order to extract the CSS, I had to write a small rust program to parse the theme .ron (Rusty Object Notation) files and spit out CSS variables. In the future I’d like to extend this program to do other stuff (like output editor color schemes).
I manage to build and deploy the site in about 2 days. So far people seem to like it and a few have even uploaded their own themes.
They range from the scary:

To the sublime:

But it’s nice to see options other than the standard Catppuccin, Gruvbox, etc.
This was the most fun I’ve had with a weekend project for some time now. I’m looking forward to seeing how it evolves.
Landed a PR for COSMIC and I'm Irrationaly Excited About It
&& [ code, linux, cosmic ] && 0 comments
My parents gave me my first computer when I was 14 years old. I played a lot of Unreal Tournament at the time. At some point I heard about this thing called Linux that actually played UT better than Windows. So my dad drove me to Circuit City and I bought a box full of CDs that was Redhat Linux 8. What followed was weeks of running a nearly inoperable computer as I formatted and re-formatted the disk every time I ran into some issue I couldn’t fix - which was a lot.
Eventually I figured it out and I’ve been using Linux and my daily driver ever since. I did get into programming, but mostly for the web. I even made a website about Unreal Tournament which is a hilarious time capsule.
That all said, I always looked up to and admired the (in my mind) godlike developers that wrote the software I used every day. Gnome, KDE, the kernel, Tiling WMs, Firefox… these were the realms of the programmers I looked up to the most. I’ve always had a latent desire to contribute myself, but never really got comfortable with the tech to do so.
Until today! I managed to land a small PR in cosmic-files - what I would consider to be “major” open source software. Or soon to be.
Anyway, I hope this is just the beginning.

Bender DD 2: Running Gnome Apps Outside of Builder
&& [ code, linux, bender, gnome ] && 0 comments
Builder is pretty neat as an IDE for GNOME. For bootstrapping a new GNOME app, I found it to be downright amazing. Once I started getting down to writing actual code however, Builder’s limitations started to become apparent. Christian Hergert is doing an amazing job writing an IDE but wow, it must be an uphill battle trying to turn a GTK text widget into a full blown text editor. Honestly if it used embedded Neovim it could be perfect; Builder does have VIM emulation which was almost good enough, but the undo stack is buggy and caused me to lose 30+ minutes of work at one point. The second time it happened, I started to look for ways to work on Bender outside of Builder.
It’s not entirely clear what commands Builder uses to run an application. But as of this writing the bootstrapped application is a Flatpak app utilizing Meson as the build system. Armed with that knowledge, we can use the following commands to build and launch the app from it’s working directory:
flatpak-builder flatpak-build-dir com.my.App.json --force-clean --user --install
flatpak run com.my.App//master
Replace com.my.App with your application’s ID.
The first time you run these commands, you’ll run into errors.
First, check the modules section of the com.my.App.json file. You’ll find
something that looks like this:
"type": "git",
"url": "file:///home/mario/Documents"
It needs to be edited to either point to a real git repo, or changed to point to the actual project directory:
"type": "dir",
"path": "/home/mario/Documents/Bender"
If you see a validation error about a missing metadata, edit the
data/com.my.App.metainfo.xml.in file to include a summary:
<component type="desktop">
...
<summary>If you ain't crashin, you ain't smashin</summary>
</component>
There may be other issues, but the errors should make them obvious.
Now you can throw those initial commands in a Makefile or some script and you’re writing GNOME apps in your editor of choice!
Here is Bender launched by the ctrl+b shortcut in Sublime Text:

Bender Development Diary 1: A Webdev Goes Native
&& [ code, linux, bender, gnome, vala ] && 0 comments
I’ve been writing code using Linux as my main OS for over a decade now. Despite this long and fruitful relationship I have yet to do any real native development for this beloved platform.
I tell you what, I can whip up some damn good JSON APIs. But it’s time to try something new. I’ll be creating an application for Linux. Specifically for GNOME. Using GTK.
Picking a Language
From what I can tell there are a few options for developing on the GNOME platform: C, Rust, Python Javascript and Vala. The reason for this is GObject. When you are developing for GNOME, what you are working with are the C libraries that all start with G: GObject, GIO, Gee, etc. So the language you choose either needs to have bindings or be able to call into the C libraries directly.
I’m only considering languages with native bindings. I’m not elite enough to use FFI (although I would really love to program in Zig).
C: I’m not smart enough 🙃
Rust: Honestly long-term this is probably the way to go. But after looking at the GObject bindings and some GTK apps written in Rust I’ve decided I don’t really want to fight both GTK and Rust at the same time.
Python: I already write a ton of Python. So naturally, this is where I started. The GObject bindings look decent. Anything Async looks not great (network calls being the big one). Python has always been really bad at this. We have Asyncio now, but GObject does not support it. The concurrency model is based around callbacks. GNOME has it’s own network library, Libsoup. You could use Requests or HTTPX but then I think you are relegated to managing threads 🤢 (could be wrong on this). So as I see it, by choosing Python you don’t get to use any of the things that make writing Pyhon great like Asyncio or the excellent third party libraries. But you are stuck with Python’s bad parts: a runtime dependency, weak typing, etc.
Javascript: No. 💨
So that really only leaves…
Vala is a C#-esque language developed under the GNOME umbrella, designed specifically for creating GNOME apps. It compiles down to C and provides GObject bindings by default. The niche application (developing GNOME apps) is both it’s strength and weakness. The integration with GNOME technologies looks great. But Vala’s Stack Overflow presence is a barren wasteland.
This means there better integration, but less prior art to pull from. I might actually have to think and write code using documentation as a reference. It’s scary, but an opportunity for personal growth. I welcome the challenge (for now).
Is it a dead language? There is a lot of hand-wringing by people online that think so and one very infamous blog post that I could find. Maybe it is. But I don’t really care. There are some pretty awesome Vala apps under development right now and that’s good enough for me.
The creat [sic] Unix System Call
&& [ code, linux, c ] && 0 comments
The start of section 8.3 of the venerable The C Programming Language by Brain Kernighan and Dennis Ritchie reads:
Other than the default standard input, output and error, you must explicitly open files in order to read or write them. There are two system calls for this,
openandcreat[sic].
It is very rare to see [sic] in a text about software because typos in software can be fixed. So why here?
Many UNIX commands are 6 characters or less
If you’ve mucked around in the Linux command line at all, you’ve probably run into this. Why is ‘umount’ not spelled ‘unmount’? is a great SO question that goes into this. The TL;DR is that back in the day, there were real technical limitations on the number of characters that could be used in, for example, file names. In fact, the pdp-11 on which Ken Thomson wrote the original Unix used a character encoding called Radix 50 that could store a maximum of 6 characters in a single machine word. Whether this limitation was real when these system calls were written is unclear, but the practice of using abbreviated words probably persisted.
But wait, creat is only 5 characters. So why drop the ‘e’?

It might actually be a typo
In the 1984 book The UNIX Programming Environment by Brian Kernighan & Rob Pike page 204 the following footnote appears:
Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: “I’d spell creat with an e.”
My pure conjecture? Ken Thompson was probably used to thinking up short
names for commands. creat was easy - just drop the ‘e’, and he may
have not even realized that the full word create would have been only
6 characters.
Redemption?
In 2009 Ken Thompson made this commit to the Go programming language:
spell it with an “e”

All is well that ends well ☺️