# jola.dev > Personal website of Johanna Larsson, a software engineer, engineering leader, writer, and speaker with many years of experience building products and leading teams. ## Pages - [About](https://jola.dev/about): Background, experience, and expertise - [Blog](https://jola.dev/posts): Technical blog posts on software engineering, Elixir, and leadership - [Projects](https://jola.dev/projects): Open source projects - [Talks](https://jola.dev/talks): Conference presentations and speaking engagements ## Blog Posts - [Elixir Cluster 101](https://jola.dev/posts/elixir-cluster-101) - [How to stop Claude from saying load-bearing](https://jola.dev/posts/how-to-stop-claude-from-saying-load-bearing) - [Let libraries be libraries](https://jola.dev/posts/let-libraries-be-libraries) - [CI workflows on Tangled for Elixir](https://jola.dev/posts/ci-workflows-on-tangled) - [Automatically syncing your blog to atproto and standard.site](https://jola.dev/posts/automatically-syncing-your-blog-atproto-standard-site) - [Appreciation for the small web](https://jola.dev/posts/appreciation-for-the-small-web) - [Treating LLMs as programming books](https://jola.dev/posts/treating-llms-as-programming-books) - [Publishing your blog to standard.site in Elixir](https://jola.dev/posts/publishing-your-blog) - [Generating OG images in Elixir](https://jola.dev/posts/generating-og-images) - [The social contract of writing](https://jola.dev/posts/the-social-contract-of-writing) - [Highest Random Weight in Elixir](https://jola.dev/posts/highest-random-weight-in-elixir) - [bunnyx: a bunny.net Elixir client library](https://jola.dev/posts/bunnyx-bunny-net-elixir) - [Building for the joy of building](https://jola.dev/posts/building-for-the-joy-of-building) - [Running local models on an M4 with 24GB memory](https://jola.dev/posts/running-local-models-on-m4) - [How to hit your Claude weekly limit so you can go outside and touch grass](https://jola.dev/posts/how-to-run-out-of-usage) - [Dropping Cloudflare for bunny.net](https://jola.dev/posts/dropping-cloudflare) - [Building a blog with Elixir and Phoenix](https://jola.dev/posts/building-a-blog-with-elixir-and-phoenix) - [Stay in the Loop: How I Actually Use Claude Code](https://jola.dev/posts/stay-in-the-loop) - [Ruthless Prioritization: The Path to Delivery](https://jola.dev/posts/ruthless-prioritization) - [Estimates Are More Valuable Than You Think](https://jola.dev/posts/estimates-are-more-valuable) - [When Software Engineers Think They Need More Focus Time](https://jola.dev/posts/enough-focus-time) - [If the Goal is Resiliency, Defensive Programming is Your Enemy](https://jola.dev/posts/defensive-programming-resilience) - [The Magic of Daily Pull Requests: Why Smaller is Better](https://jola.dev/posts/a-pr-a-day) - [Building a Distributed Rate Limiter in Elixir with HashRing](https://jola.dev/posts/distributed-ratelimiter) - [Announcing Hex Diff](https://jola.dev/posts/announcing-hex-diff) - [Building Hex Diff](https://jola.dev/posts/building-hex-diff) - [Push-based GenStage](https://jola.dev/posts/push-based-genstage) - [The Erlang :queue module in Elixir](https://jola.dev/posts/erlang-queue-module-elixir) - [Patterns for managing ETS tables](https://jola.dev/posts/patterns-for-managing-ets-tables) - [Health checks for Plug and Phoenix](https://jola.dev/posts/health-checks-for-plug-and-phoenix) - [The new `Registry.select/2` and what match specs are](https://jola.dev/posts/registry-select-2-and-match-specs) - [Elixir String Processing Optimization](https://jola.dev/posts/elixir-string-processing-optimization)