There is a moment in every campaign when the map stops being theory and becomes terrain. In Part I, I charted the world as the browser sees it, a living system that interprets, corrects, and occasionally forgives. That was the map. This is where I start building on it. A map without structure is just suggestion. If Part I defined the shape of the world, Part II defines what stands within it. This is where the bones of the realm are laid down. This is where intent becomes structure. This is where semantic HTML begins to matter in a way that no amount of styling can compensate for later. I…
-
-
I have spent this entire journey studying the laws of the realm, mapping the terrain, refining my tools, and teaching how to shape CSS with intention instead of desperation. I did not start as a master of this system, but I learned early that CSS rewards structure and punishes neglect. What often feels like chaos is usually a system that has been misunderstood or slowly abandoned. There comes a moment in every long campaign when the thing you built to serve you begins to turn. The fortress becomes a labyrinth, the spellbook becomes unreadable, and the stylesheet becomes the monster. I have seen it happen more times than I care…
-
I remember the moment I realized my stylesheet had turned against me. Not in some dramatic, catastrophic way, but in that quiet, insidious way where every small change required just a little more effort than it should. A color adjustment meant hunting through half a dozen selectors. A layout tweak broke something three components away. The cascade, once a trusted ally, had become unpredictable. It felt like opening a spellbook I had written myself and realizing I could no longer follow my own incantations. That is the moment refactoring begins. Refactoring is not about starting over. It is not about rewriting everything into something cleaner for the sake of aesthetics.…
-
When I first began to understand the cascade, I felt like I had discovered the laws of the realm. In Part I of The CSS Codex, I explored how order, origin, and importance determine which rule prevails. Yet even after learning those laws, I found myself trapped in a darker chamber of the style sheet. Specificity. Specificity is the dungeon beneath the castle. It is where good intentions go to duel each other. It is where a humble utility class is crushed beneath a towering chain of selectors. It is where developers whisper the forbidden incantation of important and hope no one notices. I have been there. I have written…
-
Understanding the rules before bending them. CSS is often treated as unpredictable. Styles override each other. Layout shifts unexpectedly. Developers respond by increasing specificity, rearranging rules, or layering fixes on top of fixes. The problem is rarely CSS itself. The problem is mental models. The CSS Codex is a structured 4 week, 12 part series designed to build a clear, scalable understanding of how CSS actually works. Each article builds on the previous one. Every concept connects forward and backward. By the end, the Codex forms a cohesive system rather than a collection of isolated tips. This is not about tricks.It is about rules.It is about discipline.It is about building…
-
If you have ever played a long running Dungeons and Dragons campaign, you know that the party rarely falls apart because the fighter showed up in plain armor and swung a dependable sword. The chaos usually starts when someone insists on building a wild multiclass sorcerer bard warlock experiment that only works under a full moon during initiative order. I have learned that software development works the same way. The code that saves projects is rarely flashy. It is steady, readable, predictable. It is, in the best possible way, boring. Early in my development journey, I chased cleverness. I wanted elegant one liners, intricate abstractions, and patterns that made other…
-
When I started teaching, I thought my job was to know the material. Know it cold. Know it forward and backward. Be ready for every question. What I learned instead is that knowing something and explaining something are two very different skills. That realization followed me back into software development. In the classroom, I could solve a problem in my head in seconds. But when I tried to explain it the same way I solved it – jumping steps, skipping assumptions, compressing logic – I would lose half the room. The students weren’t confused because the material was impossible. They were confused because I had teleported from A to D…
-
I used to think that if my JavaScript ran without errors, I had done my job. If the feature shipped, the console stayed quiet, and the tests passed, I’d mentally roll for loot and move on. Victory secured. XP gained. On to the next quest. But somewhere between shipping features and revisiting old projects, I started noticing something uncomfortable: working code is not the same thing as readable code. And readable code is the difference between a clean campaign journal and a pile of crumpled notes written during combat. One of the first times this hit me was with a small function that filtered active users and displayed their names…
















