Summary of recent reading(July-September 2020)

* Tiassa by Steven Brust: Part of the Vlad Taltos series. This one was really good. It is written from the perspectives of different characters in the story– not first-person like the other books in the series, but the focus shifts between different different people in each chapter, and you get…

Summary of recent reading(April-June 2020)

* Deep Work(Audiobook) by Cal Newport: Somewhat of a re-read. I read most of the book a few years ago but never finished it. Like most of the books in the category, most of the value from reading this book comes just from getting nudged into assessing the things you…

Summary of recent reading(January-March 2020)

* The Start-Up of You by Reid Hoffman and Ben Casnocha: A career book by a LinkedIn cofounder. Emphasizes networking as an essential tool to advance your career; unsurprisingly advocates using LinkedIn to do this. * Ultralearning by Scott Young: The book describes an approach to learning by immersing yourself in projects…

WebAssembly branching instructions, by example

I have been familiarizing myself with WebAssembly by writing small WAT files and looking at the WASM output for some simple C functions. WebAssembly Studio is a great tool for doing this kind of exploration. Branching in WebAssembly takes some getting used to– for one thing, the target of your…

Summary of recent reading(October-December 2019)

* Issola by Steven Brust: [spoiler]<span class=”spoiler”> The Jenoine, the alien species that created Dragaerans and who once ruled the earth, kidnap Morrolan and Aliera in order to try to get Vlad to kill Verra. This turns out to be part of a bigger plan to use…

On porting code

Of late, my main side project has been rug, a stripped-down Git implementation which I’m building in Rust. I’m following along James Coglan’s excellent book Building Git where he lays out how he went about building the same project, in Ruby. <img src=”/images/rug-status.png”…

Piping output to a pager

When you run git diff on a project where you’ve made more than a screenful of changes, the output is automatically redirected to a pager and you can browse through your changes using the familiar less interface. This post shows a minimal example piping output to less. To achieve…

Myers' Diff Algorithm in Clojure

If you’re a programmer, you’re probably fairly comfortable with understanding and interpreting diff patches of the kind that git and other version control systems use. In this post we’ll walk through a Clojure implementation of the Myers’ diff algorithm, which is the algorithm used by Git. I…