<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://bridgetownrb.com/" version="2.2.0">Bridgetown</generator><link href="https://www.beflagrant.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.beflagrant.com/" rel="alternate" type="text/html" /><updated>2026-08-17T06:09:01-05:00</updated><id>https://www.beflagrant.com/feed.xml</id><title type="html">Flagrant</title><entry><title type="html">Developer Round Table - Why Do We Still Dismiss CSS?</title><link href="https://www.beflagrant.com/blog/developer-round-table-why-do-we-still-dismiss-css-2026-07-20" rel="alternate" type="text/html" title="Developer Round Table - Why Do We Still Dismiss CSS?" /><published>2026-07-20T09:08:00-05:00</published><updated>2026-07-20T09:08:00-05:00</updated><id>repo://posts.collection/_posts/developer-round-table-why-do-we-still-dismiss-css-2026-07-20.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/developer-round-table-why-do-we-still-dismiss-css-2026-07-20">&lt;p&gt;You know what’s weird? CSS is everywhere, pretty much on every website and yet, there’s this attitude about CSS that persists that it doesn’t need to be taken seriously; it’s just icing on a cake. Casey brought this up at a &lt;a href=&quot;https://youtu.be/20P4GfRI6Mg&quot;&gt;Developer Round Table discussion,&lt;/a&gt; and it hit home. There’s this vibe that CSS is just… weird, or “not real code.” And I get it, a lot of us lived through the ‘try it in every browser and pray it works’ era. It was rough.&lt;/p&gt;

&lt;p&gt;But honestly, those days are mostly gone. With Flexbox, grid, and modern tooling, styling is smoother than ever. But still, the reputation lingers.&lt;/p&gt;

&lt;p&gt;So what’s our responsibility as web folks? Just hand-wave and blame the language? Or dig in and treat CSS with the respect it deserves?&lt;/p&gt;

&lt;p&gt;On a certain level, it feels like a self-fulfilling prophecy. This was a thought brought up by Max, a developer at Flagrant.  If you believe from the start that CSS is a lost cause, you’re never going to bother learning it well. You limp through, hate every second, and when it breaks, you get to say “Told you it was bad.” Which isn’t fair to the language to label it as difficult or broken just because you didn’t bother to truly understand how it works.&lt;/p&gt;

&lt;p&gt;Part of the problem might be that CSS hasn’t had the same level of tooling and support other languages enjoy. In Ruby, Java, or JavaScript, your editor catches errors, helps autocomplete methods, points out typos, it’s a conversation. But with CSS, it’s often silent. No nudges, no suggestions, just… hope for the best.&lt;/p&gt;

&lt;p&gt;But maybe that’s also on us.&lt;/p&gt;

&lt;p&gt;As Casey pointed out, there’s a chicken-and-egg situation happening. We don’t take CSS seriously, so the tooling hasn’t caught up, and because the tooling hasn’t caught up, we don’t take it seriously.&lt;/p&gt;

&lt;p&gt;That’s slowly starting to change. Visual regression testing, design linting tools, better devtools, the ecosystem is maturing. But it’ll only keep improving if we demand more of it and invest time into it.&lt;/p&gt;

&lt;p&gt;This brings me to the heart of it: why do we dismiss CSS in the first place?&lt;/p&gt;

&lt;p&gt;CSS isn’t just about making things “pretty.” It’s about creating a usable, intuitive experience. If you’ve ever visited a site that felt frustrating or clunky, buttons too small, text hard to read, weird layout, you know exactly how much design and styling matter. A beautifully engineered backend doesn’t mean much if the frontend makes users want to leave.&lt;/p&gt;

&lt;p&gt;Styling is functionality. And yet, we treat it like decoration.&lt;/p&gt;

&lt;p&gt;We also discussed how design has historically been a more female-dominated discipline. And we know, historically, that female-dominated fields tend to get dismissed or undervalued. That bias, even if it’s unconscious or unintentional, might be part of why CSS and design work often aren’t given the same technical respect.&lt;/p&gt;

&lt;p&gt;I’m not saying developers are intentionally dismissive or malicious. But it’s worth examining how our own biases, whether personal or systemic, shape the way we value different kinds of work. If we want to grow as developers, and as a community, we have to be willing to question these patterns.&lt;/p&gt;

&lt;p&gt;What would happen if we approached CSS as an equal partner in the stack?&lt;/p&gt;

&lt;p&gt;We’d probably write better code. We’d build better tools. We’d create better experiences for users, and maybe we’d start to close some of the gaps in respect and recognition within our teams and communities.&lt;/p&gt;

&lt;p&gt;Because in the end, CSS isn’t just how things look, it’s how things feel. And that deserves just as much care and craft as any other part of the web.&lt;/p&gt;

&lt;p&gt;Let’s stop treating CSS like an afterthought. Let’s build with it like it matters, because it does.&lt;/p&gt;</content><author><name>Amanda Klusmeyer</name></author><category term="[&quot;development&quot;]" /><category term="CSS" /><category term="Frontend" /><category term="WebDevelopment" /><category term="UX" /><category term="Design" /><category term="WebDesign" /></entry><entry><title type="html">Delightfully Friday Junior: Pet Art Gallery</title><link href="https://www.beflagrant.com/blog/delightfully-friday-junior-pet-art-gallery-2026-06-25" rel="alternate" type="text/html" title="Delightfully Friday Junior: Pet Art Gallery" /><published>2026-06-25T07:16:00-05:00</published><updated>2026-06-25T07:16:00-05:00</updated><id>repo://posts.collection/_posts/delightfully-friday-junior-pet-art-gallery-2026-06-25.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/delightfully-friday-junior-pet-art-gallery-2026-06-25">&lt;p&gt;Here at Flagrant, we’re big fans of our fur babies and critters alike (we even have a dedicated Slack channel to share photos with each other). This week’s Delightfully Friday Junior is brought  to you by our unconditional love for the non-human brethren in our lives and a healthy dose of artistic flair and critique.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.56.01 pm.png&quot; alt=&quot;Medium: Photographs 2000s - present Description: Seen in this collage of photos are snap shots of things in and around Kelly’s life that made her laugh or cry. Awkwardness forever and ever and ever and ever and ever and ever&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.56.10 pm.png&quot; alt=&quot;Title: A Star Description: Gone Supernova&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.56.18 pm.png&quot; alt=&quot;Title: Woggy The Dragster Description: Once a year Polli (short for Polliwog) likes to dress up for Halloween. This past year she was a Dragster chimera (part dragon, part lobster). As you can see, she wore herself out partying and eating too many treats.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.56.41 pm.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.56.31 pm.png&quot; alt=&quot;Title: A House Menagerie Description: The dogs never end. And the baby loves them.  And unfortunately, the cat does end.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.55.50 pm.png&quot; alt=&quot;Title: To the Walls Description: To the windows, to the walls, to the face against the paws&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.55.40 pm.png&quot; alt=&quot;Title: Feline Denies Perception Description: Feline rest disturbed by hooman nosiness.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.55.26 pm.png&quot; alt=&quot;Title: The Hardest Lives to Have Ever Been Lived Description: Here lie the four-legged creatures of yore that have worked tirelessly begging for food, pets, and attention. Their energies know limited bounds and long live the days of fending for themselves.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.54.57 pm.png&quot; alt=&quot;Description: Beware! The sweet face hides a big attitude and lots of table surfing. But we still love her.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.54.49 pm.png&quot; alt=&quot;Title: Miss Minnie Description: An An angel who can do no wrong, barking voice sounds like a song. Her legs are short, her hair is long, in my arms she does belong.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-24-at-3.54.39 pm.png&quot; alt=&quot;Title: Mittens Description: 🐈‍⬛&quot; /&gt;&lt;/p&gt;</content><author><name>Lena Yen</name></author><category term="[&quot;consulting&quot;]" /><category term="WorkDoesntHaveToSuck" /><category term="FlagrantLife" /><category term="RemoteWorkVibes" /><category term="RemoteWork" /><category term="PhotoDump" /><category term="TeamBuilding" /></entry><entry><title type="html">I’m Still Clauding</title><link href="https://www.beflagrant.com/blog/still-clauding" rel="alternate" type="text/html" title="I&apos;m Still Clauding" /><published>2026-06-23T10:38:00-05:00</published><updated>2026-06-23T10:38:00-05:00</updated><id>repo://posts.collection/_posts/im-still-clauding-2026-06-23.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/still-clauding">&lt;p&gt;A couple of months ago, I wrote about &lt;a href=&quot;https://www.beflagrant.com/blog/welcome-to-claudeville&quot;&gt;starting to use Claude Code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m still there, still living in Claudeville. I’m still feeling plenty of things, including being conflicted in many ways. And it all comes down to energy use — that is, what energy I have to dedicate to this work.&lt;/p&gt;

&lt;p&gt;The biggest thing that I’m feeling now relates to my position as a consultant, not “just a developer”. Being a consultant at a small company means wearing a lot of hats. Even if you’re primarily a developer, you don’t have the luxury of dedicated PMs, or client management / liaisons, or ops, or all these things that would let you concentrate on just the software. And while I can do these other things, it’s difficult for me to do them all &lt;em&gt;and&lt;/em&gt; do the development, the building. It’s not just that I enjoy the building part (&lt;a href=&quot;https://www.beflagrant.com/blog/the-six-layers-of-art-a-personal-journey-2023-02-16&quot;&gt;the “craft”&lt;/a&gt;) the most, it’s also what I’m best at. And what that means for me in practice is it’s also the part I’m best at pulling back from and giving direction and review on. It’s the part I’m best at giving over to automation, to assistance, to an agent. It lets me concentrate on all the other things I have to do, and truly do myself.&lt;/p&gt;

&lt;p&gt;I’m also feeling plenty about the &lt;strong&gt;amount&lt;/strong&gt; of stuff to do, and the &lt;strong&gt;velocity&lt;/strong&gt; with which it gets done. There’s just &lt;em&gt;so much&lt;/em&gt; to deal with — mountains of LLM output, context-switching with bouncing between separate problems (and even separate projects) — and it’s hard to keep up. Yes, LLMs are truly a “force multiplier”, but consider what forces are being multiplied. I’m not fond of the military origins of the saying “slow is smooth, smooth is fast”, but I do strongly agree with it. I’m feeling so much demand for so much, and giving in to moving at speed means a future where you get caught in a tangle or run fill-tilt into a brick wall. This can only be countered by slowing down, looking around, and doing things well —  or as well as possible. It takes all that time and effort to produce &lt;em&gt;less&lt;/em&gt; — &lt;a href=&quot;https://quoteinvestigator.com/2012/04/28/shorter-letter/&quot;&gt;the right kind of less&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With so many people using these tools to create literally inhuman amounts of — let’s face it, &lt;em&gt;cruft&lt;/em&gt; — that will need to be rescued, I’m remembering my earlier days. I’ve done rescue missions before. It used to be something of a specialty. But now, without some of these same tools in my tool chest, how will I possibly dig out that amount of rubble?&lt;/p&gt;

&lt;p&gt;So yes, I’m continuing to dwell in Claudeville. I figure if I’m going to do this, I should do it “right”. I should use the tools at my disposal. So I’ve done plenty to understand the tools and fit them into my tool chest, to shape them to my hands. I set up &lt;a href=&quot;https://github.com/ymendel/dotclaude/&quot;&gt;my dotclaude repo&lt;/a&gt;, so I could have a dependable(?), consistent(?) assistant/colleague(?) that goes with me from project to project (and I have &lt;em&gt;plenty&lt;/em&gt; of projects to deal with). And as my understanding has grown, so has that repo, accreting with the sediment of lessons learned, and (hopefully) coral of helpful skills and scripts, and (most likely) the barnacles of wild-attempt stabs at stopping or redirecting away from certain unwanted behavior. If you like, you can take a look at the history, and watch these things happen. And in my not-so-humble opinion, that repo and its history show two things that are not always found in other such places.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Ownership. My biggest issue with what’s going on is the lack of ownership, the common anti-pattern of, &lt;a href=&quot;https://simonwillison.net/guides/agentic-engineering-patterns/anti-patterns/&quot;&gt;as Simon Willison puts it, “inflicting unreviewed code on collaborators”.&lt;/a&gt; So &lt;a href=&quot;https://github.com/ymendel/dotclaude/blob/main/CLAUDE.md&quot;&gt;my &lt;code class=&quot;highlighter-rouge&quot;&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt; &lt;em&gt;starts&lt;/em&gt; with “You help; I own the result.” This is probably as much a reminder to myself as it is to the agent. It can be seductive to delegate more and more, and try to take yourself out of the equation. This is another aspect of the vigilance I wrote of &lt;a href=&quot;https://www.beflagrant.com/blog/welcome-to-claudeville&quot;&gt;last time&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Cleanup. It’s not all about doing more, building up. It’s not all about &lt;em&gt;addition&lt;/em&gt;. There’s also removal, &lt;em&gt;deletion&lt;/em&gt;. Call it refactoring. Call it consolidation. Call it &lt;em&gt;judgement&lt;/em&gt;. This dotclaude repo is a project like any other — maybe more so, given its foundational nature, and how every bit I add there has the potential for knock-on effects everywhere I use Claude. Which is, of course, everywhere. Or everywhere I’m working professionally. And I do try to put the emphasis on &lt;em&gt;professional&lt;/em&gt; there (refer to the previous point on ownership).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So that’s where I am now, moving along with the world as it is, as best as I can. I hope you, too, are doing the best you can.&lt;/p&gt;</content><author><name>Yossef Mendelssohn</name></author><category term="[&quot;development&quot;, &quot;consulting&quot;]" /><category term="claude" /><category term="llms" /><category term="ai" /></entry><entry><title type="html">Delightfully Friday Junior: Coloring Bonanza</title><link href="https://www.beflagrant.com/blog/delightfully-friday-junior-coloring-bonanza-2026-06-16" rel="alternate" type="text/html" title="Delightfully Friday Junior: Coloring Bonanza " /><published>2026-06-16T11:29:00-05:00</published><updated>2026-06-16T11:29:00-05:00</updated><id>repo://posts.collection/_posts/delightfully-friday-junior-coloring-bonanza-2026-06-16.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/delightfully-friday-junior-coloring-bonanza-2026-06-16">&lt;p&gt;When it was my turn to plan the DFJ activity, I wanted to make something that would allow us to relax together, take our minds out of work mode, and just get into the flow of creating without stress. When I think about times when I was the most relaxed and in the creative flow, I think about these huge coloring pages my dad would buy for my sisters and I at the Woodmans near my childhood home. These coloring pages were pictures of fairies, goblins and princesses, and I would lose myself in them, hours of time spent making the drawings just so.&lt;/p&gt;

&lt;p&gt;In this case, we couldn’t spend hours on our coloring pages, so I went for some simpler choices, but the effect was the same: fun times just coloring!&lt;/p&gt;

&lt;p&gt;Here are the pages the team got to choose from and the results!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.32.08 pm.png&quot; alt=&quot;Seven images of assorted coloring pages including possoms, cats, dogs and fruit&quot; title=&quot;Blank Coloring Pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;And now, without further delay, here are the fruits of our labor!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.34.34 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Valenzia&apos;s coloring page&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.34.49 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Natalie&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.34.59 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Glynnis&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.35.12 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Amanda&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.42.16 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Jonathan and Jim&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.35.36 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Kelly&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.35.51 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Lena&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.36.02 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Max&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/screenshot-2026-06-16-at-4.36.18 pm.png&quot; alt=&quot;Coloring pages colored in&quot; title=&quot;Yossef&apos;s coloring pages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;I think you can see a lot of the team’s personality based on how they approached the activity :P (Credit to the artists on Pinterest, I vectorized for this activity, I don’t have their names, but their work was adorable!) Enjoy!&lt;/p&gt;

&lt;p&gt;I hope this inspires you to get out there and be creative, even if it’s just a lil doodle :P&lt;/p&gt;</content><author><name>Valenzia Cina</name></author><category term="[&quot;design&quot;, &quot;development&quot;, &quot;consulting&quot;]" /><category term="creative" /><category term="drawing" /><category term="coloring" /><category term="art" /><category term="fun" /></entry><entry><title type="html">Developer Roundtable: Herb</title><link href="https://www.beflagrant.com/blog/developer-roundtable-herb-2026-05-22" rel="alternate" type="text/html" title="Developer Roundtable: Herb" /><published>2026-05-22T03:23:00-05:00</published><updated>2026-05-22T03:23:00-05:00</updated><id>repo://posts.collection/_posts/developer-roundtable-herb-2026-05-22.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/developer-roundtable-herb-2026-05-22">&lt;p&gt;&lt;a href=&quot;https://marcoroth.dev/posts/introducing-herb&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://marcoroth.dev/posts/introducing-herb&quot;&gt;Herb&lt;/a&gt;, created by &lt;a href=&quot;https://marcoroth.dev/&quot;&gt;Marco Roth&lt;/a&gt;, is a new HTML-aware ERB parser designed to improve developer tooling for Rails view templates. Unlike traditional parsers that either ignore embedded Ruby or modify the original HTML, Herb understands both HTML and ERB simultaneously while preserving the source exactly as written. This makes it fast, error-tolerant, and suitable for real-time editor features. By generating a precise syntax tree for &lt;code class=&quot;highlighter-rouge&quot;&gt;.html.erb&lt;/code&gt; files, Herb enables better formatters, linters, language server integrations, and other tooling for modern Rails applications. Throughout this blog post, the images used are pulled from &lt;a href=&quot;https://marcoroth.dev/&quot;&gt;various blog posts by Marco Roth about Herb&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Historically, Ruby developers have had gems like &lt;a href=&quot;https://nokogiri.org/index.html&quot;&gt;Nokogiri&lt;/a&gt;, that parse their html. Nokogiri can detect when you’re missing a closing tag, using the wrong tag, or need to update your code for security reasons. This is just a basic example of what Nokogiri can do, and I encourage you to dive deeper into the linked URL to learn more. The shortcoming of Nokogiri is that it’s &lt;em&gt;just&lt;/em&gt; an HTML parser, not an ERB parser, and it modifies your files for you. While that can be useful, it’s also limiting.&lt;/p&gt;

&lt;p&gt;How does Herb set itself apart, and what makes it special and different from current HTML/ERB parsers?&lt;/p&gt;

&lt;p&gt;Today, in a Rails application, when your HTML template has an error, it shows up in the browser, but the way it’s displayed isn’t very helpful. You’ll typically see red text on a white screen showing the problematic code, and you have to sift through it to figure out where and what the issue is.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/template_error.png&quot; alt=&quot;screenshot example of how a ruby on rails application renders an error during local development. Lots of text, hard to sift through&quot; /&gt;&lt;/p&gt;

&lt;p&gt;With Herb, you’ll see exactly where and what is wrong. Herb shows a top red banner detailing the issue because the parser already knows what’s wrong. It might display something like “Template errors (1)” and then show the file and exact location of the error. This makes debugging easier and faster.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/herb_template_error.png&quot; alt=&quot;Screenshot example of how herb renders template errors during local development&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Similarly, when you have warnings about your code, like invalid nested &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags, Herb will display them. You can review and dismiss these warnings if you choose, allowing you to continue your development workflow uninterrupted.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/herb_validation_error.png&quot; alt=&quot;screenshot example of herb validation error. Show exactly where issue is in the code with helpful descriptive text&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Currently, developers use lots of tricks when debugging template errors in their applications. I’m speaking from my own experience and from what co-workers, friends, and random people on the internet have shared. Tricks are necessary because it’s not always easy to know what kind of template error you’re facing or where in your code it’s coming from. It’s not readily apparent, so it requires a bit of sleuthing and detective work to figure out what’s going on.&lt;/p&gt;

&lt;p&gt;Some common debugging tricks include rendering comments in the HTML to mark elements for easier visualization, opening the browser inspector to locate those comments, or deleting portions of code to see what disappears after a refresh, helping you locate where something lives in the application. Another example is adding visible borders (like thick red outlines) to containers, divs, or elements to identify where they are on the page. There are countless variations of these techniques, but you get the gist, they exist because debugging templates are inherently limited.&lt;/p&gt;

&lt;p&gt;Herb lets you skip all those clever workarounds. You can apply a data attribute like &lt;code class=&quot;highlighter-rouge&quot;&gt;data-herb-debug-file-name&lt;/code&gt; and style it in your CSS to get visual outlines of elements. You can even specify types with attributes like &lt;code class=&quot;highlighter-rouge&quot;&gt;data-herb-debug-outline-type=&quot;view&quot;&lt;/code&gt;, which color-codes different types for clearer visual differentiation. Additional labels let you show the full file path, and clicking a path can take you directly to that file in your editor.&lt;/p&gt;

&lt;p&gt;You can do the same with ERB output tags. A dropdown toggle menu on the right side of your application (in development mode) lets you control debugging behavior like, for example, showing ERB output tags on hover. Hovering over dynamic content, such as &lt;code class=&quot;highlighter-rouge&quot;&gt;link_to&lt;/code&gt; elements, will show what the &lt;code class=&quot;highlighter-rouge&quot;&gt;link_to&lt;/code&gt; tag looks like. Just like the HTML tags, you can click these to open the corresponding file and line in your editor. To set this up, &lt;a href=&quot;https://marcoroth.dev/posts/rails-world-2025-recap#:~:text=make%20them%20dismissable.-,Debug,-View%20Annotations%20in&quot;&gt;follow these steps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/herb_erb_output_tags.png&quot; alt=&quot;Screenshot example of herb erb output tags. Shows outlines of each erb tags with the file name and a dotted green outline around the content tags. &quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is all really exciting to see. In my opinion, Herb is a game changer for working with the front end of your application and will save countless hours of development time. It’s easy to understand, simple to integrate, and yet incredibly powerful in its impact. If you spend a lot of time in Rails views, it’s absolutely worth trying in your next project.&lt;/p&gt;</content><author><name>Amanda Klusmeyer</name></author><category term="[&quot;development&quot;]" /><category term="Rails" /><category term="ERB" /><category term="HTML" /><category term="parser" /><category term="tooling" /><category term="debugging" /><category term="templates" /><category term="MarcoRoth" /><category term="developer experience" /><category term="formatting" /></entry><entry><title type="html">Delightfully Friday Junior: Who’s Actually on Your Team?</title><link href="https://www.beflagrant.com/blog/delightfully-friday-junior-whos-actually-on-your-team-2026-05-07" rel="alternate" type="text/html" title="Delightfully Friday Junior: Who&apos;s Actually on Your Team?" /><published>2026-05-07T07:12:00-05:00</published><updated>2026-05-07T07:12:00-05:00</updated><id>repo://posts.collection/_posts/delightfully-friday-junior-whos-actually-on-your-team-2026-05-07.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/delightfully-friday-junior-whos-actually-on-your-team-2026-05-07">&lt;p&gt;I’ve been putting off writing this for over a month. Turns out I find writing hard. Moving on.&lt;/p&gt;

&lt;p&gt;We’re into the next cycle of Delightfully Friday Junior. The format: one team member hosts 30 minutes, no work allowed, activity of their choice. Games, creative tasks, questions — whatever they want. I opened the first round. Since then, two other people have hosted, and both landed on the same instinct I had: ask the team something real.&lt;/p&gt;

&lt;h2 id=&quot;who-are-these-people-whats-happening-off-camera-thats-shaping-their-day&quot;&gt;Who are these people? What’s happening off-camera that’s shaping their day?&lt;/h2&gt;

&lt;p&gt;In an office you can just… observe. You catch a long sigh. You notice someone’s been staring at the same spot for an hour. You read the room without anyone having to say anything. Remote takes all of that away. If you want to know someone, you have to go looking.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/dfj-4-02-26.webp&quot; alt=&quot;A grid of 12 questions on yellow and cream cards, surrounded by polaroid-style photos of eight team members: Glynnis Ritchie, Natalie Faciane, Yossef Mendelssohn (holding something in his teeth), Valenzia Cina (wearing makeshift antler-like objects on her head), Lena Yen, Amanda (represented by a clay face sculpture), Jonathan (a visitor), Kelly Rauwerdink, and Jim Remsik. The questions include prompts like &amp;quot;What is the best thing that happened to you this week outside of work?&amp;quot; and &amp;quot;What is one thing your colleagues might be surprised to learn about you?&amp;quot;&quot; title=&quot;The team and the questions&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So I gave the team 12 questions and asked them to answer at least 6. Here’s what came back:&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-best-thing-that-happened-to-you-this-week-outside-of-work&quot;&gt;What is the best thing that happened to you this week outside of work?&lt;/h2&gt;

&lt;p&gt;“Helping my Mom get through a challenging time at the hospital and bringing her back home.”&lt;/p&gt;

&lt;p&gt;“Reconnecting with an old high school friend.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-biggest-distraction-you-face-while-working-from-home&quot;&gt;What is the biggest distraction you face while working from home?&lt;/h2&gt;

&lt;p&gt;“Just taking care of home stuff. It’s good to be able to quickly take care of the dogs, or the baby, or the laundry, or whatever. But it also means that the only separation I have from all these things is, at most, a closed door.”&lt;/p&gt;

&lt;p&gt;“My own mind always seems to be the biggest distraction. It is a constant wrestling match to figure out how to structure whatever I am working on in such a way that I can get started and stay focused.”&lt;/p&gt;

&lt;p&gt;What is one remote work habit you’ve picked up that you’ll never give up?&lt;/p&gt;

&lt;p&gt;“Working when I am unable to sleep.”&lt;/p&gt;

&lt;p&gt;“Having a nice lunch with my partner away from screens.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-one-thing-your-colleagues-might-be-surprised-to-learn-about-you&quot;&gt;What is one thing your colleagues might be surprised to learn about you?&lt;/h2&gt;

&lt;p&gt;“I was a member of a dance company in my youth and part of a performance aired on WMTV.”&lt;/p&gt;

&lt;p&gt;“maybe surprising or maybe not surprising at all (not sure which): I am a little house cat who likes quiet environments and 1:1 time, not very outgoing or comfy in multi-human settings. She is a sensitive lil granny at heart.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-most-significant-challenge-youve-overcome-in-the-last-year&quot;&gt;What is the most significant challenge you’ve overcome in the last year?&lt;/h2&gt;

&lt;p&gt;“Getting a puppy. Having a puppy. Dealing with a puppy. Did I mention puppy? I’m not sure I’ve fully ‘overcome’ this challenge, btw.”&lt;/p&gt;

&lt;p&gt;“Feeling numb and burnt out from stress of the world and life. Getting to leave my house and go touch dirt with my hands and make something that is just for me helped me find community and create new friends.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-one-thing-you-wish-you-were-more-courageous-about&quot;&gt;What is one thing you wish you were more courageous about?&lt;/h2&gt;

&lt;p&gt;“Failing and not beating myself up.”&lt;/p&gt;

&lt;p&gt;“Confidence. I wax and wane with feeling like I have an ego or showing off, which makes me not toot any horns or feel proud of my work. Which could lead to writing more or speaking about what I do to a crowd without feeling judged.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-a-piece-of-feedback-you-received-that-changed-your-perspective&quot;&gt;What is a piece of feedback you received that changed your perspective?&lt;/h2&gt;

&lt;p&gt;“You don’t suck at this — it’s just new to you.”&lt;/p&gt;

&lt;p&gt;“Labeling yourself as ‘junior’ or ‘beginner’ sets expectations for the person hearing it. I think everyone has experiences that bring value and that we are all at the same level but in different places.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-most-rewarding-part-of-your-job&quot;&gt;What is the most rewarding part of your job?&lt;/h2&gt;

&lt;p&gt;“Getting to create things for and with people that want to do better in this world. Being able to be creative and get paid for it and make a living wage, which is something my parents didn’t get for their skills.”&lt;/p&gt;

&lt;p&gt;“Working with people that are so open about their process and kind about feedback. I was recently talking with an old classmate and she was describing some really toxic work environment conditions and I was reminded how wonderful it is to be in this space.”&lt;/p&gt;

&lt;p&gt;“Collaborating with you all on cool shit.”&lt;/p&gt;

&lt;h2 id=&quot;what-is-one-thing-you-are-truly-grateful-for-today&quot;&gt;What is one thing you are truly grateful for today?&lt;/h2&gt;

&lt;p&gt;“I am grateful that spring is here and the birds are singing and the flowers are putting out their flagrances (Freudian slip intended).”&lt;/p&gt;

&lt;p&gt;“My supportive partner and the lovely Flagrant team that cares about people.”&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I didn’t know I was looking for any of that. But there it is — connection, surprise, context. The things that explain why someone’s quiet on a call, or brilliant in a meeting, or particularly good at one kind of work and not another.&lt;/p&gt;

&lt;p&gt;The deeper we go into AI, the more I want to be around actual people. A prompt won’t surprise you. The people I work with did.&lt;/p&gt;

&lt;p&gt;If you’re on a remote team, go find out who’s in that rectangle. Not as a team-building exercise. Just because they’re a whole person and you’re missing most of them.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/dfj2-4-02-26.webp&quot; alt=&quot;Six yellow and cream response cards fanned and stacked on a warm cream background, each showing a question at the top and a team member&apos;s answer below. Responses include reflections on the most rewarding part of the job, a piece of feedback that changed someone&apos;s perspective, and go-to background music for focusing — one answer describing their ideal working environment as &amp;quot;a psychotic-level of absolute silence.&amp;quot;&quot; title=&quot;6 of the responses&quot; /&gt;&lt;/p&gt;</content><author><name>Kelly Rauwerdink</name></author><category term="[&quot;consulting&quot;]" /><category term="RemoteWork" /><category term="TeamCulture" /><category term="DistributedTeams" /><category term="HumansAtWork" /></entry><entry><title type="html">Delightfully Friday Junior: Curiosity Roundtable</title><link href="https://www.beflagrant.com/blog/delightfully-friday-junior-curiosity-roundtable" rel="alternate" type="text/html" title="Delightfully Friday Junior: Curiosity Roundtable" /><published>2026-05-05T08:25:00-05:00</published><updated>2026-05-05T08:25:00-05:00</updated><id>repo://posts.collection/_posts/delightfully-friday-junior-curiosity-roundtable-2026-05-05.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/delightfully-friday-junior-curiosity-roundtable">&lt;p&gt;This week’s Delightfully Friday Junior (&lt;a href=&quot;https://www.beflagrant.com/blog/introducing-delightfully-friday-junior-at-flagrant-2025-10-10&quot;&gt;if you’re catching up on what this is, learn more here&lt;/a&gt;) involved a roundtable sharing of some prompted questions.&lt;/p&gt;

&lt;p&gt;A few of these questions were: “What song have you had on repeat?”, “What cartoon or movie character would you want to meet and why?”, “What is the most beautiful place you’ve been?”, “What was your first job?” and “What’s a hobby or activity you’ve picked up in the last couple months?” just to list a few.&lt;/p&gt;

&lt;p&gt;As expected, the weirdos at Flagrant did not disappoint in their answers. Here are some highlights.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Gusgus (What cartoon or movie character would you want to meet and why?)&lt;/li&gt;
  &lt;li&gt;All of the Bob’s Burgers cast (What cartoon or movie character would you want to meet and why?)&lt;/li&gt;
  &lt;li&gt;Nighttime dip in a historic geothermal pool in Iceland (“What is the most beautiful place you’ve been?”)&lt;/li&gt;
  &lt;li&gt;“The Rainbow Connection” (original Muppet Movie version) (“What song have you had on repeat?”)&lt;/li&gt;
  &lt;li&gt;“Chalk Outlines” – Ren and Chinchilla (“What song have you had on repeat?”)&lt;/li&gt;
  &lt;li&gt;Bakery Clerk (with a very ugly green polyester shirt :’)  (“What was your first job?”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions pull out answers you wouldn’t normally hear in day-to-day conversation. Not just the highlights, but the small details that come with them, like that each cast of Bob’s Burgers feel like a different human personality that we all have, or why the muppets could be an answer to every question.&lt;/p&gt;

&lt;p&gt;You start with a simple prompt, and suddenly you’re picturing someone standing behind a bakery counter in a questionably green shirt, or imagining what it would actually feel like to sit in a geothermal pool in the middle of the night.&lt;/p&gt;

&lt;p&gt;And while the answers themselves are fun, it’s really the sharing of them that makes this a favorite. It gives everyone a chance to bring a small piece of their world into the room, whether that’s a song they can’t stop replaying or a place that left a lasting impression.At the end of the day, this is the kind of thing that makes work feel a little more human and a lot less like just work.&lt;/p&gt;

&lt;p&gt;Not a bad way to break up the week.&lt;/p&gt;</content><author><name>Amanda Klusmeyer</name></author><category term="[&quot;consulting&quot;]" /><category term="DelightfullyFridayJunior" /><category term="WorkDoesntHaveToSuck" /><category term="FlagrantLife" /><category term="RemoteWorkVibes" /><category term="RemoteWork" /><category term="PhotoDump" /><category term="TeamBuilding" /></entry><entry><title type="html">Delightfully Friday Junior: Rose, Thorn, Bud</title><link href="https://www.beflagrant.com/blog/delightfully-friday-junior-rose-thorn-bud" rel="alternate" type="text/html" title="Delightfully Friday Junior: Rose, Thorn, Bud" /><published>2026-04-20T05:28:00-05:00</published><updated>2026-04-20T05:28:00-05:00</updated><id>repo://posts.collection/_posts/delightfully-friday-junior-rose-thorn-bud-2026-04-20.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/delightfully-friday-junior-rose-thorn-bud">&lt;p&gt;This week’s Delightfully Friday Junior (&lt;a href=&quot;https://www.beflagrant.com/blog/introducing-delightfully-friday-junior-at-flagrant-2025-10-10&quot;&gt;if you’re catching up on what this is, learn more here&lt;/a&gt;) involved a roundtable sharing of Rose, Thorn, Bud. It’s a great activity in reflecting and learning about our teammates and the full, rich lives we each lead.&lt;/p&gt;

&lt;p&gt;Everybody shared at least one Rose, Bud, Thorn from their past week.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/delightfully-friday-junior-1.webp&quot; alt=&quot;Collage of post-it notes of the Flagrant team&apos;s Roses this week.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Rose&lt;/strong&gt; is a highlight, success, small win, or something positive that happened.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/delightfully-friday-junior-2.webp&quot; alt=&quot;Collage of post-it notes of the Flagrant team&apos;s Thorns this week.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Thorn&lt;/strong&gt; is a challenge you experienced or something you can use more support with.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/uploads/delightfully-friday-junior-3.webp&quot; alt=&quot;Collage of post-it notes of the Flagrant team&apos;s Buds for this week.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Bud&lt;/strong&gt; is a new idea that has blossomed or something you are looking forward to knowing or understanding more.&lt;/p&gt;

&lt;p&gt;This exercise was a great reminder that while we’re here for a job and have work to do, each person on the team contains multitudes of things that are weighing on them and bringing them joy in the day to day.&lt;/p&gt;</content><author><name>Lena Yen</name></author><category term="[&quot;consulting&quot;]" /><category term="DelightfullyFridayJunior" /><category term="WorkDoesntHaveToSuck" /><category term="FlagrantLife" /><category term="RemoteWorkVibes" /><category term="RemoteWork" /><category term="PhotoDump" /><category term="TeamBuilding" /></entry><entry><title type="html">Developer Roundtable - Clojurescript</title><link href="https://www.beflagrant.com/blog/developer-roundtable-clojurescript-2026-04-10" rel="alternate" type="text/html" title="Developer Roundtable - Clojurescript" /><published>2026-04-10T08:00:00-05:00</published><updated>2026-04-10T08:00:00-05:00</updated><id>repo://posts.collection/_posts/developer-roundtable-clojurescript-2026-04-10.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/developer-roundtable-clojurescript-2026-04-10">&lt;p&gt;This developer roundtable, Casey showcased learnings from his experience using ClojureScript. He is a senior UI/UX engineer and worked at Flagrant previously. He created a game with ClosureScript called &lt;a href=&quot;https://caseybrant.com/counterspell/#1501&quot;&gt;Counterspell&lt;/a&gt; that was inspired by Strands, the New York Times game.&lt;/p&gt;

&lt;p&gt;But first, what is ClojureScript? &lt;a href=&quot;https://clojurescript.org/&quot;&gt;ClojureScript&lt;/a&gt; lets developers write code in a style known as functional programming, and then run that code anywhere that JavaScript can (like web browsers). It is built on top of &lt;a href=&quot;https://clojure.org/&quot;&gt;Clojure&lt;/a&gt;, which is a programming language and a dialect of Lisp on the Java platform. ClojureScript uses immutable data structures, or more plainly, once you create information you cannot change it. Additionally, from what I have read from blog posts and related content, ClojureScript fixes a lot of pain points that Javascript has like inconsistent type comparisons, truthy/falsy inconsistencies and unintended type conversions to name a few. To read more about this, &lt;a href=&quot;https://www.freshcodeit.com/blog/what-is-clojurescript-and-why-do-you-need-it&quot;&gt;here is an article&lt;/a&gt; that goes more in depth than this surface level explanation.&lt;/p&gt;

&lt;p&gt;Now that we got the foundation for what we are talking about out of the way, let’s get into the meaty bits.&lt;/p&gt;

&lt;p&gt;Counterspell, the game Casey created to learn ClojureScript, had a main goal to create words on the board from the options of letter tiles. After you create 3 words, a score will show on the screen letting you know, scrabble points style, the amount of points left on the board. So, the goal is to find 3 words with the highest points so that the remaining letter tiles will be the smallest amount possible. He learned a lot about ClojureScript and here are some take-aways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Wins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interactive development:&lt;/strong&gt; The whole idea with interactive development is you are taking the notion of REPL (Read-eval-print-loop), all the way to its logical conclusion. You have your text editor and the running session connected to each other. Casey showed an example of the editor open and looking at all the state he had stored in one file (atom file). When changes were made on the running local server, you could see the states of variables, updating in real time. So if he were to select three letters in the application running on his local server, you could see those letters show up in this file live. And this is true also in reverse. If he makes changes on the variable states, those changes show up on the application that is running locally. Pretty neat!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure editing:&lt;/strong&gt; lisp code has all the parentheses and nested lists everywhere describing the tree structure of your program.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clojure immutable data structures:&lt;/strong&gt; As described above, if you describe a vector somewhere, you can count on that always referring to the same vector. Even if someone else comes along and tries to get another reference to that vector. This solves the errors that can occur if you have aliases to the same data structure and multiple places where you are editing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Frustrations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mental model error:&lt;/strong&gt; Conflating seq and vector.&lt;/p&gt;

&lt;p&gt;Sequence abstraction (seq) is one of the central organizing ideas to Clojure’s standard library. A seq is a logical list but it is specifically an abstraction. Like a vector or a list or an inherited Javascript type. The core definitions of seqs are: the function first, which gives you the first thing from the list, and rest, which gives you everything else. Sounds simple but the ramifications are super powerful. Important to know, seqs are lazy. Which means they’ll only evaluate members of the seq that you are asking about specifically.&lt;/p&gt;

&lt;p&gt;Vectors are ordered, indexed, immutable collections of values. A fundamental data structure in Clojure, kind of like arrays in other languages. But the big difference is the immutability. A property of vectors is that they are associative unlike seqs. You can care about any position on them, just like an array. Associative means that we’re mapping between key and values but Clojure takes it a step further and says, since vectors are mapping keys that are integers, they are also associative.&lt;/p&gt;

&lt;p&gt;The issues with the mental model error was thinking that seqs and vectors are interchangeable. This is obviously not true. The abstraction goes one way. Lots of confusion was had when working with vectors of vectors but using seqs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Big functions:&lt;/strong&gt; The base of this is more tactical. Mistakes were made due to being in an unfamiliar programming language. In functional programming, specifically Clojure, the functions are smaller than anticipated. In JavaScript it’s easy to write a big messy first draft and then pull out smaller functions from that bigger one. This is a mistake in Clojure. You want to start small and build the big out of the small. One of the big benefits for doing it this way, is you accrete an abstraction layer around your data by writing small functions.&lt;/p&gt;

&lt;p&gt;Overall, it seems like from the conversation that ClojureScript is a really nice expansion and allows for some awesome interactive development as long as you keep the underlying organizing ideas of Clojure in mind. Happy coding!&lt;/p&gt;</content><author><name>Amanda Klusmeyer</name></author><category term="[&quot;development&quot;]" /><category term="DeveloperRoundtable" /><category term="Clojurescript" /><category term="Lisp" /><category term="Development" /><category term="Counterspell" /><category term="REPL" /></entry><entry><title type="html">Welcome to Claudeville</title><link href="https://www.beflagrant.com/blog/welcome-to-claudeville" rel="alternate" type="text/html" title="Welcome to Claudeville" /><published>2026-04-06T08:43:00-05:00</published><updated>2026-04-06T08:43:00-05:00</updated><id>repo://posts.collection/_posts/welcome-to-claudeville-2026-04-06.md</id><content type="html" xml:base="https://www.beflagrant.com/blog/welcome-to-claudeville">&lt;p&gt;For the past couple of weeks, I’ve been reluctantly using Claude Code. This is “reluctant” for a host of reasons I don’t want to get into at the moment, because I don’t want to turn this into a diatribe or rant, or a series of rants (no promises). Instead, I just want to talk about what I’m experiencing.&lt;/p&gt;

&lt;p&gt;So first of all, why am I using it? I could say a lot about the genie being out of the bottle, or trying to keep up with the times, or whatever else. But the real truth is that I was deep in the doldrums and I was having a hard time thinking of what would make me feel worse. And I had access to an account, so I thought I might as well try it out.&lt;/p&gt;

&lt;p&gt;Now here I am, two weeks later, with my meds adjusted, and I’m still using it. And I’m still reluctant, but less so. However, no small part of that lessened reluctance has made the lateral-at-best move to wariness.&lt;/p&gt;

&lt;p&gt;And there’s the vigilance. So much vigilance. I’m doing so much checking and re-checking — verifying the code does what it should, and does what it says. Verifying the tests do what they say, and cover what they should. Verifying all this sticks to the plan.&lt;/p&gt;

&lt;p&gt;Yes, the plan. That’s one significant reason I started using this and am continuing. And it’s not &lt;a href=&quot;https://code.claude.com/docs/en/common-workflows#use-plan-mode-for-safe-code-analysis&quot;&gt;“plan mode”&lt;/a&gt;, but picking up a workflow I saw that really spoke to me. Let’s call it “ADR-driven development”.&lt;/p&gt;

&lt;p&gt;Seeing this pattern really made me think this could actually be a thing. Because I didn’t want to use these tools to do small things. And I didn’t want to use them in fully-autonomous ways. Really, even what I’m doing now feels too much like managing and not enough like building, &lt;em&gt;especially&lt;/em&gt; for someone who cares about &lt;a href=&quot;https://www.beflagrant.com/blog/the-six-layers-of-art-a-personal-journey-2023-02-16&quot;&gt;“the craft”&lt;/a&gt; as much as I do. But what else do I care about? I care about &lt;a href=&quot;https://www.beflagrant.com/blog/adrs&quot;&gt;ADRs&lt;/a&gt;. I care about documentation. And I don’t always have the time and energy to do these things when I also fall into the common trap of “working code is what matters”.&lt;/p&gt;

&lt;p&gt;So what’s “ADR-driven development”? It’s just a fancy name for using Claude Code to write up an ADR based on what I want to do. How does that compare to “plan mode”? I’m not 100% sure because I don’t use “plan mode”, but I gather the most-significant difference is that the “plan” lives in the session and is maybe saved in a file that could be who-knows-where, whereas an ADR lives and is tracked in the repo, in a directory of more ADRs that get created over time, so you can see a history of decisions and changes. If you can’t tell, I consider an ADR a useful artifact in and of itself, something worth saving and sharing.&lt;/p&gt;

&lt;p&gt;No small chunk of time and effort is spent creating that ADR. There’s the initial creation and reading it over, and then there’s the refinement loop of checking things out, suggesting changes, reading over the changes, checking things out, suggesting changes, &amp;amp;c. Sometimes “suggesting changes” takes the form of asking for clarification or fleshing out some points, and sometimes it takes the form of pointing out something in the ADR is just plain wrong, or there are inconsistencies. Sometimes “checking things out” takes the form of a quick jaunt into a console to see how some code works, and sometimes it takes the form of reading documentation, cross-referencing it with forum or blog posts, and going further than just a quick jaunt for the testing. In one case, where I wanted to consume and process webhooks, these two steps together took the form of giving up on documentation and capturing several real responses to feed into the context. This not only &lt;em&gt;finally&lt;/em&gt; got past a cluster of mistakes, but it also meant I had more useful documentation to save and share in the form of those sample webhook responses. And don’t worry — it was all staging / test data.&lt;/p&gt;

&lt;p&gt;It’s only when I’m satisfied with the ADR that I allow it to be committed, and then the next step is just to request an implementation of the ADR. But that’s only the &lt;em&gt;single very next&lt;/em&gt; step. That has its own check-suggest-read refinement loop, which can involve pointing out inconsistencies between the implementation and the ADR (and deciding which one should change), or finding more wrong things like bad assumptions when integrating with external services, or any of a host of problems from violating style guidelines (either personal or configured in the linter) to large structural issues. And for the most part, I’m checking everything over and reading it all myself, but I’m requesting Claude Code do the changes.&lt;/p&gt;

&lt;p&gt;I don’t know where the workflow will end up, but this is what I’ve been doing, progressing from an initial tentative dipping my toe in the water to making basically no edits myself. I’ve been going for an immersive experience, trying to feel out what the tool can do. It’s partly an attempt to adapt, partly an attempt to best use whatever energy I have for work after waking up in the morning and remembering that I live in this world.&lt;/p&gt;

&lt;p&gt;But it’s still tiring, and frustrating. And takes so much vigilance. Claude Code provides results that are so much better than any of my previous attempts, which were all painful and maddening: just arguing with a chatbot about the obviously-wrong things it’s doing, and having it go back and forth between previous wrong solutions as I attempt to provide more context. But sometimes better is worse? Those obviously-bad results were so easy to dismiss. The problems and mistakes I’ve been seeing here are smaller, subtler, more insidious. I need to be so careful and review so much.&lt;/p&gt;

&lt;p&gt;And what’s most tiring and frustrating is seeing what happens when people &lt;em&gt;don’t&lt;/em&gt; do this review, or neglect this vigilance. It’s tiring and frustrating to spend my time and energy being careful with 90-95% of this and get worn-out and sloppy for the last 5-10%, and that’s where I miss a problem. And it’s tiring and frustrating to have to spend my time and energy being careful with code someone else has produced using a tool like this, without checking it over themselves.&lt;/p&gt;

&lt;p&gt;And it’s tiring and frustrating to be well aware of the long history of complaints about new technologies, going back to the invention of the written word — famously (and ironically? or fittingly?) immortalized in &lt;a href=&quot;https://blogs.ubc.ca/etec540sept13/2013/09/29/socrates-writing-vs-memory/&quot;&gt;Plato’s &lt;em&gt;Phaedrus&lt;/em&gt;&lt;/a&gt;. So I know that I sound (and sometimes even &lt;em&gt;feel&lt;/em&gt;) like an old man shaking his fist at the clouds when I complain about this, but I also have some significant concerns. Three main ones, in fact:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Not understanding what’s going on with the code you’re producing and should be responsible for. I think it’s great to use higher-level things and appreciate the abstractions — I moved on from C and memory management long ago — but it’s not great if you don’t have an &lt;em&gt;understanding&lt;/em&gt; of what’s going on underneath it all, especially when things go wrong or &lt;a href=&quot;https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/&quot;&gt;the abstractions start to leak&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;People disparaging themselves and their own skills, also connected to anthropomorphizing the tools. Some people will have conversations with the tools, reach an understanding, and attribute that understanding to the tool. They’re essentially &lt;a href=&quot;https://rubberduckdebugging.com/&quot;&gt;rubber-ducking&lt;/a&gt;, but since it’s happening with something that talks back and affects a personality, they feel like it’s all external and not something they did themselves.&lt;/li&gt;
  &lt;li&gt;Depending on more external tools and services to do the work. No internet: can’t work. Payment stops: can’t work. Tokens ran out: can’t work. And this dependence being not on something that’s a commodity or a public good, but instead belonging to a private company with a vested interest in extracting as much value from you as possible.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I acknowledge that I may be a curmudgeon, and that caring about the craft doesn’t necessarily mean one particular thing. You’re not less of a woodworker if you use power tools or machines instead of hand tools, and you’re not less of a programmer if you use a higher-generation programming language instead of assembly (or &lt;a href=&quot;https://xkcd.com/378/&quot;&gt;binary&lt;/a&gt;). But this does feel different to me, and as a difference &lt;em&gt;of kind&lt;/em&gt; rather than merely &lt;em&gt;of degree&lt;/em&gt;. As I said before, I feel like I’ve been delegating and managing, rather than building. Other people might not feel that way, or they may be fine with it. I’m not a big fan. It does not spark joy.&lt;/p&gt;</content><author><name>Yossef Mendelssohn</name></author><category term="[&quot;development&quot;]" /><category term="claude" /><category term="ai" /><category term="building" /><category term="adrs" /></entry></feed>