This and computer networks were my two favorite courses from university. My first language was Python, so the connection between programming languages and the machine had always felt like magic. This was the one course that helped dispel some of that thinking for me.
Each module builds on top of the next and has you add increasingly complex features to a toy language. The course I remember was flipped classroom, so it's also entirely possible to do online. On top of that, Jose's video lectures are very well-made and engaging. I would recommend anyone with some free time and even a bit of interest to throw it at this. It's a fun and eye-opening experience if you were like me and knew nothing about compilers before.
Honestly, I had a bit of impostor syndrome kick when you mentioned that the 330 course was required, being self taught and all... but I know OCaml so ¯\_(ツ)_/¯
Currently going through the Crafting Interpreters book and this seems like an excellent supplement for my journey into the world of language hacking.
Thanks a lot for posting those, they are very clear and encouraging!
Take a microprocessor class where you build a 8088/6800 board and program it in assembler. Then there is no more magic behind the computer and it becomes a pretty strait forward machine.
If you don't mind working with software emulation, nand2tetris takes you from logic gates up to a CPU, assembler, compiler. I'm working through the book: https://www.nand2tetris.org/book. It doesn't focus on an existing architecture like 6502 but focuses on simplicity instead to make the ideas really clear.
If you'd like to work with real hardware, +1 to the Ben Eater suggestion. He sells kits for all the components for an 6502 machine so you don't get bogged down in sourcing them. Great videos too.
(Quick edit, not 8086, showing my inexperience with hardware!)
I've got H&P on the bookshelf. It's the 'get down and dirty with a breadboard an x86 chip and maybe a soldering iron' aspect I am surfing for. 'Like Ben Eater but for x86', preferably as a course, is what I'm aiming at/curious about.
i think some logic design courses are like this. you're given a fpga dev board (that has a bunch of peripherals and ports on it) and you code up a cpu and a few memory/io controllers and then in order to do something you have to assemble some machine code and run it.
my understanding is that it is a substantial undertaking, especially if you're interfacing with hardware peripherals.
alternatively you could write a mips (subset) emulator and assembler in python and probably get the same understanding in a fraction of the time.
FWIW my echo failed smoke test when I tried with ngrok using the IP I got from dig. Strange thing is that the server still received the test payloads over ngrok, and my echo passes when hosted on EC2. Not sure if it's something with ngrok or if there's some other incompatibility (I'm a windows user :/)
A Jekyll site (that briefly became a React SPA at one point) with some blog posts, mostly reflections on my projects. I've been trying to expand into writing about other things.
A digital graveyard for projects I abandoned. I still wanted to write in Markdown but Jekyll felt like too much for one page, so I ended up writing a small static site generator for it using Jinja.
Late but I saw this in the morning and was gonna try my hand at compiling it but looks like someone already figured it out (congrats!).
I have a bunch of old Flash games from back in HS. Been watching Ruffle for a while as well since I've been wanting to make a page to preserve them but AS3 functionality just isn't there yet...
I really like this idea. I remember working through the Nand2Tetris course [0] which essentially has the same idea of letting you build a computer from scratch. The course's chip fabrication sections had a limited number of simple solutions, so designing chips really did feel more akin to solving puzzles than writing code.
One thing I'm curious about is how level progression works. Do I get standard implementations for the circuits I've previously made? Or do I have to carry my implementations with me for the rest of the game, bugs included?
Hi, my name is Jason.
I will be graduating in May and am looking for exciting opportunities. I'm a fast learner with a lot of enthusiasm for writing software.
Each module builds on top of the next and has you add increasingly complex features to a toy language. The course I remember was flipped classroom, so it's also entirely possible to do online. On top of that, Jose's video lectures are very well-made and engaging. I would recommend anyone with some free time and even a bit of interest to throw it at this. It's a fun and eye-opening experience if you were like me and knew nothing about compilers before.