Feb/Mar

Tohuwabohu

This edition of the slasher's blog sees some huge changes to Tohuwabohu. Yes - you read it right, this is the first big change to the unnamed nonlinear player presentation app: it's got a name!


According to Wikipedia, …

Tohu wa-bohu or Tohu va-Vohu (תֹהוּ וָבֹהוּ ṯōhū wā-ḇōhū), is a Biblical Hebrew phrase found in the Genesis creation narrative (Genesis 1:2) that describes the condition of the earth (eretz) immediately before the creation of light in Genesis 1:3.

Numerous interpretations of this phrase are made by various theological sources. The King James Version translation of the phrase is "without form, and void", corresponding to Septuagint ἀόρατος καὶ ἀκατασκεύαστος, "unseen and unformed".

I was secretly (and now publicly) giving it a thumb-up when I heard Devin bring this name up, because I think it captures the nature of the player very well. From the layout to the actual functionality, the player gives a user much flexibility to do whatever they want instead of predefining everything. A bit of the chaotic type of DIY energy at first, maybe you don't know what this button does, or where the window went (as everything is movable); but as you get a hang of it, it becomes a good partner of yours. See Devin's virtual performance "long shadows - twin twin flames".

Etymology of Tohuwabohu -feat. Devin 😈

"Right? Kinda like watching someone make a collage while listening to a podcast ha. I recently saw someone's twitch stream which was just their Ableton Live screen and some 3d graphics animating on top and I was like wow...this is blowing that out of the water, but is also related."

It not only sounds exciting, it also is exciting, because two month's hard work also brings in the integration of MIDI control to our tohuwabohu. I'd say it has grown twice as big as an application -- code wise. Now when starting up the app, it will automatically detect if your computer is connected to any MIDI controller. If so, it will bring up the version with a mini MIDI pad on the screen that is in sync with your actual MIDI pad. This means whenever you trigger a file to be displayed with the buttons on the pad, the "LEDs" will also light up on the screen. Isn't that cool?! Every other functionality works as usual. You can drag a file and a url onto a MIDI button on the screen, dragging onto a button that's already lit up will overwrite the original file (this can be seen as a substitution of the delete function in the list view of the playlist). You can drag the cells in the playlist and rearrange the order of the files like how it works with Topster, but with far more file types and they line up beautifully. With MIDI controller connected, you also have the freedom to choose whether to use it or not by switching mode with the slider menu on the top right side of the screen. Switching to disable MIDI will bring you to the default version with an infinite scroll playlist, while you still have the choice to view it in list or grid.

As someone who has never touched a MIDI controller pad, this was super interesting to me. The execution of this integration is not too technically challenging thanks to the Web MIDI API, but it was very eye-opening to see how MIDI works and sends/receives signals from your computer. Pressing those buttons makes me feel like a technical-DJ myself.

Backend wise, it did take quite some work to re-engineering the whole system, as introducing MIDI requires the data structure to change to a finite number of slots to hold files, as well as the indexing mechanism. These "invisible" work might seem a little "thankless", but reorganizing the code base is actually a good engineering practice instead of merely programming little functions here and there. It gave me a more holistic understanding of the design (although I built it myself completely) and how to tie different threads together.

The data perspective is tightly related to a component called "local storage". Local storage is the magic behind the functionality of reopening the app and everything in the last "session" is there intact. As the desktop version of the player breaks through the boundary of the local file system on your machine, it takes a whole lot of testing to make the mode switching work. It is more time consuming than testing with the browser on localhost because the app is actually being exported and deployed on my machine. Nice choice for killing time if you got nothing to do I'd honestly say, but I'm not complaining. Because this is a nice practice, in the sense that I got to experience what it's like to do the "production" part of work from SDLC.

Testing is never enough, but we are moving on to the releasing phase, hurray!! I've served my bid and handed over the code base to the team's shared repository… in a few days' time, tohuwabohu will see the light, go into the light, and be with the light - that's what it didn't make in the past, but now it will.

See you in the light!

Kelly

2021.3.28