41554 blogs · [ { "id": "01a08748-8e73-718e-ad4f-08e6fab54a2e", "title": "PEPM'14: The HERMIT in the Stream", "url": "https://blog.ezyang.com/2014/01/pepm14-the-hermit-in-the-stream/", "published_at": "2014-01-17T02:36:41+00:00" }, { "id": "01a08748-8e73-718e-ad4f-08e6fba8baa0", "title": "Ott ⇔ PLT Redex", "url": "https://blog.ezyang.com/2014/01/ott-iff-plt-redex/", "published_at": "2014-01-13T19:11:39+00:00" }, { "id": "01a08748-8e73-718e-ad4f-08e6fca1c6a5", "title": "When a lock is better than an MVar", "url": "https://blog.ezyang.com/2014/01/when-a-lock-is-better-than-an-mvar/", "published_at": "2014-01-07T18:47:26+00:00" }, { "id": "01a08748-8e73-718e-ad4f-08e6fd7c695a", "title": "So you want to add a new concurrency primitive to GHC...", "url": "https://blog.ezyang.com/2014/01/so-you-want-to-add-a-new-concurrency-primitive-to-ghc/", "published_at": "2014-01-01T10:37:00+00:00" }, { "id": "01a08748-8e74-7286-a062-43a26e67ad31", "title": "Two bugs in the borrow checker every Rust developer should know about", "url": "https://blog.ezyang.com/2013/12/two-bugs-in-the-borrow-checker-every-rust-developer-should-know-about/", "published_at": "2013-12-17T07:57:31+00:00" }, { "id": "01a08748-8e74-7286-a062-43a26f6613bc", "title": "Visualizing a block allocator", "url": "https://blog.ezyang.com/2013/10/visualizing-a-block-allocator/", "published_at": "2013-10-30T21:48:02+00:00" }, { "id": "01a08748-8e74-7286-a062-43a26fbc7cc0", "title": "Xmonad and media keys on Saucy", "url": "https://blog.ezyang.com/2013/10/xmonad-and-media-keys-on-saucy/", "published_at": "2013-10-27T16:30:39+00:00" }, { "id": "01a08748-8e74-7286-a062-43a2707631e2", "title": "If you're using lift, you're doing it wrong (probably)", "url": "https://blog.ezyang.com/2013/09/if-youre-using-lift-youre-doing-it-wrong-probably/", "published_at": "2013-09-26T15:03:42+00:00" }, { "id": "01a08748-8e74-7286-a062-43a271399f88", "title": "Of Monadic Fixpoints and Heap Offsets", "url": "https://blog.ezyang.com/2013/09/of-monadic-fixpoints-and-heap-offsets/", "published_at": "2013-09-24T22:20:57+00:00" }, { "id": "01a08748-8e74-7286-a062-43a2722d2e42", "title": "Induction and logical relations", "url": "https://blog.ezyang.com/2013/09/induction-and-logical-relations/", "published_at": "2013-09-18T19:35:37+00:00" }, { "id": "01a08748-8e74-7286-a062-43a272dbcd48", "title": "Cost semantics for STG in modern GHC", "url": "https://blog.ezyang.com/2013/09/cost-semantics-for-stg-in-modern-ghc/", "published_at": "2013-09-07T16:54:51+00:00" }, { "id": "01a08748-8e74-7286-a062-43a27350b9bb", "title": "Blame Trees", "url": "https://blog.ezyang.com/2013/08/blame-trees/", "published_at": "2013-08-12T14:55:28+00:00" }, { "id": "01a08748-8e74-7286-a062-43a273b75191", "title": "OPLSS lecture notes", "url": "https://blog.ezyang.com/2013/07/oplss-lecture-notes/", "published_at": "2013-07-29T00:02:10+00:00" }, { "id": "01a08748-8e74-7286-a062-43a273d6f51e", "title": "No grammar? No problem!", "url": "https://blog.ezyang.com/2013/07/no-grammar-no-problem/", "published_at": "2013-07-02T22:17:02+00:00" }, { "id": "01a08748-8e74-7286-a062-43a274c0e068", "title": "HoTT exercises in Coq (in progress)", "url": "https://blog.ezyang.com/2013/07/hott-exercises-in-coq-in-progress/", "published_at": "2013-07-01T16:21:18+00:00" }, { "id": "01a08748-8e74-7286-a062-43a27524bea4", "title": "(Homotopy) Type Theory: Chapter One", "url": "https://blog.ezyang.com/2013/06/homotopy-type-theory-chapter-one/", "published_at": "2013-06-24T18:56:27+00:00" }, { "id": "01a08748-8e74-7286-a062-43a27588e7a2", "title": "The AST Typing Problem", "url": "https://blog.ezyang.com/2013/05/the-ast-typing-problem/", "published_at": "2013-05-28T07:25:03+00:00" }, { "id": "01a08748-8e74-7286-a062-43a275b7472c", "title": "Anatomy of an MVar operation", "url": "https://blog.ezyang.com/2013/05/anatomy-of-an-mvar-operation/", "published_at": "2013-05-19T20:00:37+00:00" }, { "id": "01a08748-8e74-7286-a062-43a275e43a2a", "title": "HotOS \"Unconference\" report:Verifying Systems", "url": "https://blog.ezyang.com/2013/05/hotos-unconference-reportverifying-systems/", "published_at": "2013-05-14T00:58:40+00:00" }, { "id": "01a08748-8e74-7286-a062-43a27606f215", "title": "Category theory for loop optimizations", "url": "https://blog.ezyang.com/2013/05/category-theory-for-loop-optimizations/", "published_at": "2013-05-12T00:25:40+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330751fd78", "title": "The Difference between Recursion & Induction", "url": "https://blog.ezyang.com/2013/04/the-difference-between-recursion-induction/", "published_at": "2013-04-27T03:30:17+00:00" }, { "id": "01a08748-8e75-7101-8f25-253307da725a", "title": "Kindle is not good for textbooks", "url": "https://blog.ezyang.com/2013/04/kindle-is-not-good-for-textbooks/", "published_at": "2013-04-15T19:52:20+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330837e4b3", "title": "A Zerocoin puzzle", "url": "https://blog.ezyang.com/2013/04/a-zerocoin-puzzle/", "published_at": "2013-04-11T18:54:02+00:00" }, { "id": "01a08748-8e75-7101-8f25-253308c3adc2", "title": "A classical logic fairy tale", "url": "https://blog.ezyang.com/2013/04/a-classical-logic-fairy-tale/", "published_at": "2013-04-07T17:52:08+00:00" }, { "id": "01a08748-8e75-7101-8f25-2533099680a8", "title": "NDSEG", "url": "https://blog.ezyang.com/2013/04/ndseg/", "published_at": "2013-04-05T22:40:31+00:00" }, { "id": "01a08748-8e75-7101-8f25-253309b04e6c", "title": "Resource limits for Haskell", "url": "https://blog.ezyang.com/2013/04/resource-limits-for-haskell/", "published_at": "2013-04-02T16:36:40+00:00" }, { "id": "01a08748-8e75-7101-8f25-253309ea3165", "title": "The single export pattern", "url": "https://blog.ezyang.com/2013/03/the-single-export-pattern/", "published_at": "2013-03-31T20:39:41+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330ac2f60c", "title": "The duality of weak maps and private symbols", "url": "https://blog.ezyang.com/2013/03/duality-of-weak-maps-and-private-symbols/", "published_at": "2013-03-19T00:12:16+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330b188fc8", "title": "What is a membrane?", "url": "https://blog.ezyang.com/2013/03/what-is-a-membran/", "published_at": "2013-03-15T03:49:08+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330b790391", "title": "Kindle Paperwhite notes", "url": "https://blog.ezyang.com/2013/01/kindle-paperwhite-notes/", "published_at": "2013-01-30T09:00:17+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330c1ba35e", "title": "The GHC scheduler", "url": "https://blog.ezyang.com/2013/01/the-ghc-scheduler/", "published_at": "2013-01-28T03:00:48+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330cc91c10", "title": "NLP: the missing framework", "url": "https://blog.ezyang.com/2013/01/nlp-the-missing-framework/", "published_at": "2013-01-02T00:00:30+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330cec48ad", "title": "Google Nexus 7 setup notes", "url": "https://blog.ezyang.com/2012/12/googl-nexus-7-setup-notes/", "published_at": "2012-12-31T21:19:30+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330d52f75d", "title": "Metro Maps of the News", "url": "https://blog.ezyang.com/2012/12/metro-maps-of-the-news/", "published_at": "2012-12-13T04:44:40+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330d68a477", "title": "Maildir synchronizing Sup", "url": "https://blog.ezyang.com/2012/12/maildir-synchronizing-sup/", "published_at": "2012-12-01T18:33:38+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330d76ba53", "title": "Why can't I just be a little lazy?", "url": "https://blog.ezyang.com/2012/11/why-cant-i-just-be-a-little-lazy/", "published_at": "2012-11-26T09:00:28+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330df8b9e7", "title": "Functional Encryption", "url": "https://blog.ezyang.com/2012/11/functional-encryption/", "published_at": "2012-11-25T15:24:20+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330ea23801", "title": "Extremist Programming", "url": "https://blog.ezyang.com/2012/11/extremist-programming/", "published_at": "2012-11-20T16:15:06+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330eaba5ac", "title": "Plan 9 mounts and dependency injection", "url": "https://blog.ezyang.com/2012/11/plan-9-mounts-and-dependency-injection/", "published_at": "2012-11-08T19:45:57+00:00" }, { "id": "01a08748-8e75-7101-8f25-25330fa28f4f", "title": "hp/D3.js: an interactive heap profile viewer", "url": "https://blog.ezyang.com/2012/11/hpd3-js-an-interactive-heap-profile-viewer/", "published_at": "2012-11-02T02:42:18+00:00" }, { "id": "01a08748-8e75-7101-8f25-253310401c66", "title": "Ubuntu Quantal upgrade (Thinkpad/Xmonad)", "url": "https://blog.ezyang.com/2012/10/ubuntu-quantal-upgrade-thinkpadxmonad/", "published_at": "2012-10-24T11:00:01+00:00" }, { "id": "01a08748-8e75-7101-8f25-253310c100d4", "title": "ACM XRDS: Jeff Dean profile", "url": "https://blog.ezyang.com/2012/10/acm-xrds-jeff-dean-profile/", "published_at": "2012-10-22T10:00:04+00:00" }, { "id": "01a08748-8e75-7101-8f25-253311a43feb", "title": "Duality for Haskellers", "url": "https://blog.ezyang.com/2012/10/duality-for-haskellers/", "published_at": "2012-10-19T11:00:50+00:00" }, { "id": "01a08748-8e75-7101-8f25-2533128ffac7", "title": "Hails: Protecting Data Privacy in Untrusted Web Applications", "url": "https://blog.ezyang.com/2012/10/hails-protecting-data-privacy-in-untrusted-web-applications/", "published_at": "2012-10-16T11:00:33+00:00" }, { "id": "01a08748-8e75-7101-8f25-253312c387b4", "title": "Visualizing satisfiability, validity & entailment", "url": "https://blog.ezyang.com/2012/10/visualizing-satisfiability-validity-and-entailment/", "published_at": "2012-10-15T11:00:51+00:00" }, { "id": "01a08748-8e75-7101-8f25-253313556b84", "title": "GET /browser.exe", "url": "https://blog.ezyang.com/2012/10/get-browser-exe/", "published_at": "2012-10-12T14:26:17+00:00" }, { "id": "01a08748-8e75-7101-8f25-2533141b8951", "title": "Generalizing the programmable semicolon", "url": "https://blog.ezyang.com/2012/10/generalizing-the-programmable-semicolon/", "published_at": "2012-10-03T17:49:28+00:00" }, { "id": "01a08748-8e75-7101-8f25-253314ad2c56", "title": "Template project for GHC plugins", "url": "https://blog.ezyang.com/2012/09/template-project-for-ghc-plugins/", "published_at": "2012-09-28T18:56:20+00:00" }, { "id": "01a08748-8e75-7101-8f25-253315341fd5", "title": "\"This is really the End.\"", "url": "https://blog.ezyang.com/2012/09/feit-thompson-true/", "published_at": "2012-09-24T09:00:12+00:00" }, { "id": "01a08748-8e75-7101-8f25-253315a8f176", "title": "Unintuitive facts about Safe Haskell", "url": "https://blog.ezyang.com/2012/09/common-misconceptions-about-safe-haskell/", "published_at": "2012-09-17T20:34:45+00:00" }, { "id": "01a08748-8e75-7101-8f25-2533163910f7", "title": "The Y Combinator and strict positivity", "url": "https://blog.ezyang.com/2012/09/y-combinator-and-strict-positivity/", "published_at": "2012-09-12T18:52:23+00:00" }, { "id": "01a08748-8e75-7101-8f25-25331688d23d", "title": "So you want to hack on IMAP...", "url": "https://blog.ezyang.com/2012/08/so-you-want-to-hack-on-imap/", "published_at": "2012-08-31T10:00:34+00:00" }, { "id": "01a08748-8e75-7101-8f25-253317801f7d", "title": "OfflineIMAP sucks", "url": "https://blog.ezyang.com/2012/08/offlineimap-sucks/", "published_at": "2012-08-30T01:07:58+00:00" }, { "id": "01a08748-8e75-7101-8f25-253317dbb194", "title": "How OfflineIMAP works", "url": "https://blog.ezyang.com/2012/08/how-offlineimap-works/", "published_at": "2012-08-27T10:00:33+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7770e9f8", "title": "The Monad Reader: Issue 20", "url": "https://blog.ezyang.com/2012/08/the-monad-reader-issue-20/", "published_at": "2012-08-25T23:39:18+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7866099f", "title": "Applicative functors", "url": "https://blog.ezyang.com/2012/08/applicative-functors/", "published_at": "2012-08-16T05:34:30+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed78b3a425", "title": "Practical Foundations for Programming Languages (first impressions)", "url": "https://blog.ezyang.com/2012/08/practical-foundations-for-programming-languages/", "published_at": "2012-08-15T01:00:31+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7992a82d", "title": "Is Haskell liberal or conservative?", "url": "https://blog.ezyang.com/2012/08/is-haskell-liberal-or-conservative/", "published_at": "2012-08-10T09:12:50+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7a435396", "title": "Two ways of representing perfect binary trees", "url": "https://blog.ezyang.com/2012/08/statically-checked-perfect-binary-trees/", "published_at": "2012-08-04T11:04:33+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7aecdec0", "title": "Polymorphic variants in Ur/Web", "url": "https://blog.ezyang.com/2012/07/polymorphic-variants-in-urweb/", "published_at": "2012-07-29T01:33:18+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7ba283ed", "title": "Managing the server/client split in Ur/Web", "url": "https://blog.ezyang.com/2012/07/managing-the-server-client-split-in-ur-web/", "published_at": "2012-07-25T01:17:14+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7bc8404d", "title": "Secure multiparty Bitcoin anonymization", "url": "https://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/", "published_at": "2012-07-20T11:42:13+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7c4ffb64", "title": "Why verification results in higher quality code", "url": "https://blog.ezyang.com/2012/06/why-verification-results-in-higher-quality-code/", "published_at": "2012-06-23T00:40:11+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7cf53c2d", "title": "Thoughts on gamifying textbooks", "url": "https://blog.ezyang.com/2012/05/thoughts-on-gamifying-textbooks/", "published_at": "2012-05-24T19:10:57+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7da491cd", "title": "An Interactive Tutorial of the Sequent Calculus", "url": "https://blog.ezyang.com/2012/05/an-interactive-tutorial-of-the-sequent-calculus/", "published_at": "2012-05-22T09:00:28+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7e74a62e", "title": "Ubuntu Precise upgrade (Thinkpad/Xmonad)", "url": "https://blog.ezyang.com/2012/05/ubuntu-precise-upgrade-thinkpad-xmonad/", "published_at": "2012-05-18T20:51:12+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7f6ea77a", "title": "What happens when you mix three research programming languages together", "url": "https://blog.ezyang.com/2012/05/what-happens-when-you-mix-three-research-programming-languages-together/", "published_at": "2012-05-16T02:54:22+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed7fbd3003", "title": "Some thoughts about literature review", "url": "https://blog.ezyang.com/2012/05/some-thoughts-about-literature-review/", "published_at": "2012-05-13T19:03:00+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed807cac81", "title": "How Ur/Web records work and what it might mean for Haskell", "url": "https://blog.ezyang.com/2012/04/how-urweb-records-work-and-what-it-might-mean-for-haskell/", "published_at": "2012-04-20T01:24:41+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed810cf1de", "title": "Use the source, don't read it", "url": "https://blog.ezyang.com/2012/04/use-the-source-dont-read-it/", "published_at": "2012-04-17T12:51:49+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed81179326", "title": "Reduce Ubuntu latency by disabling mDNS", "url": "https://blog.ezyang.com/2012/03/reduce-ubuntu-latency-by-disabling-mdns/", "published_at": "2012-03-24T15:56:04+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed811c58e8", "title": "Visit month: Princeton", "url": "https://blog.ezyang.com/2012/03/visit-month-princeton/", "published_at": "2012-03-20T09:00:46+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed811cfdee", "title": "Is it better to teach formalism or intuition?", "url": "https://blog.ezyang.com/2012/03/is-it-better-to-teach-formalism-or-intuition/", "published_at": "2012-03-18T16:51:31+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed81eaa5b0", "title": "Visit month: University of Pennsylvania", "url": "https://blog.ezyang.com/2012/03/visit-month-upen/", "published_at": "2012-03-16T01:59:16+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8284eb2b", "title": "You could have invented fractional cascading", "url": "https://blog.ezyang.com/2012/03/you-could-have-invented-fractional-cascading/", "published_at": "2012-03-05T01:30:22+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed837ee378", "title": "Visualizing range trees", "url": "https://blog.ezyang.com/2012/02/visualizing-range-trees/", "published_at": "2012-02-26T03:41:40+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed841e684d", "title": "Anatomy of \"You could have invented...\"", "url": "https://blog.ezyang.com/2012/02/anatomy-of-you-could-have-invented/", "published_at": "2012-02-23T14:42:04+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8471d4c4", "title": "Transcript of \"Inventing on Principle\"", "url": "https://blog.ezyang.com/2012/02/transcript-of-inventing-on-principleb/", "published_at": "2012-02-20T16:23:10+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed84f7f230", "title": "Travel: Spring 2012 Edition", "url": "https://blog.ezyang.com/2012/02/travel-spring-2012-edition/", "published_at": "2012-02-18T10:55:15+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed84ffdb93", "title": "How to build DRM you can trust", "url": "https://blog.ezyang.com/2012/02/how-to-build-drm-you-can-trust/", "published_at": "2012-02-15T16:49:19+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed85f3fa33", "title": "POPL", "url": "https://blog.ezyang.com/2012/01/popl/", "published_at": "2012-01-28T08:30:59+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed868a8e22", "title": "Modelling IO: MonadIO and beyond", "url": "https://blog.ezyang.com/2012/01/modelling-io/", "published_at": "2012-01-24T13:31:06+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8753336d", "title": "monad-control is tricky", "url": "https://blog.ezyang.com/2012/01/monadbasecontrol-is-unsound/", "published_at": "2012-01-23T12:39:00+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed87f22f2d", "title": "Mystery Hunt and the Scientific Endeavour", "url": "https://blog.ezyang.com/2012/01/mystery-hunt-and-the-scientific-endeavour/", "published_at": "2012-01-16T16:12:52+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed888110ab", "title": "Problem Set: The Codensity Transformation", "url": "https://blog.ezyang.com/2012/01/problem-set-the-codensity-transformation/", "published_at": "2012-01-07T03:00:20+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8953ada3", "title": "Why iteratees are hard to understand", "url": "https://blog.ezyang.com/2012/01/why-iteratees-are-hard-to-understand/", "published_at": "2012-01-04T08:00:26+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8a13788e", "title": "Bugs and Battleships", "url": "https://blog.ezyang.com/2011/12/bugs-and-battleships/", "published_at": "2011-12-19T11:04:51+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8ac41b8f", "title": "How to build i686 glibc on Ubuntu", "url": "https://blog.ezyang.com/2011/12/how-to-build-i686-glibc-on-ubuntu/", "published_at": "2011-12-18T18:03:44+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8b3255e4", "title": "Interactive Demo of Zero-Knowledge Proofs", "url": "https://blog.ezyang.com/2011/12/interactive-demo-of-zero-knowledge-proofs/", "published_at": "2011-12-17T13:56:39+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8b3bd767", "title": "Accessing lazy structures from C", "url": "https://blog.ezyang.com/2011/12/accessing-lazy-structures-from/", "published_at": "2011-12-15T17:18:27+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8bd65413", "title": "Transparent xmobar", "url": "https://blog.ezyang.com/2011/11/transparent-xmobar/", "published_at": "2011-11-28T05:09:32+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8ccd3c7e", "title": "Ubuntu Oneiric upgrade (Thinkpad/Xmonad)", "url": "https://blog.ezyang.com/2011/11/ubuntu-oneiric-thinkpad-xmonad/", "published_at": "2011-11-24T03:59:50+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8da7db57", "title": "How to read Haskell like Python", "url": "https://blog.ezyang.com/2011/11/how-to-read-haskell/", "published_at": "2011-11-14T09:00:26+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8e8cb4a2", "title": "The new Reflections on Trusting Trust", "url": "https://blog.ezyang.com/2011/10/the-new-reflections-on-trusting-trust/", "published_at": "2011-10-28T09:00:57+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8ea996b6", "title": "Obviously Correct", "url": "https://blog.ezyang.com/2011/10/obviously-correct/", "published_at": "2011-10-24T09:00:34+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8f687c72", "title": "Polyglot programming", "url": "https://blog.ezyang.com/2011/10/polyglot-programming/", "published_at": "2011-10-12T22:22:54+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed8fdf3165", "title": "Why you shouldn't do a PhD in systems", "url": "https://blog.ezyang.com/2011/09/do-not-phd-in-systems/", "published_at": "2011-09-26T02:41:39+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed909369ff", "title": "Let's play a game", "url": "https://blog.ezyang.com/2011/09/lets-play-a-game/", "published_at": "2011-09-05T04:04:46+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed9097bcbf", "title": "8 ways to report errors in Haskell revisited", "url": "https://blog.ezyang.com/2011/08/8-ways-to-report-errors-in-haskell-revisited/", "published_at": "2011-08-29T12:30:02+00:00" }, { "id": "01a08748-8e76-7067-a6cd-c6ed9167a424", "title": "Joseph and the Amazing Technicolor Box", "url": "https://blog.ezyang.com/2011/08/joseph-and-the-amazing-technicolor-box/", "published_at": "2011-08-23T03:46:58+00:00" } ] posts Claim your blog
Back to blog.ezyang.com
Blog · corpus.blog/blogs/blog.ezyang.com/posts

blog.ezyang.com

blog.ezyang.com

2014

2013

2012

28 Jan 2012

2011