<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: eriangazag</title><link>https://news.ycombinator.com/user?id=eriangazag</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 16 May 2026 08:17:43 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=eriangazag" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by eriangazag in "O(x)Caml in Space"]]></title><description><![CDATA[
<p>(author of the post here)<p>Hey dsab! I agree, but CCSDS is what we have today. We need to support it properly first if we ever want to extend or transition away. It also doesn't help that there's no good open-source implementation of the whole stack, especially the SDLS part, which makes the transition even harder.<p>On the type-safety side, I found typed combinators really useful for describing parsing and serialising (see my earlier post on ocaml-wire[1]), and keeping the protocol logic pure (separate from I/O) makes the whole thing much easier to test and reason about. OCaml's fuzzing support pairs really well with types too. This is basically the nqsb-TLS approach [2], which has held up in ocaml-tls for a decade.<p>[1] <a href="https://gazagnaire.org/blog/2026-03-31-ocaml-wire.html" rel="nofollow">https://gazagnaire.org/blog/2026-03-31-ocaml-wire.html</a>
[2] <a href="https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/kaloper-mersinjak" rel="nofollow">https://www.usenix.org/conference/usenixsecurity15/technical...</a></p>
]]></description><pubDate>Fri, 15 May 2026 16:34:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48150671</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=48150671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48150671</guid></item><item><title><![CDATA[New comment by eriangazag in "O(x)Caml in Space"]]></title><description><![CDATA[
<p>(author of the post here)<p>Hey Maksadbek! Great question. It's a trade-off between speed of writing and trust in what you wrote, and OCaml (especially OxCaml) sits at a really good point on that curve.<p>Ada/SPARK has the strongest verification story and decades of space heritage, but the development cost is higher. Rust would work too, but I actively want a GC by default with the option to turn it off on the hot path. That is exactly what OxCaml's mode system gives you: zero minor GCs on the dispatch loop in the post, while the rest stays GC-managed. Haskell is great for type-driven design but its runtime cost-model is harder for low-jitter work.<p>Plus, the OCaml ecosystem gave me solid foundations on both fronts. For the protocol stack: MirageOS-style clean separation between wire serialisation, pure state-machine management and I/O, with ML modules and GADTs that map naturally onto protocol state machines. For the crypto: mirage-crypto for OCaml-facing primitives (fiat-crypto under the elliptic curves), and libcrux for ML-DSA-65 post-quantum signing. The CCSDS and BPv7/BPSec layers themselves I had to write from scratch (my earlier posts walk through how), and 20 years of OCaml muscle memory definitely helped!</p>
]]></description><pubDate>Fri, 15 May 2026 16:26:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48150572</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=48150572</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48150572</guid></item><item><title><![CDATA[New comment by eriangazag in "O(x)Caml in Space"]]></title><description><![CDATA[
<p>(author of the post here)<p>Hey Berké! I remember your talk very well (I was in the room), super interesting and it really got me thinking about this area!<p>Since then, the more I look into it, the more I see a fit with our MirageOS unikernel work. On the ground, you can paper over security and specialisation by throwing more machines (or money) at the problem. In orbit you cannot, so both the compile-time and the runtime guarantees have to be right!</p>
]]></description><pubDate>Fri, 15 May 2026 16:08:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48150354</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=48150354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48150354</guid></item><item><title><![CDATA[New comment by eriangazag in "Mirage – A programming framework for building type-safe, modular systems"]]></title><description><![CDATA[
<p>Absolutely, MirageOS is indeed pivotal in the development of unikernels. MirageOS not only developed the unikernel concept but also coined the term 'unikernel'.<p>MirageOS represents a significant shift in cloud and network computing, focusing on building highly specialized, secure, and efficient unikernels that streamline application deployment by shedding unnecessary components. It also puts extra focus on security, with most of the stack — including TCP and TLS — being rewritten in a type-safe language (OCaml).<p>Currently, MirageOS is expanding to include bare-metal and embedded systems, aiming to bring the same level of security and efficiency to this domain. The move towards embedded systems is a natural progression for MirageOS, given our emphasis on minimalism and security in environments where resources are limited and reliability is crucial. See for instance what is happening with SpaceOS: <a href="https://tarides.com/blog/2023-07-31-ocaml-in-space-welcome-spaceos/" rel="nofollow noreferrer">https://tarides.com/blog/2023-07-31-ocaml-in-space-welcome-s...</a></p>
]]></description><pubDate>Fri, 24 Nov 2023 10:35:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=38402484</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=38402484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38402484</guid></item><item><title><![CDATA[New comment by eriangazag in "Wasm_of_OCaml"]]></title><description><![CDATA[
<p>Wasm_of_ocaml is a fork of Js_of_ocaml which compiles OCaml bytecode to WebAssembly. The generated code works with Chrome beta and node V8 canary.</p>
]]></description><pubDate>Mon, 24 Jul 2023 15:23:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=36849479</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=36849479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36849479</guid></item><item><title><![CDATA[Wasm_of_OCaml]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/ocaml-wasm/wasm_of_ocaml">https://github.com/ocaml-wasm/wasm_of_ocaml</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36849478">https://news.ycombinator.com/item?id=36849478</a></p>
<p>Points: 118</p>
<p># Comments: 52</p>
]]></description><pubDate>Mon, 24 Jul 2023 15:23:30 +0000</pubDate><link>https://github.com/ocaml-wasm/wasm_of_ocaml</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=36849478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36849478</guid></item><item><title><![CDATA[Dune, the new build system for OCaml is released]]></title><description><![CDATA[
<p>Article URL: <a href="https://discuss.ocaml.org/t/ann-dune-1-0-0">https://discuss.ocaml.org/t/ann-dune-1-0-0</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=17506450">https://news.ycombinator.com/item?id=17506450</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 11 Jul 2018 12:53:38 +0000</pubDate><link>https://discuss.ocaml.org/t/ann-dune-1-0-0</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=17506450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17506450</guid></item><item><title><![CDATA[Easy distributed analytics with Irmin 1.0]]></title><description><![CDATA[
<p>Article URL: <a href="https://mirage.io/blog/irmin-1.0">https://mirage.io/blog/irmin-1.0</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=13803047">https://news.ycombinator.com/item?id=13803047</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 06 Mar 2017 14:58:55 +0000</pubDate><link>https://mirage.io/blog/irmin-1.0</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=13803047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13803047</guid></item><item><title><![CDATA[New comment by eriangazag in "Irmin: Git-like distributed DB"]]></title><description><![CDATA[
<p>As for the rest of MirageOS, Irmin is a "library" database, means that you have a bunch of components than you can re-use in different contexts. Two interesting contexts are:<p>- the browser, where some components of Irmin are transpiled to JavaScript using js_of_ocaml (<a href="http://ocsigen.org/js_of_ocaml/" rel="nofollow">http://ocsigen.org/js_of_ocaml/</a>). Cuekeeper (<a href="http://roscidus.com/blog/blog/2015/04/28/cuekeeper-gitting-things-done-in-the-browser/" rel="nofollow">http://roscidus.com/blog/blog/2015/04/28/cuekeeper-gitting-t...</a>) is an interesting use-case for that.<p>- the kernel, where some components of Irmin can be compiled into a unikernel and be run on top of Xen/baremetal, bypassing the OS completely. Irmin-ARP (<a href="http://somerandomidiot.com/blog/2015/04/24/what-a-distributed-version-controlled-ARP-cache-gets-you/" rel="nofollow">http://somerandomidiot.com/blog/2015/04/24/what-a-distribute...</a>) is an interesting step is the direction of exposing kernel data and do interesting stuff with it.</p>
]]></description><pubDate>Wed, 04 Nov 2015 08:54:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=10505335</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=10505335</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10505335</guid></item><item><title><![CDATA[New comment by eriangazag in "Irmin: Git-like distributed DB"]]></title><description><![CDATA[
<p>Yes, you can easily add thing into a "staging area" of your database (which is hold in-memory), and then "commit" your changes to update multiple keys in one go. You can also use this mechanism to keep track of reads (what Git doesn't do) to detect read/write conflicts.</p>
]]></description><pubDate>Wed, 04 Nov 2015 08:47:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=10505309</link><dc:creator>eriangazag</dc:creator><comments>https://news.ycombinator.com/item?id=10505309</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10505309</guid></item></channel></rss>