Homepage
I am interested in everything and anything computer related, from deep learning to binary exploitation to web development. I know: Python, HTML, Bash, C/C++, Rust, Go, JavaScript, SQL, PHP, Haskell, Lua, CSS, LaTeX, and x86-64 asm. For more information, about.
-
41% of Roads Lead to Homotopical Algebra
Jan 13, 2025tagsBy repeatedly clicking the first link on a Wikipedia article, you reach the article on philosophy 97% of the time. I wondered if a similar principle applied to a wiki about mathematics and physics from an abstract point of view called nLab.
-
Adansonia: A Disk Usage Analyzer in Rust
Dec 22, 2024rust,tuiBaobab is a disk usage analyzer from Gnome which I enjoy using. The right panel has nifty visualizations, but their usefulness is limited in practice. More eye candy than anything. On launch, Baobab has to crawl and index the entire directory to calculate the sizes of each file entry, but the indexing felt unnecessarily slow—I suspected it could've be done faster. Hence, I wrote my own TUI app to replicate its functionality in Rust.
-
Making a Personal Image Host
Dec 12, 2024admin,webDue to very specific technical requirements, I share images by uploading the content to an image hosting service, then distribute the resulting URLs through SMS. It looks incredibly stupid, but this method satisfies everyone involved. It shares the pictures with a third-party presenting a privacy concern, but I couldn't be bothered to find a better solution at the time.
-
Running Haar Cascades from Scratch in Rust
Nov 30, 2024cv,rustI owned one of those digital cameras from the early 2010s. I always wondered how they could draw an orange bounding box around my face in real-time on low-power hardware. It turns out, they use an algorithm described by Paul Viola and Michael Jones in 2001, where in you slide a bunch of "Haar cascades" looking for matches.
-
Tracking Keypresses
Nov 3, 2024rust,trackingI wanted to track/record my keypresses—it would be interesting to analyze the various statistics associated with that. I wrote some code that reads directly from
/dev/input
to get this data, similar to the toolevtest
. Firstly, we can create anevent.rs
file that implements a method to deserialize the data stream from any character device in/dev/input
. We obviously use Rust here, because Python would have too great an overhead. For code that is activated each time a key is pressed, it needs to be lean. -
Random Topics: 001
Oct 24, 2024randomI've been engaging in several disparate activities as of late, none of which are mature enough to be developed into their own individual article. Instead, like one great big spring mix salad, I'm going to amalgamate each of them into this one article covering the tiny pursuits that have captured my interests recently.
-
Generating Strong Pseudoprimes to Fixed Bases
Sep 12, 2024algo,ctf,mathThe hardest challenge in the mathematics section of CryptoHack, entitled "Prime and Prejudice," essentially involves finding a strong pseudoprime to a set of fixed bases—with the aim of tricking the Miller–Rabin implementation to accept our composite number as prime. The title of the challenge is a reference to a 2018 paper exposing security flaws related to adversarial primality testing in cryptographic libraries.
-
Configuring WireGuard VPN on Oracle
Aug 23, 2024linuxMy favourite kind of price is free. Hence, on perusing through all those affiliate web articles which blindly market VPN services and assign them arbitrary ratings, I had an epiphany—why not build my own VPN on free cloud compute? Oracle has a generous free tier, perhaps to compensate for their horrible UI/UX.
-
Generating Order-Preserving Minimal Perfect Hash Functions
Aug 7, 2024algoA hash function is a function that maps a set of strings to integers between an interval. If this function is injective, in other words the function produces no hash collisions, then we call the hash function perfect. If furthermore the function is bijective, then we call it a minimal perfect hash function, sometimes abbreviated as MPHF. In computer science we sometimes refer to strings as words.