Joshua

CTO @ Encamp
jmoyers@gmail.com

Stanford Compilers

Posted on June 05, 2016

Welp, still on the journey down to the hardware. Now that I've got the nand2tetris class on building a computer from nand gates out of the way, its time to dive into compilers. Update 2019: Looks like this coursera link is dead, I'm sure the course can be found though! I've decided to take Stanford's Coursera offering, though I've got a few reservations about it. First, it focuses quite a lot on formal definitions of languages and grammars. This means its using set notation and big unwieldy greek...

More

Building a Computer From NAND Gates 🔨

Posted on June 04, 2016

Course: http://nand2tetris.org/ My Computer (hdl): https://github.com/jmoyers/nand2tetris My Hack Assembler (rust): https://github.com/jmoyers/hack_assembler So I was able to build a baby computer in a hardware simulator. I learned quite a bit about how CPU's are designed and how they interact with machine code and assembly language. Finished this 6 week course in 5 days due to binge (🌙). I was able to write an assembler in about 500 lines of code including some static lookup tables. This assembler targets the...

More

Minimal Tmux Dev

Posted on June 02, 2016

If you are currently in a anti-IDE frame of mind (which I cycle into from time to time), tmux can be a useful way to use vim and also retain the ability to look at several pieces of output ... without a bunch of floating terminal windows hitting C-z and typing fg over and over. Current Setup I went through a period on intense tool customization, but I find it pretty hard to pick back up on all the little customizations if I walk away from a toolset for a while. I've since been wary of keeping too many dotfiles....

More

The Elements of Computing Systems

Posted on May 29, 2016

Coursera: https://www.coursera.org/learn/build-a-computer Original Site: The Elements of Computing Systems This course is run by some guys from the Hebrew University of Jerusalem. Its about building a computer from nand gates in a hardware simulator, building an assembler, programming language and a kernel from first principles. So far its been very interesting and informative - I've made it through to the third project in about 2 days or so of work. I posted this in their forums as a suggestions, but the only...

More

Fork() Is Weird

Posted on May 27, 2016

Update 2019: Coursera killed every course permalink. ??? I was working through lecture 59 of the UW hardware software interface course and got interested in the origin of the fork-exec model for process management. In case you didn't know, fork is a way of creating a process in Unix-like systems. I have known this for a long time. I never really thought about how it works, though. It turns out, what it does is create a 'copy' (optimized to copy-on-write later on) of the existing program and returns the new process...

More