41554 blogs · [ { "id": "01a087e1-ab29-7092-af61-97ec71113300", "title": "Embedded SQL highlighting in Neovim, a look into Treesitter, and some NixOS patching", "url": "https://sitr.us/2026/05/03/embedded-sql-highlighting-in-neovim/", "published_at": "2026-05-03T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c8fde5b07", "title": "The 6 Big Ideas of Typescript", "url": "https://sitr.us/2026/04/06/big-ideas-of-typescript.html/", "published_at": "2026-04-06T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c900bb3d8", "title": "Nix, NPM, and Dependabot", "url": "https://sitr.us/2024/03/08/nix-npm-and-dependabot.html/", "published_at": "2024-03-08T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c90331ebf", "title": "`void` is not a unit type in TypeScript", "url": "https://sitr.us/2021/12/04/void-is-not-a-unit-type.html/", "published_at": "2021-12-04T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c912fb696", "title": "Choosing a headless CMS", "url": "https://sitr.us/2020/04/29/choosing-a-headless-cms.html/", "published_at": "2020-04-29T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9131108f", "title": "When to use `never` and `unknown` in TypeScript", "url": "https://sitr.us/2019/01/29/never-and-unknown-in-typescript.html/", "published_at": "2019-01-29T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9223341f", "title": "Automatic Code Formatting for Partially-Staged Files", "url": "https://sitr.us/2018/08/16/automatic-code-formatting.html/", "published_at": "2018-08-16T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c92726383", "title": "I finally set up XMonad to build with Stack!", "url": "https://sitr.us/2018/05/13/build-xmonad-with-stack.html/", "published_at": "2018-05-13T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c92effed2", "title": "Checking Types Against the Real World in TypeScript", "url": "https://sitr.us/2018/04/12/checking-types-against-the-real-world.html/", "published_at": "2018-04-12T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c936c9c3a", "title": "Type-Driven Development with TypeScript", "url": "https://sitr.us/2018/02/12/type-driven-development-with-typescript.html/", "published_at": "2018-02-12T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9389eac8", "title": "What is Poodle", "url": "https://sitr.us/2017/06/20/what-is-poodle.html/", "published_at": "2017-06-20T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c93b35ef5", "title": "Changes I would make to Go", "url": "https://sitr.us/2017/02/21/changes-i-would-make-to-go.html/", "published_at": "2017-02-21T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c948e59ca", "title": "Flow Cookbook: Flow & React", "url": "https://sitr.us/2017/01/03/flow-cookbook-react.html/", "published_at": "2017-01-03T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9534bf94", "title": "Flow Cookbook: Unpacking JSON API data", "url": "https://sitr.us/2016/12/20/flow-cookbook-unpacking-json.html/", "published_at": "2016-12-20T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c959e5709", "title": "Flow Cookbook", "url": "https://sitr.us/2016/12/20/flow-cookbook.html/", "published_at": "2016-12-20T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c95f49217", "title": "Advanced features in Flow", "url": "https://sitr.us/2015/05/31/advanced-features-in-flow.html/", "published_at": "2015-05-31T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c96d92d48", "title": "Type checking React with Flow v0.11", "url": "https://sitr.us/2015/05/31/type-checking-react-with-flow.html/", "published_at": "2015-05-31T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c97a5c377", "title": "Flow is the JavaScript type checker I have been waiting for", "url": "https://sitr.us/2014/11/21/flow-is-the-javascript-type-checker-i-have-been-waiting-for.html/", "published_at": "2014-11-21T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c97b4dee7", "title": "Javascript generators and functional reactive programming", "url": "https://sitr.us/2014/08/02/javascript-generators-and-functional-reactive-programming.html/", "published_at": "2014-08-02T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c986790d7", "title": "Kinesis Advantage with DSA keycaps", "url": "https://sitr.us/2014/05/19/kinesis-advantage-with-dsa-keycaps.html/", "published_at": "2014-05-19T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9945cbb4", "title": "Category Theory proofs in Idris", "url": "https://sitr.us/2014/05/05/category-theory-proofs-in-idris.html/", "published_at": "2014-05-05T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c99a1cfd7", "title": "Functional data structures in JavaScript with Mori", "url": "https://sitr.us/2013/11/04/functional-data-structures.html/", "published_at": "2013-11-04T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9a1f5fad", "title": "Functional Reactive Programming in JavaScript", "url": "https://sitr.us/2013/05/22/functional-reactive-programming-in-javascript.html/", "published_at": "2013-05-22T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9ae8241d", "title": "Monkey patching document.write()", "url": "https://sitr.us/2012/09/04/monkey-patching-document-write.html/", "published_at": "2012-09-04T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9af94e38", "title": "Promise Pipelines in JavaScript", "url": "https://sitr.us/2012/07/31/promise-pipelines-in-javascript.html/", "published_at": "2012-07-31T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9b53ad42", "title": "Installing a custom ROM on the Transformer Prime: A start-to-finish guide", "url": "https://sitr.us/2012/05/12/installing-a-custom-rom-on-the-transformer-prime.html/", "published_at": "2012-05-12T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9ba45d11", "title": "Cookies are bad for you: Improving web application security", "url": "https://sitr.us/2011/08/26/cookies-are-bad-for-you.html/", "published_at": "2011-08-26T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9c7111ee", "title": "How Mobile Safari emulates mouse events", "url": "https://sitr.us/2011/07/28/how-mobile-safari-emulates-mouse-events.html/", "published_at": "2011-07-28T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9ccee4b8", "title": "CouchDB Notes", "url": "https://sitr.us/2009/09/13/couchdb-notes.html/", "published_at": "2009-09-13T00:00:00+00:00" }, { "id": "01a087e1-ab2d-7227-8674-6e6c9dc0285b", "title": "How to install Haskell \"Batteries Included\" Platform on Ubuntu Jaunty", "url": "https://sitr.us/2009/07/02/how-to-install-haskell-platform-on-ubuntu-jaunty.html/", "published_at": "2009-07-02T00:00:00+00:00" }, { "id": "01a087e1-ab2e-70f8-8c7a-c37c5476c7a2", "title": "Database Queries the CouchDB Way", "url": "https://sitr.us/2009/06/30/database-queries-the-couchdb-way.html/", "published_at": "2009-06-30T00:00:00+00:00" }, { "id": "01a087e1-ab2e-70f8-8c7a-c37c5481bf93", "title": "How to use RSpec to describe a Sinatra application", "url": "https://sitr.us/2008/07/29/how-to-use-rspec-to-describe-a-sinatra-application.html/", "published_at": "2008-07-29T00:00:00+00:00" }, { "id": "01a087e1-ab2e-70f8-8c7a-c37c54dff7dc", "title": "International Phonetic Alphabet", "url": "https://sitr.us/2007/10/02/international-phonetic-alphabet.html/", "published_at": "2007-10-02T00:00:00+00:00" }, { "id": "01a087e1-ab2e-70f8-8c7a-c37c552ba447", "title": "Anatomy of a Syllable", "url": "https://sitr.us/2007/09/24/anatomy-of-a-syllable.html/", "published_at": "2007-09-24T00:00:00+00:00" }, { "id": "01a087e1-ab2e-70f8-8c7a-c37c55f8cc66", "title": "Deixis", "url": "https://sitr.us/2007/09/17/deixis.html/", "published_at": "2007-09-17T00:00:00+00:00" } ] posts Claim your blog
Back to sitr.us
Blog · corpus.blog/blogs/sitr.us/posts

sitr.us

sitr.us

2026

2024

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2009

2008

2007

17 Sept 2007