I must not fear
Fear is the mind-killer
Fear is the little death that brings obliteration
The mystery of life isn’t a problem to solve but a reality to experience.
A process cannot be understood by stopping it.We must move with the flow of the proc.We must join it,flow with it
Appreciate life. Fight for it with all your hearth and energy, but make peace with the fact that none of us are will hold onto it forever
Wishing you all the best, Ben! Tonight, you taught me a beautiful lesson ❤️
The Cancer Episode
> My diagnosis and prognosis
> What this means for How to Take Over the World
> A few thoughts on death
> See below for links to GoFundMe, etc.
Students need to learn how to use AI, but they also need to learn how to think for themselves. So in schools there should be some kinds of work where students are expected if not required to use AI, and others where it's banned, and no mushy middle ground in between.
Not using LLMs to write for you won't be like not using Google Maps in a new city. It will be like choosing to run and lift weights, even though we now have machines that can transport us and lift weights for us.
Creator of Sqlite on pull requests: "You say, oh, it's free. No. It's not free. What you're doing is asking me ... to maintain it for you, to to document it for you, to test it for you, to maintain it for you for the next 25 years. That's not free." Yep.
Wise words from a wiser man than me. I've told people for the past decade and I have recent posts on here saying the same: the merge button is the easy part. Its the decade+ (Richard says 25 years) that follows where you've accepted the transfer of maintenance thats hard.
Coming up with the right abstraction for a component is no easy work. It takes time. Sidebar took me a week of experimenting. Input-group, several days. Field, more than a week.
I build literally hundreds of examples and keep refining until the abstraction is right, the composition reads well, and it "feels good" to write.
Then you see it used in millions of apps and the same abstractions show up in other libraries, it makes all that work worth it.
Keep going.
This paragraph by Haruki Murakami hits very hard:
“Once the storm is over, you won’t remember how you made it through, how you managed to survive. You won’t even be sure, whether the storm is really over. But one thing is certain. When you come out of the storm, you won’t be the same person who walked in. That’s what this storm’s all about.”
My girlfriend called me at 2am crying. She had seen a photo on Instagram of me and another girl at a party.
She sent me the photo. I looked at it and I'm like, what? Only my nose looks like the guy in the photo! I keep telling her, “We're not the same person,” but she is not ready to accept it.
She then forwarded the photo to my friends asking them to confirm.
Even they were confused. Bro that really does look like you.
Now, at this point, the only hope I have is my last line of defense - a Cosine Similarity Test.
I know you guys are thinking, what the hell is this Cosine Similarity.
Cosine similarity is a mathematical way to measure how similar two things are by treating them as vectors in space. Think of it like measuring the angle between two arrows - the smaller the angle, the more similar they are.
In math, cosine similarity works like this:
cos(θ) = A·B / (|A| × |B|)
Where:
- A·B is the dot product of A and B.
- |A| and |B| are the magnitudes.
Understanding the Scale (-1 to 1):
- cos(0°) = 1 : Perfectly identical
- cos(45°) = 0.7 : Partially similar
- cos(90°) = 0 : No similarity at all
- cos(180°) = -1 : Complete opposites
Now let me prove to my girlfriend that the guy in the photo is not me. Let's say my facial features are Vector A and the guy in the photo is Vector B:
Vector A = [2, 4, 6, 8]
Vector B = [1, 2, 3, 4]
Step 1: Calculate Dot Product
Multiply each corresponding element and add them all up:
A·B = (2×1) + (4×2) + (6×3) + (8×4)
A·B = 2 + 8 + 18 + 32
A·B = 60
Step 2: Calculate Magnitude
Take the square root of the sum of squares of each element:
A = [2, 4, 6, 8]
|A| = √(2² + 4² + 6² + 8²)
|A| = √(4+16+36+64)
|A| = √120
B = [1, 2, 3, 4]
|B| = √(1² + 2² + 3² + 4²)
|B| = √(1+4+9+16)
|B| = √30
|A| × |B| = √120 × √30
|A| × |B| = √3600
|A| × |B| = 60
Step 3: Apply the Formula
cos(θ) = A·B / (|A| × |B|)
cos(θ) = 60 / 60
cos(θ) = 1
Cosine of 1 means perfectly identical.
Congratulations 🎉, you just learned Cosine Similarity.
Bonus:
Why does AI/ML care about cosine similarity?
Recommendation Systems: Netflix uses it to find movies similar to what you have watched.
Image Recognition: AI systems compare feature vectors extracted from images to identify faces or detect similarities between pictures.
Document Classification: Text classification systems use it to categorize emails as spam or not spam by comparing document vectors.
My friend never listened to his dad's final voice message.
For 3 years.
Said he "wasn't ready."
One night after drinking he finally played it.
We expected something emotional.
Some movie-type goodbye.
Instead his dad said:
I've got an agent in a loop optimizing a renderer with the goal to minimize frame times (and tests to measure). It got times down from 88ms to 2ms and allocations down from ~150K to 500. Sounds good, right? Wrong. This is exactly why agent psychosis is a big fucking problem.
As an experiment, I rewrote the Ghostty core render state in Go, with access to identically laid out data structures as Ghostty and the exact same validation tests. I made a purposely naive renderer (simple, correct, but slow). 88ms per frame with 150,000 allocations (horrendous, lol)!
I then kickstarted a Ralph loop to bring the frame times down. I told it it can't modify input data structures or the public API or tests (they're correct), but it can do anything else it wants. It got to work.
It has worked for about 4 hours. I've spent around $350 on this experiment so far. The results?
88ms => 1.5ms
150K allocs => ~500 allocs
Incredible right? Nope.
My hand-written renderer I ported has frame times (same benchmark) of ~20us (0.020ms) and 0 allocations in the update path.
This is the problem with psychosis and lacking systems understanding. If you don't understand the system, you're going to accept that this is an incredible result. If you understand the system, you'll see better solutions immediately and can do roughly 75x better on throughput.
The people who blindly trust agent output are in the former camp. They're sheeple, overdrinking from a fountain of mediocrity.
Standard disclaimer: I use AI all the time. I like AI. The point I'm making is to not blindly accept results. Think. Analyze. Learn.
Life becomes 100x more enjoyable when you play it like a video game. When you recognize that you have the free will to do literally anything you want and start living like it. Step outside of all your limiting beliefs and realize that you have the power as well as the right to create anything you desire. Exercise this right relentlessly with wild self belief. Become the person you’ve always wanted to be. Build the life of your wildest dreams. Don't hold back. Don't settle. Be borderline greedy and dream huge. Collect the fruits that life's always had to offer you, and that you now have the vision to see.
It isn't unexpected that the focus of the Bun Rust rewrite is on the anti-Zig side more than anything, since the internet loves to hate. What is unexpected and unfortunate is that leadership within Bun hasn't tried to steer the conversation away from that at all.
There are so many positive and interesting takeaways from this and I'm not really seeing any of them pushed as the primary message.
A positive thing that hasn't been talked about at all is how far Bun came thanks to Zig. And even if you dump it now, its meaningful for how good Zig was to even build a product to this point and impact by any metric. I would've loved to see anyone in leadership say this.
On the interesting side is how fungible programming languages are nowadays. Programming languages used to be LOCK IN, and they're increasingly not so. You think the Bun rewrite in Rust is good for Rust? Bun has shown they can be in probably any language they want in roughly a week or two. Rust is expendable. Its useful until its not then it can be thrown out. That's interesting!
There's been a lot of talk about memory safety and no doubt Rust provides more guarantees than Zig. But I'd love to see a better analysis of why Bun in particular suffered so much rather than take the language-blame path. How could engineering as a practice been more rigorous to prevent this? What were the largest sources of crashes other programs should watch out for? How does Rust prevent them? How could Zig theoretically prevent them? That's interesting.
I know the official blog post hasn't come out yet from Bun. But they're smart enough to know that that PR would stir up controversy the moment it opened, or they should've been. And plenty in the company have been tweeting and writing about it. Its somewhat telling to me in various dimensions what they chose to talk about first.
I tend to think I'm pretty good at corporate PR/comms (especially when it comes to developer audiences) and I think appealing to the negative is never the right long term strategy; it does work to get short term eyes though.
Life advice nobody told you: Talent and intelligence are overrated. Intelligent people are more likely to overthink, overplan, and overanalyze. They hide behind motion that doesn't create progress. They fear the judgment of others if they're proven wrong. The truth is that talent and intelligence are abundant. Courage is not. The people you admire are the ones who had the courage to act. They aren’t more talented than you. They aren’t smarter than you. They just took action when you didn’t. I often wonder how many extraordinary people wasted their entire lives waiting for permission that never came. Permission isn't granted. It's taken. You get to tap yourself in whenever you want. You can just do things.
Key to winning:
Choose to be positive and grateful. Then, just keep at it. Time is the great compounder and will do the rest.
So many people just don’t have the discipline to stay positive and grateful. Then time compounds the bitterness instead.