Educational implementations of fun software tools in TypeScript.
- oranguru: TypeScript implementation of the Monkey language from Writing an Interpreter in Go. Also referencing "An Introduction to Efficient and Safe Implementations of Dynamic Languages".
-
oranguru compiler: Writing a Compiler in Go
-
nit: TypeScript implementation of Git. Reference: Building Git (originally in Ruby)
-
bittorrent client: Originally in JavaScript
-
graph db: Dagoba.
-
Regex Engine: Originally in JavaScript
-
I find that translating books from one programming language to another forces me to really focus on what the code is doing. When I use the same language as the reference, I can get away with copy-paste coding.
-
I really enjoy programming in TypeScript.
-
I can take some artistic license in writing an "idiomatic" solution in the target language. This is stimulating/makes me feel clever. This is also why I refer to this process as translation, as opposed to transliteration.
- This is a good opportunity to get familiar with more Node.js apis. I want to make more Node.js tools, and reimplementing existing tools will surely give me some ideas. ts_deep_dives already birthed sPool, so I'm excited to see the quality of tools I create after I finish ts_deep_dives.
These projects are not at all intended to be production-ready or to provide any value over existing implementations. They will still feature comprehensive test suites and documentation for skills development. I will move any library that I think provides value over its competitors to its own repo (like Baahu).