Skip to content

Elements of Computing Systems Retrospective

Paul Mucur edited this page Aug 19, 2015 · 13 revisions

Just under 10 months since we started, this meeting marked the end of our adventures with Noam Nisan and Shimon Schocken, "Elements of Computing Systems (Building a Modern Computer from First Principles)". We celebrated by splitting the meeting into two parts:

  1. A show & tell for attendees to demonstrate code that they'd built along the way both inside and outside of the meetings;
  2. A retrospective on our experience with the book and the club in general.

Show & Tell

Chris began the show & tell by demonstrating his new hdl.js project:

As something he had been contemplating before joining the club, it was fascinating to see a live demo of his own hardware description language and see a visualisation of his graph-based approach unfold as he defined chips.

(Aside: the visualisations were produced by viz.js which renders .dot files as SVG in the browser.)

Kevin followed with a run-through of his Hack simulator written in Rust, wowing us (after waiting for Cargo to finish compiling things) with a working game of Pong. Tom highlighted how this Hack simulator had been invaluable while he was working on his VM test suites for earlier meetings.

Leo then demonstrated hack-js, a JavaScript implementation of the Hack platform. Like Kevin, he dazzled us with his Pong-playing skills but this time in the browser. We raised the possibility of using this to put a playable version of Pong.hack on our site; after all, Leo's optimisation efforts might make it easier on the CPU than our current cellular automaton header.

Leo also demonstrated a full end-to-end test of our software, from a high level program written in Jack to VM code to assembly to binary to running in the browser. In honour of the book's nickname—"NAND2Tetris"—he showed an elegant Tetromino, suspended in flight.

As a "One more thing...", Leo also showed us hack-x86, an implementation of the Hack platform written in C that compiles to ELF meaning that it could be used to boot an x86 system.

You mean you could put this on a floppy disk and use it play Pong in a high school during the '90s?

Flabbergasted, we watched as Leo demonstrated a poignant game of Pong in QEMU which, once finished, could only be attempted again by restarting the computer.

Adam then explained that attending the club had inspired him to write his own programming language: SwiftScript. Learning from CoffeeScript, he demonstrated lexing his language into Ruby data structures using a grammar written in Yacc.

Finally, Chris Lowis demonstrated a browser-based interpreter for Max Mathews' MUSIC programming language. Using Web Audio APIs, Chris was able to play a piece of music written in MUSIC that he had found printed in a manual from the '50s. We discussed the almost archaeological thrill of having no idea what the piece might sound like until the interpreter was complete.

Retrospective

Pub

Thanks

Thanks to Leo and Geckoboard for hosting.

Clone this wiki locally