How I built an interactive Elm workshop environment using Guida's in-browser compiler after server-side compilation hit memory limits| cekrem.github.io
Most applications don’t fail because algorithms are hard—they fail because our models allow states that make no sense in the domain. “User without email but verified”, “order that’s both shipped and cancelled”, “sum < 0”, “modal dialog both closed and active”. These states should be impossible from the start. Among the most time-consuming bugs to track down are the ones where we look at our application state and say “this shouldn’t be possible.”| Posts on cekrem.github.io
At KotlinConf 2025, the Kotlin team showcased progress toward Rich Errors with union types. After years of watching languages slowly adopt patterns that Elm has championed since day one, it’s exciting to see Kotlin taking this significant step toward more explicit, type-safe error handling. And in a very “native” Kotlin way at that! I vividly remember this announcement giving my functional heart a pleasant jolt, but I haven’t found the time for a write-up until now. Better late than n...| Posts on cekrem.github.io
Most of my day-to-day work is in Elm. The combination of a functional language and the Elm Architecture makes many architectural decisions almost invisible (I talk more about that in this blog post). You get a clear separation of concerns, and the language nudges you toward good design by default. But my work isn’t limited to Elm. I frequently find myself building features that span both frontend and backend—writing new endpoints, and sometimes even designing new database tables. When I s...| Posts on cekrem.github.io
Reflections on Cal Newport's 'So Good They Can't Ignore You', and the order of passion and mastery.| cekrem.github.io
Quick setup guide for getting Tailwind CSS autocomplete and hover working with Elm in NeoVim| cekrem.github.io
In 1985, computer scientist Peter Naur wrote a prescient essay called “Programming as Theory Building” that feels more relevant today than ever. As we watch junior developers reflexively accept LLM-generated code they don’t understand, and see codebases balloon with theoretically orphaned implementations, Naur’s central thesis becomes crystal clear: a program is not its source code. The Theory Behind the Code Link to heading Naur argues that programming is fundamentally about building...| Posts on cekrem.github.io
How I built a search widget in Elm using RSS feeds and string parsing - a case study in pragmatic engineering| cekrem.github.io
Last week, I watched two very different developers encounter Claude Code for the first time. The contrast in their reactions perfectly captures the tension I’ve been feeling about AI coding assistants lately. For those unfamiliar, Claude Code is Anthropic’s AI-powered coding assistant that can read, write, and edit code across your entire codebase. Unlike traditional autocomplete tools, it can understand context across multiple files, execute commands, run tests, and even browse the web f...| Posts on cekrem.github.io
How to introduce Elm incrementally into your existing web applications with a real-world example| cekrem.github.io
Learn how Elm's architectural discipline—and a few ideas from Clean Architecture—can reshape how we think about frontend boundaries.| cekrem.github.io
Learn how to apply the Dependency Inversion Principle in React to create more testable, maintainable, and flexible components. A practical guide to writing better React code.| cekrem.github.io
We all know we should write clean code. We’ve read the books, attended the talks, and nodded along to the principles. Yet, somehow, we still find ourselves writing messy React components. Why is that? The answer lies not in our technical skills, but in our psychology. The Cognitive Load Trap Link to heading Consider this common scenario: const UserDashboard = () => { const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null...| Posts on cekrem.github.io
A small utility package to make working with HTML in Elm more convenient| cekrem.github.io
npx pretty-git-report| cekrem.github.io