I wrote a two-pass assembler for the Hack assembly language!
This is the sixth and final project of the first half (Hardware) of the Nand2Tetris course. In Project 6, the task is to write an assembler for the Hack assembly language. Unlike the previous projects which could only be written using the custom hardware description language (HDL) used by the ... → Continue reading
Continuing from where I left off in my Nand2Tetris journey, I went ahead and completed Projects 4 (Machine Language) and Project 5 (Computer Architecture) and I now have "built" my very own Hack computer from scratch!
Follow my progress on Github here: guru-das-s/nand2tetris.
This project introduces the Hack instruction set architecture (ISA) and assembly language ... → Continue reading
I created my own shell in Rust using the Codecrafters Build your own shell challenge.
As part of my ongoing efforts to learn by doing, I came across the course on LinkedIn and resolved to try it out using Rust, another goal of mine. Here's my experience of completing the challenge, and also my thoughts on the Codecrafters platform as ... → Continue reading
Nand2Tetris is a very interesting "learning by doing" free and open-source course that enables one to learn how a computer is designed from the ground up, and also how it is programmed from the very lowest of levels. It is a fantastic course offered in two parts (first building the hardware for the computer, and then the software) and is ... → Continue reading
This is the second in a series of blog posts related to some powerful features of
git
I've used over the years. Previously, I wrote about git rebase --onto
which
you can read here.
git
offers many powerful features, and one such feature I have used
extensively in kernel development is git rebase --interactive
. Here is what the man
page ... → Continue reading
On one of my daily trawlings of Hacker News, I came across Julia Evans' blogpost on
confusing git
terminology
that lists git rebase --onto
as one such confusing command. I had never used this
--onto
flag before and her description didn't really help me visualize the problem
or the solution.
I shrugged and let it go, not thinking much of ... → Continue reading
I recently had to learn Go. I was on a tight timeline of just about 4 or 5 days. I am familiar with learning Rust, and Rust by Example, so I found Go by Example. I found the format wanting for the absolute beginner level I was at, so I found the absolutely beautiful A Tour of Go instead. It ... → Continue reading
I just installed Visual Studio Code (VS Code) on my Arch Linux machine, and one
of the first things I did was to install the vim
extension.
I love vim
and so I needed its keybindings in VS Code. But it was missing a
couple of features I wanted, so I enabled them.
The shortcut to summon the Settings page ... → Continue reading
add-maintainer.py
I worked on adding a new script to improve the workflow of developers contributing patches to the Linux kernel. Here it is:
[PATCH v2 0/1] Add add-maintainer.py script - Guru Das Srinagesh
Its fate is yet to be decided - it's only at v2 now, and looks like there is already a mature tool named b4
that ... → Continue reading
I've always wanted my own website. Like, forever. Not Wordpress-like, but my own, written from scratch. I figured out that this meant that I would have to use a static site generator. This post is all about how I bought my first domain, chose a hosting provider, set up DNS correctly, generated my website's content, and set up auto-deploy ... → Continue reading