Recent Posts

9 minute read



So, I’ve got an idea in my head (well, where else would it be?) about comparing open source to magic. That still needs a while to brew in my wizard’s cauldron, so stay tuned or set a remembrall to come back and check some time in the future.

But wait, don’t go yet! One of the common ideas in open source is “release early, release often”, so I’m putting up my thoughts now, in advance of weaving them into a more magical narrative. This post may have bugs, annoyances, and a few swear words, but rest assured if it breaks you can keep both pieces. Oh, and feel free to cringe at the titles, taken from popular songs - because what’s more magical than music?

A Kind of Magic
How could I possibly resist throwing this in?

On with the show…

Freedom is the Right of All Sentient Beings

Optimus Prime

Humans love novelty. Some people want to try new foods, see new places, or find new ways to use their coffee maker. I’m all three of those. And a geek who loves cartoons. But I also love finding new ways to use (and sometimes often break) my computer.

Broken PC
My PC, after one too many blue screens of death

But after using open-source systems for so long, going back to Windows or macOS is jarring. I just don’t have the freedom to customize it the way I want. In the words of a great philosopher “Freedom (to futz around with your desktop settings) is the right of all sentient beings”:

I want the freedom to completely reconfigure my workspace, with whatever look and feel works best for me. That might mean working in a bare-bones green on black terminal, spinning around a cubic desktop with compiz, or something that looks like it crawled out of the age of 80s cartoons itself. And I can mix and match bits of them as I see fit.

Like every classic cartoon bad guy, Windows wants to limit my freedom to do what I want. Freedom to change the position of my taskbar or swap out my wallpaper is barely freedom at all. For true customization I’d have to yank out the desktop shell and replace it with a third party alternative. Pretty, but not great for stability.

Litestep Windows shell. I used this a lot back in the day

The Mac is similar. I can choose from two themes, and I’m limited to the standard WIMP (Windows, Icons, Mouse, Pointer) interface. No tiling with i3m or PaperWM for me.

via Gfycat

My current setup is a stripped-down GNOME desktop with PaperWM that I mostly use for running a terminal emulator and web browser. It’s fully keyboard-driven, uses arcane key bindings (thank you Vim!), and is almost perfectly tailored for my needs. Going back to one of the standard operating systems makes me feel like typing with boxing gloves on.

My Gnome desktop
My current desktop, running Gnome and PaperWM

I yam what I yam

Okay, so Popeye wasn’t technically an 80’s cartoon, but that’s when I watched it. And it took me until not long ago to realize that the spinach stuff? Total fiction. I know, I feel as betrayed as you do.

Like Popeye, open source is what it is. It does what it claims to do (or fails trying if it’s buggy). Don’t believe what it says on the tin? Take a look at the source code on GitHub or work with a company like FossID to search vulnerabilities for you.

Closed source can be very different. Just recently we’ve seen Tiktok scraping clipboard data without consent and Microsoft sending telemetry in breach of privacy rules. If such prominent products were open-source, these issues would be sniffed out quickly, or less likely to arise in the first place since you’re doing everything in the open.

The Best Things in Life are Free

Richie Rich?

Back when I was a struggling student surviving on ramen and mince and cheese pies, I sure as Hell didn’t have any spare funds to throw at the latest Windows upgrade or (Heaven forbid) buying a Mac. I was stuck with what I had, or what I could download.

What I ate every day at university in New Zealand. Except mine didn't look half as tasty. Thanks to itravelnz for the pic

Then I saw a computer magazine in a local shop. It was one of those ones with CD-ROMs stuck to the front, offering the latest and greatest demos, shareware, and full versions of out-of-date software. And in this case, something called Knoppix Linux. For about 5 quid, I could not only get a new operating system, but one that came preinstalled with an office suite, programming IDE, graphics editor, and more. And I could share it with my friends for free!

Gnome 1.0
Gnome 1.0: This was my first Linux desktop, back in the day

For a penniless student like myself, this was the only way I could’ve got my grubby little hands on all of these shiny goodies. Pirating really wasn’t an option on a 56k baud modem, and this was before torrenting was really a thing.

US Robotics Modem
The "good" old days. Thanks to monado for the pic

I Have the Power

Open source software has the potential to continuously improve, and be driven by the needs of the users themselves. Sure, you could say that Windows 10 is an improvement on Vista, but there are definite downsides like ads clogging up your Start menu and your telemetry being reported back to Microsoft.

Windows 10 start menu
Where do you want to go today? Uh, not there...

You don’t like the direction in which your desktop environment is going? If enough users feel the same way, you can get together, fork it, and take it in a new direction. The MATE Desktop crew did just this with the Gnome codebase - they didn’t like the vision for Gnome 3.0, so took the 2.0 code and built their own version out of that. Just imagine trying to do the same thing with Windows or MacOS (admittedly, Gnome and MATE are desktop environments rather than full-blown operating systems like Windows, but that’s the beauty of it. Because it’s an open ecosystem, things are more modular. One system can have multiple desktop environments built in many different ways.)

MATE desktop
MATE Desktop

Let Our Powers Combine

In the words of Margaret Mead:

“Never doubt that a small group of thoughtful, committed, citizens can change the world. Indeed, it is the only thing that ever has.”

See? And you thought you’d only be reading about naff 80s cartoons, not reading quotes from one of America’s best cultural anthropologist

Margaret meant this in more of an activism context, but the same holds true for open-source hardware and software. Many of the world’s biggest software projects are open-source, and contributed to by millions of developers. Billions of people around the world use them every day, often without ever knowing:

  • [Web server OS]
  • [DNS]
  • [Browser]
  • [Android]

Live Long and Prosper

Again, not exactly an 80s cartoon, but I saw Star Trek: The Animated Series in the 80s and its message of peace and understanding inspires me to this day (well, if I’m being honest, Star Trek’s message as a whole, not just TAS)

The thing about a lot of closed-source software is that it doesn’t live long, and this can lead to a downfall in your prosperity. Just think about the most popular word processing software in the world? What happens if the owner goes out of business?


I’m not talking about Microsoft Word. I’m talking about WordStar, the dominant word processor of the 1980s. Thousands of users, including George R. R. Martin (from Game of Thrones fame) were left in the cold when it was abandoned. They’d invested time and effort into learning this system, and now what? Over time, operating systems deprecate old functions and old software “rots”. Now the only way to run that once powerful program is to install Linux and DOS emulator on top of that. Otherwise all of those .ws files you spent hours, days, and years on, are if not completely inaccessible, a total PITA to work with. It’s kind of ironic that now the only way to work with closed software like WordStar is via an open source system.

Now, how would that look in the modern day? Microsoft is way bigger than just Word, so let’s look at a smaller company that makes productivity tools: What would happen if Adobe went under?

  • You’d be stuck with your existing versions of Adobe software while the rest of the world marched on. After a while, operating systems will deprecate enough legacy code that old apps won’t run any more. I haven’t tried running Photoshop 1.0 on Windows 10, but I can’t imagine it would be easy
  • Even sooner than that, Adobe’s license activation servers would go down. Since Adobe Creative Suite is Software as a Service (SaaS), it relies on these servers to verify you’re a paying customer. No server means no verification means you’ll either have features restricted or you’ll be locked out completely
  • What happens then to all your PSD and AI files? You might be able to do something with them in Inkscape or GIMP, but there’s not 100% compatibility
  • If you want to keep moving forwards, you’ll need to learn a new piece of software. Goodbye muscle memory and interface familiarity!
Adobe dialog box
Illustrator? I barely knew 'er!

What happens if an open-source project goes under? If enough people care about it they can fork the code and keep it going themselves, just like MATE did.

The Magic School Bus

Isaac Newton
Fun fact: Isaac was also known for being a dick and sticking knitting needles into his own head

This is the quote that always springs to mind when I think of what open source has done for me personally. I got started with coding back in the bad old days of MS-DOS 5.0 and QBasic. I have fond memories of editing the physics in the Gorillas game to make the bananas fly where I wanted, and trying to build a Zork-like text adventure without initially realizing the sheer amount of object interactions I’d have to deal with.

Other kids got Donkey Kong. I had this monstrosity instead. via Gfycat

Gorillas came with Qbasic, and the code was available to view and edit. But really it (and BASIC itself) are just toys. I really got into programming with Python, and the open community has been so educational and helpful in building what I want, whether it's a terminal-based WeChat client, a tool to translate and summarize long PowerPoints from a professor, or a website to help hospitals get protective equipment more easily. Because I was building on open code bases (or in some cases, just open APIs and SDKs), I could see the magic for myself. The more popular programming languages and frameworks have extensive documentation and YouTube tutorials created by the community that helped me get running quickly, and by sharing the code myself, others helped me test it, fix bugs, and make it even better.

Almost a Slashfic: Kirk and Spock drinking beer

2 minute read

Script_buddy has done it again. Kirk and Spock drinking beer and having awkward conversations about airports. You can cut the sexual tension with a knife. It’s a perfect slashfic.

I’m still not quite sure how much of this output is from the Star Trek stuff I’m feeding in to script_buddy, and how much is it just riffing on material from the Internet Movie Scripts Database (which it’s been pre-trained on). I’ve written a script to create a more structured version of the Star Trek data and will try feeding that in over the next few days.

Now, without further ado:

Starting text: Kirk to Spock

The Script

Kirk sits at his desk. In response to Spock’s question, which seems at first confused, he takes a sip of water from a paper cup he’s putting away.

KIRK I’m thirsty.

SPOCK I’ll be on my way now.

He nods, then looks at the desk again. It’s empty.

SPOCK (CONT’D) (to himself) Oh. Damn.

Spock walks over to the kitchenette.

KIRK I guess we’re ready for dinner.

He picks up a bottle of beer from the fridge.


Spock walks in the kitchen.

SPOCK (to himself) I’m all out of beer! I’m done!

He goes to Kirk as he’s sitting up. The doctor is about to say something to Kirk when, with faint surprise, he looks at the fridge and finds a bottle of Budweiser on the shelf.


Spock sits down, with a beer in hand.

SPOCK (continuing) That’s beer. Budweiser. For you.

He takes a sip of it.

KIRK I’ll have it back soon.

Spock goes to the fridge and pulls out a bottle of Scotch Malt whiskey from under the counter. Kirk drinks.

SPOCK (continuing) I hope you haven’t had it yet.


Holly walks down the hall with another drink.

HOLY There must be some kind of a mistake here.

Holly returns the drink.

HOLY There’s a mistake on the hall.


Kirk and Spock make a quick detour across the airport.


Spock returns to the desk, and pulls a chair from a nearby chair.

SPOCK (continuing) I think we might get out of here.

Spock hands Kirk a plastic bag with his jacket inside.

KIRK (laughing) We must really have been in a long line of students at the airport.

SPOCK (continuing) We could still go back…

KIRK (to himself) Of course we could.

SPOCK (continuing) …to the hotel.

KIRK (worried) We may have to wait a few more days to be deported.


An usher enters the window.

AIRSOVEREIGN May we help you with your boarding pass?

KIRK No sir. I’m very anxious to go.

Spock leaves the usher to the reception desk and exits on the tarmac.


Spock sits down in front of Kirk.

KIRK (continuing) I’m sorry if that was a bit awkward.

SPOCK (continuing) I’m just a little anxious. We just need to talk about the flight. I could always make it back later.

KIRK (after a moment) I’d much rather.

Spock hands Kirk a plastic bag with his jacket inside.


Holly enters the kitchenette with a soda.

HOLY (continuing) The flight…that was just an accident.


The door closes.

Deep Learning with Star Trek: Part 1

5 minute read

I’ve been thinking lately, that sooner or later it’ll be possible to create TV episodes with deep learning. Just look at the tech we already have:

  • GPT-3 - text generation that is getting on for human-level quality
  • Deepfake - mapping one actor’s face onto footage from a different actor
  • Real Time Voice Cloning - does what it says on the tin

Today, many of the above technologies are still in their infancy, and I’m not confident we could re-create an episode of say, Star Trek, that would fool anybody. But we can create a janky knock-off just for the hell of it. Think of it as like B-4, the less bright younger brother of Lieutenant Commander Data.


Now, if we’re creating a TV show, the first thing we need is a script. I used script buddy v2, a film script text generation tool. It was a pain in the ass to get it up and running (I’m looking at you pip install torch and your not being able to find a version on Pypi that clearly exists) but I got there in the end. It’s even got a pretty graphical interface:

I haven’t yet fine-tuned it for Star Trek (that’ll be for a future post), but here’s what I got when I used “Space: the final frontier. These are the voyages of the starship Enterprise. Its five-year mission: to explore strange new worlds. To seek out new life and new civilizations. To boldly go where no man has gone before!” as the starting point:

Star Trek: The Ruth of Kahn (Yeah, that’s the title I’m giving it)

Space: the final frontier. These are the voyages of the starship Enterprise. Its five-year mission: to explore strange new worlds. To seek out new life and new civilizations. To boldly go where no man has gone before!



The Enterprise is being launched out of the planet’s atmosphere in a massive solar flare. It reaches the vast emptiness of space. It’s mission is complete: to boldly go where no man has gone before.



A huge cloud of dust streaks by them, blocking their view. As the ship rises in space, their view is blocked by clouds of dust. The entire planet is now a shiny, glassy mirror of the stars.

And now they begin to make their way to the surface. The clouds now obscure the view of the ship.


THE DUST has cleared. A small, primitive human city is visible. The two of them are in the center. On the roof of the building.


TIGHT SHOT of the rooftop, as they approach a very long-legged woman in her late 20’s. The two of them walk up to her, and talk for a moment.

TIGHT SHOT. The woman turns her head and smiles, and a smile spreads across her face.



CLOSE SHOT on RUTH, a young girl from the audience, a perfect version of RUTH. She’s singing in a low-rent country style. She makes her way up the stage towards the audience.

And as the last bars die down, she starts to sing again. And again. And again. And again. And then we FLASHBACK ON them as she stops. and looks down at her hands, as if looking at a mirror.

FLASHBACK ON RUTH as she is getting up and talking to the crowd. And finally looking at her hands. And the next bars, and the next, and the next and the next.

TIGHT SHOT. RUTH is getting more and more excited about the music and the act. She gets up and starts to sing again, which is then interrupted by:



We see the Enterprise through the sun. RUTH is walking along the beach towards the ship. We see the ship and see her smile. She looks right at the crowd. There’s a very large number of people there, including a very young HONEY.

And now they’re on the ship. She stops, to get closer to her ship. There’s a lot of activity up front, as they take their seats and the audience get’s the chance to lick their lips and dance. The music is still high.

And now we FLASHBACK, as she notices a man sitting alone on one of the decks. She walks over and sits down beside him. He looks very bored.

And now they start to dance. She’s a very good dancer. RUTH is smiling a lot, and she does a lot of hip moves. Her audience is very supportive, giving her credit for having a good time. This is a big moment for the audience.

Finally she hits the end of her swing.


RUTH is dancing very close to the door where the audience was waiting. As she pulls up her seat belt, she sees:


She sees that she’s going to be there for the whole time, and there’s a very large number of people waiting to see her.

HONEY Hi. I’m looking forward to being here all day.


The audience is completely silent, they’re just watching her dance. There’s a lot of noise from the people who have tickets. It’s quite a sight.


And HONEY looks up at the entrance. It’s filled with people from the audience, many of whom are dressed very different. And they start to cheer for her.

HONEY Oh my God. Thanks.



She goes to the door.


A beautiful view of the ocean.



A very large view of the ocean.



I mean it’s not great, and it’s not Star Trek, yet but it’s not completely bad:

The Good


  • It clearly picked up on the space angle with its mentions of Jupiter
  • I dig the cinematic opening with the solar flare and planet turning to glass

The Ridiculous


  • The Enterprise completed Starfleet’s mission pretty damn early, right in the first few lines it’s already boldly gone and done it
  • A dance studio? I guess it could be in a holodeck??
  • It’s very fourth wall breaking, really using the audience as characters
  • And all this focus on Ruth! She’s clearly the heroine, using her low-rent country-style singing to explore the universe

Avenging Trek Wars

1 minute read

Script buddy has now absorbed most of Star Trek TNG, DS9, and the movies! It’s also done it’s first crossover, which I certainly wasn’t expecting. Love that it’s got the Borg, Romulans, AND Thor. Stoik sounds like kind of a Vulcan name and it’s hilarious he goes for a lightsaber rather than a nerve pinch.

Starting text: “Picard to Riker.”

STARK Commander, I beg you, don’t fire at a moving target.

BORG If you insist, Stark. We have an emergency, and if we’re not careful we could find ourselves hunted by the Romulans in a matter of days…

Stoick looks at Stark, confused, then back at the bridge.

STARK I’m the one who said we could do it, Troi. Stoick just nods.

STARK We are doing it, you are.

Stoick smiles, pulls out his lightsaber. He raises it to his eye as Borsk.

They move through the ship. It pulls up beside the transport tower.

Thor crosses to the side of the walkway, sees the approaching transport.

THOR There’s a transport, there’s a Romulan transport, there’s the bridge… they’re coming…

The bridge is just visible from across the bridge.


It’s not really continued. It just decided that was a good place to put the string CONTINUED and end the script.

Writing Shakespeare with an RNN

2 minute read

I’ve just been noodling around with some RNN (recurrent neural network) tutorials for NLP to create scripts for plays or TV shows, both for my own interest and a project idea I have in mind. After 100 epochs or so, I can feed it the text of Romeo and Juliet and it’s returning something that sounds Shakespearean. I mean, it’s gibberish, but at least it’s Shakespearean gibberish:

Link to Notebook - it’s the second section, called RNN Play Generator

From the starting phrase Romeo:

Romeo! a very vial than himself, there is my hand To be the other for our daysage for a whore! make a shame? Death, clock their woes command, and not true parts Like free ppaid your treasures young and loving friends, And there did stand again of bastards, And I am the lurking sea or seest? stand not a duke! come on, And bite me die with her to tears, Than to dress’d unto the officers all I Provided to die philosophy: Therefore ept news, and all of you there.

ESCALUS: Why, then it seems ‘This mercy with the face thereof course he has betidently By lack of stooping,–

SEBASTIAN: Look he’s winding up the watch of his wit; by a man’s wife a fear.

Third Citizen: The price of the earth Commit thee with his death of his horse. Why they shall wallow easy news!

GRUMIO: Excery, you know; you must not love some seats as good condemnster, e are: Stay but a little, I will come away; and to itself a maid and blown To this shall find A curbsh in the mardle: all these Wherein my soul is and use it too, and he shall stay?

First Murderer: And that his majesty To hear the place of state, where now it falls, Not what said Servingman: Beseech you, sir, be misathere, For our costerpoises; ha, had you not crossed me, that one saill they make his oath.

First Servingman: But, more of that I have done.

POLIXENES: Pray, Master Bonagseent, and prt the days; Rome of the while!

PETRUCHIO: I say so; he hath the windows of mine humour, Than man Apon of Hereford that at all, I have sent for to an interest, And where thou art out to each require of his clothes; and envilake you, that you have worn this

I’m going to try some Star Trek next…


Thanks to Wikicommons for the image

Stuff I Use: May 2020 Edition

less than 1 minute read

I’m always on the lookout for tools to make my life easier, especially if I can do that in a vim-like manner on the command line. Here are a few of the things I’m using as of today


Operating system Manjaro Linux
Desktop shell Gnome shell with PaperWM and other extensions

Files, Processes, etc

Terminal emulator Konsole
Terminal multiplexer Tmux
Shell Zsh
File management Basic shell tools, ranger
Process management htop, ytop
Network management nmtui

Productivity and Coding

Web browsing Firefox with Vim Vixen
Text editing Neovim
IDE OSS Code (VScode without the closed-source crap)
Machine learning Jupyter Notebook


Video playback VLC


Video conferencing Zoom

Hofstadter’s Law

less than 1 minute read

Hofstadter’s Law is just one of life’s laws that (along with Murphy’s Law) I always bear in mind both in programming and in the rest of my life:

It always takes longer than you expect, even when you take into account Hofstadter’s Law.

It always reminds me of the early days of computer vision, back in the 60s, when they thought they could crack it within a year or so…

Links of the Day

less than 1 minute read

  • MiniConf is a virtual conference in a box. It manages the papers, schedules, and speakers for an academic conference run virtually. It can be easily integrated with interactive tools such as video, chat, and QA.
  • Big List of Naughty Strings: List of string you should be checking input for. Scariest is “Human Injection” section. Quote: If you’re reading this, you’ve been in a coma for almost 20 years now. We’re trying a new technique. We don’t know where this message will end up in your dream, but we hope it works. Please wake up, we miss you. Shudder.
  • Marketing for Engineers - Hand-picked collection of resources for solving practical marketing tasks. Something to look into when I need it.


Not gonna lie, I really want to make this Iron Man plasma cutter gauntlet, even though I know terrible things will happen.


@lazyweb, where can I find a Pokémon font that doesn’t suck? The kerning is really rough on this one

New Project - Better Job Search

less than 1 minute read

A quick and dirty project I’ve just pushed to Github: Better Job Search. It’s a Python script that scrapes one of the more popular job websites and returns more specific search results in a more efficient format.