#+TITLE: Jade Michael Thornton's journal #+NICK: thornjad #+DESCRIPTION: Engineering manager and software engineer. Emacs, Angular, Python, weather nerd. #+LINK: https://jmthornton.net #+LANGUAGE: en # # # # ▗▄▖ ▗▄▄▖ ▗▄▄▖ ▗▄▄▖ ▗▄▖ ▗▄▄▖▗▄▄▄▖ ▗▄▖ ▗▖ # ▐▌ ▐▌▐▌ ▐▌▐▌ ▐▌ ▐▌ ▐▌▐▌ █ ▐▌ ▐▌▐▌ # ▐▌ ▐▌▐▛▀▚▖▐▌▝▜▌ ▝▀▚▖▐▌ ▐▌▐▌ █ ▐▛▀▜▌▐▌ # ▝▚▄▞▘▐▌ ▐▌▝▚▄▞▘ ▗▄▄▞▘▝▚▄▞▘▝▚▄▄▖▗▄█▄▖▐▌ ▐▌▐▙▄▄▖ # # # Org Social is a decentralized social network # that runs on an Org Mode file over HTTP. # # Learn more about Org Social: https://github.com/tanrax/org-social # * Posts ** 2016-03-28T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/switch-caps-esc :END: The standard QWERTY keyboard is great in a lot of ways and for a lot of uses. My current keyboard has been with me for years and I know it well, but if I could change the locations of a couple keys, I would. And naturally, that's what I did. ** 2016-10-26T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/protonmail :END: ProtonMail is the world's largest, most user-friendly open source secure email service, developed by CERN and MIT scientists and protected under Swiss privacy law. It brings email privacy back to the people while still maintaining a fantastic user experience characteristic of the first-class email service it is. ** 2016-11-19T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/combine-excel :END: A quick VBA subroutine for combining multiple Excel workbooks into a single workbook, making ingestion into Tableau easier. ** 2016-12-14T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/websitetimelapse :END: Jade creates a simple website from scratch using the Bootstrap framework. ** 2017-02-09T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/vero-zsh-theme :END: Announcing the release of Vero, a simple and informative theme for Zsh with git status, version managers, and more. ** 2017-02-27T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/thunderbird-ddg :END: For several dwindling reasons, DuckDuckGo can still be tricky to add to some services despite being the default search engine for several browsers. A couple years ago, Mozilla broke the old method of adding DuckDuckGo to the settings. They neglected to update their documentation, so here's a little for you. ** 2017-09-27T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/duplicated-ids :END: Duplicated IDs occur both intentionally and not, so what happens when a browser tries to render them? ** 2017-09-29T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/ecmascript2017 :END: Two years ago, ES6 gave a massive update to the already powerful ECMAScript standard. This year's release, ECMAScript 2017, provides several new features and changes. Let's take a look. ** 2017-10-13T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/array-removeelement :END: A new Javascript function to remove any element from an Array in an intuitive way, with support for negative indexing. ** 2018-02-04T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/xmrstakcompile :END: After many errors and failures, I found a method to successfully compile the xmr-stak unified XMR miner with CUDA support ** 2018-05-08T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/clearnightretro :END: Introducing a new dark, relaxed retro theme for the Atom text editor ** 2019-01-20T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/cmdline-fork :END: A fork of the TCL cmdline package that fixes a bug preventing usage in non-terminal contexts by removing the dependency on argv0. ** 2019-11-23T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/http-server-v012 :END: A preview of upcoming features in http-server v0.12, including Brotli compression, configuration files, and improved error handling. ** 2020-04-10T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/tcl-weird :END: A collection of weird TCL edge cases and gotchas I've encountered while working at FlightAware. ** 2020-05-03T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/tmux-known-socket :END: Using a known, shared SSH socket to enable agent forwarding through an existing tmux session ** 2020-08-10T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/tcl-paradigms :END: Understanding the fundamental differences between TCL's associative arrays and dictionaries, and when to use each. ** 2020-08-15T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/jira-commit-msg :END: When your git branch name contains an issue number (e.g. from Jira), automatically format git commit messages with the issue number at the end ** 2020-10-12T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/steam-corrupt-update-files :END: How to fix the annoying error when downloading or updating some Steam games, which reports the error 'Corrupt Update Files' ** 2020-11-01T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/git-submodule-deinit :END: A quick reminder of how to remove a Git submodule, because I always forget ** 2021-04-18T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/clean-arch-wumpus :END: Uncle Bob ignores his own advice when considering the "Main" component, but we can improve on his thoughts and learn from them ** 2022-04-21T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/emacs-project-override :END: A short function to override what project.el thinks your project root is with a hidden file ** 2023-05-07T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/fav-lesser-known-packages :END: A few of my favorite lesser-known Emacs packages which don't usually make the top lists ** 2023-06-01T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/snyk-ls-emacs :END: Setting up the Snyk Language Server for use in Emacs by defining a custom server connection in LSP Mode ** 2023-11-11T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/bug-posts :END: A modest list of interesting blog posts I've come across containing tech mystery stories exploring how a bug or mistake or other problem came about, how it was discovered, how it was fixed, and maybe some lessons to learn. ** 2024-01-17T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/consult-line-isearch-history :END: Adding the latest consult-line search term to isearch history for easy search continuation ** 2024-03-18T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/org-roam-created-modified-dates :END: Enhancing Org-roam nodes with auto-updating created and modified properties. ** 2025-05-11T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/walden-and-bdote :END: Sharing one of my favorite college papers, in which I contrasted Henry David Thoreau's celebrated individual communion with land against the Dakota's collective kinship with Bdote and desperate resistance to dispossession, using this to point to how American freedom was built on the silencing and exile of indigenous protest. ** 2025-06-04T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/dodd-road :END: A brief history of an early highway in the Twin Cities, MN: Captain Dodd's 1853 Minnesota pioneer wagon trail, its discontiguous modern alignments, and surviving gravel segments. ** 2026-02-19T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/ai-commit-authorship :END: AI coding agents have started adding themselves as commit co-authors by default, claiming a moral responsibility they cannot hold. ** 2026-02-25T12:00:00-0600 :PROPERTIES: :URL: https://jmthornton.net/blog/p/amp-it-up :END: Frank Slootman's Amp It Up gets some things right about standards and focus, but its war metaphors and urgency obsession miss how good work actually happens. ** 2026-03-29T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/cloudflare-tempest-forwarder :END: Porting a Google Apps Script Tempest weather station forwarder to Cloudflare Workers to push readings to CWOP, Weather Underground, PWSWeather and Windy, and using it as an experiment in agent-driven development. ** 2026-04-07T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/stormscope :END: An open-source MCP server that gives AI assistants access to real-time US weather data from seven sources, enabling grounded meteorological reasoning instead of hallucinated forecasts. ** 2026-06-04T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/dakota-war-patience-ran-out :END: The first of a three-part history of the Dakota War of 1862: how broken treaties, fraudulent translations, and a winter of starvation brought the Dakota to the night they chose war. ** 2026-06-04T12:01:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/dakota-war-six-weeks :END: The second of a three-part history of the Dakota War of 1862: six weeks of fighting along the Minnesota River valley, from the first attacks to the Dakota surrender at Camp Release. ** 2026-06-04T12:02:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/dakota-war-reckoning :END: The last of a three-part history of the Dakota War of 1862: the military tribunals, the largest mass execution in American history, and the exile of the Dakota people from Minnesota. ** 2026-08-08T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/kant-do-that :END: Responsibility for AI systems means little without informed agency, and the industry's pattern of opacity around training data, environmental costs, and system prompts is a structural failure to sustain it. ** 2026-08-09T13:20:00-0500 :PROPERTIES: :END: Hello, org-social. First post from jmthornton.net. I love this idea. ** 2026-08-15T12:00:00-0500 :PROPERTIES: :URL: https://jmthornton.net/blog/p/raildriver-linux :END: Getting my RailDriver train sim console working through Proton on Linux so that Train Sim World 6 can read it as a native controller.