41554 blogs · [ { "id": "01a0876b-a1b4-73d9-bb06-7c374f563470", "title": "Stop obsessing about the goddamn robot", "url": "https://despairlabs.com/blog/posts/2026-09-03-stop-obsessing-about-the-robot/", "published_at": "2026-09-02T14:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c374ff55b52", "title": "The unreasonable cost of conference presentation", "url": "https://despairlabs.com/blog/posts/2026-07-05-conference-presentation-cost/", "published_at": "2026-07-04T14:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c37502897ca", "title": "What people said about an OpenZFS bug", "url": "https://despairlabs.com/blog/posts/2025-07-13-an-openzfs-bug-and-the-humans-that-made-it-comments/", "published_at": "2025-07-12T14:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c3750bde711", "title": "An (almost) catastrophic OpenZFS bug and the humans that made it (and Rust is here too)", "url": "https://despairlabs.com/blog/posts/2025-07-10-an-openzfs-bug-and-the-humans-that-made-it/", "published_at": "2025-07-09T14:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c3751821b8c", "title": "fsync() after open() is an elaborate no-op", "url": "https://despairlabs.com/blog/posts/2025-03-13-fsync-after-open-is-an-elaborate-no-op/", "published_at": "2025-03-12T13:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c3751b959fc", "title": "We should improve libzfs somewhat", "url": "https://despairlabs.com/blog/posts/2025-03-12-we-should-improve-libzfs-somewhat/", "published_at": "2025-03-11T13:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c3752554be4", "title": "OpenZFS deduplication is good now and you shouldn't use it", "url": "https://despairlabs.com/blog/posts/2024-10-27-openzfs-dedup-is-good-dont-use-it/", "published_at": "2024-10-26T13:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c3752de3628", "title": "A few nice things in OpenZFS 2.3", "url": "https://despairlabs.com/blog/posts/2024-10-05-nice-things-in-openzfs-23/", "published_at": "2024-10-04T14:00:00+00:00" }, { "id": "01a0876b-a1b4-73d9-bb06-7c375354d694", "title": "I'm speaking at BSDCan 2024", "url": "https://despairlabs.com/blog/posts/2024-05-19-bsdcan-2024-preview/", "published_at": "2024-05-18T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aed0c2e1d", "title": "I'm speaking at AsiaBSDCon 2024", "url": "https://despairlabs.com/blog/posts/2024-03-11-asiabsdcon-2024-preview/", "published_at": "2024-03-10T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aed431426", "title": "quiz: a tool for rapid OpenZFS development", "url": "https://despairlabs.com/blog/posts/2024-03-04-quiz-rapid-openzfs-development/", "published_at": "2024-03-03T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aedfc1492", "title": "A data corruption bug in OpenZFS?", "url": "https://despairlabs.com/blog/posts/2023-12-25-openzfs-data-corruption-bug/", "published_at": "2023-12-24T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aeed4181e", "title": "The Rust I used to know", "url": "https://despairlabs.com/blog/posts/2022-08-20-the-rust-i-used-to-know/", "published_at": "2022-08-19T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aef72069e", "title": "GOOD COMPUTER: Boards", "url": "https://despairlabs.com/blog/posts/2022-01-16-good-computer-boards/", "published_at": "2022-01-15T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aefc02aff", "title": "GOOD COMPUTER: FAT32", "url": "https://despairlabs.com/blog/posts/2022-01-12-good-computer-fat32/", "published_at": "2022-01-11T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af0911134", "title": "io_uring is not an event system", "url": "https://despairlabs.com/blog/posts/2021-06-16-io-uring-is-not-an-event-system/", "published_at": "2021-06-15T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af0c15e2b", "title": "GOOD COMPUTER: a modern 80's-style computer", "url": "https://despairlabs.com/blog/posts/2021-04-10-good-computer-presentation/", "published_at": "2021-04-09T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af10ada67", "title": "GOOD COMPUTER: mk2", "url": "https://despairlabs.com/blog/posts/2020-08-17-good-computer-mk2/", "published_at": "2020-08-16T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af20a2dbd", "title": "GOOD COMPUTER: XIAO bricked", "url": "https://despairlabs.com/blog/posts/2020-07-27-good-computer-xiao-bricked/", "published_at": "2020-07-26T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af27cd7ed", "title": "GOOD COMPUTER: XIAO", "url": "https://despairlabs.com/blog/posts/2020-07-24-good-computer-xiao/", "published_at": "2020-07-23T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af352c09e", "title": "GOOD COMPUTER: Broken SD module", "url": "https://despairlabs.com/blog/posts/2020-07-12-good-computer-broken-sd-module/", "published_at": "2020-07-11T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af41275c8", "title": "GOOD COMPUTER: Public Service Announcement", "url": "https://despairlabs.com/blog/posts/2020-07-07-good-computer-public-service-announcement/", "published_at": "2020-07-06T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af4f39dcd", "title": "GOOD COMPUTER: LCD graphics", "url": "https://despairlabs.com/blog/posts/2020-07-06-good-computer-lcd-graphics/", "published_at": "2020-07-05T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af591d338", "title": "GOOD COMPUTER: LED counter", "url": "https://despairlabs.com/blog/posts/2020-07-05-good-computer-led-counter/", "published_at": "2020-07-04T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af5fcb67e", "title": "GOOD COMPUTER: LCD", "url": "https://despairlabs.com/blog/posts/2020-07-02-good-computer-lcd/", "published_at": "2020-07-01T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af67b959c", "title": "GOOD COMPUTER: Z-machine", "url": "https://despairlabs.com/blog/posts/2020-06-22-good-computer-z-machine/", "published_at": "2020-06-21T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af6b31f39", "title": "GOOD COMPUTER: BASIC", "url": "https://despairlabs.com/blog/posts/2020-06-02-good-computer-basic/", "published_at": "2020-06-01T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af72acdde", "title": "GOOD COMPUTER", "url": "https://despairlabs.com/blog/posts/2020-04-28-good-computer/", "published_at": "2020-04-27T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af79ebea2", "title": "End times", "url": "https://despairlabs.com/blog/posts/2020-02-29-end-times/", "published_at": "2020-02-28T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af80acaf5", "title": "Tile windows", "url": "https://despairlabs.com/blog/posts/2020-01-11-tile-windows/", "published_at": "2020-01-10T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af8a63a69", "title": "Switching to elementary OS", "url": "https://despairlabs.com/blog/posts/2019-12-07-switching-to-elementary-os/", "published_at": "2019-12-06T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af8d38e64", "title": "A talk about Consul", "url": "https://despairlabs.com/blog/posts/2018-08-14-a-talk-about-consul/", "published_at": "2018-08-13T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670af97e2df8", "title": "U 2 can U2F (linux.conf.au 2017)", "url": "https://despairlabs.com/blog/posts/2017-01-17-u-2-can-u2f-linux-conf-au-2017/", "published_at": "2017-01-16T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afa0df94e", "title": "CompCon 2016 in review", "url": "https://despairlabs.com/blog/posts/2016-10-19-compcon-2016-in-review/", "published_at": "2016-10-18T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afa560b2e", "title": "A br1ef h1st0ry of P@sswords (CompCon 2016)", "url": "https://despairlabs.com/blog/posts/2016-10-02-a-br1ef-h1st0ry-of-p-sswords-compcon-2016/", "published_at": "2016-10-01T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afad2df07", "title": "U 2 can U2F (YAPC::NA 2016)", "url": "https://despairlabs.com/blog/posts/2016-06-22-u-2-can-u2f-yapc-na-2016/", "published_at": "2016-06-21T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afb98e05c", "title": "Secret level", "url": "https://despairlabs.com/blog/posts/2015-06-20-secret-level/", "published_at": "2015-06-19T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afbe7d900", "title": "New release of salada, my JMAP server", "url": "https://despairlabs.com/blog/posts/2015-06-17-new-release-of-salada-my-jmap-server/", "published_at": "2015-06-16T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afc3791d9", "title": "I was happy with this one", "url": "https://despairlabs.com/blog/posts/2015-06-14-i-was-happy-with-this-one/", "published_at": "2015-06-13T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afc969314", "title": "An evening of programming puzzles...", "url": "https://despairlabs.com/blog/posts/2015-06-12-an-evening-of-programming-puzzles/", "published_at": "2015-06-11T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afc997d98", "title": "Fastmail is a SSRF target", "url": "https://despairlabs.com/blog/posts/2015-05-27-fastmail-is-a-ssrf-target/", "published_at": "2015-05-26T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afd35a654", "title": "OAuth+SASL needs a username", "url": "https://despairlabs.com/blog/posts/2015-05-24-oauth-sasl-needs-a-username/", "published_at": "2015-05-23T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afd94e8cc", "title": "OAuth for libsasl2", "url": "https://despairlabs.com/blog/posts/2015-05-23-oauth-for-libsasl2/", "published_at": "2015-05-22T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afe59d56a", "title": "First release of salada, my JMAP server", "url": "https://despairlabs.com/blog/posts/2015-05-12-first-release-of-salada-my-jmap-server/", "published_at": "2015-05-11T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670afebee2ab", "title": "A JMAP library for Rust", "url": "https://despairlabs.com/blog/posts/2015-04-19-a-jmap-library-for-rust/", "published_at": "2015-04-18T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670aff97996f", "title": "Pebble cricket: updates", "url": "https://despairlabs.com/blog/posts/2015-02-22-pebble-cricket-updates/", "published_at": "2015-02-21T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0006a87d", "title": "Everybody root", "url": "https://despairlabs.com/blog/posts/2015-02-12-everybody-root/", "published_at": "2015-02-11T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b00aceaa3", "title": "Pebble cricket: name shortener", "url": "https://despairlabs.com/blog/posts/2015-02-11-pebble-cricket-name-shortener/", "published_at": "2015-02-10T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0186796b", "title": "Adding XMPP support to nginx", "url": "https://despairlabs.com/blog/posts/2015-01-16-adding-xmpp-support-to-nginx/", "published_at": "2015-01-15T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b01871fba", "title": "Dummy renderer", "url": "https://despairlabs.com/blog/posts/2015-01-06-dummy-renderer/", "published_at": "2015-01-05T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0264658d", "title": "Broken wire protocol", "url": "https://despairlabs.com/blog/posts/2014-11-21-broken-wire-protocol/", "published_at": "2014-11-20T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b03208e44", "title": "NBN: inside the box", "url": "https://despairlabs.com/blog/posts/2014-10-05-nbn-inside-the-box/", "published_at": "2014-10-04T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b03ad2a87", "title": "NBN: test box", "url": "https://despairlabs.com/blog/posts/2014-10-05-nbn-test-box/", "published_at": "2014-10-04T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b04702113", "title": "NBN: the box", "url": "https://despairlabs.com/blog/posts/2014-10-03-nbn-the-box/", "published_at": "2014-10-02T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b04d68518", "title": "Why I bought a Pebble", "url": "https://despairlabs.com/blog/posts/2014-09-22-why-i-bought-a-pebble/", "published_at": "2014-09-21T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b052a86a2", "title": "Hexdump", "url": "https://despairlabs.com/blog/posts/2014-09-12-hexdump/", "published_at": "2014-09-11T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b05d5389e", "title": "Anonymous objects", "url": "https://despairlabs.com/blog/posts/2014-08-09-anonymous-objects/", "published_at": "2014-08-08T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0616767a", "title": "Pebble cricket: draw", "url": "https://despairlabs.com/blog/posts/2014-07-28-pebble-cricket-draw/", "published_at": "2014-07-27T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0673537a", "title": "Pebble cricket: long names", "url": "https://despairlabs.com/blog/posts/2014-07-27-pebble-cricket-long-names/", "published_at": "2014-07-26T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0759c509", "title": "Pebble cricket: SixFour", "url": "https://despairlabs.com/blog/posts/2014-07-27-pebble-cricket-sixfour/", "published_at": "2014-07-26T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0799f9fb", "title": "Pebble cricket: innings change", "url": "https://despairlabs.com/blog/posts/2014-07-26-pebble-cricket-innings-change/", "published_at": "2014-07-25T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0840f669", "title": "Pebble cricket", "url": "https://despairlabs.com/blog/posts/2014-07-25-pebble-cricket/", "published_at": "2014-07-24T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b08531692", "title": "Pebble cricket: MVP", "url": "https://despairlabs.com/blog/posts/2014-07-25-pebble-cricket-mvp/", "published_at": "2014-07-24T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0857b175", "title": "Introducing hopscotch, a tiny image proxy", "url": "https://despairlabs.com/blog/posts/2014-07-21-introducing-hopscotch-a-tiny-image-proxy/", "published_at": "2014-07-20T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0913de26", "title": "Dockerising a Perl application", "url": "https://despairlabs.com/blog/posts/2014-07-15-dockerising-a-perl-application/", "published_at": "2014-07-14T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b09b8f503", "title": "Deploying towncrier with Carton", "url": "https://despairlabs.com/blog/posts/2014-07-14-deploying-towncrier-with-carton/", "published_at": "2014-07-13T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0a0d65c9", "title": "SSRF protection in Perl", "url": "https://despairlabs.com/blog/posts/2014-07-11-ssrf-protection-in-perl/", "published_at": "2014-07-10T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0ac22948", "title": "The new Gmail API", "url": "https://despairlabs.com/blog/posts/2014-06-26-the-new-gmail-api/", "published_at": "2014-06-25T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0b1943b7", "title": "Perl and etcd? I can help!", "url": "https://despairlabs.com/blog/posts/2014-06-18-perl-and-etcd-i-can-help/", "published_at": "2014-06-17T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0bf7a22b", "title": "OAuth2 protected resource errors", "url": "https://despairlabs.com/blog/posts/2014-06-05-oauth2-protected-resource-errors/", "published_at": "2014-06-04T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0cd45952", "title": "A notifier app for Fastmail", "url": "https://despairlabs.com/blog/posts/2014-05-28-a-notifier-app-for-fastmail/", "published_at": "2014-05-27T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0d482039", "title": "DJabberd mandatory TLS", "url": "https://despairlabs.com/blog/posts/2014-05-20-djabberd-mandatory-tls/", "published_at": "2014-05-19T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0d6528b7", "title": "A status dashboard", "url": "https://despairlabs.com/blog/posts/2014-04-15-a-status-dashboard/", "published_at": "2014-04-14T14:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0dc2e9bd", "title": "Wrap any Lua function with a sigc++ slot", "url": "https://despairlabs.com/blog/posts/2014-03-23-wrap-any-lua-function-with-a-sigc-slot/", "published_at": "2014-03-22T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0dc81366", "title": "Experimenting with easing functions", "url": "https://despairlabs.com/blog/posts/2014-03-17-experimenting-with-easing-functions/", "published_at": "2014-03-16T13:00:00+00:00" }, { "id": "01a0876b-a1b5-7309-aa68-670b0ec43b6b", "title": "When good glyph atlases go bad", "url": "https://despairlabs.com/blog/posts/2014-03-02-when-good-glyph-atlases-go-bad/", "published_at": "2014-03-01T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d525d57b24", "title": "Replacing Graphics::Magick with Imager", "url": "https://despairlabs.com/blog/posts/2014-01-08-replacing-graphics-magick-with-imager/", "published_at": "2014-01-07T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d525efc40f", "title": "That will do for tonight", "url": "https://despairlabs.com/blog/posts/2014-01-02-that-will-do-for-tonight/", "published_at": "2014-01-01T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52677b319", "title": "Particle systems are fun", "url": "https://despairlabs.com/blog/posts/2014-01-01-particle-systems-are-fun/", "published_at": "2013-12-31T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d5270ede9c", "title": "A particle system", "url": "https://despairlabs.com/blog/posts/2013-12-31-a-particle-system/", "published_at": "2013-12-30T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d5275804cf", "title": "The problem with cricket commentary in IRC", "url": "https://despairlabs.com/blog/posts/2013-11-21-the-problem-with-cricket-commentary-in-irc/", "published_at": "2013-11-20T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52787064b", "title": "Start of the new ship market", "url": "https://despairlabs.com/blog/posts/2013-11-10-start-of-the-new-ship-market/", "published_at": "2013-11-09T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d5286527d4", "title": "Translation answers", "url": "https://despairlabs.com/blog/posts/2013-10-27-translation-answers/", "published_at": "2013-10-26T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52954a88c", "title": "Google sending weird XMPP stuff", "url": "https://despairlabs.com/blog/posts/2013-10-25-google-sending-weird-xmpp-stuff/", "published_at": "2013-10-24T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d5298863c9", "title": "Translation question", "url": "https://despairlabs.com/blog/posts/2013-10-25-translation-question/", "published_at": "2013-10-24T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52a275dd2", "title": "Code::Blocks for Pioneer", "url": "https://despairlabs.com/blog/posts/2013-10-19-code-blocks-for-pioneer/", "published_at": "2013-10-18T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52a72f6bb", "title": "Building Pioneer's UI: Part 1: History", "url": "https://despairlabs.com/blog/posts/2013-10-16-building-pioneer-s-ui-part-1-history/", "published_at": "2013-10-15T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52b17f924", "title": "Upgrading the office servers", "url": "https://despairlabs.com/blog/posts/2013-10-15-upgrading-the-office-servers/", "published_at": "2013-10-14T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52b1e3b9d", "title": "Multi-line text layout", "url": "https://despairlabs.com/blog/posts/2013-10-12-multi-line-text-layout/", "published_at": "2013-10-11T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52bda169c", "title": "Start of the new bulletin board & chat form", "url": "https://despairlabs.com/blog/posts/2013-10-11-start-of-the-new-bulletin-board-chat-form/", "published_at": "2013-10-10T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52c816679", "title": "GCC's 'maybe unitialized' warning", "url": "https://despairlabs.com/blog/posts/2013-10-03-gcc-s-maybe-unitialized-warning/", "published_at": "2013-10-02T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52ca8e8ba", "title": "The secret truth of cross-platform development", "url": "https://despairlabs.com/blog/posts/2013-09-29-the-secret-truth-of-cross-platform-development/", "published_at": "2013-09-28T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52d8fc905", "title": "Thrust", "url": "https://despairlabs.com/blog/posts/2013-09-18-thrust/", "published_at": "2013-09-17T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52d9a5f47", "title": "Building Pioneer's UI: Part 0: Introduction", "url": "https://despairlabs.com/blog/posts/2013-08-30-building-pioneer-s-ui-part-0-introduction/", "published_at": "2013-08-29T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52e76a443", "title": "Randomly choosing complementary colours", "url": "https://despairlabs.com/blog/posts/2013-07-10-randomly-choosing-complementary-colours/", "published_at": "2013-07-09T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52ede2eb7", "title": "I bisected a kernel problem!", "url": "https://despairlabs.com/blog/posts/2013-05-15-i-bisected-a-kernel-problem/", "published_at": "2013-05-14T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52f532a7c", "title": "My first Rust: Hello OpenGL", "url": "https://despairlabs.com/blog/posts/2013-04-12-my-first-rust-hello-opengl/", "published_at": "2013-04-11T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d52f547e78", "title": "My first Rust: SDL bindings", "url": "https://despairlabs.com/blog/posts/2013-04-10-my-first-rust-sdl-bindings/", "published_at": "2013-04-09T14:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d530305a4c", "title": "the google drive api doesn't know about paths, and that's bad", "url": "https://despairlabs.com/blog/posts/2013-03-22-the-google-drive-api-doesn-t-know-about-paths-and-that-s-bad/", "published_at": "2013-03-21T13:00:00+00:00" }, { "id": "01a0876b-a1b6-71e9-85f2-e0d531229b3f", "title": "Its looking pretty nice!", "url": "https://despairlabs.com/blog/posts/2013-02-28-its-looking-pretty-nice/", "published_at": "2013-02-27T13:00:00+00:00" } ] posts Claim your blog
Back to despairlabs.com
Blog · corpus.blog/blogs/despairlabs.com/posts

despairlabs.com

despairlabs.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

17 Sept 2013