🎵

DISASTER LOG

Every build breaks before it works. This is where I document the breaks — what failed, how long I was stuck, and what changed after. No cleanup. No retroactive wisdom. Just what actually happened.

BITS & BUILDS — THE SITE NOBODY COULD NAVIGATE

Shipped my portfolio and immediately got the same note from multiple reviewers: the navbar buttons didn't work. Projects, About, Goals — all broken. I'd been testing it myself the whole time and somehow never caught it.

"The topbar isn't fully working, the music button isn't working either, when I click a project, I don't get redirected." — Voter #8

I learned that testing your own work is almost useless because you already know where to click. Fixed the nav links, music toggle, and project redirects. But the real lesson was that testing your own work is almost useless because you already know where to click. Now I always get at least one fresh pair of eyes before I ship anything.

EGG TIMER — WHEN AI WRITES YOUR CODE AND YOU DON'T UNDERSTAND IT

I wanted pixel art animations — little eggs bobbing and flickering based on the timer stage. Canvas animation was new territory so I asked AI to generate it. It worked. But I had no idea what any of it was doing, and it didn't match my codebase at all. I'd shipped a feature I couldn't explain

I went through the code properly and made sure I understood what each part was doing before I let it stay in my project.

I rewrote the entire animation in my own style after learning how requestAnimationFrame creates a smooth loop, how Math.sin generates the bobbing motion, and how clearRect wipes the canvas each frame. Then I rewrote it from scratch to match my own code. The final version does exactly the same thing as the AI-generated one — but now I can explain every line. Using AI to understand something is fine. Using AI to ship something you can't explain is a different thing entirely, and I won't do that again.

SATSCOPE — BUILDING A 3D SATELLITE IN THREE.JS (IN PROGRESS)

An interactive 3D satellite explorer using Three.js — a full satellite built from code and geometry, orbiting a textured Earth with 6,000 scattered background stars. Each component (solar panels, antenna dish, thrusters, payload, star sensor) is clickable and shows real information about what it does.

Mostly typos and wrong variable names in the geometry setup. The antenna dish shape is built using LatheGeometry — you give it a list of points tracing a curve, and Three.js spins it into a 3D bowl automatically. Getting the curve coordinates right took a lot of trial-and-error on position and size values. I'm getting faster at spotting these, but they still eat time.

Instead of writing the same thruster code four times I put it in one function and called it four times with different positions. If I want to change anything, I only change it in one place.

Three.js forces you to think in 3D space — position, rotation, scale on three axes, and getting things to sit correctly relative to each other is genuinely hard. Biggest lesson so far: repetition in code is a warning sign. When I found myself writing the same thruster geometry four times, I stopped and refactored. That instinct to clean up before moving forward is something I'm actively building.