stuff i've worked on

programs, configs, etc.

I occasionally write code or mess around with software in my leisure time. Here is a list of most of what's come of it. You'll find projects of all sorts: large, small; useful, useless; cool, dull. I come back to these a lot to see how I did things (e.g. gdq for selenium usage, spectro for SDL, etc.).

But first let's look at the configs.

configs


dot files

The best rice. i3-gaps, polybar, dunst; fast, clean, comfy.

Plebs beware: set -o vi

dmenu

Colors that don't cramp my style. Thank you suckless.

qubes - dom0

For the security-inclined readers: behold! my dom0 config. i3 (obviously), some good keybindings. Much still to add.

programs


hypershare

Interactive HTTP server. (First one ever?) Displays connections as they appear and disappear with lots of information. User can interactively affect server responses and kill connections. Helpful for sending/receiving files to/from friends.

fractal screensaver

Renders various parts of the mandelbrot set by default using implicit SIMD. Can render any sort of iterated-function plot.

bandstop

Detects and removes persistent high frequencies in audio files. More producers need to look at the spectro.

sdl spectrogram

Spectrogram written in SDL. Not very portable, but cool software nonetheless.

tty video player

Video player that displays pixels in a terminal buffer. Handy when no X server is available.

Warning: memory leaks ahead.

gdq member checker

For when I needed to get 3 tickets to GDQ. This checked the GDQ site every few seconds and notified me when spots opened up.

terminal stock plotter

Does what it says on the tin. Decently configurable.

Warning: abandonware.

wikipedia game solver

Fun problem, fun solution. Some nice thread-safe data structure ahead.

brainfuck interpreters

Two implementations! Two languages! Also created a fun text-to-bf converter.

halo 2: anniversary run timer [WIP]

Can't be bothered timing H2A runs by hand so I began to write this.

wave function evolution

Pre-good-at-C++ days: senior year of high school. But hey, it has libquadmath support (if you have a year to run it).

i am confused

Was burnt out one day. Who can't relate?

alexa skill: ports

I wanted a cool shirt so I decided to make a small Alexa skill. It never got accepted.

facebook message dump parser

Want to see what your earliest messages were on Facebook? Now you can!

Warning: cringe.

shoegaze

Nothing like some rain and soft music to calm the nerves.

lights

Found a screensaver on xscreensaver once. Thought it was cool, so I decided to see what I could do in SDL.

for uni


I can't share code publicly for most assignments, but they were fun to work on! Feel free to ask me about them. I have omitted some of the projects as there are simply too many to list. The most fun assignments were part of Operating Systems, so I think I'll start with them.

FTP server

Given that this is no longer assigned in the OS course at UVA, I have no problem releasing my code. I really like my work here. It implements all basic functionality including CDing. Check it out!

xv6 paging

As a part of Operating Systems, I implemented demand paging and copy-on-write page allocation in xv6, the pedagogical operating system used at MIT.

FAT32 reading

As a part of Operating Systems, I implemented a FAT32 filesystem reader. With mmap() it was quite simple but interesting.

renderers of all kinds

For Computer Graphics, I created basic 2- and 3-D rasterizers, a raytracing engine, a small webgl project, and more.

MeggyJava compiler

For Compilers, I created a feature-rich LALR(1) compiler for MeggyJava (a subset of Java) targetting AVR assembly using JLex and JCup.

Y86 processor

As a part of Computer Architecture, I created a processor in hardware description language called HCL that operates on the Y86 ISA.

SIMD image transformation

As a part of Computer Architecture in a somewhat collaborative effort, I created programs that smoothed and rotated images using SIMD to achieve significant perforance improvements (up to ~10x).

Essay: OS preparation at UVA

At the end of my TA practicum course in my fourth semester, I was asked how I would change the Computer Science curriculum at UVA. I was TAing OS at the time.

notes


When I was a first-year, I had a lot of free time. I decided to write some notes for Linear Algebra and Differential Equations. Although both are incomplete, my ODE notes are very detailed.

Ordinary Differential Equations

Goes until systems of differential equations. These notes practically substitute for a proper course on differential equations, I guarantee it. Why am I so confident? Because Prof. Jack Dorning was a fantastic lecturer, and these notes are effectively a transcription of his lectures.

Linear Algebra

Very incomplete, but the visuals may be useful. These were loosely based on Dr. Jonathan Osborne's lectures while having my memory refreshed by Prof. Meiqin Li at UVA.