oars
A rust library for orthogonal array generation and verification. It contains constructors for orthogonal arrays as well as functions that can verify whether a given point set is a valid (strong) orthogonal array. Development is currently in progress, as we are currently working on efficiently generating strong orthogonal arrays. The library is available at crates.io.
pcg-rs
A port of the PCG random number generation library, written in pure Rust.
nib
A WIP renderer written in Rust.
ensh
Ensh stands for “Enayet Shell.” It is a basic shell written in Rust, designed
to be modern and efficient. It is currently a stable viable shell for MacOS and
Linux. It uses Travis CI for testing and the Cargo package manager to manage
unit tests. At the time of writing (can’t always promise I’ll update this page
as soon as I update the project), the ensh
binary size is only 160K, which I’m
working on paring down.
I originally started this project to learn Rust, and learn Rust as a systems programming language. This project also taught me about process management in Unix and a lot about maintaining and deploying a product.
cttp
A multithreaded HTTP 1.1 server written in C. I wrote this to get a better handle
on BSD sockets and because I haven’t really written any code that deals with
networking. The server can handle a decent number of mime types, and functions
as a fairly basic HTTP server. It can receive GET
requests to a particular path,
and will serve the file from that path to a browser. The server is also
multithreaded (using POSIX threads) and can accept multiple connections at
once.
cttp
uses the pthreads
library and cmocka
to manage unit testing. Travis CI is used for deployment and testing.
afnan.io
A personal website/blog powered by Jekyll and Travis CI. Pushing to Github triggers a build from Travis, which ensures that the website builds properly. You’re looking at it right now!
Matasano Cryptopals Challenge
I am working on the Matasano Cryptopals Challenge, a set of challenges designed to teach some of the basics of cryptography. The challenges can be found here.
tiny search engine (TSE)
For a software development class, we created a small search engine in C. It downloads the contents of a webpage, indexes it, and ranks the results of a boolean query and displays it to the user. It follows the Unix development philosophy. At the instruction of our professor and Dartmouth College, the source code cannot be made public, but I can provide the source code upon inquiry. Email me if you want to see the source.
Android apps
FreeLoop
An app that replicates a guitar looper pedal for free. Available on the Play Store. Has over 6,000 downloads.
21.Days
Created with three other students at Dartmouth College, 21.Days is designed to help users consistently build a habit. It utilizes Firebase and good app design practices.
Minigma
An encryption app that utilizes Android intents to allow a user to send encrypted messages through any app on their phone. Download on the Play Store.
Battery Informatics
Provides diagnostic information about a phone’s battery, including charge capacity, temperature, and rate of discharge. Download on the Play Store.
MyRuns
A fitness/run tracker app created for a computer science class at Dartmouth College. Encourages good development practices, modularity, and MVC. Uses a variety of Google/Android services like location, accelerometer, and is multithreaded. Also uses machine learning to infer the type of activity a user is carrying out.