Homepage
I use this website primarily to write on computer-related topics, such as cybersecurity, programming, and mathematics. I participate in CTFs and competitive programming contests sometimes. I read, both fiction and non-fiction. I use the DWM window manager on Arch Linux, neovim as my editor, Chromium for web browsing, and Alacritty as my terminal emulator. I know a lot of programming languages, in order of skill, from most to least: Python, HTML, Bash, C/C++, JavaScript, Haskell, CSS, LaTeX, Lean, and x86-64 asm.
-
Configuring WireGuard VPN on Oracle
Aug 23, 2024tagsMy 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.
-
Eliminating Terminal Startup Latency
Aug 4, 2024dwm, workflowMy workflow revolves around the terminal. For example, to launch an application such as Chromium or Krita, I press the keybind Win+space to open a new floating Alacritty terminal in the center of my screen. Then, I type
krita
or the name of whatever application to launch it. I have tons of aliases in my.bashrc
that look like this to close the terminal when I open an application: -
The
tempfile
Module in PythonJul 26, 2024pythonThe Python programming language boasts an expansive standard library, providing developers modules for the most specific and esoteric of needs. In fact, there exists a famous XKCD comic where an individual imports "antigravity" and gains the ability to fly.
-
A Ukulele Tuner in React
Jul 15, 2024react, webI really like GuitarTuna, an online tuner for musical instruments with a fun and intuitive user interface. For some reason they only allow you to tune a guitar and not a ukulele, perhaps to encourage you to install the mobile app?
-
Losslessly Compressing 25000 Images
Jun 26, 2024compression, pythonOn May 20, Microsoft announced their Copilot+ PCs. The main selling point of these devices are its AI features. These include near real-time local image generation, Live Captions with translation, and Recall. Recall periodically takes a screenshot of the PC and allows users to search through these to "easily find and remember what you have seen in your PC." After harsh backlash and exposed security flaws targeting Recall, Microsoft vastly scaled back its ambitions with this project.
-
Calculating the 1 Billionth Fibonacci Number in 8 Seconds
Jun 9, 2024algo, math, pyThe Fibonacci sequence was popularized in Western Europe by Leonardo of Pisa, where he used it to model rabbit population growth in his 1202 book Liber Abaci. However, the sequence was already known by Indian mathematicians as early as 200 BC, when it was used to enumerate possible patterns of Sanskrit poetry.
-
Playing Around With LLM Chatbots
May 18, 2024llm, pythonI spent most of yesterday goofing around with chatbots. I wrote a blog post on Meta Llama-2 7b in what feels like a decade ago—gosh, my perception of time is all warped. Anyway, since then the local LLM space has greatly expanded and many new contenders are vying to train and fine-tune the best (supposedly) open source LLMs. The hotly anticipated Llama-3 line of LLMs were relatively recently announced and released. I'm most excited about the 8b model which was trained on 15 trillion tokens!
-
Configuring Neovim
May 7, 2024neovim, workflowI use Neovim and spend more time configuring it than actually coding—I'm exaggerating, of course, but I do spend an inordinate amount of time with my nose in my Neovim config. There are constantly new additions I think to add or small adjustments to make to my
init.lua
. Here I present two neat ad-hoc code snippets in my config. In the wise words of Georgi Gerganov, "I like big.vimrc
and I cannot lie."