I'm a math dropout, now self-taught software engineer who has been spending the summer filling in gaps in my CS education. Programming language implementation finally started to click for me -- bytecode interpreters and compilers are much less intimidating for me than they were several months ago. And now having implemented my own (toy) interpreters, I'm interested for the first time in understanding some of the nitty gritty details of how hardware components work. So I started working through the nand2tetris projects and tinkering with breadboards, and wow. This stuff is so much fun! I'm bummed I didn't start sooner<p>I never really imagined I would be interested in this stuff, much less find it kind of beautiful. Pure math brain, if you aren't careful, can train you to view anything applied with disdain, and something as earthy as hardware even moreso. But it's kind of beautiful how there are deep and inevitable connections between some of the most abstract theory computer science has to offer (plt, pl design and implementation) and the way physical objects are harnessed for computation. I guess if you consider that von Neumann was a mathematician first and foremost then it starts to make more sense<p>Either way, I'm having a great time -- definitely recommend anyone in a similar position learn this stuff whenever you're ready for it