Do That Which Makes Your Life Easy I have long been a fan of DHH and 37signals’ various technical and social accomplishments. With a relatively small team, they have laid the foundation for a number of successful companies and maintained a community of extremely intelligent engineers who work with it. I have long followed their work and have found a wealth of success…
Do Not Talk About Large Language Models Plainly, they are boring. It’s all anyone ever talks about anymore. AI this and AI that . It’s all the same discussion. People read something online, twist it into their own flavor of opinion, and regurgitate it to the masses or for their boss. It’s tiring. I do it too. I talk about LLMs a LOT . It is a part of my job to know about them and to…
Adios Jeff Dean It is the end of an era. Jeff Dean is leaving Google. Long live Demis Hassabis. I have long looked up to Jeff Dean as a beacon of engineering excellence. Hearing that he will no longer be a driving force at Google is somewhat saddening, but I am quite excited to see what he does at Discovery Loop. In celebration, I suggest you read through this compiled list of…
The Case for Windows Why Adding Windows Support to Harper Desktop Is Sensible Despite 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. At the time of writing, 72% of people with a desktop computer have Windows on it. “ Erm, actually Elijah, that’s not how market share works.”…
Harper on Better Stack It was a nice weekend treat to see Harper featured on Better Stack’s YouTube channel. Even if the script has more than a few Claudisms , it is awesome whenever Harper gets this kind of attention.
Getting Real While I am on PTO (as I am right now), my mind rarely strays far from Harper. Perhaps you could call this “ poor work-life balance”, but I think otherwise. I believe that living a fulfilling life is hard, so having one takes effort. For me, part of having a fulfilling life is to strive for greatness. Harper has the potential to be great, and I am partly responsible for…
After spending a few days discussing and learning from Automattic’s Chief Quality Officer (Lance Willet), I’ve prepared a first draft of Harper’s testing strategy. I hope you all take a look. I am very interested in any and all feedback you may have.
Dealing with Flaky Tests For the past day or so, I have had my head down, tearing my hair out, trying to debug a significant block caused by many engineers’ arch nemesis: a flaky test. In my case, it’s actually been several flaky tests. A flaky test is any test for your code that only sometimes fails. It shows up when a part of your test relies on something non-deterministic.…
Neoengineers neoengineer - noun An individual, part of a resurgence, who embraces and respects the craft of engineering. Often enjoys solving hard problems. I was recently introduced to the term “ neoengineer” , whose definition you will find above and in the attached blog post. It tickled my brain in a rare way. For several years in a row, my New Year’s resolution was…
Slop Paralysis slop paralysis - noun A complete or partial loss of function while reviewing the output of a coding agent. Let me paint you a picture. You have an idea for product. It could be anything: A mobile app, a dashboard, or a script to automate your work. So, you sit down with your favorite LLM and describe your idea. Maybe you have a pretty good understanding of how…
What Was Radical Speed Month? While I was looking back through my archive of posts on this blog, I realized that I never concretely defined what Radical Speed Month was. I have talked about it a lot, but there is not any one spot I can point to and say “ Look there! That’s what RSM was!” This page will fill that void. I work at Automattic . We run a lot of products and host many services. I…
Andrew Dunbar Becomes Harper’s First Committer I am pleased to say, with much fanfare, that Andrew Dunbar (known by online moniker hippietrail ) is becoming Harper’s first committer. Andrew has been doing stellar work for the project for more than a year now. His work on our grammar engine has been phenomenal. Odds are, if you have opened a ticket on GitHub or dropped on comment on…
Zen and the Art of Open Source Maintenance This blog post will not be as long as I wish it to be. I do not have the time nor the patience at the moment to dive as deep into this subject as I feel the subject itself deserves. It also will not be as short as I wish it to be. It takes time to determine what is important and what is not. My hope is that by declaring this essay “…
Get Rid of It If you have not already, I highly recommend that you read Walter Isaacson’s biography of Elon Musk. It follows the billionaire’s stratospheric career from programming video games on an original Commodore VIC-20 to the acquisition of Twitter. While I do not agree with all of his practices or beliefs, I do think that some of his philosophies are extremely…
Hacker News, sans AI I like Hacker News, but I do not love that so much of it has turned into discussion of a single topic: AI . So, I have created my own version. A version of Hacker News, without AI . HNSansAI pulls from the official Hacker News API , looks through the content of each article, and discards any that mention a term related to “ AI ” . That includes stuff like: “…
Wrapping up Our Radical Speed Month I previously posted about our launch of Harper Desktop. If you have not read that already, I suggest you take a peek before reading forward here. For those caught unaware, Harper is a grammar checker designed to respect the fact that your writing should be yours. It is private by design, no matter where you decide to use it. Thousands of people…
Harper Desktop Is Available for Download Harper Desktop is finally available for download. It’s been about a month since Jason and I started work on it for Radical Speed Month . In that time, we have worked hard to create a meaningfully functional experience and it is available for download today . That said, it’s still early work. There are bound to be bugs and edge-cases we have not…
Good Agents for Developers The spirit of Radical Speed Month includes an impetus to experiment. So experiment I have. In particular, I have been trying two new coding agents: OpenCode and Pi . Both were interesting and taught me something new, but I only intend to continue using one of them. OpenCode OpenCode caught my eye for the very quality it’s named after: OpenCode is…
A Quick Update on Harper Desktop This week of Radical Speed Month has been dedicated to putting the disparate components of the Harper Desktop App together. In other words, we have been in what Shane Wighton would call “ integration hell”. Due to the constraints put in place by the operating system and our decision to use Tauri, Harper Desktop needed to be split into three main…
Product, Product, Product Working this past week with Jason Adams has given me a brand-new appreciation for the category of ideas that we engineers call “ product.” For a long time, I’ve discussed the difficult-to-define word “ Quality” and it’s importance to the success of software projects. To me, capital “ Q” Quality meant that a piece of software was fast, extensible, and…
Building a Harper Desktop App Harper is a grammar checker that makes sure that your writing is exactly that: yours . Today, we will be starting some new and hopefully awesome work towards that mission. Harper has long been available in Chrome, Firefox, Obsidian, and a gazillion other places. Knowing what extensions to install and how has been a source of confusion for too many of…
We Are in This Together Today, Jason Adams joined me and some of the other Automatticians based in the Denver area for a burrito. It’s a tradition we call Burrito Friday. Automatticians from a local area get together for laughs, chats, and burritos on some rare Fridays a few times a year. It’s a great way to stay connected in a distributed organization. Today marked the second such…
Harper 2.0 Hey all! We’re finally releasing Harper 2.0. Why? It isn’t because we have any new groundbreaking features in this release, because we don’t let major versioning stop us from pushing those out as soon as they’re ready. It’s because we have some breaking changes. The biggest one only applies to you if you consume harper.js . From now on, instead of importing your…
Outcome over Process For the past few weeks, I’ve been thinking about I can be more productive. In particular, I’ve been thinking about how I can eliminate waste to give myself time to work on things that matter. These efforts have been partially successful. I’ve found ways to speed up code review with an agent and improve the turnaround time on communication. I’ve been…
When (Not) to Use an Agent There 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. Anyone who says you should always or never use an LLM is oversimplifying the problem. Naturally, anything…
Harper’s Policy on PRs Authored by Agents A few weeks ago, I was invited to speak at my local chapter of the Association for Computing Machinery ( ACM ). Being on a college campus — in this case, the Colorado School of Mines — much of my audience were students. My presentation, which was about how open source software tends to outperform proprietary software in the marketplace…
My Superpower In high school, I was an insatiable consumer of science fiction. In hindsight, it is unbelievable how much time I spent reading instead of doing the other things usually considered to be typical for teenagers (going out, doing homework, etc.). I was the classic science fiction nerd. My live revolved around the words of Asimov, Weir, Clarke, and probably every…
Do Not Write with an LLM A Growing Trend I have been seeing an increasingly prevalent trend of people showing up in online spaces proudly flaunting that they are writing with the assistance of AI. I often see them clarify that they are going further than letting the model perform grammar or fact-checking. They are describing an idea to an LLM , and giving it complete control…
Refactoring Slop The term “ slop” is rapidly entering the conventional English lexicon. In fact, it was Merriam Webster’s Word Of the Year for 2025. It refers to low-quality media generated by an LLM. It can be applied to images, text, music, or most relevantly to us, code. As an open source maintainer, I frequently both receive and create pull requests that could be labeled…
LaTeX Support Is Coming to Harper It’s been a long time coming, which is why I’m thrilled to say that Harper will soon support LaTeX. This is something our users have been pleading for since the beginning of the project. LaTeX support feels like a feature that is comparatively low‑effort, but unlocks a massive new consumer segment with little existing competition. It has the…
Building Software That Is Good for Humans Earlier today, the European Commission released a report detailing their initial findings that TikTok’s core recommendation algorithm is in breach of the Digital Services Act. This is only the most recent episode in the extended saga where western governments try to regulate the Chinese company. The various reasons and the methods…
Training a Small Language Model TL;DR: I’ve built and trained an extremely small language model from scratch, specifically designed for short-form sentence rewriting tasks that are highly resource constrained. In my last post , I discussed how I plan to tackle the difficult problem of helping Harper’s users take advantage of the active voice. The active voice is seen as more…
Writing in Visual Studio Code I write this blog in Neovim , and I’m aware of a good number of other nerds who do the same. I suppose I never considered that people might use other code editors for writing prose. In fact, it seems that there are a nontrivial number of people using Harper in Visual Studio Code . They seem to be using Harper mostly for Markdown and comments in code,…
Finding the Active Voice Last week, Harper hit a stroke of luck. It was featured on MakeUseOf . The downstream social media posts collectively garnered nearly 300,000 views and drove a significant amount of traffic to our site. This all happened in the wake of LanguageTool shutting down the free edition of their software. These two events compound to bring more attention than ever…
Linkarzu: Harper Is Getting Better Linkarzu’s recent video about Harper is a great primer on what it can do if you spend a ton of time in Neovim (like I do). It’s true: Harper is getting better.
Imagine a Weir Studio This week, I received a message from someone working on a learning management system. Apparently, they use harper.js to do spell and grammar checking on internal documents. They wanted to be able to configure Harper to catch a specific class of mistakes that are common to their workflow. Looking through the documentation for harper.js , they couldn’t…
Imagine a Weir Marketplace For context, I maintain an open-source grammar checker by the name of Harper. This post is a kind of RFC for a potential improvement to the project’s ergonomics. I’ve observed a high degree of specialization of language between academic fields. Ecologists use bits of language that computer scientists don’t use, and computer scientists use bits…
Someone Remixed Tatum A while back, I wrote a small tool, dubbed “ Tatum”, for rendering Markdown to HTML for use alongside Neovim. I’ve continued to use it to this day, with a few tweaks here and there. It looks like someone has taken advantage of Tatum’s open-source license and remixed it into something even more capable. I highly suggest you check out penview.nvim .
Some New Projects Are Using Harper I recently did some snooping ( through Dependabot ) on what open source projects have been using Harper. Since I last checked, there are some new ones. I wonder if the recent additions have anything to do with Harper going 1.0 . Stubby Stencila Gherlint walletbeat fixmyspelling Someone also wrote a book using Harper. This post is now out-of-date.…
Generating Weir Code with LLMs As you know, I’ve been working on a small programming language called Weir for generating corrections to natural language. For the curious, I highly suggest reading my previous blog posts on the subject if you haven’t already. Building the Weir Language Updates on the Weir Language In one of those previous blog posts, I speculated that an LLM…
Updates on the Weir Language In my last blog post , I described the why, what, and how of the Weir programming language. I suggest you read that first. Before signing off for the day, I just wanted to give a few updates on the project. For those interested in the technical side of things, I’ve opened a draft PR for your reading pleasure. Updated Keywords After having a…
Building the Weir Language Most large organizations have a style guide. A document that decides which versions of a linguistic rule to use. That could be whether to use the Oxford comma, or if contractions are allowed. It could declare that a certain word should be capitalized in a specific context. Harper can cover most of the rules in most style guides, but there will always…
Harper Can Apply Title Case In 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. Being able to make text title case (strictly in accordance to Chicago Style) isn’t a groundbreaking feature, but it is useful for certain niche applications. For example, all the titles in this very…
Harper Turns 1.0 Today Today, we published Harper’s 1.0.0 release . It’s a huge milestone, and in this post I’d like to discuss why it took so long, why we’re doing it now, and what’s next for the project. A Round of Applause, Please As I mentioned: This is a huge step for the project. Before I say anything else, I want to take a moment to appreciate the collective work of our many…
Quality Requires Visual Design Earlier this week, I was looking through a table of user feedback about Harper . I believe that software should be build with the user—not just for the user—so this is a pretty regular ritual for me. I was delighted. Many of the usual complaints were totally absent from the report. Users were encountering fewer of the make-or-break bugs that would harm…
Re: Collaboration Sucks Earlier this week, I came across a really great post from a product engineer over at PostHog. If you haven’t already, I highly recommend reading it . With the title “ Collaboration sucks,” I think it makes its message clear. If you had shown this article to the Elijah Potter from a year ago, he would have agreed with most of what it says. I was of the strong…
Improving Rust Compile Times By 71% If 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 and make adjustments if necessary. Compile-time increases slowly as a project morphs and grows. Slow enough that it…
Finding Signal Through The Noise As the maintainer of Harper , I read through dozens of issues and pull requests per day and countless more per week. There is a constant flood of new problems to fix and new code to review. At times, it can get overwhelming. I’ve been working recently to reduce the amount of noise I encounter when determining what to work on. I’m sharing my findings…
Avoid Complexity For 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. Think about it. The typical software engineer is a single person on a vast team, writing and editing a system…
Using Codex is a Lot Like Baking The 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. For web development, modern programming tools like Codex are quite good. They are able to understand a query and identify the relevant areas in a codebase. Then, they can make…