Built with open source AI workflows from julep.ai

The Accidental Art of Writing Shit That Matters

Note: You can find hacker news discussion on this post here.

And, as usual, you can read the original chatgpt convo I had while writing drafts of this post, especially for the curious peeps interested in the generated artwork!

Two weeks ago, I wrote a blog post about using Claude Code in production. It hit the Hacker News front page, drove 87k unique visitors, forced me to upgrade Cloudflare, and, perhaps most importantly, shattered my deep cynicism about online content these days. This is that story, and what I learned from it.

In retrospect, what I (re-)learned was that good writing:

  1. Leads with genuine care
  2. Is instantly applicable
  3. Brings your unique take
  4. Solves problems you’ve actually felt
  5. Respects the reader’s intelligence
  6. (Bonus) Includes easy ways for readers to reach you

6 Wonderful Lessons (ty gpt-4o)6 Wonderful Lessons (ty gpt-4o)

Maximum Cynicism

I’d been using Anthropic’s Claude Code for months at Julep, shipping real features to production. We’d developed some techniques—like anchor comments that leave breadcrumbs for AI context—that genuinely transformed our workflow. Classic “scratch your own itch” material.

But when it came time to write about it, I was drowning in cynicism. Years of watching HN had taught me the choreography: post at the right time, get your friends to upvote early, craft the perfect clickbait-but-not-too-clickbait title. I’d tried it all before. It felt gross.

So this time? I just… didn’t. Wrote the post as a labor of love, dropped it on HN after my last edit, and went to sleep thinking “bah humbug, another post into the void.”

As I admitted in the thread:

“To be honest, I know there are like a bajillion Claude code posts out there these days.” - diwank

And yet:

❤️❤️

The Original Post (30-Second Version)

Joan Miro using Claude CodeJoan Miro using Claude Code

The post documented how we use Claude Code at Julep—not theoretically, but with “real users with real money on the line.” Three key ideas:

  1. Three modes of AI coding: Playground (quick experiments), Pair Programming (Claude drives, you navigate), and Production (structured collaboration with clear boundaries)

  2. Anchor comments: A simple technique where you ask AI to leave itself breadcrumbs in your codebase:

    • # AI-NOTE: Critical section - validate all inputs
    • # AI-TODO: Add rate limiting (ticket PLATFORM-892)
    • # AI-QUESTION: Why do we transform data twice here?
  3. Hard lesson: Never let AI write tests. We learned this after bugs in production skyrocketed because “all of the devs including me got realllyy lazy with testing.”

That’s it. No revolutionary framework. Just field notes from someone shipping code every day.

Going Viral (Accidentally)

Cloudflare dash since I posted the article
I woke up to a buzzing phone. Front page. Hundreds of upvotes. Comments like:

And, apparently, nobody told me to not do this:

Then came the plot twist: a moderator flagged it under the “AI-generated content” rule after I’d transparently mentioned using Claude to help edit.


Moderation Drama: A Win? ¯\(ツ)/¯

The community pushed back for me! Arguing the content was original, valuable, and honestly disclosed.



oka oka. keep goin’

yup.

ouch.


dang! (pun intended)
.
.
.

The mods restored it at the same rank.
yay!yay!

Who knew HN could be this dramatic, huh?

People are starving for genuine expertise about AI tools, not more hype or fear-mongering.

Let’s see. Final tally:

  • 354 upvotes,:
  • 87k unique visitors (1.14M requests!),:
  • my first comment got 57 upvotes (?!),
  • and the sweet, sweet realization that I’d been completely wrong all this time.

Why I Think It Worked

Looking back, the post succeeded because it followed timeless principles that I’d been too cynical to trust:

1. Lead With Genuine Care (You Can’t Give a Fake Damn)

The most powerful hook isn’t clever—it’s caring. And what’s reassuring, especially in our noisy world, is that genuine care still works.

I didn’t open with “10 AMAZING AI CODING TRICKS.” I started with vulnerability: how Andrej Karpathy’s joke about “vibe coding” stopped being funny when it became my reality. That transformation—from laughing at the idea to living it—was authentic.

Honesty and self-awareness created immediate trust. In my first comment, I admitted:

“To be honest, I know there are like a bajillion Claude code posts out there these days.”

Peter422 picked up on it:

“As a very experienced engineer… I really appreciated seeing how you use them in production in a real project. Your post is giving me motivation to empower the LLMs a little bit more.”

Here’s what’s both terrifying and liberating: you can’t manufacture giving a shit. You can polish prose and optimize titles, but readers smell authenticity from miles away. In an age of growth hacks, the fact that genuine care wins is profoundly hopeful.

2. Make It Instantly Applicable

There’s useful, and there’s “I can literally use this right now.”

The anchor comments are instantly useful, you can just copy-paste them into your CLAUDE.md file, and voila, you’re ready to go.

### Guidelines:  

- Use `AIDEV-NOTE:`, `AIDEV-TODO:`, or `AIDEV-QUESTION:` (all-caps prefix) for comments aimed at AI and developers.  
- Keep them concise (≤ 120 chars).  
- **Important:** Before scanning files, always first try to **locate existing anchors** `AIDEV-*` in relevant subdirectories.  
- **Update relevant anchors** when modifying associated code.  
- **Do not remove `AIDEV-NOTE`s** without explicit human instruction.  

Within hours, developers were implementing it. __mharrison__ jumped in: “I just tried this out with aider. It worked great. Vibe coded a PDF viewer with drawing capabilities in 30 minutes while waiting for a plane…”

Noufalibrahim captured it: “This was very practical and gives me a system I can try to implement and perhaps improve.” Not “interesting ideas”—a system to implement.

People later told me they’d made it required reading for their teams. That’s the multiplier effect: when something is so clearly useful that readers stake their reputation on sharing it.

People don’t bookmark theory. They bookmark things they’re going to use next Monday.

3. Share Your Journey (Not Just Information)

The post wasn’t “How to Use Claude Code” but “Field Notes from Shipping Real Code.” That positioning mattered.

I showed my progression: Playground → Pair Programming → Production. Readers could feel themselves in that journey because I showed how I got there, not where I ended up.

When kikimora asked about the 4-hour refactoring, I admitted:

“that didn’t include the testing, that def took a lot longer but at least now my devs don’t have an excuse for poorly written tests lol.”

That “lol” carries frustration, humor, the reality of managing a team. It’s human in a way that “testing phase extended timeline by 3x” could never be. And yes, I lol too much.

Your unique take isn’t your conclusions—it’s your entire path to them. Readers can Google “AI coding best practices.” What they can’t find is how you, specifically, wrestled with these tools and came away changed.

4. Solve Problems You’ve Actually Felt

Every technique I shared came from actual pain at Julep. When I said “Humans write tests, never AI,” notice the exhaustion:

“We ran into really bad minefields when we tried to come back to manually edit the generated tests later on. Claude tended to mock everything because it didn’t have context about how we run services, build environments, etc.”

The anchor comments technique was born out of frustration:

“We found some really gnarly things that had been forgotten in the codebase.”

Problems you’ve personally wrestled with have texture that theoretical problems never will. Your solutions have the specific shape of your specific pain.

5. Respect Intelligence (Don’t Dumb It Down)

Here’s the counter-intuitive discovery: by refusing to oversimplify for technical readers, the post became more accessible to everyone—including non-coders.

# AI-NOTE: Critical section - validate all user inputs before processing  
# AI-TODO: Add rate limiting (see ticket PLATFORM-892)  

No hand-holding. Just straight examples from production.

Yet people who don’t code emailed saying they finally understood what these AI tools actually do. Why? Because I respected their ability to grasp concepts through context and clear examples.

When explaining why AI shouldn’t write tests, I was blunt: “all of the devs on the team including me got realllyy lazy with testing. Bugs in production significantly increased.” A non-coder understands “lazy” and “bugs increased.”

Good writing isn’t about simplification. It’s about clarity. When you respect all readers’ intelligence, they rise to meet you.


Spectrum of Colors Arranged By Chance -Elsworth KellySpectrum of Colors Arranged By Chance -Elsworth Kelly

These aren’t tricks or hacks. They’re principles that work because they align with what readers actually want: authentic experiences they can trust, practical solutions they can use today, unique perspectives they can’t find elsewhere, battle-tested advice from real struggles, and the respect to draw their own conclusions.

The internet isn’t broken. Quality still wins. It just has to be real quality—the kind that comes from actually caring, actually struggling, and actually solving problems.

Turns out even in our noisy, hype-filled world, authentic writing genuinely connects. No gimmicks needed—just write with honesty, clarity, and a real desire to share something that matters.

Eudaimonia FTW

If Albers Painted Eudaimonia (ty gpt-4o)If Albers Painted Eudaimonia (ty gpt-4o)

Here’s what shattered my cynicism: the post succeeded precisely because I’d given up on making it succeed. No optimal posting time. No upvote coordination. No title A/B testing. Just solving a real problem and sharing what I’d learned.

Good technical writing has eudaimonia—focus on genuinely helping readers, and the metrics follow.

The Greeks had this word—eudaimonia— often translated as “flourishing” or “the good life.” It’s about things that are intrinsically good, not just instrumentally useful. Turns out the secret to virality is being useful. Who knew?

What I’d Do Differently

From yesterday
One regret: I had zero contact info or newsletter signup on the post. When 87k people visit, even a simple “reach out at email@” would’ve opened doors. Don’t be me—add a low-friction way for interested readers to connect while momentum is hot.

Oh, and compress your images. Someone pointed out my header image was 2.3MB and “loaded comically slowly even on wifi.” Rookie mistake.

Your Own Field Notes

What’s your take? (ty gpt-4o)What’s your take? (ty gpt-4o)

Does it look more like this one or that one to you??

If you’re sitting on hard-won technical knowledge, wondering if it’s worth sharing:

  1. A specific technique you developed?
  2. Your journey to adoption?
  3. Any limitations you discovered?
  4. The framework you use to think about it?
  5. Your authentic voice and experience?

No tricks needed—just the confidence to trust that good work (once polished with care) finds its audience.

The internet isn’t broken. Readers aren’t ruined. Quality technical content still wins.

Now if you’ll excuse me, I need to add a newsletter signup to my blog before lightning strikes again. (Update: added below)


Thanks to Ishita (my cofounder) and the Julep team for reading drafts of this. Shoutout to blot.im for creating and maintaining a delightful blogging service, and to Obsidian for being my new favorite editor.

Have an HN success (or failure) story? I’d love to hear it:

Want the full anchor comments framework? Check out the original post.