💾 Archived View for gemini.ctrl-c.club › ~lettuce › reinventing-the-wheel.gmi captured on 2023-04-19 at 23:09:02. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
2022-12-08
In college I played a lot of music. I was in the university orchestra a couple years, playing bassoon. I joined the improv music collective, which I played in for four years. I eventually even took electronic music history and production classes, opera (music history), ethnomusicology, and composition classes. I DJed on the college radio station as well, a program dedicated to experimental and electronic music. All this is to provide some background to attest that I'm supposedly not a totally complete idiot when it comes to music! Okay, with that said, onto my story:
My sophomore year at university I was working on a sound project. I had a homemade electroacoustic instrument that I wanted to record, playing over some 'tape' aka electronic music I made on my computer. For the homemade electronic instrument, think something like the PDQ Bach instrument called the Double-reed Slide Music Stand. I think I had my bassoon mouthpiece connected to my didgeridoo or maybe my actual music stand neck, with a DIY contact mic pickup. And I had some experimental backing textures I had made on my laptop, from downloaded and homemade audio samples. Aside from this, I had a tape machine and my stereo system I had purchased used at the thrift store, an old beautiful wood Marantz receiver. And I needed to record audio from both my electronic slide music stand bassoon and my computer output simultaneously. Playing both the computer audio via my external speakers, and the crumhorn-pipe-bassoon into a small speaker at once I could record them simultaneously from the mini microphone input on my tape machine but the audio quality would be horrible. In 2022 I would probably just do it and consider the added texture part of the intended ambience. But in 2001 that kind of lo-fidelity sound was not necessarily my intention. My roommate, bandmate and all-around fellow nerd Doug was in class. So I was on my own to figure this out. I thought for a little bit but then quickly had an idea and I gathered my needed supplies. Soon I was humming along. The DIY contact mic on my slide-stand-bassoon was plugged into the left side input of the Marantz stereo receiver. With my laptop I plugged a stereo cable, converted to a RCA, only connecting one side to the right side of stereo receiver input. With this crappy dual low-volume input I pumped up the gain significantly on the stereo, using its warm analog amplifier capabilities. The stereo output, with the two instruments mixed to separate left and right channels, was atrociously combined through connecting them to my mono input cassette recorder option. So while I didn't have a stereo recording, I did at least have two channels of audio with both instrumens in them and was able to record my musical masterpiece.
When Doug came home several hours later I was elated to show him my creation, with its combination of a gang of cables and converters and using all of the electronic instruments and players I had at hand. He immediately looked at it, dubiously, started laughing and said "Congratulations, you've invented the mixer." The strange thing was: he was right. For the entire time I had worked with this setup (maybe an hour or two) I had forgotten that an audio "mixer" was indeed a thing, probably because I hadn't actually used one before. All I knew was that I needed to combine audio wet-on-wet on top of each other, and I figured out a solution with what I had on hand to make it so. It wasn't until the following years I took experimental electronic audio production classes taught by an oldksool electronic music composer (from the 70s! we had an old Buchla 100 in the music lab). While Doug thought what I had done was trivial and silly, I was proud of myself for my ingenuity, even if I wouldn't really use that system again.
Since that time I've continued to make music, art, and other creative output, sometimes with my DIY make-it-work hat on, and other times using my university training.
And now I'm a programmer as well. With the abundance of open source software out there, and with the rise of mega software repositories like NPM and GitHub it might sound crazy to reinvent the wheel. But at least in the online circle of artist-hackers I'm in, this kind of behavior in encouraged: learning, puzzle-solving, using minimal resources, and building what you need. In fact, you may do this as well. On Gemini, everyone and their grandmother has made a Gemini server or client. I've even cobbled my own toy client together based on ncap and thought about extending it.
What are some other wheels I've reinvented?
Calendar: Right now I'm in the process of dogfooding my own calendar software that I've been using a half year so far. I use it fulltime everyday for both my calendar software and TODO lists, but it's mostly controlled with the CLI, has demo web views, and still has over a dozen features I need to implement. I started building it because I was so reliant on using the CLI software gcalcli, which implements Google calendar in the command line but controls one's web calendar. Gcalcli had some unfixable annoying deployment bug when Google changed some API (as far as I remember), and I really had wanted to get off Google completely all along. When looking for an alternative I didn't take to the ones I found like NextCloud's calendar or the Calcurse CLI program and I thought I could build something better! Or at least crappier and to my own needs. Timetable is working well for me so far, and when it gets to a level that others may be able to use it too, I'll be sure to share it.
Read-Later Software: For years I used Pocket, but I was unhappy with it. I didn't like its suggestions, had some problems with having to sign in all the time on different devices, and some other annoyances. I considered Wallabag but it didn't look like the solution for me. Sure, maybe I could have built a wrapper around one of these, but instead I built my own. A CLI program that easily downloads a website or article, routes it through the Mozilla Reabability view and converts to an output form like epub, markdown, etc. I've made a number of add-on software like a suite, including using it to download entire reams of articles saved on the Internet Archive's wayback machine, then converting them to readability view and saving them on my machine as an internal library. Hey, maybe I should combine this with my toy gemini client to make my own alternative browser.
Diary: I keep a daily log using my own simple diary software that I wrote. Again, CLI only (notice a theme here?), easily written and saved and added to a private file on my laptop.
Backup: This program performs a weekly service to copy the contents of any new files to an external drive. It's largely using rsync with some additional juice.
Scratchpad: There are so many drawing programs available. Why make yet another one? I wanted one that would launch instantly from (Neo)vim and save inline in my wiki, yet also work on the web. So I wrote it using p5.js to access the JavaScript canvas API and a Vim Language launch command and key binding.
Gemtext -> Http converter and blog updater: The gemtext converter I finished a long time ago and use regularly. Currently I'm working on updating some add-on software that would automatically update my external http blog mirror as well (which you may be reading this text on).
LOGO: This language is decades old, somewhat out of date and out of fashion. And I wrote my own implementation using Javascript and the p5.js library, just for fun! To see if I could, and to see what I would learn. And to make art using it. It was fun. I don't use it much anymore, but it was a good learning experience and I'd probably try it again.
In truth, these 'new wheels' are more like the Unix philosophy of litte tools we already know. I am writing in shell or Lua or JavaScript, using system programs, and perhaps one or two additional programs like pandoc for some added functionality. Maybe most of what we are doing, like artists working in the studio, is constantly telling ourselves we are reinventing the wheel while we stumble upon new solutions and use knowledge and tools gleaned elsewhere as well. Sometimes ignorance is best: letting us test ourselves and build what we need, possibly with a minimum of resources and a lot of gumption. I don't regret the hours of my life I've spent reinventing the wheel. I think it makes for a pretty enjoyable time.
---
You can leave a comment by emailing lettuce at ctrl-c.club domain indicating what post you're replying to and what handle you'd like listed next to your comment.