~/work/web-ide

nand2tetris Web IDE

Six merged PRs in the official IDE of the Nand to Tetris course.

The nand2tetris Bitmap Editor with the letters RB drawn on the grid and the generated Jack code beside it

The problem

Nand to Tetris students build a computer from logic gates up, and they do it in a browser IDE. The Bitmap Editor, which students use to draw sprites for their Jack games, was a standalone 1,357-line HTML file that sat outside the React app.

What I built

  • PR #627: rewrote the Bitmap Editor (originally by Erik Umble) as a React page. New utilities encode each row as 16-bit two's-complement words and generate both Jack Memory.poke code and Hack assembly, and the drawing is saved in local storage.
  • PR #619: redesigned the Settings page and added the File System guide.
  • PR #615: replaced the CSS tooltips with a React portal that measures itself and picks the side that fits in the viewport.
  • PR #601: fixed a Jack compiler editing bug. PR #597 added the Bitmap Editor user guide, and PR #626 uploaded the course staff's updated user guides.
  • Outside the IDE: a release-packaging workflow for nand2tetris/projects (PR #6) and a browser grader that runs a project ZIP against the course tests.

Results

  • All 6 PRs were reviewed and merged by the maintainer and run on nand2tetris.github.io/web-ide.
  • Supported course learners on Coursera as part of the teaching staff.