Introducing Agena

I’ve been sick this past week. Sinus infections are always bad news, but this one has left me so out of sorts that I did something crazy. Okay, crazier than usual for me. Therefore, I give to you Agena.

What is it?

Agena is a server for the Gemini protocol, written in pure Python with no external dependencies. It supports static and dynamic routing, server-side scripting, virtual hosts, and wildcard SSL certificates while being light on resources and relatively easy to configure. It’s named after the Agena target vehicle, the unmanned rendezvous partner of the Gemini space missions, which was itself named after the star Agena, also known as Beta Centauri.

No, seriously, what is it?

Right. Let’s back up a step or two. First, Gemini. As you know, alt-tech is all the rage right now. If it isn’t where you live, it should be. Now that Google, Facebook, Twitter, and the other big players have shown themselves to be in opposition to basic human rights such as free speech and fair elections, while also exercising dictatorial control of their platforms by banning anyone whose ideology doesn’t perfectly align with that of the global elite, we need a change.

That change has already begun. Parler and Gab are two popular sites that have been attacked ruthlessly by Big Tech and the media for the crime of allowing free expression, while the superior alternative of the fediverse (note the link on this page) offers a truly decentralized option for social media.

But evading censorship isn’t the only reason to look at alt-tech. Some people like it because it’s new, because it’s a wide open space for experimentation, the way the internet was until it became overcommercialized in the last generation. (Wow. The internet has been around for generations now. I feel so old.)

Gemini, then, is one of a number of projects that aims to bring back some of the feel-good feel of old. Some of us still remember the glory days of Gopher, Usenet, and FTP sites, days when you didn’t need to download six megabytes of Javascript just to load a web page. Sure, those old platforms were limited, but that was by necessity; Gemini does it intentionally, replacing the HTTP protocol that underlies what we think of as the Web with a bare-bones alternative focused on content. There’s no CSS, client-side scripting, or even inline hyperlinks! In return, you get blazing speed and austere simplicity.

You get, in other words, something a decent programmer can write in a weekend.

The weekend project

Now, I’m not sure I’d be considered a decent programmer, but I did exactly that. To be fair, I needed a little longer, but that’s due to my own failings. I started on Wednesday, then slept. A lot. I haven’t been awake too much in the past few days, and most of my waking hours have been in the dead of night. The headaches and occasional dizziness make it hard to think straight sometimes.

Altogether, it took me about 8 hours of coding over 4 days to get a fully functional server. I could have finished it in a weekend, if I’d been physically capable. Sunday and Monday were for adding features: virtual hosts and server-side scripting, respectively.

No software project is ever complete. There are always bugs to be fixed, features to be added, and refactors to be, uh, refactored. Agena is no exception. I consider it beta quality (I’ve put it at version 0.4.2), and you probably shouldn’t use it for anything serious yet. That said, I’d like to keep working on it when I have the chance.

If you want to check it out, head to the Gitlab repo, where you can download a copy of the source, read the installation instructions, and all the usual Git goodness. It’s not often that I actually release something on the code side of things. It’s even rarer that it’s something I’m proud of.

But this is that time. I really feel a sense of accomplishment. Considering how down I’ve been the past few days, that’s saying something.