unfiltered

In no particular order

  • I love designing and building UIs. Like love, love. It is work that combines product thinking, UX, systems, and visuals all at the same time and it tickles every part of my brain. There are easily five iterations to get to a satisfying outcome: original idea, wireframes, implementation, iterating through the trough of disillusionment, and then the transcendence.
  • I’ve gotten to a good state with the Sunnyday Agent configuration page. Good for now at least; and I don’t use the word good lightly. There are still rough edges, and aspects of the page which are candidates for a teardown and redo in the near future as my understanding evolves. But at least everything feels and works well within the constraints it’s supposed to right now.
  • That’s one of the great things about working with coding AI agents. They give me higher degrees of freedom in working and can express in higher fidelity. If I were to put it in an analogy, it’s akin to the transition from 2d to 3d. We gain a new dimension that brings it closer to the real thing.
  • After working on agents for the last few months, I have a lot of thoughts about performance. All the benchmarks tend to flatten them down to a single dimension, and to be fair that’s what benchmarks are supposed to do. However, agent performance is a much more nuanced, especially because there is the what is not said gap between the lines of the instruction prompt. I will have more to say about that as I collect my thoughts.
A screenshot of the configure page in Sunnyday, used to configure and test AI agents.

Snapshot of the current Sunnyday Agent configure page

Posted Jun 16, 2026

The gap between possible and good

A lot of the discourse these days conflates what’s possible with what’s good. That’s understandable. Possibilities are exciting; they let us do things we couldn’t before, start new projects, and feel squarely in the driver’s seat.

But because it is possible doesn’t mean that it is good. Too often, we just let things happen. Our judgement gets fatigued when it takes more effort to understand and decide if they are worth our time and attention. And then we let them slip. The word slop encodes that energy.

I’m not here to gatekeep possibilities. I love possibilities, but I also care that things are good. Good can be achieved when we—the people who are involved in and affected by new possibilities—spend time poring over them and iterating on them. Extending our care and exercising taste.

Now that we know that things are possible, let’s spend time making them good.

Posted Jun 07, 2026

Progress is a game of inches accumulated over time

I write this as a reminder while I reflect on the old year and look forward to the new. I have heard all the proverbs in this vein, and as I grow older they take on depth. Even as I yearn for the alternative.

It’s easy to be impatient. I secretly wish that building the next feature or dieting for 3 months will get me everything that I want. First, there is no magical destination that will solve the unease I expect it to cure. Second, if it is something I want, I should work toward it even when it’s slower than I’d like. More importantly, if the work is meaningful, I have to keep doing it.

In that perspective, a year is a mere segment in the marathon. That is the inch that I toil in.

Posted Jan 10, 2026

An AI God would be a dereliction of our duty

I’m a firm believer that we, humans, are primarily preoccupied with what other people are up to. The social instinct is something that is hard-wired. Politics, alliances, rivalries, and gossip – all human drama –are part of that.

AI may become the best information retrieval and even information using machine in the world. But it remains a tool. Not even a peer. There is no real reason why humans should be concerned about the opinions of AI much less the edict from one.

If there comes a day where we would rather defer to AI, then we would have indeed done our worst harm.

Posted Nov 10, 2025

Writing is an intuition and muscle

I thought I would write more when I started “unfiltered”. But that wasn’t the case. The format was one challenge, but it wasn’t the main obstacle.

I realized I was missing two things.

First, the instinct to turn ideas into prose. A good writer acts while ideas are still alive. They fade for two reasons. Sometimes we take too much of an inside view and we underrate how compelling they are. Other times, we overwork them so much that it feels impossible to start.

Second, the habit itself. Turning thoughts into writing is a skill honed through repetition and practice. When I don’t write regularly, it starts to feel difficult. The longer I wait, the more daunting it becomes.

I’ve always want to write more. I would love to write more. Writing is the best way to wrestle with ideas and communicating them to others. Maybe it just comes down to making it a priority.

Posted Nov 01, 2025

Shifting sands of complexity

A few observations about complexity while working on my agent library.

  1. One of the foundational decisions that we have to make when designing software is where to place complexity. In a way, designing is about discovering complexity and shifting it between the user and system. As designers, we are making assumptions and decisions about what to solicit from the user and what to bake into the design.
  2. Complexity here refers to decisions or steps taken as part of accomplishing a task. An example of complexity is something as mundane as naming a file. They are often trivial as individual units, but when accumulated they can make a task feel complex and frustrating unless the user is well trained.
  3. Software is excellent at encoding decisions programmatically and is thus great at removing these from the user. There was a movement around sensible defaults a decade ago or so that aimed to decrease the amount of decisions that needed to be made out of the box. The end result is perceived simplicity.
  4. There is no free lunch however. By its nature, simplicity is diametrically opposed to control. What is made not explicit must be implicit, either in terms of effort required to discover them or the ability to access them in the first place. In the latter case, it will sometimes make a design awkward–that is, users will have to contort themselves to take advantage of it–or, a non-starter.
  5. It is extremely difficult to hide complexity completely. If a choice can be completely removed without consequences, then it is either redundant or obsolete. The reason options exist and matter is because users are not a single homogenous bloc. People want to make use of technology to achieve certain means and the diversity in needs and preferences are as kaleidoscopic as people themselves.
  6. Sometimes new technology can emerge that changes the landscape of complexity. Language models are a prime example of that. The ability to use language–one that is native to us–as the medium and interface opens up much more possibilities compared to the crude resolution of commands and GUIs. This introduces new possibilities and thus complexity into the system. Current AI apps punt them onto the users but as the field develops, we will start seeing the complexity shift again.
Posted Jun 03, 2025

Weighing good goods

I recently purchased a Tanita scale, and it’s been a reminder that good products are delightful. It was an opportunistic purchase. Somehow I shattered the kitchen scale that I had for years and not too long ago I saw a chef’s recommendation on YouTube.

The thing about the Tanita is that it’s as if someone has thoroughly considered what makes for a good home kitchen scale and made the scale-iest home kitchen scale that they can make. The performance is impeccable; it displays weight changes instantly and there’s even a precise mode that goes down to 0.1g (fun fact: coffee beans are about 0.2g each on average). The controls are logical and satisfying. One of the problems I had with the previous scale is that it did not have an off button - it turns off automatically and frequently when I’m in the middle of using it. Lastly, it feels good in the hand, a hefty enough chunk but small enough to stow away. Also, the raised platform separate the weighed to the weight display and that’s a nice touch.

I expected to like the scale but I didn’t expect to love it. I find so much joy in weighing things and knowing how heavy they are that I’m constantly finding excuses to use it. Everything from weighing out my morning coffee beans to pasta servings. Good products should make you want to use it more, find new ways of using it, and just shout it’s virtues from the rooftop. That’s the standard I need to hold myself to when building new products.

Posted Apr 10, 2025

Repetition

I love learning. It often involves looking for new sources of information to drink from. There is an exhilaration from discovering the untapped land of knowledge and a rush from venturing through it.

Yet to my recent surprise I discovered that the once topic of my disdain, repetition, is an equally great teacher. Through the integration of a few daily practices I have found them to be a profound source of satisfaction. Repetition is the king of compounding effects. Inches accumulated over time paves major new thoroughfares.

Doing a thing, whether it is a movement, technique, or habit, over and over again yields insights and opens up new areas of exploration. Maybe it is the small adjustments that repetition demands, the continual solving of micro problems, or simply the comfort of familiarity that frees the mind to wander. Whatever the reason, repetition fosters mastery and creativity.

It’s very hard to do a thing over and over without becoming skilled or without eventually getting inventive. Moreover, this knowledge can only be gained through repetition. The insights are embodied and ingrained in the motion–not something one can read or listen to.

I used to dread practice. Now, I look forward to it.

Posted Mar 27, 2025

Iterations

A sketch of an app idea using pen and paper

Idea sketch, pen and paper, 2025

Recently, I have taken back to sketching out ideas by hand again. To achieve a neater and more compelling final composition, I found it really useful to work in layers.

The first layer is always a rough placement of where things go. Subsequently, I will refine content and details, ink the outlines, and finally add color and shadow. Every pass is an attempt at both fleshing out the idea itself and achieving balance between the elements. Finally, the pencil lines are erased, the scaffolds taken down, and what is left is the final polished composition.

This is going to sound profound and basic at the same time: iteration isn’t optional – it’s essential. Good design demands iterations because it only emerges from progressively refining ideas from rough concepts to detailed compositions. No one, no matter how talented, can do it all in a single pass.

Product design mirrors this truth. Understanding a problem thoroughly demands multiple iterations. Every pass is an opportunity to uncover new insights to elevate the status quo towards something better. Unlike paper and pencil, modern tools often err on the side of too much gloss. This is a reminder to myself that at the fundamental level iteration, more than any tool, is how we get to great products.

Posted Mar 20, 2025

Go deep or wide

In business they often talk about bundling unbundling cycles. In product, the countervailing forces are width and depth, that is to be as broadly applicable as possible, or as narrowly applicable as possible. The worst place to be is at the middle because one can neither reap the effects of being de facto solution nor fitted like a glove to a niche.

Going wide is typically suited for first movers within a new domain and those who seek to challenge them. To take a contemporary example, ChatGPT is the broadest solution in AI Chat today, and they established their position by being an innovator in the field. To play in this arena, new players will have to find nooks and crannies where ChatGPT is no longer a good enough solution, or, mount a full frontal with all the resources they can muster (against all of OpenAI).

The common saying in startup circles is that if one can find 10 customers, one can find 100 (there is risk of overfitting at one). At first glance, the business opportunity may seem enormously asymmetrical, but two things. First, financial rewards are disproportionate; the most lucrative is often overlooked. Second, product molded to specific niches may find a larger market available to them over time because the practices in those areas surface to mainstream (think tools like kanban).

First exist. Then play.

Posted Mar 12, 2025