software engineering
51 articlesSynthesis merging: what happens after the first PR
Synthesis merging goes beyond conflict resolution. It is the creative act of integrating contributions into a coherent whole, making the combined result better
When a code review runbook becomes an upgrade playbook
I built a code review runbook to find problems. Then I used it on codebases I owned, and the review categories became execution phases. A checklist for assessme
What reviewing real codebases taught me about code review
I published a 900-check code review runbook. Then I used it on real engagements. The checklist worked, but the real lessons were about the process — starting wi
When Someone Else Contributes to Your Synthesis-Coded Project
Standard merge workflows break down for synthesis-coded projects. The adopt-and-adapt pattern provides a disciplined integration methodology that respects contr
From learned representations to engineered context: what Richard Socher's research tells us about working with AI
Richard Socher's research arc — from GloVe to DecaNLP to 'managers of AI' — maps directly onto the principles behind synthesis coding. The connections are struc
Code Review That Scales: An Open-Source Runbook for Agentic Engineering
Most code review checklists are either too shallow or too heavy. This open-source runbook tiers review depth by project complexity — and is designed for agentic
The Part of Your Job AI Can't Do (And Why It Matters More Now)
There's a lot of anxiety about AI making engineering skills obsolete. But the most valuable part of what you do was never the typing. The judgment, the architec
RAG Architecture Lessons from Practice
Building a retrieval-augmented generation system revealed patterns the tutorials don't cover. Contractions break search. Not everything needs an LLM. Full docum
Context Loss and How to Prevent It
Why AI assistants forget what you told them, and practical strategies to prevent it. The difference between context that survives and context that gets lost.
From Tool to Team: Managing AI as Distributed Engineering
When you're running multiple AI sessions in parallel, you're not using a tool anymore — you're managing a team. The skills that matter shift accordingly.
The Foundation-First Pattern
Why the most effective AI-assisted projects start with humans writing code by hand. The counterintuitive pattern that makes everything else work.
Building ownwords: A Synthesis Coding Case Study
What separates synthesis coding from vibe coding isn''t the tools — it''s the decisions. This technical case study walks through the architectural choices,...
Why Synthesis Coding Still Writes Code in the Age of LLMs
The answer is not "just let the model do it" — and code matters more, not less, as AI gets dramatically better Last spring, my son Fitz and I had an aftern...
Vibe Coding and Synthesis Coding: Two Complementary Approaches
Why the conversation isn''t about which approach is better — it''s about knowing when to use each This blog post is for software engineers, engineering lea...
Polyrepo Synthesis: Synthesis Coding Across Multiple Repositories with Claude Code in Visual Studio Code
I wrote this blog post for software engineers, architects, and technical leads. It is code-heavy and implementation-focused. This weekend I was working acr...
Seventeen years ago, I built a tool for the open Web. This weekend, I modernized it using Synthesis Coding with Claude Code AI
In 2008, I released a WordPress plugin called Blogroll Links. The plugin displayed lists of links on WordPress pages using a shortcode. But the idea behind...
Synthesis Coding with Claude Code: Technical Implementation and Workflows
A hands-on guide to practicing synthesis coding (a.k.a. synthesis engineering) with concrete examples, real workflows, and lessons from production systems ...
The Synthesis Engineering Framework: How Organizations Build Production Software with AI
From individual practice to organizational capability: a systematic approach to human-AI collaboration in professional software development This blog post ...
Synthesis Engineering: The Professional Practice Emerging in AI-Assisted Development
Why the most effective engineering organizations are developing systematic approaches that go beyond vibe coding — and why this practice needs a name This ...
Why Prompt Engineering Is Legitimate Engineering: A Case for the Skeptics
As a CTO who has spent decades working with software engineers across organizations like The New York Times, The Wall Street Journal, and now as President ...
The Future of Software: From API to AI as the Communication Interface
As we look ahead to the evolution of how people and machines communicate with software, it's clear that artificial intelligence (AI) will play a key role. ...
Roles and Responsibilities for Digital Product Development Teams
I'm writing this article to share some insights on a topic that's been crucial throughout my professional journey – Roles and Responsibilities in Digital P...
MatheMagic Card Trick
Introduction MatheMagic Card Trick is a fun and simple number revealing magic trick using math. Use the page generate-cards.html to generate your cards to ...
Harvard NiemanLab article: Acing the Algorithmic Beat, Journalism’s Next Frontier
Read the article I co-authored, Acing the Algorithmic Beat, Journalism's Next Frontier at Harvard University's NiemanLab. In a world where key decisions ar...
Dear Makers, On Fridays My Office is Yours — An Experiment
Some senior leaders choose to work alongside their teams in cubicles, eschewing private office rooms. New York City’s former mayor Michael Bloomberg is an ...
Product Maintenance vs. New Development on Web Sites, Mobile Apps and Other Digital Products
Maintenance of a digital business product (e.g. a Web site, mobile app, or software) refers to the work that includes modifications made after delivery to ...
Hosting Large-Scale Web Sites: Contract Review Guide for the CTO
Introduction: Why Web Hosting Contracts Matter In today's digital economy, your website isn't just a marketing channel—it's the backbone of your business. ...
Software Products: Own vs. Rent & Create vs. Get (Incorrectly Called Build vs. Buy)
Understanding the issue Technology executives are often asked about their preferences on build vs. buy. This question would be better articulated as two se...
Sometimes extra steps in workflows are good
When implementing a content management system or other product, customers often ask for workflows that require the least number of steps required to any gi...
Google Web Toolkit: Develop and Test in Java, Deploy as AJAX
I'm building a pull-down-menu navigation for the rajiv.com site using the Google Web Toolkit (GWT) and I'm impressed by this Google product. It allows you ...
The Art and Science of Project Management: Beyond Tools and Techniques
Originally published April 1, 2006 – Revised and expanded March 23, 2025 Starting Early, Not Driving Recklessly Fast In my original 2006 article, I shared ...
Java Progammer? Use BeanShell
BeanShell is a fully Java compatible scripting language, capable of interpreting ordinary Java source files. You can also use it for working with Java inte...
Content Management: Content & Search Technologies
Search, when effectively integrated with content, creates a combination that is greater than the sum of the two separately. Let us consider an example. A p...
Eight Years at Knight Ridder: Building the Digital Newsroom
Reflections on nearly eight years at Knight Ridder, from solving publishing problems at 20 to VP Engineering leading Cofax development for 31 newspapers.
Winning the Team Knight Ridder Excellence Award for Cofax
The Cofax team won the Knight Ridder Excellence Award for Technology Innovation. My first award was individual. This one was with my team, and it means more.
Cofax Goes Open Source
Knight Ridder releases Cofax as open-source software on SourceForge, making newspaper web publishing technology freely available.
Building Cofax: A Content Management System for Newspapers
How a team at Philadelphia Newspapers built Cofax, a CMS that reduced web publishing time from 8 hours to 45 minutes.
Converting Numbers to Words in Perl
A Perl module that converts numbers to English words, handling everything from simple digits to quadrillions, with plans for Indian English and other language s
Finding a Security Hole in Microsoft Exchange
How I discovered a password caching vulnerability in Microsoft Exchange Server 5.0 that allowed old passwords to remain valid after being changed, and what happ
Sending Mail from Java Programs
A Java class for sending email via SMTP, usable from Java programs and ASP pages on IIS for web application notifications.
Including Remote URLs in Web Pages
A Java program that includes content from remote URLs into web pages, enabling ad serving and dynamic content assembly from multiple servers.
Multiple Default Documents on IIS
An ASP script that enables multiple default document names on Microsoft IIS, solving a common problem when migrating sites from Unix to Windows.
Making Unix Web Servers Case-Insensitive
Two Perl scripts that make Unix web servers case-insensitive by building a URL database and redirecting mismatched requests automatically.
Sharing Code with the Perl Community
On registering as a CPAN author, sharing Perl code freely, and why building software in the open makes everyone better.
A Date and Time Package for Perl
An object-oriented Perl 5 package for date and time formatting with support for today, yesterday, tomorrow, and arbitrary date offsets.
A Tour Guide Applet for Web Sites
A Java applet that guides visitors through a web site by reading a configurable list of links from a text file.
A toHex Function for Java
A Java function to convert integers to hexadecimal strings, written when java.lang.Integer lacked toHexString().
Netscape Acknowledged My Directory Listing Script
Netscape published my Perl CGI for custom directory listings as Tech Note 20021, solving a gap in their server software.
Building an Ad System for a Newspaper Web Site
Two Perl scripts for serving and tracking online advertising at Philadelphia Newspapers, built before commercial ad servers existed.
Reading GIF Dimensions in Perl
A Perl function to read GIF image dimensions and generate correct HTML img tags automatically.
Splitting Files for Floppy Disks
A Perl script to split large files into floppy-disk-sized pieces for transport across unreliable connections.