It was Wednesday night. 10:30pm. I had just gotten home from a basketball game downtown I'd half-heartedly committed to weeks ago and completely forgotten about until that morning. I was still sick. I'd missed the gym three days in a row. The week had been sideways from the jump.

I opened the laptop to learn JavaScript anyway.

This is Week 3.

Week 1 runs on excitement. The new thing, the public commitment, the possibility of it all. Week 2 runs on momentum. You've already started, the system is working, the habit is forming.

Week 3 is different. Week 3 is just week 3.

Nobody tells you about this part. The build-in-public content you see online is either Day 1 energy or success story retrospectives. The middle, the ordinary, tired, sick Wednesday  doesn't get documented much. That's exactly why I'm documenting it.

The excitement wore off this week. I noticed it and I'm naming it, because pretending otherwise isn’t honest.

Day 17 was St. Patrick's Day. I was sick, tired, and running on fumes. I did a theory-only lesson and went to bed. Showed up. Moved on.

Day 18 was the basketball game. Long day at work. Still not feeling right physically. Ubered downtown, ubered back, walked in the door at 10:30pm. Sat down and did my hour anyway. Built a string formatter. trim(), toUpperCase(), camelCase conversion. Closed the laptop at 11:30.

Day 19 I finished Variables and Strings. All 101 steps. Complete.

Nothing heroic. No major breakthroughs. Just showing up in conditions that made showing up inconvenient.

The trim() Moment

This week I learned about trim().

It's a JavaScript method that removes whitespace from the beginning and end of a string. One line of code. Elegant, simple, obvious once you know it exists.

Week 1, I spent an entire session debugging phantom spaces by hand. Invisible characters I couldn't see were breaking my code. I found them eventually, the hard way, through trial and error and frustration. trim() would have fixed it instantly.

This is apparently how coding works. You learn the hard way first. You struggle through something that feels impossible. Then later (sometimes much later) you discover the tool that was designed exactly for that problem.

I don't think Week 1 was wasted. I understand trim() in a way I never would have if I'd learned it on Day 1. The phantom spaces have context now. The elegant solution means something because I know what it's replacing.

Theory → Confusion → Practice → Click.

The cycle continues.

Also, tweeting into zero audience is its own particular experience. A couple of fem-bots followed me though. Up to 10 followers now even if most of them are fake.

At least this week’s essay should be less trouble than last week’s. I spent an embarrassing amount of time trying to get my artwork to appear as a Twitter thumbnail. Fought with Beehiiv's OG tags, Twitter's card validator, and my own patience for about an hour before accepting that some things are platform limitations and not personal failures.

The artwork still isn't showing up in link previews. I attached it natively to the tweet instead. Move on.

I lost a follower somewhere in there. Gained my first real build-in-public connection — someone building a calorie tracking app, documenting his own journey. He replied to one of my tweets. We're both shouting into the void. At least now we're shouting in the same direction.

This is how it starts. Not with an audience. With one person.

Thursday night I completed Variables and Strings. The entire first section of freeCodeCamp's JavaScript curriculum. replace(), repeat(), the String Transformer workshop, the review, the quiz. Done.

It didn't feel like a milestone at the moment. It felt like Thursday. I closed the laptop, updated my tracker, and went to bed.

Maybe that's what progress actually feels like when you're building something sustainable. Not fireworks. Just Thursday becoming Friday with the work done.

20 days in. First section complete. Ahead of pace despite a sick, sideways, St. Patrick's Day week.

Week 4 starts Monday. Booleans and Numbers.

346 days to go.

What Changed This Week: The excitement wore off. I showed up anyway.

What Didn't Change: Everything else.

Keep Reading