Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]
1

A new job, a new life

from Bryan Braun - Blog [alt+shift+b] in technology

Last month, I started a new job working as a fullstack software engineer at ClassDojo. This was an interesting job transition for me. It was the first time I got caught up in layoffs and the first time that I ended up with multiple job offers to choose from. As I weighed the decisions in front of me, I was reminded of an illustration from Tim Urban (of Wait but Why), that captured my feelings perfectly: My job offers revealed the beginnings of several wildly diverging paths, which reminded me that a future of diverse opportunities remained stretched out in front of me. What an exciting thing to contemplate. When I was in college, my roommates and I had a running joke. Whenever some tiny setback would occur, one of us would smile and say “the good times are over.” The absurdity of it got us laughing, because we had our whole lives ahead of us. Clearly, things were going to be ok. These days, “the good times are over” is a common narrative in the world—treated seriously, not as a joke. It can be tempting to fall into that way of thinking. But if we could see more clearly, we’d realize that a world of branching opportunities still stretches out before us, both individually and collectively. One of the key reasons I chose ClassDojo was because I saw a team that was full of energy and optimism for the future ahead. That’s a river I want to swim in. I’m excited to see where this path leads. Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.
3rd Jul 2025

Stay updated

Get a weekly newsletter with the top 5 articles worth reading every week.

More from Bryan Braun - Blog

An AI usage statement for bryanbraun.com

I’ve had “AI usage statements” in the back of my mind ever since I read Ethan Marcott’s blog post sharing a round-up of his favorite ones. I didn’t consider writing one for this site, since it had the smell of status-signaling. Like a quasi-political declaration of allegiance to some sort of in-group (be it pro-AI, anti-AI, etc). I couldn’t be less interested in that.1 But then something happened that caught me completely off-guard. I was reading a post on my friend’s personal blog. This was a guy that I knew personally and looked up to. I’ve been reading everything he had been writing for years. About two-thirds of the way through a long (and fairly insightful) blog post, I had a sudden realization that the post had been written by AI. I’m not the best at detecting this kind of thing, but once I saw it, I couldn’t unsee it. It was unmistakable. And the thing is, I didn’t feel indifferent or even disappointed, as I might have predicted. I felt betrayed. For somebody who considers themselves open-minded—even optimistic—towards the development of AI, I didn’t know where this feeling was coming from. I have theories… maybe it has something to do with the social contract between the writer and the reader. Whatever it is, I didn’t want anyone who was reading my blog (hi mom 👋) to feel the same thing. So for the sake of transparency, here is my AI usage statement: The content of this website is written by me. I do not use AI to generate the text you are reading because writing from scratch helps me process my thoughts (which is one of the main reasons I blog in the first place). I don’t currently use AI-powered writing tools (grammar-check, spell-check, dictation tools, etc), but I may experiment with them as long as they don’t undermine the thinking process. The code for this website was originally hand-written, but I have since used AI to make several useful updates. I expect to continue using AI to write code for this website and other personal coding projects. When I create a public project exclusively with AI, I mention that fact in the project README.2 I am experimenting and my AI usage may change. When it does, I’ll update the policy here on my /about page, which is where it will live long-term. To explain why, see Paul Graham's Keep your Identity Small. ↩ For an example, see s-tier ↩ Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

4 days ago • 1 votes
Klara and the gift of curiosity

In October, a new movie will be released based on one of my favorite books, Klara and the Sun. This has happened a lot for me recently (see The Three Body Problem, The Martian, Project Hail Mary, and Tomorrow and Tomorrow and Tomorrow). I know it’s cliché to say that the book is better, but that has generally been my experience. The Martian was groundbreaking but when you force it into a 2-hour format for general consumption it becomes a forgettable action movie. The Klara trailer doesn’t give me much hope. The cheery, jokey vibe, feels nothing like the experience I had reading the book, so I wanted to take this opportunity to share what made it special to me. Note: I wrote a succinct, spoiler-free review back in 2024, so if you want the basics, I invite you to read that. For everybody else, let’s continue. Klara is an advanced humanoid robot—an Artificial Friend (“AF”)—who was designed to be a companion for children. We follow along as Klara is purchased from her store, meets Josie, her child, and assists Josie’s family as they navigate the challenges of their world. The story is told from Klara’s perspective, allowing the reader to see what she sees and feels. As a new robot, Klara is somewhat like a child, trying to piece together an understanding of the world, and the reader is brought along on that journey. We know from the beginning that Josie’s life is complicated and that there’s something unhealthy about her or her family, but neither we nor Klara understand what or why. The process of discovering what’s actually happening made the book very interesting. As an AI, Klara sees things differently than humans see things. She often focuses on things that a human would dismiss and breezes over things a human would care about. She also sees the world with fresh eyes, which allows her to make observations I wouldn’t have considered. For example, she notices that humans go to great lengths to avoid loneliness. This fear of loneliness, she observes, is at the root of nearly all human decisions (a surprising insight that I would never have considered). At the same time, Klara is naive. At times, I found myself wondering if I could trust her observations and conclusions. One of the themes that emerges throughout the story is the question of whether humans are replaceable. The robots in the story are different from humans, but they’re clearly intelligent and capable of doing human work. Klara often expresses simple emotions like joy and fear, which help her care for Josie. The humans caring for Josie, have greater emotional range, but it’s almost a liability. The mother’s grief over her other daughter’s death has left emotional scars, and her neighbor’s guilt has left her incapacitated in many ways. The humans are trying to hold it together, but they’re clearly volatile while Klara is endlessly patient, optimistic, and kind. I was originally turned off by Klara’s obsession with the sun. She gets this idea in her mind that somehow the sun could help heal Josie from her sickness, and it was obvious to me that Klara was confused. I knew that the sun was a distant ball of gas, but to Klara, a solar-powered robot, it was a magical source of life and rejuvenation. I became certain that her programming as a robot (and her early formative experiences in the store), were throwing off her judgement. Clearly, she was blinded by what she was, and thus wasn’t able to see that her side-quests would have no effect and waste precious time. But I was wrong. The sun healed Josie, not because it was an anthropomorphic life-giver that took pity on Josie, or respected Klara’s sacrifice. It healed Josie because it gave everyone hope. It gave them hope at their lowest moments, when they were willing to throw away logic, and try anything if it might help her get better. To Klara, the sun was God. It was her distant life giver and the provider of miracles. That’s why Klara didn’t want to tell the humans all the details of her plan. She knew there needed to be space for all of them to have faith. This storyline about the sun impacted me because it was basically a speedrun of the religious-skepticism journey we often experience in the real world. We care so much about our worldview being evidence-based that we fail to realize that there are some things that evidence cannot give us. Things like hope, meaning, purpose, and a reason to act selflessly. The sun also brings back the fundamental question. If a robot can heal a child by exercising faith in God and risking her life to save the ones she loves, then how can there be anything left that’s special about humans? Are the humans not doomed to obsolesce? Online reviews for Klara and the Sun call it a “dystopian novel,” but I found the story quite hopeful. Human gene-editing, advanced artificial intelligence, and the obsolescence of humans are difficult topics to grapple with, but that world is coming fast. Some parts are already here. This story paints a picture of people finding a way to navigate it. Some people embrace the future (often paying heavy costs), some run from it, some fight it, and others accept it. But they all find a way. You and I get to decide how we respond to our own changing world, but if I can take one lesson from Klara it would be to keep an open mind. We become so certain of what we know that we forget to leave space for what we don’t. Curiosity is a gift. If we allow it to fade as we mature, we lose the opportunity to see things that could change our lives for the better. Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

26th Aug 2026 • 2 votes
You are not your grand plans

“You are not your grand plans. You are your daily patterns.” I love this quote from James Clear because it hurts me in all the right ways. At my worst, I feel like my daily patterns are at war with my grand plans. When I’m fighting a daily battle and willpower is slipping, I need every reminder that this moment, right now, is critical. Because it is! Your body is the result of your daily food and exercise choices, not your healthy ambitions. Your mind is the result of your regular media choices, education environment, and adjacent relationships, not an independent observer, hovering uninfluenced above your day-to-day interactions. Your character is the result of your actual sacrifices—for others, for your integrity, and for the common good—not your generous aspirations. When I’m struggling with daily patterns, it’s helpful for me to look at the times I was rocking it. I’ve had periods of my life when my workouts were really consistant, or I journaled every day, or I always woke up early. What contributed to those things? Often, it was social pressure, an accountability buddy, or a change of environment that pushed me into a productive place (underrated benefit of having a blog: it’s a historical record of your successes and failures). Of all the things I might learn looking back at these experiences, perhaps the most important is that it’s never been easy. I’ve got 15+ years of posts documenting the battle. Sometimes I’m winning and sometimes I’m losing, but I’m always fighting, and that’s a daily pattern too. Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

11th Jul 2026 • 2 votes
Quality vs quantity in the age of AI

Over the last four months I’ve increased my use of AI for web dev work pretty dramatically. I use it every day at work, as do most of my coworkers. I don’t think it’s disputed anymore that AI-assisted development can save a lot of time and effort. The question is, what do we do with all that surplus? The standard narrative in the industry is to use it to go faster. Ship three features a day instead of one. Get a half-dozen agents working in parallel. 10x your productivity. If you don’t move fast, your competitors will! I get it. Speed is good and it has benefits beyond just finishing more stuff per unit time. Speed matters! But we live in an era of extreme consumer choice, especially in the world of software. Even pre-AI, there were dozens of good email clients, to-do lists, fitness apps, and analytics tools, all chock-full of useful features at reasonable prices. What is “going faster” going to give us? Even more options, with even more features? Apparently yes. In the past quarter, iOS app store submissions have risen by 84 percent, and Hackernews, “ShowHN” submissions have nearly tripled. We live in an era of software abundance. But as software grows increasingly abundant, attention grows increasingly scarce. Attention was scarce even before AI but it’s going to get worse. Consumers have more choices than ever, and increasingly those choices are becoming undifferentiated as the industry uses AI to produce them. What if we did the opposite? Instead of using your AI surplus to go faster, what if you used it to go deeper? What if, instead of building ten good features, you built two amazing ones? What if, instead of blasting out a dozen landing pages, you poured your attention and care into a home page that knocked someones socks off—one that could not have been built by an AI, because nothing like it could have been found in the training data? What if you doubled-down on performance? On accessibility? On user-experience? On creating a strong personal touch? It would stand out! That matters, arguably, even more than speed. Striking a balance The more I thought about this, the more I recognized it as the same ol’ quality vs quantity debate, where it pays to strike a balance: If we pour all our surplus time into quality, we end up hurting quality by failing to iterate. If we pour all our surplus time into quantity, we end up hurting speed as tech debt accumulates1. But what’s the ideal balance? Is it 90% quality, 10% speed? 50% - 50%? How would you spend your AI surplus? Remember: Slow is smooth, and smooth is fast. ↩ Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

27th Apr 2026 • 1 votes
Links #14

See below for links to recent things that have made me think. It’s quite the mix of mediums (animated videos, short posts, letters, and 6-hour podcasts), but it wasn’t until I gathered them that I noticed a recurring theme: sacrifice Sometimes the world imposes constraints on us, forcing us to choose what matters most. What do we do when those moments come? Some of my favorite stories (both ancient and modern) explore these moments, and you’ll find elements of that in the list below. What’s Really Going on in El Segundo A 14-minute video about the hardware startup scene in El Segundo California, by Jason Carman. Some of it is hype, of course, but I’m impressed by the vision and culture of optimism they are offering to a world where so many young people are flailing and drowning in zero-sum status games. When a young man or woman comes up to me and says, “I’m not sure exactly what I want to do with my life,” “I’m having a really hard time orienting myself,” “I’m not sure what the point is, but I want to build something great and meaningful,”—that is one of the best consequences of everything that we’ve done. Making more water is a big deal, energy abundance is a big deal, …all of this is great. But just being able to give people some vision for the future—that is one of the most important things. We have to sacrificially build hard, real, material, things to create a future worth living in. I’ve been watching a bunch of Jason’s videos, and they’re all great medicine for the negativity that afflicts most news media. Offline 23 hours a day Derek Sivers describes his new home in the woods, an alternate world without AI, connectivity, or mental shortcuts. I know people have been been retreating like this for centuries, but the craziness of the world, and the busy-ness of my current life make such a retreat feel like a luxury. All it takes is for one to work out A short post about those moments when the rejections keep coming. These processes – college admissions, job searches, home buying, finding a partner – can be emotionally brutal. … All it takes is for one to work out. And that one is all you need. During my job search last year, I had a really exciting opportunity fall through at the end. It felt like a crushing blow. It would have been so perfect, I lamented. But looking back now, I don’t even care. Another one worked out (a better one, even). Knowing that rejections don’t actually matter is great medicine and a legitimate source of hope for anyone still fighting. Dan Wang’s 2025 Letter Dan Wang, author of a bestselling book about China and America, uses his end of year letter to compare the two countries and offer some thoughts. His writing struck a chord for me. It was informed and clever, full of interesting takes that demonstrate his deep understanding of the two nations. I added his book (Breakneck) to my list. Forevergreen A cute animated short story with a powerful message about sacrifice. I watched it twice—once with my wife, and again with my kids. Both times it sparked some great discussions. I think everyone should watch it. Child’s Play Sam Kriss profiles the newest, most eccentric, batch of Gen-Z founders. The way he presents their companies make them look exactly like what the fevered minds of a generation raised on social media algorithms would produce. Extreme, attention-grabbing, and impossible not to look away. Stacks of Labubus. Sperm racing. Reading this felt like I was being transported into another dimension—one where the most absurd, amoral corners of online culture have escaped into the physical world. Is it real or fake? For the luls? Can anyone even know? Along the way, he was also able to work in this fantastic quote: If we ever get AI that is strong enough to basically be God and solve all of our problems, it will need to use the same techniques that the actual God uses in terms of maintaining some distance. I do think it’s possible that the AI will be like, “Now I am God. I’ve concluded that the actual God made exactly the right decision on how much evil to permit in the universe. Therefore I refuse to change anything.” Lex Friedman interviews DHH At over 6 hours, this is the longest podcast interview I’ve ever listened to, and I doubt I would have finished it if DHH wasn’t so sharp and entertaining. DHH is known for his strong opinions and I was impressed at his ability to articulate his thinking with clarity and appropriate nuance throughout the interview. The part where he explains the beauty of the Ruby language (from both a practical and philosophical perspective) made me want to write more Ruby, and many of the other topics got me thinking as well. Costless Sacrifice When AIs can print job applications for pennies, fill up the internet with thinkpieces, and commit industrial-scale quantities of code, is there anything left for us humans to create? Packy McCormick says: yes. What still matters, is what has always mattered, and that is sacrifice. People still want a connection to the stories they read and the music they listen to. Employers still wants to hire someone who cares. Recruiters never needed good cover letters for their own sake… they needed someone who cared enough to sacrifice the time and effort to write them well. They still need those people, even if cover letters are no longer a good way to find them. My takeaway: even in a world flooded with AI-generated content, there will still be a place for those of us who care enough to sacrifice for our work. Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

30th Mar 2026 • 1 votes

More in technology

Clothes Rail

[Misc] Tubular

39 minutes ago • 1 votes
List of Vim forks

Here are the Vim forks I know about: Neovim: “a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.” Vim Classic: “a stable, long-term support fork of the ubiquitous text editor, maintained without the assistance of generative AI tools.” EVi: “a hard-fork of Vim v9.1.0 (Jan 2024) before AI was used in the project.” MacVim: “a macOS version of the Vim text editor, providing a graphical user interface for Vim, while tightly integrating with macOS and providing features specific to the platform.” This list doesn’t include Vim-inspired editors like Kakoune, Vim-style plugins for other editors like IdeaVim, or Vim “distributions” like LazyVim. Contact me if you know of other forks!

5 hours ago • 1 votes
iOS 27 has some weird Dynamic Island behavior

Thought I’d make a quick blog post about some weird behavior I’m seeing on iOS 27 and Dynamic Island live activities, that I initially thought was restricted to the Duo, but turns out affects everything. Yay. Maybe this post can save some others some time, and hopefully Apple can fix it. Long story short, ever since iOS 16.1 introduced “Live Activities”, where we can display handy little widgets in the Dynamic Island, there’s been a bunch of different configurations for showing things up there: something on the left, the right, when expanded, when two apps are showing things and yours gets a bit smaller, and on the lock screen. One interesting one is if you only need to show a small indicator in the Dynamic Island (screen recording indicator, electric vehicle charging status, etc.) you can do so, which just shows on the left on older iPhones, and on the Duo a single one below the camera cutout. Apple describes how to do this in their developer documentation (emphasis added): If you can’t find a solution to display views for leading and trailing compact presentations with limited width, provide a compact leading presentation that best represents your Live Activity, such as the view you use for the minimal presentation, and an empty view for the trailing compact presentation. The system hides the empty trailing view automatically. Unfortunately, in iOS 27 (and 27.1, and 27.2), this only half works, due to a new addition in iOS 27: isDynamicIslandLimitedInWidth. It’s a variable that basically tells you if the Dynamic Island is even narrower than normal, presumably because they knew the Duo was coming with its vertical Dynamic Island, but also because as of iOS 27, Live Activities now show in the Dynamic Island when the device is in landscape too. So it’s handy to know if you have a bit less space than usual. In this new narrow view however, it seems like they didn’t test all the configurations thoroughly, as if you provide EmptyView for that trailing compact presentation, it’s not empty at all, and in fact enforces a quite large minimum size so the Dynamic Island looks hilariously tall. In other words: The system hides the empty trailing view automatically Left: what it should look like. Right: reality You can imagine this is especially rough on the Duo, where navigation buttons, toolbar buttons, tab bar buttons, etc. are all competing for precious space on the right. But that’s only half true. It displays perfectly fine (hiding it) when isDynamicIslandLimitedInWidth is false (AKA how it always used to be), but in the new cases where it can be true, like the Duo and iPhones in landscape, that’s when it breaks. So tl;dr: In iOS 27, Dynamic Island Live Activities are improperly sized if you use the listed EmptyView configuration and isDynamicIslandLimitedInWidth is true. This makes it especially bad on the Duo, womp womp. Complications Now, you might be saying “That’s weird, I haven’t seen that behavior! This is nothing but hogwash!”. But it is not hogwash, just a little complicated. There’s basically three categories of apps. Apple apps Maps, for instance, displays this single, small Dynamic Island live activity perfectly well and sized, and has been beautifully compiled with the iOS 27.2 SDK. By all accounts it should show this bug, too! Apple apps don’t have to use the same APIs as us normies, so funnily enough through really cool tools like REA we can disassemble the iOS Simulator and see that it’s in fact true, the Apple Maps live activity just completely bypasses WidgetKit and instead just renders plain UIKit through MapsBannerViewController which shows the cute little cyan widget through a ManeuverAccessoryView and then for the hidden trailing view simply returns a DistanceAccessoryView with CGSizeZero, which iOS actually respects, unlike our paltry SwiftUI EmptyView. Third-party apps NOT updated to iOS 27 If your app hasn’t been compiled with any of the iOS 27 SDKs, it only knows about iOS 26, and thus doesn’t know about (or have to worry about) the new, troublesome isDynamicIslandLimitedInWidth property, so it just… displays perfectly well. Here’s the Rivian app, which hasn’t been updated for iOS 27 yet, which shows the Live Activity displaying perfectly sized on the Duo (indicating vehicle charging): (Technical disassembly detail for the nerds: iOS shows the app’s minimal config, a smaller config normally used when multiple apps are in the Dynamic Island together, rather than the normal compact config, so it bypasses this issue entirely.) Developers who updated their apps for iOS 27 Surprise! That picture from before? On the left is just me compiling with the old 26 SDK that works! Unfortunately if you are a good developer who updated their app for iOS 27 and all the new features, you kind of get punished through this bug, because your live activity displays the improperly sized way described above, and you can’t just use raw UIKit like Apple. So you’re kinda stuck where I am: do I ship a weirdly sized Dynamic Island experience for everyone? Do I shove something extraneous in the compactTrailing spot just so it doesn’t look as empty? Do I not update the app at all until Apple fixes this bug? Widgets are techincally a separate extension from your main app, so you could compile them with a different SDK (26) than your main app (27) which fixes this bug, but I’m not sure Apple approves of that. Apple On the bright side hopefully it’s an easy enough fix, treating EmptyView like you used to on iOS 26 and per the documentation (the part that is weirdly right beside the mention of the new API that introduces this craziness in the first place). Radar/feedback assistant ID: FB25301955 Easy reproduction code if you’re curious: import ActivityKit import SwiftUI import WidgetKit struct CircleAttributes: ActivityAttributes { struct ContentState: Codable, Hashable {} } struct BlueCircle: View { var body: some View { Circle() .fill(.blue) .frame(width: 20, height: 20) } } @main struct CircleLiveActivity: Widget { var body: some WidgetConfiguration { ActivityConfiguration(for: CircleAttributes.self) { _ in BlueCircle() } dynamicIsland: { _ in DynamicIsland { DynamicIslandExpandedRegion(.center) { BlueCircle() } } compactLeading: { BlueCircle() } compactTrailing: { EmptyView() // pls respect me } minimal: { BlueCircle() } } } }

7 hours ago • 1 votes
Going Somewhere

Vicky, driving me home from O'Hare, got sixteen dollars for the best conversation I had in months. The last line is hers.

3 days ago • 1 votes
An AI usage statement for bryanbraun.com

I’ve had “AI usage statements” in the back of my mind ever since I read Ethan Marcott’s blog post sharing a round-up of his favorite ones. I didn’t consider writing one for this site, since it had the smell of status-signaling. Like a quasi-political declaration of allegiance to some sort of in-group (be it pro-AI, anti-AI, etc). I couldn’t be less interested in that.1 But then something happened that caught me completely off-guard. I was reading a post on my friend’s personal blog. This was a guy that I knew personally and looked up to. I’ve been reading everything he had been writing for years. About two-thirds of the way through a long (and fairly insightful) blog post, I had a sudden realization that the post had been written by AI. I’m not the best at detecting this kind of thing, but once I saw it, I couldn’t unsee it. It was unmistakable. And the thing is, I didn’t feel indifferent or even disappointed, as I might have predicted. I felt betrayed. For somebody who considers themselves open-minded—even optimistic—towards the development of AI, I didn’t know where this feeling was coming from. I have theories… maybe it has something to do with the social contract between the writer and the reader. Whatever it is, I didn’t want anyone who was reading my blog (hi mom 👋) to feel the same thing. So for the sake of transparency, here is my AI usage statement: The content of this website is written by me. I do not use AI to generate the text you are reading because writing from scratch helps me process my thoughts (which is one of the main reasons I blog in the first place). I don’t currently use AI-powered writing tools (grammar-check, spell-check, dictation tools, etc), but I may experiment with them as long as they don’t undermine the thinking process. The code for this website was originally hand-written, but I have since used AI to make several useful updates. I expect to continue using AI to write code for this website and other personal coding projects. When I create a public project exclusively with AI, I mention that fact in the project README.2 I am experimenting and my AI usage may change. When it does, I’ll update the policy here on my /about page, which is where it will live long-term. To explain why, see Paul Graham's Keep your Identity Small. ↩ For an example, see s-tier ↩ Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.

4 days ago • 1 votes
📚 BoredReading

You seem to be enjoying this.

Join free to unlock everything.

Create free account

Already have an account? Sign in