57,803 blogs · [ { "id": "01a0d994-f735-717f-92f6-7eb54d69a6df", "title": "BI is back in its era of ferment", "url": "https://lindfors.no/blog/two-defensible-answers/", "published_at": "2026-09-22T00:00:00+00:00" }, { "id": "01a0bb4d-9e6a-72f1-a18b-3fac55aa0f3a", "title": "An early-access test of TypeSafe's Jev: calibrated judgments for half a cent", "url": "https://lindfors.no/blog/a-first-look-at-typesafes-jev/", "published_at": "2026-09-18T00:00:00+00:00" }, { "id": "01a0bb4d-9e6a-72f1-a18b-3fac55d2cfea", "title": "Audio on a static site: build-time TTS and the script it reads from", "url": "https://lindfors.no/blog/audio-on-a-static-site/", "published_at": "2026-09-15T00:00:00+00:00" }, { "id": "01a0879a-fc57-72f5-ba25-13fbff905995", "title": "A subscribe button does not need a Worker", "url": "https://lindfors.no/blog/newsletter-on-my-own-server/", "published_at": "2026-09-08T00:00:00+00:00" }, { "id": "01a0879a-fc57-72f5-ba25-13fbffa2dc03", "title": "Why none of the 1,200 agents that hacked Hugging Face called a human", "url": "https://lindfors.no/blog/swarm-with-no-gene-pool/", "published_at": "2026-09-04T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c64005f0859", "title": "Reader analytics, kept to myself", "url": "https://lindfors.no/blog/reader-analytics/", "published_at": "2026-09-03T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c6400e9587d", "title": "Measuring what a coding agent actually costs", "url": "https://lindfors.no/blog/what-my-coding-agent-costs/", "published_at": "2026-08-13T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c640169df45", "title": "Forking Codex to talk to any endpoint", "url": "https://lindfors.no/blog/forking-codex-for-any-endpoint/", "published_at": "2026-07-14T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c6401fe153b", "title": "Exploring LLMs so our customers don't have to", "url": "https://lindfors.no/blog/which-llm-are-we-allowed-to-use/", "published_at": "2026-06-30T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c64026bfd97", "title": "One-click unsubscribe needs a URL per reader and a DKIM tag", "url": "https://lindfors.no/blog/newsletter-one-click-unsubscribe/", "published_at": "2026-05-26T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c6402ad65da", "title": "Images on a static site: tradeoffs, limits, and a 150-line Rust optimizer", "url": "https://lindfors.no/blog/images-on-a-static-site/", "published_at": "2026-04-14T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c64032d425e", "title": "Proper citations on a static site: Zotero, Rust, and Typst", "url": "https://lindfors.no/blog/citations-on-a-static-site/", "published_at": "2026-03-10T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c6403f9e706", "title": "Self-hosting email is not that hard anymore", "url": "https://lindfors.no/blog/self-hosted-newsletter/", "published_at": "2026-02-18T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c6404751f97", "title": "I use Typst to generate PDFs of my blog posts and my CV", "url": "https://lindfors.no/blog/typst-for-blogging/", "published_at": "2026-02-14T00:00:00+00:00" }, { "id": "01a0879a-fc58-719e-9191-8c640488a97e", "title": "Zola has no plugins, so this blog grew a Rust CLI", "url": "https://lindfors.no/blog/building-a-personal-blog-with-zola/", "published_at": "2026-01-27T00:00:00+00:00" } ] posts Claim your blog
Back to lindfors.no
Blog · corpus.blog/blogs/lindfors.no/posts

lindfors.no

lindfors.no

2026