<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://jaked.org/</id>
    <title>Jake Donham</title>
    <updated>2021-11-11T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Jake Donham</name>
    </author>
    <link rel="alternate" href="https://jaked.org/"/>
    <subtitle>Writing about coding and related topics.</subtitle>
    <rights>© 2026 Jake Donham</rights>
    <entry>
        <title type="html"><![CDATA[How to implement a TypeScript-style type checker (Reconstructing TypeScript), part 6: narrowing]]></title>
        <id>https://jaked.org/blog/2021-11-11-Reconstructing-TypeScript-part-6/</id>
        <link href="https://jaked.org/blog/2021-11-11-Reconstructing-TypeScript-part-6/"/>
        <updated>2021-11-11T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to implement a TypeScript-style type checker (Reconstructing TypeScript), part 5: intersection types]]></title>
        <id>https://jaked.org/blog/2021-10-28-Reconstructing-TypeScript-part-5/</id>
        <link href="https://jaked.org/blog/2021-10-28-Reconstructing-TypeScript-part-5/"/>
        <updated>2021-10-28T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to implement a TypeScript-style type checker (Reconstructing TypeScript), part 4: union types]]></title>
        <id>https://jaked.org/blog/2021-10-14-Reconstructing-TypeScript-part-4/</id>
        <link href="https://jaked.org/blog/2021-10-14-Reconstructing-TypeScript-part-4/"/>
        <updated>2021-10-14T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reconstructing TypeScript, part 3: singleton types and operators]]></title>
        <id>https://jaked.org/blog/2021-10-06-Reconstructing-TypeScript-part-3/</id>
        <link href="https://jaked.org/blog/2021-10-06-Reconstructing-TypeScript-part-3/"/>
        <updated>2021-10-06T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reconstructing TypeScript, part 2: functions and function types]]></title>
        <id>https://jaked.org/blog/2021-09-27-Reconstructing-TypeScript-part-2/</id>
        <link href="https://jaked.org/blog/2021-09-27-Reconstructing-TypeScript-part-2/"/>
        <updated>2021-09-27T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reconstructing TypeScript, part 1: bidirectional type checking]]></title>
        <id>https://jaked.org/blog/2021-09-15-Reconstructing-TypeScript-part-1/</id>
        <link href="https://jaked.org/blog/2021-09-15-Reconstructing-TypeScript-part-1/"/>
        <updated>2021-09-15T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reconstructing TypeScript, part 0: intro and background]]></title>
        <id>https://jaked.org/blog/2021-09-07-Reconstructing-TypeScript-part-0/</id>
        <link href="https://jaked.org/blog/2021-09-07-Reconstructing-TypeScript-part-0/"/>
        <updated>2021-09-07T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Recurse Center Retro]]></title>
        <id>https://jaked.org/blog/2021-07-30-Recurse-Center-Retro/</id>
        <link href="https://jaked.org/blog/2021-07-30-Recurse-Center-Retro/"/>
        <updated>2021-07-30T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Slate Explorer, a tool for exploring the Slate API]]></title>
        <id>https://jaked.org/blog/2021-02-26-Slate-Explorer/</id>
        <link href="https://jaked.org/blog/2021-02-26-Slate-Explorer/"/>
        <updated>2021-02-26T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to run Electron on Linux on Docker on Mac]]></title>
        <id>https://jaked.org/blog/2021-02-18-How-to-run-Electron-on-Linux-on-Docker-on-Mac/</id>
        <link href="https://jaked.org/blog/2021-02-18-How-to-run-Electron-on-Linux-on-Docker-on-Mac/"/>
        <updated>2021-02-18T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Recurse Center]]></title>
        <id>https://jaked.org/blog/2021-02-12-Recurse-Center/</id>
        <link href="https://jaked.org/blog/2021-02-12-Recurse-Center/"/>
        <updated>2021-02-12T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Logic programming in Scala, part 3: unification and state]]></title>
        <id>https://jaked.org/blog/2011-06-08-logic-programming-in-scala-part-3/</id>
        <link href="https://jaked.org/blog/2011-06-08-logic-programming-in-scala-part-3/"/>
        <updated>2011-06-08T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Logic programming in Scala, part 2: backtracking]]></title>
        <id>https://jaked.org/blog/2011-04-29-logic-programming-in-scala-part-2/</id>
        <link href="https://jaked.org/blog/2011-04-29-logic-programming-in-scala-part-2/"/>
        <updated>2011-04-29T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Logic programming in Scala, part 1]]></title>
        <id>https://jaked.org/blog/2011-04-06-logic-programming-in-scala-part-1/</id>
        <link href="https://jaked.org/blog/2011-04-06-logic-programming-in-scala-part-1/"/>
        <updated>2011-04-06T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Three uses for a binary heap]]></title>
        <id>https://jaked.org/blog/2010-11-24-three-uses-for-binary-heap/</id>
        <link href="https://jaked.org/blog/2010-11-24-three-uses-for-binary-heap/"/>
        <updated>2010-11-24T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 11: syntax extensions]]></title>
        <id>https://jaked.org/blog/2010-09-10-reading-camlp4-part-11-syntax/</id>
        <link href="https://jaked.org/blog/2010-09-10-reading-camlp4-part-11-syntax/"/>
        <updated>2010-09-10T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[ocamljs 0.3]]></title>
        <id>https://jaked.org/blog/2010-08-26-ocamljs-03/</id>
        <link href="https://jaked.org/blog/2010-08-26-ocamljs-03/"/>
        <updated>2010-08-26T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mixing monadic and direct-style code with delimited continuations]]></title>
        <id>https://jaked.org/blog/2010-08-20-mixing-monadic-and-direct-style-code/</id>
        <link href="https://jaked.org/blog/2010-08-20-mixing-monadic-and-direct-style-code/"/>
        <updated>2010-08-20T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 10: custom lexers]]></title>
        <id>https://jaked.org/blog/2010-08-13-reading-camlp4-part-10-custom-lexers/</id>
        <link href="https://jaked.org/blog/2010-08-13-reading-camlp4-part-10-custom-lexers/"/>
        <updated>2010-08-13T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 9: implementing antiquotations]]></title>
        <id>https://jaked.org/blog/2010-08-05-reading-camlp4-part-9-implementing/</id>
        <link href="https://jaked.org/blog/2010-08-05-reading-camlp4-part-9-implementing/"/>
        <updated>2010-08-05T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 8: implementing quotations]]></title>
        <id>https://jaked.org/blog/2010-08-03-reading-camlp4-part-8-implementing/</id>
        <link href="https://jaked.org/blog/2010-08-03-reading-camlp4-part-8-implementing/"/>
        <updated>2010-08-03T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 7: revised syntax]]></title>
        <id>https://jaked.org/blog/2010-07-27-reading-camlp4-part-7-revised-syntax/</id>
        <link href="https://jaked.org/blog/2010-07-27-reading-camlp4-part-7-revised-syntax/"/>
        <updated>2010-07-27T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 6: parsing]]></title>
        <id>https://jaked.org/blog/2010-05-19-reading-camlp4-part-6-parsing/</id>
        <link href="https://jaked.org/blog/2010-05-19-reading-camlp4-part-6-parsing/"/>
        <updated>2010-05-19T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[How froc works]]></title>
        <id>https://jaked.org/blog/2010-05-07-how-froc-works/</id>
        <link href="https://jaked.org/blog/2010-05-07-how-froc-works/"/>
        <updated>2010-05-07T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[orpc 0.3]]></title>
        <id>https://jaked.org/blog/2010-04-02-orpc-03/</id>
        <link href="https://jaked.org/blog/2010-04-02-orpc-03/"/>
        <updated>2010-04-02T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Updated backtrace patch]]></title>
        <id>https://jaked.org/blog/2010-03-27-updated-backtrace-patch/</id>
        <link href="https://jaked.org/blog/2010-03-27-updated-backtrace-patch/"/>
        <updated>2010-03-27T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Inside OCaml objects]]></title>
        <id>https://jaked.org/blog/2010-03-23-inside-ocaml-objects/</id>
        <link href="https://jaked.org/blog/2010-03-23-inside-ocaml-objects/"/>
        <updated>2010-03-23T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 5: filters]]></title>
        <id>https://jaked.org/blog/2010-03-02-reading-camlp4-part-5-filters/</id>
        <link href="https://jaked.org/blog/2010-03-02-reading-camlp4-part-5-filters/"/>
        <updated>2010-03-02T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lwt and Concurrent ML]]></title>
        <id>https://jaked.org/blog/2009-05-27-lwt-and-concurrent-ml/</id>
        <link href="https://jaked.org/blog/2009-05-27-lwt-and-concurrent-ml/"/>
        <updated>2009-05-27T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sudoku in ocamljs, part 3: functional reactive programming]]></title>
        <id>https://jaked.org/blog/2009-05-11-sudoku-in-ocamljs-part-3-functional/</id>
        <link href="https://jaked.org/blog/2009-05-11-sudoku-in-ocamljs-part-3-functional/"/>
        <updated>2009-05-11T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sudoku in ocamljs, part 2: RPC over HTTP]]></title>
        <id>https://jaked.org/blog/2009-05-03-sudoku-in-ocamljs-part-2-rpc-over-http/</id>
        <link href="https://jaked.org/blog/2009-05-03-sudoku-in-ocamljs-part-2-rpc-over-http/"/>
        <updated>2009-05-03T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sudoku in ocamljs, part 1: DOM programming]]></title>
        <id>https://jaked.org/blog/2009-04-26-sudoku-in-ocamljs-part-1-dom/</id>
        <link href="https://jaked.org/blog/2009-04-26-sudoku-in-ocamljs-part-1-dom/"/>
        <updated>2009-04-26T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Monadic functional reactive AJAX in OCaml]]></title>
        <id>https://jaked.org/blog/2009-04-23-functional-reactive-ajax-in-ocaml/</id>
        <link href="https://jaked.org/blog/2009-04-23-functional-reactive-ajax-in-ocaml/"/>
        <updated>2009-04-23T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Equeue compared to Lwt]]></title>
        <id>https://jaked.org/blog/2009-02-09-equeue-compared-to-lwt/</id>
        <link href="https://jaked.org/blog/2009-02-09-equeue-compared-to-lwt/"/>
        <updated>2009-02-09T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 4: consuming OCaml ASTs]]></title>
        <id>https://jaked.org/blog/2009-01-27-reading-camlp4-part-4-consuming-ocaml/</id>
        <link href="https://jaked.org/blog/2009-01-27-reading-camlp4-part-4-consuming-ocaml/"/>
        <updated>2009-01-27T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 3: quotations in depth]]></title>
        <id>https://jaked.org/blog/2009-01-22-reading-camlp4-part-3-quotations-in/</id>
        <link href="https://jaked.org/blog/2009-01-22-reading-camlp4-part-3-quotations-in/"/>
        <updated>2009-01-22T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 2: quotations]]></title>
        <id>https://jaked.org/blog/2009-01-04-reading-camlp4-part-2-quotations_04/</id>
        <link href="https://jaked.org/blog/2009-01-04-reading-camlp4-part-2-quotations_04/"/>
        <updated>2009-01-04T00:00:00.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reading Camlp4, part 1: the OCaml AST]]></title>
        <id>https://jaked.org/blog/2008-12-28-reading-camlp4-part-1-ocaml-ast/</id>
        <link href="https://jaked.org/blog/2008-12-28-reading-camlp4-part-1-ocaml-ast/"/>
        <updated>2008-12-28T00:00:00.000Z</updated>
    </entry>
</feed>