Skip to main content

Projects

· 4 mins
Ryan Gibson
Author
Ryan Gibson
Quantitative Analyst | Computer Scientist
Table of Contents

Below is a list of some personal, academic, and open-source projects I’ve worked on in my free time, outside of the content available in Posts and Extra. They span a wide range of technical interests across computer science, mathematics, and finance.

Each section is roughly in reverse chronological order, to the extent feasible.

Projects
#

SMS-MMS-deduplication
#

Tool to remove duplicate text messages (SMS/MMS/RCS) on a phone arising from multiple backup agents conflicting with each other.

GitHub repository

media-gallery-compressor#

Tool to compress the entire set of photos and videos across several directories without any perceptible loss of quality, where beneficial. Supports various resolution, JPEG, and video codec configurations for typical compression rates of ~60% - 90%.

GitHub repository

levy-stable-benchmarks
#

Benchmark to assess the accuracy of Python libraries in computing fat-tailed stable distributions, which are useful in financial modeling but intractable to implement perfectly.

Used for improving multiple open source projects and identifying an error in the most widely cited reference paper in this space, which has been corrected by the author in a new textbook.

GitHub repository

Steganography
#

Tool for hiding messages or data inside the content of other files and simple “steganalysis” for detecting such manipulation. Supports least significant bit steganography in bitmap images (.bmp and .png), WAV sound files, and byte sequences.

GitHub repository and related post

ModularityPruning
#

Pruning tool to identify small subsets of single-layer and multi-layer network partitions that are significant from the perspective of stochastic block model inference.

GitHub repository

real-time-simulator
#

Experiment to analyze the effectiveness of various real-time scheduling policies in the presence of context switching and cache warming overheads. Also led to a conjectured extension of the PD^2 scheduling algorithm to jobs with arbitrary deadlines.

GitHub repository

DRRRT-motion-planning
#

Experiment to analyze the benefits of using “Dynamic Region-biased Rapidly-exploring Random Trees” in complicated robotic motion planning environments, as compared to simpler alternatives.

GitHub repository

MFCC-speech-recognition
#

Easy-to-train machine learning (neural network) architecture to support speech command recognition on extremely low-end, commodity hardware. Achieved near state-of-the-art classification accuracy and real-time performance on systems ~10,000x slower than a typical desktop CPU.

GitHub repository

CUDA-k-means
#

Implementation of Lloyd’s k-means algorithm for data clustering, including a comparison of CPU, standard CUDA, and atomic CUDA implementations.

GitHub repository

linux-page-fault-experiment
#

Experiment using a custom-written kernel module to analyze page faults on a modern Linux system resulting from random, sequential, and striding file access.

GitHub repository

miniJava-compiler
#

A compiler for a subset of Java as well as an abstract machine and test suites. This includes syntactic analysis, AST construction, type checking, and code generation.

GitHub repository

FPGA-Asteroids
#

Full design for a 32-bit single cycle MIPS CPU for use on FPGAs and a handwritten assembly implementation of “Asteroids” that runs on the CPU.

This supports keyboards, VGA displays, accelerometers, mono audio, LED lights, and 7-segment displays.

GitHub repository

Open Source Contributions
#

Below is a list of some larger contributions to projects I do not own.

I’ve also made smaller contributions to many other projects, including Pandas, Manim, Ollama, QuantLib, MiKTeX, and several Hugo themes.

SciPy levy_stable
#

Improved performance and accuracy of the world’s most widely used Python library for scientific computing, focusing on stable distributions, which are particularly useful in “fat-tailed” financial modeling.

SciPy website, GitHub repository, and pull request

leidenalg optimization
#

Significantly improved performance of popular community detection (graph clustering) toolkit for ~2.5x overall speedup. A related ~50x speedup for multi-layer, “multidimensional” networks was rejected due to generalizability concerns.

GitHub repository and pull request

Research and Publications
#

R. Gibson and P. Mucha, “Finite-state parameter space maps for pruning partitions in modularity-based community detection”, Scientific Reports, vol. 12, no. 1, 2022. Paper and GitHub repository

T. Bodenheimer et al., “FastPG: Fast clustering of millions of single cells”, 2020. Preprint: 10.1101/2020.06.19.159749. Paper

R. Gibson, “Conference Poster: Parameter Space Maps for Pruning Modularity Partitions”, SIAM Workshop on Network Science 2020 (NS20), 2020. Poster and lightning slide

R. Gibson and P. Mucha, “On the Robustness of Pruning Sets of Modularity Partitions Via Stochastic Block Model Inference”, University of North Carolina at Chapel Hill Master’s Thesis, 2019. Integrated into Supplementary Information.

E. Lee, S. Emmons, R. Gibson, J. Moody, and P. Mucha, “Concurrency and reachability in treelike temporal networks”, Physical Review E, vol. 100, no. 6, 2019. Available: 10.1103/physreve.100.062305. Paper

R. Gibson and P. Mucha, “Pruning Sets of Modularity Partitions in Single and Multi-layer Networks Via an Equivalent to Stochastic Block Model Inference”, University of North Carolina at Chapel Hill Honors Thesis, 2019. Paper

W. Weir, S. Emmons, R. Gibson, D. Taylor, and P. Mucha, “Post-Processing Partitions to Identify Domains of Modularity Optimization”, Algorithms, vol. 10, no. 3, p. 93, 2017. Available: 10.3390/a10030093. Paper and GitHub repository

Related