My Software Stack

What levers and pulleys I’ve been pushing and pulling in 2021-2022…


The last year of my life has been a lot of software engineering learning - moreso than usual. On top of the standard tools I’ve been using for ~2 decades, I learned a whole host of new tools related to good software engineering practice. I did a recent tweet that seemed to gain traction:

So I thought I’d write down a list of tools that I’m currently using (around the code I’m building) so I can refer back to this and figure out what’s best to write more about.

Here’s a very brief overview of them 1

Standard Tools

It’s hard to keep learning software engineering in the middle of medical school and graduate school, but somehow I was able to do it!2

Coding Practices

workflow from dissertation to reproducible code

Extra Fun


I’m working with several other tools7, but these are the main ones that people have been interested in. I’ll talk about how all of these swirl together into my workflow soon, and add some “best practices for neuroengineers” guides.

-V


  1. This post is mostly to keep track of the tools that I’ll be making more full-fledged how-to guides and tutorials for. But that’s all after I’m done with all this MD business↩︎

  2. As in, jobs have looked at my github and, in addition to face-to-face technical interviews, given me some nice jobs. I must have kept up just enough… ↩︎

  3. One counterproductive feature of i3/Linux in general is the decades-long ability to have ~10+ separate virtual desktops/workspaces. That means with the press of a button I can switch to an entirely new screen/setup. This is one of those “1000 tabs open actually hurts productivity” vibes. ↩︎

  4. Mayavi isn’t working and it worked pretty flawlessly with Spyder. Maybe I’ll just set up Spyder inside my pyenv? ↩︎

  5. People are obsessed with DAGs, it’s a bit weird. Give me those cyclic graphs, that’s where control loops live! ↩︎

  6. Once you’ve spent 7 years perseverating on the theme so you can have clean sidenotes/footnotes with dynamic content and other bells and whistles you’ll use just once. ↩︎

  7. Most of them relate to specific types of science. For example, I’m working with PyMC3 at the moment, as well as Blackjax, to try to make my analyses more explicitly Bayesian. I’m working with pytorch-geometric to try to get up to speed with GNN. I’m working with The Virtual Brain (TVB) to finish out some of the modeling work involving DBS for Depression… etc. I’ll talk about those later if there is interest. ↩︎