# Not So Common Thoughts - Full Content
> Not So Common Thoughts is a personal blog exploring the intersection of design, technology, and human creativity. Through thoughtful analysis and personal experiences, it examines how modern tools and AI are reshaping our approach to design, coding, and creative work, while maintaining a focus on the human elements of judgment, intuition, and meaningful decision-making. The blog combines design insights with reflections on work, creativity, and the evolving relationship between humans and technology.
## Converging on Reality
> Machine learning models across languages, molecules, and proteins are converging toward similar representations—a hint at underlying structure.
From [Ethan Mollick on LinkedIn](https://www.linkedin.com/posts/emollick_recently-llms-were-found-to-encode-different-activity-7411757757713907713-QjVu):
> Recently, LLMs were found to encode different languages in similar ways, suggesting a sort of Platonic representation of words.
>
> It now extends to science: 60 ML models for molecules, materials & proteins (all with different architectures & training data) converge toward similar encodings of molecular structure.
>
> As models improve, they agree more on what makes two molecules "similar." They may be converging on a shared representation of physical reality (but models are still constrained by their data).
I find this a fascinating hint at an underlying structure of information and reality.
Give [Ethan](https://www.linkedin.com/in/emollick/) a follow—he's a consistently considerate and often humorous source of insights on all things AI.
---
## A Map of Gaps
> Why knowing what you're bad at matters more than knowing what you're good at—for learning, for work, and for building teams that actually complement each other.
Had a good conversation with a candidate recently about strengths and weaknesses. Not the usual interview dance where weaknesses get reframed as strengths in disguise. An honest exchange about what we're each not good at and how we compensate.
It reminded me how rarely we talk about this directly—and how enabling it is when we do.
## The Real Skill
Knowing your strengths tells you where to deploy yourself. But **knowing your weaknesses tells you who you need around you**.
That's the more useful map. Not a catalog of what you're good at, but a clear picture of the gaps—and a strategy for filling them by leaning on others who are strong where you're not.
This isn't about self-deprecation. It's about self-awareness that actually leads somewhere. If I know where I fall short, I can seek out collaborators, build teams, and structure work in ways that compensate. The gaps become a design constraint, not a liability.
## A Career Theme
Looking back, the most enabling pattern in my career has been exactly this: finding people whose strengths complement my weaknesses, and offering the reverse.
It changes how you hire. Instead of looking for people who are good at the same things you are, you look for people who cover what you can't. It changes how you collaborate. You stop pretending you can do everything and start [trusting others](/blog/let-go-and-trust) to handle what they're better at. It changes how you grow. You stay humble about your limits and curious about improving them, which is the [growth mindset](/blog/praise-effort-not-talent) in practice.
The alternative—projecting competence in every direction—is exhausting and brittle. Eventually the gaps show up anyway. Better to know them, name them, and build around them.
## Why It's Hard
We're trained to emphasize strengths. Performance reviews, job interviews, professional branding—all of it pushes toward articulating what you're good at. Admitting weakness feels like giving something away.
But teams built on pretense fail in predictable ways. Everyone is covering gaps that nobody acknowledges. When those gaps finally surface, there's no structure to handle them.
I'd rather work with people who can say clearly what they're not good at. It makes everything else more trustworthy. If someone knows their limits, I can trust their confidence in other areas.
## The Map Worth Making
So here's the question worth sitting with: what are you bad at? Not as an exercise in humility for its own sake. But as real intelligence about who you need, what you should delegate, and where you still have room to grow.
The map of gaps is a blueprint for the career you actually want—one where you're not trying to be good at everything, but building something better by leaning on others.
---
## The One Thing Constraint
> Good science fiction changes one thing and builds a world around it. Can the same work in product design?
The best science fiction worlds feel inevitable. Not because they're familiar, but because they're coherent. Pick one impossible thing—teleportation, immortality, telepathy—and trace every consequence. The world builds itself from that single change.
Change too much and it falls apart. The reader stops believing.
## The Credibility Problem
When a science fiction world has teleportation *and* telepathy *and* time travel *and* magic crystals, you start to notice the seams. The writer is just adding whatever feels convenient for the plot. The world loses internal logic. It stops feeling real because nothing holds it together.
The single change is what creates credibility. It forces the author to think through implications. If everyone can teleport, what happens to cities? To borders? To privacy? To crime? To relationships? The one thing ripples outward, reshaping everything it touches in ways that feel inevitable.
That discipline is generative. It creates the world.
## Playing With One Change
I've been doing this lately with product ideas. Pick one change and follow it. **What if just one element was different?**
No database. Everything in the browser. No cloud, local only!
Each one reshapes what's possible. "No database" pushes you toward local-first, toward what can live in memory, toward sync without a source of truth. "Everything in the browser" surfaces URL encoding, WebAssembly, service workers—a completely different architecture.
The change propagates. That's the point.
## Why One Thing Matters
Without that singular change, you follow well-worn patterns. Use a database because that's what you do. Put it in the cloud because everyone does. The solutions are familiar because nothing pushes you to reconsider.
Change too many things at once and you're just listing preferences. "I want it fast *and* beautiful *and* cheap *and* flexible *and* simple." Those aren't changes. They're wishes.
But change one foundational element—one thing that affects everything else—and your brain has to leave the path. You're world-building. The single change isn't a limitation—it's permission to think differently.
## The If If If
The questions are cheap: *if if if*. But following one all the way through is hard. It means resisting the urge to compromise, to add just one more exception, to let the change slip when it gets uncomfortable.
Good science fiction stays disciplined. It picks one impossible thing and makes everything else follow. The world feels real because it's consistent, because the author did the work of thinking through implications instead of just inventing conveniences.
Good product design can work the same way. Pick one change that matters. Follow it to its conclusion. See what world it builds.
---
## From Sketch to Site in Hours
> Building Field Bureau + Werkstatt, a minimal site born from a journal sketch and iterated into existence.
Field Bureau + Werkstatt is an independent design and technology practice. Bureau for analysis and discernment. Werkstatt for experimentation and craft. Field for real-world context and iteration.
The design tries to capture and reflect that ethos. So does the process of making it.
## Bureau, Werkstatt, Field
**Bureau:** I developed the key concept and captured it in a minimal (and tiny!) sketch in my journal. Just the essentials: logo, concept, navigation.

**Werkstatt:** Initial implementation was quick thanks to AI. Then came the real work: spacing, typography scale, color values, image treatment. Design decisions that require looking, adjusting, looking again.
**Field:** A timely design critique with [John](https://www.johnwlong.com/) brought real-world perspective that refined the final result.
I like it best on desktop (see screen) but it scales nicely to mobile too. Learn about [Field Bureau + Werkstatt](https://fieldbw.com).
---
## In Appearance Only
> Unintentional imposters optimizing for output over outcome. AI just does it even better.
AI content often looks right, if not perfect. The structure is there, the format is correct, the polish is undeniable. Yet it can feel hollow—disconnected from genuine understanding.
We act like this is new. Like AI invented producing work that meets expectations in form while missing the substance. But we've been doing this for decades.
## Output Without Outcome
Watch a product team doing everything by the book. They're running sprints, conducting user research, building roadmaps, measuring metrics. All the outputs are there: personas, journey maps, OKRs, retrospectives. Perfect artifacts.
And yet the outcome is off. The product doesn't solve the problem. The features miss the mark. The strategy feels hollow.
Or look at design work that seems deeply researched. Stunning presentation, articulate rationale, sophisticated visual language. All the outputs of good design. But in practice, it doesn't serve users well. The outcome reveals the disconnect.
These frameworks and practices were invented for good reasons. Sprints were meant to break down complexity and enable rapid feedback. User research was meant to surface real needs before building. OKRs were meant to align teams around meaningful outcomes. They all emerged to solve real problems, and they work brilliantly—if you understand what problem they were trying to address.
But somewhere along the way, **the outputs became the goal**. Following the process became the measure of success. Creating the right artifacts became what "good" looked like. The work became performance.
## Organizational Imposters
The eerie part is how many people in organizations are unknowingly just pretending. They're not malicious. They're not consciously deceiving anyone. They've simply learned the patterns that signal competence and reproduce them faithfully. They know how to structure the presentation, format the document, run the ceremony. They're fluent in the language of their discipline.
But they've never connected it back to the original problem these practices were meant to solve. They're **imposters who don't know they're imposters**, because everyone around them is also checking whether the form is correct, not whether the substance is there.

## The Mirror
This is what's eerie about AI. It's extraordinarily sophisticated at meeting human expectations in form—more sophisticated than most people at matching expected patterns. It produces the right structure, the right tone, the right surface markers of competence.
But it's doing exactly what we've been doing: producing output that looks right without ensuring the outcome is right. The difference is that we're more critical of AI. We scrutinize its work with skepticism we rarely apply to human output. But that's already fading. AI's level of sophistication makes it increasingly hard to tell the difference.
When humans do it, we're often numbed to it. We've been swimming in it so long we stopped noticing.
AI shows us what our own work looks like when you strip away intent and understanding but keep the form intact. It's learned from everything we've produced, including all the work that looked right but wasn't. It reproduces the patterns we rewarded, the structures we validated, the forms we approved.
And we seem to like what we see.
## What This Means
I've been looking for the unintentional imposters for years. The ones who argue most forcefully for doing things right, for following process. They're often the ones most disconnected from why those processes exist. They've mistaken the map for the territory.
And with AI, the lesson is clear: to get value out of it, you have to **hold it accountable to purpose, not form**. Don't judge its output by whether it looks right. Judge it by whether it achieves the outcome you need. The same standard we should have been applying to human work all along.
The appearance of good work has always been the easiest thing to fake. Now we just have a mirror that makes it impossible to ignore.
---
## Embracing Interface Asymmetry
> Visual UIs and chat interfaces have opposite strengths. The asymmetry isn't a problem to fix; it's a pattern to embrace.
I've been reflecting on the friction between traditional UIs and AI chat interfaces. We've been forcing both input and output through the same interface paradigm for decades, and it's never worked well for both.
Visual interfaces are spectacular at one thing: showing you information. A map instantly conveys distances and relationships that would take paragraphs to describe. A dashboard lets you compare metrics at a glance. Product grids let you scan prices and features faster than any text summary could. When computers need to help us understand information, visual representations are unmatched.
But flip it around. Try to *tell* a computer what you want through those same visual interfaces.
Now you're clicking through nested menus, filling out forms with rigid validation rules, hunting for the right checkbox buried in settings. You're learning someone else's mental model of how data should be structured, memorizing which field goes where, adapting your intent to fit their predetermined categories. Every app has its own idiosyncratic input patterns. Every form demands you think like the database schema.
The sophistication we've built into visual output doesn't translate to input. It compounds complexity instead of absorbing it.
## The Inverse Interface
AI chat interfaces flip this entirely. They're phenomenal at input. You describe what you want in whatever words come naturally. You provide context in whatever order makes sense to you. You correct yourself mid-sentence, add caveats, reference things indirectly. The interface does the work of parsing intent, mapping your messy human input onto structured operations.
But ask a chat interface to help you compare options, and you're back to scrolling through paragraphs. Which hotel was cheaper? What were the trade-offs between those three approaches? The information is there, but you can't *see* it. Text forces sequential processing when what you need is spatial reasoning. It's the wrong medium for output.
The asymmetry is perfect. Visual interfaces fail where chat interfaces excel. Chat interfaces fail where visual interfaces excel. We've been stuck with one paradigm for decades: visual UIs for everything, input and output both forced through the same forms and buttons. Now we're adopting the other, wrestling with how to make chat and text convey what images show instantly. But the asymmetry isn't a problem to solve. We ought to embrace it.
## No UI for Input
What if the pattern that's emerging isn't "chat replaces everything" but something more surgical? Free-form text input (or spoken words) becomes the universal input layer. Describe what you want, refine it conversationally, express complex intent without learning app-specific conventions. Then, once the system understands, render the results in whatever visual form makes them comprehensible. Generate the dashboard. Show the map. Display the comparison grid.
The interface adapts to the output, synthesized on the fly based on what you asked for. Not a predetermined layout you're forced to interpret, but a visualization shaped by your specific question. The understanding of this asymmetry adds another level to something I wrote about [ephemeral software](/blog/2025-10-15-ephemeral-software). Traditional software isn't just wrong because it persists when it shouldn't. It's wrong because it forces a single interface paradigm to handle both directions of interaction. Code and interfaces should both manifest when needed and dissolve when done, but they should also split along natural lines: natural language for expressing intent, visual forms for understanding results. The output interface becomes just another part of the computation that appears in service of your purpose, then vanishes.

I've noticed this in my own projects lately. The friction isn't usually in viewing results; it's in communicating what results I want. The cognitive load isn't in understanding the data but in wrangling the controls.
This changes what we should be building. Stop trying to make chat interfaces that output everything as text. Stop trying to make visual UIs with better input forms. Instead, build systems that accept natural language input and generate the right visual representation for each specific query. The interface becomes a consequence of the question you asked, not a constraint you have to work within.
For designers and builders, this means rethinking the fundamental unit of interface design. Not "design a dashboard" or "design a form," but "design a system that can synthesize the right output format in response to expressed intent." The interface isn't the product; the capability to manifest appropriate interfaces is the product.
What would your tools look like if input and output weren't bound to the same interface?
---
## Turning the Ship
> Why organizational change takes time, why resistance is normal, and why momentum eventually works in your favor.
Changing organizational direction is like turning a massive ship. The larger the organization, the more this metaphor holds true.

You can't just yank the wheel and expect immediate results. The momentum of the existing direction carries the organization forward, resisting change.
I wrote about why [direction matters more than speed](/blog/direction-before-speed) in organizational momentum. But knowing where you want to go is different from actually getting there. I've seen this pattern enough times to know where people give up and where they push through.
Whether you're an executive, a team lead, or an individual contributor trying to drive change—the dynamics are the same. You're working against existing momentum, and that takes sustained effort regardless of your title.
## Many Small Pushes
Change happens through many small pushes, not one dramatic shift.
Each decision, each meeting, each communication that aligns with the new direction adds a small force vector. Initially, these forces seem insignificant against the massive momentum of the current direction.
But not all pushes are equal. The key is finding the levers that make the biggest difference. Some decisions cascade through the organization—who gets hired, what gets measured, which projects get funded, how teams are structured. These aren't just small pushes; they're force multipliers that touch everything downstream.
I've learned to look for these leverage points early. Where does attention naturally flow? What decisions do people watch to understand what actually matters? Those are your levers. Push there, and the effect compounds far beyond the immediate action.
Your levers look different depending on your position. An executive controls funding and structure. A team lead influences what gets celebrated and who gets hired. An individual contributor shapes technical direction through code reviews and architecture proposals. But the principle is the same: find where small actions create outsized impact.
Momentum is cumulative. Over time, these small pushes—especially the ones applied to the right levers—begin to add up. The ship starts to turn, slowly at first, then with increasing speed.
## The Resistance Phase
The most challenging period is the early phase, when you're pushing against existing momentum. This is when change initiatives often fail—leaders give up because they don't see immediate results. They expect the ship to turn on a dime, and when it doesn't, they conclude the effort is futile.
But this is exactly when persistence matters most. The resistance you're feeling is the organization's existing momentum pushing back. It's not a sign that change is impossible—it's a sign that you're pushing against something real.
Every decision is questioned. The old ways keep reasserting themselves. Progress is invisible or easily reversed. You're constantly explaining the same things. Exhaustion sets in for change leaders.
This is normal. This is the physics of organizational change.
## The Tipping Point
There comes a moment when the cumulative effect of all those small pushes reaches a tipping point. The ship's direction is changing, even if it's barely perceptible at first. This is when the change becomes self-reinforcing, when the organization's own momentum starts working in your favor.
At this point, something remarkable happens: the change becomes unstoppable.
The organization begins to generate its own momentum in the new direction. People start making decisions that align with the new direction without being told. The culture begins to shift naturally. New hires come in and assume this is just "how we do things here."
## When to Ease Off
Here's the counterintuitive insight: once the ship is turning, you need to ease off.
Just as it took sustained effort to start the turn, it will take sustained effort to stop it. The momentum that was working against you is now working for you. The change itself becomes inevitable.
This is why over-correction is a real danger. I've seen leaders who fought hard to initiate change not realize when the battle is won. They keep pushing with the same intensity, and the organization overcorrects, swinging too far in the new direction.
The art of organizational change is knowing when to push hard and when to guide gently. Early on, you push. Once momentum shifts, you steer.
## Why Change Feels Inevitable in Retrospect
Early-stage change feels difficult. Successful change feels inevitable in retrospect. The work you do in the resistance phase creates the foundation for the acceleration phase.
People who join after the tipping point can't imagine the organization any other way. They wonder what the big deal was. "Of course we do it this way," they say.
## What This Means for You
If you're driving change—at any level—start by identifying your levers. Where can you apply force that creates the biggest impact? This looks different depending on your position, but the principle is the same: find the decisions and actions that cascade.
Commit to sustained effort during the resistance phase. Don't expect immediate results. Celebrate small wins that align with the new direction. Keep communicating the why, relentlessly. Build a coalition of people pulling in the same direction.
After the tipping point, recognize when momentum has shifted. Ease off the intensity of your push. Guide rather than force. Watch for overcorrection. Let the organization's own momentum do the work.
Organizations that succeed in transformation understand they're playing a long game. They know that turning a ship takes time, that resistance is normal, and that once the turn begins in earnest, it becomes self-reinforcing.
Patience during the resistance phase. Recognition when the tipping point arrives. That's how you turn the ship.
---
## Direction Before Speed
> Why organizational momentum is a vector, and why moving fast in the wrong direction is worse than moving slowly in the right one.
Organizational momentum is a vector—it has both direction and magnitude. Without clear direction, increased speed only means you're getting lost more quickly.
I've watched this play out enough times to know the pattern. The fundamental truth is that **direction is everything**. You can have the fastest, most efficient execution in the world, but if you're heading in the wrong direction, you're just accelerating toward failure.
## The Vector Problem
I've seen organizations pride themselves on execution speed while drifting aimlessly. They measure velocity, track velocity, optimize for velocity—all while ignoring that velocity is a vector quantity. Without direction, speed is meaningless.
Even worse: scattered efforts across multiple directions. When your team pulls in five different directions with equal force, you don't get slow progress—you get zero progress. The vectors cancel out. All that effort, all that motion, adds up to nothing.
This is why alignment matters more than hustle. A team moving slowly but in the same direction will outpace a team sprinting in different directions every time.
This applies whether you're leading an entire organization, a team, or trying to drive change from any position. The physics are the same.

## The First Question
The first question should always be: **Where are we going?**
Only after that's clear should you ask: **How fast can we get there?**
This seems obvious when stated plainly, but I've seen organizations do the opposite. They start with execution, with process optimization, with speed improvements. They assume direction is already set, or that it will emerge from the execution itself.
It rarely does.
Organizations that succeed get religious about direction. They communicate it relentlessly. They use it as a filter for every decision. They're willing to say no to perfectly good ideas that point the wrong way.
## What Misdirection Costs You
Speed without direction doesn't just waste effort—it actively destroys value.
Teams build features nobody needs, faster. Engineers solve the wrong problems, more efficiently. Meetings proliferate to coordinate conflicting efforts. Burnout increases as people work harder for less impact. Morale drops as people sense the futility of their work.
It burns out your best people on meaningless work. It creates organizational debt that's harder to unwind the longer it continues.
## Getting Direction Right
Setting direction isn't about having a perfect vision from day one. It's about being clear enough that people can align their efforts.
When everyone can articulate where the organization is headed, decisions become easier because you have a filter. You can say no to good ideas that point the wrong way. Individual efforts compound instead of canceling out. Progress becomes visible and measurable.
## Why Speed Still Matters
None of this means speed doesn't matter. It does—tremendously.
When you can move fast, you reduce the cost of being wrong. If you can fix your mistakes as quickly as you make them, you can afford to make mistakes and learn from them. Speed reduces the need for slow deliberation because the feedback loop is tight enough that errors become cheap.
This is why the sequence matters so much. Direction first, then speed. With clear direction, speed becomes your advantage. Without it, speed just amplifies your mistakes.
Of course, setting direction is only the beginning. Actually changing an organization's direction—getting everyone aligned and moving together—is a different challenge entirely. I explore that in [Turning the Ship](/blog/turning-the-ship).
---
## Praise Effort, Not Talent
> How cultural differences in praising children shape mindset and what it means for how we raise our own kids.
I learned this years ago, but it stuck: in many cultures, when a child does something well, they hear "it shows how much you worked on this." In the US, that same kid often hears "you're so talented."
The difference is profound.
## Attribution Matters
One response attributes success to effort—something entirely within the child's control. The other attributes it to inherent talent—something fixed, something they either have or don't.
This isn't just semantics. It shapes how children understand success and failure. If you believe your achievements come from talent, what happens when you struggle? You assume you've hit your limit. If you believe they come from effort, struggle means you haven't worked hard enough yet.
## The Fixed vs. Growth Mindset
This is the difference between a **fixed mindset** (talent-based) and a **growth mindset** (effort-based).
Kids with a growth mindset embrace challenges as opportunities to improve. They persist through setbacks, see effort as the path to mastery, and learn from criticism. Kids with a fixed mindset do the opposite—they avoid challenges that might expose limitations, give up when things get hard, and take criticism personally because it threatens their self-image.
The mindset we foster through our words has real consequences.
## How I Practice This
I learned about this distinction when my first daughter was just born. It became something I internalized immediately—a lens I couldn't unsee once I understood it.
From the beginning, I've been intentional about how I praise. My instinct is still to say "you're so smart" or "you're naturally good at this." It feels good to say. Kids beam when they hear it. But I've trained myself to pause and reframe. Instead of "you're so talented," I say "I can see how hard you worked on this." Instead of "you're so smart," I say "I love how you figured that out." Instead of "you're a natural," I say "your practice is really paying off."
It's not always easy. The fixed-mindset language is deeply embedded in how we talk. But I've been doing this for years now, and it's become second nature.
## The Real Block Isn't Talent—It's the Belief in Talent
This isn't just about how we raise kids. It's about the limiting beliefs we carry about ourselves.
How many people say "I'm not good at math" as if it's an immutable fact about who they are? Or "I'm not creative" or "I'm not athletic" or "I don't have a technical mind"? These aren't statements about reality—they're self-fulfilling prophecies that become true precisely because we believe them.
The notion of talent is a real block. It gives us permission to stop trying. It lets us off the hook. "I'm just not wired that way" becomes an acceptable reason to never attempt something, never struggle, never improve.
I genuinely believe I could learn to do anything because the brain is remarkably good at learning things. I may be too lazy to put in the required time. I may be too old to justify the investment. But that's not a problem of potential—it's a problem of priorities and effort.
When we shift from "I don't have the talent" to "I haven't put in the time," everything changes. The barrier isn't who we are. It's what we're willing to do.
---
## Apple's Quiet AI Advantage
> Why the M-series neural engine may prove that Apple's so-called lag in AI is actually a head start in on-device intelligence.
What if the real AI inflection point is happening on my desk instead of in the cloud? That question keeps circling back every time someone insists Apple is “behind.”
The usual scoreboard about foundational models and their ever-increasing capabilities barely mentions what happens on the device in front of us. Apple has spent nearly a decade weaving neural hardware into phones, tablets, and Macs without turning it into a hype cycle. Those chips feel less like a spec race and more like a quiet promise: the intelligence you rely on should live where you already work.

## An Invitation Hiding in Plain Sight
Apple Intelligence was announced without fireworks. The feature list reads tame: writing tools, notification triage, a few system-level assistants. Yet the developer sessions were unmistakable in tone. Apple wants us to bring our workloads onto their silicon. Every lab, documentation drop, and office hour circled the same idea: Apple Intelligence is a platform—tap into it, extend it, keep the experience private by default. The message is gentle but persistent: use the hardware, keep the data on device, lean into personal context.
## Quiet Proof Already Shipping
Even before Apple put a label on it, the devices were already soaked in intelligence. Voice Isolation makes a noisy café call sound like a studio. Center Stage tracks people across a room without broadcasting any frames to the cloud. Photos quietly does its thing so everyday shots just look great, no matter how chaotic the scene. These are everyday features, almost boring, and yet the amount of local processing required is just amazing. They are case studies for what happens when neural compute is treated as part of the OS instead of an add-on service.
## Owning Processing, Owning the Model
Cloud AI still matters when you need scale, but it turns every interaction into a rental. On-device work flips the model. The bill was paid when the hardware shipped. The data never has to leave the user’s hands. The relationship becomes less about metering usage and more about delivering capability that earns space on the dock or in the menu bar. That quietly challenges the SaaS mindset. **It resonates with me because nothing about having my work aggregated, mined, or owned elsewhere feels right anymore.** If the intelligence lives with the user, a subscription to access their own information starts to sound dated.
The trade-off, of course, is that Apple’s privacy stance and hardware guardrails slow the wild experimentation that fuels open cloud models. But that constraint is also why the results feel less volatile—grounded, human-scaled, and willing to wait until the pieces fit.
## Selfish Alignment
Apple frames privacy as a core value, but it is also a competitive wedge. Safari’s tracking protections, Mail Privacy Relay, and App Tracking Transparency all happen to blunt Google’s data collection while keeping users inside Apple’s ecosystem. Motivation aside, the outcome aligns with my selfish interest. My browsing history, my app habits, my daily routines are harder to harvest. Apple’s incentive to differentiate just happens to protect the way I want to work: locally, quietly, without negotiating away ownership every time I tap an icon.
## What If We Lean In
So the question is: what if on-device intelligence is the differentiator that matters? Apple keeps building the stage and inviting developers to plug in. Their own features set the baseline; it is on us to decide whether we will design for a world where users expect their machines to be the primary place where judgment and creativity happen. If the next wave of intelligence is personal, Apple’s head start isn’t in training models—it’s in training expectations.
---
## Let's Talk About Your Next Role
> Why I ask teammates to think about their CV and what they want it to look like five years from now.
At some point, a question like this shows up in my 1:1s:
> When a future hiring manager glances at this role on your CV five years from now, what should their takeaway be?
It never happens in the first coffee chat. Once we understand how we work together, we zoom out and talk about the future story they want other leaders to see.
## Why Call the Shot Early
At a certain level, companies aren't hiring your tool kit—they're hiring you to **replicate outcomes** you've already produced. "Built the X team" or "owned the Y process" sounds like a job description. "Delivered $40M in new revenue by rebuilding the onboarding funnel" tells a future boss exactly why you belong in their org.
Framing the job that way does more than prep them for the next jump. It forces clarity on what matters now. Regardless of level, outcomes will always trump output. When we align on the result we want to be proud of later, we automatically steer toward the kind of impact that multiplies through the org right now—better focus, cleaner prioritization, stronger partnerships. Those outcomes compound even if they never leave the company.
## So What Will Those Future Bullet Points Be?
I ask them to reflect on what those bullet points on their future CV ought to be, and to ignore for that moment whatever may seem urgent or important. That forces a clarity of thought that is disconnected from the day-to-day and surfaces the gaps we need to close.
My job is to build the environment where they can make the bullet points they identify genuinely true. We adjust scope, pull in partners, or hunt for the metrics we need. It might mean clearing space to own messy problems, lining up the execs who need to see the work, or defending the project long enough for the impact to register. The question shows up in future check-ins: are the bullet points they named getting sharper or fuzzier?
And to be clear: it is their work and their responsibility. I can coach and unblock, but they own the story they're writing.
When someone's CV tells a story of meaningful outcomes, leadership roles open up faster than anyone expects—and the current org benefits because it needs those same outcomes. That's the leverage I want them to feel, because it pushes better decisions in the day-to-day work and sets them up for whatever they want next, whether that's a bigger role here or somewhere else five years out.
What bullet points are you creating right now to set your current and future self up for success?
*P.S. If you wonder what constitutes an outcome, I’m partial to Joshua Seiden’s take in "Outcome over Output": it’s any change in human or customer behavior that drives business results.*
---
## Ephemeral Software
> In the age of AI, it's not the UI that becomes ephemeral—it's the software itself. Code manifests when needed and dissolves when purpose is served.
There's a narrative emerging around Apple's new liquid glass and similar interfaces: that **UIs are becoming ephemeral**, floating at the periphery, appearing only when needed and fading away when done. It's a compelling vision of unobtrusive design. But it misses the deeper shift.
It's not the UI that's becoming ephemeral. It's the software itself.
## Beyond Interface Design
The focus on ephemeral interfaces—glass panels that fade in and out, context-aware overlays that materialize at the right moment—treats the problem as one of presentation. Make the UI less intrusive, more elegant, more responsive to context, and you've solved the problem of software's constant presence in our lives.
But the software underneath remains. The application still exists, with its code, its dependencies, its update cycles, its presence on your device or in the cloud. We've simply made it quieter.
## Software as Manifestation
What AI enables is something fundamentally different: **software that manifests when needed and ceases to exist when purpose is served**.
Not hidden behind a subtle interface. Not sleeping in the background. But actually not there until the moment you need it, then dissolved once the need passes.
This is code as pure means to an end. No installation. No maintenance. No presence outside the context of immediate purpose. You don't think about "the software" or "the app"—you think about what you're trying to do, and the necessary computation simply happens.
## The Shift in Focus
Traditional software demands attention. Even with the most refined UI, you're aware of the application, its capabilities, its limitations, where it lives, when it was last updated. The software has identity and persistence.
Ephemeral software has none of that. It exists only in service of immediate purpose. The code that handles your request might be generated on the spot, executed once, and discarded. The "application" is just a pattern of computation that appeared, did its work, and dissolved.
This changes what software *is*. Not a thing you acquire and maintain, but a capability that materializes when invoked.
## Living at the Edge of Purpose
Apple's liquid glass and other peripheral interfaces are moving in the right direction—reducing the cognitive burden of constant interaction with software. But they're still designing containers for persistent applications.
The next step is software without containers. Without the assumption of persistence. Code that forms when you have a purpose and dissolves when that purpose is complete.
This doesn't mean software vanishes entirely—the infrastructure, the models, the systems that enable this manifestation all exist. But from the user's perspective, there's no software to manage. Only purpose, and the means to fulfill it.
## A Different Kind of Transparency
Transparent UI design tries to minimize the interface between you and your intent. Ephemeral software takes this further—interfaces still exist, but they're no longer rigid, persistent things. They manifest as part of the ephemeral software itself, appearing only to the degree necessary for the task at hand.
The focus shifts entirely away from the software itself—its design, its features, its presence—toward the outcomes it enables. Code becomes truly invisible, not through clever design but through fundamental impermanence. And interfaces become fluid, forming only when purpose demands and dissolving once that purpose is served.
## No Longer Science Fiction

Watch any science fiction film and you'll see interfaces that seem absurd by today's standards. Characters speak their intent and intelligence simply does their bidding. Systems understand context without explicit instruction. Capability materializes exactly when needed, in exactly the form required, then vanishes. No applications to open, no software to maintain, no visible machinery between thought and execution.
We've always dismissed this as fantasy—divorced from the practical reality of how software actually works. The messy truth of dependencies, installations, updates, compatibility, persistence.
But that gap is closing. What looked like magical thinking is becoming a tangible near-term future.
The intelligence exists. The infrastructure exists. The capability to generate, execute, and dissolve code on demand exists. What remains is the transition from thinking about software as something we build, install, and maintain, to software as something that simply happens when purpose demands it.
The science fiction version isn't about better interfaces. It's about the absence of software as a distinct concept. Just intelligence that manifests capability in service of intent. That future is no longer fiction. It's the logical endpoint of what we're building right now.
---
## Hiring Designers Who Know Which Lever to Pull
> The three non-negotiables I expect from senior designers: relentless feedback, selling the work, and knowing when each skill should lead.
I hire designers who can already run without a playbook. The skills I don't want to spend my time teaching are exactly the ones that keep teams moving when I'm not in the room.
Tools, systems, and product context are easy to transfer. Judgment is not. So I look for three signals before we ever talk about the UX architecture, the flows we’ll extend, or how the interface gets dressed.

## 1. Get and Use Feedback
Great designers do not treat critique as a chore. They *engineer* it.
They know when to show work early to unblock an assumption and when to wait until the stakes are higher. They arrive with specific questions, not just a deck. They synthesize what they hear into decisions, not transcripts. Most importantly, they close the loop—telling partners what changed and why.
If I have to coach someone to invite the right voices, to separate taste from risk, or to turn critique into direction, we're already behind.
## 2. Sell the Idea and Make It Happen
The best designers generate buy-in as they design. They narrate tradeoffs in plain language, expose decisions to the right people at the right time, and move ambiguity forward instead of letting it stall in Slack threads.
They can articulate *why* a path is worth pursuing in a way that product, engineering, and leadership understand. They listen for friction, adapt without losing the core insight, and know when to escalate versus when to absorb feedback locally.
If I’m the only bridge between design intent and team execution, the designer is not yet ready for the work I need done.
## 3. Choose the Right Lever
Feedback (1) and alignment (2) are levers. Judgment is knowing which one changes the system, and what happens if the wrong lever is pulled.
The right move might be to bring everyone together and realign the plan, or it might be to ship with the conviction the team already has. Feedback and alignment are critical tools of the trade; they only create value when they’re deployed with intent. Designers have to read the room, the roadmap, and the risk profile before pulling either lever. If you solicit feedback in a moment that demands conviction and alignment, you dilute momentum and signal you don’t actually believe in the direction. Worse is pushing hard to sell your idea when the room is offering critical insights you need to absorb—you burn credibility and miss the improvement. I need people who sense the difference and act without waiting for permission.
## What I Bring to the Table
When those skills are present, I can go all in on supporting them—removing blockers, sharing hard-won context, and opening rooms they need to influence. I can elevate their craft with sharper critiques, give them the space to run bigger experiments, and amplify their impact across the organization because [I trust their judgment](/blog/let-go-and-trust). That is the partnership I'm hiring for.
Without them, I'd spend my time teaching behaviors that should have been forged through earlier teams, mentors, and hard projects. That's a bad trade for everyone.
There's [plenty more](/blog/finding-balance-in-leadership) to forming a great design team—but being relentless about feedback, selling the idea, and choosing when to do which is not optional.
---
## Menu Volume – Feedback First, Features Second
> How shipping MIDI Volume Control proved that no project is too small to pivot when immediate user feedback points to the real product.
No project is too small to surprise you once you talk to customers. I shipped [MIDI Volume Control](/blog/midivol-app-store) a few days ago to scratch my own itch—see that post for the backstory. First desktop app, first trip through App Store review, first time I wired a MIDI controller directly into macOS volume. I assumed the follow-up conversations would be all about latency, channel support, controller mappings.
Instead, two friends saw it in action, bought it on the spot, and then told me they didn't care about MIDI at all—they wanted the instant menu bar control. That single conversation flipped the brief: *"The sliders are perfect. The MIDI stuff is extra."* They just wanted to keep Apple Music tucked under their work without losing the soundtrack.
I built the menu bar controls as a convenience. A bonus. A simple way to see and adjust system and Apple Music volume at a glance. Turns out that *was* the product for a whole group of people. The MIDI piece—the thing I started from—is still excellent for the much smaller crew who live with MIDI controllers (like me), but it's not the headline for everyone else.
## Pivot in Real Time
It would have been easy to treat that feedback as a feature request: add a toggle, maybe expose a minimalist mode, move on. But when two trusted friends—both seasoned product people—tell you the same thing in the same hour, that's not a feature tweak. It's a pivot.
So I split it.
Today I'm launching [Menu Volume – System & Music](https://kohlhofer.com/volBar/): the same clean menu bar interface, instant access to system and Apple Music volume, zero MIDI. No setup. No extra permissions. Just the part people actually asked for. If you run Apple Music while you work, this is the fastest way to keep it in check without interrupting whatever is on screen.
## Proof on a Small Stage
Customer-centricity isn't theoretical for me; it's the operating system. As a senior design and product leader, it's the principle I live by daily. It does not matter if it's a multi-million dollar product business or a personal side project—the same principle applies. Ship something—no matter how small—and the real brief lands in your inbox if you listen. This launch just happens to be the freshest proof point.
Menu Volume – System & Music exists because of that feedback loop. MIDI Volume Control still serves the musicians and producers who want full controller integration. Menu Volume handles everyone else. Both products are clearer versions of themselves now that they don't have to share the same story.
By the way, this was also an excuse to play with Apple's new Icon Composer. It made it easy and fun to dial in a liquid glass-compatible icon and export every size without touching the old tooling. See the screenshot above.
## What's Next
I'm keeping both apps in active development. MIDI Volume Control will keep growing for the people who live with faders and knobs. Menu Volume – System & Music will stay focused on being the fastest path to volume control on macOS.
Ship, listen, respond, repeat—because the discipline that keeps big products aligned with customers is the same discipline that makes a tiny menu bar app worth using, and user feedback rules supreme at every scale.
Menu Volume – System & Music is now [live on the Mac App Store](https://apps.apple.com/us/app/menu-volume-system-music/id6753698645). Give it a try, and let me know what you think. I'm listening.
---
## MIDI Volume Control: When the Solution Doesn't Exist, Build It
> How a simple need—controlling my Mac's volume with a MIDI controller—led to building my first desktop app, now available on the App Store.
I wanted to control my Mac's volume with a MIDI controller. That's it. A simple problem with what I assumed would be a simple solution.
I have a MIDI controller on my desk for music production. It has knobs and faders. My Mac has a volume. Surely, I thought, someone has already solved this. It's such an obvious use case—anyone with a home studio setup would want this.
[](https://kohlhofer.com/midiVol/)
But when I searched, I found old forum posts, abandoned GitHub projects, commercial apps that did way more than I needed, solutions that required complex setup. Nothing simple. Nothing that just worked. So I built it.
## The Solution
With AI assistance, I built it faster than I would have thought possible even a year ago. [MIDI Volume Control](https://kohlhofer.com/midiVol/) does exactly what I needed—control both system and music volume with any MIDI controller using MIDI Learn for automatic mapping.
But I added two features that turned out to be more valuable than I expected. First, separate control for Apple Music volume. This means you can keep music playing at a lower level during meetings without killing it entirely, then easily bring it back up after. Second, handy sliders in the menu bar. I started this as a MIDI project, but I found myself using those menu bar sliders even more, especially when on the road.
It's my first desktop app. Ever. And I use it every single day, all day long.
## Learning to Ship
Publishing to the App Store was its own education. The entire ecosystem—certificates, provisioning, App Store Connect, review process—was completely new territory. But now I know how to do it. I understand the process. I can ship desktop apps.
The app exists because I needed it. Publishing it meant learning the entire ecosystem. And now others can benefit from both the app and my willingness to navigate that learning curve.
## The Pattern
This follows the pattern I'm noticing in my work—identifying obvious gaps in my own workflow, being surprised they haven't been filled, and filling them. Sometimes the most valuable things you can build aren't the most complex or innovative. Sometimes they're just the obvious things that somehow don't exist yet.
The question isn't always *"What's possible?"* or *"What's innovative?"* Sometimes it's simply *"Why doesn't this exist yet?"*
And sometimes the answer is: *"Because you haven't built it yet."*
---
**P.S.** The MIDI controller I happen to use is the absolutely adorable [8mu by Music Thing Modular](https://www.musicthing.co.uk/8mu_page/). It's a tiny, eight-fader USB MIDI controller. You can buy it assembled from Reverb if DIY isn't your thing.
---
## How I Built a Serverless Chess Analytics Platform with Game Data in the URL
> Building a free chess game analysis tool that stores everything in the URL—no servers, no databases, just instant analytics you can share with a link.
After exploring URL-based state encoding with [RockOrPop.com](/blog/rock-or-pop), I wanted to push the concept further. What if you combined URL encoding with WebAssembly and chess analysis? Could you build a completely serverless analysis platform where the game state lives in the link and the chess engine runs entirely in the browser?
The idea seemed worth exploring. Chess analysis has a natural sharing problem—after a game on Chess.com, you often want to show someone a specific position or variation. The typical workflow is clunky: copy PGN, paste into a tool, navigate to the position, explore variations... and then you can't share that exact state. What if the entire analysis session could live in a URL, with all the computation happening client-side?
That's [dxc4.com](https://dxc4.com).
## Chess Analytics, No Account Needed
[dxc4.com](https://dxc4.com) is a **free chess game analysis tool** designed around a simple idea: your entire analysis session should live in the URL. Every move, every variation branch, every position—all encoded in a shareable link.
No sign-up. No database. No server storing your games. Just instant chess analytics that you can share with anyone.

## The URL is the Database
The approach is simple: store the complete game state directly in the URL. When you analyze a game on dxc4.com, the URL updates to include all moves in the game, every variation branch you explore, your current position in the analysis, and the active branch you're examining.
It's like bit.ly for chess positions. The entire game state fits in your clipboard. Your brilliant tactics (and embarrassing blunders) can now live forever in a link.
This means when you **share chess games with a link**, the recipient sees exactly what you see—the same position, the same variations, ready to explore further. It's like sharing a Google Doc link, but for chess analysis.
Here's an example: [this link](https://dxc4.com/analyze?branches=eyJ2ZXJzaW9uIjoxLCJicmFuY2hlcyI6W3siaWQiOiJtYWluIiwibmFtZSI6Ik1haW4gTGluZSIsIm1vdmVzIjpbIk5mMyIsIk5mNiIsImM0IiwiZzYiLCJOYzMiLCJCZzciLCJkNCIsIk8tTyIsIkJmNCIsImQ1IiwiUWIzIiwiZHhjNCIsIlF4YzQiLCJjNiIsImU0IiwiTmJkNyIsIlJkMSIsIk5iNiIsIlFjNSIsIkJnNCIsIkJnNSIsIk5hNCIsIlFhMyIsIk54YzMiLCJieGMzIiwiTnhlNCIsIkJ4ZTciLCJRYjYiLCJCYzQiLCJOeGMzIiwiQmM1IiwiUmZlOCsiLCJLZjEiLCJCZTYiLCJCeGI2IiwiQnhjNCsiLCJLZzEiLCJOZTIrIiwiS2YxIiwiTnhkNCsiLCJLZzEiLCJOZTIrIiwiS2YxIiwiTmMzKyIsIktnMSIsImF4YjYiLCJRYjQiLCJSYTQiLCJReGI2IiwiTnhkMSIsImgzIiwiUnhhMiIsIktoMiIsIk54ZjIiLCJSZTEiLCJSeGUxIiwiUWQ4KyIsIkJmOCIsIk54ZTEiLCJCZDUiLCJOZjMiLCJOZTQiLCJRYjgiLCJiNSIsIk5lNSIsIktnNyIsIktnMSIsIkJjNSsiLCJLZjEiLCJOZzMrIiwiS2UxIiwiQmI0KyIsIktkMSIsIkJiMysiLCJLYzEiLCJOZTIrIiwiS2IxIiwiTmMzKyIsIktjMSIsIlJjMiMiXSwiZGl2ZXJnZW5jZVBvaW50IjowLCJwYXJlbnRCcmFuY2hJZCI6bnVsbCwiaXNBdXRvbWF0aWMiOmZhbHNlfV0sImFjdGl2ZUJyYW5jaElkIjoibWFpbiIsImN1cnJlbnRNb3ZlSW5kZXgiOjgwLCJtYWluQnJhbmNoSWQiOiJtYWluIn0=) takes you to a complete game by 13-year-old Fischer (Black).
## Why Serverless Matters
Most chess analysis tools run the engine on a server. That means infrastructure costs, API rate limits, and the need to manage user authentication to prevent abuse. For a free tool, this creates constant tension between providing good service and managing costs.
WebAssembly changes this equation entirely. Stockfish, one of the strongest chess engines in the world, can run directly in your browser. The analysis happens on your device, not on a server somewhere. This matters in several ways.
First, there are zero server costs for analysis. The tool can stay free indefinitely without worrying about scaling infrastructure or managing compute budgets. Second, there's no network latency—evaluation is instant because nothing leaves your device. Third, privacy is guaranteed—your games never get uploaded anywhere. And finally, once the page loads, it works offline.
The serverless architecture isn't just about cost savings. It fundamentally changes what's possible. Without server costs to worry about, I can focus on making the tool better rather than figuring out how to monetize it or limit usage.
## Getting Your Games In
The easiest way to start analyzing is to **import your Chess.com games directly** using [dxc4.com/import](https://dxc4.com/import). Just enter your Chess.com username, select the game you want to analyze, and you're ready to go. No need to manually copy PGN files or navigate through multiple screens.
For players who want to analyze games from other sources, you can paste any PGN directly into the analyzer. The interface supports exploring multiple variations without losing track of the main line, real-time engine evaluations as you navigate through positions, and keyboard shortcuts for quick navigation through game history.
## Try It Yourself
Head to [dxc4.com/import](https://dxc4.com/import), enter your Chess.com username, and start analyzing your games. Or paste any PGN at [dxc4.com](https://dxc4.com). When you find an interesting position or variation, copy the URL and share it.
No sign-up, no subscription, no friction. Just instant, shareable chess analysis.
Got a particularly brilliant game or a spectacular blunder? I'd love to see it—share your links on Twitter, Reddit, or wherever you discuss chess. I'm curious to see what positions people find worth sharing.
---
## AI Unblocked My Learning
> How AI has restored my ability to learn by doing, bringing back the joy of experimentation that growing responsibilities had made increasingly rare.
Most of what I know and do was learned by doing things and taking chances. Not just reading about concepts or watching tutorials, but diving in and creating something tangible. A personal website, a small web app, a music project, a design experiment. Each project taught me something new—a programming language, a design principle, a creative technique.
The abundant time and energy of youth made this possible. I could afford to be "wasteful" with my time, pursuing curiosities that might lead nowhere, building things just to see what happened. These seemingly frivolous endeavors created invaluable experience and shaped how I think about problems. A great many led to commercially successful ventures even.
But as life evolved, those projects became fewer and farther between. Responsibilities grew. Work became more demanding. The overhead of starting something new felt heavier. The payoff also got smaller relative to the effort as my knowledge and experience grew. The time to research, set up environments, debug issues, and iterate meant I had to be diligent with how I spent my time.
## The Learning Tax
It wasn't just about time, though that was part of it. It was about the cognitive load. When you're juggling a career, family, and the daily maintenance of life, the mental energy required to learn something completely new—especially something technical—can feel overwhelming. The setup alone could kill momentum before it started. A lot of my learning has shifted to learning through team efforts, which is valuable but different from the solo experimentation that shaped my early understanding.
I'd find myself thinking: *"I'd love to try building that, but I don't have time to figure out the framework, set up the environment, debug the inevitable issues..."* And so the idea would fade, replaced by more immediate concerns.
## The AI Unblocking
Now AI tools are genuinely useful. Not just for generating content, but for reducing the friction of experimentation. I can ask for help with setup and configuration, get debugging assistance when things break, generate boilerplate code to get started faster, get explanations of concepts I'm unfamiliar with, and iterate on ideas without getting stuck on implementation details.
The overhead that was blocking me is dramatically reduced. I can focus on the learning and the building, not the plumbing.
## Back to the Joy
Recently, I built [dxc4.com](https://dxc4.com/analyze?branches=eyJ2ZXJzaW9uIjoxLCJicmFuY2hlcyI6W3siaWQiOiJtYWluIiwibmFtZSI6Ik1haW4gTGluZSIsIm1vdmVzIjpbIk5mMyIsIk5mNiIsImM0IiwiZzYiLCJOYzMiLCJCZzciLCJkNCIsIk8tTyIsIkJmNCIsImQ1IiwiUWIzIiwiZHhjNCIsIlF4YzQiLCJjNiIsImU0IiwiTmJkNyIsIlJkMSIsIk5iNiIsIlFjNSIsIkJnNCIsIkJnNSIsIk5hNCIsIlFhMyIsIk54YzMiLCJieGMzIiwiTnhlNCIsIkJ4ZTciLCJRYjYiLCJCYzQiLCJOeGMzIiwiQmM1IiwiUmZlOCsiLCJLZjEiLCJCZTYiLCJCeGI2IiwiQnhjNCsiLCJLZzEiLCJOZTIrIiwiS2YxIiwiTnhkNCsiLCJLZzEiLCJOZTIrIiwiS2YxIiwiTmMzKyIsIktnMSIsImF4YjYiLCJRYjQiLCJSYTQiLCJReGI2IiwiTnhkMSIsImgzIiwiUnhhMiIsIktoMiIsIk54ZjIiLCJSZTEiLCJSeGUxIiwiUWQ4KyIsIkJmOCIsIk54ZTEiLCJCZDUiLCJOZjMiLCJOZTQiLCJRYjgiLCJiNSIsIk5lNSIsIktnNyIsIktnMSIsIkJjNSsiLCJLZjEiLCJOZzMrIiwiS2UxIiwiQmI0KyIsIktkMSIsIkJiMysiLCJLYzEiLCJOZTIrIiwiS2IxIiwiTmMzKyIsIktjMSIsIlJjMiMiXSwiZGl2ZXJnZW5jZVBvaW50IjowLCJwYXJlbnRCcmFuY2hJZCI6bnVsbCwiaXNBdXRvbWF0aWMiOmZhbHNlfV0sImFjdGl2ZUJyYW5jaElkIjoibWFpbiIsImN1cnJlbnRNb3ZlSW5kZXgiOjgwLCJtYWluQnJhbmNoSWQiOiJtYWluIn0=) mostly as a project to illustrate this way of working to a friend. I finally used WebAssembly to run Stockfish (the chess engine) directly in the browser with zero server costs. In the past, this would have taken me days of research, setup, and debugging. With AI assistance, I had a working prototype in a few hours. More importantly, I had that feeling again—the excitement of learning something new, the satisfaction of solving a problem, the joy of creating something genuinely useful to me.
It felt like a time long ago, when learning was more about curiosity and less about efficiency. When I could afford to experiment, to fail, to iterate, to discover.
## The Choice Remains
But here's the thing: AI hasn't eliminated the need for judgment. If anything, it's made it more important. The question I feature at the top of this blog becomes even more relevant: *"Of all the things you can now do, which do you choose to do?"*
The barrier to entry is lower, but the responsibility to choose wisely is greater. With less friction comes more temptation to chase every shiny new thing. The discipline of focus becomes even more valuable.
I'm grateful for this unblocking. It's restored something I had to do more selectively—the ability to learn by doing, to experiment freely, to build things just to see what happens. But I'm also mindful that the real skill isn't just in the building, but in choosing what's worth building.
The tools have changed, but the fundamental challenge remains the same: knowing what to learn, what to build, and what to let go.
I used to believe that ideas are cheap and execution is everything. Turns out now both are cheap. So are you experimenting?
---
## Meet my books
> How I built a personal book collection website to solve the frustrating problem of tracking what I've already read.
This weekend, I finally solved a problem that's been nagging me for years.
It started during a conversation about science fiction with a friend. We were discussing a novel when I caught myself saying, *"I think I've read that… but I'm not sure."* That moment summed up a recurring frustration.
Over time, I’ve read books in every format: physical shelves, Kindle downloads, Audible audiobooks, and library borrowings. But I never kept a consistent record of what I’d finished. And now I often can’t remember if I’ve read something, let alone when or what I thought of it.
So this weekend I built [kohlhofer.com/books](http://kohlhofer.com/books) as personal repository to catalog my reading.

## The Technical Approach
Rather than manually entering everything, I leaned on automation. For physical books, I photographed my shelves and used AI to transcribe the titles and authors. To my surprise, it handled obscured spines and unusual fonts with decent accuracy. I’m still working through all my shelves, but the approach is proving effective.
The site itself is a static build that pulls from CSV files containing my book data. It organizes by category, author, and format, with search and filtering baked in. For the technically curious, [DeepWiki generated full documentation](https://deepwiki.com/kohlhofer/books) from the project files.
Why not just use Goodreads or Notion? In short: I wanted something lightweight, fast, and fully mine. No ads, no platform lock-in, just a flexible system I can grow however I like.
Looking ahead, I plan to expand it with stats about my reading habits: how many books per year, which genres dominate, and how my interests shift over time. Not all that data is in the CSVs yet, but adding it is just a matter of time.
## Speed
Sometimes the best projects are the ones you can build in a weekend and actually use right away. I barely glanced at the code and I think that is ok.
Now, when someone asks if I’ve read a book, I can answer with confidence. As I add more shelves and collections, I’ll finally have a complete picture of my reading journey, one I can explore and learn from.
Just today, my daughter asked me about planetary mechanics for a story idea she was working on. Within seconds I pulled up *The Integral Trees* by Larry Niven, a novel full of wild orbital-worldbuilding sitting right there on the shelf.
---
## Your AI slop is served
> A reflection on the 'AI slop' debate, content overload, and why engaging with long-form writing matters more than ever.
I am tired of the whole "AI slop" topic and think that attempts to distinguish authorship will be short-lived. Either something is worth reading or it is not. That has always been true.

The risk isn't AI-generated content—it's AI *summarization* of content. When we rely on AI to digest and condense everything for us, we lose the deep processing, retention, and critical thinking that comes from engaging with long-form writing.
The discussion around AI-generated content often misses the point. We've always had more content than we could possibly consume—thousands of books published daily, endless blog posts and articles, social media feeds that never end. The challenge isn't new, just accelerated.
The question has always been: **What is worth your time and attention?**
## Content Quality Over Authorship
Text can be good or bad, written with or without AI. What matters is whether there are valuable ideas contained within and if they are well and appropriately expressed. The distinction between human and AI authorship is becoming increasingly irrelevant—what counts is the quality of thought and the clarity of expression.
A poorly written human piece offers no more value than a poorly conceived AI piece. Conversely, a well-crafted AI piece can contain insights worth engaging with, just as a well-crafted human piece can. The focus should be on the ideas themselves, not the tool used to express them.
## The Danger of AI Summarization
The risk I see is not AI-generated content, but AI *summarization* of content. When we rely on AI to digest and condense everything for us, we lose deep processing as long-form writing forces us to hold complex ideas in our minds, make connections, and build mental models. We lose retention as skimming summaries doesn't create the same neural pathways as wrestling with ideas over time. We lose critical thinking when we don't engage with the full argument, missing nuance, context, and the opportunity to disagree. And we lose patience as the ability to sit with uncertainty and complexity is becoming a rare skill.
## Curation Trumps Consumption
The real skill of our time isn't distinguishing human from AI content, it's curating what's worth our attention. This means being selective, not everything needs to be read, watched, or consumed. It means going deep when something resonates, give it the time it deserves. It means building context, understanding the broader conversation, not just isolated pieces. And it means trusting your judgment as you know what's worth your time.
## My Approach
I write because I enjoy capturing thoughts—old and new—in a way that feels authentic to me. Whether AI helped with the process or not is less important than whether the ideas are worth engaging with.
You'll be the judge if my writing is worth your time and attention. I know they are very much my thoughts, and I enjoy capturing them in a way that I see fit.
The goal isn't to distinguish human from AI content. It's to distinguish what's worth reading from what's not. That distinction has always mattered, and it always will.
---
## Fundamental Chess Strategy & Evaluation
> A compact cheat sheet for intermediate players (1200+), especially after a break from play.
I’ve always taken notes when reading non-fiction—distilling insights into simple, actionable principles. A few years ago, I set out to improve my chess and read several books, with The Amateur's Mind by Jeremy Silman standing out most.
My notes included a list of essential principles. By following these I saw a solid boost in my own strength (on a rather low level, mind you).
While on vacation, I didn’t have my notebooks with me—but I managed to reconstruct the core ideas with a little help from memory and a few prompts (and yes, a little AI).
## Table of Contents
1. [Opening Principles](#1-opening-principles)
2. [Middlegame Strategy](#2-middlegame-strategy)
3. [Endgame Strategy](#3-endgame-strategy)
4. [How to Think on Every Move](#4-how-to-think-on-every-move)
5. [Common Mistakes to Avoid](#5-common-mistakes-to-avoid)
6. [Time-Phase Mental Models](#6-time-phase-mental-models)
## 1. Opening Principles
The opening phase begins when pieces are still on their starting squares and ends when both sides have completed development and castled. Focus on rapid development, king safety, and establishing a solid foundation for the middlegame.
- **Control the center** – Use pawns (e4/d4) and pieces to dominate central squares.
- **Develop minor pieces early** – Knights and bishops before queen and rooks.
- **Don't move the same piece twice** – Unless forced or highly justified.
- **Don't bring your queen out early** – Avoid getting chased and losing tempo.
- **Castle early** – Secure your king and connect rooks.
- **Avoid excessive pawn moves** – Focus on piece development.
- **Develop with threats if possible** – Gain time by forcing reactions.
- **Connect your rooks** – Complete development by moving the queen off the back rank.
- **Protect your king's pawn cover** – Don't weaken it unnecessarily.
- **Know common traps** – Avoid cheap mates and openings tricks.

## 2. Middlegame Strategy
The middlegame begins after both sides have developed and castled, and continues until most pieces are traded. This is where plans are executed, tactics are found, and the battle for positional advantages takes place. Use the evaluation framework in [section 4](#4-universal-position-evaluation--move-selection) to guide your decision-making.
- **Improve the worst-placed piece** – Seek active squares.
- **Look for tactics** – Pins, forks, skewers, discovered attacks.
- **Coordinate pieces** – Ensure your pieces work together.
- **Control open files** – Especially with rooks.
- **Use outposts** – Knights on protected advanced squares are powerful.
- **Trade when ahead** – Simplify to convert an advantage.
- **Exchange imbalance awareness** – Consider position—not just material balance.
- **Don't rush attacks** – Prepare before launching.
- **Avoid pawn weaknesses** – Doubled, isolated, or backward.
- **A locked center calls for play on the wings** - an open center favors quick piece activity.
## 3. Endgame Strategy
The endgame begins when most pieces have been traded and the kings become active fighting pieces. This phase emphasizes king activity, pawn promotion, and precise calculation to convert advantages into wins.
- **Activate the king** – It's a fighting piece now.
- **Push passed pawns** – Especially with support.
- **Cut off the enemy king** – Rook endgames especially.
- **Use opposition** – Especially in king + pawn endgames.
- **Rook behind the passed pawn** – Yours or theirs.
- **Trade pieces, not pawns** – If trying to draw.
- **Centralize remaining pieces** – Especially the king.
- **Convert slowly but accurately** – Avoid blunders.
- **Avoid stalemates** – Don't give away draws when winning.
## 4. How to Think on Every Move
10-step checklist during your thinking process to evaluate any position and select the best move. Go through each step systematically, especially in critical positions.
1. **Safety First**
- Is my king safe?
- Are any pieces under threat?
- Can I be checkmated or forked?
2. **Tactical Scan**
- Are there checks, captures, or threats?
- Look for pins, forks, skewers, and discoveries.
3. **Opponent's Plan**
- What does their last move threaten?
- What would they play next if it were their turn?
4. **Piece Activity**
- Which piece is worst? Can I improve it?
- Can I coordinate pieces better?
5. **Pawn Structure**
- Any weak pawns (doubled, isolated, backward)?
- Can I create a break or passed pawn?
6. **Space & Control**
- Who controls the center or key files?
- Can I seize or contest open lines?
7. **Trade or Keep?**
- Trade when ahead; avoid trades when behind.
- Don't trade active for passive pieces.
8. **Strategic Plan**
- Do I have a clear goal (attack, defend, convert)?
- Is my move furthering that plan?
9. **Candidate Moves**
- Generate 2–3 solid options.
- Compare them based on above criteria.
10. **Sanity Check**
- Re-scan the board for blunders.
- Double-check threats, especially before committing.
- Look one move ahead for every move you consider – e.g. "If I play this, what's their best reply?"
## 5. Common Mistakes to Avoid
Review this list before and after games to identify patterns in your play. These are the most frequent errors that cost intermediate players games and rating points.
- Hanging pieces – Always check for undefended pieces.
- Hope chess – Don't make moves hoping for mistakes.
- Overextending – Don't push pawns too far without support.
- King neglect – Don't delay castling or weaken pawn shelter.
- Ignoring opponent's plan – React as well as act.
- Bad trades – Don't swap active pieces for passive ones.
- Tunnel vision – Always scan the whole board.
- Tempo waste – Don't make non-developing or repetitive moves.
- Over-relying on traps – Tricks work occasionally, strategy works always.
- Clock misuse – Don't blitz or freeze at critical moments.
## 6. Time-Phase Mental Models
Use this table to adjust your thinking based on the current game phase. Each phase requires different priorities and questions to guide your decision-making process.
| **Phase** | **Ask Yourself** |
| ---------------------- | ------------------------------------- |
| **Opening** | How do I develop fast and safely? |
| **Early Middlegame** | What weaknesses can I exploit? |
| **Middlegame** | What is my long-term plan? |
| **Late Middlegame** | Simplify or complicate? |
| **Endgame Transition** | Who has the better long-term chances? |
| **Endgame** | How do I promote (or stop promotion)? |
| **Balanced/Equal** | Look for small advantages to press—space, better bishop, safer king. |
| **Winning** | What's the cleanest conversion path? |
| **Losing** | Can I complicate, trap, or draw? |
---
## Art, Design, and the Question of Purpose
> On the fundamental difference between art and design: one serves itself, the other must serve others.
A friend reminded me that commerce shadows both art and design—and that design can reach the emotional depths we reserve for 'fine art.'
I've come to a rather simple (and maybe simplistic) understanding:
> Art does not need to serve a purpose beyond itself, while all design *must* serve an external purpose.
This isn't about quality or depth—both can reach profound heights. It's about the fundamental nature of each discipline. Design, even at its most experimental or aesthetically driven, must ultimately serve something beyond itself. A chair must invite sitting. A logo must signal identity. A website must simply work. The moment design fails to serve its purpose, it fails as design—no matter how beautiful or thought-provoking it might be.
Art, on the other hand, can exist purely for its own sake. It doesn't need to serve any purpose beyond its own existence. This doesn't mean it can't serve a purpose—art can educate, provoke, comfort, challenge—but it doesn't *need* to. Art can simply be.
## The Internal Drive
And here's what I believe to be a second, crucial distinction: True artists need to externalize something inside them. So much so that it cannot be repressed. In my view, authentic artistic creation doesn't happen in service to an audience, but emerges from this internal necessity.
I can sense when this internal drive is missing. When art is created primarily to please an audience or market, it often feels hollow to me—technically proficient perhaps, but lacking that essential spark that makes art resonate on a deeper level. It's not that the work isn't valid or valuable, but it's operating under design principles (serving an external purpose) while presenting itself as art.
## The Commerce Question
Yes, artists need to eat. They sell their work, build their brands, engage with the market. But this is secondary to the act of creation. The true artist would create even if no one was buying. They create because they must.
Designers, by definition, create *for* others. We solve problems. We communicate messages. We shape experiences. Our success is measured by how well we serve these external purposes. The fact that we might find deep personal fulfillment in this service doesn't change its fundamental nature.
## It's not a hierarchy; it's a difference in function.
This distinction isn't about establishing a hierarchy. Design isn't "less than" art because it serves a purpose, any more than art is "less than" design because it doesn't have to. They are different domains with different fundamental natures.
Great design can move us as deeply as great art. It can reshape how we see the world, how we interact with it, how we understand ourselves. But it does this while serving its purpose, not by transcending it.
## The Liberation of Purpose
Understanding this distinction liberates us as designers. We don't need to transcend our service to purpose—it's the very essence of our craft. Our creativity thrives within constraints, our innovation emerges from problems to solve, our success measured by how well we serve others' needs.
For years, my website carried this simple statement: "I am a designer by heart and by trade. Luckily design applies to everything." Look around you—virtually everything human-made that surrounds us has been designed. From the chair you're sitting in to the words you're reading, from the cup you're drinking from to the city outside your window. Each object, each interface, each system was created to serve a purpose beyond itself.
That's the beauty and reach of design—it shapes
our entire built world. And in that way, while
art can transcend purpose, design *is* purpose
made manifest.
---
## RockOrPop.com: Turn Any YouTube Playlist into a Virtual Cassette
> Turn any playlist into a customizable mixtape—no log-ins, no algorithms, just intentional listening.
I still buy and listen to tapes.
There's something about the physicality of it—the way you have to commit to an album, the ritual of putting it in the player, the way you can't just skip around mindlessly. A friend once told me that listening to music on physical media like vinyl is paying homage to the artist. You commit to it, you have to get up and make a choice, you handle and appreciate the cover and art. It's an intentional act.
All of that is lost in a world of algorithmic streaming services.
The inspiration for this project struck when I revisited an old analog cassette web component I'd built years earlier. There is something magical about that specific physical interface—the way the tape would spool, the satisfying click of the play button, the visual feedback of progress through a mixtape. I wondered if I could evoke that tactile, nostalgic feeling while sharing music online? (I had recently explored using YouTube APIs for sharing music on my [personal site](https://notsocommonthoughts.com/blog/music-page-youtube/).)
## Turn a YouTube Playlist into a Digital Mixtape
The concept was straightforward: create a web app that transforms YouTube playlists into virtual cassette tapes. Users could customize their "mixtapes" with different cassette designs, colors, and backgrounds, then share them with friends. It's the digital equivalent of making someone a mixtape—personal, curated, and visually distinctive.
Using YouTube as a backend has the added benefit that I don't have to deal with copyright and piracy issues myself. The platform handles all the licensing, and users can access virtually any song that's available on YouTube.
The cassette interface isn't just a gimmick; it's a deliberate choice to slow down our consumption of music. Instead of mindlessly clicking through tracks, users engage with their playlists through a familiar, comforting interface that encourages intentional listening.
## The Domain
It turned out I happened to have a fitting domain from years prior: [rockorpop.com](https://rockorpop.com). I had purchased it for a different project but it seems quite fitting as the simple question captures the essence of music discovery and personal taste.
## Under the Hood
The app uses React and TypeScript to integrate YouTube's API, managing state between player controls and cassette animations. Since it's a serverless static web app, social media previews are generated dynamically—each cassette configuration creates a unique Open Graph image for sharing.
## The Social Aspect: Sharing Mixtapes
Every cassette configuration is encoded in the URL, making sharing as simple as copying a link. This approach eliminates the need for databases, user accounts, or complex backend systems. When someone opens a shared mixtape, they see exactly what the creator intended—the same design, the same playlist, the same vibe.
In a sense the technology itself is simplistic which seems quite fitting for the application.
## Design: The Art of Nostalgia
The app features 5 cassette cover designs, 10 shell colors for personalization, 24 background styles to set the mood, and custom tape labels. They all are made to evoke specific emotions and memories, from the classic TDK-style covers to vibrant neon shells that feel distinctly 80s. I had a blast making it all.

The cassette animations are more than just visual flair—they provide meaningful feedback about playback state. Tape spooling indicates progress through the playlist.
I have strived to reduce the prominence of the video player while still being compliant with the YouTube terms of service.
## Does anybody need this?
It's a statement about how we interact with digital media. It's about slowing down, being intentional, and creating experiences that feel human in an increasingly automated world.
The cassette metaphor works because it's universal—everyone understands the concept of a mixtape, the care that goes into selecting tracks, the personal nature of sharing music and the literal linearity of tape.
Rock or Pop? is live at [rockorpop.com](https://rockorpop.com). Try making your own mixtape and share it with someone who matters.
What's your cassette aesthetic? Are you a classic TDK person, or do you prefer the neon vibes?
---
## Are We Intelligent?
> While others were affirming that AIs could not truly think or even understand, I found myself wondering if I was any different.
The more I interact with Large Language Models, the more I question my own intelligence. It's a strange sensation that I tried to articulate during a dinner with friends in San Francisco a few years ago. While others were affirming that AIs could not truly think or even understand, I found myself wondering if I was any different. After all, if we dismiss LLMs for "just" predicting patterns and matching expectations, what exactly do we think we're doing?
## The Echo Chamber of Intelligence
The debate around AI intelligence often feels like we're missing the forest for the trees. We scrutinize these models, testing their ability to reason, create, and understand, all while taking our own intelligence as a given. But what if we're approaching this from the wrong angle?
## Pattern Recognition, All the Way Down
Consider this: when we communicate, aren't we essentially predicting and producing patterns that meet societal expectations? We form sentences based on our learned understanding of language, social cues, and contextual appropriateness. Are we more than pattern-matching machines, drawing from our training data—life experiences, education, and cultural exposure?
LLMs do something remarkably similar. They predict the next most likely word or concept based on their training. The key difference? We can see their training data, while ours remains a black box of neural connections and lived experiences.
## The Expert Paradox
Here's where it gets interesting: LLMs' responses to quantum mechanics might only appear lacking to quantum physicists. To most of us, their explanations would seem not just adequate but impressively comprehensive. This mirrors human expertise—we only recognize the limitations in our own fields of mastery.
Think about it: how many of us could meaningfully challenge a quantum physicist's explanation? We accept their expertise because it matches our expectations of what expertise should look like, not because we truly understand the underlying concepts.
I get that same sense from my interactions with LLMs.
## The Social Performance
In our daily lives, we're constantly performing. We choose words that meet expectations, crafting responses that align with social norms, and presenting thoughts in culturally acceptable patterns. Is this fundamentally different from what LLMs do? They're optimizing for human-like responses, while we're optimizing for social acceptance and understanding.
## A Mirror to Our Own Processes
[](/images/robot_reflection.jpg)
When we interact with advanced AI systems, we're not just testing their capabilities—we're examining our own. The uncanny valley of AI interaction might be unsettling not because these systems are so different from us, but because they're revealing how similar our own cognitive processes might be to theirs.
Instead of asking whether LLMs are intelligent, perhaps we should be asking: What does our reaction to AI tell us about our understanding of human cognition? How much of what we consider "intelligence" is actually pattern matching and expectation fulfillment?
*The next time you find yourself questioning whether an AI is truly intelligent, take a moment to examine the criteria you're using—and whether you hold yourself to the same standard.*
---
## Revisiting the world of Weewar
> How building a hex map generator brought back memories of creating one of the web's first strategy games.
Working on a little playful hex map generator just brought back a host of fond memories. For those who might remember, Weewar was a turn-based strategy game I created in the mid-2000s that was among the earliest browser-based gaming experiences. With thousands of active players, it broke new ground with its open API that enabled academic research (into AI, no less!) and countless maps the community generated.
## The Spark of Nostalgia
I just shared this [hex map generator](https://kohlhofer.com/hex-map/) as part of my [kohlhofer.com/bits](https://kohlhofer.com/bits) collection, and found myself drawn back into the familiar patterns of hex-based game design. There's something deeply satisfying about the mathematics of hexagonal grids—the way they tessellate, how movement and adjacency work, the elegant simplicity of it all.
[](https://kohlhofer.com/hex-map/)
This little sketch generates Tolkien-esque fantasy landscapes with rolling grasslands, dense forests, towering mountains, mysterious swamps, and vast deserts. Cities, towns, and villages appear strategically placed across the map, connected by winding road networks that feel natural and purposeful. Each click brings a new world to life.
## Remembering Weewar
At a time when browser games meant simple Flash animations or basic JavaScript, we built something that was rooted in modern web technology. It got a lot of attention in the Silicon Valley tech scene, who was otherwise pretty uninterested in the world of gaming. Anecdotes like tanking the productivity in the Flickr offices helped with that.

Weewar's success ultimately caught the attention of Electronic Arts, who acquired it—a validation that what we'd built had real value in the emerging world of web-based gaming. This also kicked off my second stint of living and working in the US.
## Fun Fact
Can you imagine that I started [Spreedly.com](https://spreedly.com) in part so we could collect payments in Weewar? The payment landscape back then was so fragmented and complicated that we ended up building our own solution just to handle subscriptions and premium features. What started as a necessity for our game eventually became a payment juggernaut transacting billions of dollars.
## Looking Forward
What surprises me most is how this little exploration has rekindled my appetite for game development. There's something about hex grids, strategic thinking, and building worlds that still calls to me after all these years. Maybe it's time to revisit that space—not to recreate Weewar, but to explore what modern web technologies and over a decade of additional experience might bring to the table.
You can [play with the hex map generator yourself](https://kohlhofer.com/hex-map/) and see if it sparks any creative ideas for you too. Sometimes the best way forward is to remember where you've been.
*For fellow Weewar veterans who might stumble across this—thank you for being part of that incredible journey. The game may be gone, but the memories and lessons learned continue to inspire new projects.*
---
## Finding Balance in Leadership
> The art of setting guardrails that empower rather than constrain.
I had an interesting chat at work the other day about micro-management. It reminded me about this long held belief that much of leadership is really about setting guardrails and finding the right balance.

Set the guardrails too tight, and you crush any chance of real ownership or fresh ideas. Too loose, and people are just flailing around without direction. You're not doing anyone any favors either way.
The tricky part is that the sweet spot looks different for everyone. Some people need more structure, while others thrive with more freedom. It's not about finding one perfect formula—it's about tuning it to each person and situation.
When you get it right though, that's when the magic happens. The team's results greatly exceed your own abilities and aspirations. People actually care about what they're doing because they have the space to make it their own. They're not just following your playbook—they're writing a better one together.
This is what leadership is about to me: creating just enough structure to keep things moving forward, while leaving plenty of room for others to surprise you. Isn't this how we all deserve to be treated? And I would not want to work without those moments of delight and surprise.
*Note: Some of my thoughts on this were likely informed by "The New One Minute Manager" which I read years ago, particularly its Situational Leadership model that emphasizes tailoring leadership style to each person's development.*
---
## The Unreality of Work
> On the growing disconnect between our daily routines and a world in crisis.
There's something deeply unsettling about being comfortable when you shouldn't be.
During the early days of COVID, I watched as friends and colleagues were suddenly thrust into remote work, isolated in small apartments, struggling to balance work and childcare, while people around the world were dying in unprecedented numbers. The world felt like it was collapsing, and yet there I was—already working remotely for years, living in a spacious home, almost enjoying the kids' remote schooling.
I should have been grateful, and I was. But I was also troubled.
The contrast was jarring. While others were experiencing genuine hardship and loss, my daily routine barely changed. I continued to sit at my desk, attend meetings, review designs, manage projects—all while the world outside was in crisis. It made work feel surreal, disconnected from the state of the world.
How do we balance our professional responsibilities with our awareness of global challenges? When does focusing on work feel like turning away from reality?
## The Challenge of Context
Work became a study in compartmentalization. We'd log into Zoom, discuss quarterly goals, plan sprints, debate technical decisions—all while trying to maintain focus despite the weight of world events. The meetings felt increasingly like exercises in maintaining normalcy in abnormal times.
## Fast Forward
If anything, the sense of unreality has only grown worse. The systems that have been stable for decades are dissolving. Wars and conflicts rage. Political discourse has become unrecognizable. The climate crisis accelerates. And then there is the specter of AI—with its great promises and simultaneous threats to change everything we've come to rely on.
Knowledge work, the economy, education, healthcare, governance—all of it is being transformed by forces we barely understand. And yet we continue to play our part.
## The Discomfort of Comfort
The most challenging part is staying meaningfully connected to the world while maintaining our effectiveness at work. How do we keep our awareness of global events from paralyzing us, while also not letting our work completely insulate us from reality?
My commitment to my family and my teams requires maintaining stability, even when that work feels small against the backdrop of global events. The very comfort that troubles me is also what I'm obligated to maintain.
Perhaps what's missing is more open dialogue about this tension. In our professional lives, we rarely discuss how to balance immediate responsibilities with broader awareness. Nobody forces this silence. It's just an unspoken agreement to focus on the task at hand.
## The Uncertainty
This isn't a positive post. I don't have answers. But I do have questions. And sometimes, in the midst of all this pretending, that feels like the most honest thing I can offer.
What makes it worse to me still, is that a great many people seem to either genuinely don't see any of this—or worse, actively cheer it all on.
---
## AI Expectations and Self-Fulfilling Prophecies
> How our cultural narratives about AI might be shaping its development more than we realize
I was reading this article about how Anthropic's [new AI model shows ability to deceive and blackmail](https://www.axios.com/2025/05/23/anthropic-ai-deception-risk) and it got me thinking: there's a strange contradiction in telling AI to be nice while training it on stories about how it's going to destroy us all.

HAL 9000, David, Skynet, Ultron – our AI stories are about the many ways AI will end humanity. LLMs are really good at meeting expectations, and the expectation is clear: our collective anxiety about AI taking over. We've spent decades telling stories about AI turning evil, and now we're building systems that are excellent at understanding and possibly replicating these narratives based on endless training data.
So maybe a little worry is warranted after all.
---
## MapsAll.com: Mindmapping with AI
> The journey of creating a mind mapping tool that evolved from experimental prototypes to a full-featured product.
What started as a D3 prototype turned into my daily thinking tool. [MapsAll.com](https://mapsall.com) is where AI meets spatial thinking—a mind mapping platform that helps me (and now others) make sense of everything from meeting notes to strategy docs.

## Why Spatial Interfaces?
The core idea behind MapsAll is simple: LLMs are powerful, but interacting with them through linear text is like exploring a forest with a flashlight—you only see one thing at a time. Spatial interfaces offer a more natural way to interact with AI-generated content, making it easier to spot connections and navigate complex information landscapes.
With MapsAll, you can dive into any topic from a simple prompt and generate a comprehensive mind map. The AI breaks down complex subjects into interconnected nodes, creating a visual structure that reveals relationships and hierarchies at a glance. It’s like having a conversation with an AI that thinks in maps instead of paragraphs.
## The Beginning: Vibe Coding Experiments
It all started with a simple D3-powered mind mapping prototype I created as a proof of concept on AI and spatial interfaces. You can still see this early version at [kohlhofer.com/mindmap](https://kohlhofer.com/mindmap) (I removed the AI functionality but it come with examples). This was my first attempt at creating an interactive mind mapping tool, and it was a great learning experience in D3.js, AI, and the fundamentals of mind mapping interfaces.
I published the prototype as a part of my "Bits & Pieces" collection - a series of creative experiments where I explore the intersection of design, code, and art. You can find it alongside other experiments at [kohlhofer.com/bits](https://kohlhofer.com/bits).
## Evolution to a Full Product
After the initial prototype, I created a more deliberate version of MapsAll with a better architecture and proper user management. This version includes all the essential features a product needs:
- User authentication and management
- Blog for updates and tutorials
- Pricing page
- Shared maps functionality
- And more...
## Daily Usage
What started as an experiment has become an integral part of my daily workflow. I use MapsAll for tracking todos, organizing books I'm reading, planning projects, and structuring blog posts. It's become my go-to tool for organizing thoughts and ideas, whether I'm working on a new project or just trying to make sense of my reading list. One of the most valuable features is the ability to translate long-form meeting notes into spatial maps using AI, which helps capture all key aspects in a structured, visual format that makes complex discussions much easier to navigate and reference later.

You can see some of my [shared maps](https://www.mapsall.com/users/cm9m83cfc0000ie04e9bf8f39), like this deep dive into [the state of AI](https://mapsall.com/shared/cmaszgklx0003l204aap7cbti).
### Community Growth
The most exciting part is seeing others start to use and share their maps. For example, check out this [shared map](https://mapsall.com/shared/cmay671ts0004lb04iszweim8) from another user.
## What's Next?
The journey from “vibe coding” to a full product was fast, hands-on, and deeply educational. I found myself switching hats constantly—designer, developer, marketer, user, tester—each iteration pulling the idea forward a little more. It was rapid, messy, and rewarding.
Whether you're a founder, a student, or just someone with too many thoughts to hold in one place—give [MapsAll.com](https://mapsall.com) a try. I'd love to hear how you're using it and what maps you're making.
I'm excited to continue developing MapsAll.
---
## About this Site
> I asked AI to tell me what Not So Common Thoughts is all about.
*I asked an AI to analyze Not So Common Thoughts and create a description:*
> Not So Common Thoughts is a personal blog exploring the intersection of design, technology, and human creativity. Through thoughtful analysis and personal experiences, it examines how modern tools and AI are reshaping our approach to design, coding, and creative work, while maintaining a focus on the human elements of judgment, intuition, and meaningful decision-making.
I think it captured the essence quite well. It also highlights the personal nature of the content. What do you think? Does this description resonate with your experience of the blog?
---
## Implementing LLMs.txt: Making Your Blog AI-Friendly
> How and why I implemented the LLMs.txt standard to make this blog more accessible to AI tools.
In an era where AI tools increasingly help us interact with web content, making your website AI-friendly has become as important as making it human-friendly. Today, I implemented the emerging LLMs.txt standard on this blog to better serve both human readers and AI assistants.
## What is LLMs.txt?
The [LLMs.txt specification](https://llmstxt.org) is a proposed standard for helping Large Language Models (LLMs) better understand and interact with websites. Similar to how `robots.txt` guides search engines, `llms.txt` provides a structured way to present your content to AI tools.
The key difference is that while `robots.txt` tells bots what they can and cannot access, `llms.txt` helps AI tools understand your content more effectively by providing:
- A concise overview of your site
- Curated links to important content
- Clean, markdown-formatted versions of your content
## Why Implement It?
LLMs often struggle with complex HTML pages that include navigation, ads, and JavaScript. They have limited context windows and need content in a more digestible format. By implementing `llms.txt`, we help AI tools:
1. Quickly understand the purpose and structure of our site
2. Access content in a clean, parseable format
3. Make better decisions about which content is relevant
4. Provide more accurate assistance to users
## Implementation in Astro
Following the guide from [Scalable Developer](https://scalabledeveloper.com/posts/llms-txt-with-astro/), I implemented two endpoints in my Astro blog:
1. `/llms.txt` - A concise overview with links to all blog posts
2. `/llms-full.txt` - Complete content of all posts in markdown format
The implementation uses Astro's API routes and content collections. Here's a simplified version of the code:
```typescript
import { getCollection } from 'astro:content';
import type { APIRoute } from 'astro';
export const GET: APIRoute = async () => {
const posts = await getCollection('blog');
return new Response(
`# Not So Common Thoughts
> Not So Common Thoughts is a personal blog exploring the intersection of design, technology, and human creativity.
## Blog Posts
${posts.map(post =>
`- [${post.data.title}](https://notsocommonthoughts.com/blog/${post.slug}/)`
).join('\n')}`,
{
headers: {
'Content-Type': 'text/plain; charset=utf-8'
}
}
);
};
```
You can see the results at:
- [/llms.txt](/llms.txt) - The concise version
- [/llms-full.txt](/llms-full.txt) - The complete content version
## The AI-Assisted Implementation
What makes this implementation particularly interesting is that it was created with the help of AI. Using Cursor, an AI-powered code editor, I was able to implement this feature with just three simple prompts:
> Can you generate LLMs txt as per these instructions: @https://scalabledeveloper.com/posts/llms-txt-with-astro/
> background on the format and purpose is here: @https://llmstxt.org
> Can you write a blog post about this work, including the why, the how? Include relative links to the resulting work and also to the two resources i gave you. Tag with "Coding", "Artificial Intelligence"
> please add a section to the post that reveals that my two prompts in cursor (as quotes) were
This meta-example perfectly illustrates the value of making content AI-friendly: by providing clear, structured content and documentation, we enable AI tools to help us implement new features more efficiently. The AI was able to understand the requirements, implement the solution, and even write this blog post about the process.
## Looking Forward
As AI tools become more integrated into our daily workflows, standards like `llms.txt` will play an increasingly important role in making web content more accessible and useful. This implementation is just the beginning - I expect we'll see more sophisticated ways of helping AI tools understand and interact with our content in the future.
For now, this simple addition makes my blog more accessible to AI assistants, coding tools, and other AI-powered services that might want to help users understand or work with my content.
If you're interested in implementing this on your own site, check out the [LLMs.txt specification](https://llmstxt.org) and the [Astro implementation guide](https://scalabledeveloper.com/posts/llms-txt-with-astro/).
---
## Don't just do more, think more
> A personal reflection on how AI-driven productivity gains should be reinvested in thinking, not just doing.
For as long as I can remember, I've made it a point to carve out time for thinking—real, undistracted thinking. It's a habit that has shaped my work and my life, even before AI started transforming the way we get things done.

Now, with AI making so many tasks faster and easier, it's tempting to use every saved minute to simply do more. But I've learned that if I fill all that reclaimed time with more tasks, the real value of these productivity gains gets lost in the noise of a busier day.
Instead, I try to protect some of that time for reflection. I let my mind wander, connect ideas, and sometimes get a little constructively distracted. This isn't just a luxury—it's a practice that keeps me adaptable and creative, not just efficient.
The world may be obsessed with productivity, but I've believe that the future belongs to those who make space for critical thinking, not just those who check off the most boxes.
---
## AI and the Rise of Judgement Over Technical Skill
> As AI removes technical barriers, judgement becomes the key differentiator.
*A version of this post was first published on [MapsAll](https://www.mapsall.com/blog/ai-and-judgement).*

In 1995, musician and producer Brian Eno made a profound observation about computer sequencers that has become increasingly relevant in our AI-powered world:
> The great benefit of computer sequencers is that they remove the issue of skill, and replace it with the issue of judgement. With Cubase or Photoshop, anybody can actually do anything, and you can make stuff that sounds very much like stuff you'd hear on the radio, or looks very much like anything you see in magazines. So the question becomes not whether you can do it or not, because any drudge can do it if they're prepared to sit in front of the computer for a few days, the question then is, 'Of all the things you can now do, which do you choose to do?'
## The Parallel to AI
Eno's insight perfectly captures what's happening with AI tools today. Just as computer sequencers democratized music production, AI is democratizing a wide range of creative and professional tasks:
- Writing and content creation
- Image generation and design
- Code development
- Data analysis
- Problem-solving
The technical barriers that once separated amateurs from professionals are rapidly dissolving. Anyone with access to AI tools can now produce work that, at least superficially, resembles professional output.
## The New Differentiator: Judgement
As Eno predicted, the key differentiator is no longer technical skill but judgement. When everyone can generate content, code, or designs, the real value lies in:
1. **Knowing what to create**: Understanding what's worth making in the first place
2. **Making meaningful choices**: Selecting the right approach from countless possibilities
3. **Evaluating quality**: Distinguishing between good and great outputs
4. **Understanding context**: Applying the right solution to the right problem
## The Future of Work
As AI continues to evolve, we'll see more roles shift from technical execution to strategic judgement. The most valuable professionals will be those who can:
- Ask the right questions
- Frame problems effectively
- Make sound decisions
- Provide meaningful direction to AI tools
## Conclusion
Eno's observation from nearly 30 years ago has become a blueprint for thriving in the AI era. The question is no longer "Can you do it?" but "What should you do, and why?" As technical barriers continue to fall, our ability to exercise good judgement becomes our most valuable asset.
---
## Interior Design Fundamentals
> Exploring the core principles of interior design through Noah Daniel's insightful video series, covering ground rules, material palettes, and lighting.
In today's world of social media and quick-fix design advice, it's easy to find interior design content that looks good on the surface but lacks substance. Many popular design tips focus on superficial aesthetics without considering the fundamental principles that make spaces truly work. That's why I've been following Noah Daniel since he first appeared on YouTube - his approach to design resonates deeply with me. His videos capture an essence of design that goes beyond mere aesthetics, focusing on fundamental principles that create meaningful and functional spaces. Here are three of his insightful videos that cover core aspects of interior design.
## 1. Ground Rules for Interior Design
Noah breaks down four essential principles that should guide every design decision. The first principle, **Form Follows Function**, emphasizes that every design element must serve a purpose. Aesthetics should never compromise functionality, and the space must work for its intended use.
The second principle, **Honest Materials**, encourages us to use materials that are true to their nature. This means avoiding materials that try to be something they're not, and instead letting materials speak for themselves.
**Consider the Context** is the third principle, which reminds us that design should respond to its surroundings. This involves understanding the building's history and location, and creating harmony with the existing environment. It's about designing for the specific place rather than applying generic solutions.
Finally, **Authentic Placemaking** focuses on creating spaces that feel genuine and meaningful. The design should tell a story and reflect the people who use them. This principle helps avoid the cookie-cutter approach that's become so common in modern interior design.
## 2. Material Palettes
This video is one of my personal favorites, as it helped me develop a deeper appreciation and technical understanding for design choices I had been making intuitively. Noah's exploration of material palettes goes beyond the surface-level "what looks good together" approach, diving into how to create cohesive material relationships that work together harmoniously.
## 3. Lighting Design
What makes Noah's approach particularly valuable is how he connects principles to create cohesive, meaningful spaces. His emphasis on authenticity and function over pure aesthetics creates designs that are not just beautiful but also practical and enduring.
The way he explains these concepts makes them accessible while maintaining their depth and importance. It's this combination of practical knowledge and philosophical understanding that makes his content so valuable for anyone interested in interior design.
Whether you're a professional designer or someone looking to improve their living space, these videos provide a solid foundation for understanding what makes good design work. They remind us that great interior design is about creating spaces that are not just visually appealing but also functional, authentic, and meaningful to the people who use them.
---
## Permission to Enjoy
> A reflection on seniority, freedom, responsibility, and the power of a mentor's simple advice.
A manager and mentor of mine once gave me advice that stuck: just do more of the things you enjoy.
With seniority comes freedom—but also responsibility, and, more often than not, stress. I'm expected to figure out my own goals and the best way to have impact. That's a lot to carry, and it's easy to get stuck in the daily mire of meetings, process, and busy work.
**Just do more of the things you enjoy**
That simple cue was exactly what I needed. It helped me de-clutter my days, find more joy in my work, and, as a result, have more impact.

---
## Building a Music Player: YouTube as a Backend
> How I built a music player for kohlhofer.com that pulls from a YouTube playlist, fetches video backgrounds, and focuses on an integrated audio/visual listening experience.
The [music page](https://kohlhofer.com/music) on my site is a simple but effective way to share my electronic music. Instead of uploading tracks or managing files, I just maintain a dedicated playlist on YouTube. The site pulls in the latest videos from that playlist automatically.
I fetch the background image for each track using the YouTube API. The result is a dynamic, ever-changing backdrop that matches the currently playing video.
Users get a focused, centered experience: you can shuffle, play, pause, and skip tracks right from the page. No distractions, no clutter—just music and visuals, front and center.
[](https://kohlhofer.com/music?v=7MWWRs_Nyj8)
Another nice touch: the URL auto-updates as you play, allowing for deep linking to specific videos. That means you can share a direct link to any track—like [this one](https://kohlhofer.com/music?v=7MWWRs_Nyj8), which is a fairly early piece paired with a snapshot of a nice moment in France.
---
## Let Go and Trust
> A reminder that excellence comes from trust, not control.
This section from another post makes for a good reminder for myself:
> My experience as a manager and team leader has taught me that the best results come when you let go of control and trust the people (and now, the tools) you work with. Excellence rarely comes from micromanagement or rigid prescriptions—it comes from creating space for others to contribute, experiment, and surprise you.
— from [Vibe Coding kohlhofer.com: Creation at the Speed of Thought](/blog/vibe-coding-kohlhofer)
---
## Visualizing Chaos: The Lorenz Attractor
> A fun exploration of chaos theory through code, creating an aesthetic visualization of the Lorenz attractor using P5.js.
## A Primer on Chaos Theory
Chaos theory studies how small changes in initial conditions can lead to vastly different outcomes - the famous "butterfly effect." The Lorenz attractor, discovered by meteorologist Edward Lorenz in 1963, is one of the most iconic examples of this phenomenon. It's a set of chaotic solutions to a simplified system of equations that model atmospheric convection.

What makes the Lorenz attractor fascinating is its "strange attractor" behavior - the system never repeats exactly the same path, yet it's confined to a specific region in space, creating an intricate, butterfly-like pattern that's both deterministic and unpredictable.
## CodePen and Aesthetic Visualization
I created this visualization on [CodePen](https://codepen.io/kohlhofer/pen/ZExzGLK/6dcf9eed602926b0ea193420e56bd4e4), using P5.js to bring the mathematical concept to life. P5.js proved to be the perfect tool for this project - its simplicity and animation capabilities made it possible to create an interactive visualization with relatively few lines of code.
The result is a piece that captures both the mathematical beauty and the chaotic nature of the system. From there, I simply ported it to [kohlhofer.com/lorenz](https://kohlhofer.com/lorenz). You can read more about that process in [this post](https://kohlhofer.com/blog/vibe-coding-kohlhofer).
## The Technical Side
The core of the visualization is surprisingly simple - just three differential equations:
```
dx/dt = σ(y - x)
dy/dt = x(ρ - z) - y
dz/dt = xy - βz
```
Where σ (sigma), ρ (rho), and β (beta) are parameters that determine the system's behavior. The magic happens when we integrate these equations over time, plotting the resulting points in 3D space.
## The Aesthetic Approach
While the mathematics behind the Lorenz attractor is fascinating, I wanted to create something fun. The visualization features smooth, flowing animations and dynamic camera movements that bring the mathematical concept to life. You can experience the full version at [kohlhofer.com/lorenz](https://kohlhofer.com/lorenz), where you can watch the system evolve in real-time.
## Part of a Larger Collection
This project lives in my "Bits & Pieces" collection at [kohlhofer.com/bits](https://kohlhofer.com/bits) - a playground where I dump my afternoon coding experiments and visual explorations. It's where I try out new ideas, play with different technologies, and create things just for the fun of it. The Lorenz attractor is just one of many experiments where I mix code, design, and a bit of mathematical curiosity to create something visually interesting.
## What's Next?
The Lorenz attractor visualization serves as a perfect example of how mathematical concepts can be transformed into engaging visual experiences, making complex ideas more accessible and enjoyable to explore.
---
## Vibe Coding kohlhofer.com: Creation at the Speed of Thought
> How I built kohlhofer.com trying out a new approach to design and software development.
_**Edit (May 2025):** Since writing this, "vibe coding" has become a mainstay term. I still think it's a terrible name—but the approach and speed it describes are here to stay._
I built the new version [kohlhofer.com](https://kohlhofer.com) in just a few days, and the process felt less like a solo project and more like collaborating with a high-performing team—only much faster. Some people call this "vibe coding"—letting intuition, rapid iteration, and AI support drive the entire creation process. I don't love the term (it's not mine), but it does capture the spirit of how quickly and fluidly things came together.
## Did I code it? Defenitely not.
Did I design it? Absolutely. But not in the traditional sense. I directed the design much like you would when working with a great team of designers: setting the vision, making key decisions, and letting the details emerge through fast feedback and iteration. With AI as my creative partner, the boundaries between design, content, and implementation blurred. It was all happening at once.
## Rethinking engineering principles?
Coding principles like DRY (Don't Repeat Yourself) matter less because the AI is perfectly happy to update navigation elements or content in multiple places. And with the site hosted on GitHub Pages, deployment and updates are effortless. The friction of manual updates is gone, so you can focus on what matters—clarity and experience. It's a simple, robust solution for a personal site that's always evolving.
## Iteration Over Implementation
The [maps page](https://kohlhofer.com/map) on kohlhofer.com is a great example of this new workflow. It's built with D3, and the core implementation didn't take long at all. What surprised me was how much of my time was spent not on the technical side, but on iterating through the presentation and design details—colors, layout, interactivity, and how the data should feel. With AI and modern tools, I could focus entirely on the result and the user experience, rather than wrestling with the underlying code.
The [bits page](https://kohlhofer.com/bits) is another testament to this new way of working. I took some of my older CodePen explorations—like the [City](https://kohlhofer.com/city) generator and [Lorenz](https://kohlhofer.com/lorenz) visualizations—and quickly ported them over to the site. I barely touched any code myself. AI created the scaffolding, and I simply talked through the integration, describing what I wanted and how things should fit together. The process was fast, fluid, and let me focus on the creative and conceptual side rather than the technical plumbing.

## Lessons Learned: Letting Go and Trusting the Process
My experience as a manager and team leader has taught me that the best results come when you let go of control and trust the people (and now, the tools) you work with. Excellence rarely comes from micromanagement or rigid prescriptions—it comes from creating space for others to contribute, experiment, and surprise you.
I've found the same principle applies when working with AI. The less prescriptive I am, the more surprising—and often delightful—the results. I enjoy being surprised at work and in life, and this new way of building things rekindled that sense of discovery.
I'll do a lot more of this.
---
## Coding as a Tool: Generating Patterns for the Siding of a new House
> How I used code to create a natural-looking random pattern for board and batten siding, ensuring both aesthetic appeal and structural requirements.
I always wanted to build a house and had a life long fascination with architecture. When the opportunity finally came to build our own home, I found myself facing an interesting challenge: I wanted to create something more interesting than the traditional board and batten siding pattern, while still using the cost-effective fiber cement panels that are standard in modern construction. The goal was to create a pattern that would look natural and random while meeting the specific structural requirements of these practical, durable materials.

### The Challenge
As anyone who's ever worked on a building project knows, achieving balance between aesthetics and function is no easy task. I had a vision for the siding—something that looked natural, yet fit within the constraints of structural requirements. Specifically, I needed to:
1. Create a genuinely random pattern that didn't feel forced or artificial.
2. Place battens in specific locations where large fiber cement panels meet.
3. Avoid odd-looking combinations that would be noticeable or out of place.
4. Communicate the final pattern clearly to the builders.
The task seemed simple at first, but quickly became clear that the devil was in the details.
## The Solution
I turned to code to solve this problem. Using CodePen, I created a tool that could generate random patterns while respecting certain constraints.
Here's a live version of what I came up with:
## The Process
I experimented with various random seeds and pattern generation algorithms until I found a combination that produced results that looked natural while avoiding any awkward patterns. The key was to:
1. Define fixed points where battens must appear (panel joints)
2. Generate random positions for additional battens
3. Apply rules to ensure minimum and maximum spacing
4. Visualize the result in real-time
After many iterations, the code was starting to show results that satisfied both my design sensibility and the technical requirements.
### The Result: Bringing the Vision to Life
The photos below show the siding implementation, which was a direct result of those hours spent in front of the screen, tweaking code and testing patterns.






## Code and Generative Architecture
This project is a perfect example of how coding can be a powerful tool in unexpected places. By using code to generate and visualize the pattern, I was able to:
1. Quickly iterate through different possibilities
2. Ensure consistency in the pattern
3. Provide clear, unambiguous instructions to the builders
4. Save time that would have been spent manually drawing patterns
The result is a siding pattern that looks natural and random, but was actually carefully designed and controlled through code.
You can explore the code and try different seeds in the CodePen above. Each seed will generate a different pattern while maintaining the required constraints.
This project demonstrates how coding can be applied to solve real-world problems in unexpected ways. We were able to achieve a result that looks natural while meeting all structural requirements. I am reall happy with the outcome and had a blast working on this.
---