Elijah Potter's Blog
The blog of software engineer Elijah Potter
- Posts
- 270 from 2 Jun 2021 to 30 Oct 2026
- Posting
- weekly (121 in the last year)
- Kind
- personal blog
- Feed
- https://elijahpotter.dev/rss.xml
2026 101
- Hermes Is Actually Good
- A New Inference Engine
- A New Inference EnginePublished on 10/23/26For the past few months, I’ve been dedicating enormous swaths of my time to training a small language model, working from basic principles. The goal is to provide a complete overhaul of how Harper does its grammar checking.
- Everything Is a Leaky Abstraction
- Everything Is a Leaky AbstractionPublished on 10/16/26*in machine learning.
- A Simple Overview of LLM Sampling Methods
- A Simple Overview of LLM Sampling MethodsPublished on 10/9/26Almost all the discourse around LLMs today is centered on the models themselves. Today, I want to introduce you to an entirely new world.
- The Best of Om Malik
- The Best of Om MalikPublished on 10/2/26Although they appear to merely be words on a page, I often feel that Om’s work almost always carries a rare introspective insight. Perhaps it’s truth. Perhaps it’s something else.
- Proxmox Ethernet Failing After Upgrade
- Proxmox Ethernet Failing After UpgradePublished on 9/27/26After upgrading my pair of Lenovo M720q machines from Proxmox VE 8 to 9, they randomly started dropping their connection to the internet. Here’s how I fixed it.
- Skill Acquisition
- Harper Architecture Talk
- Skill AcquisitionPublished on 9/25/26I think that the Dreyfus Model stands to be a well-suited framework through which we can analyze certain aspects of the always-evolving profession of software engineering.
- Harper Architecture TalkPublished on 9/25/26Earlier this week, I was asked to give a talk to the chapter of the Association of Computing Machinery at Mines.
- A Better Popup
- A Better PopupPublished on 9/18/26Arguably the most important part of any Harper integration is the popup window.
- Useful Things Agents Can Do That Are Not Writing Code
- Useful Things Agents Can Do That Are Not Writing CodePublished on 9/11/26This article is not about vibe coding. In fact, this article is about all the things you can do with an AI agent that are separate from writing code.
- Bytes Are Not Big Enough
- Bytes Are Not Big EnoughPublished on 9/4/26I am trying to create a strong and small base model. A model that can semantically understand small passages of text, which we can then retrain to do a variety of different things.
- Harper for Windows Is Available for Download
- Harper for Windows Is Available for DownloadPublished on 8/28/26After several weeks of work, the Harper Desktop app for Windows is finally ready for download.
- Stacking Pull Requests
- Harper for Windows
- Stacking Pull RequestsPublished on 8/21/26I tried out GitHub’s PR stacking functionality for the first time. It’s amazing.
- Harper for WindowsPublished on 8/21/26I am pleased to say, that Harper Desktop for Windows is coming along beautifully. To keep myself accountable, I am setting a hard beta launch date of August 28th.
- Notes on Talkify
- Notes on TalkifyPublished on 8/17/26Research into the Talkify app, and whether speech-to-text might be a valuable addition to Harper.
- Do That Which Makes Your Life Easy
- Do That Which Makes Your Life EasyPublished on 8/14/26Why it might work well to make decisions (while building or maintaining software) in the interest of your quality of life?
- Do Not Talk About Large Language Models
- Do Not Talk About Large Language ModelsPublished on 8/13/26Is this post hypocritical? It sure is.
- Harper's Policy on Agent PRsPublished on 3/23/26Keep things brief, stay grounded, and be honest.
- Adios Jeff Dean
- Adios Jeff DeanPublished on 8/10/26Jeff Dean is leaving Google. Long live Demis Hassabis.
- The Case for Windows
- The Case for WindowsPublished on 7/31/26Despite all my complaining about Windows Update and how bloated their software tends to be, Microsoft has successfully convinced most of the world to use Windows.
- Harper on Better Stack
- Harper on Better StackPublished on 7/27/26It was a nice weekend treat to see Harper featured on Better Stack’s YouTube channel.
- Getting Real
- Getting RealPublished on 7/24/26I believe that living a fulfilling life is hard, so having one takes effort.
- Harper's Testing Strategy
- Harper's Testing StrategyPublished on 7/17/26Just a quick shout-out.
- Dealing with Flaky Tests
- Dealing with Flaky TestsPublished on 7/10/26A flaky test is any test for your code that only sometimes fails.
- Neoengineers
- Slop Paralysis
- Slop Paralysis★Published on 6/24/26A complete or partial loss of function while reviewing the output of a coding agent.
- What Was Radical Speed Month?
- What Was Radical Speed Month?Published on 6/23/26A bit of history.
- Harper's First Committer
- Zen and the Art of Open Source Maintenance
- Zen and the Art of Open Source MaintenancePublished on 6/12/26While reading an old — unpublished, for now — essay of mine, I was reminded of the wonderful book by Robert Persig titled Zen and the Art of Motorcycle Maintenance. The book serves to help anyone in any profession, but I think
- Get Rid of It
- Get Rid of ItPublished on 6/5/26‘Delete any part or process you can. You may have to add them back later. In fact, if you do not end up adding back at least 10% of them, then you didn’t delete enough.’
- Hacker News sans AI
- Hacker News sans AI★Published on 6/2/26I like HackerNews, but I don’t love that so much of it has turned into discussion of a single topic: AI. This is a version of HackerNews, filtered to remove any article focusing on AI. Refreshes about every ten minutes.
- Wrapping up Harper Desktop
- Wrapping up Harper DesktopPublished on 5/28/26Radical Speed Month held an impetus to experiment, and experiment we did.
- Harper Desktop
- Harper DesktopPublished on 5/22/26Harper Desktop is finally available for install.
- Good Agents
- Good AgentsPublished on 5/15/26The spirit of Radical Speed Month includes an impetus to experiment. So experiment I have.
- A Quick Update on Harper Desktop
- A Quick Update on Harper DesktopPublished on 5/8/26This week of Radical Speed Month has been dedicated to putting the disparate components of the Harper Desktop App together.
- Product Product Product
- Product Product ProductPublished on 5/1/26Working this past week with Jason Adams has given me a brand-new appreciation for the category of ideas that we engineers call ‘product.’
- Building a Harper Desktop App
- Building a Harper Desktop AppPublished on 4/15/26We’re dedicating the next month to just one thing: getting a Harper desktop app shipped.
- We Are in This Together
- We Are in This TogetherPublished on 4/13/26Harper’s mission is to encourage and assist people with communicating their complex ideas and emotions.
- Harper 2.0
- Harper 2.0Published on 4/9/26We’re finally releasing Harper 2.0.
- Outcome over Process
- Outcome over ProcessPublished on 4/3/26I don’t feel that these performative actions have resulted in any real productivity gains. I realize now, that this is because I was focusing on the wrong thing.
- When to Use an Agent
- When to Use an AgentPublished on 3/27/26There are times where it is prudent to use an AI agent (like Codex) aggressively. There are other times where they should be avoided like the plague. The question of into which bucket a particular endeavor falls is difficult to answer.
- Harper's Policy on Agent PRs
- My Superpower
- My SuperpowerPublished on 3/14/26It was not until relatively late in my academic career when I realized my thirst for the written word had given me a superpower.
- Do Not Write with an LLM
- Do Not Write with an LLM★Published on 3/2/26I have been seeing an increasingly prevalent trend of people showing up in online spaces flaunting that they are writing with the assistance of AI. They seem to be proud of this. They shouldn’t be.
- Refactoring Slop
- Refactoring SlopPublished on 2/20/26There are a gazillion guides out there about the various techniques you can use to improve the quality of AI generated code. Instead, I want to talk about some more generally applicable ideas that I’ve found especially useful in the age of AI.
- LaTeX Support Is Coming to Harper
- LaTeX Support Is Coming to HarperPublished on 2/18/26It’s been a long time coming, which is why I’m thrilled to say that Harper will soon support LaTeX.
- Building Software That Is Good for Humans
- Building Software That Is Good for HumansPublished on 2/9/26Why does so much of the software we use feel harmful?
- Training a Small Language Model
- Training a Small Language ModelPublished on 2/3/26I’ve built and trained an extremely small language model from scratch, specifically designed for short-form sentence rewriting tasks that are highly resource constrained.
- Writing in Visual Studio Code
- Writing in Visual Studio CodePublished on 1/27/26People are using Harper for writing prose in Visual Studio Code.
- Finding the Active Voice
- Finding the Active VoicePublished on 1/26/26How should we go about helping our users with their active voice?
- Linkarzu: Harper Is Getting Better
- Linkarzu: Harper Is Getting BetterPublished on 1/23/26Linkarzu’s recent video about Harper is a great primer on what it can do.
- Imagine a Weir Studio
- Imagine a Weir StudioPublished on 1/16/26The Weir Studio comes from a pretty simple idea. We want to give people all the tooling necessary to build and distribute Weir rules without any upfront cost.
- Imagine a Weir Marketplace
- Imagine a Weir MarketplacePublished on 1/9/26I’ve come to the realization that there is a high degree of specialization among academic fields. If we embrace this specialization through customization, we could gain an advantage over other grammar checkers. That’s all to say: We wan
2025 128
- Someone Remixed Tatum
- Someone Remixed TatumPublished on 12/30/25A quick shout-out.
- Projects Using Harper
- Generating Weir Code with LLMs
- Generating Weir Code with LLMsPublished on 12/19/25Some experimentation shows that LLMs are extremely effective at understanding and generating DSL code.
- Updates on the Weir Language
- Building the Weir Language
- Building the Weir LanguagePublished on 12/11/25A domain-specific language for describing patterns in natural language.
- Harper Can Apply Titlecase
- Harper Can Apply TitlecasePublished on 12/5/25In case you didn’t know: Harper can convert text to title case! This has been around for a long time, but we haven’t really talked about it publicly.
- Harper Turns 1.0 Today
- Harper Turns 1.0 TodayPublished on 11/28/25Harper finally releases a 1.0.0
- Quality Requires Visual Design
- Quality Requires Visual DesignPublished on 11/21/25My recent work to improve Harper’s visual design.
- Re: Collaboration Sucks
- Re: Collaboration SucksPublished on 11/18/25Why collaboration still matters when kept intentional.
- Improving Rust Compile Times by 71 Percent
- Improving Rust Compile Times by 71 PercentPublished on 11/6/25If you maintain or work on a project in any compiled language, particularly a language that is known for having a slow compiler, I believe it is critical to regularly schedule time to do an analysis of your build process
- Finding Signal Through the Noise
- Avoid Complexity
- Avoid ComplexityPublished on 10/17/25For as long as I can remember, I’ve told people that the real challenge of software engineering isn’t writing code. It isn’t documentation or CI pipelines either. No, the biggest challenge in software engineering is managing complexity.
- Using Codex Is a Lot like Baking
- Using Codex Is a Lot like BakingPublished on 10/6/25The biggest problem with AI programming today is not what I expected a few years ago. I truly didn’t believe they would be able to do any economically valuable work.
- My Writing Environment as a Software Engineer
- My Writing Environment as a Software EngineerPublished on 10/5/25Writing is one of life’s greater joys. It’s a mental workout that often brings me a level of clarity that is hard to find elsewhere.
- Trying out the Helium Browser
- Trying out the Helium BrowserPublished on 10/4/25I’ve decided to give the Helium browser a shot. So far, I’m impressed!
- Brainstorming a Harper Service
- Brainstorming a Harper ServicePublished on 9/29/25SaaS products are all the rage these days.
- Improving Harper for Old Laptops
- Improving Harper for Old LaptopsPublished on 9/19/25The most common complaint I’ve been hearing as of late relates to Harper’s performance. I’ve been told that Harper has gotten slow. As it turns out, the problem wasn’t the actual grammar checking, it was rendering the highlights on t
- Demos Make Life Worth Living
- Demos Make Life Worth LivingPublished on 9/18/25The initial goal of any greenfield project of mine is to build a working demo.
- What We Can Learn from New York City
- What We Can Learn from New York CityPublished on 9/13/25I’ve been told New York is an acquired taste. I can see why they might say that.
- The Chrome Extension Supersedes the WordPress Plugin
- The Chrome Extension Supersedes the WordPress PluginPublished on 9/10/25Several months ago, I announced the initial version of the Harper WordPress plugin. In the interest of those still using it, I’d like to give y’all an update.
- I Spoke at WordCamp U.S. in 2025
- I Spoke at WordCamp U.S. in 2025Published on 9/3/25It was my first WordCamp and first conference talk, so I was naturally nervous.
- The Books I Have Read Since July 2025
- The Books I Have Read Since July 2025Published on 9/1/25I reflect about the recent books I have read and the things I (and you) can learn from them.
- Harper Evolves
- Harper EvolvesPublished on 8/21/25I want you to read that title as literally as possible. Harper is now capable of evolution.
- The Art of the Talk
- The Art of the TalkPublished on 8/15/25I’ve given dozens of talks over the years, yet I still feel like I have much to learn about public speaking. Preparing for my upcoming talk at WordCamp US has me stopping to reflect on what I already know.
- Harper in the News
- Harper in the NewsPublished on 8/12/25I’ve got some exciting new work I’m preparing to discuss later this week (hopefully). In the meantime, I’ve collected some recent sightings of Harper in the wild.
- Better Interfaces for Grammar Checking
- Better Interfaces for Grammar CheckingPublished on 7/28/25Grammar checking can be cumbersome, especially when its sloth gets in the way of your thinking. That’s part of why so many prefer Harper over Grammarly or LanguageTool.
- Speaking at WordCamp U.S. in 2025
- Speaking at WordCamp U.S. in 2025Published on 7/25/25I was recently encouraged to submit a talk proposal to the AI track at WordCamp US. I was more than happy to oblige, and to my surprise, I got in.
- Why I Talk to Myself
- Why I Talk to Myself★Published on 7/21/25It’s not easy, but I think it’s one of the best habits I’ve ever built.
- Reflections on Expression Rules
- Reflections on Expression RulesPublished on 7/18/25Expression rules were designed for a certain kind of error. But there are many grammatical or layout rules which hard difficult or downright impossible to define with an expression.
- Training a Chunker with Burn
- Training a Chunker with BurnPublished on 7/16/25The end result is a portable neural network that achieves ~95% accuracy on grammatically correct text.
- Writing Good Documentation
- Writing Good DocumentationPublished on 7/15/25In an age where large language models have exceptional context windows, it’s easy to fall into the trap of believing a system is simpler than it is.
- Writing a Grammatical Rule for Harper
- Writing a Phrase Correction for Harper
- Writing an Expression Rule for Harper
- Writing a Grammatical Rule for HarperPublished on 7/9/25This article introduces contributing to the open-source grammar checker Harper by writing grammatical rules, outlining different approaches for various skill levels.
- Writing a Phrase Correction for HarperPublished on 7/9/25This post explains how to add simple phrase corrections to the grammar checker Harper—a beginner-friendly way to address common, context-independent errors and contribute to its grammar checking capabilities.
- Writing an Expression Rule for HarperPublished on 7/9/25This article guides contributors on writing a Harper expression-based rule. It covers defining the rule’s expression, writing test cases, and implementing the match_to_lint function for user suggestions.
- Adding a Programming Language to Harper
- Adding a Programming Language to HarperPublished on 7/7/25A guide for adding a new programming language to the Harper language server.
- Local-First Software Is Easier to Scale
- Local-First Software Is Easier to Scale★Published on 7/4/25The title of this post is somewhat misleading. Local-first software rarely needs to be scaled at all.
- Code Ages like Milk
- Code Ages like MilkPublished on 6/27/25Failing to account for this reality can slow down development and dissuade contributors from sticking around.
- The Books I Have Read Since April 2025
- The Books I Have Read Since April 2025Published on 6/22/25It has been a slow couple of months for my reading habit. Although, now that I’ve said that out loud, I realize I say that every time.
- Harper for Firefox
- Harper for FirefoxPublished on 6/20/25There’s a great deal of overlap between those who use Harper and those who use Firefox.
- Refactoring More and Faster
- Refactoring More and FasterPublished on 6/17/25You know—that awful (but strangely satisfying) space where the majority of your commits are small pedantic edits that don’t change the end-user-experience at all?
- More Transformation-Based Learning
- More Transformation-Based LearningPublished on 6/13/25The most common type of machine learning out there takes the form of some kind of neural network. Inspired by how our own brains work, these systems act as function approximations. They are great, but they come with a few key pitfalls.
- Transformation-Based Learning
- Transformation-Based LearningPublished on 6/3/25Harper is currently undergoing some pretty radical changes when it comes to its language analysis. These improvements will improve the output of our existing rule engine, in addition to making entirely new corrections possible.
- Harper for Firefox Through Spellbolt
- Quality Is the Most Important Metric
- Harper for Firefox Through SpellboltPublished on 5/19/25SpellBolt is a Firefox extension that delivers Harper’s fantastic grammar checking straight into your Firefox browser.
- Quality Is the Most Important MetricPublished on 5/19/25After receiving some feedback related to the suggestion box’s visual unpleasantness and difficulty to understand intuitively, I’ve started making some modifications. Nothing drastic—I don’t want to confuse existing users.
- Integration Testing Thousands of Sites with Playwright
- Integration Testing Thousands of Sites with PlaywrightPublished on 5/16/25There are a great variety text editors on the web, each used in a different context. That’s a beautiful thing, but unfortunately our users expect Harper to work in all of these places seamlessly.
- Bypassing Hallucinations in Llms
- Bypassing Hallucinations in LlmsPublished on 5/14/25If there is one thing o3 is useful for, it’s finding canonical documentation for complex subjects.
- Putting Harper in Your Browser
- Putting Harper in Your BrowserPublished on 5/2/25When our users install Harper, they should expect it to work anywhere they do.
- Always Think of the Hook First
- Always Think of the Hook FirstPublished on 5/1/25Spend more time on the introduction than anything else.
- ChatGPT for the Moms
- Status of the Harper Chrome Extension
- ChatGPT for the MomsPublished on 4/23/25Advice you can give your mom (or other nontechnical person) for how to use ChatGPT wisely and effectively.
- Status of the Harper Chrome ExtensionPublished on 4/23/25An update on the long-awaited Harper Chrome extension, its current state, and what to expect next.
- Photography as Meditation
- Photography as MeditationPublished on 4/19/25Reflecting on the clarity photography brings.
- The Art of Exception
- The Art of ExceptionPublished on 4/18/25Reflecting on lessons learned from handling English edge cases in developing Harper’s Chrome extension.
- On Linkarzu
- On LinkarzuPublished on 4/17/25I was honored to be a guest on Linkarzu’s YouTube series.
- Footguns of the Rust Webassembly Target
- Footguns of the Rust Webassembly TargetPublished on 4/8/25Four years in Rust + WebAssembly taught me these 3 lethal footguns—don’t learn them the hard way.
- The Books I Read in February and March 2025
- The Books I Read in February and March 2025Published on 4/5/25Two months does not mean twice as many.
- The One Hard Thing
- The One Hard ThingPublished on 3/27/25Reach further each day. The minimum effective dose.
- 3 Traits of Good Test Suites
- 3 Traits of Good Test SuitesPublished on 3/23/25Don’t believe the clickbait.
- LLM Assisted Fuzzing
- LLM Assisted FuzzingPublished on 3/21/25A new approach to false-positives.
- Harper Is in Cursor and Visual Studio Code
- Harper Is in Cursor and Visual Studio CodePublished on 3/19/25A boon if you comment your code.
- Never Wait
- Never WaitPublished on 3/1/25Your code is always welcome.
- Prompting Large Language Models in Bash Scripts
- Prompting Large Language Models in Bash ScriptsPublished on 2/26/25Of course it’s that easy.
- A Harper Record
- A Harper RecordPublished on 2/6/25🎉
- The Books I Read in January 2025
- The Books I Read in January 2025Published on 2/4/25Spoiler: there aren’t many.
- Notifications
- The Three Steps to an Apology
- The Three Steps to an ApologyPublished on 1/30/25Wisdom from my grandmother.
- The Best 25 Bucks I Ever Spent
- The Best 25 Bucks I Ever SpentPublished on 1/13/25Bonus: why you need to do it too.
2024 20
- Why You Need Sccache
- Why You Need SccachePublished on 12/29/24You might not actually need it.
- The Best Books I Read This Year
- The Best Books I Read This YearPublished on 12/21/24I might be starting to sound like a broken record.
- For the Love of Iframes
- For the Love of IframesPublished on 10/13/24Chronically underrated, chronically over-prescribed
- Naming Harper
- Naming HarperPublished on 8/6/24Where did Harper come from?
- The Simplest Neovim Markdown Setup
- The Simplest Neovim Markdown SetupPublished on 7/13/24How I preview my Markdown quickly and reliably.
- What Blasterhacks Taught Me About Leadership
- What Blasterhacks Taught Me About LeadershipPublished on 4/19/24It’s easier than you think.
- The Optimal Workspace
- The Optimal WorkspacePublished on 3/29/24How I intend to live better.
- Stupid Simple Spell Check
- Stupid Simple Spell CheckPublished on 3/4/24It almost feels wrong. Maybe it is.
- Building a Software Render Engine from Scratch
- Markov Chains Are the Original Language Models
- Markov Chains Are the Original Language Models★Published on 1/31/24Back in my day, we used math for autocomplete.
- Building a Software Render Engine from ScratchPublished on 1/31/24How I built a software render engine from scratch, and you can too.
2023 10
- The Easiest Way to Run Llms Locally
- The Easiest Way to Run Llms LocallyPublished on 12/18/23It saved me enough time, I had some to share about it.
- Do Not Type Your Notes
- Do Not Type Your Notes★Published on 10/29/23It didn’t work for me, and if you reading this, it probably won’t work for you either.
- Quantifying Hope on a Global Scale
- Quantifying Hope on a Global ScalePublished on 10/20/23An experiment on how to live in a seemingly hopeless world.
- The Climate Change Progress Bar
- The Climate Change Progress BarPublished on 10/12/23A proposal.
- A Case for Procrastination
- A Case for ProcrastinationPublished on 9/27/23Or: why doing things at the last minute actually saves time. I talk about the importance of shockingly fast iteration cycles and lean manufacturing.
2022 8
- I Designed My Own Pen Plotter
- I Designed My Own Pen PlotterPublished on 10/18/22In which I go through the process of designing, building, and testing a vector graphic pen plotter.
- 3 Awesome Ways Computers Generate Randomness
- 3 Awesome Ways Computers Generate RandomnessPublished on 3/4/22We look at several interesting ways computers generate random numbers. It may fascinate you to know that some methods are not truly random, but only an approximate.
- Build a Wordle Solver Using Rust
- Build a Wordle Solver Using RustPublished on 3/1/22I built a Wordle solver in Rust to beat my grandma. Follow the journey of how I did, and how I failed.
- Why Rust May Be More Attractive than JavaScript
- Why Rust May Be More Attractive than JavaScriptPublished on 2/25/22A key part of Rust is far better than what JavaScript has to offer.