
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Chris Armstrong</title>
      <link>https://www.chrisarmstrong.dev/posts</link>
      <description>Development and tech musings. I&#39;m a full-stack developer working with serverless architecture on AWS with TypeScript and React</description>
      <language>en-us</language>
      <managingEditor>hello@chrisarmstrong.dev (Chris Armstrong)</managingEditor>
      <webMaster>hello@chrisarmstrong.dev (Chris Armstrong)</webMaster>
      <lastBuildDate>Wed, 13 May 2026 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://www.chrisarmstrong.dev/tags/ocaml/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://www.chrisarmstrong.dev/posts/emulating-inheritance-without-classes-2026-05-11</guid>
    <title>Emulating inheritance without classes</title>
    <link>https://www.chrisarmstrong.dev/posts/emulating-inheritance-without-classes-2026-05-11</link>
    <description>The O in OCaml is for its object-oriented extension, but I needed a way to emulate the constraints of inheritance without it. This raised some interesting design questions about how to do it using only the core ML language.
</description>
    <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>gtk</category><category>gui</category><category>gir</category><category>code-generation</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/tackling-multiple-namespaces-in-ocgtk</guid>
    <title>Tackling multiple namespaces in ocgtk</title>
    <link>https://www.chrisarmstrong.dev/posts/tackling-multiple-namespaces-in-ocgtk</link>
    <description>Even though I was focussed only on generating GTK bindings for OCaml, I still had to consider all the other libraries it depends on.
</description>
    <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>gtk</category><category>gui</category><category>gir</category><category>code-generation</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/ocgtk-preview1-release</guid>
    <title>ocgtk preview1 now on opam</title>
    <link>https://www.chrisarmstrong.dev/posts/ocgtk-preview1-release</link>
    <description>ocgtk, a set of GTK4 bindings for OCaml, is now available on opam as preview1 release
</description>
    <pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>gtk</category><category>gui</category><category>gir</category><category>code-generation</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/introducing-ocgtk-gtk4-bindings-for-ocaml</guid>
    <title>Introducing ocgtk: GTK4 bindings for OCaml</title>
    <link>https://www.chrisarmstrong.dev/posts/introducing-ocgtk-gtk4-bindings-for-ocaml</link>
    <description>Introducing ocgtk, a new set of GTK4 bindings for OCaml generated from GObject Introspection data. 
</description>
    <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>gtk</category><category>gui</category><category>gir</category><category>code-generation</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/sydney-ai-engineering-march-2026-losing-control-and-getting-it-back-2026-03-04</guid>
    <title>Sydney AI Engineering Meetup talk - A field report on using LLMs with a little-known language</title>
    <link>https://www.chrisarmstrong.dev/posts/sydney-ai-engineering-march-2026-losing-control-and-getting-it-back-2026-03-04</link>
    <description>Last night I presented a talk at the Sydney AI Engineering Meetup on using agentic coding loops with lesser known languages and less-capable models, of which you can find the videa and slides linked</description>
    <pubDate>Tue, 03 Mar 2026 21:50:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>llm</category><category>agentic coding</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/losing-control-2026-02-06</guid>
    <title>Losing control of the code</title>
    <link>https://www.chrisarmstrong.dev/posts/losing-control-2026-02-06</link>
    <description>Free AI credits, a side project picked on a whim, and a false sense of progress left me with a codebase I couldn&#39;t read. Losing control was necessary to understand how to get it back.</description>
    <pubDate>Fri, 06 Feb 2026 06:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ai</category><category>llm</category><category>ocaml</category><category>code-generation</category><category>refactoring</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/what-would-make-ocaml-serverless-ready</guid>
    <title>What would make OCaml serverless ready?</title>
    <link>https://www.chrisarmstrong.dev/posts/what-would-make-ocaml-serverless-ready</link>
    <description>What role does programming language choice make when targeting serverless environments, and how does OCaml stack up against popular serverless development languages? What would it take to make OCaml your primary development language for serverless?</description>
    <pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>serverless</category><category>cloud</category><category>aws</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/icfp-wrapup-2025-10-18</guid>
    <title>ICFP 2025 Wrap-up</title>
    <link>https://www.chrisarmstrong.dev/posts/icfp-wrapup-2025-10-18</link>
    <description>Wrap-up on my time at the ICFP &#39;25 conference in Singapore</description>
    <pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>icfp</category><category>aws</category><category>smaws</category><category>sdk</category><category>ocaml</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/smaws-update-2025-09-30</guid>
    <title>Update on smaws development - October 2025</title>
    <link>https://www.chrisarmstrong.dev/posts/smaws-update-2025-09-30</link>
    <description>ICFP, smaws gets multiple scheduler support</description>
    <pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>serverless</category><category>aws</category><category>smaws</category><category>sdk</category><category>ocaml</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/smaws-update-2025-09-18</guid>
    <title>Update on smaws development - September 2025</title>
    <link>https://www.chrisarmstrong.dev/posts/smaws-update-2025-09-18</link>
    <description>Update on smaws, an AWS SDK for OCaml</description>
    <pubDate>Thu, 18 Sep 2025 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>serverless</category><category>aws</category><category>smaws</category><category>sdk</category><category>ocaml</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/ocaml-cross-compilation-an-experiment</guid>
    <title>OCaml cross-compilation: an experiment</title>
    <link>https://www.chrisarmstrong.dev/posts/ocaml-cross-compilation-an-experiment</link>
    <description>OCaml has no official solution to cross-compilation, with many disparate options developed for different use cases. In this article I describe my own experiments with cross-compilation and attempts to make it easier to get started and maintain.</description>
    <pubDate>Wed, 30 Apr 2025 10:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>cross-compilation</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/ppx-lib-for-generating-new-code</guid>
    <title>PPXLib is not just for transforming code</title>
    <link>https://www.chrisarmstrong.dev/posts/ppx-lib-for-generating-new-code</link>
    <description>ppxlib is usually just thought of as a tool for transforming OCaml code, but it can be used to generate new code too.</description>
    <pubDate>Mon, 31 Mar 2025 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>aws</category><category>ocaml</category><category>ppxlib</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/removing-unused-code-in-ocaml</guid>
    <title>Keeping it small: helping the compiler to remove unused code in OCaml</title>
    <link>https://www.chrisarmstrong.dev/posts/removing-unused-code-in-ocaml</link>
    <description>OCaml has some facilities for eliminating unused code - I explore what it can do, and how you structure your code to take advantage of it</description>
    <pubDate>Sat, 16 Nov 2024 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>dead code elimination</category><category>tree shaking</category><category>unused code</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/dead-code-elimination-dead-end-in-ocaml</guid>
    <title>Dead code elimination dead end: OCaml doesn&#39;t tree-shake</title>
    <link>https://www.chrisarmstrong.dev/posts/dead-code-elimination-dead-end-in-ocaml</link>
    <description>My (unsuccessful) investigation into removing unused code from the compiled output of OCaml, including all the web archeology and deep-dive into how native binaries are formed.</description>
    <pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>dead code</category><category>tree shaking</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/unit-testing-with-ppx_expect</guid>
    <title>Unit testing OCaml code with ppx_expect: some notes</title>
    <link>https://www.chrisarmstrong.dev/posts/unit-testing-with-ppx_expect</link>
    <description>Some notes on using ppx_expect to unit test</description>
    <pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>ocaml</category><category>testing</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/what-im-working-on--resource-references-and-iam-policies</guid>
    <title>What I&#39;m working on: resource references in ocaml-cfgen and IAM policy generation</title>
    <link>https://www.chrisarmstrong.dev/posts/what-im-working-on--resource-references-and-iam-policies</link>
    <description>ocaml-cfgen gets resource reference, IAM policy generation and what&#39;s next</description>
    <pubDate>Fri, 07 Apr 2023 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>aws</category><category>ocaml</category><category>cloudformation</category>
  </item>

  <item>
    <guid>https://www.chrisarmstrong.dev/posts/what-im-working-on--ocaml-cfgen</guid>
    <title>What I&#39;m working on: ocaml-cfgen</title>
    <link>https://www.chrisarmstrong.dev/posts/what-im-working-on--ocaml-cfgen</link>
    <description>A new project I&#39;m working on to generate CloudFormation templates from OCaml bindings, and the problems that motivated its creation</description>
    <pubDate>Mon, 03 Apr 2023 00:00:00 GMT</pubDate>
    <author>hello@chrisarmstrong.dev (Chris Armstrong)</author>
    <category>aws</category><category>ocaml</category><category>cloudformation</category>
  </item>

    </channel>
  </rss>
