Hi, I'm Jacob deGroot-Maggetti! I'm a programmer, learner and musician.
My personal website is https://jacobdgm.com, and you can reach me at jacob@jacobdgm.com.
Day-to-day, I program mostly in Python and Django. I've also worked on a handful of personal projects, most of them in Python, many of which are outlined below.
I'm particularly proud of:
- Cantus Database (code)—During my time as a software developer at the Distributed Digital Music Archives and Libraries (DDMAL) Lab, I've worked to reverse-engineer this long-running database of Gregorian chant in Django (the original database was passed from researcher to researcher on hard disks, and then for many years, it lived online with Drupal running under the hood). I've been lead developer of the project since September 2022, and the updated site launched in July 2023.
- jacobdgm.com (code)—I'm inordinately proud of my personal website, mostly for the content on the site and the lessons I learned while growing it.
- fretboard-generator—fretboard-generator is a collection of functions for generating fretboard diagrams for fretted string instruments.
A couple of my central interests are pedagogy and effective learning techniques. When learning facts, I take advantage of spaced repetition, interleaving, and above all, active recall. When learning new skills, I learn primarily by doing, complementing this with relevant factual learning. Since I began to learn to program during the pandemic, I've learned a bunch of new skills while working on a series of projects:
- While setting up my personal website (code) I learned about
- CSS,
- the conventions of HTML and semantic HTML,
- the basics of Git and GitHub, and
- some things about setting up projects so they can grow and evolve over time. (If I were to set it up now, I might be tempted to use a framework like Django. But I like that it uses static HTML, and that it still bears the marks of the design choices I made at the beginning and those I made along the way. It has its quirks, but I love it as it is!)
- fretboard-generator was a productive initial exercise in creating a project in Python, as I set up a group of functions that worked well with each other. It also yielded lessons on how to structure projects.
- From pitch-classes, I learned about classes in Python and object-oriented programming, and about unit testing and test-driven development.
- Working with @jackckelly on irish-tunes, I learned about Jupyter Notebooks, pandas, and cleaning and standardizing data from a range of sources.
- Working with @maneshd on kebyar, I learned about programming in JavaScript, got a taste of the quirks and peculiarities of various web browsers, and had my first experience diving deep into documentation as we worked with tone.js and p5.js.
- (I worked on these last two projects during my time at Recurse Center in summer 2021, an organization that does a great job modelling learning by doing!)
- I've spent the past year and a bit working at DDMAL, developing CANTUS Database (code). I learned a great deal working on this project:
- about Django
- about navigating a big, existing codebase
- about collaborating on an active project using Git and GitHub
- about Docker and Nginx
Lately, I've been learning:
- to play Irish tin whistle
- how to make better use of Vim
As a musician, I mostly play Irish traditional music on violin, guitar, mandolin and penny whistle. In the past, I've also spent time playing jazz, mostly on bass, guitar, violin, and a little bit on piano. I have a B.A. from the University of Waterloo in Music, and an M.A. from McGill University in Music Theory.
My interest in music and music theory has inspired many of my personal projects.
- Though fretboard-generator was an early project, this collection of functions for generating fretboard diagrams for fretted string instruments continues to do its job well, and I still use it from time to time.
- pitch-classes, and its successor music-theory-tools, are collections of functions for exploring musical scales in alternate tuning systems.
- irish-tunes was an effort (in collaboration with @jackckelly) to train a language model to generate traditional Irish dance tunes. While we didn't end up creating a tool to generate an infinite quantity of new and interesting trad tunes, I was pleased and surprised by the progress we made (in that by the end, our neural network was outputting tunes with mostly the right number of beats per measure)!
- kebyar (built in collaboration with @maneshd) is a tool for exploring the interlocking patterns found in Balinese gamelan music.