<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>In Rust We Trust 🦀 - rust</title>
      <link>https://nikolaishelekhov.com</link>
      <description>Nikolai is a Rust software engineer building high-performance systems, backend and blockchain infrastructure.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://nikolaishelekhov.com/tags/rust/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Wed, 25 Feb 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Rust Memory Layout Under the Hood</title>
          <pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/rust-memory-layout-under-the-hood/</link>
          <guid>https://nikolaishelekhov.com/blog/rust-memory-layout-under-the-hood/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/rust-memory-layout-under-the-hood/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;rust-memory-layout&#x2F;rust-memory-management.png&quot; alt=&quot;Rust Memory Management Cheat Sheet&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Every Rust struct you write is a memory layout decision.&lt;&#x2F;p&gt;
&lt;p&gt;The kind of thing I wish I had a clear reference for when I was staring at perf output wondering why my “simple” struct was blowing cache lines. So I made one.&lt;&#x2F;p&gt;
&lt;p&gt;Most engineers never think about it. But the compiler does.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Building an AI Coach That Sees Your Factorio Factory</title>
          <pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/building-factorio-sensei/</link>
          <guid>https://nikolaishelekhov.com/blog/building-factorio-sensei/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/building-factorio-sensei/">&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;factorio-sensei&#x2F;factorio-sensei.jpg&quot; alt=&quot;Factorio Sensei&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I got tired of alt-tabbing to ask Claude about my Factorio factory.&lt;&#x2F;p&gt;
&lt;p&gt;Every time I wanted advice, I had to describe my setup manually. “I have 4 furnaces, 2 steam engines, researching automation…” — and half the time I’d forget something important or get the numbers wrong.&lt;&#x2F;p&gt;
&lt;p&gt;So I built a tool that lets Claude see the game directly.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Factorio as an AI Benchmark</title>
          <pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/factorio-as-ai-benchmark/</link>
          <guid>https://nikolaishelekhov.com/blog/factorio-as-ai-benchmark/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/factorio-as-ai-benchmark/">&lt;p&gt;The best AI models today can barely automate early-game smelting in Factorio.&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile, experienced human players build megabases processing millions of items per minute — with perfectly ratioed production lines, optimized train networks, and nuclear power grids running at scale.&lt;&#x2F;p&gt;
&lt;p&gt;That gap is interesting.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-factorio-is-hard-for-ai&quot;&gt;Why Factorio Is Hard for AI&lt;&#x2F;h2&gt;
&lt;p&gt;Factorio is not just a game. It is a real-time systems optimization problem.&lt;&#x2F;p&gt;
&lt;p&gt;It requires:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Long-horizon planning&lt;&#x2F;li&gt;
&lt;li&gt;Resource dependency tracking&lt;&#x2F;li&gt;
&lt;li&gt;Spatial reasoning&lt;&#x2F;li&gt;
&lt;li&gt;Throughput optimization&lt;&#x2F;li&gt;
&lt;li&gt;Incremental refactoring of live systems&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The game punishes short-term thinking.&lt;br &#x2F;&gt;
Every early design decision propagates downstream.&lt;&#x2F;p&gt;
&lt;p&gt;This makes it fundamentally different from most existing AI benchmarks, which are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Static&lt;&#x2F;li&gt;
&lt;li&gt;Text-only&lt;&#x2F;li&gt;
&lt;li&gt;Short-horizon&lt;&#x2F;li&gt;
&lt;li&gt;Deterministic&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Factorio is dynamic, persistent, and adversarial to naive planning.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-factorio-learning-environment&quot;&gt;The Factorio Learning Environment&lt;&#x2F;h2&gt;
&lt;p&gt;There is already an open-source research effort exploring this space:&lt;&#x2F;p&gt;
&lt;p&gt;Factorio Learning Environment&lt;br &#x2F;&gt;
Published at NeurIPS 2025.&lt;&#x2F;p&gt;
&lt;p&gt;It exposes a live Factorio server to LLM agents.&lt;br &#x2F;&gt;
Agents write Python code to interact with the environment and attempt to build automated factories.&lt;&#x2F;p&gt;
&lt;p&gt;The results so far highlight how difficult the problem really is.&lt;&#x2F;p&gt;
&lt;p&gt;Even strong language models struggle with:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Maintaining state over long sessions&lt;&#x2F;li&gt;
&lt;li&gt;Correctly sequencing multi-step production chains&lt;&#x2F;li&gt;
&lt;li&gt;Recovering from partial failures&lt;&#x2F;li&gt;
&lt;li&gt;Designing scalable layouts&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This is not a prompt engineering problem.&lt;br &#x2F;&gt;
It is a systems reasoning problem.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-this-is-an-interesting-benchmark&quot;&gt;Why This Is an Interesting Benchmark&lt;&#x2F;h2&gt;
&lt;p&gt;Factorio introduces properties that resemble real-world infrastructure engineering:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Graph-based dependency trees&lt;&#x2F;li&gt;
&lt;li&gt;Constrained resource allocation&lt;&#x2F;li&gt;
&lt;li&gt;Throughput bottlenecks&lt;&#x2F;li&gt;
&lt;li&gt;Distributed logistics (trains, belts, bots)&lt;&#x2F;li&gt;
&lt;li&gt;Continuous optimization under growth&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;It is closer to distributed systems design than to puzzle solving.&lt;&#x2F;p&gt;
&lt;p&gt;That makes it a compelling unsaturated benchmark for autonomous agents.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;a-rust-based-approach&quot;&gt;A Rust-Based Approach&lt;&#x2F;h2&gt;
&lt;p&gt;I’m currently experimenting with a Rust rewrite of the agent layer using Rig.&lt;&#x2F;p&gt;
&lt;p&gt;The direction is deliberate.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-typed-tools&quot;&gt;1. Typed Tools&lt;&#x2F;h3&gt;
&lt;p&gt;Every game action becomes a strongly typed tool:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Place entity&lt;&#x2F;li&gt;
&lt;li&gt;Connect belts&lt;&#x2F;li&gt;
&lt;li&gt;Query inventory&lt;&#x2F;li&gt;
&lt;li&gt;Inspect recipes&lt;&#x2F;li&gt;
&lt;li&gt;Read map state&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The domain is highly structured.&lt;br &#x2F;&gt;
Rust’s type system allows encoding that structure directly into the interface.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-multi-turn-agent-loops-over-rcon&quot;&gt;2. Multi-Turn Agent Loops over RCON&lt;&#x2F;h3&gt;
&lt;p&gt;Instead of single-shot execution, the agent operates in iterative loops:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Observe world state&lt;&#x2F;li&gt;
&lt;li&gt;Plan next action&lt;&#x2F;li&gt;
&lt;li&gt;Execute via RCON&lt;&#x2F;li&gt;
&lt;li&gt;Re-evaluate&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This creates a feedback-driven control system rather than a stateless command generator.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;3-rag-over-the-recipe-graph&quot;&gt;3. RAG over the Recipe Graph&lt;&#x2F;h3&gt;
&lt;p&gt;Factorio’s crafting tree is a dependency graph.&lt;&#x2F;p&gt;
&lt;p&gt;Using retrieval over:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The recipe tree&lt;&#x2F;li&gt;
&lt;li&gt;Wiki documentation&lt;&#x2F;li&gt;
&lt;li&gt;Item production chains&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;allows grounding decisions in structured domain knowledge instead of relying purely on model memory.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-rust-fits&quot;&gt;Why Rust Fits&lt;&#x2F;h2&gt;
&lt;p&gt;Factorio is deterministic and rule-based.&lt;&#x2F;p&gt;
&lt;p&gt;The action space is structured.
The state transitions are explicit.
The constraints are mechanical.&lt;&#x2F;p&gt;
&lt;p&gt;Rust feels like a natural fit for:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Modeling state transitions&lt;&#x2F;li&gt;
&lt;li&gt;Enforcing invariants&lt;&#x2F;li&gt;
&lt;li&gt;Building typed agent tooling&lt;&#x2F;li&gt;
&lt;li&gt;Keeping orchestration predictable&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;When the domain itself is a graph of dependencies, types become leverage.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-gap&quot;&gt;The Gap&lt;&#x2F;h2&gt;
&lt;p&gt;Humans build megabases.&lt;&#x2F;p&gt;
&lt;p&gt;AI struggles to build a stable smelting line.&lt;&#x2F;p&gt;
&lt;p&gt;That gap is not just amusing — it’s informative.&lt;&#x2F;p&gt;
&lt;p&gt;It exposes the limits of current reasoning systems when faced with:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Long-horizon planning&lt;&#x2F;li&gt;
&lt;li&gt;Structural optimization&lt;&#x2F;li&gt;
&lt;li&gt;Persistent world interaction&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Factorio may quietly become one of the most revealing AI benchmarks available.&lt;&#x2F;p&gt;
&lt;p&gt;The factory must grow — for both humans and AI.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>How I Keep Up With Tech Trends</title>
          <pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/how-i-keep-up-with-tech-trends/</link>
          <guid>https://nikolaishelekhov.com/blog/how-i-keep-up-with-tech-trends/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/how-i-keep-up-with-tech-trends/">&lt;p&gt;“How do you follow all the tech news and programming trends?”&lt;&#x2F;p&gt;
&lt;p&gt;I sometimes get this question in interviews.&lt;&#x2F;p&gt;
&lt;p&gt;My answer is simple:&lt;&#x2F;p&gt;
&lt;p&gt;RSS.&lt;&#x2F;p&gt;
&lt;p&gt;Yes — that “dead” technology from the 2000s.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-rss-still-wins&quot;&gt;Why RSS Still Wins&lt;&#x2F;h2&gt;
&lt;p&gt;Modern content consumption is algorithm-driven:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Infinite scroll&lt;&#x2F;li&gt;
&lt;li&gt;Engagement optimization&lt;&#x2F;li&gt;
&lt;li&gt;Notification loops&lt;&#x2F;li&gt;
&lt;li&gt;Recommended content you didn’t ask for&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The result is noise.&lt;&#x2F;p&gt;
&lt;p&gt;RSS flips the model.&lt;&#x2F;p&gt;
&lt;p&gt;You choose the sources.
You get the updates.
Nothing else.&lt;&#x2F;p&gt;
&lt;p&gt;No ads.
No ranking algorithms.
No engagement tricks.&lt;&#x2F;p&gt;
&lt;p&gt;Just a chronological stream of content you explicitly subscribed to.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-most-people-don-t-realize&quot;&gt;What Most People Don’t Realize&lt;&#x2F;h2&gt;
&lt;p&gt;Most technical platforms still publish RSS feeds:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Tech blogs&lt;&#x2F;li&gt;
&lt;li&gt;Documentation sites&lt;&#x2F;li&gt;
&lt;li&gt;Security advisories&lt;&#x2F;li&gt;
&lt;li&gt;GitHub releases&lt;&#x2F;li&gt;
&lt;li&gt;YouTube channels&lt;&#x2F;li&gt;
&lt;li&gt;Reddit communities&lt;&#x2F;li&gt;
&lt;li&gt;Mastodon accounts&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;RSS never died.
It just stopped being marketed.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;my-setup&quot;&gt;My Setup&lt;&#x2F;h2&gt;
&lt;p&gt;I use &lt;strong&gt;News Explorer&lt;&#x2F;strong&gt; as my primary reader.&lt;&#x2F;p&gt;
&lt;p&gt;It supports:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;RSS feeds&lt;&#x2F;li&gt;
&lt;li&gt;YouTube&lt;&#x2F;li&gt;
&lt;li&gt;Reddit&lt;&#x2F;li&gt;
&lt;li&gt;Mastodon&lt;&#x2F;li&gt;
&lt;li&gt;Bluesky&lt;&#x2F;li&gt;
&lt;li&gt;Podcasts&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Everything syncs via iCloud across devices.&lt;&#x2F;p&gt;
&lt;p&gt;No external accounts.
No cloud dashboards.
No algorithmic layer.&lt;&#x2F;p&gt;
&lt;p&gt;Just folders and feeds.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;scale&quot;&gt;Scale&lt;&#x2F;h2&gt;
&lt;p&gt;I currently track 6,000+ articles across:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Rust&lt;&#x2F;li&gt;
&lt;li&gt;Polkadot&lt;&#x2F;li&gt;
&lt;li&gt;Solana&lt;&#x2F;li&gt;
&lt;li&gt;Security advisories&lt;&#x2F;li&gt;
&lt;li&gt;Systems programming blogs&lt;&#x2F;li&gt;
&lt;li&gt;General software engineering&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;All organized.
All searchable.
All in one place.&lt;&#x2F;p&gt;
&lt;p&gt;It replaces:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Dozens of open tabs&lt;&#x2F;li&gt;
&lt;li&gt;Social media scrolling&lt;&#x2F;li&gt;
&lt;li&gt;Random bookmarking&lt;&#x2F;li&gt;
&lt;li&gt;“I’ll read this later” lists&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;the-real-advantage&quot;&gt;The Real Advantage&lt;&#x2F;h2&gt;
&lt;p&gt;RSS creates a pull-based information system.&lt;&#x2F;p&gt;
&lt;p&gt;You are not fed content.
You poll your sources.&lt;&#x2F;p&gt;
&lt;p&gt;This small inversion has large consequences:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;No FOMO&lt;&#x2F;li&gt;
&lt;li&gt;No engagement pressure&lt;&#x2F;li&gt;
&lt;li&gt;No missing updates because an algorithm deprioritized them&lt;&#x2F;li&gt;
&lt;li&gt;No context switching into unrelated content&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;It is closer to how engineers think:&lt;&#x2F;p&gt;
&lt;p&gt;Deterministic input.
Controlled sources.
Minimal noise.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;when-it-makes-sense&quot;&gt;When It Makes Sense&lt;&#x2F;h2&gt;
&lt;p&gt;RSS works best if:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;You care about specific ecosystems&lt;&#x2F;li&gt;
&lt;li&gt;You follow technical releases closely&lt;&#x2F;li&gt;
&lt;li&gt;You want signal over volume&lt;&#x2F;li&gt;
&lt;li&gt;You value focus over discovery&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;It is not optimized for entertainment.&lt;&#x2F;p&gt;
&lt;p&gt;It is optimized for clarity.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;final-thought&quot;&gt;Final Thought&lt;&#x2F;h2&gt;
&lt;p&gt;If you feel like you are drowning in tabs,
or missing important updates because a feed decided they were “low engagement,”&lt;&#x2F;p&gt;
&lt;p&gt;try RSS.&lt;&#x2F;p&gt;
&lt;p&gt;Sometimes the most boring technology
is the most effective one.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Designing an On-Chain Price Oracle in Substrate</title>
          <pubDate>Sun, 09 Nov 2025 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/substrate-price-oracle/</link>
          <guid>https://nikolaishelekhov.com/blog/substrate-price-oracle/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/substrate-price-oracle/">&lt;p&gt;Accurate price data is foundational to any DeFi system.&lt;&#x2F;p&gt;
&lt;p&gt;DEXs, lending protocols, liquidations, MEV strategies —&lt;br &#x2F;&gt;
all depend on reliable and timely asset pricing.&lt;&#x2F;p&gt;
&lt;p&gt;Instead of relying purely on external infrastructure, I wanted to explore a runtime-native approach using Substrate.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-goal&quot;&gt;The Goal&lt;&#x2F;h2&gt;
&lt;p&gt;Design a modular price oracle pallet that:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Fetches asset prices from external sources&lt;&#x2F;li&gt;
&lt;li&gt;Aggregates them deterministically&lt;&#x2F;li&gt;
&lt;li&gt;Stores them on-chain&lt;&#x2F;li&gt;
&lt;li&gt;Exposes them to other runtime modules&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The constraint: maintain composability and determinism at the runtime level.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;architecture-overview&quot;&gt;Architecture Overview&lt;&#x2F;h2&gt;
&lt;p&gt;The design uses Substrate’s off-chain workers:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Off-chain worker fetches external price data&lt;&#x2F;li&gt;
&lt;li&gt;Data is validated and formatted&lt;&#x2F;li&gt;
&lt;li&gt;An unsigned transaction submits updated price information&lt;&#x2F;li&gt;
&lt;li&gt;Runtime storage is updated&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;This keeps:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Network requests off the runtime path&lt;&#x2F;li&gt;
&lt;li&gt;Deterministic execution within the state machine&lt;&#x2F;li&gt;
&lt;li&gt;Minimal trust assumptions beyond data sources&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;key-design-decisions&quot;&gt;Key Design Decisions&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-off-chain-workers&quot;&gt;1. Off-Chain Workers&lt;&#x2F;h3&gt;
&lt;p&gt;External HTTP requests cannot block runtime execution.&lt;&#x2F;p&gt;
&lt;p&gt;Off-chain workers allow background fetching without compromising block production.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-fixed-point-arithmetic&quot;&gt;2. Fixed-Point Arithmetic&lt;&#x2F;h3&gt;
&lt;p&gt;Floating-point operations are not deterministic across architectures.&lt;&#x2F;p&gt;
&lt;p&gt;All price calculations use fixed-point arithmetic to ensure:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Deterministic execution&lt;&#x2F;li&gt;
&lt;li&gt;Predictable rounding&lt;&#x2F;li&gt;
&lt;li&gt;Cross-node consistency&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;3-storage-layout&quot;&gt;3. Storage Layout&lt;&#x2F;h3&gt;
&lt;p&gt;Prices are stored in optimized maps keyed by asset identifiers.&lt;&#x2F;p&gt;
&lt;p&gt;Design priorities:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Fast reads (price access is frequent)&lt;&#x2F;li&gt;
&lt;li&gt;Minimal storage overhead&lt;&#x2F;li&gt;
&lt;li&gt;Clear upgrade path&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;why-not-just-use-an-external-oracle&quot;&gt;Why Not Just Use an External Oracle?&lt;&#x2F;h2&gt;
&lt;p&gt;External oracle networks are powerful — but they introduce:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Latency&lt;&#x2F;li&gt;
&lt;li&gt;Trust layers&lt;&#x2F;li&gt;
&lt;li&gt;Dependency on third-party infrastructure&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Embedding oracle logic inside the runtime:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Improves composability&lt;&#x2F;li&gt;
&lt;li&gt;Reduces architectural complexity&lt;&#x2F;li&gt;
&lt;li&gt;Enables tighter integration with DeFi pallets&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For experimentation and MEV research, this approach gives full control over the data lifecycle.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-i-learned&quot;&gt;What I Learned&lt;&#x2F;h2&gt;
&lt;p&gt;Building runtime logic reinforces an important principle:&lt;&#x2F;p&gt;
&lt;p&gt;Blockchain development is systems programming.&lt;&#x2F;p&gt;
&lt;p&gt;You’re writing deterministic state machines,
with strict performance constraints,
and zero room for undefined behavior.&lt;&#x2F;p&gt;
&lt;p&gt;Rust and Substrate make that not only possible —
but enjoyable.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Why Rust is My Go-To for Systems Programming</title>
          <pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/why-rust-for-systems-programming/</link>
          <guid>https://nikolaishelekhov.com/blog/why-rust-for-systems-programming/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/why-rust-for-systems-programming/">&lt;p&gt;After 8+ years of software engineering and 5 years specializing in systems programming, I’ve worked extensively with C, C++, Go, and Rust. Here’s why Rust has become my default choice for anything performance-critical.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Blockchain or Rust? Why I Choose Both — On My Terms</title>
          <pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/blockchain-or-rust/</link>
          <guid>https://nikolaishelekhov.com/blog/blockchain-or-rust/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/blockchain-or-rust/">&lt;p&gt;A few months ago, I was asked in an interview:&lt;&#x2F;p&gt;
&lt;p&gt;“What do you love more — Rust or blockchain?”&lt;&#x2F;p&gt;
&lt;p&gt;My answer was immediate.&lt;&#x2F;p&gt;
&lt;p&gt;Rust comes first.&lt;&#x2F;p&gt;
&lt;p&gt;But not just any Rust work — deep, idiomatic, systems-level Rust programming.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rust-first&quot;&gt;Rust First&lt;&#x2F;h2&gt;
&lt;p&gt;What draws me to Rust is not hype.&lt;&#x2F;p&gt;
&lt;p&gt;It’s:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Memory safety without garbage collection&lt;&#x2F;li&gt;
&lt;li&gt;Zero-cost abstractions&lt;&#x2F;li&gt;
&lt;li&gt;Explicit control over performance&lt;&#x2F;li&gt;
&lt;li&gt;Deterministic behavior&lt;&#x2F;li&gt;
&lt;li&gt;Strong type-driven design&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Rust feels like systems programming done correctly.&lt;&#x2F;p&gt;
&lt;p&gt;That foundation matters more to me than the domain.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;blockchain-but-only-at-the-right-layer&quot;&gt;Blockchain — But Only at the Right Layer&lt;&#x2F;h2&gt;
&lt;p&gt;If I work in blockchain, it has to be infrastructure.&lt;&#x2F;p&gt;
&lt;p&gt;Not smart contracts.
Not application-layer glue code.
Not framework-heavy abstraction stacks.&lt;&#x2F;p&gt;
&lt;p&gt;There is a fundamental difference between:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Building on top of someone else’s platform&lt;&#x2F;li&gt;
&lt;li&gt;Building the platform itself&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I’m interested in the second.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-polkadot&quot;&gt;Why Polkadot&lt;&#x2F;h2&gt;
&lt;p&gt;Polkadot stands out for one specific reason:&lt;&#x2F;p&gt;
&lt;p&gt;It is pure Rust.&lt;&#x2F;p&gt;
&lt;p&gt;Substrate is not a thin wrapper around another runtime.
It is not macro-driven sugar hiding complexity.
It exposes the machinery.&lt;&#x2F;p&gt;
&lt;p&gt;You write runtime logic.
You design state transitions.
You control storage.
You reason about determinism.&lt;&#x2F;p&gt;
&lt;p&gt;It feels like systems engineering — not scripting on-chain.&lt;&#x2F;p&gt;
&lt;p&gt;That alignment matters.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;infrastructure-over-applications&quot;&gt;Infrastructure Over Applications&lt;&#x2F;h2&gt;
&lt;p&gt;I am drawn to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Runtime design&lt;&#x2F;li&gt;
&lt;li&gt;Consensus-adjacent components&lt;&#x2F;li&gt;
&lt;li&gt;Performance-critical infrastructure&lt;&#x2F;li&gt;
&lt;li&gt;Cross-chain execution logic&lt;&#x2F;li&gt;
&lt;li&gt;State machine design&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Not UI.
Not token launches.
Not yield optimizers.&lt;&#x2F;p&gt;
&lt;p&gt;I want to work on the systems that make everything else possible.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-boundary-i-ve-drawn&quot;&gt;The Boundary I’ve Drawn&lt;&#x2F;h2&gt;
&lt;p&gt;My focus is clear:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Deep systems programming in Rust&lt;&#x2F;li&gt;
&lt;li&gt;Blockchain infrastructure (not application layer)&lt;&#x2F;li&gt;
&lt;li&gt;Preferably within the Polkadot ecosystem&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That doesn’t invalidate other paths.&lt;&#x2F;p&gt;
&lt;p&gt;It just reflects what I value.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-this-matters&quot;&gt;Why This Matters&lt;&#x2F;h2&gt;
&lt;p&gt;Careers compound.&lt;&#x2F;p&gt;
&lt;p&gt;If you spend years writing surface-level abstractions,
you become good at surface-level abstractions.&lt;&#x2F;p&gt;
&lt;p&gt;If you spend years designing deterministic state machines,
optimizing performance,
and reasoning about low-level invariants,&lt;&#x2F;p&gt;
&lt;p&gt;you become something else entirely.&lt;&#x2F;p&gt;
&lt;p&gt;I choose the latter.&lt;&#x2F;p&gt;
&lt;p&gt;Rust is the constant.
Blockchain is optional — but only when it allows Rust to be used at its full depth.&lt;&#x2F;p&gt;
&lt;p&gt;That’s the line I’ve drawn.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Async Rust Patterns I Use Every Day</title>
          <pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate>
          <author>Nikolai Shelekhov</author>
          <link>https://nikolaishelekhov.com/blog/async-rust-patterns/</link>
          <guid>https://nikolaishelekhov.com/blog/async-rust-patterns/</guid>
          <description xml:base="https://nikolaishelekhov.com/blog/async-rust-patterns/">&lt;p&gt;Working on high-throughput backend services, I’ve developed a set of async patterns that help me write reliable, performant code. Here are the ones I reach for most often.&lt;&#x2F;p&gt;</description>
      </item>
    </channel>
</rss>
