Projects
This is a somewhat curated list of my projects. You can find more on Github, although I’ve used it as a dumping ground for random stuff.
Why Cryptocurrencies?
I self-published a book! It tries to explain what cryptocurrencies are, what they’re useful for, and why they exist in a very approachable manner. It exists in physical form, as a free eBook and it’s readable online. The book on the website is created with Pollen and Racket.
BitPal
BitPal is a self-hosted cryptocurrency payment processor It allows you to accept payments online using various cryptocurrencies without a third-party custodian, on your own hardware. It’s developed in Elixir.
T-34 Keyboard layout
I made a custom keyboard layout, designed for a keyboard with 34 keys. It’s been a fun project but it’s also helping me relieve my RSI.
MARC
This is a VHDL implementation of the Core Wars 88 standard. Core Wars is a computer game where two programs compete and try to destroy each other.
The programs may look like this:
; This program will copy a DAT instruction to every 4th line in the memory,
; hoping to catch enemy processes and kill them off.
;
; add 4 to the instruction at offset 3 (the DAT)
ADD #4, 3
; copy the instruction at offset 2 to relative location of
; the second field of instruction 2 (+4 lines after DAT the first execution)
MOV 2, @2
; jump back to beginning
JMP -2,0
; if a process tries to execute this line, it dies
DAT #0, #0
See the Core Wars wiki for more info.
Competitive programming algorithms
This is a collection of algorithms used in competitive programming. There are also slightly hacky commandline submit scripts for kattis and UVa. See my uHunt profile for a list of solved UVa problems.
// Bellman-Ford's algorithm for single source shortest path.
// Return a vector of pair<dist, parent>.
// Take in an adjecency list of type pair<node, weight>.
vector<pair<T, int>> ;
// Aho-Corasick's string matching algorithm.
// Return a vector of matching positions corresponding to the pattern index.
vector<vector<int>> ;
Games
Some fast game prototypes. Most were made in 7 days or 48 hours.