Abstraction

Engineering for Evolution

The criteria for engineering a good user experience spans across diverse incentives.

Ease of use is the most well known one, but I find it to be subjective. A cognitive device that helps me when in the development cycle is a flavor of iterating with the question of “how do I make this more intuitive?”. This follows from the realization that even for measurement along qualitative dimensions, we generally find comparing two entities (and ranking them higher/lower) easier than to come up with an absolute measure of that quality and resuming with a global sort. Working on concrete iterations also allows me explicitly think out loud in terms of what worked and what did not and then abstract later on for future wisdom.

Bells & Whistles

I’ve started spending some time per day without the usual modern software engineering tooling (LLMs, the Internet, etc) to explicitly maintain my cyber-deduction skills (in the context of Unix-based systems (BSDs, Linux, yet to explore Plan9), mostly because they power the majority of the global compute infrastructure).

It’s fun: init your journey with a man man (I’m an info info guy myself) and be extremely skeptical of your usual modus operandi, ditching all assumptions and tumbling down the rabbit hole.