41554 blogs · [ { "id": "01a08790-5dea-7087-b02e-d6a7d5001485", "title": "Renewing Abandoned Software with an AI Agent", "url": "https://jonsimpson.ca/renewing-abandoned-software-with-an-ai-agent/", "published_at": "2026-09-05T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d5527d93", "title": "The Best Way to Teach Students About AI Is to Build Something Together", "url": "https://jonsimpson.ca/the-best-way-to-teach-students-about-ai-is-to-build-something-together/", "published_at": "2026-08-17T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d6135f80", "title": "Experiment driven development with agents", "url": "https://jonsimpson.ca/experiment-driven-development-with-agents/", "published_at": "2026-08-06T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d6853c91", "title": "Give your agents everything", "url": "https://jonsimpson.ca/give-your-agents-everything/", "published_at": "2026-07-16T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d6e2fb39", "title": "Git Worktrees: The Simplest Way to Parallelize Your Coding Agents", "url": "https://jonsimpson.ca/git-worktrees-simplest-way-to-parallelize-coding-agents/", "published_at": "2026-02-21T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d71cbb99", "title": "From Phone to E-Ink: How I Built My Perfect Reading Setup with Wallabag", "url": "https://jonsimpson.ca/from-phone-to-e-ink-how-i-built-my-perfect-reading-setup-with-wallabag/", "published_at": "2026-02-03T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d766adac", "title": "To plan or yolo, and everything in between", "url": "https://jonsimpson.ca/to-plan-or-yolo-and-everything-in-between/", "published_at": "2026-01-24T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d7fead8b", "title": "Using Beads to supercharge my workflow", "url": "https://jonsimpson.ca/using-beads-to-supercharge-my-workflow/", "published_at": "2026-01-20T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d81d4a58", "title": "Takeaways from leaning into agentic coding", "url": "https://jonsimpson.ca/takeaways-from-leaning-into-agentic-coding/", "published_at": "2026-01-03T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d8610c2a", "title": "How I Inadvertently Failed Half a Computer Science Class", "url": "https://jonsimpson.ca/how-i-inadvertently-failed-half-a-cs-class/", "published_at": "2025-11-29T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d9458352", "title": "Discovering podcasts in 2006", "url": "https://jonsimpson.ca/discovering-podcasts-in-2006/", "published_at": "2025-11-01T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7d9a38aed", "title": "Thirty one", "url": "https://jonsimpson.ca/thirty-one/", "published_at": "2025-10-01T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7da838f17", "title": "Dogfood calculator", "url": "https://jonsimpson.ca/dogfood-calculator/", "published_at": "2025-09-15T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7da9b897c", "title": "Just go build it!", "url": "https://jonsimpson.ca/just-go-build-it/", "published_at": "2025-08-19T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7dad4eca0", "title": "Fixing WiFi for Fun and Profit", "url": "https://jonsimpson.ca/fixing-wifi-for-fun-and-profit/", "published_at": "2025-06-01T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7db0d60b6", "title": "One year at Mantle", "url": "https://jonsimpson.ca/one-year-at-mantle/", "published_at": "2025-04-20T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7dbd14d1e", "title": "Using Codesandbox for coding interviews", "url": "https://jonsimpson.ca/using-codesandbox-for-coding-interviews/", "published_at": "2025-01-28T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7dc86978e", "title": "Thirty", "url": "https://jonsimpson.ca/thirty/", "published_at": "2024-10-01T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7dced6e8b", "title": "Gotchas with the HubSpot API", "url": "https://jonsimpson.ca/gotchas-with-the-hubspot-api/", "published_at": "2024-06-22T00:00:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7dd97e7f6", "title": "Plex hardware transcoding with a consumer GPU in a Dell server", "url": "https://jonsimpson.ca/hardware-accelerated-plex-transcoding-with-consumer-gpus-in-dell-servers/", "published_at": "2023-12-05T20:02:25+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7de05d9c2", "title": "Growing Teams with the SBI Model: A Framework for Effective Feedback", "url": "https://jonsimpson.ca/growing-teams-with-the-sbi-model-a-framework-for-effective-feedback/", "published_at": "2023-08-16T20:45:41+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7de818fef", "title": "Twenty Eight", "url": "https://jonsimpson.ca/twenty-eight/", "published_at": "2022-10-01T23:47:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7df693554", "title": "Twenty seven", "url": "https://jonsimpson.ca/twenty-seven/", "published_at": "2021-10-01T19:30:00+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7dfb50a8c", "title": "Binge-worthy podcasts discovered during the pandemic", "url": "https://jonsimpson.ca/binge-worthy-podcasts-discovered-during-the-pandemic/", "published_at": "2021-03-15T01:58:59+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e03cfbe8", "title": "ZFS snapshots in action", "url": "https://jonsimpson.ca/zfs-snapshots-in-action/", "published_at": "2021-01-10T17:52:11+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e0d58dab", "title": "ZFS takeaways", "url": "https://jonsimpson.ca/zfs-takeaways/", "published_at": "2020-12-21T23:44:38+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e12aff03", "title": "How to set up a local DNS server for your home network", "url": "https://jonsimpson.ca/building-a-homelab-local-dns/", "published_at": "2020-10-18T21:54:03+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e176307c", "title": "Twenty Six", "url": "https://jonsimpson.ca/twenty-six/", "published_at": "2020-10-01T21:47:05+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e183cb2d", "title": "Building a homelab - a walk through history and investing in new hardware", "url": "https://jonsimpson.ca/building-a-homelab-a-walk-through-history-and-investing-in-new-hardware/", "published_at": "2020-08-23T16:09:14+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e1ba5f49", "title": "Nix-ify your environment", "url": "https://jonsimpson.ca/nix-ify-your-environment/", "published_at": "2020-05-23T17:33:01+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e27b1448", "title": "Replacing the engine while driving: planning safety measures into the project", "url": "https://jonsimpson.ca/replacing-the-engine-while-driving-planning-safety-measures-into-the-project/", "published_at": "2020-05-03T23:37:32+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e3769049", "title": "RubyConf 2019 Talks - Day 2", "url": "https://jonsimpson.ca/rubyconf-2019-talks-day-2/", "published_at": "2019-12-08T22:02:29+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e44754cd", "title": "RubyConf 2019 Talks - Day 1", "url": "https://jonsimpson.ca/rubyconf-2019-talks-day-1/", "published_at": "2019-12-01T20:11:04+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e4ac79d4", "title": "Twenty Five", "url": "https://jonsimpson.ca/twenty-five/", "published_at": "2019-10-03T02:14:45+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e4f06cd7", "title": "Accelerate your team as its Lead", "url": "https://jonsimpson.ca/accelerate-your-team-as-its-lead/", "published_at": "2019-08-16T12:20:28+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e591bea8", "title": "Key-Value Pairs in GraphQL", "url": "https://jonsimpson.ca/key-value-pairs-in-graphql/", "published_at": "2019-06-20T03:27:46+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e656641f", "title": "Staging environments slow developers down", "url": "https://jonsimpson.ca/staging-environments-slow-developers-down/", "published_at": "2019-03-31T19:06:02+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e6b8e657", "title": "Brodie: Building Shopify's new Help Centre", "url": "https://jonsimpson.ca/brodie-building-shopifys-new-help-centre/", "published_at": "2019-01-14T01:11:50+00:00" }, { "id": "01a08790-5dea-7087-b02e-d6a7e7a8e640", "title": "Keep Continuously Testing", "url": "https://jonsimpson.ca/keep-continuously-testing/", "published_at": "2018-12-30T22:48:18+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89277f311", "title": "Why “&” doesn't actually break your HTML URLs", "url": "https://jonsimpson.ca/why-amp-doesnt-actually-break-your-html-urls/", "published_at": "2018-11-10T17:34:30+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a892ac515f", "title": "Twenty-four!", "url": "https://jonsimpson.ca/twenty-four/", "published_at": "2018-10-02T01:46:07+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8939aad20", "title": "Hunting for segmentation faults in Ruby programs", "url": "https://jonsimpson.ca/hunting-for-segmentation-faults-in-ruby-programs/", "published_at": "2018-07-30T13:01:35+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89435d6e0", "title": "Twilio's TaskRouter Quickstart", "url": "https://jonsimpson.ca/twilios-taskrouter-quickstart/", "published_at": "2018-05-26T16:59:19+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a894cb0132", "title": "How Does Symmetric and Public Key Encryption Work?", "url": "https://jonsimpson.ca/how-does-symmetric-and-public-key-encryption-work/", "published_at": "2018-05-05T16:47:55+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a894f8f462", "title": "Parallel GraphQL Resolvers with Futures", "url": "https://jonsimpson.ca/parallel-graphql-resolvers-with-futures/", "published_at": "2018-04-08T16:49:49+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a895955514", "title": "Zero to One Hundred in Six Months: Notes on Learning Ruby and Rails", "url": "https://jonsimpson.ca/zero-to-one-hundred-in-six-months-notes-on-learning-ruby-and-rails/", "published_at": "2018-01-20T20:20:09+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a895ac1656", "title": "What the hack? - or how my first capture the flag went", "url": "https://jonsimpson.ca/what-the-hack-or-how-my-first-capture-the-flag-went/", "published_at": "2017-11-30T03:16:30+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89683e468", "title": "Twenty-Three!", "url": "https://jonsimpson.ca/twenty-three/", "published_at": "2017-10-02T03:36:11+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a897538ffd", "title": "Installing Go the Right Way", "url": "https://jonsimpson.ca/installing-go-the-right-way/", "published_at": "2017-05-18T03:54:22+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89753b53e", "title": "Private Docker Repositories with Artifactory", "url": "https://jonsimpson.ca/private-docker-repositories/", "published_at": "2017-05-08T02:54:34+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8976510a4", "title": "Practicing User Safety at GitHub", "url": "https://jonsimpson.ca/practicing-user-safety-at-github/", "published_at": "2017-03-19T23:21:51+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8976f3958", "title": "A few Gotchas with Shopify API Development", "url": "https://jonsimpson.ca/a-few-gotchas-with-shopify-api-development/", "published_at": "2017-02-12T04:38:02+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a898068ba5", "title": "The Software Engineering Daily Podcast is Highly Addictive", "url": "https://jonsimpson.ca/the-software-engineering-daily-podcast-is-highly-addictive/", "published_at": "2017-02-04T03:24:59+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a898fcc070", "title": "Better Cilk Development With Docker", "url": "https://jonsimpson.ca/better-cilk-development-with-docker/", "published_at": "2016-10-06T20:41:29+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a899e1c5f6", "title": "Twenty-Two", "url": "https://jonsimpson.ca/twenty-two/", "published_at": "2016-10-01T04:05:16+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89a789467", "title": "Old Habits Die Hard: Copy and Paste", "url": "https://jonsimpson.ca/old-habits-die-hard-copy-and-paste/", "published_at": "2016-08-16T04:05:33+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89af9356f", "title": "Implementing Agile Databases with Liquibase", "url": "https://jonsimpson.ca/implementing-agile-databases-with-liquibase/", "published_at": "2016-04-25T03:09:21+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89b2c8d53", "title": "My Top Tech, Software and Comedy Podcast List", "url": "https://jonsimpson.ca/my-top-tech-software-and-comedy-podcast-list/", "published_at": "2016-03-22T17:21:22+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89b473b9c", "title": "Market Yourself", "url": "https://jonsimpson.ca/market-yourself/", "published_at": "2016-01-25T19:23:55+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89b9f5643", "title": "Hook, Line and Sinker: How My Early Interests Got Me to Where I Am Today", "url": "https://jonsimpson.ca/hook-line-and-sinker-how-my-early-interests-got-me-to-where-i-am-today/", "published_at": "2016-01-15T20:30:23+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89bf1cf1d", "title": "Push-button Deployment of a Docker Compose Project", "url": "https://jonsimpson.ca/push-button-deployment-of-a-docker-compose-project/", "published_at": "2015-11-21T19:31:39+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89c742bb3", "title": "Acquisition, Docker and Rundeck", "url": "https://jonsimpson.ca/acquisition-docker-and-rundeck/", "published_at": "2015-11-19T18:29:20+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89cbfffe6", "title": "Twenty-one!", "url": "https://jonsimpson.ca/twenty-one/", "published_at": "2015-10-09T03:16:06+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89d32c54c", "title": "Protip-ntp", "url": "https://jonsimpson.ca/protip-ntp/", "published_at": "2015-05-28T01:17:15+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89de9947b", "title": "Introducing ChatOps to my Workplace: Hubot", "url": "https://jonsimpson.ca/introducing-chatops-to-my-workplace-hubot/", "published_at": "2015-05-25T03:28:05+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89deb841a", "title": "Introducing ChatOps to my Workplace: Intro", "url": "https://jonsimpson.ca/introducing-chatops-to-my-workplace-intro/", "published_at": "2015-05-17T20:44:12+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89e0d8307", "title": "FPGA-Friday", "url": "https://jonsimpson.ca/fpga-friday/", "published_at": "2015-04-03T15:08:57+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89ec1c20a", "title": "Where's the warm weather? I want to go biking!", "url": "https://jonsimpson.ca/wheres-the-warm-weather-i-want-to-go-biking/", "published_at": "2015-03-19T14:19:00+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89fb5d1e3", "title": "Work Reference", "url": "https://jonsimpson.ca/work-reference/", "published_at": "2015-03-16T18:22:31+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a89fff9e77", "title": "Quick Eclipse Tip", "url": "https://jonsimpson.ca/quick-eclipse-tip/", "published_at": "2015-03-04T00:57:26+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a0ce23fd", "title": "You know there's a problem when...", "url": "https://jonsimpson.ca/you-know-theres-a-problem-when/", "published_at": "2014-12-01T02:37:32+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a10ae8f5", "title": "The Future is Bright? (Maybe)", "url": "https://jonsimpson.ca/the-future-is-bright-maybe/", "published_at": "2014-11-11T04:29:13+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a11e15e5", "title": "Documentation", "url": "https://jonsimpson.ca/documentation/", "published_at": "2014-10-24T20:02:54+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a1e96275", "title": "Of Recent Events", "url": "https://jonsimpson.ca/of-recent-events/", "published_at": "2014-10-22T19:22:02+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a28e7cac", "title": "Twenty", "url": "https://jonsimpson.ca/twenty/", "published_at": "2014-10-01T18:44:43+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a297150e", "title": "A Path To Justice", "url": "https://jonsimpson.ca/a-path-to-justice/", "published_at": "2014-09-05T03:26:13+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a38f1371", "title": "Moving a Jenkins Instance From one Server to Another", "url": "https://jonsimpson.ca/moving-a-jenkins-instance-from-one-server-to-another/", "published_at": "2014-06-24T21:53:45+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a42c0e32", "title": "Svn to Git Migration", "url": "https://jonsimpson.ca/svn-to-git-migration/", "published_at": "2014-06-19T03:55:07+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a5234018", "title": "Hacking Banshee", "url": "https://jonsimpson.ca/hacking-banshee/", "published_at": "2014-02-02T08:51:32+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a5564475", "title": "Job Update and a Concurrency Rant", "url": "https://jonsimpson.ca/job-update-and-a-concurrency-rant/", "published_at": "2014-01-24T18:26:32+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a5911b54", "title": "Some smooth Jazz", "url": "https://jonsimpson.ca/some-smooth-jazz/", "published_at": "2014-01-23T17:28:17+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a6342457", "title": "Ice Storm Photography", "url": "https://jonsimpson.ca/ice-storm-photography/", "published_at": "2013-12-26T23:58:46+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a6aeae9f", "title": "Exam study tip", "url": "https://jonsimpson.ca/exam-study-tip/", "published_at": "2013-12-05T14:16:07+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a72344b3", "title": "Dawn and Dusk", "url": "https://jonsimpson.ca/dawn-and-dusk/", "published_at": "2013-11-28T14:52:38+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a74d7f36", "title": "A recent essay I read", "url": "https://jonsimpson.ca/a-recent-essay-i-read/", "published_at": "2013-11-19T12:18:51+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a7fe4e82", "title": "Building Eclipse C/C++ projects for 32-bit on a 64-bit system", "url": "https://jonsimpson.ca/building-eclipse-cc-projects-for-32-bit-on-a-64-bit-system/", "published_at": "2013-11-07T00:27:48+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a8def597", "title": "Devnull as a Service (DaaS)", "url": "https://jonsimpson.ca/devnull-as-a-service-daas/", "published_at": "2013-10-30T22:41:12+00:00" }, { "id": "01a08790-5deb-701a-9a2e-91a8a98d63b3", "title": "Hello Again Internet", "url": "https://jonsimpson.ca/hello-again-internet/", "published_at": "2013-10-30T21:01:51+00:00" } ] posts Claim your blog
Back to jonsimpson.ca
Blog · corpus.blog/blogs/jonsimpson.ca/posts

jonsimpson.ca

jonsimpson.ca

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013