Optimizing IO and Simplifying Compute Shader Development

In this post, I continue implementing a parser on the GPU and take steps to hide the latency of transferring data to the GPU. Additionally, I explore Rust’s code generation mechanisms to simplify running compute shaders.

Parsing files on the GPU

GPUs are good at massively parallel operations. Parsing is often parallelizable, can parsers be written on the GPU?

Oxidizing argparsh

argparsh has too much overhead for some usecases - in this post, I will examine why and use Rust to build a better solution.

Cycling my first century (100 mi)

For a long time, I’ve wanted to cycle 100mi in a single ride, and this past weekend, I finally did. Here’s a small write-up on my experience.

2024 Q3 Retrospective

We’re 3 quarters of the way through the year! What’s the vibe heading into the final sprint?

Debugging STDIN issues with MPI_Comm_Spawn on MPICH

At work we encountered a strange issue where reading from STDIN on a process that calls MPI_Comm_Spawn causes the program to crash. The solution was non-obvious, so I thought I’d share my fix here for other MPICH users.

2024 Q2 Retrospective

As Q2 of 2024 draws to a close, it’s a good time to look back and reflect. Have I continued the progress I started in Q1? What can I do better?

May

My git tips/tricks

Over the years I’ve developed my own patterns in using git, which I thought I’d document here.

2024 Q1 Retrospective

As Q1 of 2024 draws to a close, it’s a good time to look back and reflect. Have I held up the resolutions I picked at the end of last year? Whats kind of progress have I made? What are areas I’d like to improve in?

Understanding HyperLogLog

HyperLogLog is an algorithm for estimating cardinality of multisets. Notably, the algorithm only uses \(O(1)\) space. Join me on a journey to understand it by implementing it!

Multi-versioning in Python

Oftentimes, two python libraries may be incompatible due to conflicting dependencies. Phrased another way, we want to support having multiple versions of the same package available to a single project. Can we solve this problem with some creative uses of venv?

Using ParamSpec in Python

ParamSpec allows for binding the arguments of a function to a variable for typing purposes. We can use that to improve type signatures of decorators!

2023 Recap!

It’s been a looong year. What have I been up to?

May

Reflection in CPP

It this cursed? Is this totally valid? Only way to know is to use it in prod.

May

the tale of rpg-n

Two years ago I started writing an engine for a visual novel/rpg system. I totally forgot about it, and I’ve decided to start over. This post will dive into an analysis of what I got right and wrong the first time around and what learnings I have from an unfinished project.

Pixelator

A quick tool to pixelate images with a limited color palette

Finding the area of some semicircles

I was recently shown the following statement and wanted to prove it. Given a circle of radius \(r\) centered at the origin, for \( \forall p \in (-r, r)\) , construct two semi circles that intersect uniquely at \((p, 0)\), such that each semi circle only intersects with the circle of radius \(r\) exactly twice, and each semicircle’s centers are on the x-axis. The sum of the areas of the two semicircles is half the area of the enclosing circle (\(\frac{\pi r^2}{2}\)). This post is a proof with visualizations!

Computing digits of Pi

Happy \( \pi \) day! In the spirit of \( \pi \) day, I wanted to compute the millionth digit of \( \pi \) using my GPU!

WebGL game of life

In my continued efforts to learn webGL, I wanted to make an engine for conway’s game of life. Click on this post for final result!

Making a hexel effect

I’ve been trying to re-learn webGL lately. To get myself started, I’ve been trying to implement some simple visual effects as fragment shaders. In this post I’m going to be detailing how I made a hexel effect.

Arduino Keyboard Mouse

Recently, I came across this post which I found pretty interesting as a fellow owner of a arduino UNO. I also had a few cherry switches left over from a recent mechanical keyboard build, so I wanted to try my hand at building a keyboard/mouse from scratch as a learning exercise. You can find my current progress on this project over at https://github.com/aneeshdurg/arduino-keyboard/.

Wu-Tang Clan in the Terminal

Hi everyone! It’s been a long time since I’ve updated my website (probably should more often…I’m paying for the hosting anyway…). Today I’d like to share with y’all something short and silly I made while trying to not think about my midterms. I’ve decided to try writing this in a tutorial format, with the intended readers being people who’re new to bash scripting.

May

MangareaderFS

Building a FUSE filesystem interface to mangareader

Haskell Game of Life

Hello, my possibly (probably) nonexistant readers! It’s been a while since I’ve written anything. For starters, happy new year!

d3.js Fireworks

I was playing around with d3.js and made this animation thing. Move the cursor to experience it and click to see the code!

Pokemon .bashrc

Recently, I’ve been playing around with my .bashrc file on my laptop and trying to make the time I spend at my laptop a little more exciting. Additionaly, I’ve been a huge fan of the pokemon franchise since I was young enough to frolick through meadows without incurring strange looks from others. I decided to bring the world of pokemon into my terminal.

Smart Zoom - a chrome extension using getUserMedia

I recently made a chrome extension called smartZoom which makes chrome set the browser’s zoom level based off of the user’s proximity to their laptop using getUserMedia. While I wouldn’t say it’s entirely complete and working they way I want it to, it can definately be considered a proof of concept.

May