I'm Launching Street-Smart Coding: 30 Lessons to Help You Code Like a Pro (the Roadmap I Wish I Had Starting Out)

Street-Smart Coding cover
Street-Smart Coding: 30 Ways to Get Better at Coding Without Losing Your Mind

I spent five years in college learning to code.

A stupid dissertation delayed my graduation. But that’s another story.

Most of my five-year program didn’t prepare me for real-world coding. My real coding journey began at my first job, with one Google search: “how to get good at coding.”

I found a lot of conflicting advice:

  • “Use comments”
  • “Don’t use comments”
  • “Do this”
  • “Don’t do that”

Arrggg!

It took years of trial and error to learn what worked.

I had to survive on-call shifts, talk to stakeholders, and say “no” politely. More importantly, I had to learn that coding takes more than just syntax.

That’s why I wrote Street-Smart Coding— a roadmap of 30 lessons I wish I had when I started. For every dev who’s ever typed “how to get better at coding” into Google or ChatGPT. (Back in my days, I didn’t have ChatGPT… Wait, I sound like a nostalgic grandpa…)

Scrolling through the first pages of Street-Smart Coding
Preview of the first ~12 pages

Inside “Street-Smart Coding”

This isn’t a textbook. It’s a battle-tested guide for your journey from junior/mid-level to senior.

Some lessons are conventional.

Others were learned the hard way.

And a few are weird.

One lesson comes from a TV show. Nope, not Mr. Robot or Silicon Valley. That’s on Chapter #29. It will teach you about problem-solving.

You’ll learn how to:

  • Google like a pro
  • Debug without banging your head against a wall
  • Communicate clearly with non-tech folks

…and 27 more lessons I learned over ten years of mistakes.

Now they’re yours.

Get your copy of Street-Smart Coding here and skip the years of trial and error. For launch week only: Pay what you want—even $1 or $2.

Friday Links: Moltbook, Notepad++ compromised, and code sculptors

Hey there. It’s been a wild week in tech.

Here’s what stood up:

#1. This is crazy. The Notepad++ update server was compromised (7min) by Chinese state hackers for part of 2025. Patch yours right away!

#2. Now there’s a Reddit for AI: Moltbook…or whatever the latest name is. Here’s a breakdown of why it’s the most interesting place on the internet (7min). Imagine AIs ranting about their tasks. It seems they aren’t conspiring against us yet.

#3. AI isn’t replacing us, just changing our job description. Maybe we won’t be coders anymore. We will be code sculptors (2min). Imagine job descriptions: “Looking for a 10x Michelangelo to join our amazing family.”

#4. The only social media I use is LinkedIn. You probably found me there first. I avoid the feed though. If you want to jump in, here’s a guide on how to use social media mindfully (3min).


Thanks to the magic of the internet, a post from December got some traction last week. In case you missed it, here it is: what we could offer if AI finally takes over (2min).


(Bzzz…Radio voice) This email was brought to you by… Street-Smart Coding, 30 lessons to help you code like a pro. From Googling to clear communication, it covers the lessons you don’t learn in tutorials. It’s now out on Kindle and paperback on Amazon.

Until next Friday. Keep coding smartly

Cesar

The Numbers That Deflate the AI Hype About Replacing Coders—and Ease FOMO

Only 25% of developers regularly use AI agents, according to Sonar’s survey.

After surveying more than 1,100 developers across the globe, they found:

  • 90% of respondents use AI for assisting development. But only 55% of them rate AI as “extremely or very effective.”
  • 96% don’t fully trust that AI-generated code is functionally correct.
  • 48% always check their AI-assisted code before committing.

Why this matters: We’re flooded with headlines predicting the end of coders.

AI generating more than X% of code at a FAANG. One CEO suggesting nobody else should learn to code. To then retract himself saying that replacing senior coders with AI is crazy. And companies using AI innovation as an excuse for more layoffs.

Those numbers show CEOs spread panic to bump stock prices and fuel the euphoria. The real motivator isn’t productivity, but financial interest.

What to do: If you think you’re missing the whole AI movement, let the dust settle down. Double down on the fundamentals, not shiny objects. Maybe it’s time to pick Structure and Interpretation of Computer Programs or any classical textbook.

With 96% not trusting AI, code reviewing, clean code, and security remain essential. Don’t throw away your copy of Clean Code. And even if AI takes over, there’s work for human coders to do.

It’s easy to fall into the AI hype. AI wins on speed. But humans win on communication, collaboration, and problem-solving skills.

Street-Smart Coding covers some of those skills. Follow this roadmap to build hype-proof skills and become the kind of coder AI can’t replace.

TIL: Blazor Breaks When Others Touch the DOM

In another episode of Adventures with Blazor

Once more, I ran into the mysterious “TypeError: Cannot read properties of null (reading ‘removeChild’)”. But unlike the last time, it wasn’t a problem in a third-party component that we had to replace. It was my fault.

Wouldn’t it be great if the error message mentioned which property was null: an id, xpath, or CSS class?

This time, a modal created a record and showed a success alert. But after dismissing it and closing the modal, the page broke with the same error.

Here’s a Blazor page that recreates the scenario. A simple modal with a form that shows an alert bound to a _directorSavedSuccessfully. Notice the <div> wrapped around the @if inside the <BodyContent>.

@page "/directors"

<button class="btn btn-primary" @onclick="AddDirectorClicked">Add Director</button>

<ModalDialog Title="Add Director" @ref="_editDialog">
    <BodyContent>
		@if (_directorSavedSuccessfully)
		{
			<div class="alert alert-success alert-dismissible fade show" role="alert">
				Director saved successfully.
				<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
				@*                                      ^^^^^ *@
			</div>
		}

		<EditForm Model="_editDirector" OnValidSubmit="SaveDirectorClicked" id="directorForm">
			<InputText @bind-Value="_editDirector.Name" class="form-control" />
		</EditForm>
    </BodyContent>
    <FooterContent>
        <button type="button" class="btn btn-secondary" @onclick="CloseClicked">Close</button>
        <button type="submit" form="directorForm" class="btn btn-primary">Save</button>
    </FooterContent>
</ModalDialog>

@code {
    private ModalDialog? _editDialog;
    private bool _directorSavedSuccessfully;
    private Director _director;

    private void AddDirectorClicked()
    {
        _directorSavedSuccessfully = false;
        _editDialog?.Open();
    }

    private Task SaveDirectorClicked()
    {
        // Imagine we're calling an API here to save...
        _directorSavedSuccessfully = true;

        return Task.CompletedTask;
    }

    private void CloseClicked()
    {
        _directorSavedSuccessfully = false;
        _editDialog?.Close();
    }
}

Bootstrap removed the alert node directly, via the data-bs-dismiss="alert". But Blazor was still “tracking” it. So when the modal was closed, Blazor didn’t find the alert. Somebody else ate its cheese. And boom!

The solution? Don’t let anything else touch the DOM, but Blazor. Wire that alert to a variable controlled by Blazor.

-<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
+<button type="button" class="btn-close" @onclick="_ => _directorSavedSuccessfully = false" aria-label="Close"></button>

Et voilà! Let Blazor own the DOM.

For debugging and problem-solving tips, read Street-Smart Coding. And it’s even more relevant now in the era of AI-assisted coding.

My Phone Showed Me I was the Enemy of Boredom (4 Ways to Embrace It)

I can’t remember the last time I stared at the ceiling, wondering “what should I do now?”

Growing up without smartphones or tablets made me a friend of boredom. I lived on a main street of a small city. When bored, I counted passing cars in my front yard. Sometimes, I competed with my uncle and sister. The one who counted more cars of a certain color won. Yellow taxis weren’t allowed.

Years later, with an iPhone, work, and side projects, boredom turned into an enemy. I’ve had to work to bring it back.

What I’m doing to be bored again

The other day, I had so much on my mind that I had to sit and do nothing. That was my wake-up call.

To welcome boredom again:

#1. Less phone time. I’m reducing my phone time. Now my phone is in another room. There are books where I used to put it. And I’m writing this with pen and paper first.

#2. A “do nothing” slot. Apologies for the irony, but I’ve set an alarm in my phone labeled, “Mandalas afternoon.” I used to color mandalas during my lowest emotional season. I need to change that label. It should be “do nothing afternoon” and honor it. Not that coloring mandalas is a bad idea.

#3. Walking outdoors. For my physical and mental health, I go running next to the ocean. I’m planning to buy an analog watch (a classical Casio. Anyone else?) and leave my phone at home or put it inside my bag in silent mode.

#4. An Amish hour. I’ve moved my book reading time to one or two hours before bed, away from screens. One evening, after a coffee with a friend, too much caffeine and late-night writing kept me awake for hours. So no more screens before bed. The next challenge: an Amish afternoon. Or even an Amish day. Why not?! I’ll just need to write my daily post in advance.

Forget the Hit Book. Write a Series

“Is there a next part? Are you covering the next stage after being a good coder?” a friend texted me.

He finished Street-Smart Coding, my first book, and was eager for more. A reminder of a marketing lesson I had forgotten.

The best way to promote your book is by writing another one.

I first heard this surprising strategy on James Altucher’s podcast.

Nicolas Cole, author of The Art and Business of Online Writing, teaches the same strategy.

On his YouTube channel, he advises building a portfolio of books instead of chasing one big launch. When readers finish and enjoy your book, they want more. One single title after a big launch doesn’t meet that need.

That’s what happened to my friend after reading my book. And that’s more encouragement to work on the next one.