<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>odin &amp;mdash; Sean Barnett</title>
    <link>https://seanbarnett.id.au/tag:odin</link>
    <description>Coffee, basketball, programming</description>
    <pubDate>Sat, 24 Oct 2026 01:47:57 +0000</pubDate>
    <image>
      <url>https://i.snap.as/FOPXss01.png</url>
      <title>odin &amp;mdash; Sean Barnett</title>
      <link>https://seanbarnett.id.au/tag:odin</link>
    </image>
    <item>
      <title>Taking a Second Look at ODIN #</title>
      <link>https://seanbarnett.id.au/hello-odin?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[When I went looking for the right language to explore some thinking around favouring single-machine performance in preference to complex distributed architectures, Zig hit the sweet spot both technically and philosophically. But I am now returning to have a second look at Odin, the other contender on my short-list.!--more--&#xA;&#xA;The Back Story &#xA;A couple of years back I developed a quick reaction solution to assess the data quality of geospatial time-series data. While the data volumes were modest in absolute terms (e.g., a few billion records), I felt the algorithmic complexity and throughput requirements of the task best suited an imperative programming language. Java was already in the environment, and is a language I love working with, so that&#39;s what I used.&#xA;&#xA;The performance of the solution was pleasing, being at least comparable with an alternative data lake implementation built using SQL and running on a much larger distributed hardware configuration. In fact, please enough to trigger quite a bit of deep thinking about how far the actual code running on a single box could be pushed with more optimal tooling, including a programming language that was closer to the hardware and that allowed the programmer direct control over memory layout and management.&#xA;&#xA;So I went looking at programming languages, and the usual contenders emerged as matching my requirements of being compiled, having no garbage collection, being close to the hardware, and having some modern language features: C, C++, Odin, Rust, Swift and Zig.&#xA;&#xA;To cut a long story short I discounted C as having insufficient native language features to pique my interest, and C++ and Rust as being too complex ((https://lightpanda.io/blog/posts/why-we-built-lightpanda-in-zig([I&#39;m just not smart enough]).&#xA;&#xA;Why I Chose Zig &#xA;After a little bit of a search&#xA;&#xA;performance&#xA;&#xA;clean and simple&#xA;&#xA;SIMD&#xA;&#xA;philosophy - no chip on shoulder, avoidance of blanket AI, desire for open source&#xA;&#xA;re-wilding the Internet&#xA;&#xA;Why I am Having Another Look at Odin &#xA;While I deeply appreciate Zig and the ecosystem around it, and the resultant code and performance are noteworthy, I am finding myself hitting speed bumps each time I travel a path for the first time, or the first time in a while. And probably the standard library is that upon which I trip most often:&#xA;&#xA;the documentation is patchy, often non-existent, and sometimes targeted more at understanding how or why more so than how to, so I am often using an Internet search for examples in place of documentation&#xA;&#xA;through some combination of documentation and language visibility mechanisms, it is often difficult to unpickle what is callable API versus what is implementation (e.g., of the 20 functions on the documentation web page, perhaps only a couple are of any interest to me as a user of the library)&#xA;&#xA;as a language targeted at low level system design, library coverage of higher-level functionality that I need for my use case (e.g., time zone aware dates and times) is limited and thus needs to come from third-party contributions&#xA;&#xA;At times, it feels difficult to do simple things like write to the console. Again, I feel this isn&#39;t entirely the fault of the language per se, but more so due to some combination of misalignment between the language objectives and my objectives, and the amount of time I have to devote to learning the language. But I keep coming back to ask myself if there is a way forward that offers less friction.&#xA;&#xA;#Odin #Zig&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>When I went looking for the right language to explore some thinking around favouring single-machine performance in preference to complex distributed architectures, Zig hit the sweet spot both technically and philosophically. But I am now returning to have a second look at Odin, the other contender on my short-list.</p>

<h2 id="the-back-story">The Back Story</h2>

<p>A couple of years back I developed a quick reaction solution to assess the data quality of geospatial time-series data. While the data volumes were modest in absolute terms (e.g., a few billion records), I felt the algorithmic complexity and throughput requirements of the task best suited an imperative programming language. Java was already in the environment, and is a language I love working with, so that&#39;s what I used.</p>

<p>The performance of the solution was pleasing, being at least comparable with an alternative data lake implementation built using SQL and running on a much larger distributed hardware configuration. In fact, please enough to trigger quite a bit of deep thinking about how far the <em>actual code running on a single box</em> could be pushed with more optimal tooling, including a programming language that was closer to the hardware and that allowed the programmer direct control over memory layout and management.</p>

<p>So I went looking at programming languages, and the usual contenders emerged as matching my requirements of being compiled, having no garbage collection, being close to the hardware, and having some modern language features: C, C++, Odin, Rust, Swift and Zig.</p>

<p>To cut a long story short I discounted C as having insufficient native language features to pique my interest, and C++ and Rust as being too complex ((<a href="https://lightpanda.io/blog/posts/why-we-built-lightpanda-in-zig([I&#39;m">https://lightpanda.io/blog/posts/why-we-built-lightpanda-in-zig([I&#39;m</a> just not smart enough]).</p>

<h2 id="why-i-chose-zig">Why I Chose Zig</h2>

<p>After a little bit of a search</p>

<p>performance</p>

<p>clean and simple</p>

<p>SIMD</p>

<p>philosophy – no chip on shoulder, avoidance of blanket AI, desire for open source</p>

<p><a href="https://www.noemamag.com/we-need-to-rewild-the-internet">re-wilding the Internet</a></p>

<h2 id="why-i-am-having-another-look-at-odin">Why I am Having Another Look at Odin</h2>

<p>While I deeply appreciate Zig and the ecosystem around it, and the resultant code and performance are noteworthy, I am finding myself hitting speed bumps each time I travel a path for the first time, or the first time in a while. And probably the standard library is that upon which I trip most often:</p>
<ul><li><p>the documentation is patchy, often non-existent, and sometimes targeted more at understanding <em>how</em> or <em>why</em> more so than <em>how to</em>, so I am often using an Internet search for examples in place of documentation</p></li>

<li><p>through some combination of documentation and language visibility mechanisms, it is often difficult to unpickle what is callable API versus what is implementation (e.g., of the 20 functions on the documentation web page, perhaps only a couple are of any interest to me as a user of the library)</p></li>

<li><p>as a language targeted at low level system design, library coverage of higher-level functionality that I need for my use case (e.g., time zone aware dates and times) is limited and thus needs to come from third-party contributions</p></li></ul>

<p>At times, it feels difficult to do simple things like write to the console. Again, I feel this isn&#39;t entirely the fault of the language per se, but more so due to some combination of misalignment between the language objectives and my objectives, and the amount of time I have to devote to learning the language. But I keep coming back to ask myself if there is a way forward that offers less friction.</p>

<p><a href="https://seanbarnett.id.au/tag:Odin" class="hashtag"><span>#</span><span class="p-category">Odin</span></a> <a href="https://seanbarnett.id.au/tag:Zig" class="hashtag"><span>#</span><span class="p-category">Zig</span></a></p>
]]></content:encoded>
      <guid>https://seanbarnett.id.au/hello-odin</guid>
      <pubDate>Fri, 23 Oct 2026 21:24:56 +0000</pubDate>
    </item>
  </channel>
</rss>