20 Sep 2025 #misc
I just had lunch. I’m standing in front of the counter to pay. But my bank app keeps loading.
I toggle airplane mode to make my phone reconnect. That’s how a coder fixes anything, right? Restarting everything… No luck. I had no choice but to pay with the last bucks I had.
With only two bars, I try to find the address of the closest Government office I need to visit. That’s why I had crossed the city. My browser shows a painfully slow progress bar. I only have two hours left before the office closes. It’s a Friday. This year the President passed an order to reduce the working schedule of all Government offices. I ask for directions. You know, anyone can get to Rome asking for directions, as we said in my hometown.
***
I make it to the office. Turns out, I wasn’t that far. It’s the first time I’ve done that errand. I need a copy of an official document. I explain what I need to the guy behind a protective glass. There are cameras on every corner. He tells me I need the document ID and the expedition date. I have them on my email. Oh, I can’t log in. Another loading animation. The guy tells me the major phone operator has had network issues all day long. He can’t use his phone either.
With less than one hour left, I start to walk around. I remember an old Internet room from my college days nearby. After walking around three blocks, I find the place. It’s a small shop with four old PCs to access the Internet. It felt like the early 2000s, accessing my Messenger account to chat with my friends using funny animations. I could access my email account to get the ID and the issuance date of the document I wanted copied.
***
I rush back to the Government office. I know I have to accept what Life sends me. But I’m not enjoying what I have in front of me. I slip a paper with the document ID and date under the protective glass. “These are the right numbers, but this wasn’t registered in this office.” Arrggg!
All that chaos just because I didn’t have reception. All I needed was a yellow-page phone book, pocket money, and a notebook instead of a smartphone connected to the Internet. Maybe analog wasn’t that bad after all.
19 Sep 2025 #mondaylinks
Hey there.
Here are 4 links I thought were worth sharing this week:
#1. With the raise of AI, we’re in a programming deflation (5min). “We’re watching the basic economics of software development transform in real time.”
#2. Typing isn’t (and hasn’t been) the bottleneck of coding. AI is making us thinkers instead of typers (4min).
#3. One of the things I hate about software engineering is estimation and story points. And guess what? Story points answer nothing (4min).
#4. And here’s how someone hosted a website on a disposable vaper (6min). Cool!
And in case you missed it, I wrote on my blog about the hardest lesson I learned migrating legacy code (again) (2min) and the one rule junior coders should follow to adopt AI (1min).
(Bzzz…Radio voice) This email was brought to you by… Check my Gumroad store to access free and premium books and courses to level up your coding skills and grow your software engineering career.
See you next time,
Cesar
Want to receive an email with curated links like these? Get 4 more delivered straight to your inbox every Friday. Don’t miss out on next week’s links. Subscribe to my Friday Links here.
18 Sep 2025 #career #coding
I definitely can’t escape from legacy code.
This time, it’s an old WebForms application written in VB. Yes, that old. It’s a family business. Dad started it. And years later, his two sons got involved. It’s funny when during the standup meetings I hear, “Hey Dad…”
The problem
The code is a mess. Sorry, I mean it needs a lot of care.
I don’t blame them. It was the easy route with WebForms. Just drag and drop, double-click, and dump all your logic. It’s just like that framework encouraged people to copy and paste.
I’ve worked with at least 3 legacy apps with WebForms. All of them were pure spaghetti code. Zero best practices. “Coincidence? I don’t think so.” (Insert Toy Story character wearing a chicken suit)
The code needs care, but the database needs even more attention.
It doesn’t have foreign keys, and queries don’t use JOINs. If you want to join two tables, one of them has a string column with a list of IDs separated by a pipe (12|34|56
). You fetch records separately and then loop through them to join them. Arrggg!
And please, let’s not talk about stored procedures…
The lesson
But from this project I’ve learned that if we don’t pay close attention to the initial database design, the backend side gets wildly crazy. A lot of hacks and patches to make up for a poor DB design.
There’s no need to go crazy with database normalization. Just:
- Every table should have an auto-incremented ID.
- Use a separate table instead of a column with a list of IDs.
- Keep data types consistent across tables. All “Status” columns should be either
BIT
or an INT
. Otherwise, conversions could go wild.
- Add audit fields (“createdAt” and “updatedAt”) to every table.
I wish they had followed those simple guidelines 10 years ago.
But more surprisingly, I learned that you don’t need a perfectly clean codebase to have a successful business. You will suffer? Sure. But running a business and writing good code are two completely separate skill sets.
17 Sep 2025 #misc
A long time ago, a friend asked me for a quote on a custom piece of software.
She and her friend wanted to start a marketing agency. And they wanted to build custom software to run it.
The problem? They didn’t have any savings or capital. And even worse, they didn’t have anyone to sell their service to. It was too early to build software.
I’ve been there too, on a different scale, coming up with value propositions and website copy for a freelance business I didn’t have yet. Later, it died with a single phone call.
After immersing myself in business podcasts and books, I’ve learned to:
- Come up with simple and cheap experiments to test a business idea
- Slap a price tag on whatever we’re building to see who buys
And simple experiments can validate big ideas.
The other day I watched a Diary of a CEO episode featuring a Netflix cofounder. How they validated their idea? He mailed a CD to his business partner to see if they could run a Blockbuster alternative by email. It was a cheap experiment. It worked.
Run experiments to learn, to grow, and to build something people really want.
16 Sep 2025 #misc
Back in August, I shared 7 content experiments I wanted to try.
As part of my daily routine, I write 10 bad ideas every day to keep my creativity muscles in shape. I wrote 10 ideas that day, but only posted 7.
I acted on some of those ideas. Here’s what I actually did:
#1. I redesigned the interior of my C# Idioms book. For the first version, I used Canva. Nothing wrong with Canva. But I wanted a more professional, less hobbyist design. So I added a copyright notice, an introduction, a table of content. The basics of a publishable book. Now, it’s available for $0.99. Next move? Offer it via Amazon.
#2. I uploaded all my coding courses to Gumroad. I have to admit the experience of Gumroad as a student isn’t as polished as Udemy for video courses. But it works well enough to show a video lesson with a description. Now, they’re available here: C# NullReferenceException Demystified, Getting Started With LINQ in C#, and Mastering C# Unit Testing with Real-world Examples.
#3. I packaged all my beginner’s material into the “C# Fundamentals Bundle.” That’s an ebook and more than 2 hours of video lessons to learn C#, at 20% off. It’s available here: C# Fundamentals Bundle.
After launching these, I notice a challenge: Gumroad doesn’t have a powerful discoverability feature. As creators, we can’t simply rely on Gumroad showing our products to users. At least, we shouldn’t expect it. We have to redirect traffic there ourselves. Now, my only source of traffic is my newsletter.
#4. I changed all prices to end in .99 and increased the suggested prices., I offer my books and courses as “Pay what you want.” I’ve received $1, $5, $7, $10, and $20 as payments. So I changed my current prices based on those anchor points.
Results? 10 free downloads and no sales. Not that bad. I learned about interior book design and practiced my copywriting skills. That’s helpful for any future project.