惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
IT之家
IT之家
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
V
V2EX
Last Week in AI
Last Week in AI
H
Help Net Security
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
F
Fortinet All Blogs
I
InfoQ
宝玉的分享
宝玉的分享
A
About on SuperTechFans
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
B
Blog

jola.dev

Migrating your Bluesky account the hard way | jola.dev Cluster singleton pattern | jola.dev cove.town, atproto self-hosted self-hosting | jola.dev Speeding up a Phoenix LiveView web app with a CDN | jola.dev Self-hosting an atproto container registry | jola.dev Migrating to the new Tangled knot2 | jola.dev Self-hosting and Tangled | jola.dev Self-hosting your PDS | jola.dev Taking control of your atproto account | jola.dev No cost, no value | jola.dev Latch - an Elixir atproto OAuth library | jola.dev Limited output is a feature | jola.dev Distributed rate limiter with HRW in Elixir | jola.dev A computer can never be held accountable | jola.dev Elixir Cluster 101 | jola.dev How to stop Claude from saying load-bearing | jola.dev Let libraries be libraries | jola.dev CI workflows on Tangled for Elixir | jola.dev Automatically syncing your blog to atproto and standard.site | jola.dev Appreciation for the small web | jola.dev Treating LLMs as programming books Publishing your blog to standard.site in Elixir Generating OG images in Elixir The social contract of writing Highest Random Weight in Elixir bunnyx: a bunny.net Elixir client library Running local models on an M4 with 24GB memory How to hit your Claude weekly limit so you can go outside and touch grass Dropping Cloudflare for bunny.net Building a blog with Elixir and Phoenix
Building for the joy of building
Johanna Larsson · 2026-05-12 · via jola.dev

My path into coding wasn’t straightforward, it didn’t start with formal education or learning from friends or family. I got some limited access to the internet in my teens and, like many of us back then, I was introduced to HTML through services like Angelfire, where I could set up a website with blink tags and way too many animated images.

It took a while to take, though. I had some classmates in high school who took classes in programming and got into C. I gotta say, I was not impressed. I even remember saying I wasn’t interested, when they were trying to convince me how cool this was. I categorically stated I would never be interested in something like this.

It wasn’t until my early 20s, when my dad wanted a website for his business, that I started to take my first real steps into programming. It started out with a basic website, some HTML and CSS. I bought some basic O’Reilly book and taught myself enough to get it up and running. And just like that I was hooked. Because now that I had a website, I needed somewhere to host it, right? So I get another O’Reilly book to teach myself Linux sysadmin. Now we’re really cooking. Add some interactivity on top of that? O’Reilly book on JavaScript. This isn’t really meant to be advertising for O’Reilly, it’s just what I had back then. Programming books. And I devoured all of it.

I did end up getting a degree, not computer science because I didn’t have the qualifications, but computer science adjacent. And I started my career.

It’s been 14 years now since I got my first job as a professional programmer, and the joy that I felt building that first website has never left me. Sure, I’ve had periods of time where I spent less time coding, but it’s never long before I feel that urge to create something.

It’s always been undirected though, I can’t quite control what I end up feeling interested in, what my next obsession becomes. I’ve never been great at contributing to open source, I’ve always much preferred creating things that belong to me. I do love the idea of open source, I’m just not very good at fitting that into how my brain works. So I build toy project after toy project, only occasionally sharing it publicly. In the cases where I have shared something, I’ve only ever made a minimal effort to “market” it. Like a lot of us, I don’t really enjoy distribution, and the goal isn't to get rich. I recognize it’s not ideal, it would be a lot of fun if other people find value in the things I build, and I care a lot about building good user experiences, good products. It would be incredible if something that I built took off.

My current passion project is an opinionated uptime monitoring service that uses multi-probe voting and retries before alerting, provides granular response time metrics, and has integrated status pages. It consists of an Elixir backend backed by PostgresQL and Clickhouse, with probes that are fully resilient to outages, write their own WALs, and can catch up once reconnected. And the biggest challenge: investing in making it properly reliable and for the operating cost per user to be low enough that I can offer this for free for the vast majority of users. It leads to a lot of interesting design decisions! If you do want to try it out, it's at https://larm.dev.

And it's so much fun to build! I'll be writing some posts about learnings from the project, and I'm working on splitting off some open source libraries. Using Phoenix Channels to connect a fleet of servers, distributing works across regions, not to mention getting some great use out of Clickhouse. If it sounds like an interesting service to you, take a look. I'm getting good use out of it, and more importantly, I'm having fun building it. Just like I did with that first website 20 years ago. So I’ll keep building things that are useful to me.

Looking forward to the next 20 years!

Written by Johanna Larsson. Thoughts on this post? Find me on Bluesky at @jola.dev or why not give it a vote on Bubbles.