Settings we forget
There are a certain set of settings that we set once and then we forget why we set them. Recently, I ran into an issue where localhost does not resolve (consistently) to 127.0.0.1
on my local machine. A quick diagnostic revealed that it has something to do with the DNS resolver, and specifically, something to do with pointing it to 8.8.8.8
. At some point I stopped digging because it’s not worth the time to untangle the why – I simply needed to unblock myself.
These occurrences, that is discovering my esoteric actions in the past, happen a few times a year, and a few year gap between in each morphotype. I’ve tried a few different solutions, from leaving comments inline (I don’t have the foresight of knowledge), to jotting down in notes (which now creates an all-encompassing chore), and nothing quite works. I then either spend hours trying to understand the system again or unblock myself to the extent necessary.
The thing though is that I am a proponent of software customization. Settings are good! We should be able to change things to suit our needs. The question is customization creates an exception case, and when that exception meets the mainstream and our memory fails us, how do we gracefully resolve them. That is, ensuring that the intent of the change is honored while paving a path forward for whatever that needs to get done.
Design thinking loves happy paths. It does make me wonder, what does the design literature and the collective intelligence have to say about this. What is the best way to handle plurality in systems?
Posted Mar 06, 2025
A is for AI Abundance
At this point, AI writing code is inevitable. People I know are, understandably, worried about the impacts on our vocation. I don’t profess to be prescient about the upcoming effects, but I have a different take.
I’m hopeful that one possible consequence of pervasive AI generated code is that there is much more software functionality to go around. It may sometimes feel like we have a lot of software around us, but if examined closely, its effects are unequally distributed. As an example, ad-serving platforms (financially lucrative but debatably socially positive) have humongous and robust stacks while restaurant websites (personally positive) are positively impoverished.
Software is hard to build right. It is, at its best, a delicate dance done right between requirements, design, architecting, writing good code, and giving a damn. As a result, people gravitate towards building things once and building it right. Which is why people want to be opinionated, build frameworks to incorporate best practices, and the resulting power law distribution of adoption and resources.
AI writing code can change all that. If code can be written quickly with sufficient quality, and more importantly, cheaply, then code doesn’t have to always conform to the most common denominator (or popular opinion). The consequences of lowering this bar will be immense. Small businesses can break free from the big platform or janky home grown dichotomy. Software that conforms to natural workflows instead of vice versa (goodbye to enterprise software contracts). People can rewrite user interfaces to suit their abilities, needs, and preferences.
I am most curious to the last one. Because of the cost of building software, design has always have a citadel like quality to it. We profess to be the whisperer of what our users need and direct the provision of them in software modules. What if users no longer need this layer of translation? I don’t think this will lead to better designed software; it may instead lead to generally terrible software, except that in this world every jagged rock is someone else’s gem. We may truly enter the era of personalized software. To push it into the logical conclusion, seams and structures of software today will cease to exist and instead we will have access to capabilities on our terms, on demand.
It is a challenging framing to consider even beyond considering the existential threat to our livelihoods. For me, abundance upsets so much of what we take for granted, rituals and expectations that are built up over decades of the computing industry. But that may all be for the greater good. Or not. Interesting times indeed.
Posted Feb 24, 2025
Design is by nature both holistic and ruthlessly simplifying
A theory is by its nature a partial account of reality—a set of blinders through which some aspects of the world are highlighted and others become invisible. Design is by nature both holistic and ruthlessly simplifying. A designed artifact, whether it is a piece of communications software or a city park, must address the complex mixture of human needs, embodied in a weave of physical and social interaction. But the design itself cannot embody all of these complexities if it is to be constructible and understandable. The design must embody a simplification,leaving room for the texture of the world to be filled in by the interpretation and practices of those who use it. (emphasis mine)
– Terry Winograd. 2006. Designing a New Foundation for Design. Communications of the ACM 49, 5 (May 2006), 71–74. DOI:https://doi.org/10.1145/1125944.1125978
I think about this quote a lot.
Posted Jan 20, 2025
Hello unfiltered World!
I often feel compelled to write, but writing can be it’s own work. Most of the times ideas are half-baked and it takes a lot of effort to whip them into article form. Other times thoughts that are promising don’t get fleshed out and they get lost. As a result, I lose a record of them.
I want to find a way to write them down.
And hence unfiltered, a new section in the site. Fashioned after microblogs 10 years past their prime, named after what a former boss of mine said of me, this is the garden where I get to record ideas or pluck thoughts as they flutter by.
Posts will be quite short, mostly unedited, and a light and easy way for me to publish. The fully fleshed ideas will remain in writing, and everything else will come here.
Here’s to the first post; hello world!
Posted Jan 18, 2025