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):
- behave - a BDD test framework
- tinygrad - a ML framework that aims to be portable
- snowflake-python-connector
- carbon - a potential successor language to C++
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)).