conv.

All stories
TechQuiet 3d · day 4

Blog post on deterministic core architecture gains attention

An article refining functional programming patterns for legacy code circulates across tech communities.

What to know

  • The post refines a 14-year-old architecture pattern to emphasize determinism (consistent input-output behavior) rather than pure functional programming as the key testability property.
  • Determinism can be achieved through imperative patterns like state machines, making the approach more practical for legacy systems and performance-constrained environments like C.
  • The article proposes separating deterministic business logic from non-deterministic I/O and side effects, mirroring but broadening the functional core/imperative shell distinction.

Author (outdata.net) Blog authorGary Bernhardt Software architecture theorist

How it unfolded 2 developments, newest first · click a bar or a number to jump articlesposts

Peak 2 pieces in one hour at Sep 20, 9 PM; 6 pieces over 4 days (1 article · 3 posts · 2 comments) Sep 20, 4 PM — 1 piece · 1 post — Lobsters 1Sep 20, 5 PM — 1 piece · 1 comment — Lobsters 1Sep 20, 6 PM — quietSep 20, 7 PM — quietSep 20, 8 PM — quietSep 20, 9 PM — 2 pieces · 1 article · 1 post — Hacker News 1, Newswires 1Sep 20, 10 PM — 1 piece · 1 post — Mastodon 1Sep 20, 11 PM — quietSep 21, 12 AM — quietSep 21, 1 AM — quietSep 21, 2 AM — quietSep 21, 3 AM — quietSep 21, 4 AM — quietSep 21, 5 AM — 1 piece · 1 comment — Lobsters 1Sep 21, 6 AM — quietSep 21, 7 AM — quietSep 21, 8 AM — quietSep 21, 9 AM — quietSep 21, 10 AM — quietSep 21, 11 AM — quietSep 21, 12 PM — quietSep 21, 1 PM — quietSep 21, 2 PM — quietSep 21, 3 PM — quietSep 21, 4 PM — quietSep 21, 5 PM — quietSep 21, 6 PM — quietSep 21, 7 PM — quietSep 21, 8 PM — quietSep 21, 9 PM — quietSep 21, 10 PM — quietSep 21, 11 PM — quietSep 22, 12 AM — quietSep 22, 1 AM — quietSep 22, 2 AM — quietSep 22, 3 AM — quietSep 22, 4 AM — quietSep 22, 5 AM — quietSep 22, 6 AM — quietSep 22, 7 AM — quietSep 22, 8 AM — quietSep 22, 9 AM — quietSep 22, 10 AM — quietSep 22, 11 AM — quietSep 22, 12 PM — quietSep 22, 1 PM — quietSep 22, 2 PM — quietSep 22, 3 PM — quietSep 22, 4 PM — quietSep 22, 5 PM — quietSep 22, 6 PM — quietSep 22, 7 PM — quietSep 22, 8 PM — quietSep 22, 9 PM — quietSep 22, 10 PM — quietSep 22, 11 PM — quietYesterday, 12 AM — quietYesterday, 1 AM — quietYesterday, 2 AM — quietYesterday, 3 AM — quietYesterday, 4 AM — quietYesterday, 5 AM — quietYesterday, 6 AM — quietYesterday, 7 AM — quietYesterday, 8 AM — quietYesterday, 9 AM — quietYesterday, 10 AM — quietYesterday, 11 AM — quietYesterday, 12 PM — quietYesterday, 1 PM — quietYesterday, 2 PM — quietYesterday, 3 PM — quietYesterday, 4 PM — quietYesterday, 5 PM — quietYesterday, 6 PM — quietYesterday, 7 PM — quietYesterday, 8 PM — quietYesterday, 9 PM — quietYesterday, 10 PM — quietYesterday, 11 PM — quietToday, 12 AM — quietToday, 1 AM — quietToday, 2 AM — quietToday, 3 AM — quietToday, 4 AM — quietToday, 5 AM — quietToday, 6 AM — quietToday, 7 AM — quietToday, 8 AM — quietToday, 9 AM — quietToday, 10 AM — quietToday, 11 AM — quiet 1–2
Sep 21Sep 22yesterdaynow · 12:38 PM ET
  1. 2

    Article shared on Mastodon

    The post is shared across Mastodon, with links to both the original article and the Hacker News discussion thread.

    • I don't buy it - the problem with the state machine version is that, while it might be deterministic, when you are looking at a bit of code you can only assume it is deterministic if you know that no one else (by which I mean no other thread or just some other place in the program) has access to the state machine object. While its only literally…

      composite_higgstesting3d ago1▲view on Lobsters ↗
  2. 1

    Article reaches Hacker News frontpage

    The post gains traction on Hacker News with 3 points and 1 comment, appearing on the HN frontpage RSS feed.

    “Fourteen years ago, Gary Bernhardt coined the term Functional Core, Imperative Shell. Like most good ideas in computing it was not entirely new, but his conception had great clarity, and it forms an excellent basis for talking about testing and determinism in existing systems.”
    — Author, Blog author · source
    • Also known as sans-io; also, the async "function color" is itself essentially an indicator of non-determinism (well, maybe except for cooperative multitasking)

      eugenytesting3d ago3▲view on Lobsters ↗
  3. background

    Blog post on deterministic core architecture published — An article on outdata.net introduces "Deterministic Core, Non-Deterministic Shell" as an architectural pattern, building on Gary Bernhardt's 14-year-old "Functional Core, Imperative Shell" concept. The post argues that determinism—consistent outputs for given inputs—is the property that makes code testable, and that this can be achieved through imperative patterns like state machines, not just pure functional programming.

What people are saying 0 voices from 0 sites · best of 2 · verbatim