Dev Notes 18: Towards A Newsletter to Call my Own

By . . Version 0.1.0

Dev Notes (DN) discuss progress towards larger articles. Discussion is preliminary

Today's notes discuss some more progress with site setup. There are few other things going on the background which hope to have more to share later.

How Hard Can Making A Mailinglist Be?

I've basically decided now I'll make some kind of email mailinglist for post notifications. I don't know what else to tell people who legitimately want to know about new posts, and like me, also don't really use X or similar platforms. I spent some time playing around with infrastructure here.

I haven't completely ruled out making Just Another Substack™, but currently leaning to my own self hosting and authoring pipeline. I think can allow a lot of expressivity of design even within the constraints of emails while also just generally giving me more flexibility. It's also fairly interesting technical challenge to figure out how to do well.

I thought IPv6 would just work. Turns out it doesn't.

I set up a server on Amazon Lightsail. This AWS's more friendly version EC2 designed to more directly compete with the simplicity of services like Digital Ocean.

The cheapest instances here start at $3.5/month. However, these only offer IPv6, with an instance with an IPv4 address costing an extra $1.5 a month. Naturally, I want this to be as cheap as possible, but this led to a bit a off side adventure with IP addresses.

Background

IP addresses are the foundation of how the internet works. Every endpoint on the internet has an address, and the backend of the internet magically figures out how deliver data to an address of your choosing.

Working in tech for a while, I have long been loosely aware of one of the main Y2K-esque boogie men of we are running out of IP addresses. The classic IPv4 addresses are 32-bit, and are limited to about 4 billion addresses. For a long time it has been clear we were going to run out of these, and we needed a solution. Since 1995 there has been IPv6 which expands addresses to 128-bits, giving functionally unlimited addresses and is our RFC-ordained savior.

Not Listening to LLM Advice

I chatted with Claude and Gemini about the Listmonk and Lightsail setup. They both suggested I should just use the IPv4 for simplicity. I was like "nah brot This isn't a real word. I view it as a combination of "bro" and "robot". It's kinda like "clanker", but a bit more familiar, less derogatory, but yet not anthropomorphic. Paradoxically "brot" is a bit closer to "brother" than "bro". Maybe not the best. , this can't be hard. IPv6 has been around forever. This has gotta just work".

The AIs and I figured out a scheme with AWS Cloudfront to seemly convert IPv4 requests for use interacting with the list server, and after a few hours tinkering in the bowels of AWS setup wizards, I thought I finally had it working.

But then I went to download Listmonk onto the machine and it wouldn't work. Turns out GitHub doesn't support IPv6! This was a bad omen of future maintenance, and I finally accepted the AIs were right, and should just pay the $15/year for an IPv4 address to make this problem go away. Maybe I gave up too soon though, but it is surprising how unsupported the internet protocol of the future is even after 30 years. I ended up reading several articles on IPv6. I am still not exactly sure if I have a way to novel contribution to discourse here, but have a vague sense of a future article where I might go into the details here about how networking works, some novel measures of support of essential developer sites like Github, and why this support is farther along. But that will be future work. Again, unclear there is a need for more of this.

Getting Listmonk Working

After switching I setup Listmonk, and it seems to be working fine. I need to set up a delivery service such as Amazon SES. These require approval in order to be able to send non-test emails in order to limit spam.

Updating Render Pipeline for Email Clients

I author posts in MDX with a Python/NodeJS pipeline for rendering into static pages for the web. The dream is to design things where can convert things where a common authored doc can also render into HTML that a email client worksOr in theory other platforms like print or pdf. I still don't have a good grasp what works and what doesn't work in modern email clients. Advice online or converter tools is typically geared towards full compatibility. For example, 2007-2019 Outlook desktop app appears to use Word's HTML rendering engine, which is fairly limited. I don't really care about supporting these, and assume my audience will mostly be using more modern clients.

It seems like the main things that will need to change is some inlining of CSS rules on every element (since Gmail doesn't allow global style elements), rendering some of the interactive components or latex into static images, and maybe a bit of layout changes.

Conclusion

The internet is kind of magical, yet the IPv6 saga shows sometimes things that seem like they should just work, surprisingly don't. Multi client-type rendering is an interesting challenge.

It would be neat here if I could link to a newsletter. I plan to have a form that for selecting between multiple kinds levels of mailings (ranging from just the main articles ranging to more of an update firehose with these kinds of notes), but as mentioned I need to get the delivery service setup and approved. I think I should have something ready for the next main article.