<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Boris Churzin</title>
    <description>The latest articles on Forem by Boris Churzin (@devenv).</description>
    <link>https://forem.com/devenv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F287532%2F15fd0167-cc60-47ea-af24-dc54200a1682.png</url>
      <title>Forem: Boris Churzin</title>
      <link>https://forem.com/devenv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devenv"/>
    <language>en</language>
    <item>
      <title>Shipping a Universe: A Post-Mortem</title>
      <dc:creator>Boris Churzin</dc:creator>
      <pubDate>Thu, 15 Jan 2026 20:16:20 +0000</pubDate>
      <link>https://forem.com/devenv/shipping-a-universe-a-post-mortem-42n</link>
      <guid>https://forem.com/devenv/shipping-a-universe-a-post-mortem-42n</guid>
      <description>&lt;p&gt;A PM–Dev dialogue about shipping a universe — and discovering that time is not a dependency, but a consequence.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@boris.churzin/shipping-a-universe-a-post-mortem-1b75b55b205b" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try to picture no time
&lt;/h2&gt;

&lt;p&gt;Not frozen. Not paused.&lt;/p&gt;

&lt;p&gt;Literally no before, no after. No moment you could wait through.&lt;/p&gt;

&lt;p&gt;Even the idea of stillness sneaks in an ordering — something that could change. Remove that, and there is no sequence to appeal to. No forward. No backward.&lt;/p&gt;

&lt;p&gt;This isn't a limitation of imagination. It's a signal.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Time is not something added at setup. It appears the instant a system supports distinctions that must be ordered. The moment consequences exist—when choosing X instead of Y constrains what can also be true—an ordering appears. That ordering is what we call time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's how a Product Manager and a deliberately obtuse Dev discovered that, one build at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build 0 — Just Space
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Need a universe. Keep it minimal. No matter, no energy — just space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Any requirements beyond "exists"?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Yes. It has to matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; You said "no matter"!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Constraints. Consequences. If one possibility excludes another, the system should reflect that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Shipping infinite space. Perfectly uniform. Nothing in it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; What state is the universe in?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; …Yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; That's not a state…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; …It is&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A perfectly uniform universe has no internal contrast. No alternatives. No distinctions. It technically exists, but it cannot produce more than a single description of itself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Does it have time?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; No. You haven't asked for "time". It's perfect. One state, nothing changes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Time does not exist first to allow change. Change — in the sense of distinguishable alternatives — is what allows time to exist.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Build 1 — Stuff That Bumps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Add particles. Let them interact. Make the interactions destructive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Done. Particles collide. Outcomes differ. Some configurations prevent others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Ship it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; No can do! To define a collision, I had to assume a background. The system now has time because I faked it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Classical physics creates relationships &lt;strong&gt;inside&lt;/strong&gt; spacetime, but it &lt;strong&gt;assumes&lt;/strong&gt; spacetime already exists.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; What if order emerged from the data?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Like a side effect?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Like a side effect!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Wat?!… It's weird, it sounds impossible, and I hate that this just might work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build 2 — Make Relations Fundamental
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; New approach. Instead of particles in space, I defined relations directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; But why does ordering go one direction?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Because "undo" isn't forbidden — it's just insanely rare. So the direction we call "future" is the direction in which information about the past gets dispersed into details we don't track.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Space and time aren't inputs; they're bookkeeping forced by constraints and their updates.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; What happens without relations at all?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; You get isolated facts with no mutual constraints. Nothing prevents contradictions. Nothing orders possibilities.&lt;/p&gt;

&lt;p&gt;Without relations, there is no structure. Without structure, there is no ordering. Without ordering, there is no time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Time Stops Being Magic
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Build 1 had time. What's different now?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; It had time because we put it there as an ingredient. Now time emerges from relations. We're not assuming a clock — the universe generates its own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; So time was always there once we had change. But now we know why it's there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev:&lt;/strong&gt; Exactly. Before, time was magic. Now it's accounting. Structure creates relations, relations create ordering, ordering is time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PM:&lt;/strong&gt; Release!&lt;/p&gt;

&lt;h2&gt;
  
  
  What "Consequences" Secretly Required
&lt;/h2&gt;

&lt;p&gt;We kept failing until we had all the requirements:&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Distinction&lt;/strong&gt; gives multiple descriptions&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Relations&lt;/strong&gt; create constraints&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Change&lt;/strong&gt; produces sequences&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Consistency&lt;/strong&gt; makes sequences composable&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Accumulation&lt;/strong&gt; lets patterns matter&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Irreversibility&lt;/strong&gt; given low entropy, makes ordering flow one direction&lt;/p&gt;

&lt;p&gt;These aren't preferences. They're failure modes.&lt;/p&gt;

&lt;p&gt;A universe doesn't begin with time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time begins when the universe stops being meaningless.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Author here—happy to discuss where this framework breaks down or what other "obvious" dependencies turn out to be emergent!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>programming</category>
      <category>science</category>
    </item>
    <item>
      <title>Building A Perfect Keyboard</title>
      <dc:creator>Boris Churzin</dc:creator>
      <pubDate>Mon, 22 Sep 2025 22:05:20 +0000</pubDate>
      <link>https://forem.com/devenv/building-a-perfect-keyboard-1a8j</link>
      <guid>https://forem.com/devenv/building-a-perfect-keyboard-1a8j</guid>
      <description>&lt;p&gt;After years of fighting with keyboard pain and failed commercial 'ergonomic' solutions, I built my own — here's what worked and why.&lt;/p&gt;

&lt;p&gt;[Note: This is a canonical republication from Medium - [original article link]]&lt;/p&gt;

&lt;h2&gt;
  
  
  The Journey to Building a Perfect Keyboard
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Practical Recommendations and Open Questions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Which alternative keyboard layouts have most improved your workflow?&lt;/li&gt;
&lt;li&gt;Any firmware tricks that made your daily dev less painful?&lt;/li&gt;
&lt;li&gt;Share your own ergonomic mods in the comments!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>diy</category>
      <category>keyboardhardware</category>
      <category>vim</category>
      <category>ergonomics</category>
    </item>
    <item>
      <title>My AI Speaks curl and jq — MCP Can Catch Up Later</title>
      <dc:creator>Boris Churzin</dc:creator>
      <pubDate>Mon, 22 Sep 2025 21:54:10 +0000</pubDate>
      <link>https://forem.com/devenv/my-ai-speaks-curl-and-jq-mcp-can-catch-up-later-2b65</link>
      <guid>https://forem.com/devenv/my-ai-speaks-curl-and-jq-mcp-can-catch-up-later-2b65</guid>
      <description>&lt;p&gt;I taught my AI to ditch the daemon, embrace &lt;code&gt;curl&lt;/code&gt;, and vibe with &lt;code&gt;jq&lt;/code&gt;. No fancy installers, just raw answers and scripts you can actually audit. 👾 Full story, full repo shape, zero black box energy. Read (and steal my setup): [&lt;a href="https://medium.com/@boris.churzin/my-ai-speaks-curl-and-jq-mcp-can-catch-up-later-12722a5d69db" rel="noopener noreferrer"&gt;https://medium.com/@boris.churzin/my-ai-speaks-curl-and-jq-mcp-can-catch-up-later-12722a5d69db&lt;/a&gt;]&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
