<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
  <channel>
    <title><![CDATA[SSWI]]></title>
    <link>https://chrisjdavis.org</link>
    <description><![CDATA[A collection of links, videos, photos and sometimes, just sometimes, missives from the master of Sillyness himself, Chris J. Davis.]]></description>
    <language>en</language>
    <lastBuildDate>Sun, 11 Oct 2026 22:52:05 +0000</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <atom:link href="https://chrisjdavis.org/feed.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title><![CDATA[Mind the Gap]]></title>
      <link>https://chrisjdavis.org/posts/mind-the-gap</link>
      <guid>https://chrisjdavis.org/posts/mind-the-gap</guid>
      <pubDate>Fri, 07 Aug 2026 16:32:32 +0000</pubDate>
      <description><![CDATA[This year my youngest will reach the age I was when I lost my brother, and it has forced me to reflect on how a tragedy from decades ago still shapes the person I am today. This is a story about grief, guilt, brotherhood, and the promise I made to myself.]]></description>
      <content:encoded><![CDATA[<p>This is a strange, difficult year for me. My sons are turning 13 and 21, which is crazy, amazing, and deeply traumatic all at the same time. I guess that last one needs some unpacking.</p>
<h2>Some Background</h2>
<p>For context, I had an older brother. We were 8 years apart, and he was incredible.</p>
<p>Kind, funny, and never really cared that his little brother followed him everywhere and wanted to be with him <em>all the time</em>. John Michael was special for many reasons, and how he treated me, how he loved his little brother, was only one of them.</p>
<p>He was kind to everyone, gentle until the moment required him not to be, funny, and soft-spoken.</p>
<p>He was also 6-foot-5 and 350 pounds. I&#39;m the runt of the family at 6-foot-1 and 300 pounds.</p>
<p>For all of my childhood, he was this walking mountain. I remember playing outside, running <em>as fast as I could</em>, which was pretty darn fast, and launching myself at him like a bullet. I would just bounce off and hit the dirt laughing. <strong>He was invincible.</strong></p>
<p>Until the day he wasn&#39;t.</p>
<h2>The Fracturing</h2>
<p>Our mother and John had an argument about medication he should have been taking that ended with him leaving. He was 18, and I was 10. He moved out on his own, got a job, and started a new life. We would still hang out as much as possible, but of course it wasn&#39;t as much as we had before, since he was an adult with bills, a job, etc.</p>
<p>Over the next three years, we drifted apart, as people, even close family, tend to do as they age. I became a hormonal teenager, with all the stupidity and baggage that comes with that.</p>
<p>I could always spend time with John later. Parties, girls, and fun <strong>were now</strong>.</p>
<p>That was the mantra in my head. I was traumatically disabused of that notion in July of 1990. John had a massive <strong>stroke</strong> and was rushed to the hospital. He still wasn&#39;t taking his medication, and with his size, it eventually caught up to him.</p>
<p>He was paralyzed on his left side for more than a week, but eventually regained full use of that side before he was discharged. We found out while he was in the hospital that he had sleep apnea, which was not well known at the time.</p>
<p>He was given new meds and a course of treatment for the apnea, and with a renewed sense of purpose, he was released on July 31, 1990. I wasn&#39;t there when he was released, or at any time that week for that matter, since I was too busy being a stupid teen. I had the rest of our lives to see John, after all.</p>
<p><strong>There aren&#39;t many times in my life that I have been as wrong as I was then.</strong></p>
<p>John died that day, sitting on the side of his hospital bed, dressed to come home to us. My mother was washing his face, and a clot that had gone unnoticed in his leg broke away and stopped his heart. I was 13. He was 21.</p>
<p>I trust you see the pattern?</p>
<h2>Reality Bites</h2>
<p>I mean, I know my kids aren&#39;t John and I. We didn&#39;t plan to have them 8 years apart; it simply turned out that way.</p>
<p>My oldest, Jakob Michael, is healthy and still living at home while he is attending university. But they are <em>so close to how we were</em>.</p>
<p>Alexander thinks of Jakob as his best friend, and Jakob loves Alexander and hangs out with him all the time, playing games, watching movies and TV shows, and being the same big brother John was to me. It&#39;s beautiful and sad all at the same time.</p>
<p>Sad because they never got to know John, and he never got to meet my wife and his nephews. We were all robbed of so much. I still have dreams from time to time that John is alive, and him being gone is the bad dream.</p>
<p>I then wake up and have to remember all over again what is truly reality and what is nothing but a comforting, but hollow, dream.</p>
<p>This year, my youngest will reach the age I was when I lost half of my world and the rest of my childhood. Thankfully, he won&#39;t be suffering the same losses, and I am genuinely thankful for that. It&#39;s just going to be hard for me.</p>
<p>But that&#39;s okay. <strong>I&#39;m okay.</strong></p>
<p>It took years and a lot of work, but the things that matter always do, and they&#39;re always worth it.</p>
<p>Have I stopped hating myself for being a selfish idiot? No, I probably never will. </p>
<p>But that pain and shame were fuel, and still are, to make sure that I never make a mistake like that again, and more importantly, the impetus to teach my kids so they know <em>what</em> and <strong>whom</strong> are important.</p>
<p>That&#39;s <em>my</em> great work, and I am dedicated to doing it.</p>
<p><strong>What&#39;s yours?</strong></p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Cinema Might Have a Problem]]></title>
      <link>https://chrisjdavis.org/posts/cinema-might-have-a-problem</link>
      <guid>https://chrisjdavis.org/posts/cinema-might-have-a-problem</guid>
      <pubDate>Wed, 22 Jul 2026 16:24:37 +0000</pubDate>
      <description><![CDATA[There are multiple attack vectors that are converging on cinema as we know it, and any one of them could signal the end of artistry, profundity and the implicit social contract.]]></description>
      <content:encoded><![CDATA[<blockquote>The following are my thoughts and opinions, so take them as such. I am not a filmmaker, film critique or a working actor (anymore). These are just the things rolling around my head as I was reading through Threads.</blockquote>
<p>I was perusing the socials yesterday, after having watched the Avenger&#39;s Doomsday trailer, and the comments really told an interesting story. There were the usual &quot;super hero fatigue&quot; comments, comments that showed a lack of understanding of the source material (which is fine), the usual cries of &quot;Hollywood has lost its creativity&quot; and the condemnation of using AI for aspects of the film (not sure if this is true). While most of this isn&#39;t new, my reaction to each one <strong>is</strong>.</p>
<h2>Lack of Creativity</h2>
<p>I get the feelings behind the statement that &quot;Hollywood has lost the plot, or lost its creativity&quot;, the bottom line is that these are businesses and as such their product (films) are tailored to the folks <em>buying</em>. With that being said, if you looked hard enough you could always find solid, creative, unique films coming out from studios like A24. There was art to find, if you looked around.</p>
<p>But now things are bit less clear on that. The newest film from A24 is based on a <strong>4chan post</strong>. It&#39;s difficult for me to actually write that. It makes me physically ill. </p>
<p>This isn&#39;t an attack or judgement on the folks who made &quot;The Backrooms&quot;. It&#39;s an indictment on the soul of A24. This was a money play, not an art play. And look it worked, the younger adults who grew up on that culture turned up. It&#39;s successful.</p>
<p> It&#39;s made 385 million on a 10 million budget. That&#39;s great I guess.</p>
<p>It&#39;s just... this is the studio that brought us Moonlight in 2016. A film that stood for something, risked a lot and affected the world. It&#39;s art, and that art was enormously successful. It made 66 million on a budget between 1 - 4 million. </p>
<p>You can create art and make money. You just need to have the appetite for risk and a discerning eye. I think the first requirement is the one that is killing things for the art side of cinema, sadly.</p>
<p>And for our comic book fair, its not any better.</p>
<h2>The Fatigue</h2>
<p>For the longest time I would ignore a lot of the condemnation, for various reasons really. I am a comic book fan, have been since I was 7 years old, so I don&#39;t really get &quot;super hero fatigue&quot;. </p>
<p>With that being said, Superman was mediocre and inoffensive, but not truly great. I haven&#39;t seen Supergirl yet, so I will reserve judgement, but things aren&#39;t looking good on that front either. </p>
<p>As for Marvel, their recent track record has been incredibly spotty. I thought Thunderbolts was great, ambitious and took us down narrative routes that were compelling and risky. Not perfect, but at least they tried something and landed a lot of it.</p>
<p>Now we have Doomsday, which seems to admit that Marvel can&#39;t continue being creative, so they are recycling actors and events to create spectacle, over story.</p>
<p>I hope I&#39;m wrong, but bringing back Robert Downey Jr. and Chris Evans, this soon after satisfying, earned endings to their stories, feels like desperation, not a calculated plot point. I mean bringing back the Russo Brothers, feels the same. </p>
<p>&quot;This worked before, lets do it again to right the ship&quot;.</p>
<p>Look, I won&#39;t ever have &quot;super hero fatigue&quot; I love the stories, what they stand for and communicate. Do I wish there were less of them, and the quality of each one higher? Absolutely. </p>
<p>But if I could have one kick ass DC Comics movie, one kick ass Marvel Comics movie and at least one kick ass indie comic movie a year, I would be a very, very happy old man. The problem is that we aren&#39;t really getting that and probably won&#39;t ever again.</p>
<p>I don&#39;t know if it&#39;s my age, or what but it&#39;s all just leaving me rather cold and a lot grumpy. I hope releases like Dune and The Odyssey will rekindle studio&#39;s desire to make art again, but I just don&#39;t know if it will.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Here's to Coincidence]]></title>
      <link>https://chrisjdavis.org/posts/here-s-to-coincidence</link>
      <guid>https://chrisjdavis.org/posts/here-s-to-coincidence</guid>
      <pubDate>Wed, 03 Jun 2026 17:39:10 +0000</pubDate>
      <description><![CDATA[The one where the author meets his person, because he didn't want to get beat up by his friend.]]></description>
      <content:encoded><![CDATA[<p>It&#39;s funny how things turn out sometimes. Like my marriage. Freaking Hilarious.</p>
<p>I guess a little context would help, right? Okay lets roll the clock back 31 years, to my senior year of high school, and the day I announced to some of my friends that I wasn&#39;t going to attend our Senior Prom. I had already been to Prom as a junior, and I wasn&#39;t dating anyone at the time, so I didn&#39;t really have the desire to go.</p>
<p>No big deal, right? <strong>Wrong mother trucker. Very wrong</strong>.</p>
<p>You see a friend of mine, Tammy, very much wanted to go to our Senior Prom, and as she was also between significant others at the time, took exception to my flippant attitude. She decided we would go together as friends. You didn&#39;t want to mess with an angry Tammy, so I agreed. </p>
<p>She&#39;s great, we&#39;ll have fun and we can close out this chapter of our lives. Good. Great. No big deal.</p>
<p>Fast forward a few weeks and we are sitting in a fancy restaurant, high in the sky, eating dinner with another couple. It was the thing to do in the late 90&#39;s in Southern Indiana. The girl in the other couple was shy, stinking cute, and while we were walking back to our cars, I realized, from my vantage point, was someone I had noticed before. In Choir. </p>
<p>I remember vividly being behind her in line, admiring the view (<em>I was 18, cut me some slack</em>) and my friend Rico noticed where my attention was, and agreed, it was a nice view. </p>
<p>Rico has always known what&#39;s up.</p>
<p><strong>Anyway....</strong></p>
<p>Given this realization, and how much I enjoyed hanging out with her that night, I eventually decided to ask her out. She said sure, and 4 years later we exchanged vows. </p>
<p>Fast forward from that point 27 years and you arrive at today, where we are still happily married, have two rad sons, <em>Nathaniel and Superfly</em>, and a piece of crap cat. It&#39;s strange to think about how things would have turned out had I not feared for my life when Tammy <strong>strongly suggested</strong> we go to Prom together.</p>
<p>Sometimes little moments can give rise to pivotal, defining moments in your life. You just need to go with the flow and see where it carries you. Sometimes it&#39;s to your person. </p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[1,546,290,648]]></title>
      <link>https://chrisjdavis.org/posts/1-546-290-648</link>
      <guid>https://chrisjdavis.org/posts/1-546-290-648</guid>
      <pubDate>Mon, 01 Jun 2026 13:30:01 +0000</pubDate>
      <description><![CDATA[I guess it's time to reflect on life, the universe and everything for Chris. Not a fun time people. Not a fun time.]]></description>
      <content:encoded><![CDATA[<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1780324787226-byderngqrhh.jpg" alt="We always forget to reflect that we are also worse than we think. By Ands Mahardika" />
<p>So I recently hit 49 on the clock &#39;o life. That&#39;s <strong>588 months</strong>, <strong>17,897 days</strong>, <strong>429,525 hours</strong> and <strong>1,546,290,648 seconds</strong>. One year away from half a century. </p>
<p>The day I was born, the biggest news was around the Watergate Scandal. Seems like not much has changed in 49 years since Presidential scandal and nonsense dominated the headlines this year on my birthday as well.</p>
<p><strong>Sir Duke by Stevie Wonder</strong> was the number 1 song (great song), <strong>Star Wars</strong> was two days away from releasing and changing the world. It was the year of the <strong>Voyager 2</strong>, <strong>Atari 2600</strong> and <strong>peanut farmers running for President</strong>.</p>
<p>Pretty darn good year if <strong>you ask me</strong>.</p>
<p>Fast forward 49 years and here I sit. Happily married,  father of two great kids, a reasonable mortgage and a mountain of existential dread. </p>
<p>Music sucks, cinema is a disappointment, politicians are no longer hiding all the evil they do, but are proudly embracing it. It&#39;s like the creativity and soul have been sucked out of the world, and in the emptiness left behind mediocrity, lies and corruption have taken their place.</p>
<p>There isn&#39;t a point to this post really, just observations and navel gazing as I contemplate the future my kids will inherit, and how murky it seems right now.</p>
<p>I had high hopes for my generation (GenX) burning down the bad to make way for a newer, more feral good, but between the Boomers refusing to cede power and the apathetic truth of what we have become, it seems like the weight now falls on our children, and their children.</p>
<p>I just hope there is time left to right the ship.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Scratch your own itch]]></title>
      <link>https://chrisjdavis.org/posts/scratch-your-own-itch</link>
      <guid>https://chrisjdavis.org/posts/scratch-your-own-itch</guid>
      <pubDate>Tue, 21 Apr 2026 03:04:19 +0000</pubDate>
      <description><![CDATA[I have found over the 25+ years I have been doing this design and dev thing, that the best products you can make start off as a simple fix for a problem you have. I think this is one.]]></description>
      <content:encoded><![CDATA[<p>One of the things I love most about being a maker is the idea of &quot;scratching your own itch&quot;. if I have a problem or a need, I just build a solution. This can be a piece of furniture, a 3d print or laser project, or usually, software projects.</p>
<p><strong>A few weeks ago a new itch popped up.</strong></p>
<p>I have been a user of LastFM since 2005. I am a sucker for data and I loved the idea that I could save my music history somewhere and DO something with it. Of course as time went on it became clear that I couldn&#39;t really DO what I wanted with that data. I don&#39;t own it. they do. I can&#39;t easily export my complete listening history, etc. </p>
<p><em>That really pisses me off</em>.</p>
<p>This is my data and I should be able to do whatever I want with it, whenever I want. LastFM isn&#39;t going to fix this problem, since for them holding my data hostage isn&#39;t a problem, it&#39;s a feature. </p>
<p><strong>So I fixed it</strong>.</p>
<p>And in doing so, thought:</p>

<blockquote>hey, there have to be other folks who feel the same way.</blockquote>
<p>Which lead to the creation of <a href="https://716fm.com" title="Your listening history shouldn&#39;t be trapped in someone else&#39;s platform.">716FM</a>, a simple SAAS that imports your LastFM history and keeps it up to date. Once the data is in 716FM, you can export the entire thing as json, csv, etc. You can also export specific ranges. I have eschewed the traditional UI and UX for this stuff, and went more with a &quot;Musical Time Machine&quot; exploratory approach, with a more traditional archive system to back it all up.</p>
<p>It makes me happy. Hopefully it will make some other people happy as well.</p>
<p>This is v0.5 of the app, which is focused on migrating your data from LastFM and keeping it update. V1.0 will ship with native apps for Mac and Windows that will allow you to ditch LastFM completely. Can&#39;t wait for that personally. </p>
<p>V2.0 will ship with some interesting AI features as an optional add on for the folks who want it. </p>
<p>Now you might be asking yourself</p>

<blockquote>Self, doesn't exposing all of a users listening history to a model hosted universe knows where, conflict with this apps primary focus?</blockquote>
<p>Glad you asked. The AI features I am designing are about giving you a deeper understanding of your music, and are 100% focused on privacy.</p>
<p>When these features ship, the models will be hosted privately, your data won&#39;t be used for training and will never be shared, sold, etc. The entire point of this app is user control and privacy, so that will extend to the AI layer as well.</p>
<p>Of course you have to <strong>trust me</strong>, but hopefully I can earn that trust through transparency, etc. <a href="https://716fm.com" title="The Covenant">716FM has a covenant</a>  (and the normal legal docs) that spell out our commitment and responsibilities in clear English. </p>
<p>If you don&#39;t want to use the AI features, you won&#39;t be required to, and your data will never come in contact with those systems. Only those who upgrade to that tier will have their data exposed to the models.</p>
<p><strong>And yes, this is a paid service.</strong> There is no way I can run this, with even a few thousand users, for free. I am doing my best to keep things as affordable as possible, and there will be an open source, single user version of the core for folks to download and run if they want to take on the burden of running and managing this for their personal music archive.</p>
<p>For everyone else a minimal monthly fee will be required. Hopefully the value provided warrants 5 bucks a month. I&#39;m kind of banking on it, no pun intended.</p>
<p>Okay, I think that is enough for now. Go check out the site, read about the app and let me know in the comments if you have questions.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[A Need for Change]]></title>
      <link>https://chrisjdavis.org/posts/a-need-for-change</link>
      <guid>https://chrisjdavis.org/posts/a-need-for-change</guid>
      <pubDate>Thu, 09 Apr 2026 14:48:20 +0000</pubDate>
      <description><![CDATA[The only constant in life is the need for change. It can be scary or liberating, it's up to you ultimately. I am choosing to see it as a positive, liberating experience.]]></description>
      <content:encoded><![CDATA[<p>One of the things that have been a clear through line for 2026, at least for me, is the need for change. </p>
<p>Whether we are talking about self care and my health, that have been prompted by <a href="https://chrisjdavis.org/posts/year-49" title="Year 49">recent health scares</a>, or the <a href="https://chrisjdavis.org/posts/agentic-coding-an-abject-lesson" title="Agentic Coding, and abject lesson">changes in the industry</a> I call home, or the geopolitical changes happening in the country I was born into, this year has been about change.</p>
<p><strong>And that&#39;s a good thing</strong>.</p>
<p>My wife and I have been making plans, real concrete plans, like we did when we were in our 20&#39;s and trying to figure out where our life would lead. It&#39;s been great. </p>
<p><em>Stressful and a lot of work, but great nonetheless</em>.</p>
<p>One of the lessons I am learning is to abandon, in the best possible ways, things that are unnecessary, unloved or <em>just not working</em>. Which leads us to this post.</p>
<h2>The Weight</h2>
<p>I&#39;ve been making crap for YouTube for over 10 years, and it was, for a while, fun. I enjoyed what I did and the people who watched it. We had a community and we supported each other. Somewhere along the way it became less fun, and eventually it was no fun. <em>At all</em>.</p>
<p>Just something I did out of an obligation I felt to the people who hung around and stayed subs to my two channels. It has become clear that at this point in my life, if it doesn&#39;t bring me joy, or at least a giggle, I&#39;m not doing it.</p>
<p>With that being said I am sunsetting CJD Explains and Sillyness, my two YouTube channels. <strong>Effective Immediately</strong>.</p>
<h2>The Solution</h2>
<p>Not exactly. They aren&#39;t going <strong>offline</strong>, but there won&#39;t be anymore updates on them. I am not leaving YT, since I enjoy the process of making videos, but I want to lean into more narrative things, telling stories that I care about, than what I have been doing. </p>
<p>This will be on a brand new channel, and I will be following the &quot;I&#39;ll make and release something when I feel like it&quot; YouTube Creator Process (tm).</p>
<p>I have struggled with this over the last 2 years, so the decision isn&#39;t taken lightly, for the few people who might care and be upset with this direction. I just need to make a change and focus on what matters to me for the years I have left to do these things.</p>
<p>Since we moved to Buffalo, NY I have really wanted to do some short documentary type productions highlighting things and places I love here, so I am thinking of making that the first &quot;real&quot; thing I come out of the gate with. I have wanted to highlight our families go to coffee shop for years, so I might just stop talking about it and start doing it.</p>
<p>I also want to get back to doing more stream of consciousness type videos, since I enjoy those so much. I had a series when I first started, called &quot;patio therapy&quot; where I sat on our patio in Cali, drank a beverage and just talked about what was on my mind that day. I loved it. It wasn&#39;t popular, but that wasn&#39;t the point, and honestly won&#39;t ever be the point of YouTube for me.</p>
<p>I don&#39;t approach it as a business, I approach it as a creative outlet. So I am going to focus, again, on being creative. It&#39;s not my job to teach people how to do anything. Others already do that really well. What I can do that no one else can, is see the world and whats happening, and then tell you about it, from my perspective.</p>
<p>So I&#39;m going to do that. Should be fun.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Year 49]]></title>
      <link>https://chrisjdavis.org/posts/year-49</link>
      <guid>https://chrisjdavis.org/posts/year-49</guid>
      <pubDate>Wed, 08 Apr 2026 02:01:21 +0000</pubDate>
      <description><![CDATA[Nothing like a trip to the emergency room to give you clarity, gratitude for what you have, and a renewed purpose to make sure you are around for as long as possible to enjoy it.]]></description>
      <content:encoded><![CDATA[<p>As I sit and write this, the day after a surprise, all day trip to the emergency room, I find myself more than a little reflective, a touch sentimental.</p>
<p><strong>For a Gen X Kid</strong>, who had a childhood filled with as much hurt, sorrow and abandonment as mine was, I look at the journey of my life and find myself amazed. Here I sit, happily married (<strong>celebrating 27 years</strong> this year) and father to a couple of knucklehead sons (<strong>21 and 13</strong> this year).</p>
<p>it&#39;s <em>truly</em>, <strong>wonderfully</strong> unbelievable.</p>
<p>But it&#39;s real. And I am grateful, especially after the aforementioned sojourn in the ER. Thankfully things are fine (more than fine, to be honest), but being in that situation was a wakeup call of sorts. I was raised, and honestly I am built, to prioritize my family over myself. Everything I do, think and say is always predicated upon</p>

<blockquote>How will this help me protect and help feed my family</blockquote>
<p><strong>And look, I have no problem with that</strong>. </p>
<p>I&#39;m a caveman at my core, an evolved one to the best of my ability, but a caveman nonetheless. I am wired to protect the family group. The issue with this is that at some point along the way, I forgot that to take care of <strong>them</strong>, I need to take care of <strong>me</strong>. </p>
<p>Hell, I might <em>never have known it</em>, but when you are in your 20s and 30s you are invincible, so it doesn&#39;t really matter, you know?</p>
<p>Careening headlong into the twilight of your 40s, staring down half a century, and spending the day in the ER prompt... clarity. And with that clarity you realize it matters... it <em>really, really matters</em>.</p>
<p>So yeah, I am going into my 49th year with a more sober and <strong>me</strong> focused view of life. Not to the detriment of my family, but for their benefit. The longer I am hale and healthy, the longer I can guide, love and protect. I want to annoy the crap out of my sons for years to come, and the only way I can do that is to make sure that I am here for years and decades to come.</p>
<p>So that&#39;s what I&#39;m doing. I just wish it hadn&#39;t take this long to get here.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[The Supremely Dumb Thing]]></title>
      <link>https://chrisjdavis.org/posts/the-supremely-dumb-thing</link>
      <guid>https://chrisjdavis.org/posts/the-supremely-dumb-thing</guid>
      <pubDate>Thu, 19 Mar 2026 14:41:46 +0000</pubDate>
      <description><![CDATA[browse is my tiny, probably-cursed Mac browser. WebKit is not invited to the party. Mac-only on purpose: one platform, one stack, zero Lowest-Common-Denominator UI Monkey Force, and v0 stays small so the trap doesn’t eat me.]]></description>
      <content:encoded><![CDATA[<p>I’ve been on the “build dumb things” soapbox for a while. Hobby code can be a relief valve. In the Day Job™, everything can feel binary: one wrong move and the week catches fire. That’s probably dramatic, but accurate if you ask me. But I digress. </p>
<p><strong>Dumb Things</strong>.</p>
<p>In the scraps of time between everything else, I’m building something properly dumb, I mean <em>really dumb</em>, and I want to introduce it here; what it is, why it’s Mac-only, and what “done” even means before things go off the deep end.</p>
<p>Look it’s a browser, I know, I get it. Another one. <strong>But this one is MINE</strong>.</p>
<h2>First, some context</h2>
<p>If you live on a Mac you’ve probably picked a lane: Safari, or Chrome, or Arc, or something that’s Chromium with better window dressings. Those apps are fine. They’re also carrying baggage: years of compatibility fixes, security debt, and “if we change this, half the web breaks.” </p>
<p>Someone should absolutely pack and carry those bags. It’s not going to be me, not with this project, but someone should DEFINITELY do that.</p>
<p>The app is called <strong>browse</strong>, lowercase, because all my creativity is going into the actual thing, not the marketing. It&#39;s a greenfield project, which I will explain in a sec, and I <strong>loves it, I love it so much</strong>.</p>
<p>The idea is almost insulting in it&#39;s simplicity: </p>
<ul>
<li>SwiftUI for the shell, window, toolbar, open file, all the Mac stuff, and Rust behind it for an HTML/CSS pipeline that actually draws the page. </li>
<li>Not a <code>WKWebView</code> holding the document. Not “ship Electron and go home.” </li>
<li>The content area is supposed to be parse → style → layout → paint from <em>this</em> codebase.</li>
</ul>
<p>Stupid? Absolutely. Do I care? No, no I don&#39;t. It makes me giggle.</p>
<h2>Why not “ship everywhere”</h2>
<p>I like native, tightly integrated software that is narrow in its platform focus. This isn’t a rant about Windows (eww) or Linux (I love Linux btw). I just don’t want to spend years of my life fighting a <strong>Lowest-common-denominator UI Toolkit Super Monkey Force Alpha</strong> Battle. </p>
<p>SwiftUI on top, Rust in the middle, Apple APIs where the pixels and text actually happen. One platform, one set of opinions. All mine, all suspect. </p>
<p><em>As it should be</em>.</p>
<h2>What I mean by “Greenfield”</h2>
<p>Ah yes, I did say I would explain this. </p>
<p>I&#39;m not forking Blink, WebKit, Gecko, or Servo. I’m also not trying to invent a parallel web. Over time I still want standards-shaped behavior; real HTML/CSS semantics, tests that act like a contract, blah, blah, boring, blah! </p>
<p>The code will be new, seriously!</p>
<p>You know people will tell you browsers are a trap. They’re right. I’m walking in anyway.</p>
<h2>v0, or how I keep from lying to myself</h2>
<p>I need a finish line I can actually touch. Right now that looks like:</p>
<ul>
<li>A real window with Back, Forward, Stop, and Refresh that act like it: history works, Stop cancels work in flight, Refresh reads the file off disk again so edits show up.</li>
<li>Local HTML and CSS only for this cut. </li>
<li>A small corpus with solid, specific tests so “looks right” isn’t a mood, but quantifiable.</li>
</ul>
<p>Explicitly not in v0: </p>
<ul>
<li>JavaScript. <em>Terrifying</em>.</li>
<li>Flex/grid as a gate.</li>
<li>HTTPS as a requirement.</li>
<li>Tabs.</li>
<li>Bookmarks, may they burn in hell!</li>
</ul>
<p>Etc.</p>
<h2>Speed (without the TED talk)</h2>
<p>Every side project secretly wants to be the <strong>fastest thing alive</strong>. I don’t have a press release, and a speed claim without a spreadsheet is just noise. What I actually want is one story end to end: navigation, memory, traces when something gets worse. </p>
<p>The bet isn’t “I’m smarter than everyone else.” I&#39;m obviously not. The bet is “one weird integrated app, tuned to files I care about, might feel great on the hardware on my desk.” </p>
<p>I might be wrong, I guess we&#39;ll know soon!</p>
<h2>After v0 (no promises)</h2>
<p>The docs sketch a different way to think about “where did I leave off”—threads and moments instead of bookmarks, history, tabs, and session restore all pretending they don’t know each other. </p>
<p>Host-level, deeply and meaningfully integrated Apple Intelligence stuff, not a page widget bolted on the side. That’s the part that excites me as a Mac user. It’s also not in the v0 contract, which is how I stop the project from eating itself. And Me.</p>
<h2>JavaScript</h2>
<p>I’m not writing a VM in my evenings. For now I&#39;ll integrate a mature, sane VM, but leave the door open for replacing it with one I write that is just as integrated into the hardware and experience as the rest of the app.</p>
<h2>So</h2>
<p><strong>browse</strong> is a <em>very</em> dumb thing™: </p>
<p>Native shell, Rust renderer, no WebKit painting the page, and a first milestone so small you might ask why bother. Same answer as iterator and the rest: because I want to, because it’s mine, and because “too hard” is easier to say yes to when the only stakeholder is me and a folder of test fixtures.</p>
<p>It moves when I can steal minutes. No clue when there’s something worth sharing. I’ll post here when there’s something to show.</p>
<p>Comments are open if you want to yell at me.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Hey Look, Another Thing]]></title>
      <link>https://chrisjdavis.org/posts/hey-look-another-thing</link>
      <guid>https://chrisjdavis.org/posts/hey-look-another-thing</guid>
      <pubDate>Fri, 13 Mar 2026 20:01:59 +0000</pubDate>
      <description><![CDATA[A new Mac app for screenwriters and novelists, an AI Coach that actually helps.. crazy. When you meaningfully combine agentic systems with human creativity, cool things can happen. Who knew?]]></description>
      <content:encoded><![CDATA[<h2>StoryLoop: Building a Better Writing Workflow with AI Coaching</h2>
<p>Most writing tools out there focus on storage and formatting. They give you a place to write, but not much help in getting better as you go.</p>
<p><strong>StoryLoop</strong> is my attempt to fix that.</p>
<p>At a high level, StoryLoop focuses on two things:</p>
<ol>
<li>A native macOS writing app where I draft scripts and novels  </li>
<li>An AI Coach that reviews my work, suggests improvements, and answers targeted questions</li>
</ol>
<p>The <strong>magic</strong>, hopefully, is how these two pieces work together in practice.</p>
<h2>What StoryLoop actually does</h2>
<p>As I write, the Coach can leave structured feedback on specific lines, scenes, or pacing decisions. I can accept or reject each suggestion. I can also ask questions like:</p>
<ul>
<li>Is this post-prologue opening strong enough?</li>
<li>Should I introduce this character earlier?</li>
<li>Is this too much lore too fast?</li>
</ul>
<p>The Coach answers in context, and those answers are tracked as resolved once handled.</p>
<p>So instead of a random chat floating around in a separate window, everything is tied to the draft and the decision history.</p>
<h2>Why this workflow matters</h2>
<p>AI based writing assistance often feels stateless. You ask, it answers, and that context evaporates within minutes.</p>
<p>With StoryLoop the loop workflow is the entire product:</p>
<ul>
<li>Draft</li>
<li>Coach feedback</li>
<li>Writer decision</li>
<li>Updated draft</li>
<li>Better feedback next time</li>
<li>Repeat</li>
</ul>
<p>Over time, the Coach gets better at suggesting the kinds of edits I actually want, not generic advice that sounds good but doesn’t fit my specific project.</p>
<h2>Native app + GitHub backbone</h2>
<p>Under the hood, StoryLoop stores feedback and writer questions as versioned JSON runs (files) in GitHub. That gives us two big wins:</p>
<ul>
<li>Full history for learning and auditing  </li>
<li>A clean app UI that only shows active items by default</li>
</ul>
<p>Resolved items are hidden in the working view, but still preserved in git for context and refinement. So the writing experience stays focused without losing the data that makes the Coach smarter.</p>
<h2>What I like most so far</h2>
<p>The Coach is useful because it’s specific. It can catch a rhythm issue in one sentence, flag lore overload in a reveal, or push me to anchor a scene in character objective.</p>
<p>It’s less &quot;write for me&quot; and more &quot;help me make better choices faster.&quot;</p>
<p>That’s exactly the role I wanted AI to play in my process.</p>
<h2>Where StoryLoop is headed</h2>
<ul>
<li>Tighten the feedback scoring and refinement loop  </li>
<li>Improve question handling for faster back-and-forth  </li>
<li>Polish the UI so coaching feels integrated, not bolted on</li>
</ul>
<p>The goal isn’t to automate storytelling. It’s to create a workflow that helps me, and maybe you eventually, stay in flow while still getting sharp, contextual feedback.</p>
<p>More to come soon, but to wet your appetite, here is a preview of the Mac app in action.</p>

<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1773434271372-c3idzr1fq6.jpg" alt="The main interface for StoryLoop with the feedback panel open." />]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Oops... I did it again]]></title>
      <link>https://chrisjdavis.org/posts/oops-i-did-it-again</link>
      <guid>https://chrisjdavis.org/posts/oops-i-did-it-again</guid>
      <pubDate>Thu, 08 Jan 2026 15:45:15 +0000</pubDate>
      <description><![CDATA[To show you that I practice what I preach, say hello to JüK, a new minimal, thoughtfully designed (I think!) front end for Apple Music. I have a love hate relationship with Apple Music.]]></description>
      <content:encoded><![CDATA[<p>Right, so I have <a href="https://chrisjdavis.org/posts/build-the-dumb-thing" title="Build the Dumb Thing">written in the past</a> about making dumb things, and how it is a positive thing to do and encouraged you to go out and make all the dumb things!</p>
<p>To show you that I practice what I preach, say hello to JüK, a new minimal, thoughtfully designed (I think!) front end for Apple Music. I have a love hate relationship with Apple Music. I love the audio quality and deep catalogue of tracks to enjoy, but using the app can be a pain in the ass. </p>
<p>It has many of the same issues that bug me about the Plex app, <a href="https://chrisjdavis.org/posts/genus-a-fresh-plex-experience" title="Genus, A Fresh Plex Experience">outlined over here</a>, most notably the bloat that comes from the social crap that <strong>I DO NOT WANT</strong>.</p>
<p>I know some people really enjoy and benefit from that, but I don&#39;t and I want it gone. There are some serious design and usability issues with the app as well, which I have tried to address while building JüK, but the frustration that kicked it off was <em>bloat</em>.</p>
<p>I am in the final stages of the alpha v1, after which I will probably try to find beta testers and release it to them. This will be a free download, hopefully from the App Store. Enjoy the screen shots of the current version below and if you have any questions you can ask them here or find me on threads.</p>

<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1768141690565-p9c06bodra.jpg" alt="The Home View of JüK, my Apple Music Player replacement, featuring Recommendations from Apple, as well as your recently accessed content." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1768141752720-nx7rp7syja9.jpg" alt="The Album View of JüK, featuring a more usable interface for accessing content for an album, as well as expanded metadata." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1768141806549-xa9542xwp8.jpg" alt="Lastly the Songs View of JüK, with a modal that shows the metadata for the song currently playing, accessed by clicking the thumbnail of the album artwork in the player." />]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Genus, A Fresh Plex Experience]]></title>
      <link>https://chrisjdavis.org/posts/genus-a-fresh-plex-experience</link>
      <guid>https://chrisjdavis.org/posts/genus-a-fresh-plex-experience</guid>
      <pubDate>Mon, 17 Nov 2025 16:45:15 +0000</pubDate>
      <description><![CDATA[As I mentioned in my previous post, I have evolved into a new form, where I start, stop, abandon, pick back up, and abandon again... a ton of projects. I have had to just accept this, since I can't seem to revert back to my previous, hyper focused form. **It is what it is.**]]></description>
      <content:encoded><![CDATA[<p>As I mentioned in my <a href="https://chrisjdavis.org/posts/i-have-become-flighty" title="I have become flighty">previous post</a>, I have evolved into a new form, where I start, stop, abandon, pick back up, and abandon again... a ton of projects. I have had to just accept this, since I can&#39;t seem to revert back to my previous, hyper focused form. <strong>It is what it is.</strong></p>
<p>One upside I have found, is that if a project <em>really, really</em> captures my imagination, I am able to be a bit more single minded with it, which leads us to Genus, my bespoke <a href="https://plex.tv" title="Meet your TV concierge.">Plex Media Server</a> front end for the Apple TV. I haven&#39;t written anything for the Apple Ecosystem in years, so diving into this was frustrating, but also pretty enjoyable since so much has changed. SwiftUI is really interesting and fun to use, for the most part. </p>
<p>Because of the above, and the fact I am building something for tvOS, which I have never done, this project has had no problems keeping my attention. Stealing an hour here, 3 hours there, I have systematically chipped away at the thing, to the point that I am able to deploy it to one of my Apple TV&#39;s and actually use it for watching my libraries of content. </p>
<p>I am about to the point that I need other peoples opinions on it, at least from a user experience standpoint, so I think once I squash a few more bugs I will set it up in Apples Beta Testing system and invite people to install it and provide feedback. Until then, here are some screens of the working app. I&#39;m pretty proud of it, and at least for me, it works 100% the way I want.</p>
<h2>Here are some screens of the working app!</h2>
<p>Hopefully you like them, cause I LOVE THEM.</p>

<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1763400142184-ofm1qcwk7n.jpg" alt="The home view of Genus, showing the main navigation and any media that you can continue watching." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1763400153277-col3kr60tc.jpg" alt="The home view of Genus, showing recently added tv and movies that are ready to watch." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1763400173443-6nqfzuxkhz.jpg" alt="The movie library view of Genus, allowing the user to filter by first letter, genre or both." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1763400185026-9d5ko7kto97.jpg" alt="The tv series library view of Genus, allowing the user to filter by first letter, genre or both. Series show the year and seasons when highlighted." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1763400452942-4dvu9v3mdr4.jpg" alt="The series detail view showing seasons, episodes and other meta data." />
<img src="https://sfo3.digitaloceanspaces.com/sillyness-storage/uploads/1763400560402-10c8sg1zaaob.jpg" alt="Media playing in the default tvOS player, with metadata." />]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[I have become flighty]]></title>
      <link>https://chrisjdavis.org/posts/i-have-become-flighty</link>
      <guid>https://chrisjdavis.org/posts/i-have-become-flighty</guid>
      <pubDate>Fri, 07 Nov 2025 16:50:14 +0000</pubDate>
      <description><![CDATA[I don't know if this affects anyone else out there, but over the last year or two I have apparently evolved into a new form, the **Master of Unfinished Projects**. I used to be single minded with my projects, start one, finish it, reset, rinse and repeat.]]></description>
      <content:encoded><![CDATA[<p><strong>What can I say, I like to have something to work on, and I get distracted easily of late.</strong></p>
<p>I don&#39;t know if this affects anyone else out there, but over the last year or two I have apparently evolved into a new form, the <strong>Master of Unfinished Projects</strong>. I used to be single minded with my projects, start one, finish it, reset, rinse and repeat. But something has changed recently pushing me to start, build and then lose interest 85% of the way through. </p>
<p>It&#39;s feels weird and slightly distressing, if I&#39;m begin honest.</p>
<p>I have been working pretty hard to overcome this issue and return to my &quot;get it done&quot; days but alas, that ship seems to have sailed, hit an iceberg and sunk below the water, as the band played a meloncholy tune, <em>never to be seen or heard from again</em>. </p>
<p>With that being said, I don&#39;t really have much choice but to accept my new reality. Thankfully I don&#39;t believe this will lead to abandoned projects, since I seem to eventually get back around to wanting to work on things again <strong>eventually</strong>.</p>
<p>Right now I have these projects in some state of progress:</p>
<h2>Iterator</h2>
<p>A fully decentralized, pub sub based version of <a href="https://dribbble.com">dribbble</a>, 100% focused on sharing work and getting feedback.</p>
<ul>
<li><strong>RLine CMS</strong> — A simple, modular CMS for powering blogs and small sites (you&#39;re using it now!)</li>
<li><strong>Hello Mod</strong> — A small web app that makes creating Cloudflare workers simple, designed specifically for status pages and maintenance pages.</li>
<li><strong>Analytics</strong> — What it says on the tin, simple, elegant Analytics that you install and own. </li>
<li><strong>Homebase</strong> — Project Management and Issue tracking software, with a focus on automated reporting and stakeholder workflows.</li>
<li><strong>Genus</strong> — tvOS Native front end for Plex, focusing 100% on video playback and nothing else.</li>
</ul>
<p>A lot of them are responses to my own irritants, especially Genus and Hello Mod, but I think all of them will find an audience once they are release ready. I guess more than anything I wanted to put something out there talking about this, as well as talking about the projects I am cooking up, as a sort of accountability to the universe.</p>
<p>So if any of the projects above interest you, feel free to ask me about them on a semi regular basis. It can&#39;t hurt!</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Superman (2025)]]></title>
      <link>https://chrisjdavis.org/posts/superman-2025</link>
      <guid>https://chrisjdavis.org/posts/superman-2025</guid>
      <pubDate>Tue, 19 Aug 2025 14:52:37 +0000</pubDate>
      <description><![CDATA[I enjoyed Superman (2025) MUCH more than Man of Steel, even though I think Cavill could have been an amazing Supes/Kent if he had been given the chance. I am hopeful for the future of the DCU with this being the jumping off point. I'm excited to see what comes next.]]></description>
      <content:encoded><![CDATA[<p>Just a quick post here. Saw the new Superman finally (I hate theatres), had some quick thoughts.</p>
<ul>
<li><strong>Corenswet was a solid Supes</strong>. I think he can do a solid Clark, but we didn&#39;t get enough of him, which was a drag. I think the best executions of Superman highlight this duality so we can really feel it. I needed a bit more Clark, essentially.</li>
<li><strong>I hate the suit</strong>. The biggest issue I had was how it fit and the material. There are scenes where it literally looked like he had T-Rex arms. The first that comes to mind is when he&#39;s fighting the Kaiju and he does the whole &quot;eyes up here&quot; bit. It was absurd looking. The main issue though, other than the aforementioned visual problems, is that you can see that he has very little range of motion, when it&#39;s not all CGI. No character whose whole schtick is &quot;Hey look how hard I can punch&quot; would have a uniform that restricted the movement of his face punchers.</li>
<li><strong>Lex was perfect</strong>. While I can enjoy a more nuanced greyer version of Lex, like we saw in Smallville, it was refreshing to have a Lex that was just a murderous piece of shit. In many ways we need this version of Lex to properly be the nemesis of Superman. He is the distorted mirror of Supes. Brilliant, but weak. Rich but ineffective. Takes life with no remorse or second thoughts. He&#39;s perfectly human and perfectly monstrous. </li>
<li><strong>Mr. Terrific lived up to his name</strong>. I agree with the interwebs, Mr. Terrific was a breakout. The portrayal was fantastic, and did the character (whom I happen to love) justice. The mix of strategic thinking, athleticism, and pure intelligence was exactly what you wanted from that character. </li>
<li><strong>Hawkgirl feel flat for me</strong>. I haven&#39;t formed an opinion of the portrayal of Hawkgirl yet. If this is the Saunders version, then meh. If this is the Shiera (Thanagarian) version then I hate it with the passion of a thousand burning suns.</li>
<li><strong>Green Lantern</strong>. I mean it&#39;s Nathan Fillion. It was practically perfect in every way. No notes.</li>
</ul>
<p>The rest of the cast was kind of just <em>there</em> for me including Lois. No real impact on me, or not enough to be memorable, which is unfortunate since some of them are extremely important. With all that said, I enjoyed this MUCH more than Man of Steel, even though I think Cavill could have been an amazing Supes/Kent if he had been given the chance.</p>
<p>I am hopeful for the future of the DCU with this being the jumping off point. I&#39;m excited to see what comes next.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Everything is AWFUL]]></title>
      <link>https://chrisjdavis.org/posts/everything-is-awful</link>
      <guid>https://chrisjdavis.org/posts/everything-is-awful</guid>
      <pubDate>Wed, 13 Aug 2025 19:57:21 +0000</pubDate>
      <description><![CDATA[It seems like nothing I do makes anything better... most of the time it makes it worse, and I have no idea what needs to be done to change this. If I didn't have a strong, amazing partner and pretty amazing kids, I think I would have lost it by now. ]]></description>
      <content:encoded><![CDATA[<p>I&#39;m having one of those moments in life, stretched over like 2 weeks, where everything (accept my family) is <strong>horrible</strong>. </p>
<p>Let&#39;s break it down.</p>
<ul>
<li>Everything I touch at work becomes forty times as difficult as it should be. </li>
<li>None of my personal projects are going anywhere, I just can&#39;t seem to find the path forward.</li>
<li>The country I live in is falling farther and farther into fascism, religious nationalism and insanity.</li>
<li>Money is tight, see the preceding point.</li>
<li>My health, which was on an upward trajectory is now trending down again. See all preceding points.</li>
</ul>
<p>It seems like nothing I do makes anything better... most of the time it makes it worse, and I have no idea what needs to be done to change this. If I didn&#39;t have a strong, amazing partner and pretty amazing kids, I think I would have lost it by now. </p>
<p>Just screaming into the void here. </p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Words into Practice]]></title>
      <link>https://chrisjdavis.org/posts/words-into-practice</link>
      <guid>https://chrisjdavis.org/posts/words-into-practice</guid>
      <pubDate>Thu, 24 Jul 2025 13:33:09 +0000</pubDate>
      <description><![CDATA[To put my money where my mouth is, as they say, I have been building, as I have time, a supremely dumb thing and I am going to introduce the app here, as well as the thinking behind it, etc.]]></description>
      <content:encoded><![CDATA[<p>Back in <a href="https://chrisjdavis.org/posts/build-the-dumb-thing" title="Build the Dumb Thing">May of this year</a> I wrote a little something advocating for you to build dumb things. I have been doing this for years, and love it. It&#39;s a great break from a career where you often times feel every decision carries the weight of failure, like a binary based <strong>Sword of Damocles</strong> constantly hanging over your computer ready to crush your hopes and dreams at a moments notice.</p>
<p>I really need to calm down. But I digress, back to <em>Building the Dumb Thing</em>. To put my money where my mouth is, as they say, I have been building, as I have time, a supremely dumb thing and I am going to introduce the app here, as well as the thinking behind it, etc.</p>
<h2>First, some context</h2>
<p>So if you have ever used <a href="https://dribbble.com" title="Discover the World’s Top Designers">Dribbble</a> you know its a sophisticated app that is used by talented designers around the world to showcase their work and find new business, etc. It&#39;s fantastic for that and the team behind it has really hit it out of the park with the feature set, etc.</p>
<p><em>The thing is, it didn&#39;t start life that way, at all</em>.</p>
<h2>In the beginning there was dribbble (lowercase d)</h2>
<p>dribbble first hit the inter webs in 2009 via a private beta. The goal of the app was simple, intuitive and <strong>important</strong>:</p>
<blockquote>
<p>... Dribbble started as a platform for a tight-knit community of designers and illustrators to share what they were working on...
<a href="https://dribbble.com/stories/2021/04/29/a-bigger-more-inclusive-dribbble" title="A bigger more inclusive Dribbble">Renee Fleck</a></p>
</blockquote>
<p>I am an art school survivor, and the uni I went to helped desensitize you to critique, so I was more than happy to receive feedback, positive or negative. It was a really helpful community and it made me, and I imagine quite a few other folks, better designers. For a while, things were good.</p>
<p>But eventually as companies do, they pivoted:</p>
<blockquote>
<p>... we’ve evolved our mission as a company to empower designers around the world to build a successful career in design.
<a href="https://dribbble.com/stories/2021/04/29/a-bigger-more-inclusive-dribbble" title="A bigger more inclusive Dribbble">Renee Fleck</a></p>
</blockquote>
<p>Look, I&#39;m not here to comment on the direction of Dribbble. They have a business to run, and as stewards of that company, it&#39;s investors and employees, you have to make hard decisions. I am have been in that position multiple times, and I am in it right now, so no shade, hate or any of that.</p>
<p>All I will say is that once this shift happened, I had no use for Dribbble anymore. I am pretty sure there are tens of thousands of designers out there who had the same feeling and ultimate decision. <strong>Move on</strong>. The issue is there really hasn&#39;t been a place to <em>move on</em> to in the years since.</p>
<h2>So...</h2>
<p>Yeah, I am building a Dumb Thing™ called <strong>iterator</strong>. It&#39;s an homage to old school dribbble, with a few updates and twists. Let&#39;s break it down.</p>
<p><strong>The three pillars of iterator</strong>.</p>
<ul>
<li>We live in a world of AI training and you never really know when, why and how services you use that you don&#39;t control will sell the rights to train models on your work. We can always hope that this won&#39;t be the case, but don&#39;t bet on it. Large checks can change ethics and morality. <strong>iterator</strong> needs to address this in someway.</li>
<li>One thing I agree with Dribbble on is that the world of design is changing and expanding. <strong>iterator</strong> needs to embrace and support designers of different media.</li>
<li>This isn&#39;t going to be a business. It can&#39;t. So hosting a single, monolithic saas app is a non starter, also see point 1. <strong>iterator</strong> needs to embrace another paradigm.</li>
</ul>
<p>After having a thunk, I came up with a sketchy plan, my <em>favorite</em> kind of plan. Let&#39;s take a look.</p>
<ul>
<li>To resolve pillar 1 above, <strong>iterator</strong> is self hosted. It&#39;s conceivable that someone could create an instance of the app and do something nefarious with it, but I can&#39;t really stop that unfortunately. I&#39;m hoping folks setup their own instance, if I make it easy enough, so that they have complete control over everything. We&#39;ll see.</li>
<li>As for pillar 2, <strong>iterator</strong> supports image, video and audio out of the box. If/when more formats are needed, they can be added in a future version of the software.</li>
<li>Finally pillar 3 is handled by <strong>iterator</strong> being open source. When I have a decent beta, the source will be released via <a href="https://github.com" title="Build and ship software on a single, collaborative platform">GitHub</a>. I am hoping a community of designers and developers grow around it, updating and extending it as we go.</li>
</ul>
<p>A few other morsels of information for you.</p>
<ul>
<li><strong>iterator</strong> is a federated app! Yes like mastodon and a bunch of other apps you&#39;ve never heard of, this app can find and join other nodes, allowing the data created on a single instance to show up in any other instances that are connected. This allows for people to own their content, while still benefiting form a hopefully global community. Not everyone will want to host their own instance, so you can of course create an account on an existing one. There will also be an invite system that can be activated so that admins of that instance can control who is able to join.</li>
<li>Lastly, for now, there is an auto discovery system. If this feature is enabled every instance will ping a central service to register itself, and just as importantly, to connect (subscribe) to all the other nodes that are in the central DB. There are moderation controls, etc so you can choose to de couple with another instance if needed.</li>
</ul>
<p>Okay that&#39;s it for now! I have an alpha running with about 85% of the features needed for a beta release. This is being built in a &quot;where I can steal a few minutes&quot; process, so I don&#39;t really know when this will be live, but I will keep people updated as things progress.</p>
<p>Let me know what you think in the comments!</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Your horn, to toot or not to toot]]></title>
      <link>https://chrisjdavis.org/posts/to-toot-or-not-to-toot</link>
      <guid>https://chrisjdavis.org/posts/to-toot-or-not-to-toot</guid>
      <pubDate>Thu, 10 Jul 2025 13:57:30 +0000</pubDate>
      <description><![CDATA[Here is the skinny. I have done some really crazy things in my professional and volunteer careers. Stuff that has benefited you, greatly. You just don't know it, because I don't talk about it. I have no interest in doing so, since it always feels like bragging and I am not really that type of person.]]></description>
      <content:encoded><![CDATA[<p>I have a problem internet. Well, that&#39;s not quite right. Maybe. Gah!</p>
<p>Here is the skinny. I have done some really crazy things in my professional and volunteer careers. Stuff that has benefited you, greatly. You just don&#39;t know it, because I don&#39;t talk about it. I have no interest in doing so, since it always feels like bragging and I am not really that type of person. I would rather look forward and talk about what I am <strong>going</strong> to do, as opposed to what I <strong>have</strong> done.</p>
<p>Which seems fine right? I always thought so, but apparently <em>we are all wrong</em>.  Dead wrong. It&#39;s more than mildly aggravating. So in the spirit of horn tooting, here are some things I have done that benefited you dear reader, directly.</p>
<ul>
<li>Ever used a website? 75% of <strong>You&#39;re welcome</strong>, since I worked for 10+ years with the <a href="https://apache.org" title="The Apache Software Foundation">Apache Software Foundation</a>.</li>
<li>Ever used the dashboard in WordPress? <strong>You&#39;re welcome</strong>. I built and committed to WP core the first dashboard.</li>
<li>Enjoying that less spammy experience on WordPress? <strong>You&#39;re welcome</strong>, the first spam plugin was based in part on my plugin CJD Spam Nuker. Evidence, since people love to be dumb: <a href="https://chrisjdavis.org/posts/cjd-spam-nuker" title="Introducing CJD Spam Nuker">CJD Spam Nuker</a>, <a href="https://chrisjdavis.org/posts/askimet-loose" title="Akismet spam plugin released">Akismet is Loose</a>.</li>
<li>As a dev, have you ever used the function file in your theme? <strong>You&#39;re welcome</strong>. That feature was inspired by the work I did on <a href="https://code.google.com/archive/p/kaytwo/" title="Archive of the code that powered K2">K2</a>, the spiritual follow up to the most popular WordPress theme ever released, Kubrick from <a href="https://binarybonsai.com" title="The home of Michael Heilemann">Michael Heilemann</a>.</li>
<li>I&#39;ve authored books, articles and tutorials on WordPress that have been seen by millions of humans over the last 20 years. I have been told, frequently, that those articles and tutorials were what started people&#39;s path into a career in engineering or development. <strong>This is what I am the most proud of</strong>.</li>
</ul>
<p>And here is a list of things I have done that probably don&#39;t directly affect you, but are fricking cool none the less.</p>
<ul>
<li>I was on a team that created an exploration of the future of the WordPress admin. While our designs, etc weren&#39;t completely adopted, a lot of the colors, usability and design thinking behind our work made it into core.</li>
<li>I built (code wise), from scratch, all by my lonesome, the first commercially viable web3 app built around <a href="https://eosnetwork.com" title="Web3 at the Speed of Experience">EOS</a>, with mass adoption.</li>
<li>I built (code and design!), all by my lonesome a full featured mobile device prototype system that used HTML, CSS and JS to allow UX designers to create full fidelity, scripted tests and presentations of their work, using tools they already knew. This predated Figma, etc by at least 5 years. The company patented it.</li>
</ul>
<p>Okay I think I have reached my limit for talking about myself. I might do another one of these in the future, since this is no where near exhaustive. I have always found this sort of thing silly. The people that constantly promote themselves have always seemed to me, the people who have done the least interesting or important things. The really important things are done quietly, with little to no fanfare. </p>
<p>They are done by those who are driven not by ego or praise, but the need to create, improve and push things forward. I have always seen myself as one of those folks. Not in accomplishments, since as important as some of the things I have done or been involved in are, it&#39;s not like I&#39;m curing cancer or creating technologies that save lives.</p>
<p>I make weird shit on the internet and for the internet.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Life is fleeting, live like it]]></title>
      <link>https://chrisjdavis.org/posts/life-is-fleeting-live-like-it</link>
      <guid>https://chrisjdavis.org/posts/life-is-fleeting-live-like-it</guid>
      <pubDate>Tue, 01 Jul 2025 20:51:52 +0000</pubDate>
      <description><![CDATA[Last week my wife was having a routine scan done in preparation for a medical procedure, and those scans showed what appeared to be cancer in her bladder. Very quickly CT Scans were ordered and done, which then started the waiting game to see if our life together would be changed irrevocably.]]></description>
      <content:encoded><![CDATA[<p>I haven&#39;t been very <em>interweb</em> social lately, due to some pretty heavy things going on &#39;round these parts.</p>
<p>Last week my wife was having a routine scan done in preparation for a medical procedure, and those scans showed what appeared to be cancer in her bladder. Very quickly CT Scans were ordered and done, which then started the waiting game to see if our life together would be changed irrevocably.</p>
<p>Having lost my mother to blood cancer a few years ago, and my aunt to lung cancer a decade before that, the fear and anxiety I was forced to carry was like a stone around my neck, every step pulling me closer to the ground, closer to collapse. Nearly every family member I grew up with is dead; grandparents, parents, siblings, aunts and uncles.</p>
<p>My cousin is still kicking around and I have a half sister that I have reconnected with, <em>which I am very thankful for</em>, but it&#39;s a relatively new relationship, so while vital and precious, doesn&#39;t have the weight of memory that my immediate family had. Wrestling with the very real possibility that my <strong>wife</strong> would be joining that list of loss, was emotionally and physically debilitating.</p>
<p><strong>Suffice it to say, It was not a fun time</strong></p>
<p>Thankfully, the CT Scans showed that she was clear of cancer. Other things showed up, but nothing life threatening Thank God. Heather and I are both in our late 40&#39;s. Very late, truth be told, and like any good child of the 80&#39;s, we have lived as though there would be no end. </p>
<p>These last two weeks have disabused us of that notion. With extreme prejudice. I find myself approaching each day very differently, in a number of ways. </p>
<h3>Health</h3>
<p>I haven&#39;t really been too concerned with my health overall, I am weirdly healthy, with very few exceptions. The last couple of years I have seen my imagined invincibility start to slip, but I chocked it up to getting older and dismissed it. That is no longer the case. my health, mental <em>and</em> physical are now <strong>high priorities</strong>.</p>
<p>I work too much. Most days I do a full days work at <a href="https://filmio.studio" title="Redefining Entertainment. Empowering Storytelling.">Filmio Studios</a>, and then either do a second shift on other stuff (or more Studios work if I am being honest). or spend the early mornings working on something. Some days it&#39;s all 3. I am putting in 18-20 hours of work combined. <strong>That is now over</strong>.</p>
<h3>Marriage</h3>
<p>I am missing time with my wife that is irreplaceable. Heather and I will be married for 26 years in December. My favorite thing is <em>still</em> sitting with her and just being. <strong>She is my person</strong>. Our relationship isn&#39;t perfect, it can&#39;t be. We&#39;re two imperfect people, finding new ways to appreciate and love each other, but somehow that arithmetic, two imperfect souls working together towards a common goal, equals something greater than its parts. Something perfect for us and beautiful.</p>
<p>It deserves to be treasure, nurtured and protected <strong>at all costs</strong>.</p>
<h3>Fatherhood</h3>
<p>My sons are literally what keeps me going. They are both exceptional in their own ways, and you know, pains in the ass in their own ways. One day, sooner than I would like, they will be off on life building adventures of their own, maybe raising kids, just as exceptional as they are, or like in my case, more exceptional. </p>
<p>Every minute I choose to not spend with them is a minute sacrificed on the alter of <em>Things That Don&#39;t Matter&trade;</em>. I could die tomorrow, and I don&#39;t like the memories of me that will be left behind with them. <strong>I will not be my father. I will be greater. I will be better.</strong></p>
<p>There really isn&#39;t any flash of brilliance, stunning insight or revelatory conclusion here. Just things that <strong>should</strong> be obvious, but for a lot of us, isn&#39;t. Putting them down here helps me process and commit to changes that need to be made. I hope it also makes someone who reads this, and needs the words here, reevaluate their own choices. </p>
<p>Hopefully sooner than I have.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[In Search of an Analog Life]]></title>
      <link>https://chrisjdavis.org/posts/in-search-of-an-analog-life</link>
      <guid>https://chrisjdavis.org/posts/in-search-of-an-analog-life</guid>
      <pubDate>Tue, 17 Jun 2025 12:47:40 +0000</pubDate>
      <description><![CDATA[Having **another** screen in my life doesn't add to my chill, it detracts from it. The constant buzz on my wrist of some new notification that I have been programmed to immediately respond to makes me **less** present, not more. ]]></description>
      <content:encoded><![CDATA[<p>So, last week (Saturday the 14th of June to be exact) I took off my <a href="https://apple.com/watch" title="Apple Watch Section of the Apple Website">Apple Watch</a>, and put on the <a href="https://sanmartinwatchstore.com/products/black-friday-san-martin-bb58-nh35-automatic-watch-sn008gb-1">San Martin BB58 Homage</a>. This is literally the first time since the Series 0 that I haven&#39;t had an Apple Watch on my wrist.</p>
<h2>And I love it.</h2>
<p>I&#39;m not here to debate the right or wrong of Homage Watches, the <strong>tl:dr</strong> is that I view watches as fashion accessories, and as such, copies, homages and <em>inspired by</em> is par for the course. Don&#39;t @-me, I really don&#39;t care.</p>
<p>I&#39;m also not here to review the San Martin. Others have done that far better than I can, you can find the list <a href="https://www.youtube.com/results?search_query=san+martin+sn008+review" title="Reviews of the San Martin sn008">here on Youtube</a>. Suffice it to say, I am overjoyed with the watch.</p>
<p>No, I want to talk about the effect removing the computer from my wrist has had on my happiness <em>and</em> mental health, cause it&#39;s a pretty big deal, to me at least. Who knows, maybe to <strong>you</strong> as well.</p>
<h2>The trap of being <em>always connected</em></h2>
<p>As a tech enthusiast I have a very real love for technology, the <strong>newer</strong> the better. I am enamored by all the new shiny things that come out, seemingly every few weeks, that promise to make our lives better and healthier. The promise is so <em>tempting</em>, and honestly, this is the role technology <strong>should</strong> play in our lives. </p>
<p>Like with the current AI explosion, these developments should be in <em>service</em> to humanity, not in <strong>substitution</strong>. But we live in a world where the fuel that drives economies and the companies that support it,  are hoarded profit, instead of shared prosperity. </p>
<p>In this world technology serves as an infectious vector, a way to permeate every facet of ones life, so that when the new shiny thing comes out, you are <em>compelled</em> to get it.</p>
<p>And look, I&#39;m not saying that the Apple Watch is inherently bad. There are lots of positives to it, and for some it has literally become a life saver. For those who have had those experiences with this technology, it more than justifies the place it demands in their lives.</p>
<p>For me, it just doesn&#39;t. Having <strong>another</strong> screen in my life doesn&#39;t add to my chill, it detracts from it. The constant buzz on my wrist of some new notification that I have been programmed to immediately respond to makes me <strong>less</strong> present, not more. </p>
<p>At least for the people and moments that really matter, which is the point, at least <strong>for me</strong>. I want to be more present for my family, not for the social graph. Having a smart watch makes that impossible.</p>
<h2>Just turn off the notification I hear you say!</h2>
<p>That <em>is</em> a fair statement, and one that <strong>I actually tried</strong>. </p>
<p>After I turned all the distracting notifications off, I basically had a digital watch, with terrible battery life and a hefty price tag. Why on earth would I want to continue down that path, when I can put that cash, <em>between 599 and 799 depending on the model and year</em> into collecting things that are repairable and will literally last for decades?</p>
<p>I mean, I wouldn&#39;t, so I&#39;m not. </p>
<p>Unless there is a compelling health reason in the future, this is the last smart watch I will own. It&#39;s amazing how nice it feels to say that. If you would have asked me a year ago if I would ever type out those words, and mean it, I would have laughed at the absurdity of the notion. </p>
<p>It&#39;s amazing how time, distance and circumstance can change things so fundamentally.</p>
<p>Now this doesn&#39;t mean I won&#39;t have an electronic device on my wrist ever again, far from it. At this phase of my life and health journey, I really need to keep track of certain metrics. I need to track heart rate, movement and steps. I <strong>need</strong> to start taking sleep tracking seriously. </p>
<p>To help with this, the current plan is to find a good wearable, without a screen, and notifications, that tracks the metrics I want, and that supports the HealthKit framework. That way I maintain a view into my health, while continuing this evolution to a simpler, more analog version of myself.</p>
<p>Should be fun.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Agentic Coding: An Abject Lesson]]></title>
      <link>https://chrisjdavis.org/posts/agentic-coding-an-abject-lesson</link>
      <guid>https://chrisjdavis.org/posts/agentic-coding-an-abject-lesson</guid>
      <pubDate>Fri, 06 Jun 2025 12:58:19 +0000</pubDate>
      <description><![CDATA[As I sat down to hammer away at the keyboard, it occurred to me that this would be a great candidate for a little experiment, since I have been bringing the doom and gloom to the **AI makes anyone a coder** narrative that's making the rounds.]]></description>
      <content:encoded><![CDATA[<p>I know it seems that I&#39;m talking about AI a lot, but, believe it or not, I think it&#39;s pretty important. It&#39;s the type of fundamental change that can either make all of our lives better, or wreck things in a profound way. I feel like the only way to really influence this moment, or rather the path to it, is to talk about it, honestly.</p>
<p>Cause let me tell you friend, <strong>there are a lot of folks out there, who aren&#39;t</strong>. </p>
<h3>Let&#39;s use a real world example!</h3>
<p>So last night I decided to do a quick coding session before I passed out for the night, and as I am working up to releasing the CMS I build for this site, what better project to hack on for a span? With that in mind, the obvious move was to work on improving the security of <em>RidgelineCMS</em> (name pending), so I opted to add MFA to the mix as an option for each user who creates an account.</p>
<p>As I sat down to hammer away at the keyboard, it occurred to me that this would be a great candidate for a little experiment, since I have been bringing the doom and gloom to the <strong>AI makes anyone a coder</strong> narrative that&#39;s making the rounds. Yes, this is a perfect fit since its:</p>
<ul>
<li><strong>Compartmentalized</strong> Adding this to an already well architected and robust auth workflow is fairly straightforward.</li>
<li><strong>Small</strong> We aren&#39;t creating an auth workflow from scratch, just extending one with a new verification and constraint.</li>
<li><strong>Knowable</strong> It&#39;s MFA. This isn&#39;t rocket science.</li>
</ul>
<p>So with that in mind, I turned the keys over to the agent in Cursor with this prompt:</p>
<blockquote>
<p>Under user management*, we have MFA support unchecked, let&#39;s tackle that.</p>
</blockquote>
<p>*<em>I always create checklists for work I want to do when using Cursor, it makes things easier, and allows me to keep track of whats done and when, etc.</em></p>
<p>Cursor responds with:</p>
<blockquote>
<p>We&#39;ll use TOTP (Time-based One-Time Password) for this. First, let&#39;s create the necessary database schema changes.</p>
</blockquote>
<p>Things go pretty well for about 10 minutes as the agent spits out and creates solid migrations, adds and prompts me (ha!) for lib installation, etc. So far, so good. It then does the following:</p>
<ul>
<li>Create the MFA setup endpoint</li>
<li>Create the MFA verification endpoint</li>
<li>Create the MFA enable/disable endpoint</li>
<li>Create a component for MFA setup</li>
<li>Create a component for MFA verification during login</li>
<li>Update the login form to handle MFA</li>
<li>Update the auth configuration to handle MFA</li>
</ul>
<p><strong>I was beginning to feel like I was going to lose this argument...</strong></p>
<ul>
<li>Create the TOTP utility file</li>
<li>Update the auth configuration to fix the remaining issues</li>
<li>Install the missing dependencies (including bcrypt, important later)</li>
</ul>
<p>It then <em>updates the next-auth types</em> for the next 10 minutes, stuck in a loop of searching for the info, finding it, adding it, discovering it is, in fact, an idiot, and then searching again, updating, being confronted with its own uselessness, rinse and repeat.</p>
<p>After the 10 minutes I stop it, fix the types and tell it to continue. Everyone needs help sometimes after all. After another 8 or so minutes of weirdness, the agent declares everything good, and I can test! Woo! That was mostly painless, and if I have a working MFA integration now, it could be a real win.</p>
<h3>Let the Testing Begin!</h3>
<p>The app literally eats itself when I try to login. <em>Ah, there it is</em>.</p>
<p>What follows is 30 minutes (I timed it) of back and forth where the agent literally just threw crap at the wall trying to fix this. At one point I had to tell it to stop, search the web for a solution and then fix it. It said <em>sure</em>, then proceeded to <strong>not</strong> search the web for a solution and just do something random again.</p>
<p>Finally, having enough, I stepped in and fixed the issue, after searching the web myself. A few imports needed to be updated with the change in user auth flow. Took me 5 minutes to google, find the answer and then another 5 minutes implement it. 10 minutes vs 30 minutes for the developer replacement.</p>
<p><strong>Pure Magic</strong>. But I digress, let&#39;s continue! Two issues doesn&#39;t a catastrophe make after all.</p>
<p>I can now see the login screen again, so time to try logging in! I get a random <em>CredentialsSignin</em> error. Great. What the hell now?</p>
<p>I ask the agent, <strong>what the hell now?</strong> which creates another spiral of stupidity that I can only stand for 10 minutes before I stop it. After looking at the code, I see that the agent added MFA as a requirement for all users, period. Not optional, you have to have it.</p>
<p>While wrong, and bad UX, this isn&#39;t <em>terrible</em> in the grand scheme of things, except for the fact that there are already user accounts, which the agent knows, since it added new fields to the user model to support <strong>per user settings for MFA</strong> earlier in this process, which it <em>knows</em>.</p>
<p>So the schema and model are correct, but the <em>in code</em> implementation is wrong. So I tell the agent:</p>
<blockquote>
<p>I don&#39;t have MFA setup for this account.</p>
</blockquote>
<p>Should be simple right, I tell it that the account I am using to login doesn&#39;t have MFA enabled, since we added MFA after the user was created. The obvious direction now would be to update the code to actually respect the way the model and schema are, and call it a day. Here is the response, word for word:</p>
<blockquote>
<p>🤖 Ah, I see. Let me simplify this completely. The issue is we&#39;re overcomplicating the authentication flow by including MFA logic when it&#39;s not even set up. Let me fix the auth config to handle just basic email/password authentication.</p>
</blockquote>
<p>It then proceeds, to <strong>remove the MFA integration from the auth workflow completely</strong>.</p>
<p>I almost broke my desk in sheer frustration at this moment. But I mastered my inner hulk, and told the agent:</p>
<blockquote>
<p> I want MFA, my point was that the account I am trying to login with doesn&#39;t have MFA setup, so it shouldn&#39;t try to verify MFA.</p>
</blockquote>
<p>What follows is another 20 minutes of the agent being completely, utterly useless and me typing in ALL CAPS LADEN PROFANITY. Eventually it is determined that the backend isn&#39;t returning the correct error format to next-auth. Once this is resolved, we finally get... a new error:</p>
<blockquote>
<p>I am now getting the message &quot;invalid email or password&quot; when I try to login and the same error shows up in the console. However I know the email and password are correct, so this is an issue in the app.</p>
</blockquote>
<p>Another 10 minutes of uselessness and I add logging to the auth workflow to see what the actual error is.</p>
<p><code>warn: Invalid password {&quot;service&quot;:&quot;ridgelinecms&quot;,&quot;timestamp&quot;:&quot;2025-06-05T12:57:47.913Z&quot;,&quot;userId&quot;:&quot;cmawlfny00000p1atx42v3xfe&quot;}</code></p>
<p>I pass this on to the agent. It determines the password comparison is failing, and does a web search, for bcrypt related bugs. Hmm, <strong>bcrypt</strong> remember how I said that would be important later? Well, it&#39;s now later.</p>
<p>We don&#39;t use bcrypt for anything in this app, we use argon2, a more modern and type safe lib. Which the agent knows, since it recommended it as the best option when I was planning out the app. But it installed a different package anyway, and hashed the password from the front end with it, rendering any login impossible, MFA be damned.</p>
<p>Great, at least now we know what the issue is and can fix it, so we do. Hey, I can now login! We&#39;re back to the same exact workflow and feature set <strong>I</strong> built! And it&#39;s only taken 2 hours of misery.</p>
<p>So, let&#39;s enable MFA! I can&#39;t find where to enable MFA for my account so I ask the agent where it put it. It tells me system settings. Right, because before it was setup as a system level setting, and although I fixed the code in the auth workflow, I didn&#39;t touch the user facing views.</p>
<p>So I very kindly told the agent to fix it.</p>
<blockquote>
<p>This should be on user accounts, not the main app. Don&#39;t be stupid.</p>
</blockquote>
<p>Again, copy and paste from Cursor.</p>
<p>It moves the files around and hey, now I have the correct view in the correct place and it&#39;s actually nicely laid out and featureful. I setup MFA and it seems to work! Now time to test logging in!</p>
<p>I login and I get an error from the app that &quot;MFA is Required&quot;. I mean, yes, yes it is. Show me the view to provide a code. No dice. Ugh.</p>
<blockquote>
<p>Okay, I have now setup MFA for my account, and when I try to login I get an error, MFA Required. I assume because you never added the step to request the MFA code.</p>
</blockquote>
<p>Agent response:</p>
<blockquote>
<p>🤖 You&#39;re absolutely right! We need to add the MFA code input step to the login form. Let me search for the login form component.</p>
</blockquote>
<p>I want to scream. I weep instead. The agent works for about 8 - 9 minutes making changes to *fix&quot; the problem.</p>
<p>Still doesn&#39;t work. I review the code, see the issue and I say:</p>
<blockquote>
<p>It just fails, since when we return an error, the workflow stops. Do not base showing the MFA field on returning an error, that is stupid.</p>
</blockquote>
<p>The agent, happy in it&#39;s own stupidity responds:</p>
<blockquote>
<p>🤖 You&#39;re absolutely right - using an error to trigger the MFA flow is not a good design pattern. Let me fix this by modifying the credentials provider to return a proper response that indicates MFA is required, rather than throwing an error. Let me update the credentials provider.</p>
</blockquote>
<p>More weeping can be heard.</p>
<p>Another five or so minutes of 3 Stooges level inanity and we have a brief interlude of rage inducing incompetence, spurred on by the agent changing my design and UX, without being asked, and me simply asking it to add to the cursor rules that it shouldn&#39;t change any design unless prompted.</p>
<p>After 5 minutes of it creating brand new cursor rules files, multiple times, I have to open the cursor rules file, <em>that it has been following the whole time</em> (the first rule of cursor fight club is that all responses from the agent start with 🤖) and metaphorically shove it in the agents face.</p>
<p>Finally having that fixed, we return to our regularly scheduled crapfest. MFA isn&#39;t working, it&#39;s not even showing me the screen to add a code. What comes next is a comedy of errors, where every response from the agent is either:</p>
<blockquote>
<p>I apologize for the confusion... </p>
</blockquote>
<p>Or</p>
<blockquote>
<p>I see the issue now...</p>
</blockquote>
<p>And on both accounts, the agent is a dirty, dirty liar. After about fifteen minutes of this, I have had enough and stop the agent and share this nugget of joy:</p>
<blockquote>
<p>It still doesn&#39;t work. This isn&#39;t hard. Review all of the code that interacts with the login and MFA workflow and figure it out. Search the web, I don&#39;t care, just fix it.</p>
</blockquote>
<p>Profanity redacted to protect the innocent. The agent reviews all the relevant code, finds <strong>several issues</strong> and then spends the next 10 minutes fixing them. I test again. I am getting the error again that suggests that password comparison is failing.</p>
<blockquote>
<p>Still the same error. Did we go back to using the wrong encryption library?</p>
</blockquote>
<p>The Agent checks...</p>
<blockquote>
<p>🤖 Let me check the password comparison in the credentials provider. I notice we&#39;re using bcryptjs but we should be using argon2 since that&#39;s what we imported at the top of the file.</p>
</blockquote>
<p>Motherfu...</p>
<p>Bug that shouldn&#39;t have been introduced, fixed. Again. Hallelujah. I go to login, username and password accepted! MFA code screen presented! Code accepted! I&#39;m logged in! </p>
<p>Did we finally, finally get there internet? After approximately 3 hours of nightmarish absurdity, did the agent <em>finally</em>, <strong>finally</strong> implement this simple feature correctly?</p>
<p>No, no it did not.</p>
<p>As a part of my testing, I decided to logout, and then log back in and when I got to the MFA code screen, I update the URL and try to load the admin. Hey look at that, I am logged in. <strong>What the HELL</strong>?</p>
<blockquote>
<p>Even though we have MFA enabled, it isn&#39;t required to be logged in, which makes it worthless. if I provide my username/pass, and then just add /admin to the URL AT THE MFA VIEW, it lets me into the admin.</p>
</blockquote>
<p>The agent searches some...</p>
<blockquote>
<p>🤖 I understand the security concern. The MFA verification is not properly enforced in the authentication flow. Let me check the relevant files to fix this issue. I see the issue. The middleware is not properly enforcing MFA verification. Let me fix this by updating the middleware to check for MFA verification status.</p>
</blockquote>
<p>We did all that work, to add MFA to the user auth workflow, and the agent <strong>never enforced it</strong>. If I hadn&#39;t did basic testing, that I only know to do, because I know what the hell I am doing, I could have pushed this to production, maybe released this to the public, with a massive, gaping, embarrassing and truly stupid security hole.</p>
<p>I have scrapped all the crap the agent built and I am doing it myself now, since it is obvious that it can&#39;t be trusted with something simple, yet crucial. And this is the point people. </p>
<p>If the agent in Cursor, can&#39;t properly implement a simple, well understood, well documented feature like this into a well architected app that it has <strong>full knowledge</strong> of, how can you possibly ever believe that this can make a &quot;coder&quot; out of anyone?</p>
<p>We are about to see an avalanche of terribly conceived and written software hit the world. Web apps that will be taking peoples credit card numbers, personally identifying information, you name it, built by software that isn&#39;t smart enough to do basic things like making sure the MFA feature that <strong>it</strong> implemented, is actually used in the app.</p>
<p>Jeebus help us all.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Leadership Isn’t About You: Building Teams That Manage Themselves]]></title>
      <link>https://chrisjdavis.org/posts/leadership-isn-t-about-you</link>
      <guid>https://chrisjdavis.org/posts/leadership-isn-t-about-you</guid>
      <pubDate>Mon, 02 Jun 2025 13:25:20 +0000</pubDate>
      <description><![CDATA[Not everyone *should* be on the management path. Being promoted out of your competency is a real thing and the downfall of a lot of folks out there. Don't be caught by it. Speak up, protect yourself, and just importantly, protect the folks who would be forced to report to you. *This isn't just about you*.]]></description>
      <content:encoded><![CDATA[<p>My online pal <a href="https://www.kartooner.com" title="Erik Sagen">Erik Sagen</a> (Kartooner if you&#39;re nasty) posted this short, sweet and true nugget on LinkedIn:</p>
<blockquote>
<p>A real leader doesn’t just spot who can row. They notice who steps in to help someone else keep pace when things get tough.
&mdash; <a href="https://www.linkedin.com/posts/eriksagen_a-real-leader-doesnt-just-spot-who-can-row-activity-7334963829157613569-KlGO" title="A real leader doesn’t just spot who can row.">Erik Sagen</a></p>
</blockquote>
<p>Erik’s quote reminded me that while I’ve always hated the idea of being the <em>boss</em>, I’ve led multiple teams successfully, which is, quote honestly, <strong>bonkers</strong>. </p>
<p>It turns out, to me, leadership isn’t about being in charge. It’s about building environments where good people can thrive.</p>
<h2>First, lets set some expectations</h2>
<p>I get that some people take issue with the whole <em>I&#39;m the boss</em> thing. I get it, I really do. I just think it&#39;s silly, unrealistic and short changes the company that has put you in that position. You have a responsibility to the company to <strong>be</strong> the boss, and if that is something you can&#39;t do or have a profound philosophical issue with, don&#39;t take the job/promotion.</p>
<p>Not everyone <em>should</em> be on the management path. Being promoted out of your competency is a real thing and the downfall of a lot of folks out there. Don&#39;t be caught by it. Speak up, protect yourself, and just importantly, protect the folks who would have to report to you. <em>This isn&#39;t just about you</em>.</p>
<p>Okay, with that out of the way, let&#39;s talk about the thing I don&#39;t like, would rather not do, but apparently, I am very good at. <strong>Leading teams</strong>.</p>
<h2>My Grand, unifying <em>Management Theory</em></h2>
<p><em>Good folks, when treated well and given a structured environment, manage themselves.</em></p>
<p>When you build the right environment, set clear expectations, enforce accountability, and provide structure, people step up. They want to do great work. You just have to create the conditions that let them.</p>
<p>I think of it as a four-part framework:</p>
<ul>
<li>Environment</li>
<li>Accountability</li>
<li>Structure</li>
<li>Expectations</li>
</ul>
<p>Let&#39;s call it the <strong>EASE Framework</strong>. Branding! <em>Let&#39;s unpack this a bit</em>.</p>
<h3>Environment, not culture</h3>
<p>Culture is bullshit. The culture should adapt to the people, not the other way around. If it <em>can&#39;t</em> then you should take a hard look at yourself and your organization. Quickly. This is <a href="https://dictionary.cambridge.org/us/dictionary/english/canary-in-a-coalmine" title="meaning of canary in a coal mine">canary in the coal mine</a> shit, take it seriously. </p>
<p>Okay, I build environments on three pillars: <strong>learn</strong>, <strong>teach</strong>, and <strong>grow</strong>.</p>
<p>That means hiring a mix of senior, mid, and junior folks. It means mentorship is baked in. Not everyone will be a teacher. Not everyone will be a learner. But everyone can grow.</p>
<p>When people are allowed to be where they’re at, and are supported in that place, they thrive.</p>
<h3>Expectations. Set Them Early, Evolve Them Often.</h3>
<p>This is where I see most teams fall apart. Expectations are unclear, unrealistic, or outdated. You want people to succeed? Tell them how.</p>
<p>As the one in charge, so to speak, you should be creating a set of documents that are delivered on day 1 that outlines everything a new hire needs to know to be comfortable and productive.</p>
<p>Give your teams a clear, written outline on day one that covers (in my situation):</p>
<ul>
<li>How we commit and review code</li>
<li>How we report and respond to bugs</li>
<li>How we communicate with QA and other teams</li>
<li>Slack norms (how often to check in, when to chime in)</li>
<li>Documentation expectations (especially daily rollups)</li>
</ul>
<p>Most companies have on boarding documents, but I find that precious few departments and teams have well documented, easy to understand and implement, onboarding docs. And they should IMO.</p>
<h3>Accountability. This Part Sucks. Do It Anyway.</h3>
<p>With clear expectations must come accountability. Folks need to <strong>do</strong> the things you outline, or the entire endevour is for naught. Whether you’re a manager, VP, or team lead, you’re responsible for the outcome. The team wins or fails <em>with you</em>, and because of you.</p>
<p>Again, if that&#39;s not something you want or are comfortable with, <strong>don&#39;t move into management</strong>. This is the part of the narrative that is the most difficult and unsettling for most people and trust me, I understand. In these moment you can feel like the <em>bad guy</em>, coming down on the folks who are just trying to get through the day, but believe me when I say, <strong>get over it</strong>. </p>
<p>As I said at the outset of this missive, you have a fiscal and ethical obligation to the company you work for, that is non negotiable, when you accept the offer to move into management. With this move comes a lot of great perks, but it also comes with some serious drawbacks and one of those is dealing with folks who aren&#39;t meeting expectations. </p>
<p>The good news is that, if you start from the place that everyone, at some time, is going to fall short, including yourself, then you can enter these moments with more understanding, and dare I say <em>grace</em>. </p>
<p>These can be powerful teaching moments, <em>growth moments</em> for you as the manager and for the person who failed to meet those expectations.</p>
<p>Always begin by asking <strong>yourself</strong>:</p>
<ul>
<li>Did I set them up for success?</li>
<li>Did the environment contribute to this?</li>
<li>Is this a coaching moment, or a fit issue?</li>
</ul>
<p>For me, accountability issues usually fall into one of two categories:</p>
<ul>
<li>Environment or leadership failure</li>
<li>Wrong fit for the person and role</li>
</ul>
<p>Notice that <em>not smart enough</em> is not on the list. It rarely is, in my experience.</p>
<h3>Structure. Support, not Control.</h3>
<p>Structure is the invisible force that makes the rest of this work. Without it, <strong>chaos</strong>. My approach to structure is simple: it should support people, not restrict them.</p>
<p>Simple things like:</p>
<ul>
<li><strong>Daily standups at 10am.</strong> Rituals matter.</li>
<li><strong>Standups stay standups.</strong> Task updates happen elsewhere.</li>
<li><strong>End-of-day rollups.</strong> Everyone shares what they accomplished. No surprises, no silos.</li>
<li><strong>One boss.</strong> People report to one manager, not a mob. If someone else needs something, they go through the manager.</li>
<li><strong>Ask for help.</strong> It’s a sign of maturity, not weakness. Bashing your head against a wall all day isn’t noble, it’s wasteful.</li>
<li><strong>Mistakes happen.</strong> Heroes own them. Then they grow. With support.</li>
</ul>
<p>At first glance, these are small things, but they make a big difference. Trust me. Knowing what is expected and what to do create a sense of security and confidence, the lack of this knowledge creates the opposite.</p>
<h3>How this works in real life</h3>
<p>I mostly work in startups and early stage companies. This more often than not dictates a certain environment, one that can be <em>hectic</em>, <em>fast paced</em> and <em>frustrating</em>. It comes with the territory, and is the balance to the dramatic upside that can be found in startups. </p>
<p>Should things be abusive and toxic, no. I don&#39;t believe they should. </p>
<p>Can they be high stress, chaotic and demanding? Absolutely. Can everyone thrive in this environment? <strong>God no</strong>. </p>
<p>It takes a certain type of crazy to jump into that world and not only survive but thrive. I happen to be afflicted with that type of crazy, so, <em>for the most part</em>, it works for me.</p>
<p>But to make it work, in the healthiest way possible for the most people possible, the tenets I listed become key. By implementing the items above, I can create an environment that gives us the best chance to succeed, without dying in the process. </p>
<p>Expectations are known, they are enforced and most importantly, those in my care are <strong>supported</strong>.  All that to say:</p>
<p>My <em>understanding</em> lines up with the <em>expectations</em> of the environment and as such I can <em>execute</em>. All three items are inline and working together to make me successful and my manager is a key part of this equation. It is on <strong>them</strong> to manage this equation, not to manage <em>me</em>.</p>
<p>However, It is <em>also</em> on my manager to make the hard decisions, for the good of the company and the good of the team. A person who isn&#39;t a good fit for your organization, that you can&#39;t make the necessary changes to support (they are not good in higher pressure atmospheres, and move more methodically than can be supported by the company, for instance) it is <strong>your job</strong> as the boss to let them go.</p>
<p>Because again:  <em>this isn&#39;t about just you</em>.</p>
<p>This is for <em>their benefit</em> as well as yours, the companies and ultimately, all the folks who have been given to your care and leadership. You have to take it seriously and sometimes that means making choices you don&#39;t want to make, but are the best, long term, for everyone.</p>
]]></content:encoded>
      <dc:creator><![CDATA[Chris J. Davis]]></dc:creator>
    </item>
  </channel>
</rss>