Tools

Table of Contents

  1. Background
  2. General Tools
    1. Editors + IDES
    2. Terminal
    3. LLMs
    4. Testing
    5. Containers
    6. Version Control
    7. Prototyping
    8. Writing + Publishing
    9. Datasets
  3. Programming Languages
  4. Data
    1. Core Libraries
    2. Notebooks
    3. Machine Learning
      1. Probabilistic Machine Learning + Generative Modeling
      2. Deep Learning
    4. Visualization
    5. Dimensionality Reduction
    6. Language, Music, Information Retrieval
      1. NLP + Language Engineering
      2. Search + Information Retrieval
      3. Music Informatics
    7. Image Analysis and Computer Vision
  5. Interactive Visualization
    1. D3
      1. D3 extensions
    2. JavaScript Frameworks
    3. Component Libraries
      1. Svelte
      2. Vue
      3. React
  6. Systems Programming + Infrastructure
    1. Software Frameworks
    2. API
    3. ML Interfaces + Deployment
    4. other important stuff
  7. Things on my to learn list
  8. Things I wish I had time to explore and learn more about
    1. Creative Coding

Background

This page is a place where I keep track of what libraries and tools I use in my work. This page is inspired by uses this, the missing semester of your cs education, the pragmatic programmer, strangeloop, eyeo festival.

My goal as a machine learning engineer is to build tools that make data and models more accessible and interpretable. In particular, I am excited about working at the intersection of machine learning, math, interactive visualization, data science and software engineering to help solve problems across data domains.

In the following sections I describe the tools that I use for the problems I currently work on. I’d also like to thank Ryan Stutsman whose teaching and office hours pushed me to understand my tools to at least 1/8 of his knowledge which I learned the hard way comes from countless hours of debugging, experimentation and writing software.

Note: This page is getting constantly updated - Last update: April 15, 2025.

General Tools

Editors + IDES

Terminal

LLMs

Testing

Containers

Version Control

Prototyping

Writing + Publishing

Datasets

Programming Languages

  • Python - machine learning, scripting, prototyping and more
  • Golang - cloud, scripting, systems programming
  • JavaScript - interfaces, creative coding, interactive visualization
  • Java - information retrieval, enterprise systems, data engineering
  • Bash - compile and running programs, experiments etc.

Data

I currently use conda as my package and environment manager but I am trying to move to a combination of uv and venv after this happened.

Core Libraries

Notebooks

Machine Learning

Probabilistic Machine Learning + Generative Modeling

These are a specialized set of tools for probabilistic machine learning and probablistic programming with efficient and accurate implementations of MCMC and other probabilistic methods/algorithms. I have not used any of these but want to try them at some point with Ben Lambert’s tutorials

Deep Learning

Visualization

The python visualization ecosystem is fragmented and choosing the right visualization library depends on the project and audience. Many of the python visualization libraries build off of matplotlib. Matplotlib while tedious is super power powerful and versatile, with the ability to render interactive 3d plots, conic sections and do image processing work. Seaborn is great for statistical charts with an aesthetic similar to ggplot but the syntax can get gnarly. Altair is an easy to learn member of the Vega-Lite ecosystem but requires deep knowledge of the grammar of graphics and gets knarly with interaction and customizability.

Dimensionality Reduction

Language, Music, Information Retrieval

NLP + Language Engineering

Search + Information Retrieval

Music Informatics

Image Analysis and Computer Vision

Interactive Visualization

D3

D3 - a library that has caused many ups and down for me but still I am excited about its capabilities. This is highly opinionated but D3 is done. Svelte, JavaScript, charting libraries(chart.js) and frontend engineering have slowly taken and improved D3’s magic to the point that you can actually implement many features with the Canvas API, CSS, and frameworks. D3 was built for the 2009-2021 era but now the api design seems stuck in time as it clashes with frameworks that need to utilize its capabilities. To that end, with some engineering tricks and staring at the source code it is possible to integrate d3 into a framework project but it is now treated more as a module library.

At the time of this writing, d3’s capabilities are unmatched for interactive visualization thus d3 is still needed for interactive visualization and building interfaces that interface between users and ml models.

JavaScript Frameworks

Not learning a JS framework was the biggest regret I had from my Utah days. For choosing a framework, it really depends on how well you know javascript and your project goals (see the framework documentaries in the talks page). Since I’m interested in interactive visualization for machine learning, svelte seems to be the most widely adopted based on the tools and research published by Anthropic, Apple AIML Google DeepMind PAIR and OpenAI hiring Jay Wang. I wouldn’t count out vue and react because Catherine Yeh built AttentionVis with vue and the Polo Club for Data Science publishes a wide range of ml-vis tools using svelte, vue and react.

Component Libraries

Svelte

Systems Programming + Infrastructure

Software Frameworks

API

ML Interfaces + Deployment

other important stuff

Things on my to learn list

These are things I need to learn more about to become a better engineer

Things I wish I had time to explore and learn more about

These are things that I wish I had time to explore

Creative Coding

I first heard about this at the EYEO Festival. I started with Dan Shiffman’s Coding Train but shifted to Kevin Workman’s Happy Coding and then stopped. It was a lot of fun to use p5 and it explained some of the javascript quirks I struggled with. After seeing all the cool stuff put out by Martin Wattenberg, Fernanda Viegas, Golan Levin, Ravi Chugh, and Andrew McNutt I want to pick it up again and try to implement some of the projects from Code as a Creative Medium.