-
Music Grimoire: A progress report
About 7 years ago, I had a flash of insight: Music software is strongly biased towards Western mainstream music, and most tools are programmed with the “axioms” of this music as their foundation. Things like 12 notes per octave, tuned to intervals that are specific to the 12-TET tuning, with...
-
Drupal 9/10: Fix Views Reset button with Big Pipe
I was flabbergasted to discover that Big Pipe breaks the Views Reset button. In fact, Big Pipe breaks all form redirects. Not sure how other Drupal devs feel about that, but this was a big smh moment for me. Just imagine the collective time wasted debugging one’s code until one...
-
Drupal 10: From cookies to user sessions
When you need to examine user session tokens, you know you’re deep in the bowels of the CMS. That’s what happened to me recently, as I was debugging why CloudFlare was mixing up user sessions and giving admin access to otherwise unpermissioned users
To help debug this, I needed...
-
Drupal 9: Troubleshooting Cache API issues, Part 1: Xdebug, wodby/drupal, VS Code
In my 30+ years of programming, my go-to debugging tool has been the judicious usage of
print
commands on the appropriate variables at the appropriate times. Of course,print
takes many different forms depending on the technology stack and the application model, but the principle remains... -
Drupal 9: Backup and Migrate - Drush 11 support
Supporting content migrations across stages is a tricky subject, and most tools I reviewed seemed too fragile or too complex to be delivered to a client. We opted to use a simple workflow based on BAM (Backup and Migrate) coupled with config re-synchronization. To help automate...
-
Drupal 9: Fixing Google Charts rendering in tabbed pages
Google Charts has a long-standing, known issue rendering correctly in hidden divs. This caused us much head scratching and debugging hours before we even landed on the correct diagnosis: a chart that renders correctly on the Charts API Example page does not...
-
Drupal 9: Backup and Migrate - PostgreSQL support
I was suprised this hadn’t been already done, so I added PostgreSQL support to the venerable Backup and Migrate (BAM) module. Instead of previous patches that implemented SQL generation and parsing manually, I opted for the much simpler and (imho) more robust approach of invoking the...
-
Drupal 9: Showing an export link for each manually updated config item
The Configuration API is by far the best surprise I got about Drupal 9. Finally, a core system that is robust enough to hold any configuration set reliably, and extensible enough for contrib modules. Back in Drupal 7, maintaining a consistent configuration across stages had been...
-
Still Drupal after all these years
I thought I was done with Drupal in 2016 when we rebuilt Meedan’s fact-checking platform, Check, using Ruby / React. It felt like a breath of fresh air to decouple the frontend from the backend, and further subdivide the application into a set of services that...
-
How to prepare your Web application for Web MIDI on Firefox
In this note, I explain the process of preparing your Web application to use Wed MIDI API on Firefox, because this process is different from Chrome and involves a few more steps that may be counter-intuitive or surprising. I include screenshots and code snippets from my own app.
-
Uploading Zoom meeting recordings to AWS S3
While helping out my friends at Labyrinth Online set up their platform for online music courses, I had the opportunity to work on an interesting function to automate the upload of recorded meetings from Zoom to AWS S3.
-
Visualizing musical tunings in the browser
One of my recurring intellectual joys is to learn about the deep connections between music and mathematics. About a decade ago, I discovered the amazing work of Gareth Loy, “Musimathics: A Guided Tour of the Mathematics of Music”, a generous 2-volume overview of the mathematics and...
-
Documenting the MusicXML schema
The latest MusicXML version is 3.1. However, the official MusicXML documentation stops at version 3.0, and the Music Notation Community Group’s plan to keep the documentation updated is unclear.
-
First release of iReal Pro to MusicXML converter
Yesterday, I finally published an online demo of my iReal Pro to MusicXML converter (unimaginatively called
ireal-musicxml
), having spent around 300% of the time I had originally anticipated to reach the first release of this module. In this post, I hope to summarize the... -
Validating MusicXML files without the tears
MusicXML is a standard open format for exchanging digital sheet music, supported by a large number of music applications. Version 3.1 is the first version to be released by the W3C Music Notation Community Group.
It’s a complex format, aiming at capturing...
-
Music blogging
I’m interested in music blogging, to document my journey as a music practicioner. By “music blogging”, I mean inserting music snippets within regular blog posts, just like one does with mathematical notation, code snippets, media objects, etc.
-
A query tool for heterogeneous sheet music indexes
As a practicing musician, I often need to refer to sheet music when I learn a new tune. Oftentimes, I prefer to refer to multiple transcriptions of the same song in order to fine-tune my own interpretation of it. To help me locate the various transcriptions, I’ve created a small...
-
Extracting and manipulating the media database from Synology NAS
As a dedicated music listener, I care about my media library. I run a Synology DS411+ NAS which has been excellent at serving large amounts of media, but their audio apps (Audio Station on the browser, DS audio on mobile) inevitably have missing features that I wish I could use...
-
Converting an audio album to a YouTube video
YouTube is a great way to quickly disseminate obscure, long-tail music albums that carry cultural significance. As long as you remain under the radar of our friends at the music labels, of course
Here’s a recipe to prepare audio files for YouTube upload. The video is a looping slideshow...
-
My interest in machine learning
I submitted the following essay to UBC as the introduction to a Master’s program letter of intent, so please forgive the self-engrossed tone. Haven’t heard back yet, hoping for good news!
<essay>
There is a paradigm shift afoot in the software industry. The expectations of software...
-
Music localization for cultural preservation
Following is a talk proposal I submitted (actually: mis-submitted, but that’s not important) to the “Music and hacking” 2017 conference organized by IRCAM at the Centre Pompidou in Paris. Please forgive the self-aggrandizing tone - doubly so that I ended up not even attending the conference...