Why I write
Last Updated: March 7th, 2026 I was watching a Brandon Sanderson lecture series from BYU. A student asked him what motivated his younger self to keep pushing on the difficult days. I found it interesting asking myself the same question: in my short time writing more seriously, what has it taught me about why I write?
I write because it makes me less terrified
Struggling with anxiety one night (induced by the latest AI doomerist clickbait), I opened The Electric Typewriter, seeking solace in short stories. A Margaret Atwood commencement speech pulled me in purely by title alone: "Attitude". I read about writers changing reality. Writers as historical sorcerers, as Alan Moore opines. I'm recognizing the wisdom in that perspective.
I sat spellbound, immediately proceeding to On Writing Well. Zinsser describes the certainty in the 1970s of the world's impending demise, one button press away from finality. The words may have been different from "AI" and "LLMs", but the twinned sentiment was simply the same song, different verse.
So I wrote about my conflicting feelings using AI. Though not planned, I concluded that I would strive to be as human as possible, subversively so. Work became easier and home troubles felt lighter. My reality changed overnight.
I write because it brings me pleasure
The glee I felt the first time a simple swap of two words slammed an emotional piece into place surprised me. I never imagined experiencing that raw emotional creativity outside of music. I didn't realize I could simply switch my instrument preference from piano to the pen.
Growing a seed into a scene into a story. Inventing, alliterating, revising. Writing, a recursive pattern puzzle of its own, scratches my neurons in the most pleasurable of ways.
I may be sappy, but I cry thinking of a reader feeling seen, or feeling heard, perhaps even feeling that pain of recognition. A shared understanding in the world. Helping others feel less lonely brings me peace.
I write because I find it challenging yet restorative
I set out striving for simplicity, yet fail consistently. I'm learning to enjoy that failure, showing me growth is right around the corner. Like learning the true rarity of extremes. My mind latches on to love and hate, right and wrong, while the invisible in-betweens rush by. A hard-earned insight from horrendous early flash fiction attempts.
To hold a reader's interest, I'm learning that nuance is required. That nuance isn't found within echo chambers. I need to open the doors and windows, challenging my own views. But my human desire to belong pulls me gravitationally towards others I relate to most. It takes immense energy to break away from that, pushing myself to grow.
When I started writing my previous blog post, I knew I had a lot of conflicting feelings about spending creative time with AI. Frankly, I couldn't name half the feelings if you asked me to. Writing helped me discover what those feelings were, to place labels on them. I can now see my emotions as an intertwining web being woven, instead of feeling captive to whatever emotion is screaming loudest.
So let's be blunt, and call it what it is. For me, writing is self-help. Spending time writing, creating beauty, is self-care. I find it healing and restorative.
I write for the joy I feel writing
Infinite worlds to explore, fog of war dispelling with each word placed. Characters growing in depth as they profess their hopes and dreams... or admit their fears and nightmares. The more I write, the more is revealed.
I love when a mindlessly-written sentence surprises me and gives me pause. And when that surprising sentence is a new twist in the story. The elation I feel when that new twist is clever, heart-wrenching, or mind-expanding. The more I write, the more I want to write. A YouTube video, a game my daughter is playing on her iPad, the trees outside my living room window, all reasons to put words to paper.
Just like writing itself, I'm sure these reasons will change the more I write. What drives me today may not drive me tomorrow. So why do I write, today? Because I'm learning I love it!
Subversive humanity in the age of AI
"When faced with the inevitable, you always have a choice. You may not be able to alter reality, but you can alter your attitude towards it."
Last Updated: February 27th, 2026 I won't sugarcoat it: I'm f__king terrified. I'm afraid the day AI officially retires my job is nearing. I struggle thinking about my kids' future, pondering whether they will even have one. My personal defenses around technology are more activated than they've ever been. AI has the potential of being the most manipulative technology in history, a Machiavellian wet dream. I fear market dynamics and human tendencies will collide in a tsunami of addiction, isolation, and despair.
My daughter struggles with lofty unrealistic expectations for happiness and success as defined by social media influencers. A different daughter prefers to spend her allowance on season passes and loot boxes. "Get it while it lasts", "Only for this season!", "Limited time only", "All your friends have it, why don't you?" Fear sells. It is not an accident, it is inherent in the design. I fear growing AI adoption will make these issues look like child's play.
The Age of Invention preached that technology would handle the drudgery so we could do the fun things. Every time I use an AI Assistant, I am indeed tempted to engage Easy Mode: go write this file, capture this note, create this appointment, generate this image, create that sound. I try to fight the urge, not always succeeding. It's a constant tension. I put explicit "ground rules" in place to try to prevent sycophancy and receive honest critique that isn't merely blowing smoke up my backside. Why? Because I'm scared.
Why am I scared? I'm scared because sycophancy feels amazing. It feels like validation. It feels like encouragement. What is it not? Challenge. Growth requires challenge. If skills have been shown to atrophy with prolonged AI usage, how well does that bode for human cognition? If we are neurologically wired to learn through the act of doing, what are we actually giving up delegating those acts to machine? How much of our own humanity are we sacrificing?
Humans by nature are rather easily manipulated. Machiavelli knew that. He also felt it was vital for the State to do it, a means to an end. And now we have built perhaps the best human manipulator in history.
So here I sit with an emotional and ethical conundrum. I'm terrified of what AI will do to society. And yet, AI could have an unfathomably positive impact too. Even though I fear it won't, I am choosing the hope it might. It is completely outside of my control. So I choose hope for me, my partner, and my children.
One of my children has an extremely rare genetic disorder that limits their lifespan and impacts their ability to engage in activities that most teenagers and college-age kids take for granted. Another child has medical conditions that can cause difficulties with basic movements like standing or walking on some days. I'm hopeful that AI will help find cures for these diseases.
"The problem with dreamers is that they rarely become doers" was imprinted upon my heart the moment my young ears heard it uttered in Rudy. I carry countless scars from my internal critic wielding that sword. Yet in the first 2-3 days of working with Claude Code, I made more progress on a project of mine than I had made in years. And no, it wasn't by having Claude write the app for me. It was by having Claude challenge me and show me ways to get started. I'm hopeful that AI can help people build things they've always dreamed of building.
I'm also a voracious life-long learner. But I have always struggled with finding the gaps, of finding what I don't know. As the saying goes, "you don't know what you don't know." How do you search if you don't know what words to search for? I love how effective AI is at semantic searching so I can learn the vocabulary from different domains that I've never been exposed to. It empowers me to learn about topics I wouldn't have otherwise even known about. I'm hopeful that AI could provide information to people to best fulfill their purpose in life.
It's easy to buy into the AI doom narrative. It feels natural. Our evolutionary instincts beg us to listen to the fear and consider it a serious extinction-level event. Many of us feel it in our bones. In 1983, at a commencement speech for University of Toronto, Margaret Atwood shared "we ourselves live daily with the threat of annihilation. We're just a computer button and a few minutes away from it, and the gap between us and it is narrowing every day... it's understandable if we sometimes let ourselves slide into a mental state of powerlessness and consequent apathy." These are not new feelings.
Yes, I'm scared. I'm also hopeful. No, I don't know where we are going. I don't know where we'll end up. That is what I find most terrifying.
In the meantime, I'm going to lean-in to the one thing I know how to do: be human. I want to connect with local communities. I want to make other people's lives better. I want to fill my life with rich human experiences and emotions. And somewhere within that deep unknown, somewhere primal, I'll be writing, composing music, playing, laughing, and spending time with my wife, kids, and friends. Not because it earns money or validates my worth, but because it's subversively human.
Isolating For Lack of Change Versus Complexity
Last Updated: November 12th, 2023 NOTE: This is one of many different lenses through which to look at software design. This article outlines some thoughts I've been throwing around in my noggin' as I experiment with different approaches and reasons to split software elements out from each other as a piece of software grows. These thoughts were formulated working on above-average-to-small code bases. The applicability of the discussion will vary on the size of the problem space and granularity level you are working at. It is not meant to apply to the extremely large areas, the Googles, the Microsofts, the Amazons.
I think we may get something wrong as engineers. How many times do we isolate sources of complexity off into their own corners? Their own functions, their own classes, their own microservices. "Oh, this is going to be changing a lot, split it off into its own thing so it can change without impacting other systems". This feels natural and intuitive. But I'm not sure it's the logical choice.
I personally find that I don't want to isolate my complexity any more. An important skill in writing software is managing complexity. The more features that are added to a piece of software, the more complex it naturally becomes. If you don't keep this complexity in check, you can find it becomes more expensive to add features to your software as time passes.
So I try not to isolate my complexity. I have found that I like to see my complexity up front and center in my code. For the areas of my code that are a bit intertwined or need to change rapidly, I want to have all that code close at hand to me and easy and quick to change.
Optimizing for Change
It is cheaper to change things that are grouped locally together. It's much simpler to change the structure of a couple variables within a single function than change the structure of several domain objects returned from different API endpoints across several different API services.
Don't get me wrong. I don't believe microservices are inherently a Bad Thing. I have just come to feel that it's best to leverage them to "spin off" cohesive elements of your software whose requirements have stopped evolving and whose rate of change has settled down. As this code has shown it needs to change much less frequently, we can spin it off so it can just plug away doing it's job. For us, it can be out-of-sight, out-of-mind as we continue to ship feature after feature in our software.
This in turn reduces the concepts that developers need to keep in their mind when working in the core of the code that changes. By reducing the total critical mass of the changing code, the code can become easier to change as well as there is less stuff for all your software elements to collide against or be interfered with.
As software design is fractal, this same concept applies in the small as well. Modules, down to Functions, are great for isolating out the cohesive elements of your code as their change rate "cools down" and the code starts to need to change less often.
At different times during the life of a piece of software, the same piece of code may rotate in and out of the "hot spot" of change. It might become dormant for a while and solidify itself off into a corner. You might then get new features coming in that require that element to start changing again. So you might inline the code again, allowing it to change structure and evolve to accept the new features into the software.
Give it a try! You can practice at nearly any level you are working on. Try to get a feel for how your ability to change code changes based on different software designs when you isolate complexity versus isolate cooled code. If you are interested in learning more about how you might better experiment in the small, Kent Beck's latest book Tidy First? is a great read as usual. Kent Beck hit it out of the park again!
Welcome to my new blog
Last Updated: October 28th, 2023 All this time away from blogging. Much too long in fact. So why yet another "new blog"? For the longest time, this blog used Jekyll and was hosted with Github Pages. So why the switch?
For the last 10-15+ years, I haven't been an active blogger. Blogging became more like an occasional family holiday. It really started crawling along around the time I started having kids. I would write infrequently enough that every time I came back to blog, I would have to spend a bunch of time figuring out Ruby upgrades, Jekyll upgrades, dependencies that had been deprecated, etc. It became simply too tiring for me. So the blog died.
Recently, I've been on a kick of finally building my own tools and leaning-in to YAGNI (You Ain't Gonna Need It). I'm approaching my personal life in a more agile way. I'm learning to do what I am motivated to do instead of what I think others want me to do. I'm learning to embrace a more scientific and logical mindset and learn by doing, not afraid to run a "failed" experiment.
So I started over. New project. Fresh slate. Blank `index.ts`. Deep breathe. Here we go.
The only out-of-the-box piece I'm starting with is TufteCSS. Everything else is fresh from my own index.ts file. I handcode the HTML for each post (I don't care, I'm a developer for goodness sakes). This blog does not use a single external runtime dependency outside of TufteCSS. It's just the code I need. No more, no less. A pure static, old-school website.
Sometimes it feels like the memories are long gone. Sometimes not. But I always wish I had the
solid memories that many of my colleagues over the years have had.
You see, I have a horrible memory. I know I'll forget this code. I know I'll need to be able to
get back up to speed with it quickly. As I'm making my own improvements, I need to know that I
haven't broken anything. My only guarantee is that I will forgot the details and
nuances of the code by the next time I work on it.
So the site generation is fully covered with automated tests. Yes, I wrote it with Test-Driven Development. Not because it's some religious dogma I follow, but because it helps me with my own anxiety and poor memory when working with code. Well, and "hacking my brain" with a high-frequency positive feedback loop during development. I like my positive reinforcement!
There's going to be more to come here. It may not be super frequent at first. But I'm going to do what I should have done a long time ago: listen to Scott Hanselman's wisdom and control my own content and URLs. I can't go back now and change that. So here I am building up my own brand at my own little corner of the ol' World Wide Web.
Like olden times. Each one of my keystrokes in a location I control. Keystrokes preserved and with a lifetime that is not tied to the lifetime of social media companies.
Goodbye Facebook
“Our inventions are wont to be pretty toys, which distract our attention from serious things. They are but improved means to an unimproved end, an end which it was already but too easy to arrive at…”
Last Updated: March 25th, 2018 It seems everywhere you turn today, there is bad news, resentment, and festering anger. We see more stories about "The Others." People with different political beliefs, people with different religious beliefs, people with different sociological beliefs than us. We get infuriated. We don't understand The Others. "They are ruining the world," we think. "Why can't they see how wrong they are?"
At the same time, the data that are the digital echoes of our daily rituals are being spread to the ends of our online world. The digital ripples left behind from the wake of our beliefs and social constructs are being harvested and monetized as part of a new Gold Rush for 21st century corporations. Our energy and outrage is lining the pockets of the plutocrats. We are being sold. We are the product. We are digital chattel.
So I'm finally doing it. After many years and many interactions, I am deleting my Facebook account. You are probably seeing several other people doing the same in the light of recent news (e.g. tens of millions of accounts having data stolen from Facebook by Cambridge Analytica, Facebook possibly contributing to genocide ). Initially I had the same reaction. Instead, I removed much of my personal information from my profile, deleted photos, trimmed my friends list, cleared my ad preferences, opted out of 3rd party ad platform, removed linked apps, changed my name, and other actions. But it wasn't enough, something happened. I was exposed to the work of Marshall McLuhan.
The Medium Is The Message
In 1964, Marshall McLuhan published his book "Understanding Media: The Extensions of Man." This book is a quite prescient take on the consequences of any medium. McLuhan proposed that it is not the content carried by a medium that is important. The personal and social consequences are shaped by the medium itself. These consequences "result from the new scale that is introduced into our affairs by each extension of ourselves, or by any new technology."
Facebook, as a medium, has a couple of characteristics that are disconcerting when it comes to how information flows through society.
The information we are exposed to is self-selected from our own circle of friends. We tend to gravitate towards those that share our own world view, those that we have much in common with. Our default behavior on Facebook is to live within an echo chamber where like-minded thoughts are amplified and reverberate throughout our social network.
Facebook also promotes a culture of communication that is devoid of context and subtlety. Every status update and notification competes for our limited attention span. There is a quest to maximize user engagement: the strive for more likes, shares, and comments. Sensational news headlines, pithy quotes, the latest “what TV show character are you?” quiz. We live in a world of instant gratification and a quest for the next hit of Dopamine.
On the other hand, Facebook has added benefits of drastically reducing the time and effort it takes to stay in contact with loved ones. We can more easily schedule time to get together with others that are geographically separated. We can stay in contact with friends that are no longer feasible to see in person. We get to see and hear about their day. We get to hear about their joy, and their pain. It has the possibility of bringing us closer together. But...
A Cost I'm Not Willing To Pay
For Facebook to exist, there is a cost. It takes money to run a business, to run servers, to maintain the code that the medium is built upon. Historically, we have directly traded goods or paid money in exchange for services. But Facebook operates on a model where the users no longer front the cost. The funding has shifted. We the users subsidize the cost by becoming the product that is sold. All our interactions, all our data; it's liquid gold for those wanting to sell products or services.
TANSTAAFLThere Aren't No Such Thing As A Free Lunch.
What sells most? Fear sells. At its core, Facebook is a medium defined and driven by Fear. Fear is what drives Facebook's continued success. We can spread love until the cows come home on Facebook, but it won't make a difference in the long run. It's not the content, it's the medium. We have to get out into the world and get our hands dirty.
I refuse to continue to be a participant on a medium that actively betrays the very principles that I believe in. I refuse to be the product. I refuse to be bullied into closing myself off from others. My life will not be driven by fear.
Goodbye Facebook
I choose compassion. I choose empathy. I choose listening and understanding. I choose deeper connections. I choose books and blog posts. I choose deeper thought and rational debate. I choose to pay directly for the services that augment my life. I choose not to live surrounded by a daily digest of Pithy Slogans and Fear, Uncertainty, and Doubt.
Goodbye, Facebook. I'm not sure I'll even miss you.