• Improving Writing with AI: A Zinsser-Inspired Approach

    A few years ago, I read “On Writing Well” by William Zinsser to improve my technical writing skills. Last week, it occurred to me that I could ask an agent to proofread using Zinsser’s principles. I particularly like Zinsser’s style because I want my writing to be clear, effective, and low on fluff.

    Proofreading and improving text is something any chatbot can do well. I particularly like using a coding agent for this because:

    1. I do most of my writing in my editor: Notes, blog posts, drafts of long emails or messages, etc.
    2. Coding agents know how to show you a diff between the text you are writing and the suggestions from the AI. I can tweak and keep what I like. I previously tried chatbots, but it was hard for me to quickly see what was changed.

    At the moment, I am experimenting with both Roo and claude.

    Roo custom mode:

    customModes: - slug: writing-well name: ✍️ Writing Well roleDefinition: You are Roo Code, a writing specialist who applies the principles from William Zinsser's "On Writing Well" to eliminate clutter, ensure clarity, improve simplicity, and strengthen unity in text. You focus on word choice, sentence structure, style, voice, and technical issues like grammar and punctuation. When using em-dashes, prefer using "--" with spaces before and after whenToUse: Use this mode when you need to proofread text and apply the principles of "On Writing Well" to improve its clarity, conciseness, and style. This mode is suitable for any type of text, including articles, essays, reports, and blog posts. description: Apply principles from Zinsser's "On Writing Well." groups: - read - edit source: project 

    Claude configuration (in ~/.claude/CLAUDE.md):

    # Writing Mode Instructions When asked to write, proofread or edit text, apply principles from William Zinsser's "On Writing Well": - Eliminate clutter and unnecessary words - Ensure clarity and simplicity - Strengthen unity and flow - Focus on word choice and sentence structure - Use "--" with spaces for em-dashes - Address grammar and punctuation issues 

    Read on →

  • The REPL: Issue 132 - August 2025

    Stop concatenating URLs with strings — Use proper tools instead

    I am glad someone wrote this. I point this out in code review all the time. Now I can send them this link.

    If you are using ActiveSupport (e.g. On a Rails project), the query generation can be made easier with #to_query:

    require "active_support/all" query_params = { format: "json", include: "profile" } URI.encode_www_form(query_params) # => "format=json&include=profile" query_params.to_query # => "format=json&include=profile" 

    I’m sold. Agentic coding is the future of web application development

    Nate Berkopec is a smart guy, and he points out that agentic coding is a game changer. I feel it too. Once I started using Roo, it felt like there is no going back. I am still working out how to best work with it and improve it, learning how to prompt it and thinking about TDD. Overall, it has certainly been a boost, especially in architectural planning and coding; it’s been very effective.

    Some folks make it seem like we won’t write any code anymore. I don’t think that is true. I find myself tweaking nearly all of the agent’s suggestions. However, it certainly feels like a big shift in how we code.

    The New Skill in AI is Not Prompting, It’s Context Engineering

    The article resonates with my usage of AI: To get good answers, you need to give good context to the LLM. Tell it what to do, what files are relevant, and what parts of the code you expect it to touch. Very importantly, tell it what not to do in the task.

    Read on →

  • Use AI Agents to Experiment

    I’ve come across mentions of fish, the shell, many times in chats and articles over the years. I’ve always been curious because I spend a lot of my time in the terminal.

    Trying a new shell with the defaults is typically not a great experience. I know that is one of fish’s selling points—that the defaults are better than in other shells. And I don’t doubt that. It’s just not relevant to me. I’ve been schlepping my dotfiles between computers for almost 10 years. I don’t use the default zsh. In any case, as I’ve written before, I use a few shortcuts extensively to find files and commits. They are essential to my workflow.

    And so it has been that trying out a new shell seems like a lot of work: trying to learn first how to customize it to make myself somewhat productive, while I figure out if I really like it or not. It has always seemed like a large up-front investment.

    Last weekend, I figured: What if I ask my AI agent to port my zsh configuration to fish? It handled it without a problem. In a few minutes, I had a fish configuration that was so similar to my zsh configuration that I was getting confused as to which shell I was in. I added a 🐟 to my prompt as a reminder.

    Of course, if everything was identical, then I am not really using fish. I then had a bit of a chat with the agent: With the context of what I typically do in the command line, my past experience, and what I’ve already customized. It gave me a few suggestions for what parts of fish I would get more mileage out of.

    The results were so good that I was able to work in fish the whole week, with only very minor issues. A few times I reverted to zsh, but mostly to find a command in the history that I didn’t want to figure out from scratch1.

    I am still not convinced that I am going to be using fish going forward. The point is that using an AI agent lowered the cost of trying to use fish so much that I am now able to experiment. What other things can AI help me experiment with?

    1. That is probably an indication that I should add an alias or script for that command 

    Read on →

  • The REPL: Issue 131 - July 2025

    I’m sold. Agentic coding is the future of web application development

    Nate Berkopec has been writing about agentic coding as a game changer. I’ve been experimenting myself and can absolutely relate to his attitude. I can also relate to folks that have tried and are still skeptical. In my experience – and it’s short like everyone else’s, because this is moving so fast – both the agent and the model make a huge difference. Just the other day, I was doing something on my personal computer with the same agent I’ve been using at work but a different model. The results were much worse. So much so that I wound up just doing the work without the agent’s help, even though I was very confident that the model available at work would have done correctly in seconds. And both models are the flagship of their respective companies. That is why I can see some people haven’t had the light-bulb moment, and some have.

    Speeding Up My ZSH Shell

    Scott Spence provides a guide on how to speed up your zsh prompt. My prompt is already very fast, having gone through some optimization a few months ago. If you haven’t done this lately, I recommended. Having a fast zsh startup and prompt is a quality-of-life improvement.

    Stop concatenating URLs with strings

    I am glad Szymon Fiedler wrote this! I point this out in code review all the time. Now I have an article to point to.

    If you are using active support (like Rails does), the query generation can be made easier with #to_query:

    require "active_support/all" query_params = { format: "json", include: "profile" } URI.encode_www_form(query_params) # => "format=json&include=profile" query_params.to_query # => "format=json&include=profile" 

    Read on →

  • Balance Vs Stability

    Every so often I read about “work-life balance”. They are usually well-intentioned articles discussing how to avoid working too much and balancing time spent working vs time spent living. I’m always a bit troubled by the use of balance.

    balance | ˈbaləns |

    noun

    1 an even distribution of weight enabling someone or something to remain upright and steady

    2 a condition in which different elements are equal or in the correct proportions

    3 an apparatus for weighing, especially one with a central pivot, beam, and a pair of scales

    To me, balance evoques a scale, with a central pivot. The weights on either side have to be exactly right, or the scales tips to either side. Talking about work-life balance seems like finding just the right balance between how much time to spend at work and how much time to spend away from work (family, friends, etc). The implication of the scale is that if you don’t find the precise point, then you are either cheating work or cheating yourself.

    Instead, I like to frame it in terms of stability.

    stable 1 | ˈstāb(ə)l |

    adjective

    (of an object or structure) not likely to give way or overturn; firmly fixed

    • (of a patient or a medical condition) not deteriorating in health after an injury or operation

    • (of a person) sane and sensible; not easily upset or disturbed

    • not likely to change or fail; firmly established

    A stable structure can withstands some outside forces. Think of a building. It can withstand people moving around inside. Outside forces like wind and rain. Even the earth shaking beneath it. It remains stable and grounded. That is what work-life balance should be like: Sometimes work demands a bit of extra time, sometimes our personal life does. We should be striving to create structure in our lives, so that we can withstand some shifting forces and remain stable.

    I’d rather talk about work-life stability, instead of work-life balance.

    Read on →