41554 blogs Β· [ { "id": "01a0d791-85af-70b4-a066-84724a0de08b", "title": "The Climb Was the Safety Feature", "url": "https://cekrem.github.io/posts/the-climb-was-the-safety-feature/", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f347e5708", "title": "New Season Upgrades Vol 2: New Newsletter Platform!", "url": "https://cekrem.github.io/posts/new-season-upgrades-vol-2-new-newsletter-platform/", "published_at": "2026-09-09T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f356f549e", "title": "`bun-plugin-elm`: import { Elm } from \"./Main.elm\" (Made by Hand, btw)", "url": "https://cekrem.github.io/posts/bun-plugin-elm/", "published_at": "2026-08-25T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f35c303cb", "title": "Bun and Elm (: r)Are Friends", "url": "https://cekrem.github.io/posts/bun-and-elm-are-friends/", "published_at": "2026-08-21T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f35c7d3da", "title": "My social preview images are Elm code now. Rendered by Go. Into an Svg 😡", "url": "https://cekrem.github.io/posts/og-images-as-elm-code/", "published_at": "2026-08-17T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3606ed77", "title": "There Is Still No Silver Bullet", "url": "https://cekrem.github.io/posts/there-is-still-no-silver-bullet/", "published_at": "2026-08-13T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f362f5601", "title": "New Season Upgrades Vol 1: from Gmail to Protonmail (again)", "url": "https://cekrem.github.io/posts/new-season-upgrades-vol-1-leaving-gmail/", "published_at": "2026-08-11T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f37285be1", "title": "The Light Flip: tempted to give it another go", "url": "https://cekrem.github.io/posts/the-light-flip/", "published_at": "2026-07-23T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f37af794e", "title": "I'm so utterly screwed without Jesus", "url": "https://cekrem.github.io/posts/utterly-screwed-without-jesus/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f37fe082d", "title": "A batch job, in The Elm Architecture", "url": "https://cekrem.github.io/posts/elm-run-batch-job/", "published_at": "2026-06-24T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f38c0c7c8", "title": "Explaining Functional Programming to Non-Programmers (It's Just Excel)", "url": "https://cekrem.github.io/posts/explaining-functional-programming-to-non-programmers/", "published_at": "2026-06-15T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f38c72df7", "title": "Native Elm (the real kind this time)", "url": "https://cekrem.github.io/posts/native-elm/", "published_at": "2026-06-08T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f39a70ef5", "title": "codimg: code blocks -> syntax highlighted SVG", "url": "https://cekrem.github.io/posts/codimg/", "published_at": "2026-06-02T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3a5012ba", "title": "Hejlsberg: 'Who's Going to Make the AI?'", "url": "https://cekrem.github.io/posts/hejlsberg-on-ai/", "published_at": "2026-05-30T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3aec061b", "title": "I made learnelm.dev", "url": "https://cekrem.github.io/posts/i-made-learnelm-dev/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3b947b23", "title": "The Tacit Dimension: Why Your Best Engineers Can't Tell You What They Know", "url": "https://cekrem.github.io/posts/the-tacit-dimension/", "published_at": "2026-05-19T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3bea9b95", "title": "If You're Running Claude Code, PLEASE Run It in a Box", "url": "https://cekrem.github.io/posts/if-you-re-running-claude-code-run-it-in-a-box/", "published_at": "2026-05-18T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3cd8fe85", "title": "GreenType: a beautifully coded terrible idea", "url": "https://cekrem.github.io/posts/greentype-lamdera/", "published_at": "2026-05-13T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3da33edb", "title": "Canonicalise, Don't Remember β€” Smart Constructors in Kotlin", "url": "https://cekrem.github.io/posts/canonicalise-dont-remember-kotlin/", "published_at": "2026-05-12T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3e6c77e9", "title": "Book Update: RC 2 Is Out", "url": "https://cekrem.github.io/posts/elm-book-rc-2/", "published_at": "2026-05-07T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3f2a7684", "title": "Architecture by Autocomplete", "url": "https://cekrem.github.io/posts/architecture-by-autocomplete/", "published_at": "2026-05-04T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f3ff92863", "title": "LLMs Corrupt Your Documents (and the Theory Dies Twice)", "url": "https://cekrem.github.io/posts/llms-corrupt-your-documents/", "published_at": "2026-04-24T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4094e6c3", "title": "git history: the best thing in Git 2.54", "url": "https://cekrem.github.io/posts/git-history-git-2-54/", "published_at": "2026-04-21T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f416e6a05", "title": "The Draft Is Done. Now I Need Reviewers and Feedback!", "url": "https://cekrem.github.io/posts/the-draft-is-done-now-i-need-readers/", "published_at": "2026-04-15T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f426941b4", "title": "Effect Without Effect-TS: Algebraic Thinking in Plain TypeScript", "url": "https://cekrem.github.io/posts/effect-without-effect-ts/", "published_at": "2026-04-14T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f428fd2ea", "title": "I Signed the 'No AI in Node.js Core' Petition", "url": "https://cekrem.github.io/posts/no-ai-in-nodejs-core/", "published_at": "2026-04-10T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4299f2a7", "title": "ArkType: The Parse-Don't-Validate Sequel I Didn't Know I Needed", "url": "https://cekrem.github.io/posts/arktype-parse-dont-validate-sequel/", "published_at": "2026-04-09T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f430ac51b", "title": "Parse, Don't Validate β€” In a Language That Doesn't Want You To", "url": "https://cekrem.github.io/posts/parse-dont-validate-typescript/", "published_at": "2026-04-07T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f43134106", "title": "Book Update: Almost There", "url": "https://cekrem.github.io/posts/book-update-almost-there/", "published_at": "2026-03-25T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f43b87307", "title": "The FP Article I Can't Seem to Finish", "url": "https://cekrem.github.io/posts/the-fp-article-i-cant-seem-to-finish/", "published_at": "2026-03-20T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f443baa89", "title": "SOLID in FP: Interface Segregation and Dependency Inversion, or The Finale Where Functions Steal the Show", "url": "https://cekrem.github.io/posts/solid-in-fp-interface-segregation/", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f446f6abd", "title": "Why I Hope I Get to Write a Lot of F# in 2026", "url": "https://cekrem.github.io/posts/why-i-hope-i-get-to-write-a-lot-of-fsharp-in-2026/", "published_at": "2026-03-09T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4543411c", "title": "An Elm Primer: Testing Strategies", "url": "https://cekrem.github.io/posts/elm-book-testing-strategies/", "published_at": "2026-03-06T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f460922f2", "title": "SOLID in FP: Liskov Substitution, or The Principle That Was Never About Inheritance", "url": "https://cekrem.github.io/posts/solid-in-fp-liskov-substitution/", "published_at": "2026-03-02T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f46d27286", "title": "An AI Attacked a Developer. Naturally, I Built My Own Bot. Because Terminator II!", "url": "https://cekrem.github.io/posts/blog-bot/", "published_at": "2026-02-27T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f47255448", "title": "SOLID in FP: Open-Closed, or Why I Love When Code Won't Compile", "url": "https://cekrem.github.io/posts/solid-in-fp-open-closed/", "published_at": "2026-02-20T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f47412c64", "title": "SOLID in FP: Single Responsibility, or How Pure Functions (Almost) Solved It Already", "url": "https://cekrem.github.io/posts/solid-in-fp-single-responsibility/", "published_at": "2026-02-17T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f47688b0e", "title": "elm-native – scaffold hybrid mobile apps with Elm, Vite, and Capacitor", "url": "https://cekrem.github.io/posts/elm-native/", "published_at": "2026-02-11T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f48681c46", "title": "An Elm Primer: Declarative Dialogs with MutationObserver", "url": "https://cekrem.github.io/posts/elm-book-declarative-dialogs-mutation-observer/", "published_at": "2026-02-03T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f49636118", "title": "Vivaldi 7.8: A Browser That Actually Trusts You", "url": "https://cekrem.github.io/posts/vivaldi-pilots-not-passengers/", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f497b4d1b", "title": "Ktor 3.4.0: HTML Fragments, HTMX, and Finally Proper SSE Cleanup", "url": "https://cekrem.github.io/posts/ktor-340-html-fragments-htmx-and-finally-proper-sse-cleanup/", "published_at": "2026-01-30T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f49bd5b28", "title": "DΓΈnn Disippel – finally in English", "url": "https://cekrem.github.io/posts/donn-disippel-finally-in-english/", "published_at": "2026-01-20T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4a27e77a", "title": "Programming as Theory Building, Part II: When Institutions Crumble", "url": "https://cekrem.github.io/posts/programming-as-theory-building-part-ii/", "published_at": "2026-01-19T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4b25bc24", "title": "Arrow's Either: The Kotlin Chapter of our Scary Words Saga", "url": "https://cekrem.github.io/posts/arrow-either-kotlin-functors-monads/", "published_at": "2026-01-16T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4bdc40ae", "title": "Functors, Applicatives, and Monads: The Scary Words You Already Understand", "url": "https://cekrem.github.io/posts/functors-applicatives-monads-elm/", "published_at": "2026-01-05T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4cadb080", "title": "Elm on the Backend with Node.js: An Experiment in Opaque Values", "url": "https://cekrem.github.io/posts/elm-on-the-backend-with-nodejs/", "published_at": "2025-12-19T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4d4e0e0d", "title": "TypeScript Goes Go: What Does This Mean for Us?", "url": "https://cekrem.github.io/posts/typescript-goes-go/", "published_at": "2025-12-17T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4d97448c", "title": "How I Met Jesus", "url": "https://cekrem.github.io/posts/how-i-met-jesus/", "published_at": "2025-12-14T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4e3561c4", "title": "Tailwind CSS: Targeting Child Elements (when you have to)", "url": "https://cekrem.github.io/posts/tailwind-targeting-child-elements/", "published_at": "2025-12-11T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f4f2ca725", "title": "cekrem/elm-form: Type-Safe Forms That Won't Let You Mess Up", "url": "https://cekrem.github.io/posts/elm-form/", "published_at": "2025-12-03T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f501a3579", "title": "Organizing Files and Modules in Elm: Building an Advent Calendar", "url": "https://cekrem.github.io/posts/elm-book-chapter-9-organizing-files-and-modules/", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f507e86d8", "title": "An Elm Primer: The missing chapter on JavaScript interop", "url": "https://cekrem.github.io/posts/elm-book-missing-chapter-8-ports-interop/", "published_at": "2025-11-18T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f510cc6e4", "title": "I'm taking a three-week LLM fast!", "url": "https://cekrem.github.io/posts/im-taking-a-three-week-llm-fast/", "published_at": "2025-11-10T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f51b91e73", "title": "The Clipboard API: How Did We Get Here?", "url": "https://cekrem.github.io/posts/clipboard-api-how-hard-can-it-be/", "published_at": "2025-11-07T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f51c5fbec", "title": "Why TypeScript Won't Save You", "url": "https://cekrem.github.io/posts/why-typescript-wont-save-you/", "published_at": "2025-11-06T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f525cdce1", "title": "Chapter 2, Take 2: Why I Changed Course", "url": "https://cekrem.github.io/posts/chapter-2-take-2/", "published_at": "2025-10-29T22:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f52f30fe3", "title": "Why Elm is the Best Way for React Developers to Learn Real Functional Programming", "url": "https://cekrem.github.io/posts/elm-book-announcement/", "published_at": "2025-10-20T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f53449eed", "title": "Why You Probably Shouldn't Use My Elm Land Fork", "url": "https://cekrem.github.io/posts/why-you-probably-shouldnt-use-my-elm-land-fork/", "published_at": "2025-10-17T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f539f9bf0", "title": "Elm Land, Shared Subscriptions, and the Art of Workarounds", "url": "https://cekrem.github.io/posts/elm-land-shared-subscriptions-and-the-art-of-workarounds/", "published_at": "2025-10-14T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f53ce6e4d", "title": "My new project, and some of what's ahead", "url": "https://cekrem.github.io/posts/my-new-project/", "published_at": "2025-10-07T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5414c6a0", "title": "Fighting for Brain, Heart and Sleep", "url": "https://cekrem.github.io/posts/fighting-for-brain-heart-and-sleep/", "published_at": "2025-09-29T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5441bb79", "title": "The Discipline of Constraints: What Elm Taught Me About React's useReducer", "url": "https://cekrem.github.io/posts/the-discipline-of-constraints-elm-usereducer-lessons/", "published_at": "2025-09-18T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f54e408c3", "title": "HTML Helpers 2.0.0 for Elm: Stable conditionals and attributes", "url": "https://cekrem.github.io/posts/html-helpers-2-0-0-for-elm/", "published_at": "2025-09-16T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f55c958ac", "title": "The Subtle Art of Taming Flows and Coroutines in Kotlin, or 'How Not to DDoS Yourself with Server-Sent Events'", "url": "https://cekrem.github.io/posts/the-subtle-art-of-taming-flows-and-coroutines-in-kotlin/", "published_at": "2025-09-08T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f569b3ce2", "title": "Compiler-Driven Development: Building an Elm Playground That Compiles in the Browser", "url": "https://cekrem.github.io/posts/compiler-driven-development-elm-playground/", "published_at": "2025-08-31T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f56a77bac", "title": "Making Impossible States Impossible: Type-Safe Domain Modeling with Functional Dependency Injection", "url": "https://cekrem.github.io/posts/making-impossible-states-impossible-with-functional-dependency-injection/", "published_at": "2025-08-18T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f575f8384", "title": "Kotlin's Rich Errors: Native, Typed Errors Without Exceptions", "url": "https://cekrem.github.io/posts/kotlin-rich-errors-elm-union-types/", "published_at": "2025-08-08T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f57f55d46", "title": "On the Value of Abstractions", "url": "https://cekrem.github.io/posts/on-the-value-of-abstractions/", "published_at": "2025-08-07T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f58dc69bc", "title": "The Craftsman Mindset: Lessons from Four Weeks Offline", "url": "https://cekrem.github.io/posts/craftsman-mindset/", "published_at": "2025-08-03T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f59656f37", "title": "Tailwind IntelliSense in Elm: A NeoVim Recipe", "url": "https://cekrem.github.io/posts/tailwind-intellisense-elm-neovim/", "published_at": "2025-07-04T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f59ae820f", "title": "Programming as Theory Building: Why Senior Developers Are More Valuable Than Ever", "url": "https://cekrem.github.io/posts/programming-as-theory-building-naur/", "published_at": "2025-06-26T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5a403fe0", "title": "Pragmatic Hacks: When 'Good Enough' is Actually Good Enough", "url": "https://cekrem.github.io/posts/pragmatic-hacks-search-widget-elm/", "published_at": "2025-06-23T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5a9421f8", "title": "Claude Code: Game Changer or Just Hype?", "url": "https://cekrem.github.io/posts/claude-code-game-changer-or-just-hype/", "published_at": "2025-06-10T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5a9eb77c", "title": "Starting Small with Elm: A Widget Approach", "url": "https://cekrem.github.io/posts/starting-small-with-elm-a-widget-approach/", "published_at": "2025-06-03T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5b3b6924", "title": "Passion", "url": "https://cekrem.github.io/posts/passion/", "published_at": "2025-05-23T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5befaae4", "title": "A Use Case for Port Boundaries in Frontend Development", "url": "https://cekrem.github.io/posts/a-case-for-port-boundaries-in-frontend/", "published_at": "2025-05-19T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5c52c3f8", "title": "Dependency Inversion in React: Building Truly Testable Components", "url": "https://cekrem.github.io/posts/dependency-inversion-in-react/", "published_at": "2025-05-09T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5cbb2291", "title": "The Psychology of Clean Code: Why We Write Messy React Components", "url": "https://cekrem.github.io/posts/psychology-of-clean-code/", "published_at": "2025-05-07T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5d5dc57a", "title": "Introducing HTML Helpers for Elm", "url": "https://cekrem.github.io/posts/introducing-html-helpers-for-elm/", "published_at": "2025-05-06T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5dca17aa", "title": "Coding as Craft: Going Back to the Old Gym", "url": "https://cekrem.github.io/posts/coding-as-craft-going-back-to-the-old-gym/", "published_at": "2025-04-22T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5e3e1a4a", "title": "React Reconciliation: The Hidden Engine Behind Your Components", "url": "https://cekrem.github.io/posts/react-reconciliation-deep-dive/", "published_at": "2025-04-08T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5e3fa20e", "title": "React.memo Demystified: When It Helps and When It Hurts", "url": "https://cekrem.github.io/posts/react-memo-when-it-helps-when-it-hurts/", "published_at": "2025-04-02T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5ec24577", "title": "Introducing `content-visibility: auto` - A Hidden Performance Gem", "url": "https://cekrem.github.io/posts/content-visibility-auto-performance/", "published_at": "2025-03-26T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5f037858", "title": "Building Better UI Components: Elm Ports with Web Components", "url": "https://cekrem.github.io/posts/elm-ports-with-web-components/", "published_at": "2025-03-19T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5f2b19ef", "title": "Feedback.one: A Refreshing Take on User Feedback Built with Elm and Rust", "url": "https://cekrem.github.io/posts/feedback-one-elm-rust-feedback-widget/", "published_at": "2025-03-13T00:00:00+00:00" }, { "id": "01a0875d-9583-73e4-b419-183f5ff805d4", "title": "Beyond React.memo: Smarter Ways to Optimize Performance", "url": "https://cekrem.github.io/posts/beyond-react-memo-smarter-performance-optimization/", "published_at": "2025-03-11T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b221beba", "title": "Why I Hope I Get to Write a Lot of Elm Code in 2025", "url": "https://cekrem.github.io/posts/why-i-hope-i-get-to-write-a-lot-of-elm-code-in-2025/", "published_at": "2025-03-04T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b31240c0", "title": "Refactoring Towards Cleaner Boundaries: Lessons from Building a Markdown Blog Engine (Part 3)", "url": "https://cekrem.github.io/posts/refactoring-towards-cleaner-boundaries/", "published_at": "2025-02-25T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b35afdac", "title": "Double Loop TDD: Building My Blog Engine the Right Way (part 2)", "url": "https://cekrem.github.io/posts/double-loop-tdd-blog-engine-pt2/", "published_at": "2025-02-18T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b3ca25e8", "title": "Making a Clean Architecture Blog Engine From Scratch pt 1", "url": "https://cekrem.github.io/posts/replacing-hugo-with-kotlin-clean-architecture/", "published_at": "2025-02-11T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b4302b87", "title": "Single Responsibility Principle in React: The Art of Component Focus", "url": "https://cekrem.github.io/posts/single-responsibility-principle-in-react/", "published_at": "2025-02-04T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b4f13965", "title": "A Use Case for `UseCase`s in Kotlin", "url": "https://cekrem.github.io/posts/a-use-case-for-usecases-in-kotlin/", "published_at": "2025-01-31T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b52d1d25", "title": "Resume", "url": "https://cekrem.github.io/resume/", "published_at": "2025-01-29T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b5901821", "title": "Open-Closed Principle in React: Building Extensible Components", "url": "https://cekrem.github.io/posts/open-closed-principle-in-react/", "published_at": "2025-01-28T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b5b526ec", "title": "Liskov Substitution: The Real Meaning of Inheritance", "url": "https://cekrem.github.io/posts/liskov-substitution-the-real-meaning-of-inheritance/", "published_at": "2025-01-21T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b5c89f36", "title": "The One Book (Besides The Bible) I Want My Future Manager to Read", "url": "https://cekrem.github.io/posts/the-one-book-i-want-my-future-manager-to-read/", "published_at": "2025-01-17T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b60b5cc8", "title": "Interface Segregation: Why Your Interfaces Should Be Small and Focused", "url": "https://cekrem.github.io/posts/interface-segregation-in-practice/", "published_at": "2025-01-14T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b6a908e6", "title": "Clean Architecture: A Practical Example of Dependency Inversion in Go using Plugins", "url": "https://cekrem.github.io/posts/clean-architecture-and-plugins-in-go/", "published_at": "2025-01-07T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b75f0d2a", "title": "Books I Think Software Engineers Should Read", "url": "https://cekrem.github.io/posts/books-i-think-software-engineers-should-read/", "published_at": "2024-12-18T00:00:00+00:00" }, { "id": "01a0875d-9584-715f-980c-ef12b837c98b", "title": "I'm joining Ensō!", "url": "https://cekrem.github.io/posts/im-joining-enso/", "published_at": "2024-12-04T11:10:39+00:00" } ] posts Claim your blog
Back to cekrem.github.io
Blog Β· corpus.blog/blogs/cekrem.github.io/posts

cekrem.github.io

cekrem.github.io

2026

2025

2024