41554 blogs · [ { "id": "01a0878e-7cae-727d-a84d-23f182afc73b", "title": "Getting RailDriver to work on Linux", "url": "https://jmthornton.net/blog/p/raildriver-linux", "published_at": "2026-08-15T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17a56020c", "title": "Responsibility Without Informed Agency: Kant do That", "url": "https://jmthornton.net/blog/p/kant-do-that", "published_at": "2026-08-08T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f179d02bfc", "title": "The Dakota War of 1862, Part Three: The Reckoning", "url": "https://jmthornton.net/blog/p/dakota-war-reckoning", "published_at": "2026-06-04T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17b285464", "title": "The Dakota War of 1862, Part Two: Six Weeks", "url": "https://jmthornton.net/blog/p/dakota-war-six-weeks", "published_at": "2026-06-04T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f180793e46", "title": "The Dakota War of 1862, Part One: When Patience Ran Out", "url": "https://jmthornton.net/blog/p/dakota-war-patience-ran-out", "published_at": "2026-06-04T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f178381792", "title": "StormScope: Giving Real-Time Weather Data to Your AI", "url": "https://jmthornton.net/blog/p/stormscope", "published_at": "2026-04-07T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f170c9cf3f", "title": "Weather Station Forwarder on Cloudflare Workers", "url": "https://jmthornton.net/blog/p/cloudflare-tempest-forwarder", "published_at": "2026-03-29T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17479c073", "title": "Business Is Not War", "url": "https://jmthornton.net/blog/p/amp-it-up", "published_at": "2026-02-25T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1701681d9", "title": "Your AI Is Not Your Co-Author", "url": "https://jmthornton.net/blog/p/ai-commit-authorship", "published_at": "2026-02-19T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17a3bb10a", "title": "Why is Dodd Road Discontiguous?", "url": "https://jmthornton.net/blog/p/dodd-road", "published_at": "2025-06-04T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1774add96", "title": "Walden and Bdote: Land, Protest, and the Forgotten Cost of American Freedom", "url": "https://jmthornton.net/blog/p/walden-and-bdote", "published_at": "2025-05-11T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1835cfb35", "title": "Org-roam: Automatically Set Node Created and Modified Dates", "url": "https://jmthornton.net/blog/p/org-roam-created-modified-dates", "published_at": "2024-03-18T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f172d6ccab", "title": "Connecting consult-line with isearch history", "url": "https://jmthornton.net/blog/p/consult-line-isearch-history", "published_at": "2024-01-17T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f173a116a7", "title": "A list of the best bug write-ups I've read", "url": "https://jmthornton.net/blog/p/bug-posts", "published_at": "2023-11-11T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f18272bee3", "title": "Snyk Language Server in Emacs", "url": "https://jmthornton.net/blog/p/snyk-ls-emacs", "published_at": "2023-06-01T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17f69ebc8", "title": "A Few Lesser-Known Emacs Packages", "url": "https://jmthornton.net/blog/p/fav-lesser-known-packages", "published_at": "2023-05-07T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17b982f8a", "title": "Overriding project.el project root in Emacs", "url": "https://jmthornton.net/blog/p/emacs-project-override", "published_at": "2022-04-21T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f170ed086b", "title": "Halfway on Main: Thoughts on Clean Architecture", "url": "https://jmthornton.net/blog/p/clean-arch-wumpus", "published_at": "2021-04-18T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f182f8cf51", "title": "Remove (deinit) a Git submodule", "url": "https://jmthornton.net/blog/p/git-submodule-deinit", "published_at": "2020-11-01T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17d65b695", "title": "Fix Steam 'Corrupt Update Files'", "url": "https://jmthornton.net/blog/p/steam-corrupt-update-files", "published_at": "2020-10-12T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1798fbe67", "title": "Automatically add Jira issue to commit message from branch name", "url": "https://jmthornton.net/blog/p/jira-commit-msg", "published_at": "2020-08-15T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17c3f892c", "title": "Data Paradigms in TCL: Associative Arrays vs Dictionaries", "url": "https://jmthornton.net/blog/p/tcl-paradigms", "published_at": "2020-08-10T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17d181e0f", "title": "A Known SSH Socket for Tmux", "url": "https://jmthornton.net/blog/p/tmux-known-socket", "published_at": "2020-05-03T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f175bdf9e2", "title": "TCL Wat", "url": "https://jmthornton.net/blog/p/tcl-weird", "published_at": "2020-04-10T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f181663edc", "title": "What's new in http-server v0.12?", "url": "https://jmthornton.net/blog/p/http-server-v012", "published_at": "2019-11-23T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1716cf556", "title": "Fixing cmdline for Non-Terminal Usage", "url": "https://jmthornton.net/blog/p/cmdline-fork", "published_at": "2019-01-20T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f174f922ab", "title": "ClearNight Retro", "url": "https://jmthornton.net/blog/p/clearnightretro", "published_at": "2018-05-08T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1766e26b1", "title": "I successfully compiled the xmr-stak miner with CUDA", "url": "https://jmthornton.net/blog/p/xmrstakcompile", "published_at": "2018-02-04T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1789eb810", "title": "The Internet worm of 1988: A Tour of the Worm", "url": "https://jmthornton.net/blog/p/worm-of-1988", "published_at": "2017-10-31T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17249c7ab", "title": "Remove an element from an Array in Javascript", "url": "https://jmthornton.net/blog/p/array-removeelement", "published_at": "2017-10-13T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17c7bb747", "title": "What's new in ECMAScript 2017", "url": "https://jmthornton.net/blog/p/ecmascript2017", "published_at": "2017-09-29T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17eb819ec", "title": "Duplicate IDs in HTML: What would happen?", "url": "https://jmthornton.net/blog/p/duplicated-ids", "published_at": "2017-09-27T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17e247921", "title": "Set DuckDuckGo as default search in Thunderbird", "url": "https://jmthornton.net/blog/p/thunderbird-ddg", "published_at": "2017-02-27T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f18249aab0", "title": "Vero: A Simple Zsh Theme", "url": "https://jmthornton.net/blog/p/vero-zsh-theme", "published_at": "2017-02-09T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f17adcc459", "title": "Coding a website from scratch - a timelapse", "url": "https://jmthornton.net/blog/p/websitetimelapse", "published_at": "2016-12-14T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f171daeaa3", "title": "Combine multiple Excel workbooks into sheets in a single workbook", "url": "https://jmthornton.net/blog/p/combine-excel", "published_at": "2016-11-19T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f18119416c", "title": "Protonmail - Why I switched and you should too", "url": "https://jmthornton.net/blog/p/protonmail", "published_at": "2016-10-26T15:00:00+00:00" }, { "id": "01a0878e-7cae-727d-a84d-23f1800004e0", "title": "Switch Caps Lock and Escape (Linux)", "url": "https://jmthornton.net/blog/p/switch-caps-esc", "published_at": "2016-03-28T15:00:00+00:00" } ] posts Claim your blog
Back to jmthornton.net
Blog · corpus.blog/blogs/jmthornton.net/posts

jmthornton.net

jmthornton.net

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016