rssed

a collection of dev rss feeds - blogroll

Add a new feed

+

321 feeds


Elijah Potter's Blog

Posts

Harper's Testing Strategy 🔗

After spend­ing a few days dis­cussing and learn­ing from Automattic’s Chief Quality Officer (Lance Willet), I’ve pre­pared a first draft of Harper’s te [...]

Dealing with Flaky Tests 🔗

Dealing with Flaky Tests For the past day or so, I have had my head down, tear­ing my hair out, try­ing to de­bug a sig­nif­i­cant block caused by man [...]

Neoengineers 🔗

Neoengineers neo­engi­neer - noun An in­di­vid­ual, part of a resur­gence, who em­braces and re­spects the craft of en­gi­neer­ing. Often en­joys solv [...]

Slop Paralysis 🔗

Slop Paralysis slop paral­y­sis - noun A com­plete or par­tial loss of func­tion while re­view­ing the out­put of a cod­ing agent. Let me paint you a [...]

What Was Radical Speed Month? 🔗

What Was Radical Speed Month? While I was look­ing back through my archive of posts on this blog, I re­al­ized that I never con­cretely de­fined what R [...]

Harper's First Committer 🔗

Andrew Dunbar Becomes Harper’s First Committer I am pleased to say, with much fan­fare, that Andrew Dunbar (known by on­line moniker hip­pi­etrail) is [...]

Zen and the Art of Open Source Maintenance 🔗

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 pa­tience at the mo­m [...]

Get Rid of It 🔗

Get Rid of It If you have not al­ready, I highly rec­om­mend that you read Walter Isaacson’s bi­og­ra­phy of Elon Musk. It fol­lows the bil­lion­aire’ [...]

Hacker News sans AI 🔗

Hacker News, sans AI I like Hacker News, but I do not love that so much of it has turned into dis­cus­sion of a sin­gle topic: AI. So, I have cre­ated [...]

Wrapping up Harper Desktop 🔗

Wrapping up Our Radical Speed Month I pre­vi­ously posted about our launch of Harper Desktop. If you have not read that al­ready, I sug­gest you take [...]

Harper Desktop 🔗

Harper Desktop Is Available for Download Harper Desktop is fi­nally avail­able for down­load. It’s been about a month since Jason and I started work on [...]

Good Agents 🔗

Good Agents for Developers The spirit of Radical Speed Month in­cludes an im­pe­tus to ex­per­i­ment. So ex­per­i­ment I have. In par­tic­u­lar, I hav [...]

A Quick Update on Harper Desktop 🔗

A Quick Update on Harper Desktop This week of Radical Speed Month has been ded­i­cated to putting the dis­parate com­po­nents of the Harper Desktop Ap [...]

Product Product Product 🔗

Product, Product, Product Working this past week with Jason Adams has given me a brand-new ap­pre­ci­a­tion for the cat­e­gory of ideas that we en­gi­ [...]

Building a Harper Desktop App 🔗

Building a Harper Desktop App Harper is a gram­mar checker that makes sure that your writ­ing is ex­actly that: yours. Today, we will be start­ing som [...]

We Are in This Together 🔗

We Are in This Together Today, Jason Adams joined me and some of the other Automatticians based in the Denver area for a bur­rito. It’s a tra­di­tion [...]

Harper 2.0 🔗

Harper 2.0 Hey all! We’re fi­nally re­leas­ing Harper 2.0. Why? It is­n’t be­cause we have any new ground­break­ing fea­tures in this re­lease, be­caus [...]

Outcome over Process 🔗

Outcome over Process For the past few weeks, I’ve been think­ing about I can be more pro­duc­tive. In par­tic­u­lar, I’ve been think­ing about how I c [...]

When to Use an Agent 🔗

When (Not) to Use an Agent There are times where it is pru­dent to use an AI agent (like Codex) ag­gres­sively. There are other times where they shoul [...]

Harper's Policy on Agent PRs 🔗

Harper’s Policy on PRs Authored by Agents A few weeks ago, I was in­vited to speak at my lo­cal chap­ter of the Association for Computing Machinery (A [...]

My Superpower 🔗

My Superpower In high school, I was an in­sa­tiable con­sumer of sci­ence fic­tion. In hind­sight, it is un­be­liev­able how much time I spent read­ing [...]

Do Not Write with an LLM 🔗

Do Not Write with an LLM A Growing Trend I have been see­ing an in­creas­ingly preva­lent trend of peo­ple show­ing up in on­line spaces proudly flaunt [...]

Refactoring Slop 🔗

Refactoring Slop The term “slop” is rapidly en­ter­ing the con­ven­tional English lex­i­con. In fact, it was Merriam Webster’s Word Of the Year for 20 [...]

LaTeX Support Is Coming to Harper 🔗

LaTeX Support Is Coming to Harper It’s been a long time com­ing, which is why I’m thrilled to say that Harper will soon sup­port LaTeX. This is some­t [...]

Building Software That Is Good for Humans 🔗

Building Software That Is Good for Humans Earlier to­day, the European Commission re­leased a re­port de­tail­ing their ini­tial find­ings that TikTok’ [...]

Training a Small Language Model 🔗

Training a Small Language Model TL;DR: I’ve built and trained an ex­tremely small lan­guage model from scratch, specif­i­cally de­signed for short-for [...]

Writing in Visual Studio Code 🔗

Writing in Visual Studio Code I write this blog in Neovim, and I’m aware of a good num­ber of other nerds who do the same. I sup­pose I never con­sid­ [...]

Finding the Active Voice 🔗

Finding the Active Voice Last week, Harper hit a stroke of luck. It was fea­tured on MakeUseOf. The down­stream so­cial me­dia posts col­lec­tively ga [...]

Linkarzu: Harper Is Getting Better 🔗

Linkarzu: Harper Is Getting Better Linkarzu’s re­cent video about Harper is a great primer on what it can do if you spend a ton of time in Neovim (lik [...]

Imagine a Weir Studio 🔗

Imagine a Weir Studio This week, I re­ceived a mes­sage from some­one work­ing on a learn­ing man­age­ment sys­tem. Ap­par­ently, they use harper.js t [...]

Imagine a Weir Marketplace 🔗

Imagine a Weir Marketplace For con­text, I main­tain an open-source gram­mar checker by the name of Harper. This post is a kind of RFC for a po­ten­ti [...]

Someone Remixed Tatum 🔗

Someone Remixed Tatum A while back, I wrote a small tool, dubbed “Tatum”, for ren­der­ing Markdown to HTML for use along­side Neovim. I’ve con­tin­ued [...]

Projects Using Harper 🔗

Some New Projects Are Using Harper I re­cently did some snoop­ing (through Dependabot) on what open source pro­jects have been us­ing Harper. Since I [...]

Generating Weir Code with LLMs 🔗

Generating Weir Code with LLMs As you know, I’ve been work­ing on a small pro­gram­ming lan­guage called Weir for gen­er­at­ing cor­rec­tions to nat­u [...]

Updates on the Weir Language 🔗

Updates on the Weir Language In my last blog post, I de­scribed the why, what, and how of the Weir pro­gram­ming lan­guage. I sug­gest you read that fi [...]

Building the Weir Language 🔗

Building the Weir Language Most large or­ga­ni­za­tions have a style guide. A doc­u­ment that de­cides which ver­sions of a lin­guis­tic rule to use. [...]

Harper Can Apply Titlecase 🔗

Harper Can Apply Title Case In case you did­n’t know: Harper can con­vert text to ti­tle case! This has been around for a long time, but we haven’t re [...]

Harper Turns 1.0 Today 🔗

Harper Turns 1.0 Today Today, we pub­lished Harper’s 1.0.0 re­lease. It’s a huge mile­stone, and in this post I’d like to dis­cuss why it took so long [...]

Quality Requires Visual Design 🔗

Quality Requires Visual Design Earlier this week, I was look­ing through a table of user feed­back about Harper. I be­lieve that soft­ware should be b [...]

Re: Collaboration Sucks 🔗

Re: Collaboration Sucks Earlier this week, I came across a re­ally great post from a prod­uct en­gi­neer over at PostHog. If you haven’t al­ready, I h [...]

Improving Rust Compile Times by 71 Percent 🔗

Improving Rust Compile Times By 71% If you main­tain or work on a pro­ject in any com­piled lan­guage, par­tic­u­larly a lan­guage that is known for h [...]

Finding Signal Through the Noise 🔗

Finding Signal Through The Noise As the main­tainer of Harper, I read through dozens of is­sues and pull re­quests per day and count­less more per wee [...]

Avoid Complexity 🔗

Avoid Complexity For as long as I can re­mem­ber, I’ve told peo­ple that the real chal­lenge of soft­ware en­gi­neer­ing is­n’t writ­ing code. It is­n [...]

Using Codex Is a Lot like Baking 🔗

Using Codex is a Lot Like Baking The biggest prob­lem with AI pro­gram­ming to­day is not what I ex­pected a few years ago. I truly did­n’t be­lieve t [...]

My Writing Environment as a Software Engineer 🔗

My Writing Environment As a Software Engineer TL;DR: Get a good text ed­i­tor, and get good at us­ing it. Keep a notepad by your side. Find a quiet pl [...]

Trying out the Helium Browser 🔗

Trying out the Helium Browser I’ve de­cided to give the Helium browser a shot. So far, I’m im­pressed! For con­text, I’ve been an ungoogled-chromium u [...]

Brainstorming a Harper Service 🔗

Brainstorming a Harper Service SaaS prod­ucts are all the rage these days. His­tor­i­cally, Harper has po­si­tioned it­self as lo­cal-first, which many [...]

Improving Harper for Old Laptops 🔗

Improving Harper for Old Laptops The most com­mon com­plaint I’ve been hear­ing as of late re­lates to Harper’s per­for­mance. I’ve been told that Har [...]

Demos Make Life Worth Living 🔗

Demos Make Life Worth Living The ini­tial goal of any green­field pro­ject of mine is to build a work­ing demo. If pos­si­ble, that demo should run on [...]

What We Can Learn from New York City 🔗

What We Can Learn from New York City Today marks the end of my first week in New York City. It is an ex­cep­tion­ally ac­tive place. Neither the hus­tl [...]

The Chrome Extension Supersedes the WordPress Plugin 🔗

The Chrome Extension Supersedes the WordPress Plugin Several months ago, I an­nounced the ini­tial ver­sion of the Harper WordPress plu­gin. In the in [...]

I Spoke at WordCamp U.S. in 2025 🔗

I Spoke at WordCamp U.S. in 2025 I had the in­cred­i­ble op­por­tu­nity to speak at WordCamp U.S. at Matt’s sug­ges­tion. I met a num­ber of won­der­f [...]

The Books I Have Read Since July 2025 🔗

The Books I Have Read Since July of 2025 Whenever I can, I try to stop and re­flect. Of­ten it’s about my work and the things I can do to con­tinue be­ [...]

Harper Evolves 🔗

Harper Evolves I want you to read that ti­tle as lit­er­ally as pos­si­ble. Harper is now ca­pa­ble of evo­lu­tion. This past week, I’ve been work­ing [...]

The Art of the Talk 🔗

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 pub­lic speak­ing. The act of pre­sent [...]

Harper in the News 🔗

Harper in the News The biggest com­plaint about Harper is that the qual­ity of gram­mar check­ing still needs some work. I’ve got an ex­cit­ing new pr [...]

Better Interfaces for Grammar Checking 🔗

Better UI for Grammar Checking Grammar check­ing can be cum­ber­some, es­pe­cially when its sloth gets in the way of your think­ing. That’s part of wh [...]

Speaking at WordCamp U.S. in 2025 🔗

Speaking at WordCamp U.S. in August I was re­cently en­cour­aged to sub­mit a talk pro­posal to the AI track at WordCamp US. I was more than happy to [...]

Why I Talk to Myself 🔗

Why I Talk to Myself Each week I sit down and re­flect on what I’ve learned. I think about which of my ef­forts have helped the Harper en­deavor, and w [...]

Reflections on Expression Rules 🔗

Reflections on Expression Rules Just like gram­mar it­self, Harper is rule-based. These rules can be writ­ten by hu­man or ma­chine, and usu­ally take [...]

Training a Chunker with Burn 🔗

Training a Chunker with Burn In a pre­vi­ous post, I de­tailed how I im­ple­mented a ba­sic nom­i­nal phrase chun­ker us­ing Transformation-based lear [...]

Writing Good Documentation 🔗

Writing Good Documentation I be­lieve that good doc­u­men­ta­tion is more im­por­tant than ever. In an age where large lan­guage mod­els have ex­cep­t [...]

Writing a Grammatical Rule for Harper 🔗

Writing a Grammatical Rule for Harper Harper is a gram­mar checker that re­lies on con­crete, leg­i­ble gram­mat­i­cal rules. In do­ing so, we make Ha [...]

Writing a Phrase Correction for Harper 🔗

Writing a Phrase Correction for Harper This is part of a se­ries. Go to the start. There are sev­eral ways to add a gram­mat­i­cal rule to Harper. Thi [...]

Writing an Expression Rule for Harper 🔗

Writing an Expression Rule for Harper This is part of a se­ries. Go to the start. Expression rules (or more com­monly, ExprLinters) are Harper rules t [...]

Adding a Programming Language to Harper 🔗

Adding a Programming Language to Harper When I started the Harper pro­ject I knew I wanted to be able to use it for the com­ments in my code. First, b [...]

Local-First Software Is Easier to Scale 🔗

Local-First Software is Easier to Scale The ti­tle of this post is some­what mis­lead­ing. Local-first soft­ware rarely needs to be scaled at all. Harp [...]

Code Ages like Milk 🔗

Code Ages Like Milk A bold ti­tle, no? But it’s true, and it’s some­thing that I (and most other main­tain­ers) have to deal with on a reg­u­lar ba­si [...]

The Books I Have Read Since April 2025 🔗

The Books I Have Read Since April 2025 It has been a slow cou­ple of months for my read­ing habit. Al­though, now that I’ve said that out loud, I re­a [...]

Harper for Firefox 🔗

Harper for Firefox There’s a great deal of over­lap be­tween those who use Harper and those who use Firefox. Foremost, they both value pri­vacy. Which [...]

Refactoring More and Faster 🔗

Refactoring More and Faster I’ve been deep in the refac­tor rab­bit-hole. You know—that aw­ful (but strangely sat­is­fy­ing) space where the ma­jor­it [...]

More Transformation-Based Learning 🔗

Continuations on Transformation-based Learning The most com­mon type of ma­chine learn­ing out there takes the form of some kind of neural net­work. I [...]

Transformation-Based Learning 🔗

Transformation-based Learning for POS Tagging Harper is cur­rently un­der­go­ing some pretty rad­i­cal changes when it comes to its lan­guage analy­si [...]

Harper for Firefox Through Spellbolt 🔗

Harper in Firefox Through SpellBolt We de­signed Harper to be the ul­ti­mately portable gram­mar checker, but we’re still work­ing on liv­ing up to th [...]

Quality Is the Most Important Metric 🔗

Quality Is the Most Important Metric Harper’s Chrome ex­ten­sion con­tin­ues to come along beau­ti­fully. I’m ac­tively work­ing to make it more use­f [...]

Integration Testing Thousands of Sites with Playwright 🔗

Integration Testing Thousands of Websites with Playwright As I’ve ac­counted and dis­cussed in pre­vi­ous posts, one of the hard­est prob­lems Harper [...]

Bypassing Hallucinations in Llms 🔗

Bypassing Hallucinations in LLMs Before I get too deep, I just want to get it out of the way: OpenAI’s o3 model is im­pres­sive. With its tool use and [...]

Putting Harper in Your Browser 🔗

Putting Harper in Your Browser When our users in­stall Harper, they should ex­pect it to work any­where they do. Whether they’re writ­ing up a blog po [...]

Always Think of the Hook First 🔗

Always Think of the Hook First In his pop­u­lar book, Outliers, Malcolm Gladwell made the case that there was one num­ber that pre­dicted your skill l [...]

ChatGPT for the Moms 🔗

ChatGPT for the Moms My mom is a vi­o­lently in­tel­li­gent woman. But she lives in the un­for­tu­nate re­al­ity of not be­ing a soft­ware en­gi­neer [...]

Status of the Harper Chrome Extension 🔗

The Status of the Harper Chrome Extension Elijah! Elijah! When will we have a Chrome ex­ten­sion for Harper? Although it’s usu­ally asked with a bit m [...]

Photography as Meditation 🔗

Photography as Meditation The goal of med­i­ta­tion is to be­come more mind­ful and aware. For me, it is of­ten an at­tempt to get an ap­pre­ci­a­tion [...]

The Art of Exception 🔗

The Art of Exception English is an area of in­ter­est lit­tered with edge cases. In prepa­ra­tion for ad­dress­ing sim­i­lar prob­lems in the de­vel­o [...]

On Linkarzu 🔗

On Linkarzu’s YouTube I con­sider my­self an avid mem­ber of the Neovim com­mu­nity. As a whole, they have a great pulse on what a good writ­ing ex­pe [...]

Footguns of the Rust Webassembly Target 🔗

Footguns of the Rust WebAssembly Target WebAssembly—even af­ter sev­eral years of stan­dard­iza­tion—is still a nascent tech­nol­ogy. I’ve been work­i [...]

The Books I Read in February and March 2025 🔗

The Books I Read in February and March 2025 In a world con­tain­ing TikTok, YouTube and a vast ar­ray of other apps that profit off hu­man at­ten­tion, [...]

The One Hard Thing 🔗

The One Hard Thing People (myself in­cluded) love to make cas­cad­ing lists of tasks. Ac­tions, each of which are needed to im­prove a prod­uct, re­le [...]

3 Traits of Good Test Suites 🔗

3 Traits of Good Test Suites As ev­i­denced by my pre­vi­ous posts on LLM-Assisted Fuzzing, I’ve been ded­i­cat­ing a lot of my men­tal band­width to [...]

LLM Assisted Fuzzing 🔗

LLM-Assisted Fuzzing: A New Approach to False-Positives Preface: this post was ac­tu­ally writ­ten on February 24th, de­spite be­ing pub­lished to­day [...]

Harper Is in Cursor and Visual Studio Code 🔗

Harper Is in Cursor and Visual Studio Code Harper is a gram­mar checker for de­vel­op­ers. Its roots are in code ed­i­tors like Neovim, Helix, Zed, an [...]

Never Wait 🔗

Never Wait Preface: This post is specif­i­cally about Pull Requests for Harper. Read the con­trib­u­tor guide­lines for a pro­ject be­fore open­ing a [...]

Prompting Large Language Models in Bash Scripts 🔗

Prompting Large Language Models In Bash Scripts I’ve been ex­per­i­ment­ing with us­ing LLMs lo­cally for gen­er­at­ing datasets to test Harper agains [...]

A Harper Record 🔗

A Harper Record When we started work on harper.js, our goal was sim­ple. We wanted it to take less than 24 hours for a de­vel­oper to em­bed high-qual [...]

The Books I Read in January 2025 🔗

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 ti­tle The Midnight Li [...]

Notifications 🔗

Notifications I have found that the first cou­ple hours of the day are my most pro­duc­tive. I try to move te­dious tasks to later so I can fo­cus on so [...]

The Three Steps to an Apology 🔗

The Three Steps to an Apology My grand­mother is a won­der­ful woman. She never leaves the house with­out a least a lit­tle bit of pur­ple. Maybe a ke [...]

The Best 25 Bucks I Ever Spent 🔗

The Best 25 Bucks I Ever Spent Earlier this year (I don’t re­mem­ber the ex­act day or month) I de­cided, screw it, I’m go­ing to try us­ing a flip pho [...]

Why You Need Sccache 🔗

Why You Need sccache As the main­tainer of a rea­son­ably pop­u­lar open source pro­ject writ­ten in Rust, I find my­self cloning PRs and swap­ping be­ [...]

The Best Books I Read This Year 🔗

The Best Books I Read This Year This year I’ve been read­ing a lot more. Is there a par­tic­u­lar rea­son? Other than sim­ply ad­mir­ing those that do [...]

For the Love of Iframes 🔗

For The Love of iframes. I adore a good iframe. They’re so el­e­gant as a web com­po­nent. Just ex­pose an end­point, say https://writewithharper.com/ [...]

Naming Harper 🔗

Naming Harper Someone re­cently 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 🔗

The Simplest Neovim Markdown Setup I am not one who en­joys com­plex­ity. I am also some­one who likes to make their own tools. As a stu­dent, I write [...]

What Blasterhacks Taught Me About Leadership 🔗

What Blasterhacks Taught Me About Leadership The Beginning Although it was sev­eral months ago, I re­mem­ber it like it was yes­ter­day. It was what I [...]

The Optimal Workspace 🔗

The Optimal Workspace There are a num­ber of grand chal­lenges my gen­er­a­tion faces. Some threaten the way we live, like the hous­ing cri­sis. Oth­e [...]

Stupid Simple Spell Check 🔗

Stupid-Simple Spell-Check For the last month, I’ve been spend­ing a lot of time re­plac­ing one key com­po­nent of my writ­ing and pro­gram­ming en­vi [...]

Building a Software Render Engine from Scratch 🔗

How I Built a Software Render Engine from Scratch Heads Up: This ar­ti­cle is a re­pub­lished (with some tweaks on spelling, gram­mar and lay­out) ver [...]

Markov Chains Are the Original Language Models 🔗

Markov Chains are the Original Language Models Heads Up: This ar­ti­cle is a re­pub­lished (with some tweaks on spelling, gram­mar and lay­out) ver­si [...]

The Easiest Way to Run Llms Locally 🔗

The Easiest Way to Run LLMs Locally LLMs Unless you’ve been liv­ing un­der a rock for the past year, you al­ready know what LLMs are. If you do hap­pe [...]

Do Not Type Your Notes 🔗

Do Not Type Your Notes I feel it nec­es­sary to make it clear who I am speak­ing to. First and fore­most, I am speak­ing to any­one who is con­sid­er­ [...]

Quantifying Hope on a Global Scale 🔗

Quantifying Hope on a Global Scale Hope is a some­what neb­u­lous word. For some, it is an ex­pec­ta­tion of what the fu­ture will be. For oth­ers, it [...]

The Climate Change Progress Bar 🔗

The Climate Change Progress Bar The Problem Over the last cou­ple years, I’ve no­ticed a grow­ing dis­tinc­tion be­tween two groups of peo­ple. On one [...]

A Case for Procrastination 🔗

A Case for Procrastination The most valu­able, unique as­pect of soft­ware de­vel­op­ment is the speed at which we can it­er­ate. Soft­ware pro­jects [...]

I Designed My Own Pen Plotter 🔗

How I Designed (and built) My Own Pen Plotter For the last few months, af­ter read­ing Preslav Rachev’s book Generative Art in Go, I have been play­in [...]

3 Awesome Ways Computers Generate Randomness 🔗

What Is Randomness? In case you were born yes­ter­day, let’s go over it. Randomness is, at the most ba­sic level, some­thing that can­not be pre­dicte [...]

Build a Wordle Solver Using Rust 🔗

Build a Wordle Solver Using Rust The Game Wordle is a rel­a­tively sim­ple game. If you have ever played Mastermind, it should sound fa­mil­iar. The g [...]

Why Rust May Be More Attractive than JavaScript 🔗

Why Rust Might Attract More Developers Than Java and JavaScript Rust is un­de­ni­ably a greatly ap­pre­ci­ated lan­guage, af­ter all, it has placed as [...]

How to Write a Discord Bot in Rust 🔗

How to Write a Discord Bot in Rust Discord is an in­stant mes­sage plat­form with more than 150 mil­lion monthly ac­tive users. The main ap­peal seems [...]