Back to Blog
6 min
reflection

I Have a Confession to Make + A New Series to Start

I posted AI-generated content I didn't fully understand. Here's me making it right by actually learning every concept and explaining it in my own words.

Chauffeur KnowledgeLearning in PublicVulnerabilityAI-Assisted DevelopmentFrench Writing PlaygroundBuilding in PublicHonesty

I Have a Confession to Make + A New Series to Start

Published: November 27, 2025 • 6 min read

My people. My very dear future readers. I have a confession to make.

You see, this is hard because it exposes me. But oh well, I think I'll feel good after confessing.

Now if at this point you're wondering if I murdered anyone or robbed a bank, no I did not.

I just happened to fall victim to prioritizing speed of content delivery over taking the time to understand my work.

The Confession

If you've read 15 Questions a Senior Developer Might Have About the French Writing Playground Version 2.0, you'd probably think: "Omg Prisca, you're so smart! You know what pg_notify is and WebSockets and JWT sessions and Pusher/Ably."

Well, no. I do not.

A good chunk of that content is AI-generated.

Basically, anything covered there that I did not address in 5 Questions a Beginner Developer Might Have or 10 Questions an Intermediate Developer Might Have (which I actually took the time to write myself) was basically AI-generated.

I'm just a girl who knows how to use AI really, really well.

The Skill vs The Knowledge

Because of how much work I've done with AI, I've built such a strong intuition for it that I can get it to do almost anything I want for me.

And no, having an intuition for AI and understanding code aren't the same thing.

I can almost always predict when the model is about to go down the wrong path, even without fully understanding its implementation plan. But that prediction skill doesn't mean I understand the technical concepts it's implementing.

The Knot in My Stomach

Here's the thing. I mentioned in this blog post that I don't want to have chauffeur's knowledge.

Ever since I made that post, I've had a knot in my stomach because posting the senior developer Q&A is a contradiction of not wanting chauffeur knowledge.

For the beginner and intermediate questions, I sat down with the model and asked it to explain everything to me, then rewrote it to the best of my understanding while still trying to be as technical as possible.

However, you see that senior developer blog post? I don't understand some of the responses.

And even now, there are probably concepts in the intermediate questions blog post that have so much more depth that I probably should take more time to explore.

What I'm Doing About It

I took down the blog post yesterday temporarily, promising myself that I would spend time today looking through all the questions to make sure I fully understood them.

I did that for the first three questions and immediately realized: I need to do more than sitting down with the model to learn.

I need to take every single concept it explains to me, break it down, and re-explain each one with my own words. Not just re-explain, but try to find connections between them and what I already know.

I want to synthesize the knowledge from the responses to those questions to other areas of my life, and that way, I won't be the chauffeur of my code.

Introducing: The Battle Against Chauffeur Knowledge

So consider this blog post to be the launch of a new series.

I'm calling it "The Battle Against Chauffeur Knowledge."

I'll keep the original AI-generated post available, but you'll find that my responses should be a lot more enjoyable as I break them down to the level my little brain can understand and add a bit of ✨Prisca sazzz✨ to each response.

That way, maybe someone here will learn along with me.

The 15 Questions I'm Going to Actually Learn

Here is a list of all the questions, along with links to each dedicated blog post where I'll properly explain them in my own words:

Architecture & Design Decisions

  1. How does position-based correction highlighting work? Read my breakdown →

  2. Why choose JWT vs database sessions? Read my breakdown →

  3. How do PostgreSQL triggers with pg_notify enable real-time messaging? Read my breakdown →

  4. How does the theme architecture support 16 themes with SSR? Read my breakdown →

  5. What's the data normalization strategy for corrections vs stats? Read my breakdown →

Performance & Optimization

  1. How does the two-tier OpenAI evaluation system optimize costs? Read my breakdown →

  2. How are edge cases handled (perfect French text, position failures)? Read my breakdown →

  3. How does deterministic validation catch 70% of spam? Read my breakdown →

Scalability & Security

  1. What rate-limiting strategies would work for 10K users? Read my breakdown →

  2. How are concurrent writes handled in the database? Read my breakdown →

  3. What's the security model for the dangerous email linking flag? Read my breakdown →

Code Quality & Type Safety

  1. How does multi-layer validation work across client and server? Read my breakdown →

  2. How is type safety enforced with Zod schemas? Read my breakdown →

  3. What's the layered defense philosophy behind the architecture? Read my breakdown →

  4. What are the trade-offs of client-side vs server-side theme storage? Read my breakdown →

The Timeline

Please try not to judge me too much. I feel a lot of relief writing this post since I no longer have to pretend.

It is actually pretty good timing because right now, I have 16 days until the end of my SDR Era.

So I'll write one post per day for each of the 15 following days until December 13th.

By the end of this, I won't just be someone who can prompt AI to build things. I'll be someone who actually understands what was built.

That's the goal, anyway.

As always, thanks for reading!

Share this article

Found this helpful? Share it with others who might benefit.