2023 Recap!

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


Hello readers! As 2023 draws to a close, I thought I’d try to catalogue some of the interesting things I’ve worked on this year for posterity. There’s quite a lot that happened this year, from watching my place of employment shut down, to starting a new role, as well as a lot of changes in my personal life as well. Here’s to hoping 2024 keeps things exciting as well.

KeyMapper

This is a project that I started in 2022. In 2023, I fixed some major bugs that made it uncomfortable to use, and I’m happy to report that I have been using it bug free literally every day since. Feels good to have actually made something that solves a real problem I was facing.

spycy

spycy is a in-process implementation of OpenCypher (written in python), but it abstracts out the graph interface to allow connecting any graph-like data source to an OpenCypher frontend. I was experimenting with this in order to implement the next project on this post. The biggest things I learnt was how to use pandas and networkx. Learning about networkx helped greatly with another project on this list. In the coming year, I’d like to get some more people using this project, and getting some more feedback on it. I know there’s a lot of areas that need improvement, but there’s still some applications where this could be potentially useful as is.

rainbow

rainbow is an experiment to generalize the concept of function coloring and allow users to add restrictions to their call graph. This could help add language features to detect invalid usages of some libraries at compile time. This is something that I’d been thinking about for a few years, but wasn’t sure how to approach it until 2023. The key insight was that I could use a graph database both to model the callgraph, but also to provide an interface for writing rules. This project allowed me to learn about using clang as a library and a lot about how clang represents the AST for C++. I also learned about Microsoft’s SAL, which does something very similar, albeit much more restrictively. I’m hoping to work more on this project in 2024.

video-synth/ViTH

In 2021 I made a project titled video-synth which aimed to be a in-browser video synthesizer. I made some pretty cool art (like this) using it. However, the UI/UX was garbage so I redid it and also changed a lot about the underlying architecture. The biggest change to the engine was to switch to a codegen/compiler for generating the resulting program instead of evaluating each kernel/stage as it’s own program. This improved performance slightly, but made some operations hard/inefficient to express, so some combination of the two approaches is required in the future. In terms of UI, I opted for a graph based UI, drawing inspiration from blender and scratch. The key learning was getting comfortable with SVG.

GExp

GExp is a project that I’ve been thinking about for a very long time. While employed at KatanaGraph I was working on developing a subgraph pattern matching engine. GExp is a tool that I always wished for - something that would let me run a fuzzy search across a set of graphs. The usecase I had for this was determining how many queries from our benchmarking suite would be affected by a peephole optimization targeting specific kinds of topologies. I think there’s a lot more work to be done on this project, and I’m hoping that someday I can turn it into a legitamately useful tool for research.

NoteDown

When I started a new job this year, I found myself taking a lot of notes on my tablet. I’ve been a long time OneNote user, but I found it to be lacking, so I decided to write my own. It’s been super fun working on this project. I’ve learned about techniques to implement a light/dark mode UI, learned about PWAs, built my own rendering engine, and experimented with different ways of getting user input to build an experience that does what I want. I’ve got a lot more planned for this tool, and I still use it regularly, so I’m hoping to also work on this in 2024.

Misc. open source contributions

This year I contributed to the following repos (or at least opened PRs against them):

I won’t claim to have made any super significant contributions to any of the projects above, but I’d like to get more involved in the OSS community. In 2024, I’m hoping to make more contributions to carbon in particular as I find it to be a pretty cool project.

This blog!

In 2023 I wrote 5 blog posts (including this one). I have drafts of 3 more posts that I never finished. In 2024 I’d like to post once a month to get better at writing in general.

Conclusion

Overall, I can’t complain too much about how this year went, and I feel like I have some clear goals for 2024. In terms of projects I’ve worked on this year, I feel like I’ve done a better job than ever before of continuing to work on my projects after they get “boring”. As a result, I feel like I’ve done fewer things in 2023 than previous year, but the scope of the things I’ve worked on has been larger in return. In 2024, I’m hoping to not start too many new projects, but focus on driving more of my existing projects to completion, being more disciplined about working on things that contribute to my long-term goals, and to also remember to take breaks and focus on my non-computing goals as well (maybe I’ll finally touch grass? (jk, I love the outdoors)).

Written on December 26, 2023