2024 Recap!

Happy 2025! It’s time to look back and reflect on 2024 - did I accomplish what I wanted to? Do I know what I want to do differently?


personal life

I got engaged this year! We’re very happy to be together and I’m very excited to spend my life with my partner. She’s been a true pillar of support this year, and I’m lucky to have someone who’s so supportive in my corner.

This year my fiance(!!!) and I hosted a lot of social gatherings. At times we stretched ourselves a bit thin and had too many social plans in the same time. But we made some awesome memories and built a really amazing community. Parts of this year were pretty tough for me, and I think having so many people that I knew were supporting me really helped me get through the dark times. I’d like to keep that community going in 2025.

fitness

I haven’t been as consistent as I would have liked this past year. But I did hit two “big” goals. I ran my longest run (15mi) and biked my longest ride (100mi). Although I wasn’t consistent throughout the year, I did have stretches where I established a decent routine, and found myself getting more comfortable doing harder training rides and pushing myself outside of my comfort zone.

Next year, I have a few goals - I’d like to run a full marathon, and I’d like to do another 100mi ride, but these goals are really proxies to get me to be more consistent. I think I’ve found some really good communities through fitness and I’m really grateful for that this year.

I did buy a new bike this year - my first real road bike, a Canyon Enudrace CF8.

bicycle

It’s so fun to ride. I’m glad my first “real” bike was a gravel bike, because I think starting with something this nice would have spoiled me. I’m totally sold on electronic shifting and carbon frames now. I think buying this bike has solidified my identity as a cyclist - I no longer feel like I don’t “deserve” a bike this nice, and I feel like I have the right to say that I belong in the cycling community. Of course, this has been true all along, but now I am aware of that truth.

cooking

At the start of the year I was really struggling to cook consistently and found myself spending way more on eating out than I would have liked. I think I’ve turned it around. My partner and I have gotten a good routine established, and we only eat out once or twice a week. I’ve been approaching my craving for novelty by trying out new recipes from cookbooks and experimenting around a bit more. I think I’ve gotten a lot better at making pastas and soups - for a while my partner had banned me from making pasta, but over the course of this year the ban has been lifted, and my new and improved pasta recipes are a new staple in our household.

reading

I hit my reading goal! It was definitely looking a little dicey towards the end but we made it. Checkout my goodreads for details on books I read this year. Favorite book of the year would have to be Chip War it gave me a good understanding of the historical context behind the tech industry.

projects

github

Last year I told myself that this would be the year of quality over quantity. That I would only start a few new projects and instead choose to put in solid work on projects that I already had in progress. Anyway, Here’s every new repository I created last year:

monkeywrench

This was a tool that integrated Github Copilot into firefox’s devtools. It was my first time writing an extension that used the devtools API, and my first (and only?) project that used LLMs. It’s a cool idea, but it’s honestly pretty bad at what it was supposed to do - lower the barrier of entry to interacting with webpages via scripting. At some point I’d like to revisit this project.

multiversionpython

This was a proof of concept to getting python to allow importing multiple versions of the same library in python. It’s really cursed. Honestly one of my favorite things that I made this year.

toposim

This was actually a repo I made for a research project with University of Washington. It’s a framework for running distributed applications on custom graph topologies in Docker. I think the coolest part of it is the template based script generation. It uses Jinja to generate shell scripts that can access information about the topology of the entire experiment. At some point I started adding a set of scripts to take the virtualized setup and deploy it on physical machines.

pyllvmpass

This is a tool I built to make it easier to write LLVM passes in python. It was my first Rust project in a long time, but also used some of my python skills in interacting with C libraries (at least during debugging). Someone remarked that it was funny that I wrote this in Rust instead of C++, and that it’s a real testament that to write a library that interfaces with a C/C++ API, I prefer Rust instead of C or C++ itself.

graphgen

Again related to my research, this is a fast tool to generate large synthetic graphs with controlled distributions on edges and on property sizes. It was original just a python script in a private repo, but the script proved to be too slow as I wanted to test larger scales. I decided it was a good time to learn some more Rust and learn how to write performant Rust code. I used it as a good learning opportunity to learn about performance profiling tools in Rust.

xyboard

I’ve written a series of blog posts about this already, but this was a project I resumed work on that I abandoned back in 2020. I won’t write much about this here, but it was a fun distraction this year, and I’ll probably keep working on it eventually.

argparsh

I’ve written a couple blog posts about this, but this is one of the most useful things I built this year. I use it for so many of my personal and research scripts these days. Good command line parsing is so nice. It was my first non-trivial Rust project of year, and I think working on this gave me a lot more confidence in approaching Rust development.

nvparse_rs

I’ve written about this project at length as well. I feel like I understand GPU programming so much better than before starting, and the performance analysis I’ve done has also given me a better intuition for when GPUs can speed up compute, and by how much compared to threads.

buffcat

After working on graphgen and building datasets for nvparse_rs, I realized that what I wanted was cat but more capable of combining large files without OOM’ing and a few other options like repeating a file’s contents multiple times. Built with performance in mind it’s multithreaded. I prototyped this in python, then rewrote it in Rust. What I loved about this process was learning that tqdm has a Rust port, and that the Rust version deals with multiple threads much better than the python version.

pystats

A small tool for taking in streams of data and computing stats and visualizations. Pretty useful for some quick and dirty data exploration.

meshdeformation

My only art project in 2024. I wrote a blog post about this, but it gave me a chance to play around with WebGPU and WGSL in the browser. Fun times.

(real) OSS contributions

I opened the following PRs this year:

(slightly less real) OSS contributions

  • hostfile
    • It always amazes me to realize that people out there actually use code that I wrote. I received a couple PRs from the community and released a couple new versions this year.
  • NoteDown
    • I only did a little cleanup this year, but I’m hoping to onboard a new contributor to this project soon! It’ll be this person’s first time working on an open source project and I hope that this can prove to be a really good learning ground for them.
  • rainbow
    • I played around with re-implementing this as an LLVM pass, but the analysis is definitely way harder to do for constructs like lambdas. I was hoping to turn this into a research project and publish something about using graph DBs as a compiler/PL tool. The hope isn’t dead, I just haven’t been able to pursue that avenue as much as I wish I could have last year.

this blog

One of my goals last year was to really make this blog come alive. I wanted to post at least twice a month and also focus the blog on my research directions a bit better. This has been a resounding success. Pictures are worth a thousand words, so here’s a visualization of my post frequency:

post frequency

I hope to keep this momentum going. I feel myself getting better at writing, and with engaging with my thoughts to determine what thoughts I think are worth cataloging.

work/academia

I applied to grad school, then quit my job. Was that the right decision? I think it was. I was pretty unhappy at my old role (many reasons for this, not trying to put blame on the company itself), and quitting has given me some freedom to recover from burnout - something I’ve been running from for years. I hope to make the most of this interlude while I wait to hear back from universities. I’d really really like to start my PhD in 2025, but if it doesn’t work out I do have some backup plans.

The process of applying was arduous. I went through so many iterations of my statement of purpose, but I think it was time well spent. I have so much more clarity on what I hope to accomplish with a PhD program than I did when I started, and I feel more convinced than ever that I’m on the right path. So many people helped me on this journey this year and I’m eternally grateful for that. Here’s to hoping that those efforts will come to fruition. Fingers crossed.

In terms of research itself, there were highs and lows, and I think my biggest takeaway is that I enjoy the work I do, but sometimes when I tie my self worth to my results it’s hard for me to acknowledge that I’m having fun. I’ve learned some good life lessons this year, and next year I hope to accomplish more sustainably.

Conclusion

2024 was an eventful year. Overall, my emotion for the year is gratitude. I’m grateful for my amazing fiance and the life we’ve built together. I’m grateful for the awesome people that made this a special year. I’m grateful for all the insane opportunities that came my way and the lasting impacts they’ve had on me - in 2023 the idea that I would be a researcher seemed like a pipe dream, but now it’s a reality. I’m grateful for my health.

What do I want to accomplish in 2025? I think I want a better sense of balance. I think this year I was really focused on a few key goals, but I failed to recognize that in order to achieve those goals I need to have a calm and clear mind. To achieve that I need some balance. I need to have times of the day when I’m not working or thinking about work, and I need to have goals that are not work related to remind myself to enjoy life outside of a computer screen. I do have grand aspirations in terms of work and career for this next year, but to make those dreams a reality, I need to ensure that I have mechanisms to help me recharge when I need to.

Overall, 2024 was a blast. It had it’s highs and lows, but I’ve come out of it a better person. Here’s to 2025 being no less exciting!

Written on January 2, 2025