The Pivot
The Pivot
This one is harder to write than the others.
The weekly blogs were easy in a specific way. They had a container. Here's what I built, here's what was hard, here's what I learned. That structure did a lot of the work for me. What I'm about to write doesn't have that structure, because what actually happened over the past month wasn't really a week. It was a slow realization, a brutal finals week, a trip to Italy, and a decision that felt small when I made it and larger in retrospect.
So here's the honest version.
I finished the task queue sometime in the middle of March and immediately felt lost.
That probably sounds dramatic. It wasn't. It was quieter than that. More like sitting down at a table and realizing you don't have anything to put on it. I'd been building toward this system for weeks and now it was done and I had 90 minutes left and nothing to work on. The restlessness I'd been carrying through most of Week 10 didn't resolve when the project finished. It just became more obvious.
I spent a couple of days thinking about what came next. More networking was the natural answer. More projects in the same space, going deeper into the same territory. But when I tried to get excited about that, I kept bumping into something I hadn't quite named yet.
The networking problems that actually interested me, real multiplayer, simulations, systems where something physically happens and the network carries it, weren't pure networking problems. They required something to render. Something to simulate. A game, or a physics system, or at minimum a pipeline that could take 3D information and produce a 2D image. I had spent three months learning how programs talk to each other. I hadn't learned what to make them say.
There's a developer named Sebastian Lague who builds simulations from scratch and posts them on YouTube. Fluid dynamics, particle systems, boids, gravity. He writes the equations, runs the sim, and you watch real physical behavior emerge from real math. It's satisfying in a way that's hard to explain except to say: it's honest. The world on screen behaves the way it does because the equations underneath it describe how the world actually works. I'd been watching his videos for years thinking "I want to do that someday." Sitting there in the middle of March I realized someday had to mean something.
Not the networking layer. I understood that now. The rendering. The graphics pipeline. The part I'd been treating as someone else's problem.
It took about two days to get clear on the direction. A software renderer, built from scratch in C. No OpenGL, no GPU shortcuts, no libraries doing the work for me. The full pipeline: 3D world to 2D pixels, every stage implemented and understood. It sat underneath everything I actually wanted to build. This wasn't a detour. It was the floor I'd been missing.
I started on a Friday. Just reading, some planning, the first rough structure of the project. Nothing impressive. But having the direction felt like putting something down I'd been carrying without knowing it.
Then came finals week.
I had planned to keep going during finals. Lighter sessions, graphics research, linear algebra review, just staying in motion. That plan lasted until about 5pm on Monday.
I had two finals that day. By the time I got home I was hollow. I still had physics and ICS 46 to get through. The idea of opening a graphics textbook that night was not realistic and I knew it.
Tuesday was almost entirely studying. Physics was a notoriously hard final. The professor ran her class with no curve, no mercy, half the grade on the line for the final exam. I made it through and had nothing left.
By Tuesday night I stopped pretending. I wasn't going to do deep work this week. And here's the thing: I was okay with that, once I let myself actually look at it. I wasn't abandoning a project. I had just finished one. The timing was painful but it wasn't catastrophic. I could stop without losing anything. I could come back clean.
So I finished my exams and flew to Italy.
Ten days with Jadyn in Rome and Florence. We had planned this trip for months. It was exactly what it sounds like: narrow streets, old things, food that made sense of itself, the specific exhaustion of walking through somewhere that has been standing longer than most ideas. I didn't think about code. I didn't try to. I just went.
Being that completely off, no sessions, no output, no next thing to worry about, does something to you. You come back knowing what you actually wanted to return to. Not what you thought you should want. What you wanted.
April 2. Wednesday. Same table, same time.
I opened the Graphics folder from three weeks earlier. Few notes inside, rough structure, a plan I'd sketched in about an hour on Friday the 13th. I started where I'd left off.
First thing I built was a vector library. vec3, vec4, dot products, cross products, normalization. The unsexy foundation. The only place to start.
I'm not going to pretend the gap was easy or that the break felt great in the moment. Finals week was hard. Watching the streak stop was uncomfortable even though I knew it was the right call. But I came back, and the direction was still there, and that's what mattered.
Three months of networking. The pipes are built and I understand them.
Now I need to build something worth putting in them.
Related Posts
Week 10: When the Ground Shifts
Extending the task queue into file transfer and image processing — and realizing that networking is a tool, not a destination. Some weeks teach you through what you build. This one taught me through what I felt.
Week 9: Workers
Month 3 begins in Los Angeles at 6:30am. Building a task queue system from scratch: linked lists C can't template, fire-and-forget clients, persistent workers, and learning to spawn a thousand of them with one command.
Week 8: Prediction
Fixing the broken game. Client-side prediction, server reconciliation, a comprehensive reliability system, and the transformation from networking prototype to something production-ready.