<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Chad Dyar</title>
    <description>The latest articles on Forem by Chad Dyar (@chadtdyar).</description>
    <link>https://forem.com/chadtdyar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3811599%2F0adb0b4b-5659-4c7c-8f09-49347539478f.jpg</url>
      <title>Forem: Chad Dyar</title>
      <link>https://forem.com/chadtdyar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chadtdyar"/>
    <language>en</language>
    <item>
      <title>TITLE: Embrace Authenticity in the Workplace</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Fri, 24 Apr 2026 14:01:05 +0000</pubDate>
      <link>https://forem.com/chadtdyar/title-embrace-authenticity-in-the-workplace-43od</link>
      <guid>https://forem.com/chadtdyar/title-embrace-authenticity-in-the-workplace-43od</guid>
      <description>&lt;p&gt;TITLE: Embrace Authenticity in the Workplace&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Mask We Wear&lt;br&gt;
Corporate spaces often feel like they demand a disguise. But what if we could step into work as we truly are?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authenticity as a Strength&lt;br&gt;
"Bring Your Best Self To Work" isn't about breaking rules; it's about being genuine. This book is for those tired of playing roles at work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My Journey: Opera to Corporate&lt;br&gt;
I've walked this path from opera stages to corporate halls and found authenticity isn't just possible; it's powerful.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>I shipped ContentForge's iOS app on the fourth App Store submission. Here is what each rejection was and how I fixed it, because</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Fri, 24 Apr 2026 14:01:04 +0000</pubDate>
      <link>https://forem.com/chadtdyar/i-shipped-contentforges-ios-app-on-the-fourth-app-store-submission-here-is-what-each-rejection-4fjk</link>
      <guid>https://forem.com/chadtdyar/i-shipped-contentforges-ios-app-on-the-fourth-app-store-submission-here-is-what-each-rejection-4fjk</guid>
      <description>&lt;p&gt;I shipped ContentForge's iOS app on the fourth App Store submission. Here is what each rejection was and how I fixed it, because I could not find this information clearly written anywhere when I needed it.&lt;/p&gt;

&lt;p&gt;Rejection 1: Missing Info.plist purpose strings (ITMS-90683)&lt;/p&gt;

&lt;p&gt;If your Capacitor app uses any plugin that touches a privacy-sensitive iOS API, you need a corresponding NSUsageDescription string in your Info.plist. Apple's CI scanner catches this automatically and rejects the build before it ever reaches a human reviewer.&lt;/p&gt;

&lt;p&gt;My app used Capacitor's StatusBar plugin. The purpose string was missing.&lt;/p&gt;

&lt;p&gt;The fix: add the required string to ios/App/App/Info.plist. After fixing this the first time, I built a Node script that runs in CI and checks for missing strings automatically. It reads the Capacitor plugins from package.json, maps each one to the privacy APIs it touches, and verifies the corresponding purpose strings exist. That script runs on every push to main.&lt;/p&gt;

&lt;p&gt;Rejection 2: Incomplete AppIcon.appiconset&lt;/p&gt;

&lt;p&gt;Apple requires specific icon sizes for every device type your app supports. My asset catalog was missing several of the required dimensions.&lt;/p&gt;

&lt;p&gt;The fix: generate the full set programmatically from a 1024x1024 source PNG. Make sure the source PNG is flat RGB with no alpha channel and is not upscaled from a smaller source.&lt;/p&gt;

&lt;p&gt;Rejection 3: Magic link auth fails in Apple's review sandbox&lt;/p&gt;

&lt;p&gt;Apple's review team cannot use magic link authentication. They work in a sandboxed environment where email links do not resolve. If your app's only auth path is magic link, reviewers cannot create an account.&lt;/p&gt;

&lt;p&gt;The fix: detect whether you are running as a Capacitor native app using Capacitor.isNativePlatform(), and conditionally hide the magic link UI. On iOS, show only email and password. On web, show magic links as normal.&lt;/p&gt;

&lt;p&gt;What passed on submission 4&lt;/p&gt;

&lt;p&gt;The fourth submission included all of the above plus: server.startPage set to app.html in capacitor.config.ts, comprehensive touch target fixes at 44x44px minimum, 16px minimum font size on all inputs to prevent iOS zoom-on-focus, and env(safe-area-inset-*) padding on sticky navs for notch and Dynamic Island support.&lt;/p&gt;

&lt;p&gt;The CI workflow I wish I had before submission 1&lt;/p&gt;

&lt;p&gt;After all of this, the CI pipeline on main now runs npm install and build, the custom Info.plist lint script, TypeScript type check, and Vercel deploy preview. If the Info.plist lint fails, the build fails. The ITMS-90683 rejection path is now closed.&lt;/p&gt;

&lt;p&gt;If you are building a Capacitor app and heading toward App Store submission: read the full App Store Review Guidelines before you build the auth flow, test in airplane mode if you have any concern about network-dependent auth flows, and build the CI lint before you need it.&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>ios</category>
      <category>mobile</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Built a Pet Health App in Two Weeks Because My Notebook Failed Me</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Fri, 10 Apr 2026 19:00:44 +0000</pubDate>
      <link>https://forem.com/chadtdyar/i-built-a-pet-health-app-in-two-weeks-because-my-notebook-failed-me-2ac6</link>
      <guid>https://forem.com/chadtdyar/i-built-a-pet-health-app-in-two-weeks-because-my-notebook-failed-me-2ac6</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Pet Health App in Two Weeks Because My Notebook Failed Me
&lt;/h1&gt;

&lt;p&gt;I was keeping a notebook to track health data for my three dogs.&lt;/p&gt;

&lt;p&gt;For about two weeks, it worked. Then I needed to find a pattern in Maya's energy levels and the notebook turned into a pile of inconsistent entries I couldn't read or share or filter in any useful way. That, combined with an incident where I took my mom's dog to the vet and couldn't answer a single question about her history, pushed me to just build the thing.&lt;/p&gt;

&lt;p&gt;Two weeks later, Pawformance was running in production. Here's how I built it and what I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Lovable&lt;br&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Supabase (auth, database, real-time)&lt;br&gt;
&lt;strong&gt;Payments:&lt;/strong&gt; Stripe&lt;br&gt;
&lt;strong&gt;Analytics:&lt;/strong&gt; PostHog&lt;br&gt;
&lt;strong&gt;Error tracking:&lt;/strong&gt; Sentry&lt;br&gt;
&lt;strong&gt;Uptime monitoring:&lt;/strong&gt; BetterStack&lt;/p&gt;

&lt;p&gt;The Lovable and Supabase combination is what made the two-week timeline possible. Lovable handles UI scaffolding fast. Supabase removes the need to build auth, manage database infrastructure, or set up API layers from scratch. Together they let me stay focused on the data model and the product logic rather than the plumbing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Data Model
&lt;/h2&gt;

&lt;p&gt;This took the most thought. Here's the core structure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;users&lt;/strong&gt; (handled by Supabase auth)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pets&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id, user_id, name, species, breed, birthdate, weight, photo_url, created_at&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;health_events&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id, pet_id, user_id, event_type (visit / symptom / observation), title, notes, date, created_at&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;medications&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id, pet_id, user_id, name, dosage, frequency, start_date, end_date, notes, active&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;vaccinations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id, pet_id, user_id, vaccine_name, administered_date, next_due_date, administered_by&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;weight_logs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id, pet_id, user_id, weight_lbs, logged_at&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;activity_logs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;id, pet_id, user_id, activity_type, duration_minutes, notes, logged_at&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything scopes to user_id and pet_id. Supabase Row Level Security policies enforce this at the database level so a user can only read and write their own records. For the multi-pet dashboard, queries join across pets where user_id matches. No duplication, just proper relational structure.&lt;/p&gt;

&lt;p&gt;The shareable vet report queries across all these tables for a given pet and generates a structured output. That was the original reason I started building. If I had had this when I took my mom's dog to the vet, I could have answered every question the vet asked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Payments: Stripe and Three Tiers
&lt;/h2&gt;

&lt;p&gt;Three tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free: single pet, core logging&lt;/li&gt;
&lt;li&gt;$3.99/mo: unlimited pets, medication reminders, vaccination scheduling&lt;/li&gt;
&lt;li&gt;$7.99/mo: everything in $3.99 plus AI symptom checker, shareable vet reports, weight trends, multi-pet dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stripe Checkout handles the subscription flow. Supabase stores the subscription tier on the user record and the frontend gates features based on that value. The 14-day trial is set at the Stripe level so it applies automatically without extra logic on my end.&lt;/p&gt;

&lt;p&gt;The integration was straightforward. The main thing I'd do differently: build the billing portal link into the app earlier. I added it later than I should have and it created unnecessary friction for testing the upgrade flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability: PostHog, Sentry, BetterStack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PostHog&lt;/strong&gt; handles product analytics. I track key events: pet created, health event logged, report generated, upgrade initiated. With 8 users and 22 pageviews per week, the event volume is low, but the data is already showing me where people drop off in the onboarding flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sentry&lt;/strong&gt; catches errors in production. I integrated it early and it's caught a handful of things I wouldn't have found otherwise. One malformed date input that broke the weight chart. One edge case in the medication reminder logic where end_date being null caused a render error. Small things, but the kind that erode trust fast if they surface repeatedly to users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BetterStack&lt;/strong&gt; monitors uptime. Pawformance is not handling any level of traffic where downtime is a crisis, but the habit of monitoring matters. It also sends alerts if the Supabase instance or any external service dependency goes down.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Worked
&lt;/h2&gt;

&lt;p&gt;The Lovable and Supabase combination delivered on the two-week timeline. I was in production with auth, multi-pet support, full logging, and a working report before I'd spent a month on this.&lt;/p&gt;

&lt;p&gt;Row Level Security in Supabase is the right way to handle per-user data scoping. Setting it up at the database level means I don't have to trust that every query in the application code has the right filters. The policy enforces it regardless.&lt;/p&gt;

&lt;p&gt;PostHog session recordings have been more useful than I expected at this traffic level. Watching how the two or three active users actually move through the app told me things I couldn't have inferred from the event data alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Change
&lt;/h2&gt;

&lt;p&gt;The data model for health_events is a little too flat. I used a single event_type field to distinguish between vet visits, symptoms, and general observations. That worked fine until I wanted to add structured fields specific to vet visits (like vet name, clinic, and cost). I ended up adding those as optional columns on health_events, which is fine but not clean. I'd probably split this into separate tables for vet_visits and observations with a shared parent structure.&lt;/p&gt;

&lt;p&gt;I also built the free tier too generously in one specific way: the core logging experience is complete on free. That's intentional from a product philosophy standpoint, but it means the upgrade motivation is mostly about power users who have multiple pets or need the report. I'm comfortable with that trade-off, but I should have stress-tested the conversion logic before launch rather than after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current Numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Users:&lt;/strong&gt; 8&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revenue:&lt;/strong&gt; $0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pageviews per week:&lt;/strong&gt; 22&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Months since launch:&lt;/strong&gt; several&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built this and then essentially didn't promote it. The numbers reflect that. The app works, the infrastructure is solid, and I'm now actually starting to put it in front of people.&lt;/p&gt;

&lt;p&gt;If you're a dog owner who has ever tried to track health data in a notebook and watched that system fall apart, or if you've stood in a vet's exam room and realized you couldn't answer basic questions about your pet's history, the free tier is a good place to start.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pawformance.app" rel="noopener noreferrer"&gt;pawformance.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions about any of the technical decisions in the comments. The Supabase RLS setup and the Stripe trial logic are the two things people usually want to dig into.&lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Vet Visit That Made My Side Project Real</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Tue, 07 Apr 2026 14:13:42 +0000</pubDate>
      <link>https://forem.com/chadtdyar/the-vet-visit-that-made-my-side-project-real-1gbp</link>
      <guid>https://forem.com/chadtdyar/the-vet-visit-that-made-my-side-project-real-1gbp</guid>
      <description>&lt;h1&gt;
  
  
  The Vet Visit That Made My Side Project Real
&lt;/h1&gt;

&lt;p&gt;I built PawFormance for three reasons: Wick, Maya Rudolph, and Benny Hartz. My corgi, my Australian Shepherd, and my other corgi, respectively.&lt;/p&gt;

&lt;p&gt;Like most side projects, it started with scratching my own itch. I had notebooks with scribbled dates, a Notes app full of "when did we last deworm?", scattered vet receipts, and that nagging feeling that I was forgetting something important about my dogs' health.&lt;/p&gt;

&lt;p&gt;So I did what developers do. I built something.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Part (Spoiler: Not the Interesting Part)
&lt;/h2&gt;

&lt;p&gt;The stack was straightforward. Next.js for the frontend, Supabase for the backend, Vercel for hosting. Built a CRUD app for pet health records—vaccines, vet visits, medications, weight tracking. Added some charts because data visualization makes everything feel more legitimate.&lt;/p&gt;

&lt;p&gt;The build itself was unremarkable in the best way. Modern tooling is so good now that the actual construction of a pet health tracker is almost boring. Authentication? Solved. Database? Done. Responsive design? CSS Grid and Tailwind make it almost trivial.&lt;/p&gt;

&lt;p&gt;I finished the MVP in a few weekends. Deployed it. Used it myself for a couple months. Felt good about actually shipping something instead of letting it rot in a private repo like so many other projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part I Didn't See Coming
&lt;/h2&gt;

&lt;p&gt;Three months after launch, Wick started limping.&lt;/p&gt;

&lt;p&gt;Not dramatically—just favoring his back left leg. At first I thought maybe he'd overdone it at the dog park. But it persisted. So I scheduled a vet appointment.&lt;/p&gt;

&lt;p&gt;This is where PawFormance stopped being a side project and became... something else.&lt;/p&gt;

&lt;p&gt;Sitting in the exam room, the vet asked when I first noticed the limp. I pulled up the app. I'd logged it four days ago, noting it was worse after walks. She asked about his weight trend. I had six months of weigh-ins charted. She asked when his last vaccination was and whether we'd had any recent medication changes. I had exact dates for everything.&lt;/p&gt;

&lt;p&gt;The appointment went from "let's figure out what's happening" to "let's treat what's happening" about fifteen minutes faster than usual.&lt;/p&gt;

&lt;p&gt;Wick's fine, by the way. Mild strain, some rest, good as new. But I sat in my car afterward and realized something I should have known but didn't really &lt;em&gt;feel&lt;/em&gt; until that moment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The value of what you build reveals itself in the quiet moments, not at launch.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned Building for My Own Dogs
&lt;/h2&gt;

&lt;p&gt;When you're heads-down in code, you think about features. Edge cases. Performance optimization. Will the calendar component handle timezone differences? Should I add photo uploads? What about multi-pet households?&lt;/p&gt;

&lt;p&gt;What you don't think about is the relief of having your dog's entire health history in your pocket when you need it. You don't think about the subtle confidence boost of being able to answer your vet's questions with precision instead of "uh, maybe March? Or was it April?"&lt;/p&gt;

&lt;p&gt;You definitely don't think about how tracking your dog's weight over time will let you catch that gradual gain that indicates you've been a little too generous with the treats.&lt;/p&gt;

&lt;p&gt;The technical problems are solvable. The emotional impact is unpredictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Still Just a CRUD App
&lt;/h2&gt;

&lt;p&gt;I haven't raised funding. I'm not scaling to millions of users. PawFormance is still fundamentally a database with a nice interface. But it's &lt;em&gt;useful&lt;/em&gt;. And it's used. Not just by me—other dog owners found it and started tracking their pets too.&lt;/p&gt;

&lt;p&gt;Some sent me emails about their own vet visits going smoother. One person thanked me because they finally had all their dog's information organized before an emergency trip to the animal hospital. That one made me tear up a little.&lt;/p&gt;

&lt;p&gt;This isn't a post about growth hacking or technical architecture. It's about the weird gap between shipping code and understanding what you actually built.&lt;/p&gt;

&lt;p&gt;The product worked the day I deployed it. But I didn't understand its value until Wick limped and the data was just... there.&lt;/p&gt;




&lt;p&gt;If you've got dogs (or cats, or both), and you've ever scrambled to remember dates during a vet visit: &lt;a href="https://pawformance.app" rel="noopener noreferrer"&gt;pawformance.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start Tracking Free&lt;/strong&gt; — because the data you'll need is always the data you forgot to write down.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tags: saas, automation, indiehackers, productivity | I have a chronic illness that sometimes puts me on the couch for a full day</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Mon, 06 Apr 2026 14:01:53 +0000</pubDate>
      <link>https://forem.com/chadtdyar/tags-saas-automation-indiehackers-productivity-i-have-a-chronic-illness-that-sometimes-puts-4in9</link>
      <guid>https://forem.com/chadtdyar/tags-saas-automation-indiehackers-productivity-i-have-a-chronic-illness-that-sometimes-puts-4in9</guid>
      <description>&lt;p&gt;Tags: saas, automation, indiehackers, productivity | I have a chronic illness that sometimes puts me on the couch for a full day without warning. I also run a senior enablement role at a tech company, maintain six web apps, and have 17 published books. The math does not work unless some of the output runs without me. So in February, I spent two weeks building an autonomous content publishing system. The Problem: I was creating content for nine platforms every week: LinkedIn, Pinterest, Mastodon, Substack, Medium, Dev.to, IndieHackers, Quora, and my personal blog at chadtdyar.com. Each platform has different formatting, character limits, and audience expectations. I was spending 4-5 hours per week just reformatting the same ideas for different channels. The Architecture: Database is Supabase Postgres. A marketing_queue table stores every piece of content with fields for platform, day of week, body text, status, and source. Validation functions run on insert to catch formatting issues before they reach the publish queue. Content generation uses weekly batch sessions producing all nine platforms worth of content from a single story seed. I use Claude to help draft and adapt, but every story comes from real experience. Publishing pipeline: a scheduled task checks the queue daily and routes content to each platform. Short-form auto-approves. Long-form stays in review until I manually approve. Monitoring: PostHog tracks pageviews across all six apps and the blog. Sentry catches errors. What Worked: The Supabase validation layer is the unsung hero. Batching content from a single seed story keeps the week coherent across platforms. What I Would Do Differently: Start with fewer platforms. Build the review queue first. Invest in content validation earlier. The Result: The system published to 40 accounts on a day I could barely hold my phone. I am now building ContentForge at contentforgehq.com as a product version of this workflow. If you are building something similar, the key insight is: validate everything before it enters the queue, and never trust auto-publish without a safety layer.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>productivity</category>
      <category>sideprojects</category>
      <category>socialmedia</category>
    </item>
    <item>
      <title>Life in a preacher's family taught me about living two lives. The Gospel Trilogy dives into the tension between faith and messy</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 16:17:14 +0000</pubDate>
      <link>https://forem.com/chadtdyar/life-in-a-preachers-family-taught-me-about-living-two-lives-the-gospel-trilogy-dives-into-the-4jnm</link>
      <guid>https://forem.com/chadtdyar/life-in-a-preachers-family-taught-me-about-living-two-lives-the-gospel-trilogy-dives-into-the-4jnm</guid>
      <description>&lt;p&gt;Life in a preacher's family taught me about living two lives. The Gospel Trilogy dives into the tension between faith and messy reality. It's more than just a play; it's a conversation starter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.chadtdyar.com/books/the-gospel-trilogy" rel="noopener noreferrer"&gt;https://www.chadtdyar.com/books/the-gospel-trilogy&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I've managed engineering-adjacent teams for two decades. The pattern is always the same:</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 16:17:13 +0000</pubDate>
      <link>https://forem.com/chadtdyar/ive-managed-engineering-adjacent-teams-for-two-decades-the-pattern-is-always-the-same-3j39</link>
      <guid>https://forem.com/chadtdyar/ive-managed-engineering-adjacent-teams-for-two-decades-the-pattern-is-always-the-same-3j39</guid>
      <description>&lt;p&gt;I've managed engineering-adjacent teams for two decades. The pattern is always the same:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;New hire is on fire. Shipping fast, volunteering for extra projects, staying late.&lt;/li&gt;
&lt;li&gt;Six months in, quality starts slipping. Not dramatically — just enough to notice.&lt;/li&gt;
&lt;li&gt;By month 12, they're either checked out or actively looking.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem isn't workload. It's that nobody taught them how to sustain.&lt;/p&gt;

&lt;p&gt;High performance isn't about doing more. It's about knowing what to protect. Your energy. Your focus. Your recovery time. The things that make the work good in the first place.&lt;/p&gt;

&lt;p&gt;I wrote a book about this called &lt;em&gt;Bring Your Best Self To Work&lt;/em&gt;. It's not a self-help book — it's a framework for people who are good at their jobs but keep running themselves into the ground.&lt;/p&gt;

&lt;p&gt;Chapters cover energy management, the myth of work-life balance (it's work-life integration), and how to have honest conversations with your manager about sustainability.&lt;/p&gt;

&lt;p&gt;If you've ever felt like you're performing well but paying too high a price for it, this might resonate.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>There's a weird overlap between sales conversations and code reviews. Both require you to:</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 16:02:15 +0000</pubDate>
      <link>https://forem.com/chadtdyar/theres-a-weird-overlap-between-sales-conversations-and-code-reviews-both-require-you-to-123b</link>
      <guid>https://forem.com/chadtdyar/theres-a-weird-overlap-between-sales-conversations-and-code-reviews-both-require-you-to-123b</guid>
      <description>&lt;p&gt;There's a weird overlap between sales conversations and code reviews. Both require you to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Listen before you respond.&lt;/strong&gt; The worst code reviews are the ones where the reviewer skims and reacts. The best ones start with "help me understand why you went this direction."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Separate the person from the problem.&lt;/strong&gt; "This code is wrong" vs. "I think there might be an edge case here" — same feedback, completely different outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ask questions that open doors.&lt;/strong&gt; "Have you considered X?" beats "You should do X" every time.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wrote a book called &lt;em&gt;How to Talk to Humans&lt;/em&gt; aimed at salespeople, but developers keep telling me it changed how they run 1:1s and give feedback.&lt;/p&gt;

&lt;p&gt;The core idea: communication isn't a soft skill. It's the infrastructure everything else runs on.&lt;/p&gt;

&lt;p&gt;If you lead a team or work cross-functionally, the chapters on "strategic silence" and "the 3-second pause" might be worth your time.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>LinkedIn just announced they're deprioritizing "humblebrags" and promotional content in favor of authentic storytelling. The tim</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 16:02:14 +0000</pubDate>
      <link>https://forem.com/chadtdyar/linkedin-just-announced-theyre-deprioritizing-humblebrags-and-promotional-content-in-favor-of-4h7e</link>
      <guid>https://forem.com/chadtdyar/linkedin-just-announced-theyre-deprioritizing-humblebrags-and-promotional-content-in-favor-of-4h7e</guid>
      <description>&lt;p&gt;LinkedIn just announced they're deprioritizing "humblebrags" and promotional content in favor of authentic storytelling. The timing is perfect, because sales leaders have been fighting this same battle internally for years.&lt;/p&gt;

&lt;p&gt;I've spent two decades in sales enablement, and the pattern is always the same. Someone creates a brilliant discovery call framework. It gets documented. Then it gets turned into a 47-slide deck with corporate messaging, compliance disclaimers, and exactly zero personality. By the time it reaches the sales floor, nobody uses it because it sounds like a robot wrote it for other robots.&lt;/p&gt;

&lt;p&gt;The best sales conversations I've ever heard sound nothing like the approved pitch deck. They sound like two people actually talking. One person asks a real question. The other person gives a real answer. Something unexpected happens. Both people learn something. That's the structure that converts.&lt;/p&gt;

&lt;p&gt;This is why I built the 4-Minute Yes And Call Brief. It's not another framework to memorize. It's a forcing function that makes you extract the actual story from a discovery call. What did the prospect say that surprised you? What did you learn about their world? What question would you ask differently next time?&lt;/p&gt;

&lt;p&gt;The "yes and" part comes from improv comedy. You can't plan the perfect call, but you can train yourself to notice what's actually happening and build on it. That's a skill. It requires practice. Most sales teams skip this step entirely and wonder why their onboarding takes six months.&lt;/p&gt;

&lt;p&gt;LinkedIn's algorithm change isn't really about algorithms. It's about what works when humans are deciding whether to keep reading or scroll past. Corporate humblebragging doesn't work because it's not interesting. Nobody cares that you're "thrilled to announce" something. They care if you learned something useful and can explain it without jargon.&lt;/p&gt;

&lt;p&gt;The same principle applies to discovery calls. Prospects don't want to hear your positioning statement. They want to know if you understand their actual problem and whether you've helped someone like them before. That requires you to have real conversations and remember what happened in them.&lt;/p&gt;

&lt;p&gt;The 4-Minute Yes And Call Brief trains that muscle. After every call, you take four minutes to write down what actually happened. Not what was supposed to happen. What did. Then your team has a library of real stories instead of theoretical ones.&lt;/p&gt;

&lt;p&gt;If you're building sales enablement tools or training programs right now, this is the shift worth paying attention to. The tools that win are the ones that help people sound like people.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>TITLE: Teaching Kids About Emotions with Dogs as Guides</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 14:45:33 +0000</pubDate>
      <link>https://forem.com/chadtdyar/title-teaching-kids-about-emotions-with-dogs-as-guides-1ia9</link>
      <guid>https://forem.com/chadtdyar/title-teaching-kids-about-emotions-with-dogs-as-guides-1ia9</guid>
      <description>&lt;p&gt;TITLE: Teaching Kids About Emotions with Dogs as Guides&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Understanding Raw Emotions&lt;br&gt;
Kids experience emotions intensely and often can't articulate them. Recognizing this is the first step in helping them grow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Role of "The Wiggles, the Woofs, and the Why"&lt;br&gt;
This book uses three dogs to teach kids about emotions. Wick, Maya, and Benny serve as guides, each embodying characteristics like calmness, joy, and persistence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building Emotional Awareness&lt;br&gt;
Through stories, kids can learn to ide&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>TITLE: How Dogs Teach Kids Self-Awareness: A Practical Insight</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sat, 04 Apr 2026 16:12:26 +0000</pubDate>
      <link>https://forem.com/chadtdyar/title-how-dogs-teach-kids-self-awareness-a-practical-insight-59l7</link>
      <guid>https://forem.com/chadtdyar/title-how-dogs-teach-kids-self-awareness-a-practical-insight-59l7</guid>
      <description>&lt;p&gt;TITLE: How Dogs Teach Kids Self-Awareness: A Practical Insight&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Challenge of Self-Awareness: Kids struggle to understand their own actions. Dogs, with their simple, honest interactions, offer a unique way to teach this skill.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Role of Wick, Maya, and Benny: In "The Sparkle, the Snuggle, and the Song," these dogs aren't just characters. They're guides, showing kids the impact of their daily choices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practical Lessons from Play: The book uses playful scenarios to demonstrate how&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>My Stack for Building and Monitoring 6 Web Apps as a Solo Developer</title>
      <dc:creator>Chad Dyar</dc:creator>
      <pubDate>Sat, 28 Mar 2026 04:40:10 +0000</pubDate>
      <link>https://forem.com/chadtdyar/my-stack-for-building-and-monitoring-6-web-apps-as-a-solo-developer-2l22</link>
      <guid>https://forem.com/chadtdyar/my-stack-for-building-and-monitoring-6-web-apps-as-a-solo-developer-2l22</guid>
      <description>&lt;p&gt;I run six web apps as a solo developer with a day job. Here is the exact stack and how the pieces fit together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hosting and deployment:&lt;/strong&gt; five apps are on Lovable (one-click deploy from their builder), one (ContentForge) is on Vercel. All use custom domains through Cloudflare for DNS and SSL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database:&lt;/strong&gt; Supabase (Postgres) for all six apps plus a central "command" project that holds cross-app analytics, book sales data, and the marketing engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payments:&lt;/strong&gt; Stripe with tiered pricing on every app. Free tier, mid tier ($3.99-4.99/mo), premium tier ($7.99-9.99/mo). No paying customers yet, but the infrastructure is ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analytics:&lt;/strong&gt; PostHog for product analytics across all six apps. One project, events tagged by app name. This lets me compare engagement across apps in a single dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error tracking:&lt;/strong&gt; Sentry with one org and separate projects per app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Uptime:&lt;/strong&gt; BetterStack monitors all six domains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email:&lt;/strong&gt; Resend for transactional email.&lt;/p&gt;

&lt;p&gt;The key architectural decision: one central Supabase project acts as the hub. It connects to each app's project through Supabase edge functions. This gives me a single place to query across all six apps, run marketing automation, and track portfolio-level metrics without logging into six different dashboards.&lt;/p&gt;

&lt;p&gt;Current numbers are small (364 total pageviews last month across all six apps), but the monitoring infrastructure scales. Every tool on this list either has a generous free tier or has a free tier that covers my current scale.&lt;/p&gt;

&lt;p&gt;The apps: contentforgehq.com, momentumfit.app, thehomegrown.app, getpillpal.app, pawformance.app, palettepro.design.&lt;/p&gt;

&lt;p&gt;Code and details at chadtdyar.com.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>supabase</category>
    </item>
  </channel>
</rss>
