41554 blogs · [ { "id": "01a08758-7efc-71ad-ab5b-c31a978e3942", "title": "Sandbox Minus John Dillinger Equals What?", "url": "https://brandon.si/code/sandbox-minus-john-dillinger/", "published_at": "2025-12-12T23:43:03+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6319bc916", "title": "Linking Smaller Haskell Binaries", "url": "https://brandon.si/code/linking-smaller-haskell-binaries/", "published_at": "2023-01-07T20:52:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c632539496", "title": "GHC LLVM LTO Experiments Scratch Notes", "url": "https://brandon.si/code/ghc-llvm-lto-experiments-scratch-notes/", "published_at": "2019-06-02T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c632d8e694", "title": "A little tool for visualizing ghc verbose timing", "url": "https://brandon.si/code/a-little-tool-for-visualizing-ghc-verbose-timing/", "published_at": "2019-05-07T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6331bcc76", "title": "Initial hacking of GHC for GCC link-time optimization", "url": "https://brandon.si/code/initial-hacking-of-ghc-for-gcc-link-time-optimization/", "published_at": "2019-04-10T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c633b18ae5", "title": "Hacking around on an FV-1 based guitar pedal", "url": "https://brandon.si/code/hacking-around-on-an-fv-1-based-guitar-pedal/", "published_at": "2019-01-26T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c634163fee", "title": "Choosing a binary-to-text encoding", "url": "https://brandon.si/code/choosing-a-binary-to-text-encoding/", "published_at": "2017-04-22T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c634530bf9", "title": "Almost inline ASM in haskell with foreign import prim", "url": "https://brandon.si/code/almost-inline-asm-in-haskell-with-foreign-import-prim/", "published_at": "2017-03-12T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6347a416f", "title": "Echo", "url": "https://brandon.si/art/echo/", "published_at": "2016-08-30T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c634844e0e", "title": "Announcing: unagi-bloomfilter", "url": "https://brandon.si/code/announcing-unagi-bloomfilter/", "published_at": "2016-08-25T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6349dc258", "title": "Announcing: Hashabler 1.0. Now even more hashy with SipHash", "url": "https://brandon.si/code/announcing-hashabler-1-dot-0-now-even-more-hashy-with-siphash/", "published_at": "2015-08-16T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c635826cd1", "title": "Feeling Bad Fences", "url": "https://brandon.si/art/feeling-bad-fences/", "published_at": "2015-07-04T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c636390c20", "title": "Translating some stateful bit-twiddling to haskell", "url": "https://brandon.si/code/translating-some-stateful-bit-twiddling-to-haskell/", "published_at": "2015-07-03T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c637214009", "title": "Announcing hashabler: like hashable only more so", "url": "https://brandon.si/code/announcing-hashabler-like-hashable/", "published_at": "2015-04-30T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6374d5395", "title": "Two Dream Polaroids", "url": "https://brandon.si/art/two-dream-polaroids/", "published_at": "2015-03-19T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c637f744a3", "title": "Benchmarking very fast things with criterion", "url": "https://brandon.si/code/benchmarking-very-fast-things-with-criterion/", "published_at": "2015-03-05T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6388b8440", "title": "Cat and carrier and self-portrait as ghost neighbor", "url": "https://brandon.si/art/cat-and-carrier-and-self-portrait-as-ghost-neighbor/", "published_at": "2015-02-17T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c639011d14", "title": "Interdite", "url": "https://brandon.si/art/interdite/", "published_at": "2015-01-24T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c6399a20b8", "title": "Self-portrait with hat, and 3 cloud polaroids", "url": "https://brandon.si/art/self-portrait-with-hat/", "published_at": "2014-10-09T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c639d93a68", "title": "Announcing unagi-chan", "url": "https://brandon.si/code/announcing-unagi-chan/", "published_at": "2014-10-07T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c63a39a997", "title": "Death/Paris", "url": "https://brandon.si/art/death-slash-paris/", "published_at": "2014-08-15T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c63b351058", "title": "Victorian Double Coaster Design", "url": "https://brandon.si/art/crrva-victorian-coaster/", "published_at": "2014-02-10T00:00:00+00:00" }, { "id": "01a08758-7efd-7306-a138-e8c63be539de", "title": "Thoughts on FIFO-ness", "url": "https://brandon.si/code/thoughts-on-fifo-ness/", "published_at": "2014-02-03T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa9685dc9d8", "title": "Announcing shapely-data v0.1", "url": "https://brandon.si/code/announcing-shapely-data-v0-dot-1/", "published_at": "2013-12-23T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa968934e1e", "title": "Writing a streaming twitter waterflow solution", "url": "https://brandon.si/code/writing-a-streaming-twitter-waterflow-solution/", "published_at": "2013-11-18T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa968af9fbb", "title": "A TypeFamilies Primer", "url": "https://brandon.si/code/a-typefamilies-primer/", "published_at": "2013-08-12T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa968b2f940", "title": "Clearing a clogged drain with a Draino bottle", "url": "https://brandon.si/misc/clearing-a-clogged-drain-with-a-draino-bottle/", "published_at": "2013-06-24T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa968ffa7cd", "title": "Boulders / Iceland", "url": "https://brandon.si/art/boulders-slash-iceland/", "published_at": "2013-06-10T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa969e69550", "title": "Three Tulips / Iceland", "url": "https://brandon.si/art/three-tulips-slash-iceland/", "published_at": "2013-04-19T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96a707d2f", "title": "Thinking about an economy of bit flips", "url": "https://brandon.si/code/thinking-about-an-economy-of-bit-flips/", "published_at": "2013-03-17T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96b16a334", "title": "Somewhere around SFMOMA", "url": "https://brandon.si/art/somewhere-around-sfmoma/", "published_at": "2013-03-11T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96b3f36c2", "title": "Gallery 5 Upstairs", "url": "https://brandon.si/art/gallery-5-upstairs/", "published_at": "2013-02-16T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96bb239a5", "title": "Using GHC's RebindableSyntax for a dynamic state \"Fauxnad\"", "url": "https://brandon.si/code/using-ghcs-rebindablesyntax-for-a-dynamic-state-fauxnad/", "published_at": "2013-02-10T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96bb7c1f6", "title": "CRRVA Poster Designs", "url": "https://brandon.si/art/crrva-poster-designs/", "published_at": "2012-12-19T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96be4f37d", "title": "dilly.js: a library for loops with delays in JavaScript", "url": "https://brandon.si/code/dilly-dot-js-a-library-for-loops-with-delays-in-javascript/", "published_at": "2012-10-09T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96cd1c661", "title": "Siglufjörður", "url": "https://brandon.si/art/siglufjordur/", "published_at": "2012-10-07T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96cf061e7", "title": "Linocut Coasters", "url": "https://brandon.si/art/linocut-coasters/", "published_at": "2012-09-25T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96d0c60a4", "title": "Making your zipper disappear with Zippo", "url": "https://brandon.si/code/making-your-zipper-disappear-with-zippo/", "published_at": "2012-09-17T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96dc233a3", "title": "Dettifoss", "url": "https://brandon.si/art/dettifoss/", "published_at": "2012-08-24T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96e241c93", "title": "simple-actors 0.4.0: a few interesting design bits", "url": "https://brandon.si/code/simple-actors-0-dot-4-0-a-few-interesting-design-bits/", "published_at": "2012-08-22T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96eee9dfb", "title": "some figures", "url": "https://brandon.si/art/some-figures/", "published_at": "2012-07-07T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa96fe49a82", "title": "zippo: a lightweight lens-based, type-checked, heterogenous zipper", "url": "https://brandon.si/code/zippo/", "published_at": "2012-05-28T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa9706d51bb", "title": "shadows", "url": "https://brandon.si/art/shadows/", "published_at": "2012-05-26T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa970c45820", "title": "A Simulation of a Biological MIS Algorithm", "url": "https://brandon.si/code/a-simulation-of-a-biological-mis-algorithm/", "published_at": "2012-05-14T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa970fa5f5a", "title": "Trenton", "url": "https://brandon.si/art/trenton/", "published_at": "2012-05-02T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa971e9acc1", "title": "Converting HTML5 canvas elements to images", "url": "https://brandon.si/code/converting-html5-canvas-elements-to-images/", "published_at": "2012-04-30T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa9721fd823", "title": "reserved for vans", "url": "https://brandon.si/art/reserved-for-vans/", "published_at": "2012-04-05T00:00:00+00:00" }, { "id": "01a08758-7efe-7371-a812-1fa97265f08d", "title": "Announcing yet another lens library", "url": "https://brandon.si/code/yall/", "published_at": "2012-04-04T00:00:00+00:00" }, { "id": "01a08758-7eff-73db-b8d5-daaf012206b5", "title": "the Monoid instance for Ordering", "url": "https://brandon.si/code/the-monoid-instance-for-ordering/", "published_at": "2012-04-02T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3c5b36ef", "title": "growth", "url": "https://brandon.si/art/growth/", "published_at": "2012-03-26T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3c9203e4", "title": "Optimization fun: Minimum Edit Distance", "url": "https://brandon.si/code/optimization-fun-minimum-edit-distance/", "published_at": "2012-03-20T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3d247e2d", "title": "van", "url": "https://brandon.si/art/van/", "published_at": "2012-03-14T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3e082987", "title": "shapely-data: a library for structuralizing Haskell data types", "url": "https://brandon.si/code/shapely-data/", "published_at": "2012-03-06T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3e15b282", "title": "United Daughters of the Confederacy", "url": "https://brandon.si/art/united-daughters-of-the-confedracy/", "published_at": "2012-02-22T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3f0486f7", "title": "found glasses photograms", "url": "https://brandon.si/art/found-glasses/", "published_at": "2012-02-14T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f3f9f7949", "title": "Categories that want to be Arrows", "url": "https://brandon.si/code/categories-that-want-to-be-arrows/", "published_at": "2012-02-11T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4085798a", "title": "How the Haskell Prelude avoids overlapping instances in Show", "url": "https://brandon.si/code/how-the-haskell-prelude-avoids-overlapping-types-in-show/", "published_at": "2012-02-06T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f416a051b", "title": "Haskell state of the Lens, etc.", "url": "https://brandon.si/code/haskell-state-of-the-lens/", "published_at": "2012-01-31T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f41e436b8", "title": "About Brandon", "url": "https://brandon.si/mmons/", "published_at": "2012-01-29T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f41f4a53c", "title": "pez v0.1.0 released", "url": "https://brandon.si/code/pez-v0-dot-1-0-released/", "published_at": "2012-01-29T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f422e4b41", "title": "simple-actors 0.1.0 released", "url": "https://brandon.si/code/simple-actors-0-1-0-released/", "published_at": "2011-10-11T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f42f09502", "title": "A brief tutorial-introduction to 'fclabels' 1.0", "url": "https://brandon.si/code/a-brief-tutorial-introduction-to-fclabels-1-0/", "published_at": "2011-08-21T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f437548f1", "title": "Module 'chan-split' released", "url": "https://brandon.si/code/module-chan-split-released/", "published_at": "2011-07-17T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f43f0cf2d", "title": "simple-actors: a simple Actor Model concurrency library", "url": "https://brandon.si/code/simple-actors-a-simple-actor-model-concurrency-library/", "published_at": "2011-05-30T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4497892b", "title": "Magic Haskell code completions in Vim!", "url": "https://brandon.si/code/magic-haskell-code-completions-in-vim/", "published_at": "2011-05-07T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f44fd641a", "title": "PEZ: the Potentially-Excellent Zipper library release", "url": "https://brandon.si/code/pez-zipper-library-released/", "published_at": "2011-04-19T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f45895ab1", "title": "Fire Balloon Recipe", "url": "https://brandon.si/misc/fire-balloon-recipe/", "published_at": "2011-03-28T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f45c8fc1d", "title": "Synchronized Concurrent IO Actions", "url": "https://brandon.si/code/synchronized-concurrent-io-actions/", "published_at": "2011-02-24T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f46c8f1ca", "title": "When is it okay to 'fail'?", "url": "https://brandon.si/code/when-is-it-okay-to-fail/", "published_at": "2011-02-16T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f47c545c6", "title": "New version of directory-tree on hackage", "url": "https://brandon.si/code/new-version-of-directory-tree-on-hackage/", "published_at": "2011-02-13T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f488f2885", "title": "Do Applicative Functors generalize the S & K Combinators?", "url": "https://brandon.si/code/do-applicative-functors-generalize-the-s-k-combinators/", "published_at": "2011-01-02T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f497b340b", "title": "Working with Template Haskell in GHCi", "url": "https://brandon.si/code/working-with-template-haskell-in-ghci/", "published_at": "2010-12-14T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4a6622ae", "title": "A State Monad with dynamically-typed state", "url": "https://brandon.si/code/a-state-monad-with-dynamically-typed-state/", "published_at": "2010-12-09T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4b289df8", "title": "New version of 'thrist' package released", "url": "https://brandon.si/code/new-version-of-thrist-package-released/", "published_at": "2010-11-13T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4c270a27", "title": "Designing a Module for Combinatory Logic in Haskell", "url": "https://brandon.si/code/designing-a-module-for-combinatory-logic-in-haskell/", "published_at": "2010-09-04T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4cdb715b", "title": "Repairing NetbookInstaller's Chameleon Bootloader", "url": "https://brandon.si/code/repairing-netbookinstallers-chameleon-bootloader/", "published_at": "2010-08-27T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4dd4af95", "title": "17x17: some Simulated Annealing updates", "url": "https://brandon.si/code/17x17-some-simulated-annealing-updates/", "published_at": "2010-07-31T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4e7b8a7f", "title": "The Gift of Inconsistency", "url": "https://brandon.si/code/the-gift-of-inconsistency/", "published_at": "2010-07-22T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4e8b778d", "title": "17x17: A Simulated Annealing approach using thresholds", "url": "https://brandon.si/code/17x17-a-simulated-annealing-approach-using-thresholds/", "published_at": "2010-07-10T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4e9380bc", "title": "17x17: Further Thoughts & Some Pretty Pictures", "url": "https://brandon.si/code/17x17-further-thoughts-some-pretty-pictures/", "published_at": "2010-06-01T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f4f5f5bce", "title": "Befunge-93 Interpreter on Hackage", "url": "https://brandon.si/code/befunge-93-interpreter-on-hackage/", "published_at": "2010-05-20T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f503efbc2", "title": "Code Jam 2010: Incrementing a Binary Counter", "url": "https://brandon.si/code/code-jam-2010-incrementing-a-binary-counter/", "published_at": "2010-05-09T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f50be7caf", "title": "17x17: Some Attempts at Doubly-Symmetrical Rotations", "url": "https://brandon.si/code/17x17-some-attempts-at-doubly-symmetrical-rotations/", "published_at": "2010-04-09T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f516ca5e4", "title": "Lazy Arithmetic in Haskell", "url": "https://brandon.si/code/lazy-arithmetic-in-haskell/", "published_at": "2010-03-24T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f526aaa0e", "title": "17x17: More about symmetry and a new rotation", "url": "https://brandon.si/code/17x17-more-about-symmetry-and-a-new-rotation/", "published_at": "2010-03-18T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f52d15b2a", "title": "17x17: Symmetric Single-Colorings and some Graph Theory", "url": "https://brandon.si/code/17x17-symmetric-single-colorings-and-some-graph-theory/", "published_at": "2010-03-14T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f53c7c5fd", "title": "17x17: Some Thoughts on the Problem", "url": "https://brandon.si/code/17x17-some-thoughts-on-the-problem/", "published_at": "2010-03-07T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f544b1d9f", "title": "17x17: Deterministic algorithm for single-coloring a grid", "url": "https://brandon.si/code/17x17-deterministic-algorithm-for-single-coloring-a-grid/", "published_at": "2010-03-01T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f5450d187", "title": "17x17: Brute Force Algorithm for an Optimal Rectangle-Free Subset", "url": "https://brandon.si/code/17x17-brute-force-algorithm-for-an-optimal-rectangle-free-subset/", "published_at": "2010-02-23T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f54ecbef3", "title": "An alternative definition for Data.List.groupBy", "url": "https://brandon.si/code/an-alternative-definition-for-datalistgroupby/", "published_at": "2010-02-10T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f557a5b03", "title": "The Definition of Data.List.group", "url": "https://brandon.si/code/the-definition-of-datalistgroup/", "published_at": "2010-02-06T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f56508654", "title": "A Befunge-93 Interpreter", "url": "https://brandon.si/code/a-befunge-93-interpreter/", "published_at": "2010-01-31T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f56efc2ff", "title": "DeBruijn Sequences pt.3 - The \"Prefer Opposite\" algorithm", "url": "https://brandon.si/code/debruijn-sequences-pt3-the-prefer-opposite-algorithm/", "published_at": "2009-12-02T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f56fca359", "title": "Find a permutation given its Inversion Table", "url": "https://brandon.si/code/find-a-permutation-given-its-inversion-table/", "published_at": "2009-11-15T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f5746fa80", "title": "An \"Adaptive\" Move-to-Front Algorithm", "url": "https://brandon.si/code/an-adaptive-move-to-front-algorithm/", "published_at": "2009-11-13T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f58334c87", "title": "The move-to-front (MTF) Transform", "url": "https://brandon.si/code/the-move-to-front-mtf-transform/", "published_at": "2009-11-10T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f58fc162d", "title": "Polishing a Functional Pearl: The Burrows-Wheeler Transform", "url": "https://brandon.si/code/polishing-a-functional-pearl-the-burrows-wheeler-transform/", "published_at": "2009-11-07T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f59948329", "title": "The State Monad: a tutorial for the confused?", "url": "https://brandon.si/code/the-state-monad-a-tutorial-for-the-confused/", "published_at": "2009-10-24T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f5a28f96c", "title": "Cracking a Lock in Haskell with the De Bruijn sequence, pt. 2", "url": "https://brandon.si/code/cracking-a-lock-in-haskell-with-the-de-bruijn-sequence-pt-2/", "published_at": "2009-09-29T00:00:00+00:00" }, { "id": "01a08758-7f00-721e-8560-5a1f5a765b70", "title": "Cracking a Lock in Haskell with the De Bruijn sequence, pt. 1", "url": "https://brandon.si/code/cracking-a-lock-in-haskell-with-the-de-bruijn-sequence-pt-1/", "published_at": "2009-09-24T00:00:00+00:00" } ] posts Claim your blog
Back to brandon.si
Blog · corpus.blog/blogs/brandon.si/posts

brandon.si

brandon.si

2025

2023

2019

2017

2016

30 Aug 2016

2015

2014

2013

2012

14 Mar 2012

2011

2010

2009