So, the past few weeks I've been building a computer.
In my head and in software at least. See, I've been going through the fantastically written and wonderfully organized text The Elements of Computing Systems. And up until yesterday, I was travelling through it at an impressive clip -- one chapter/project a day, and I only missed a single day.
In two weeks I had gone from a single NAND gate to a functioning processor, an assembler on top of that, a virtual machine implementation on top of that, and then the syntax analysis half of a compiler for an object-based language on top of that. It really is fascinating to see how it all works together and builds on top of itself, especially since I have recently finished reading Code.
But yesterday I realized what I was doing. When the authors of the text use it to teach an undergrad course, they spend an entire week with three hours of lecture on a chapter and project assignment. I had been doing a week's worth of undergrad work in a night. I had gone through 10 weeks of undergrad material in 11 days. And it took a toll on me. I found myself feeling unhealthy, acting a bit distant in conversations, and just generally being bleary-eyed. I had been seeing patterns of VM code in my head. I had been letting my other tasks slip just so I could work on this course some more. And, I produced absolutely atrocious code for my compiler.
So yesterday I decided that I'm going to take a break from TEOCS for a bit. I intend on getting back to it, but to take my time with it when I do. There is no reason I can't spend two weeks on my compiler so I truly understand and can fix it rather than spending feverish nights up until 1:00 am just to finish it, and have it all disappear from my memory the next morning. When I come back to TEOCS, I'll rebuild my compiler from scratch, and take my time doing it. I'll approach it like a professional project rather than a hackfest. And most of all, I won't let it get me.
Don't let yourself get the best of you. Learn to breathe and relax. Most of all, don't be afraid to step away from something for a while.
Thanks for reading.