Aeracodehttps://www.aeracode.org/2023-11-13T00:00:00+00:00The Cloud Is Just My Basement's Computers2023-11-13T00:00:00+00:00https://www.aeracode.org/2023/11/13/cloud-servers-basement/<p>I've had many different development platforms over the years - from Notepad++
on library computers in my youth, to Gentoo and then Ubuntu installed on a
series of carefully-chosen laptops with working drivers, and then for the last
five years or so on Surface devices via the rather wonderful Windows Subsystem
for Linux (WSL).</p>
<p>Of course, in the WSL era I am still just running Ubuntu, but inside the
pseudo-VM that is the WSL subsystem of the Windows kernel. It's honestly pretty
great, and I regularly joke that I'm using Windows as the GUI layer to develop
on Linux.</p>
<p>Between the Steam Deck and WSL both being ascendant, maybe we finally got the
Year Of Linux On The Desktop, just not as we expected.</p>
<p>...</p>Life-Critical Side Projects2023-11-06T00:00:00+00:00https://www.aeracode.org/2023/11/06/life-critical-side-projects/<p><em>TLDR: I am looking for new developers and maintainers for Takahē who want to help in exchange for my mentorship, or I'll have to sunset the project.</em></p>
<p>I find it important to have hobbies that aren't the same as what I do for work, which is why an increasing number of them don't involve computers at all - I'm very happy building new things on my camper van, making weird geographic art, or hiking around bits of the Rockies.</p>
<p>However, I still <em>love</em> programming and systems work, and I'll always have at least one project going on the side that involves it - nothing beats the size and complexity of what you can create in just a few hours of coding. That said, I have two basic rules for my programming side projects:</p>
<p>...</p>I am, approximately, here2023-07-25T00:00:00+00:00https://www.aeracode.org/2023/07/25/approximately-here/<p>There are many questionable things about American car culture, but the road
trip is not one of them. In a country as large and geographically varied as
the USA, road travel is not just a necessity, but it can also be the
attraction itself.</p>
<p>When I first moved to the USA, I had vague plans of doing some driving around
and enjoying the sheer alien-ness of tiny towns in the middle of nowhere, or
motels where you are somehow the only guest. Nine years in, I've done a decent
amount of that, but these days my attention is more focused around the
<a href="https://www.youtube.com/playlist?list=PLWlfOav4jlvgX7qMTEJfdFWF7sgds3kit">camper van that I spent half a year building</a>.</p>
<p>I like to try and share a bit of the experience with those who want to see it,
and as well as posting pictures and videos, I've always liked the idea of
having a live map of where I am - even if it's just for friends and relatives
who are interested in my progress.</p>
<p>...</p>A Takahē refactor, as a treat2023-04-29T00:00:00+00:00https://www.aeracode.org/2023/04/29/refactor-treat/<p>I had taken two months off from developing Takahē in the run up to PyCon US;
both due to pressures at work (and then, more recently, half the company being
laid off around me), as well as not quite being sure what I wanted to
build, exactly.</p>
<p>When I started the project, my main goal was to show that multi-domain support
for a single ActivityPub server was possible; once I had achieved that
relatively early on, I sort of fell down the default path of implementing a
lightweight clone of Mastodon/Twitter.</p>
<p>While this was good in terms of developing out the features we needed, it
always felt a bit like overhead I didn't really want; after all, if you're
implementing the Mastodon API like we do, all the dedicated apps for viewing
timelines and posting are always going to be better than what you ship with
a server.</p>
<p>...</p>Takahē 0.72023-01-16T00:00:00+00:00https://www.aeracode.org/2023/01/16/takahe-07/<p>Today is the <a href="https://docs.jointakahe.org/en/latest/releases/0.7/">0.7 release of Takahē</a>,
and things are really humming along now; this release marks the point where
we've built enough moderation and community features to make me happy that I
can open up <a href="https://takahe.social">takahe.social</a> to registrations,
albeit with a user number cap.</p>
<p>We've also launched a <a href="https://patreon.com/takahe">Patreon for Takahē</a>, in a
quest to make development and operation of Takahē more sustainable - and
work towards start paying some people to help out with the less exciting work
like triaging tickets, user support, and moderation of takahe.social. If you
want to volunteer directly, that's covered in our
<a href="https://docs.jointakahe.org/en/latest/contributing/">Contributing docs</a>.</p>
<p>There's some interesting technical topics I want to dig into today, though -
it's been a little while since my last blog post and ActivityPub and friends
continue to surprise.</p>
<p>...</p>Understanding A Protocol2022-12-05T00:00:00+00:00https://www.aeracode.org/2022/12/05/understanding-a-protocol/<p>Yesterday I pushed out the <a href="https://docs.jointakahe.org/en/latest/releases/0.5/">0.5.0 release of Takahē</a>,
and while there's plenty left to do, this release is somewhat of a milestone
in its own right, as it essentially marks the point where I've implemented
enough of ActivityPub to shift focus.</p>
<p>With the implementation of image posting in this release, there are now only
a few things left at a <em>protocol</em> level that I know I'm missing:</p>
<p>Custom emoji (these are custom per-server and a mapping of name-to-image
comes with each post)</p>
<p>...</p>Takahē 0.3.02022-11-24T12:00:00+00:00https://www.aeracode.org/2022/11/24/takahe-030/<p>So, after a few weeks of development, I'm happy enough with the state of
Takahē to issue its first official release - which I've chosen to number
0.3.0, because version numbers are made up and I can start where I want.</p>
<p>We're only releasing Docker images right now in order to try and keep the
support burden down (it removes having to worry about people's OS versions
and library environments), so you can find it <a href="https://hub.docker.com/r/jointakahe/takahe">on Docker Hub</a>.</p>
<p><img alt="A screenshot of Takahē" src="/media/blog/2022/takahe-big-20221123.png"/></p>
<p>...</p>Twitter, ActivityPub and The Future2022-11-15T12:00:00+00:00https://www.aeracode.org/2022/11/15/twitter-activitypub-future/<p>Twitter is - was - such a unique place. Somewhere where you can have the President
of the United States coexist with teenagers writing fan fiction; where
celebrities give personal insights into their lives while government
departments post <a href="https://twitter.com/USCPSC">memes about public safety</a>;
the place that gave us <code>@Horse_ebooks</code> and <code>@dril</code>.</p>
<p>The "Fediverse", with Mastodon at its helm, is not this. It doesn't seem to want
to be, and I honestly think that's fine - as many thinkpieces have recently
said, the age of global social media might just be over. And given the effect
it's had on the world, maybe that's alright after all.</p>
<p>But there <em>is</em> still a void to fill, and as someone who enjoyed Twitter most
at its "medium" size, I think the ActivityPub ecosystem is well-placed to grow
into such a space. But first, I think there's some important things we have to
discuss about it.</p>
<p>...</p>Takahē: A New ActivityPub Server2022-11-14T12:00:00+00:00https://www.aeracode.org/2022/11/14/takahe-new-server/<p>When I decided to properly start using the Fediverse via
<a href="/2022/11/01/fediverse-custom-domains/">my own Mastodon server</a>,
I knew it was probably inevitable that I would end up writing my own server -
and, well, here we are!</p>
<p>My new server is called <a href="https://github.com/andrewgodwin/takahe">Takahē</a>, and
it's built in Django and also specifically with Python's async library
ecosystem - I'll explain more about why that matters later.</p>
<p><img alt="A screenshot of Takahe" src="/media/blog/2022/takahe-20221113.png"/></p>
<p>...</p>Static-Dynamic Content With In-Memory SQLite2022-11-03T00:00:00+00:00https://www.aeracode.org/2022/11/03/static-dynamic-in-memory-sqlite/<p>This website has been running in some form since 2006, and back then it was
one of my very first Django sites, stored in a Subversion respository and using
the thrillingly new Python 2.5.</p>
<p>I can't actually remember if it was the <em>very first</em> thing I built in Django,
but I think it might have been.</p>
<p>It was a very basic CMS built out of the standard building blocks
Django is still known for - the admin, forms, and easy templating. It stayed
like that for many years, with me authoring blog posts via a somewhat-custom
markup language in a big text box in the Django Admin.</p>
<p>...</p>