41554 blogs · [ { "id": "01a08c59-f6fe-728b-a1fe-835a81c07016", "title": "There continue to be reasons for software to be slow", "url": "https://typesanitizer.com/blog/performance-issues.html", "published_at": "2026-08-22T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a82a2a6f3", "title": "Reviewing code is a skill", "url": "https://typesanitizer.com/blog/code-review.html", "published_at": "2026-08-10T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8348111a", "title": "Job queues are deceptively tricky", "url": "https://typesanitizer.com/blog/job-queues.html", "published_at": "2026-07-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a83b0b5d1", "title": "On the purported benefits of effect systems", "url": "https://typesanitizer.com/blog/effects-convo.html", "published_at": "2025-11-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a83c8f325", "title": "Six programmers and the type system", "url": "https://typesanitizer.com/blog/6-programmers.html", "published_at": "2025-09-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8437adeb", "title": "A programmer's field guide to assertions", "url": "https://typesanitizer.com/blog/assertions.html", "published_at": "2025-08-17T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a84c60175", "title": "How should we learn from bugs?", "url": "https://typesanitizer.com/blog/bug-analysis.html", "published_at": "2025-08-03T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a858b11cb", "title": "Deeper theories of program design", "url": "https://typesanitizer.com/blog/deeper-theories.html", "published_at": "2025-07-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a85d2617a", "title": "A meta-analysis of three different notions of software complexity", "url": "https://typesanitizer.com/blog/complexity-definitions.html", "published_at": "2025-06-14T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a861978dc", "title": "The ability to learn how to judge outcomes is probably a core skill", "url": "https://typesanitizer.com/blog/outcome-judgement.html", "published_at": "2025-03-30T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a863a3028", "title": "An epic treatise on error models for systems programming languages", "url": "https://typesanitizer.com/blog/errors.html", "published_at": "2025-03-06T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a869a2b9c", "title": "Our optimizers need a rethink", "url": "https://typesanitizer.com/blog/rethink-optimizers.html", "published_at": "2024-10-23T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8756fec1", "title": "On leaving my last job", "url": "https://typesanitizer.com/blog/leaving-apple.html", "published_at": "2024-09-29T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a87df9da3", "title": "My first and last Strange Loop", "url": "https://typesanitizer.com/blog/strange-loop.html", "published_at": "2023-09-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a88211369", "title": "TFW UBSan flags a dynamic type error inside Clang", "url": "https://typesanitizer.com/blog/ubsan.html", "published_at": "2023-01-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8906104c", "title": "Zig-style generics are not well-suited for most languages", "url": "https://typesanitizer.com/blog/zig-generics.html", "published_at": "2022-10-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a89f7de19", "title": "Experience Report: 6 months of Go", "url": "https://typesanitizer.com/blog/go-experience-report.html", "published_at": "2022-04-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8a80aa5c", "title": "A compiler's users (part 1)", "url": "https://typesanitizer.com/blog/a-compilers-users-p1.html", "published_at": "2021-11-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8b32eba5", "title": "Not Rocket Science (Meeting Edition)", "url": "https://typesanitizer.com/blog/not-rocket-science.html", "published_at": "2021-08-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8bed2370", "title": "Scope Sets as a Piñata for Name Resolution", "url": "https://typesanitizer.com/blog/scope-sets.html", "published_at": "2021-03-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8bf951c5", "title": "Are tagged unions overrated?", "url": "https://typesanitizer.com/blog/tagged-unions.html", "published_at": "2021-02-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8cc8a31c", "title": "Don't Snark", "url": "https://typesanitizer.com/blog/dont-snark.html", "published_at": "2020-09-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8d3743dd", "title": "An opinionated beginner's guide to Haskell in mid-2019", "url": "https://typesanitizer.com/blog/haskell-opinions-2019.html", "published_at": "2019-06-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8de512b8", "title": "Principled Ad-Hoc Polymorphism", "url": "https://typesanitizer.com/blog/ad-hoc-polymorphism.html", "published_at": "2018-12-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8e52d14b", "title": "10 Commandments: Compiler in Haskell Edition", "url": "https://typesanitizer.com/blog/10-commandments.html", "published_at": "2018-06-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8ea191a3", "title": "Language Zoo", "url": "https://typesanitizer.com/blog/language-zoo.html", "published_at": "2017-12-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a8f1c292b", "title": "Many Numbers", "url": "https://typesanitizer.com/blog/many-numbers.html", "published_at": "2016-11-01T00:00:00+00:00" }, { "id": "01a08c59-f6fe-728b-a1fe-835a900170fd", "title": "Alice's Adventures with Project Euler", "url": "https://typesanitizer.com/blog/alice-euler.html", "published_at": "2016-05-01T00:00:00+00:00" } ] posts Claim your blog
Back to typesanitizer.com
Blog · corpus.blog/blogs/typesanitizer.com/posts

typesanitizer.com

typesanitizer.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016