I’ve been thinking lately about why some of the best ideas I’ve seen came from two or three people sitting around a whiteboard, while some of the most frustrating decisions came from rooms full of intelligent, experienced people. At first I thought it was because small teams simply acted faster. The more I’ve thought about it, though, the less convinced I am that’s the real reason. I think the…
At a certain scale, every successful SaaS company has to answer a quiet but important question: are customers staying because the product keeps getting better, or because leaving has become too painful? Ideally, those two things would never be in conflict. A great product naturally becomes embedded in the way a company works. It becomes part of the operating system of the business. People build…
The conversation around AI and productivity often feels oddly unsatisfying because both sides can point to evidence that feels true. AI really can make people faster. It can summarize documents, produce drafts, reorganize notes, classify data, generate code, create test cases, and turn a messy pile of information into something that looks usable. Anyone who has used these tools seriously has…
One thing I have noticed in large organizations is how easy it is to confuse motion with progress. When a team is behind, something important breaks, a launch is at risk, or a customer issue escalates, the organization often knows exactly how to respond: meetings appear, leaders get involved, people work late, and decisions that normally take weeks suddenly happen in hours. From the outside, that…
Most AI assistants feel impressive right up until you try to use them as part of your real daily workflow. They can summarize documents, answer questions, write code, and occasionally surprise you with something genuinely insightful. But after a while you start noticing the same patterns over and over again. They lose track of what you’re actually trying to accomplish. They pull in too much…
With the cost pressure of AI becoming a bigger news topic, it feels like a good time to talk about its overuse. Not because AI lacks value, but because many of the conversations around it quietly blur the line between assistance and autonomy. At its core, modern AI is non-deterministic. Traditional software systems operate procedurally. They accept a discrete set of inputs, execute a known…
I’ve started to become pretty skeptical of heavily scripted approaches to AI-assisted software development. The more I work with modern models, the less convinced I am that the future is a giant chain of tightly controlled agents passing work between each other like some kind of assembly line. Right now, I’m betting more on skills and on the model’s ability to recognize when those skills should be…
The new cache model in Next.js is much more explicit than the older ISR/fetch-cache world. The important mental model is that The cache key is effectively composed from a few inputs: build ID, function/component identity, serialized arguments, closed-over serializable values, and sometimes dev/HMR state. So this: But if you have a One of the more subtle aspects of For example: And you use it like…
One of the most common mistakes organizations make when approaching AI is starting from a place that is too broad to be actionable. Statements like “we need to integrate AI” carry the right level of urgency, but very little direction. They resemble earlier conversations about adopting the internet or moving to the cloud, where the technology itself became the focus rather than the problems it was…
There's a notion that the To watch a machine produce reasonable answers to questions of all kinds as quickly as a slot machine spits out winnings is a disquieting thing. But my mind races to find the narrowing sliver of purpose that has always eluded me. If work is the thing you do to distract yourself from thinking about purpose, and work is being consumed by an automaton, there are fewer and…
AI has dramatically accelerated how quickly we can write software. Entire features can appear in minutes. But this speed introduces a new risk that traditional engineering practices were never designed for. The real danger isn’t just technical debt. It’s As At the same time, The result is a dangerous feedback loop. Traditional technical debt accumulates slowly and heresy spreads. To manage this…
A product manager walks into a planning meeting with a feature idea. The spec is clear, the mockups look good, and the request seems straightforward. An engineer reads it and immediately starts seeing problems. The feature touches three fragile services, the edge cases are unclear, and the timeline feels optimistic. Neither person is wrong, but the conversation quickly turns tense. The PM feels…
We remake ourselves over our lifetime, usually as a result driven by personal change. Sometimes it comes from shifts in our own lives, and sometimes from inspiration we feel compelled to pursue. Either way, it tends to be localized to an individual journey. What is happening right now feels different. This is a shift on a national, and possibly global, scale, one that demands change regardless of…
One of the weirdest things about using AI to write software isn’t the speed, the convenience, or the “oh wow it actually worked” moments. It’s the fact that-for the first time ever - we get a shockingly clear picture of what it In a traditional setup, you ask a team to add a feature like “generate a social graph image that combines multiple product photos into one.” The team looks at it, throws…
This week focused on major UX upgrades, better localization support, stronger profile/portfolio tools, and improvements across exhibitions and media handling. The project is now in a much stronger place for multi-language experiences, richer visual browsing, and a more cohesive design system....
I spent most of yesterday building a pretty simple website called https://prompts.iwonderdesigns.com The idea came from my wife. She and a few photographer friends run a small creative exercise together. Each week, one of them sends out As soon as she explained it, I thought this would be fun to open up to a wider audience. It also felt like a perfect excuse to lean hard on an AI coding tool and…
A maintenance-mode guide for days when nothing feels worth doing Some days don’t feel bad in a dramatic way. They feel flat. Muted. Empty. You’re not sad enough to cry, not anxious enough to panic — just stuck in this weird space where nothing feels worth doing… and you’re unhappy that you’re not doing anything. This isn’t a motivation problem. It’s a On days like this, trying to “find purpose”…
For people who know me, it might be surprising to hear how much I love people 🙂. Especially the folks on the teams I’ve managed over the years. They’re relentlessly talented, curious, funny, stubborn in all the right ways, and full of these rich inner worlds that have nothing to do with their job titles. They’re engineers, yeah - but they’re also cooks, musicians, parents, painters, marathon…
I’ve been working on a tool meant to help me as an engineering manager, but somewhere along the way I realized it could be helpful to others too. Building it forced me to step back and think about where an engineering manager’s pain points are most pronounced. What I kept coming back to were two things: tracking large-scale initiatives over time, and understanding the health and happiness of the…
Deciding what type of technical solution to use is always shaped by three main constraints: the limits of technology, the capabilities of the team, and the long-term needs of the organization. Each introduces uncertainty, and understanding their role is critical. For most application and web development, technology isn’t the limiting factor. Nearly every problem has multiple viable solutions…
Like many engineering managers, my responsibilities shift from week to week. Tasks rarely line up neatly, and constant context switching can be exhausting. The only way I keep from drowning in it is by regrouping every week. Without that reset, the buildup of concerns can get overwhelming fast. Since my memory isn’t exactly reliable, I lean on tools to keep me organized. Todoist is my external…
I was recently thinking about why we get such different reports about the benefits of AI in software development. One person’s transcendent experience is another person’s waste of time. I think there are lots of reasons but one of them that seems particularly relevant in the work that I do has to do with the relationship between the code being written and how close it is to the consumer. The…
I recently listened to One of his suggestions that resonated with me—and this is my interpretation—is using self-imposed micro time constraints for work. I've been experimenting with this myself, and it’s been surprisingly effective. Lately, I’ve started setting up mini work sessions, usually 30 to 60 minutes, focused on a single task (I’m a die-hard Todoist user). The challenge, I’ve discovered,…
Even though Trump has won the election, I believe we are about to witness an incredible groundswell of support for progressive policies. The next four years may be difficult and, at times, deeply frustrating for those of us who care about social justice, climate action, and equity. But in the cycle of history, this had to happen for the champions of logic, empathy and fairness to wake up and…
Something I want to do on most of my versioned projects is handle the versioning and committing as part of the merge/push to the main branch. So I’m putting this here as a reminder to myself and help to anyone else who is doing this with github actions. First, you’ll need the script to do the work. Mine looks like this: The important parts of this are the configuration changes that ensure that git…
The ability to juggle multiple tasks simultaneously is often celebrated as a hallmark of productivity. We pride ourselves on our capacity to switch rapidly between emails, phone calls, meetings, and projects, believing that this constant state of flux maximizes our efficiency. I think that approach is lowering the quality of output and adding stress to our lives. Enter the concept of…
I was inspired to talk a little bit about this question on HackerNews: I had some thoughts about some of the points that were mentioned in the conversation. Some of them are good things to look out for while others may not be indicative of much. Unorganized or disjointed interview process. Lack of responsiveness or clear communication. Excessive number of interview rounds. Disorganized interview…
In a large corporate environment, the decisions that are made at the highest levels can be bewildering, seemingly inconsistent and out of touch with operations on the ground. That’s not to say they’re bad decisions, just that it can be hard to make sense of them when you don’t have access to all the factors that led to them. Trying to make sense of it is an exercise in frustration. If you have…
In the realm of engineering team organization, a one-size-fits-all approach simply doesn't suffice. Team dynamics are complex, influenced by the individuals comprising the team and the evolving nature of their work. I advocate for an approach I like to call Experience in engineering spans a spectrum, from seasoned veterans to fresh faces eager to make their mark. While experience brings valuable…
People are complicated. Really complicated. Navigating people in an environment where their motivations (and your own) are subject to a wide variety of ever-changing stimuli and thoughts makes for an exhausting experience. But if you can observe and identify what’s happening, you'll be able to rise above the chaos and find your way to a productive outcome. Meetings are where most conversations…
I spend a good bit of time in conflict resolution - either my own, people on my team or between groups. I’ve noticed that one of the most helpful things to do in these situations - aside from empathy, which is absolutely crucial - is understanding the type(s) of conflict being had. A lot of time is spent debating decisions. Each of these decisions has consequences but the nature of those…
Projects pulsate with life. They're conceived, they grow, they mature, and eventually, they transition into a state of completion. Each stage presents its unique challenges and opportunities, necessitating distinct approaches for optimal outcomes. This essay delves into the various phases of a project, highlighting their differences and outlining strategies for effective management. Ideas are…
The topic of predictability in software engineering is one that comes up often at work. Program Increments - a tool used as part of applying agile in large teams - is arguably a tool intended to help drive some predictability in an organization. But if one purpose of Program Increments is to bring predictability to development cycles then it can only be effective if underlying systems have I will…
In the past several months I’ve seen the affect that poor communication has on the efficiency of an organization. It’s not so much that it is the source of problems but it compounds all problems dramatically. Like the relationship between a spark and a powder keg, the more problematic an organization is, the more sensitive it is to bad communication. In these situations, But what As an engineer,…
With my website (which uses Notion as its CMS), I ran into a problem caused by a quirk of Notion’s API. When you upload an image to Notion and then fetch that image as part of a page payload, the image URL is an S3 bucket key that expires after an hour. Which is fine for most use cases but is problematic when pre-rendering a site - like I do for To solve the problem, I use R2 as a repository for…
I’ve been tinkering with Notion as a CMS for the last few days and decided it checked all the boxes for a simple site like my own. Below is a high level recap of some of the keys steps. But for more detail, First of all, I chose NextJS for this because I’m familiar with it, it has a lot of options for switching between different types of rendering and React is something I’m comfortable with. But,…
Let’s start by defining the difference between A/B testing and feature flagging. There is a lot of overlap between the two because the definition of both includes the simultaneous presence of two (or more) different ways of presenting a user interface and/or accomplishing a task within an application. The only real difference is the You can use Adobe Target to establish feature flags that can then…
With communication as difficult as it is, keeping your development team as small as possible yields much better outcomes for a lot of reasons. I wanted to put together a few thoughts about what the benefits are and why I think they materialize. Scalability and Flexibility Smaller teams offer more flexibility in project management, ensuring continuity and flow in the project without much disruption…
Ansie is a rich-text terminal rendering package I started this package out of frustration of not having a relatively simple way to output rich text without relying on direct terminal codes which is difficult to parse with the human eye. Yes, there is With Ansie, there are no dependencies for the library - not even chalk. It uses PEGJS to build a parser that will read an XML-based string and…
While there are some examples of how to setup a slackbot that runs on Lambdas, there wasn’t much available for running in an edge environment. The Edge Runtime has a few limitations (or differences) - not the least of which is that they often are not using the Node APIs. Rather they will often use v8 directly and make available the Fetch API. When using the app directory, API routes will run in…
I recently decided to switch an internal tool from NextJS pages router to app router. There’s lots of documentation about how to do that but the part that I was surprised would be tricky was getting my api implementation for my Github app’s webhook handler working again. As part of the migration I moved my webhooks endpoint for github from its original location In the app dir, route handlers…
I am most happy when I play even a small part in someone’s success. The challenge for me, as a manager, is how to go about helping someone reach their own goals (and in some cases, figuring out what those goals are). The vast majority of people need very little to be great. In fact, the more effort I exert, the more likely I am to actually To be clear, I’m a believer that having someone who can…
I recently made the switch from Notion to Markdown for a couple of reasons. First, Notion is amazingly featureful and especially good with teams but I found it to be overbearing for personal notetaking. Ultimately, it opted to focus more on teams and enterprise - which I respect. Thanksfully, Notion makes it pretty easy to export to common formats - markdown, in my case. The next question was how…
Organizations leak knowledge - it’s the nature of organizations. A person learn’s something through some experience. They store that knowledge so that the next time something similar happens, they can apply that knowledge to create a new, hopefully better, experience. The human brain is pretty good at that. But what about organizations? In this scenario, person A has had this experience but no one…
The decision to build a solution vs. buy one is a point of some contention. There are so many factors that serve as inputs to that decision - which, themselves, are contentious - making consistent decision making elusive. Over the years, here’s the set of questions I’ve come to ask myself when making this decision. This is divided into two sections. First the question of This part is as important…
I’ve started to put more thought into the notion that’s been brewing in my head for a while. Here’s how it goes: at work, you can broadly divide employees into two pools: Engaged and Not Engaged. The latter sounds negative but it’s really not meant to be. It started many years ago when I entered the work force and heard so many dread going to work. At first I was puzzled, then I was thankful for…
The in-between hosts necessity but not much in the way of excitement. It is the connecting tissue between high-impact projects without which those projects could not be completed. But the in-between, as I’m calling it, is subtle in its importance and will often be forgotten in the excitement of a new project. The in-between is not bureaucracy, though. It is the communication, the automation, the…
My son was saying today that this project he’s working on I realized that this is actually a good thing. When you’re exploring an idea, spending too much time creating an “ecosystem” is a complete waste if you don’t know if the core idea is viable. In fact, it’s not just about viability, it’s about knowing where the pain points are - that is, you don’t really know what For example, create an…
Your co-workers are your partners. If you don’t have their support and trust, you will have more trouble getting your own work done and will, most likely, be less happy while making the attempt. I posit that understanding and empathy are cornerstones of a healthy organization. Not a bold theory but one to keep in mind as I discuss the broad classification of personalities. Everyone is unique. But…
I have been managing a mix of onsite and remote teams now for about seven years and prior to that worked with remote teams as an engineer for about twelve years. In that time, I have accumulated some opinions of what works and what doesn’t. This essay is meant to help managers who are faced with a distributed team and are suffering from some of the disadvantages that come with it. Many of the…