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.
The best rice. i3-gaps, polybar, dunst; fast, clean, comfy.
Plebs beware: set -o vi
Colors that don't cramp my style. Thank you suckless.
For the security-inclined readers: behold! my dom0 config. i3 (obviously), some good keybindings. Much still to add.
Renders various parts of the mandelbrot set by default using implicit SIMD. Can render any sort of iterated-function plot.
Detects and removes persistent high frequencies in audio files. More producers need to look at the spectro.
Spectrogram written in SDL. Not very portable, but cool software nonetheless.
Video player that displays pixels in a terminal buffer. Handy when no X server is available.
Warning: memory leaks ahead.
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.
Does what it says on the tin. Decently configurable.
Fun problem, fun solution. Some nice thread-safe data structure ahead.
Two implementations! Two languages! Also created a fun text-to-bf converter.
Can't be bothered timing H2A runs by hand so I began to write this.
Pre-good-at-C++ days: senior year of high school. But hey, it has libquadmath support (if you have a year to run it).
Was burnt out one day. Who can't relate?
I wanted a cool shirt so I decided to make a small Alexa skill. It never got accepted.
Want to see what your earliest messages were on Facebook? Now you can!
Nothing like some rain and soft music to calm the nerves.
Found a screensaver on xscreensaver once. Thought it was cool, so I decided to see what I could do in SDL.
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.
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!
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.
As a part of Operating Systems, I implemented a FAT32 filesystem reader. With mmap() it was quite simple but interesting.
For Computer Graphics, I created basic 2- and 3-D rasterizers, a raytracing engine, a small webgl project, and more.
For Compilers, I created a feature-rich LALR(1) compiler for MeggyJava (a subset of Java) targetting AVR assembly using JLex and JCup.
As a part of Computer Architecture, I created a processor in hardware description language called HCL that operates on the Y86 ISA.
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).
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.
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.
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.
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.