<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Chris Dodds</title><description>Staff engineer. Writer. I poke at things until they make sense.</description><link>https://chrisdodds.net/</link><language>en-us</language><item><title>Making the Necessary Cuts interactive fragment</title><link>https://chrisdodds.net/blog/2026-03-25-making-the-nc-game/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2026-03-25-making-the-nc-game/</guid><description>A so-called engineer builds an ambient interactive fiction piece to market his novella</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s one thing to write a book, another thing to &lt;a href=&quot;/blog/2026-02-09-miami-novella-prize&quot;&gt;get it published&lt;/a&gt;, and yet another thing to market it. I am very much out of my depth on the marketing side of things, but I’m trying.&lt;/p&gt;
&lt;p&gt;I don’t have an audience anymore. The one I had before I quit tech blogging wasn’t massive, but it was something. I largely abandoned social media several years ago, so that’s dead too. I know that SEO takes a while to come to a boil and there’s a whole AI dynamic now that has changed the search landscape. Newsletters are king now along many axes, but I don’t have a list anymore. So what to do? Where to start?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I put up a marketing site for &lt;a href=&quot;https://necessarycuts.com&quot;&gt;Necessary Cuts&lt;/a&gt; and cross-linked it across several of the web properties I own. It’s a new domain name so that in itself will dampen the SEO juice, but you gotta start somewhere.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I wired up a fragment of the book to some low-key visuals and sounds and made an interactive narrative. &lt;a href=&quot;https://necessarycuts.com/play.html&quot;&gt;Check it out&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Interactive narratives have interested me for a while. I’ve seen quite a few at this point but haven’t really loved that many of them. I usually want them to be more ambiguous than they are. The potential feels like it’s there and there are a least a few successful examples. &lt;a href=&quot;https://kentuckyroutezero.com/&quot;&gt;Kentucky Route Zero&lt;/a&gt; is a good one that comes to mind. I also like &lt;a href=&quot;https://apps.apple.com/app/betwixt-the-story-of-you/id1540472983&quot;&gt;Betwixt&lt;/a&gt;, even though it sits a little closer to a “therapy” app.&lt;/p&gt;
&lt;p&gt;This was an opportunity to play around with something basic and get a feel for how I might approach a larger work.&lt;/p&gt;
&lt;h2 id=&quot;what-i-made&quot;&gt;What I made&lt;/h2&gt;
&lt;p&gt;I started by pulling three of the more cinematic/vibe-y scenes from the latest manuscript draft and turning them into a basic screenplay. I knew I wanted to keep it simple, so I limited myself to visuals that were CSS-only, no image assets. Initially, I played around with generated audio, but it was too limiting for what I wanted to do, so I pulled some clips from open source audio libraries (water lapping on a shore, a car driving away on gravel, etc.) and wired those to events in the text.&lt;/p&gt;
&lt;p&gt;From there it was just a lot of tweaking. Find the pace, fine-tune timing and transitions, smooth out rough edges. I’m pretty happy with the result and it helped solidify what a future project might look like.&lt;/p&gt;
&lt;p&gt;The project only uses vanilla JS, CSS, and HTML. The fanciest thing in it is some Web Audio API stuff that shapes the audio experience (looping, fade-ins/outs, dynamic volume, etc.). It’s not really a game, per se; there’s no real narrative branching or similar. But it &lt;em&gt;is&lt;/em&gt; immersive, which I think is the main goal for something like this. Drop the user in the world of the book and let them soak up the vibe of it.&lt;/p&gt;
&lt;h2 id=&quot;what-i-learned&quot;&gt;What I learned&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;I actually like this type of design. The constraint of text + CSS means you have no place to hide and that’s fun. You have to dial in on the details for it to work and when it does work, it really feels like it lands.&lt;/li&gt;
&lt;li&gt;Developing something with a very exact “shape” for modern mobile web suuuuuuuucks. I had the desktop experience basically done in an evening. Getting everything dialed in on Mobile Safari took a lot longer.&lt;/li&gt;
&lt;li&gt;It really feels like there’s space for literary-flavored interactive narratives. I’m not sure it’s a commercially viable niche, but it should exist as art. There should be more things like this. I would play them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Will this give me an SEO boost? Will it help me build an email list? Maybe? I like it as art either way though.&lt;/p&gt;</content:encoded></item><item><title>Back piece done</title><link>https://chrisdodds.net/blog/2026-02-21-back-piece-done/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2026-02-21-back-piece-done/</guid><description>The mosaic is finished. ~60 hours, Aug 2024 to Feb 2026.</description><pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2025-10-08-selective-pain/&quot;&gt;I wrote a while back about the back piece I’ve been working on&lt;/a&gt;. I was ready to be finished at the time, and wasn’t learning anything more from the discomfort. That held true.&lt;/p&gt;
&lt;p&gt;It’s done now, minus the final round of healing. August 2024 to February 2026. Sixty-something hours sitting. The last eight were a slog going over scar tissue and the thin skin of my lower spine. Ladies who get mastectomy cover ups must be made of much stronger stuff than me. I earned this ink though. The little voice in my head that undercuts compliments and warns me I’m flying too close to the sun can’t win this one.&lt;/p&gt;
&lt;p&gt;Progression, from first session to last (missing a couple of pics I can’t find at the moment):&lt;/p&gt;
&lt;div style=&quot;display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; margin: 1.5rem 0;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2024-08-29_001.jpeg&quot; alt=&quot;Back piece session 1, Aug 2024&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2024-09-26_002.jpeg&quot; alt=&quot;Back piece session 2, Sep 2024&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2024-10-22_003.jpeg&quot; alt=&quot;Back piece session 3, Oct 2024&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2024-11-24_004.jpeg&quot; alt=&quot;Back piece session 4, Nov 2024&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-01-21_005.jpeg&quot; alt=&quot;Back piece session 5, Jan 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-03-20_006.jpeg&quot; alt=&quot;Back piece session 6, Mar 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-04-22_007.jpeg&quot; alt=&quot;Back piece session 7, Apr 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-06-24_008.jpeg&quot; alt=&quot;Back piece session 8, Jun 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-07-23_009.jpeg&quot; alt=&quot;Back piece session 9, Jul 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-09-25_010.jpeg&quot; alt=&quot;Back piece session 10, Sep 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2025-10-23_011.jpeg&quot; alt=&quot;Back piece session 11, Oct 2025&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2026-01-29_012.jpeg&quot; alt=&quot;Back piece session 12, Jan 2026&quot; style=&quot;width: 100%; height: auto;&quot;&gt;
  &lt;img src=&quot;/images/back-tat/2026-02-20_013.jpeg&quot; alt=&quot;Back piece finished, Feb 2026&quot; style=&quot;width: 100%; height: auto; grid-column: span 2;&quot;&gt;
&lt;/div&gt;
&lt;p&gt;It’ll settle down a bit once it’s healed. I have a small, silly piece scheduled next month, but nothing more on the books after that. My left arm is probably next though—thinking geometric + organic (leaves, fronds, something like that). We’ll see.&lt;/p&gt;</content:encoded></item><item><title>Prediction markets are casinos (I checked)</title><link>https://chrisdodds.net/blog/2026-02-19-kalshi-prediction-markets-casino/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2026-02-19-kalshi-prediction-markets-casino/</guid><description>Techbros claim they&apos;re printing money on Kalshi. I built a weather-trading bot, poked at the markets, and confirmed: it&apos;s a casino.</description><pubDate>Thu, 19 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I kept seeing people talk about making bank on &lt;a href=&quot;https://kalshi.com&quot;&gt;Kalshi&lt;/a&gt;. It’s a prediction market: you buy contracts on whether something will happen (temperature, TSA numbers, “I’m just trading on information,” etc). I wanted to see what was actually there, so I had Claude Code build a bot. It also helped with a good deal of the math because I had a football coach for a high school math teacher.&lt;/p&gt;
&lt;h2 id=&quot;what-do&quot;&gt;What do?&lt;/h2&gt;
&lt;p&gt;First, weather, which for the record is a really stupid thing to bet on. Kalshi has temperature markets. Will NYC hit 45°F or above tomorrow, will Austin stay below 85°F, that kind of thing. I pulled &lt;a href=&quot;https://nomads.ncep.noaa.gov/&quot;&gt;GFS&lt;/a&gt; (NOAA’s Global Forecast System, via NCEP) weather model runs, bias-corrected against &lt;a href=&quot;https://www.weather.gov&quot;&gt;NWS&lt;/a&gt; (National Weather Service) history per city, turned that into probabilities for each temperature range, and compared to what the market was charging. When the market overpriced “it will hit this range” (YES) I bought “it won’t” (NO). Pay 40–60¢, collect $1 if the temperature stays outside that range.&lt;/p&gt;
&lt;p&gt;First live run was a bloodbath. I (accidentally) had YES and NO both enabled. Twenty trades. 17 YES, 3 NO. The YES trades all lost. The NO trades won. Portfolio went $50 → $16. I turned off YES and re-ran a backtest on 678 past days where we know what actually happened. YES win rate was 12–25% no matter how I set the “minimum edge” cutoff. NO on the same data: 86% win rate, which was too good to be true (can’t trust backtest), but was at least a signal. The model doesn’t predict &lt;em&gt;which&lt;/em&gt; bracket will hit but it’s decent at spotting brackets the market overprices. So the only viable strategy was NO-only.&lt;/p&gt;
&lt;p&gt;Even then the margins are thin. I added filters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No same-day trading. By then the forecast is stale and you’re betting against thermometers that already know the answer. Win rate was ~80% same-day vs 88% day-ahead.&lt;/li&gt;
&lt;li&gt;Skip temperature ranges within 3°F of where the model says the high will land (model is worst there)&lt;/li&gt;
&lt;li&gt;Blacklist cities where the ensemble is garbage. LA marine layer, Miami highs (weird cloud stuff, I think)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When NWS forecast and GFS disagreed by more than 5°F I skipped the trade. With all that I’m currently at 60% win rate live on NO, a few bucks a week on a $50 bankroll. The filters are the edge. More conservative = more profitable per trade.&lt;/p&gt;
&lt;h2 id=&quot;tsa-any-better&quot;&gt;TSA any better?&lt;/h2&gt;
&lt;p&gt;While the weather bot was collecting data, I kicked off an investigation of TSA checkpoint volumes, because that is yet another stupid thing you can bet on. Will average daily passengers be above 2.2M, 2.3M, etc. I scraped &lt;a href=&quot;https://www.tsa.gov/travel/passenger-volumes&quot;&gt;TSA.gov&lt;/a&gt; (daily checkpoint numbers) and built a model with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;weighted same-day-of-week rolling average&lt;/li&gt;
&lt;li&gt;year-over-year anchor&lt;/li&gt;
&lt;li&gt;holiday filtering&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also added an LLM layer to check for near-term events, but it can only &lt;em&gt;widen&lt;/em&gt; uncertainty, never shift the mean. I didn’t play around with it a ton once I realized that the only reasonable trades were going to happen after most of the week’s passenger numbers were reported, and that would be expensive, because everyone would buy at the same time (when those numbers hit).&lt;/p&gt;
&lt;p&gt;The other TSA bot guy (&lt;a href=&quot;https://ferraijv.github.io/kalshi_tsa_trading_bot_overview/&quot;&gt;Ferraiolo&lt;/a&gt;) was pretty pessimistic about this market and that proved out. Not enough people on the other side of the trade. You can only put maybe $20/week in before you’re moving the market. Same structural stuff everywhere: cheap “lottery ticket” contracts lose, pricier ones do a bit better; posting your own price (maker) beats taking someone else’s (taker); fees eat longshots alive.&lt;/p&gt;
&lt;h2 id=&quot;the-house-always-wins&quot;&gt;The house always wins&lt;/h2&gt;
&lt;p&gt;I looked at other Kalshi categories too. Gas, CPI (consumer price index), whatever. There’s a &lt;a href=&quot;https://karlwhelan.com/sports-betting-kalshi-prediction-market/&quot;&gt;University College Dublin analysis&lt;/a&gt; (Whelan et al., 300K+ contracts) that finds the same thing everywhere. Cheap contracts (under 10¢) lose 60%+ of invested money on average (i.e. capital loss, not just loss rate per trade). Contracts above 50¢ earn small positive returns. The same paper notes that Kalshi prices are still highly informative as forecasts—-the bias is systematic (they model it as people overestimating small probabilities), not random. So the “edge” isn’t magic. It’s betting on the likely outcome (or against the unlikely), posting your price and waiting, and not chasing lottery tickets.&lt;/p&gt;
&lt;p&gt;The dangerous part is the framing. Prediction markets get sold as information aggregation, “put your money where your mouth is,” sounding rational and humble about uncertainty. That makes it sound like the smart or well-informed win. They don’t. The structure wins. The people buying cheap YES contracts (the longshots, the “maybe this time” bets) are the ones losing 60%+ of their money to fees and stacked odds. People most at risk are those who think they have an edge because they follow the news or did some research. Even my little experiment here probably has an expiration date. I’m no quant, but neither are the people posting about their “earnings.” Unless they got in super early while the market was still flapping around, it’s just survivorship bias.&lt;/p&gt;
&lt;p&gt;Because it’s dressed up as trading or forecasting instead of gambling, people who’d never sit down at a blackjack table (a well-played hand has better odds than this) will sink money in thinking they’re doing something rational. It’s a casino with a think-tank aesthetic.&lt;/p&gt;
&lt;p&gt;I got the weather bot profitable-ish by turning off half the strategy, blacklisting cities, and adding a pile of filters. It’ll probably make a little money at a glacial pace. It &lt;em&gt;was&lt;/em&gt; fun to build though and I learned some stat and weather stuff.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The expiration date came faster than expected. Return began trending under break even so I pulled the bot. I modeled a few different paths forward: tweaks to the ensemble-based model, a lite-model version that was more focused on time-of-NWS-info-drop, and looking for other mispriced angles in general. No dice. He’s dead, Jim.&lt;/p&gt;</content:encoded></item><item><title>Won the 2026 Miami University Press Novella Prize</title><link>https://chrisdodds.net/blog/2026-02-09-miami-novella-prize/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2026-02-09-miami-novella-prize/</guid><description>The thing I couldn&apos;t talk about</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Remember that &lt;a href=&quot;/blog/2026-01-26-publishing-updates&quot;&gt;exciting thing I couldn’t discuss&lt;/a&gt;? It’s official: my novella won the 2026 &lt;a href=&quot;https://sites.miamioh.edu/miami-university-press/&quot;&gt;Miami University Press Novella Prize&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I did a thing!&lt;/p&gt;
&lt;p&gt;I’ll share more details as they emerge - cover, release date, all that. For now: this is real, it’s happening, and I’m equal parts thrilled and terrified about people actually reading this thing.&lt;/p&gt;
&lt;p&gt;Big thanks to the Miami University Press crew for picking up my odd creature and giving it a home.&lt;/p&gt;
&lt;p&gt;More soon. Lots to learn.&lt;/p&gt;</content:encoded></item><item><title>Publishing updates</title><link>https://chrisdodds.net/blog/2026-01-26-publishing-updates/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2026-01-26-publishing-updates/</guid><description>Gaining some momentum</description><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My publishing “system” is picking up steam. First, let’s revisit &lt;a href=&quot;/blog/2025-11-05-more-adventures-in-publishing&quot;&gt;November&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;7 pieces: 1 novella, 3 short creative nonfiction essays, 3 short stories&lt;/li&gt;
&lt;li&gt;36 total submissions&lt;/li&gt;
&lt;li&gt;14 rejections&lt;/li&gt;
&lt;li&gt;2 of those were personalized, the rest were form.&lt;/li&gt;
&lt;li&gt;1 of the rejects made it to the second round&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Has turned into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12 pieces: 1 novella, 3 short creative nonfiction essays, 8 short stories&lt;/li&gt;
&lt;li&gt;80 total submissions&lt;/li&gt;
&lt;li&gt;43 rejections&lt;/li&gt;
&lt;li&gt;6 personalized rejections&lt;/li&gt;
&lt;li&gt;1 short list&lt;/li&gt;
&lt;li&gt;1 long list&lt;/li&gt;
&lt;li&gt;1 acceptance&lt;/li&gt;
&lt;li&gt;1 thing I can’t talk about yet, but is very exciting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;“This Did Not Matter” didn’t make the &lt;a href=&quot;/blog/2025-12-01-longlisted-fractured-lit-elsewhere&quot;&gt;short list for Fractured Lit’s Elsewhere Prize&lt;/a&gt;, which was a bummer, but expected. I’m shopping it to some more horror/dark-fantasy-focused venues.&lt;/p&gt;
&lt;p&gt;The acceptance listed above is one of my weirder pieces - about dissociation and giving up agency. Also a little spicy. It got picked up by &lt;a href=&quot;https://mrbullbull.com/newbull/&quot;&gt;BULL&lt;/a&gt;. I’ll link to it once it’s live. It got a very binary reaction on CritiqueCircle, which probably means it’s good. :D&lt;/p&gt;
&lt;p&gt;The exciting thing which cannot be discussed yet was a big surprise. Soon, my precious. Soon.&lt;/p&gt;
&lt;p&gt;Regarding the end-to-end process, I’m finding that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I’m gravitating to a form that’s more than flash, less than short story (1000-2000 words). Some places call it short-short, but most call it flash. Whatever.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;My general familiarity with mags/journals is maturing and I’ve developed a better sense of fit based on editorial theme. Fewer wasted shots.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This is pretty fun. Even if some parts are a slog.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Longlisted for Fractured Lit&apos;s 2025 Elsewhere Prize</title><link>https://chrisdodds.net/blog/2025-12-01-longlisted-fractured-lit-elsewhere/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-12-01-longlisted-fractured-lit-elsewhere/</guid><description>A piece I wrote got longlisted for Fractured Lit&apos;s Elsewhere Prize</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://fracturedlit.com/fractured-lit-2025-elsewhere-prize-judged-by-jemimah-wei-longlist/&quot;&gt;public announcement&lt;/a&gt; is up. I can talk about it now. One of my fiction pieces, “This Did Not Matter,” has been longlisted for Fractured Lit’s Elsewhere prize.&lt;/p&gt;
&lt;p&gt;Visible traction. Huzzah!&lt;/p&gt;
&lt;p&gt;I should find out in the next week or two if I make the shortlist and/or win. I’m honestly happy with just being longlisted. The piece is more accessible than most of my writing, but lacks the human-focus and interiority of past winners, so it’s probably at the edge of their taste-band. It’s cold mythic dread, kinda McCarthic. An exhausted djinn destroys the last inhabitants of a dying desert town, then seeks its own end. Rainbows and unicorns…&lt;/p&gt;
&lt;p&gt;We’ll see what happens. I’ll share it when I can.&lt;/p&gt;</content:encoded></item><item><title>Classic holiday cartoons</title><link>https://chrisdodds.net/blog/2025-11-26-holiday-cartoon-classics/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-11-26-holiday-cartoon-classics/</guid><description>Why won&apos;t Charlie Brown die? And celebrating lesser known, but great alternatives</description><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Holiday nostalgia isn’t really a thing for me. Maybe it’ll hit me when my kids are older, but right now I just can’t match my wife’s enthusiasm for all the holiday trappings. A chunk of my grinchiness comes from the “classic” holiday cartoons that refuse to die. I disliked them as a kid. I hate them now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rudolph&lt;/strong&gt; There are research papers about how shitty this story is. &lt;a href=&quot;https://link.springer.com/chapter/10.1007/978-981-96-8208-9_10&quot;&gt;“They Wouldn’t Let Poor Rudolph Play in Any Reindeer Games”: Individuals on the Autism Spectrum as Social Misfits in Organisations&lt;/a&gt; is a great example. The lesson of Rudolph is that difference is only tolerated if it becomes economically useful.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frosty the Snowman&lt;/strong&gt; Sentient being melts to death, kids cry. Magician just wants his goddamn hat back.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Santa Claus is Comin’ to Town&lt;/strong&gt; Orphan overcomes authoritarian regime through capitalism.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Year Without a Santa Clause&lt;/strong&gt; Santa is sick of this shit, but gets guilt-tripped into going back to work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Little Drummer Boy&lt;/strong&gt; Kid’s parents murdered. He’s rightfully upset. Learns to love through providing free labor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How the Grinch Stole Christmas&lt;/strong&gt; A boundary-respecting introvert is forcibly rehabilitated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A Charlie Brown Christmas&lt;/strong&gt; Mediocre child with no growth arc gets treated shitty by his shitty friends. They feel bad and sing at him.&lt;/p&gt;
&lt;p&gt;The pattern: traumatized or marginalized characters prove their worth through service, earn conditional acceptance from the group that rejected them, everyone cries. We cargo cult this shit forward without examining whether it’s actually good.&lt;/p&gt;
&lt;p&gt;Meanwhile:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A Garfield Christmas&lt;/strong&gt; Garfield goes to the farm, is cynical. Genuine affection breaks through. Garfield gives Grandma a letter from her dead husband. Nobody earns anything. Nobody proves their worth. Just warmth. I don’t even like Garfield (&lt;a href=&quot;https://garfieldminusgarfield.net/&quot;&gt;Garfield Minus Garfield&lt;/a&gt; is a treat though) and I like this one.&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/TbL-uxd4ZVw&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen title=&quot;A Garfield Christmas - YouTube video&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;A Claymation Christmas Celebration&lt;/strong&gt; Anthropomorphic church bells at Notre Dame strike their own heads with mallets to perform Carol of the Bells. One keeps fucking up, loses his mallet. The conductor (Quasimodo) uses a slingshot. Dinosaur hosts argue about wassailing vs waffling. The California Raisins do Motown carols.&lt;/p&gt;
&lt;p&gt;Pure creative joy. No trauma arc. No one has to “learn” anything to be tolerated. Just weird little bells smashing themselves in the face. Impossible to find in-full online.&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/3SOvfher8Dg&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen title=&quot;A Claymation Christmas Celebration - YouTube video&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;These don’t get the same traction. Can’t manufacture catharsis. Nobody quotes them at holiday parties. These are the ones I want my kids to remember anyway.&lt;/p&gt;</content:encoded></item><item><title>More adventures in publishing</title><link>https://chrisdodds.net/blog/2025-11-05-more-adventures-in-publishing/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-11-05-more-adventures-in-publishing/</guid><description>In which I attempt to navigate the publishing maze.</description><pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve put in &lt;a href=&quot;/blog/2025-10-03-learning-about-publishing&quot;&gt;some work&lt;/a&gt; to get a few of my pieces published. The more I learn about the process and ecosystem, the more I respect the people who slog through it.&lt;/p&gt;
&lt;p&gt;Stats so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7 pieces: 1 novella, 3 short creative nonfiction essays, 3 short stories&lt;/li&gt;
&lt;li&gt;36 total submissions&lt;/li&gt;
&lt;li&gt;14 rejections&lt;/li&gt;
&lt;li&gt;2 of those were personalized, the rest were form.&lt;/li&gt;
&lt;li&gt;1 of the rejects made it to the second round&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These numbers are low. From what I’ve put together from &lt;a href=&quot;https://duotrope.com&quot;&gt;Duotrope&lt;/a&gt;, most pieces take between 8-15 submissions before they get any bites, and that depends both on the form (flash vs.  short story, etc) and the tier (higher tier venues have lower acceptance rates). If you’re targeting top-tier magazines or presses, 30+ rejections is not uncommon.&lt;/p&gt;
&lt;p&gt;Some places charge fees. Some don’t allow simultaneous submissions. Some are super picky about format. Some only accept submissions on the 6th Tuesday of the 13th month. Some - &lt;a href=&quot;https://xraylitmag.com/&quot;&gt;XRAY&lt;/a&gt;, cough cough - have submission windows that last for 30 minutes every month before their &lt;a href=&quot;https://submittable.com&quot;&gt;Submittable&lt;/a&gt; budget runs dry.&lt;/p&gt;
&lt;p&gt;I’m integrating all this into my system though.&lt;/p&gt;
&lt;p&gt;I’ve tried to suss out fit as best I can to focus where I put my energy. It’s helpful that my style, voice, and chosen forms narrow down the avenues I can target, but that cuts both ways.&lt;/p&gt;
&lt;p&gt;Style fit has been my biggest struggle. My writing tends to be very compressed and immediate. It can be claustrophobic and has high sensory pressure, because my ‘tism makes me hyper-tuned to those things. (I’m getting better at emotional contrast and letting readers breathe, but it’s taking a while to find a rhythm that I like).&lt;/p&gt;
&lt;p&gt;I tend to be too weird and intense for the more mainstream magazines and presses and too coherent for the wilder ones.&lt;/p&gt;
&lt;p&gt;I’m slowly finding the right niche, but it will take some acceptances to validate that. It would probably help to find a writing community to bounce some of my assumptions off of, but I haven’t found one that seems to be a good fit.&lt;/p&gt;
&lt;p&gt;There’s logic to this maze - I’m starting to feel the patterns underneath - it’s just taking time to map and some recalibration to live with a longer feedback loop.&lt;/p&gt;</content:encoded></item><item><title>Investigating Oklahoma&apos;s new medical cost transparency site</title><link>https://chrisdodds.net/blog/2025-10-30-investigate-ok-medical-cost-portal/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-30-investigate-ok-medical-cost-portal/</guid><description>Playing with some light data science and figuring out it&apos;s all smoke and mirrors.</description><pubDate>Thu, 30 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Oklahoma launched a &lt;a href=&quot;https://oklahomahospitalpricefinder.patientrightsadvocate.org/&quot;&gt;new portal for medical cost data&lt;/a&gt; because the &lt;a href=&quot;https://www.cms.gov/priorities/key-initiatives/hospital-price-transparency&quot;&gt;federal one&lt;/a&gt; sucks and enforcement has been minimal. Unfortunately, the Oklahoma one also sucks.&lt;/p&gt;
&lt;p&gt;The main issue with the federal portal is that it’s a raw data dump and the information as served is almost completely un-usable because of formatting inconsistency and missing data.&lt;/p&gt;
&lt;p&gt;Oklahoma’s is a slight improvement in that it’s filtered down to the state level, but it’s operating on similar flawed premises.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The only real consumer shopping that happens in medicine is for elective procedures, and even that’s limited. Most people just go where-ever their insurance tells them they can go. This seems to be a misunderstanding (probably intentionally so) at the legislative level.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Even if we all did shop for procedures that way, the portal designs are backwards.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What do I mean by backwards? In most price comparison flows, one would start with the item or service they wanted, then compare a list of vendors with listed prices. Think bankrate.com as an example.&lt;/p&gt;
&lt;p&gt;On the OK portal, you start by selecting a hospital or facility, then filter to procedures. You could obviously build your own comparison spreadsheet by manually clicking through several different facilities, but the UX is so user-hostile I can’t imagine anyone bothering. And positioning it as a consumer aid feels disingenuous.&lt;/p&gt;
&lt;p&gt;That led me to a short investigation of “what would it take to do this properly?”&lt;/p&gt;
&lt;h2 id=&quot;a-small-poc&quot;&gt;A small POC&lt;/h2&gt;
&lt;h3 id=&quot;1-get-the-data&quot;&gt;1. Get the data&lt;/h3&gt;
&lt;p&gt;I tried a few things here. First -  could I get it from the OK portal since that’s already filtered to OK. No. Their terms of service don’t allow any kind of export, there didn’t seem to be an API to talk to, and given their UI, orchestrating some sort of scraping would be painful.&lt;/p&gt;
&lt;p&gt;Can I get it from the federal portal? Yes, but it’s a vast ocean of garbage. There didn’t appear to be any way to pre-filter, so you basically have to slurp down everything and run it through a map reduce cluster or something similar to clean it up. I didn’t feel like setting up that infrastructure for this.&lt;/p&gt;
&lt;p&gt;So I just went to the websites for Oklahoma’s two largest medical providers and downloaded the data directly. That’s  where things started getting interesting and explained some of OK portal’s design choices.&lt;/p&gt;
&lt;p&gt;One thing that stood out immediately - providers split out their data by facility. Why? Because it appears they’re just dumping it straight out of their practice management software, which has it split by facility - and because the regulation is around &lt;em&gt;facility fees&lt;/em&gt;. Hold on to that term because it becomes important later. This tells me that the OK portal’s UI is probably driven by the underlying data schema, which no one has inverted.&lt;/p&gt;
&lt;h3 id=&quot;2-look-at-the-data&quot;&gt;2. Look at the data&lt;/h3&gt;
&lt;p&gt;The data for two similar-sized/capable hospitals was massively different. One CSV was ~300k. The other was 5GB.&lt;/p&gt;
&lt;p&gt;Luckily, it was in the roughly the same format (I think both systems use &lt;a href=&quot;https://www.epic.com/&quot;&gt;Epic&lt;/a&gt;), so I didn’t have to mess with my analysis scripts much.&lt;/p&gt;
&lt;p&gt;I picked colonoscopies as a procedure to filter on because there are relatively few variants of it versus some other procedures that have hundreds of related and overlapping CPT codes.&lt;/p&gt;
&lt;p&gt;So what does &lt;strong&gt;CPT 45378 - diagnostic screening colonoscopy&lt;/strong&gt;, cost if you pay cash at these two providers?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provider 1 - $920&lt;/li&gt;
&lt;li&gt;Provider 2 - $1,885&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OK, that’s helpful, but what’s this? The provider with the smaller file and cheaper price actually has more useful data in it than the larger file. It included &lt;em&gt;provider fee&lt;/em&gt; examples and ranges - these are the fees charged by the person actually performing the procedure. The prices above are just the &lt;em&gt;facility fees&lt;/em&gt; - what the hospital charges to have the procedure there.&lt;/p&gt;
&lt;p&gt;Now we have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provider 1 - $2,364-$8,961&lt;/li&gt;
&lt;li&gt;Provider 2 - $1,885 + some unknown value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So getting full apples to apples is pretty much impossible with this data. You can proxy through the facility cost, but you’re not going to know the actual cost outside of that.&lt;/p&gt;
&lt;p&gt;The data sets do contain insurance provider negotiated rates, which were also interesting. In this case, just looking at Provider 1:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BCBS pays $2,267&lt;/li&gt;
&lt;li&gt;Cigna pays $7,695&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;“So what?” you say. “It doesn’t matter because my insurance will cover it.” Oh no, my friend. Say you have a decent plan with 20% coinsurance. That’s the different between $453 and $1,539 out of pocket cost.&lt;/p&gt;
&lt;h2 id=&quot;what-did-i-learn&quot;&gt;What did I learn?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Medical cost transparency data is probably the best example of malicious compliance I have come across. “We have to publish our pricing data? OK, here’s a tome of unsorted hieroglyphics.” This data is no where close to usable by the average consumer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“In-network” is just means “we talked and have (waves hand)… some agreement”. Negotiated rate is the core factor, and the best rates are going to go to who has the most clout, which is probably going to be the in-state insurers. BCBS is better positioned for this than Cigna/United, I think. This is another area where misaligned incentives cut us though. There’s nothing compelling an insurer to negotiate harder as long as they’re collecting premiums and their &lt;a href=&quot;https://www.healthcare.gov/health-care-law-protections/rate-review/&quot;&gt;15-20%&lt;/a&gt; grows in absolute terms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;As-is, these transparency laws do very little. They are theatre.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;what-i-still-have-questions-about&quot;&gt;What I still have questions about&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;What could you do with this data? For elective procedures, I think you could put in a little work and provide some sort of heavily-caveated consumer-friendly data set, but I don’t know that it would actually move the needle broadly. Maybe I’m undervaluing electives and individual consumer power.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Who could actually use this data? Probably self-insured employers. They hire brokers who should help steer them toward cost-efficent systems, but don’t because the incentives aren’t aligned. (Most brokers make % of premiums, not savings). But, if you could construct a decent, human consumable data set and put it in front of large employers and they start pushing their employees to lower cost providers, you could probably nudge the big cost needle pretty hard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What’s missing from this data? Obviously, provider fees are a big miss. Granted, that would add complexity. It fractures the CPT code maze even further when you add the entropy of different doctor fees. Some providers are figuring out how to do it though. I think one major missing piece is quality ratings. Doug’s House of Surgery and Hotdogs might be the lowest cost, but do I really want to go there?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Is there potential to do some investigative journalism here? Probably, but “X hospital charges 2x more than Y hospital” seems like a story that would barely register on anyone’s radar. “Your insurance company sucks at negotiating because they get paid either way” might be more compelling. More to think on here.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I may pick some of this up again. I think there’s lots of interesting data to dig through here and things to learn. I’m not sure what I’ll do with the knowledge, but if nothing else maybe I can get through the arc of “this seems fixable” -&gt; “omg, this is irretrievably broken” -&gt; “actually, if we press here and here we might accomplish something.”&lt;/p&gt;</content:encoded></item><item><title>Fish Stick: Stateless Incident Management</title><link>https://chrisdodds.net/blog/2025-10-25-fish-stick/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-25-fish-stick/</guid><description>Built an incident management bot for Slack. No database, no complexity, just what you need.</description><pubDate>Sat, 25 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I released &lt;a href=&quot;https://github.com/chrisdodds/fishstick&quot;&gt;Fish Stick&lt;/a&gt;, a stateless incident management bot for Slack. Written it up over at &lt;a href=&quot;https://fishsticklabs.com/blog/2025-10-25-fishstick-stateless-incident-management/&quot;&gt;Fishstick Labs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the sixth or seventh time I’ve built this bot at different jobs. Figured it was time to stop reinventing the wheel and ship something I could reuse (and that others could use too). I’ve actually had a multi-tenant version of this sitting in a folder for several years, but decided to rip all that stuff out and lean into simplicity and OSS.&lt;/p&gt;
&lt;p&gt;Most incident management tools are either too basic (Slack workflows that can’t do enough) or way too complex (enterprise platforms with a thousand knobs you’ll never touch). Fish Stick sits in the sweet spot - does what you actually need without making you wade through (and pay for) features you don’t.&lt;/p&gt;
&lt;p&gt;The interesting technical bit: it’s completely stateless. No database, no web UI, no OAuth dance. Slack &lt;em&gt;is&lt;/em&gt; the database. Channel properties hold metadata, messages are the timeline, pinned messages are the summary. You can restart the bot whenever and lose nothing. Obviously there are some data durability and keeping-up-with-Slack-API tradeoffs there, but I think it works for this niche and use case. Design constraints for the win.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://fishsticklabs.com/blog/2025-10-25-fishstick-stateless-incident-management/&quot;&gt;full writeup&lt;/a&gt; for details on features, architecture decisions, and setup. It’s MIT licensed on &lt;a href=&quot;https://github.com/chrisdodds/fishstick&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>RageBlock</title><link>https://chrisdodds.net/blog/2025-10-23-rageblock/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-23-rageblock/</guid><description>A Firefox extension for blocking rage inducing mainstream media</description><pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I built a Firefox extension that blocks mainstream news sites while keeping investigative journalism and wire services accessible. It’s called &lt;a href=&quot;https://github.com/chrisdodds/rageblock&quot;&gt;RageBlock&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I wanted it for myself.&lt;/p&gt;
&lt;p&gt;I noticed that checking news sites made me feel worse without making me better informed. I’d feel anxious and angry, but I wouldn’t actually know anything more useful than I did before. The information-to-anxiety ratio was terrible. And I was often just opening them out of habit, like a nervous tic.&lt;/p&gt;
&lt;p&gt;Cable news sites and major papers have optimized for clicks and engagement - and profit. That optimization twists facts toward grievance and keeps you in a constant state of low-grade anxiety. At least it does for me. Breaking news alerts. Live updates. The 24/7 outrage cycle.&lt;/p&gt;
&lt;p&gt;Meanwhile, places like &lt;a href=&quot;https://www.propublica.org/&quot;&gt;ProPublica&lt;/a&gt; and &lt;a href=&quot;https://theintercept.com/&quot;&gt;The Intercept&lt;/a&gt; do deep investigative reporting that matters. And wire services like &lt;a href=&quot;https://apnews.com/&quot;&gt;AP&lt;/a&gt; and &lt;a href=&quot;https://www.reuters.com/&quot;&gt;Reuters&lt;/a&gt; still do a pretty good job of reporting “just the facts”. There’s still plenty to be mad about, but less outright manipulation. They’re not trying to keep you glued to the screen refreshing every five minutes.&lt;/p&gt;
&lt;p&gt;I still want to stay informed. I still want to read long-form investigative pieces that dig into how things work and why. I just want to skip the outrage porn.&lt;/p&gt;
&lt;p&gt;I looked for existing tools. There are content blockers that get reasonably close, but they require you to build your own list or block things in big chunks. Apple’s parental and screen time controls are clunky. Nothing felt right.&lt;/p&gt;
&lt;p&gt;So I made something closer to what I want: a curated list (still had to build it), some behavioral nudging, and some insight into my own patterns.&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
  &lt;img src=&quot;/images/rageblock/blocked.png&quot; alt=&quot;Blocked page view&quot; style=&quot;max-width: 100%; height: auto;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
  &lt;img src=&quot;/images/rageblock/popup.png&quot; alt=&quot;Extension popup&quot; style=&quot;max-width: 100%; height: auto;&quot;&gt;
&lt;/div&gt;
&lt;p&gt;RageBlock has an opinionated blocklist by default. It blocks 60+ sites: CNN, Fox News, MSNBC, NYT, WaPo, Reddit, Twitter, Facebook, Instagram, TikTok, and most news aggregators. Full domains, including all subdomains.&lt;/p&gt;
&lt;p&gt;When you hit a blocked site, you see a message with alternatives. You can bypass for 5 minutes or until midnight if you need to check something specific. But the default is blocked.&lt;/p&gt;
&lt;p&gt;The extension tracks your blocks and bypasses from the past week. If you’re bypassing too often, it shows reflection prompts. Gentle reminders to check in with yourself about why you’re doing this.&lt;/p&gt;
&lt;h2 id=&quot;building-it&quot;&gt;Building it&lt;/h2&gt;
&lt;p&gt;This was my first Firefox extension in a while. It’s mostly web dev as long as you’re not doing anything too crazy.&lt;/p&gt;
&lt;p&gt;My initial attempt was to make it cross-browser, but I quickly discovered that the WebExtensions standard is a lie. Different APIs, different behaviors, different permissions models. So I punted and went Firefox-only since that’s my browser anyway.&lt;/p&gt;
&lt;p&gt;Vibe coding worked reasonably well for this and I think this type of thing is actually a perfect fit for vibe coding. Most of it is boring scaffolding. I had to steer a few things: DRY this up, stop making this so complex, write tests that actually test the code instead of mocking the entire implementation.&lt;/p&gt;
&lt;p&gt;The initial block list is basic. I’ll grow it over time as I figure out more things that make sense to block by default.&lt;/p&gt;
&lt;p&gt;I debated adding local news sites. They’re generally terrible and subject to the same click-optimization as the major sites. Still deciding what I want to do there.&lt;/p&gt;
&lt;h2 id=&quot;you-might-want-this-too&quot;&gt;You might want this too&lt;/h2&gt;
&lt;p&gt;RageBlock is open source and available on &lt;a href=&quot;https://github.com/chrisdodds/rageblock&quot;&gt;GitHub&lt;/a&gt;. It’s MIT licensed. Do whatever you want with it.&lt;/p&gt;
&lt;p&gt;It’s also on the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/rageblock/&quot;&gt;Firefox AddOns&lt;/a&gt; store.&lt;/p&gt;
&lt;p&gt;If you use Chrome, you’ll have to port it yourself. I’m not dealing with Manifest V3 right now.&lt;/p&gt;
&lt;p&gt;And if you think the default blocklist is wrong, PRs are welcome, or fork it and make your own. That’s the point. Make the tools that work for you.&lt;/p&gt;</content:encoded></item><item><title>Showing Up &amp; Goodbye WTFPod</title><link>https://chrisdodds.net/blog/2025-10-21-showing-up-goodbye-wtfpod/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-21-showing-up-goodbye-wtfpod/</guid><description>Maron, Obama, and the decision to engage with the physical world again.</description><pubDate>Tue, 21 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I listened to the &lt;a href=&quot;https://www.wtfpod.com/podcast/episode-1686-barack-obama&quot;&gt;final episode of WTFPod&lt;/a&gt; on the way to Santa Fe last week (Airpods plugged in, daughter yelling along with Bluey from the seat behind me). It was the first time I’ve listened to a podcast in quite a while. The structure of my life (working from home, taking care of kids) doesn’t have as much room for them as it once did.&lt;/p&gt;
&lt;p&gt;Marc Maron’s interview with Barack Obama ended up hitting close to home. Obama spoke about knowing your values and beliefs as being foundational for building connections and having meaningful conversations, which is &lt;a href=&quot;/blog/2025-10-02-a-me-shaped-thing&quot;&gt;something I’ve been thinking about&lt;/a&gt; a lot. The core of his point (and Maron chimed in as well) was that having that foundation lets you have difficult, meaningful conversations and there’s a vulnerability to earnestness that helps others listen.&lt;/p&gt;
&lt;p&gt;They talked about in-person connection and what we’ve given up by adopting social media. How we see only narrow slices of people and not their contradictions or the unspoken goodness that might only show up in close proximity. I’ve been thinking about this a lot as well. Living in a suburban bubble, I’ve felt the weight of how few unmediated interactions I have anymore.&lt;/p&gt;
&lt;p&gt;I know I need a community — and that I’d have something to give back, too. I’m not alone in this. I’ve read a dozen articles this year about how we’ve become an introverted society. Doing something about it is a whole other challenge.&lt;/p&gt;
&lt;p&gt;It feels like a core leverage point. If we want things to get better, to live in a world that’s closer to our ideals, we’ve got to start talking to one another again - vulnerable, in-person, not hiding behind a screen. I haven’t gotten in an internet fight in a long time, but I haven’t engaged with the physical world much either. So I’ve got to change.&lt;/p&gt;
&lt;p&gt;I found some meetups. Board games, nature walks, random stuff that is at least painless on the surface. So I’m forcing myself to show up. To talk, to listen, to try. If only so my kids see what trying looks like.&lt;/p&gt;
&lt;p&gt;I wouldn’t say it was the best WTFPod episode ever, but it reminded me of Obama’s decency and why Maron has always appealed to me. The former made me sad. It was comforting in the moment, but wrapped up in loss as well. Decency is depressingly underrated.&lt;/p&gt;
&lt;p&gt;Maron though… I think he’s wired into one of the ideals I’m striving for - to lead with vulnerability. It doesn’t have to be trauma dumping (although he’s done that from time to time), but he’s been a great example of seeing someone be open and enabling others to share that openness with him. I’ll miss his show for that. I wish more disaffected guys would have plugged into that energy instead of mainlining Joe Rogan.&lt;/p&gt;
&lt;p&gt;Yeah, Rogan gave people a community, but it’s an aggrieved one that’s mostly defined by its contrarianism and devaluing of decency. There’s a weird vulnerability to the psychology of the manosphere that’s obvious from a distance. “Oh, this is for people who are hurting or empty in some way.” But the manosphere would never admit that.&lt;/p&gt;
&lt;p&gt;A younger version of me would have rolled his eyes that I’m writing about decency and vulnerability being the building blocks for the world I want. Luckily, he grew up and knows how to admit he was wrong.&lt;/p&gt;</content:encoded></item><item><title>Selective pain</title><link>https://chrisdodds.net/blog/2025-10-08-selective-pain/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-08-selective-pain/</guid><description>Pick your pain, learn your lesson.</description><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I started my back piece over a year ago, a mosaic of mandalas, necker cubes, and pseudo-sacred geometry in black and grey. Since then, I’ve gone to my artist every month to get stabbed for 3.5-4.5 hours at a time - around 50 hours under the needle so far. I’ve got another 10 hours or so to go.&lt;/p&gt;
&lt;p&gt;I’m ready for it to be over, I think.&lt;/p&gt;
&lt;p&gt;This isn’t my first tattoo. I have five others, all decent size. None of them have affected me like this one though. I’m not proud of any of them like I am of this one.&lt;/p&gt;
&lt;p&gt;Everything before this was done in one or two sessions. They didn’t cost anything other than money. This one has at times drained me and filled me up.&lt;/p&gt;
&lt;p&gt;The needle stings until about the 30 minute mark. At that point the body is flooded with adrenaline and endorphins. Some of the edge goes away. You settle in to the rhythm of the process. There have been sessions where I’ve almost dozed off.&lt;/p&gt;
&lt;p&gt;When the endorphins start to wear off, the pain comes back hard.  My wall is usually at about 4 hours. It takes a lot of focused breathing to get much past that.&lt;/p&gt;
&lt;p&gt;There have been a few sessions where the drugs my body makes weren’t powerful enough to help much at all. Over the ribs, the kidneys.  My lower back in general is surprisingly sensitive. At times the needle felt more like a scalpel. Those sessions were hours of misery.&lt;/p&gt;
&lt;p&gt;But it was worth it. It’s one thing to endure pain you can’t walk away from. Kidney stones, broken bones, trauma. Those teach survival. You gain something else from selective pain: discipline, a more concrete sense of where your limits are when you could walk away, how much control you have - your agency.&lt;/p&gt;
&lt;p&gt;I don’t enjoy pain, but I feel like I learn a lot about myself from it, and I recognize the weird privilege I have to be able to opt in. I’ve learned that I am way tougher than I give myself credit for and can push myself deep into discomfort and choose to sit with it peacefully for a long time.&lt;/p&gt;
&lt;p&gt;This is also the first tattoo I’ve got since learning that I am autistic and finally understanding how deep touch affects me, how grounding it is, even though light touch can drive me bonkers. I’ve become more comfortable with how I’m wired going through the process, more forgiving of how I’m affected by the world I live in. I give myself more grace. It sounds so stupid to my ear, but it’s real that someone can hurt you and heal you at the same time.&lt;/p&gt;
&lt;p&gt;I don’t know that we’re friends, but the artist and I have a relationship at this point. It’s hard not to when you spend that much time with someone else. It’s strangely intimate. We share the same birthday, a year apart. We know each other’s kids’ names, ages, personalities. She’s tattooed my wife.&lt;/p&gt;
&lt;p&gt;It’s always funny when people ask me what one of my tattoos means. For me, they don’t mean anything. They’re just the physical mark that’s left at the end of the process. Something to help you remember being tattooed.&lt;/p&gt;
&lt;p&gt;I said I thought I was ready for this to be over and that’s true. I think I’ve learned about all I’m going to learn from this piece.&lt;/p&gt;
&lt;p&gt;Which means I’m already planning another.&lt;/p&gt;</content:encoded></item><item><title>Learning about publishing</title><link>https://chrisdodds.net/blog/2025-10-03-learning-about-publishing/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-03-learning-about-publishing/</guid><description>How does this even work?</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I started writing again this year - really writing, for the first time in decades.&lt;/p&gt;
&lt;p&gt;So far I’ve written a novella, a couple of creative nonfiction pieces, and a handful of flash fiction pieces. Learning more about traditional publishing has been a journey.&lt;/p&gt;
&lt;p&gt;I’m coming at it with more strategy than a younger me would have: doing research before I submit, being laser focused on editorial fit, targeting a mix of realistic and long-shot outlets to hedge. I’ve got spreadsheets and dashboards to track things. It’s very nerdy.&lt;/p&gt;
&lt;p&gt;The robot has been moderately useful here - surfacing presses and magazines I wouldn’t have found, but it’s terrible at gauging fit and quality. When you do find somewhere that looks like a good fit, you often discover that submissions are closed until next year, or they’re actually out of business, or you were wrong and they are, in fact, a terrible fit.&lt;/p&gt;
&lt;p&gt;A few things I’ve learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agents generally don’t care about novellas, but there are presses that publish novellas and only accept submissions via agent. ¯\_(ツ)_/¯&lt;/li&gt;
&lt;li&gt;The Big 5 also don’t care about novellas and I get it. Paying $17 for a paperback copy of &lt;em&gt;We the Animals&lt;/em&gt; is a tough pill to swallow considering how thin it looks on the shelf.&lt;/li&gt;
&lt;li&gt;Chapbooks exist, but no one cares about them except the people who write them.&lt;/li&gt;
&lt;li&gt;Contests are weirdly legit compared to other industries (with caveats).&lt;/li&gt;
&lt;li&gt;Flash is a dopamine trap: fast feedback, likely publication, low traction. It’s good for practicing compression though.&lt;/li&gt;
&lt;li&gt;Modern literary fiction (which I’ve been reading more of) seems to be 90% navel-gazey MFA nonsense written to impress other people with MFAs. Clever for the sake of clever is not a quality I envy.&lt;/li&gt;
&lt;li&gt;Tools like &lt;a href=&quot;https://duotrope.com&quot;&gt;Duotrope&lt;/a&gt; are kind of neat.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There’s a lot of domain knowledge to absorb which I mostly enjoy. And I’m getting better as a writer and pushing myself along the way.&lt;/p&gt;
&lt;p&gt;I just started submitting things in July and haven’t had any accepts yet, but have shortlisted at a couple of places, like &lt;a href=&quot;https://www.orions-belt.net/&quot;&gt;Orion’s Belt&lt;/a&gt;. That at least feels nice (oooh, shiny!) and is a signal I’m on the right track.&lt;/p&gt;</content:encoded></item><item><title>A me-shaped thing</title><link>https://chrisdodds.net/blog/2025-10-02-a-me-shaped-thing/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-10-02-a-me-shaped-thing/</guid><description>Sorting out what holds when the world feels upside down</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been thinking a lot about the idea of self this year. Much of it is the “who am I? / what is this even?” that comes with turning 40. Some other portion is
trying to find solid ground when it feels like the world is upside down and on fire.&lt;/p&gt;
&lt;p&gt;Art has played into that, in music and writing. What is my voice? What does a me-shaped thing look like? And who do I rhyme with?&lt;/p&gt;
&lt;p&gt;I started the year unsteady, but the more work I’ve put in to uncovering who I am, the more grounded I’ve felt. I’m sure this is me channeling my inner Tony Robbins (or whoever is en vogue these days), but maybe that’s the path through the muck of now - knowing who you are, what you value, and how you want to show up in the world.&lt;/p&gt;
&lt;p&gt;The latter is the most concrete for me. I want to be someone who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;makes space for others to be themselves&lt;/li&gt;
&lt;li&gt;leads with vulnerability and gives people access to pieces they keep locked up, while managing the cost of that&lt;/li&gt;
&lt;li&gt;lives as an example of a man who is whole and flawed, not trapped in shame and social programming&lt;/li&gt;
&lt;li&gt;can keep empathy alive without shutting down in a world that feels bleak sometimes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I dunno. I’m trying.&lt;/p&gt;</content:encoded></item><item><title>Hello World</title><link>https://chrisdodds.net/blog/2025-09-30-hello-world/</link><guid isPermaLink="true">https://chrisdodds.net/blog/2025-09-30-hello-world/</guid><description>First post on the new blog</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Built a new site with Astro, deployed on GitHub Pages. I want a place to share things again that isn’t social media.&lt;/p&gt;
&lt;p&gt;More to come.&lt;/p&gt;</content:encoded></item></channel></rss>