Wild realization: AI means I shouldn't write *any* code anymore.
Why? Because AI is better than me.
1. AI sees more than me. It sees *all* the connections, including docs. If I change something simple by hand, I might forget to update a doc, comment, or anything not protected by a compiler.
2. AI is more consistent than me. If I change code myself, now there's a little slice of potentially weird "human code" that may violate patterns outlined in AGENTS .md or skills. Every dev on our team has a unique style. AI follows *our* style, not a unique developer's style.
3. AI is faster than me. There's no way I can compete on speed. And it's only getting better.
so much easier to build something new than change something old
especially amidst platform shifts, having less change management lets you anchor w/ first principles, ignore sunk costs, and build what you see your industry being 3+ years from now…
Many entrepreneurs think they’re independent simply by starting their own business, but if you have a complex cap table, a bank loan that’s always on your mind, or silent (or loud) partners who see things different ways, there’s a very good chance you've just got a job, not a business. In practice, many entrepreneurs are actually someone else’s employees carrying too much risk and responsibility.
Live demos are great
A friend who was ex-Apple told me it started dying the day they stopped doing live demos. And I can't unsee all the ways it's pernicious and true. Take a 100 Zuck live fumbles over the bs apple filmed keynotes
Don't think about strategy when you haven't built anything yet!
When you're starting, it's much better to focus on a specific customer (even better if you're the customer!) and making them extremely happy— than to go through the motions playing startup while worrying about TAM
To feel more at peace and more successful, you don’t need genius-level brain power, access to some secret society, or to hit a moving target of “just” an additional X dollars.
Those are all distractions.
Based on everything I’ve seen, a simple recipe can work: focus on what’s in front of you, design great days to create a great life, and try not to make the same mistake twice. That’s it.
If you really want extra credit, try not to be a dick, and you’ll be a Voltron-level superstar.
The secret to winning any game lies in not trying too hard.
Feeling as though you are trying too hard indicates that your priorities, technique, focus, or mindfulness is off. Take it as a cue to reset, not to double down.
And take comfort in the fact that, whenever in doubt, the answer is probably hidden in plain sight. What would this look like if it were easy?
In a world where nobody really knows anything, you have the incredible freedom to continually reinvent yourself and forge new paths, no matter how strange. Embrace your weird self.
There is no one right answer . . . only better questions.
+1 for "context engineering" over "prompt engineering".
People associate prompts with short task descriptions you'd give an LLM in your day-to-day use. When in every industrial-strength LLM app, context engineering is the delicate art and science of filling the context window with just the right information for the next step. Science because doing this right involves task descriptions and explanations, few shot examples, RAG, related (possibly multimodal) data, tools, state and history, compacting... Too little or of the wrong form and the LLM doesn't have the right context for optimal performance. Too much or too irrelevant and the LLM costs might go up and performance might come down. Doing this well is highly non-trivial. And art because of the guiding intuition around LLM psychology of people spirits.
On top of context engineering itself, an LLM app has to:
- break up problems just right into control flows
- pack the context windows just right
- dispatch calls to LLMs of the right kind and capability
- handle generation-verification UIUX flows
- a lot more - guardrails, security, evals, parallelism, prefetching, ...
So context engineering is just one small piece of an emerging thick layer of non-trivial software that coordinates individual LLM calls (and a lot more) into full LLM apps. The term "ChatGPT wrapper" is tired and really, really wrong.
Vibe coding is a leaky abstraction.
A leaky abstraction means I often have to understand the underlying implementation (in other words, the code) to fix it.
Good abstractions rarely leak.
For example, today most popular programming languages manage memory for us. This abstraction isn't perfect, but it works so well that most developers rarely have to debug memory management issues.
Perhaps vibe coding will get there one day. But it's not there yet.
Vibe coding is the modern version of copy/pasting code you don’t understand from Stack Overflow.
It seems fine at first, but at some point you need to understand how to code.
@housecor “Perfection is attained not when there is no longer anything to add, but when there is no longer anything to take away”
Antoine de Saint-Exupéry, Terre des hommes, 1939