Vritually all my projects are me reading a book and trying stuff out. I guess I’m not there yet.
This is a collection of numerous Linux system programs in C. I wrote this following examples and exercises from the book The Linux Programming Interface. This was one of my first introductions to C and by far the most fun book on programming. C programming and operating systems, this book made me good at both. Some notable programs I wrote are listed in the README file.
A tree-walk intrepreter in Go for the Lox programming language I wrote following the book Crafting Intrepreters (you can read it online for free!). This book was a nice introduction to algorithm design and I got to write a big program in Go. I wrote tests and realized the importance of them.
The book then goes on to writing a bytecode intrepreter in C. I was able to write some of it, but too dumb to follow through completely. Because of that, I started learning about algorithms and maybe I’ll come back to it soon.
So yeah, there I landed. This consists of examples and exercises from the book The Algorithm Desing Manual.
Second program I wrote in Go. It was a lot of fun because it involved P2P networking and Bitcoin is a fun technology in general. I wanted to implement a Bitcoin client. I read the Bitcoin specification and the official Go implementation for help. I’d say I got pretty far with this say considering my skill level. Eventually, because of lack of tests, my shitty code organization skills, and, even though P2P was fun, my lack of algorithm designing skills meant I couldn’t do it, I had to give up.
Hugo source code that generates this website.
My very first program in Go. This was supposed to be something like a C&C server, but because it’s kind of in the legal gray area so I couldn’t pour my heart in it. I don’t know what it turned out to be in the end. Networking made it fun and it was a nice introduction to Go.
The first “real” program I wrote. Before this, the only programming I ever did was watching videos of someone coding and copying what they wrote. Inspired by some people, I decided to stop that and work on my own project using google for all I need to know. The fact that I didn’t have an idea about what to code couldn’t stop me because I could just implement something that has already been made and it’d still be a great learning experience. Again, networking made this fun. I read the Bittorrent specification, someone else’s python implementation, and a couple of text tutorials.
This was inspired by purtorrent and uses its code. It connects to a torrent and runs a nmap scan on each of the peers.
Inspired by the hutter prize, I wanted to write a compressor, but it ended up making files bigger.
Python scripts that have made my life easier. They have saved from numerous serious predicaments.
I guess I read Structure and Interpretation of Computer Programs at some point.
I don’t customize things much, but here’s what I have. I use neovim, tmux, bash, and awesome window manager.