My Superpower π
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 [...]
a collection of dev rss feeds - blogroll
Posts
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 [...]
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 th [...]
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 [...]
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 somethin [...]
Building Software That Is Good for Humans Earlier today, the European Commission released a report detailing their initial findings that TikTok's core [...]
Training a Small Language Model TL;DR: I've built and trained an extremely small language model from scratch, specifically designed for short-form sen [...]
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 [...]
Finding the Active Voice Last week, Harper hit a stroke of luck. It was featured on MakeUseOf. The downstream social media posts collectively garnered [...]
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 [...]
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 [...]
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 im [...]
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 u [...]
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 [...]
Generating Weir Code with LLMs As you know, I've been working on a small programming language called Weir for generating corrections to natural langua [...]
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. [...]
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 [...]
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 reall [...]
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, wh [...]
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 [...]
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 [...]
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 [...]
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. T [...]
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 document [...]
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 wou [...]
My Writing Environment As a Software Engineer TL;DR: Get a good text editor, and get good at using it. Keep a notepad by your side. Find a quiet place [...]
Brainstorming a Harper Service SaaS products are all the rage these days. Historically, Harper has positioned itself as local-first, which many often [...]
Improving Harper for Old Laptops The most common complaint Iβve been hearing as of late relates to Harperβs performance. Iβve been told that Harper ha [...]
Demos Make Life Worth Living The initial goal of any greenfield project of mine is to build a working demo. If possible, that demo should run on the w [...]
What We Can Learn from New York City Today marks the end of my first week in New York City. It is an exceptionally active place. Neither the hustle no [...]
The Chrome Extension Supersedes the WordPress Plugin Several months ago, I announced the initial version of the Harper WordPress plugin. In the intere [...]
I Spoke at WordCamp U.S. in 2025 I had the incredible opportunity to speak at WordCamp U.S. at Matt's suggestion. I met a number of wonderful, kind, a [...]
The Books I Have Read Since July of 2025 Whenever I can, I try to stop and reflect. Often it's about my work and the things I can do to continue being [...]
Harper Evolves I want you to read that title as literally as possible. Harper is now capable of evolution. This past week, I've been working on a syst [...]
The Art of the Talk I've given dozens of talks over the years, yet I still feel like I have much to learn about public speaking. The act of presenting [...]
Harper in the News The biggest complaint about Harper is that the quality of grammar checking still needs some work. I've got an exciting new project [...]
Better UI for Grammar Checking Grammar checking can be cumbersome, especially when its sloth gets in the way of your thinking. Thatβs part of why so m [...]
Speaking at WordCamp U.S. in August I was recently encouraged to submit a talk proposal to the AI track at WordCamp US. I was more than happy to oblig [...]
Why I Talk to Myself Each week I sit down and reflect on what I've learned. I think about which of my efforts have helped the Harper endeavor, and whi [...]
Reflections on Expression Rules Just like grammar itself, Harper is rule-based. These rules can be written by human or machine, and usually take the f [...]
Training a Chunker with Burn In a previous post, I detailed how I implemented a basic nominal phrase chunker using Transformation-based learning (not [...]
Writing Good Documentation I believe that good documentation is more important than ever. In an age where large language models have exceptional conte [...]
Writing an Expression Rule for Harper This is part of a series. Go to the start. Expression rules (or more commonly, ExprLinters) are Harper rules tha [...]
Writing a Phrase Correction for Harper This is part of a series. Go to the start. There are several ways to add a grammatical rule to Harper. This pos [...]
Writing a Grammatical Rule for Harper Harper is a grammar checker that relies on concrete, legible grammatical rules. In doing so, we make Harper's in [...]
Adding a Programming Language to Harper When I started the Harper project I knew I wanted to be able to use it for the comments in my code. First, bec [...]
Local-First Software is Easier to Scale The title of this post is somewhat misleading. Local-first software rarely needs to be scaled at all. Harper r [...]
Code Ages Like Milk A bold title, no? But itβs true, and itβs something that I (and most other maintainers) have to deal with on a regular basis. Fail [...]
The Books I Have Read Since April 2025 It has been a slow couple of months for my reading habit. Although, now that I've said that out loud, I realize [...]
Harper for Firefox There's a great deal of overlap between those who use Harper and those who use Firefox. Foremost, they both value privacy. Which is [...]
Refactoring More and Faster I've been deep in the refactor rabbit-hole. You knowβthat awful (but strangely satisfying) space where the majority of you [...]
Continuations on Transformation-based Learning The most common type of machine learning out there takes the form of some kind of neural network. Inspi [...]
Transformation-based Learning for POS Tagging Harper is currently undergoing some pretty radical changes when it comes to its language analysis. These [...]
Quality Is the Most Important Metric Harper's Chrome extension continues to come along beautifully. I'm actively working to make it more useful and re [...]
Harper in Firefox Through SpellBolt We designed Harper to be the ultimately portable grammar checker, but we're still working on living up to that pro [...]
Integration Testing Thousands of Websites with Playwright As I've accounted and discussed in previous posts, one of the hardest problems Harper faces [...]
Bypassing Hallucinations in LLMs Before I get too deep, I just want to get it out of the way: OpenAI's o3 model is impressive. With its tool use and w [...]
Putting Harper in Your Browser When our users install Harper, they should expect it to work anywhere they do. Whether they're writing up a blog post i [...]
Always Think of the Hook First In his popular book, Outliers, Malcolm Gladwell made the case that there was one number that predicted your skill level [...]
ChatGPT for the Moms My mom is a violently intelligent woman. But she lives in the unfortunate reality of not being a software engineer or mathematici [...]
The Status of the Harper Chrome Extension Elijah! Elijah! When will we have a Chrome extension for Harper? Although it's usually asked with a bit more [...]
Photography as Meditation The goal of meditation is to become more mindful and aware. For me, it is often an attempt to get an appreciation for my sur [...]
The Art of Exception English is an area of interest littered with edge cases. In preparation for addressing similar problems in the development of the [...]
On Linkarzu's YouTube I consider myself an avid member of the Neovim community. As a whole, they have a great pulse on what a good writing experience [...]
Footguns of the Rust WebAssembly Target WebAssemblyβeven after several years of standardizationβis still a nascent technology. I've been working with [...]
The Books I Read in February and March 2025 In a world containing TikTok, YouTube and a vast array of other apps that profit off human attention, it t [...]
The One Hard Thing People (myself included) love to make cascading lists of tasks. Actions, each of which are needed to improve a product, release a f [...]
3 Traits of Good Test Suites As evidenced by my previous posts on LLM-Assisted Fuzzing, I've been dedicating a lot of my mental bandwidth to maintaini [...]
LLM-Assisted Fuzzing: A New Approach to False-Positives Preface: this post was actually written on February 24th, despite being published today. I'd l [...]
Harper Is in Cursor and Visual Studio Code Harper is a grammar checker for developers. Its roots are in code editors like Neovim, Helix, Zed, and you [...]
Never Wait Preface: This post is specifically about Pull Requests for Harper. Read the contributor guidelines for a project before opening a PR. I get [...]
Prompting Large Language Models In Bash Scripts I've been experimenting with using LLMs locally for generating datasets to test Harper against. I migh [...]
A Harper Record When we started work on harper.js, our goal was simple. We wanted it to take less than 24 hours for a developer to embed high-quality [...]
The Books I Read in January 2025 I only got to read two full books this month. The first was a short novel by Matt Haig with the title The Midnight Li [...]
Notifications I have found that the first couple hours of the day are my most productive. I try to move tedious tasks to later so I can focus on solvi [...]
The Three Steps to an Apology My grandmother is a wonderful woman. She never leaves the house without a least a little bit of purple. Maybe a keychain [...]
The Best 25 Bucks I Ever Spent Earlier this year (I don't remember the exact day or month) I decided, screw it, I'm going to try using a flip phone. F [...]
Why You Need sccache As the maintainer of a reasonably popular open source project written in Rust, I find myself cloning PRs and swapping between bra [...]
The Best Books I Read This Year This year I've been reading a lot more. Is there a particular reason? Other than simply admiring those that do, no. I [...]
For The Love of iframes. I adore a good iframe. They're so elegant as a web component. Just expose an endpoint, say https://writewithharper.com/editor [...]
Naming Harper Someone recently asked me where the name Harper came from. When I first sat down to start work on Harper, I had one goal in mind. I want [...]
The Simplest Neovim Markdown Setup I am not one who enjoys complexity. I am also someone who likes to make their own tools. As a student, I write a lo [...]
What Blasterhacks Taught Me About Leadership The Beginning Although it was several months ago, I remember it like it was yesterday. It was what I woul [...]
The Optimal Workspace There are a number of grand challenges my generation faces. Some threaten the way we live, like the housing crisis. Others are d [...]
Stupid-Simple Spell-Check For the last month, I've been spending a lot of time replacing one key component of my writing and programming environment: [...]
Markov Chains are the Original Language Models Heads Up: This article is a republished (with some tweaks on spelling, grammar and layout) version of a [...]
How I Built a Software Render Engine from Scratch Heads Up: This article is a republished (with some tweaks on spelling, grammar and layout) version o [...]
The Easiest Way to Run LLMs Locally LLMs Unless you've been living under a rock for the past year, you already know what LLMs are. If you do happen to [...]
Do Not Type Your Notes I feel it necessary to make it clear who I am speaking to. First and foremost, I am speaking to anyone who is considering switc [...]
Quantifying Hope on a Global Scale Hope is a somewhat nebulous word. For some, it is an expectation of what the future will be. For others, it is a go [...]
The Climate Change Progress Bar The Problem Over the last couple years, I've noticed a growing distinction between two groups of people. On one hand, [...]
A Case for Procrastination The most valuable, unique aspect of software development is the speed at which we can iterate. Software projects that don't [...]
How I Designed (and built) My Own Pen Plotter For the last few months, after reading Preslav Rachev's book Generative Art in Go, I have been playing a [...]
What Is Randomness? In case you were born yesterday, let's go over it. Randomness is, at the most basic level, something that cannot be predicted. In [...]
Build a Wordle Solver Using Rust The Game Wordle is a relatively simple game. If you have ever played Mastermind, it should sound familiar. The goal i [...]
Why Rust Might Attract More Developers Than Java and JavaScript Rust is undeniably a greatly appreciated language, after all, it has placed as "#1 Mos [...]
How to Write a Discord Bot in Rust Discord is an instant message platform with more than 150 million monthly active users. The main appeal seems to a [...]