Obituary for Edward Hutchins

Edward Hutchins passed away on June 19th at the age of 83 in McKinney, TX, after a short illness.

Ed was born to Esther and Bert in St Louis, MO, in 1939, but the family soon relocated to Phoenix, AZ. After a brief stint at Arizona State, Ed joined the Army and was stationed in Alaska and then San Francisco. After being discharged, he earned a Bachelor and Masters degree in Electrical Engineering from Santa Clara University. In 1974, he married Eileen Forge and they raised two children in Cupertino, CA.

Ed worked as a chip designer at several Silicon Valley companies, including AMI, Chips and Technologies, IDT and SST. After retiring, he travelled the country on a motorcycle for two years with his tour ending in Vancouver, WA, where he became an avid square dancer with partner Elsie Bartling. He moved to Texas during the pandemic to be closer to his son and grandson.

Ed is predeceased by his parents and his wife Eileen. He is survived by his sons Charles and Edward Paul Jr and grandson William.

Funeral services were be held at St Joseph of Cupertino on August 14 at 1pm. Interment was the following day at Gate of Heaven Cemetery at 10am.

Teen Idols

Once upon a time, 33 years ago, I was clearly a troubled youth. I was 14. My parents wanted to help. Could I just tell them what was going on?

In a terrible miscalculation, I told them. I came out as questioning.

My mum panicked and sought out advice. She turned to her mother’s Catholic friends who suggested a hard line approach. My mum could push me towards heterosexuality by the strategic use of homophobic harassment. Her contacts further urged her to use “tough love” and throw me out of the house.

She tended to agree with the bigots, but she balked at making me homeless. I look back and know now that it’s possible to love and hate at the same time, in the same breath, as the same gesture. I spent four years in a perfect synthesis of maternal Catholic love and hate.

Things improved dramatically after I left home. My mother eventually, mostly came around. And then, with little warning, in 2002, she died.

My dad, who had virtually no speaking part in this drama, never talked about this. I don’t even know if he knew what was going on. I’ll never know. He died in June.

According to Kiddushin 17b, there is a Rabbinic law that allows a Jewish convert to inherit from his gentile father. He splits the inheritance with his brother so that the gentile gets the religious items and the convert gets money.

We delayed my dad’s funeral for a few weeks due to travel difficulties. My brother proposed stretching this out to at least five months. Instead, I took over planning. I booked a Catholic church, a priest, an organist, a florist, and a caterer and made arrangements with the cemetery. The priest asked which readings to use. The organist asked what hymns to play. My brother did not respond to these questions, so I did. I listened to hymns on YouTube and read gospel verses, searching for something at least inoffensive.

My dad was Catholic. His friends were Catholic. I stayed close to the community norms of what he would have expected and presumably wanted.

The sages say, in the case of ‘a convert and a gentile who inherited the property of their father, a gentile: the convert can say to his gentile brother: “You take the idols and I will take the money.”’ But I took the idols and placed them for the funeral. I wrote a check to the Catholic church, whose schools educated but harmed me. Whose followers tormented me and loved me. Whose hospitals are allegedly right now gambling that they can safely but illegally deny every kind of healthcare to trans people, because they have deep pockets and trans people don’t.

I didn’t want the idols, but I couldn’t escape them while also doing right by my dad. I tried to pass them off to my brother, but didn’t. Kiddushin says, ‘Once idols have come into the convert’s possession, it is prohibited for him to exchange these objects with his brother, as he would thereby be benefiting from idolatry.’ They’re mine now, but any benefit is counterbalanced by harm. I could atone for this on Yom Kippur, but I feel I shouldn’t have to. This is the opposite of what I felt when actually doing the planning. It had to be done, so I did it.

The end of a difficult relationship brings intense focus to the difficulty. Here is a murky not-knowing. But the missed conversation about my teen years feels like a relief. It’s better not to know. There were no good answers. I took only those idols that I had to take.

Shiva

My dad’s funeral is delayed for a few weeks due to logistics reasons. So, going out of order, I’ll be sitting shiva in London Tuesday and Wednesday of this week. Please email, text or signal for my address. I have very recently moved house.

A friend suggested I also do an online session. I am considering logistics and will post further details if I go ahead with that.

Graphic Notation Teaching Tool

This is designed for students with no experience of improvising. The idea is to start with just having one note and dots. Then dots and flat lines. Then gradually adding more notes.

It’s meant to fir the window width, so you may need to scroll sideways if you’re looking at this page with a sidebar.

Your browser does not support the HTML5 canvas tag.
<form id="formElem">
  <label for "notes">Notes:</label>
  <input type="text" name="notes" id="notes" value="C, G">
  
  <label for "dots">Dots:</label>
  <input type="checkbox" id="dots" name="dots" value="1" checked>
  
   <label for="lines">Lines:</label>
<select name="lines" id="lines">
  <option value="0">None</option>
  <option value="1">Flat</option>
  <option value="2">Sloped</option>
</select> 
  <label for "circles">Circles:</label>
  <input type="checkbox" id="circles" name="circles" value="1">

  <input type="submit">
</form>
<canvas height="310" id="canvas_images" style="border: 1px solid #d3d3d3;" width="1280">
    Your browser does not support the HTML5 canvas tag.</canvas>

<script>  
  
  function drawCircle(ctx, x, y, radius, fill, stroke, strokeWidth) {
  	ctx.beginPath()
  	ctx.arc(x, y, radius, 0, 2 * Math.PI, false)
  	if (fill) {
    	ctx.fillStyle = fill
    	ctx.fill()
  	}
  	if (stroke) {
    	ctx.lineWidth = strokeWidth
    	ctx.strokeStyle = stroke
    	ctx.stroke()
  	}
	}
	
	function scoreCircle(ctx, x, y, radius, fill) {}
  
  function drawDot(ctx, x,y) {
    var dots = document.getElementById("dots").value;
    
    if (dots ==0) {
      return false;
    }
    drawCircle(ctx, x, y, 5, 'black', 'black', 2);
    return true;
  }
  
  function drawLine(ctx, x1, y1, x2, y2) {
    ctx.strokeStyle = 'black';
    ctx.lineWidth = 5;

    // draw a red line
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.stroke();
  }
  
  
  function scoreLine(ctx, x1, y1, x2, height) {
  
    var lines = document.getElementById("lines").value;
    if( lines == 0) {
      return false;
    }
    
    if( lines == 1) {
    
      drawLine(ctx, x1, y1, x2, y1);
    } else {
  
      var slopes = [-1, 1, 0, 0, 0, 0, 0]
      var diagonal = slopes[Math.floor(Math.random()*slopes.length)]
  
      if (diagonal != 0) {
        x2 = x2 + height;
      }
    
      var y2 = y1 + (height * diagonal);
      drawLine(ctx, x1, y1, x2, y2);
    }
    
    return true;
  }


  function pickItem(ctx, x1, y1, x2, height, radius, fill) {
  
    index = Math.floor(Math.random() * options.length);
    switch (options[index]) {
      case 0:
        drawDot(ctx, x1, y1);
        break;
      case 1:
        scoreLine(ctx, x1, y1, x2, height);
        break;
      case 3:
        scoreCircle(ctx, x, y, radius, fill);
        break;
      }
  }
  
  
  function drawScore(ctx, staves, dots, lines, circles){
    var canvas_width = ctx.canvas.clientWidth;
		var canvas_height = ctx.canvas.clientHeight;
    var height = 0;
    var stave_height = Math.floor(canvas_height / ( staves + 1));
    var num_items;
  
    var range = canvas_width / 20;
    
   
		
		
    for (let i = 0; i < staves; i++) {
  		num_items = Math.floor(Math.random() * 5) + 5;
      height += stave_height;
      //drawDot(ctx, Math.floor(Math.random * canvas_width), height);
      for(let j=0; j < num_items; j++) {
        //  pickItem(ctx, x1, y1, x2, height, radius, fill)
     		//drawDot(ctx, Math.floor(Math.random() * canvas_width), height);
     		var x1 = Math.floor(Math.random() * canvas_width);
     		var x2 = x1 + Math.floor(Math.random() * range) + 20;
     		var radius = Math.floor((Math.random() * (stave_height / 2)) + (stave_height / 2));
     		pickItem(ctx, x1, height, x2, stave_height, radius , Math.floor(Math.random()  * 2));
      }
		} 
  }
  
  function parseForm(ctx) {
     ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
     
    var allnotes = document.getElementById("notes").value;
    context.fillText(allnotes, 30, 60);
    var notes = allnotes.split(",");
    
    options = [];
    
    //var dots = document.getElementById("dots").value;
    //console.log(dots);
    if (document.getElementById("dots").checked) {
      options.push(0);
    }
    var lines = document.getElementById("lines").value;
    if( lines != 0) {
      options.push(1);
    }
    
   var circles = document.getElementById("circles").value;
    if( circles != 0) {
      options.push(2);
    }
    
    console.log(options);
    
    if (options.length > 0 ) {
      drawScore(ctx, notes.length, 1, 0, 0, 0);
    }
  }
  

    var c = document.getElementById("canvas_images");
    c.width = 0.99 * window.screen.availWidth; 
    c.height = Math.max(c.height, 0.4 * window.screen.availHeight);
    var context = c.getContext("2d");
    //var numGlyphs = Math.floor((Math.random() * 3) + 1) + 1;
    //var blob = new Image();
    //var x, y;

    context.font = "300% Bravura";
    //blob.src = "https://farm8.staticflickr.com/7322/9736783860_4c2706d4ef_m.jpg"
    //blob.onload = function() {
    //    context.drawImage(blob, 0, 0);
    //    for (var i = 0; i < numGlyphs; i++) {
    //        x = Math.floor((Math.random() * i * 50) + 1) + 5;
    //        y = Math.floor((Math.random() * 205) + 1) + 7;
    //        //1f49b
    //        context.fillText("<3", x, y);
    //    };

    //};
    //context.fillText("<3", 100, 100);
    
    //drawScore(context, 1, 1, 0, 0);
    
    var options = [];
    
    parseForm(context);
    
    formElem.onsubmit = async (e) => {
    	e.preventDefault();
			parseForm(context);
    }

</script>

#CVQCon2022

I blinked at the flash of light as the roar of white noise receded. I was standing in a lobby.

A man said my name and handed me a badge and some papers. “Your talk is at four tomorrow”.

The room swam and shimmied.

Another man steadied me. “Feeling a bit woozy? That should pass soon.”

I blinked and nodded, but he looked concerned. “Would you like a cup of tea?”

I nodded and he lead me to a folding chair.

“Do you have any shellfish allergies?”

“No, but I’m vegan.”

“Oh, well, we’ll get you a glass of water then. Do you have any friends here?”

“I don’t know.”

“Maybe you’d like to check into your hotel room? Are you staying at the Hilbert?” Without waiting he looked at my welcome pack. “Yes, you’re in room 1024. Why don’t you drop off your bags there now?”

An hour later, I stood much more steadily in the main convention hall. I was still blank on most details about arriving or even deciding to come, but I knew I was at CVQ Con. A legendary mix of academics, arts, industry, and cosplayers. Fans compared it to Burning Man and Comic Con mashed up with Coachella. I’d never been to any of those, but now I was in exhibit hall B, next to the Prion Disease booth! I surveyed the crowd excitedly. A queue snaked up to the prion booth, who were giving away free lobster slushies.

I frowned and decided to go to the most famous CVQ Con standby, the “bottomless” ball pit. The signs for the pit meandered around the hall like traversing an Ikea. I looked for a shortcut, but my printed map and the posted maps seemed to be mirror images of each other. I walked, following the signs, until I was again in front of the prion booth. Damn it. But, wait, didn’t the booth have a sign with black letters on a white background? This one had white letters on a black background. How many prion booths does one con need? I kept following the ball pit signs.

As I walked I looked at my phone. Social media revealed that I did have friends there, but mostly not people I knew in real life. “I’m on the grass, come find me,” Agatha posted. But where was the grass? Not only had I not seen any outdoor space since arriving, I hadn’t even seen anything that resembled an exterior wall. The centre seemed improbably huge.

I turned left and found myself in the food hall and suddenly realised I was starving. The first vendor sold lobster bisque. The second sold fried lobster sticks. The third, lobster cakes. Lobster burgers. Lobster dogs. A large banner proclaimed that the food was “Proudly Sponsored by International Lobster.” My head started to hurt.

I went to the nearest stall. “Can I just get a cup of black coffee?” I asked.

“Sure!” The barista started up the grinder.

“No lobster!” I joked.

The grinding stopped. “Oh, sorry.” she said. “We can’t do lobster-free coffee.”

“What?? Do you have tea?”

She looked apologetic, “Yes, but -”

“What in the hell?”

“International Lobster sponsored all the food this year. All of it. Even the vending machines.”

“Oh no.”

“There’s a food truck outside. Over the road by the grass.”

“Where is that?”

Another customer pushed in front of me. “If you’re not helping him, can I have a grande lobstercinno?”

“Coming right up!” said the barista cheerfully. The grinder started again, at least 5 times louder than before. A queue had formed behind me. Giving up, I turned to walk away and nearly crashed into somebody several centimetres shorter than I.

“Excuse me, are you Charles?” he said.

“Yes . . .”

“I recognise you from your profile picture on the fediverse! It’s nice to meet you in real life.”

“Oh, yeah, amazing! Sorry, who did you say you were?”

“@BeatCruelEatcha@squid.party!”

“Oh, uh, great.”

“Isn’t this incredible!!” he enthused.

“Yeah, it’s super cool. I’m kind of a bit hungry, though.”

“The lobster dogs are fantastic!”

“Yeah. I’m vegan. I don’t even know where to get a cup of tea.”

“Ohhhhh” he thought “I actually came for the lobster tea. It’s really good. If you like lobster, I mean.”

“Uh, ok.”

“Say, have you been to the bottomless ball pit? I heard it was closed because somebody peed in it. But then somebody else said it was filling up with lobster.”

“What?”

“Not food!” he clarified. “Apparently the basement of the centre is International Lobster’s main processing facility. All the pipes running everywhere are pneumatic lobster tubes.”

I looked at a nearby pillar which did have some large pipes attached to it.

“If you put your ear to them, you can hear the lobsters whizzing by.” He placed his ear on the pipe and, unsure what to think, I also had a listen. After a moment, there came a rattling zing, as if something had quickly swept by. “Did you hear that?” He exclaimed. “It’s their pressurised lobster system! It’s revolutionised the shellfish industry!”

“Wow.” I laughed nervously.

“Anyway, I heard that one of the pipes under the ball pit ruptured and it’s been filling up with lobsters.”

“That sounds bad.”

“If it keeps up, they’ll have to evacuate the centre!”

As he spoke, a klaxon rang out overhead. “Would guests please proceed to the nearest exit” said a posh, pre-recorded voice.

“What did I tell you!” BeatCruelEatcha said proudly. “Are you staying at the Hilbert? The monorail station to the hotel is just to the left there.”

I woke up the next morning with a hangover that could inspire epic poetry. I don’t normally drink, but there had been mead. Little food. Arguments about Marxism. Furries? I found alka seltzer laid out on my bedside label next to a scrawled note I couldn’t read.

Half an hour later, I saw it said “4pm paper”. Oh god, the paper. What was it about? Had I even written it? I found half a slide presentation on my computer and the details slowly came back to me. I made more slides.

Microsoft teams chimed to life. “Good luck on your paper!” said a message from my boss. The fan on my computer started racing. Oh no! I switched back to my presentation software to hit control-S but the windowing system froze on the Teams alert. The fan reached supersonic speeds. The screen went black, the presentation changes lost forever.

Ninety minutes later, presentation sorted, but feeling very woozy, I bought a faux lobster roll from the takeaway just outside the train station. It seemed to squirm in my hands and wriggled free, falling to the ground and rolling into a storm grate as I heard my train arrive. They only came every half an hour. I ran for the platform, but it pulled away as I cleared the ticket gates.

I went to the station guard. “Can I get out to get a snack while I wait for the next train.”

“You’d have to buy another ticket.”

“What, really?”

“Sorry, company policy.”

I sat and my head spun. I couldn’t do a day of no food with a head like this. I looked up at the sky in despair and it seemed purplish. The banner over the platform said “Welcome to CVQCon2023.”

BeatCruelEatcha, sat down next to me. He’d grown a full beard since I’d seen him the previous night. “You too, eh?”

“What?” I noticed a lobster on the platform. It seemed to glance at a wrist watch. Another lobster came to stand next to it. It was holding a tiny newspaper.

“The fast train that just left – it’s temporal flux adjuster is out of alignment. It’s cast us all into 2023.” He gestured at the large, white blank spot floating in front of me. “It’s why those voids are everywhere. 2023 isn’t built yet.” A train honked in the distance. “That’s our train,” he said standing up. The honking got louder and louder.

I open my eyes to the insistent beeping of my alarm. I don’t normally drink, but I had a hangover that could inspire epic poetry. On my bedside table was some alka seltzer and a note I couldn’t read.

Half an hour later, I was making slides for a presentation, pressing save after every change. Just as I finished, my boss sent a Teams message wishing me luck. The computer crashed and I left my room. I was half way to the train station when I realised I hadn’t brought my ID badge and went back for it.

I bought a faux lobster roll outside the station and dropped it. I heard the train coming, but missed it. I sat down with an overwhelming sense of deja vu.

A woman sat down next to me. “Are you Charles?” She asked. “Actually, I know you’re Charles. I met you last night, but I have a feeling you might not remember.”

I frowned. “I’ve had a totally mundane but entirely peculiar morning.”

“I can imagine. Anyway, last night, you asked me to remind you that there’s vegan food next to the bottomless ball pit, which is next to the room where your paper is.”

“Isn’t the ball pit full of lobsters?”

“What? It’s full of bottoms. Every year, people think this is the funniest joke, too many people pile in and it breaks. Again.”

“I see.”

“Also, your paper time has changed. You should head straight to the room when you arrive.”

“Thank you! You’re very helpful!”

“I the chair of your paper session. I’ve also had an odd morning. I had the most incredible dream about our session topic.”

“Oh?”

“I’ve thrown away all my notes and am going to relay my dream instead!”

The room with the paper session was mostly empty and seemed to throb with hangover. I kept thinking I saw lobsters from the corners of my eyes.

With great enthusiasm, the chair launched into the presentation from her dream. Like everything else that day it seemed familiar. Too familiar. It was the first half of my paper!

I blinked in disbelief, with no idea what to do. Everyone was looking at me. Not because they knew what had happened but because it was now my turn to talk. I panicked. “Um, following on from that . . .” I skipped to my new slides and started from the middle.

“Poppycock!” someone shouted.

I squinted at the audience. There were only about three people there. “Excuse me?”

“This is completely derivative and utterly mundane.”

I couldn’t tell who was speaking. From the corner of my eye, I thought I saw my dropped breakfast tumble past. The fire alarm went off.

“Oh, this is another dream” I said into the microphone.

“Would guests please proceed to the nearest exit” said a posh pre-recorded voice.

I waited to wake up.

“You need to evacuate” said the paper chair.

“I’m certain I must be dreaming right now.”

“That may be so, but you still need to evacuate.”

We walked single file into a corridor and down the stairs. A faux lobster roll bounced along side me.

“Sorry, I dropped my breakfast” said a man behind me. It was BeatCruelEatcha, clean shaven.

“Is two alarms in two days normal for this event?” I asked him.

“Oh no, not at all.”

“That’s good.”

“It’s normally much higher.”

“I think I’m going home.”

“Oh, but you’ll miss the dancing lobster!”

“I’m too hung over for this.”

“I’m not surprised.”

I thought for a moment. “Lobsters aren’t normally a dancing species, are they? I mean, don’t they usually just scuttle?”

We reached the pavement. I looked up at the convention centre and saw flames coming from the windows.

I arrived home the next morning. “You’re back early!” my spouse said, “How did you paper go?”

“I got heckled by a lobster roll and then the convention centre burned to the ground.”

“I thought you were vegan?”

“It was faux lobster.”

“Oh, that reminds me. A bunch of postcards arrived for you while you were gone. I’m not sure what they’re about.”

On the table there was a stack of at least 20 vintage postcards, mostly bearing the names of towns in Maine. They all had pictures of lobsters. “Poppycock!” they said.

“What the fuck?”

“There’s one more.”

This one had a picture of Dali’s lobster phone. “I found your paper to be very salient and was disappointed when you were interrupted.” Like the others, it was unsigned.

“When did these arrive?”

“Yesterday morning.”

“What? All of them?”

“Oh no. The Dali one arrived earlier.”

“Are you sure?”

She shrugged and went to to answer a knock at the door. “Did you order this?” I heard her call to me.

A delivery driver was at the door with five cases of lobster. I looked at the labels. “These are for next door.”

“As I was just saying, your neighbour asked if you could take them if they’re not in.” said the driver.

“Yeah, fine” I said. The boxes were vented on the sides and I peered into them. The lobsters were alive. One of them was wearing a wrist watch. “What the hell?”

“Keep them in a cool place, out of direct sunlight.”

“It’s wearing a wristwatch!”

The driver gave me a look. “They have rubber bands to keep them from pinching you, but you should still avoid sticking your fingers in the boxes.”

“You don’t seem yourself” said my spouse when we were back at the table.

“I feel like I’m seeing lobster everywhere.”

“It’s just a coincidence.”

“No, I mean out of the corners of my eyes. In the train stations, under our bed, lurking in the dark.”

The lobsters in their boxes all started to move.

“They’re dancing.” I said.

Teshuvah

So this is the time of (the Jewish) year when one is meant to apologise for one’s misdeeds.

As someone raised Catholic, I just have a fee-floating sense of guilt that I’ve probably wronged or at least annoyed everyone in my proximity at least once over the year.

Obviously, one apologises as things arise, so the point of this season is trying to perhaps become aware of ongoing or systemic things I might be doing? I’m not sure. This is why I’m reading so many books, trying to get a sense of the milieu and philosophical underpinnings of Jewish thought.

I feel like teshuvah is an especially good thing for addressing issues in relationships (or in tight-knit communities, which is where many practises arose). Often, my spouse hasn’t told me about weekend plans and I get annoyed, but also I didn’t ask. Forgetting to ask is very much an ongoing thing for me. It’s not just manners, but it also risks creating the impression that I’m not interested. I am interested and I could communicate that better.

So in the coming year, I think I should be a more active listener. Most of my friends just volunteer what they’re up to instead of waiting for the polite question that never comes and I appreciate that, but I could be better on this.

Laptop and Tuba

This post is taken from the lightening talk I gave at AMRO

Abstract

I have decided to try to solve a problem that I’m sure we’ve all had – it’s very difficult to play a tuba and program a computer at the same time. A tuba can be played one-handed but the form factor makes typing difficult. Of course, it’s also possible to make a tuba into an augmented instrument, but most players can only really cope with two sensors and it’s hard to attach them without changing the acoustics of the instrument.

The solution to this classic conundrum is to unplug the keyboard and ditch the sensors. Use the tuba itself to input code.

Languages

Constructed languages are human languages that were intentionally invented rather than developing via the normal evolutionary processes. One of the most famous constructed languages is Esperanto, but modern Hebrew is also a conlang. One of the early European conlangs is Solresol, invented in 1827 by François Sudre. This is a “whistling language” in that it’s syllables are all musical pitches. They can be expressed as notes, numbers or via solfèdge.

The “universal languages” of the 19th century were invented to allow different people to speak to each other, but previously to that some philosophers also invented languages to try to remove ambiguity from human speech. These attempts were not successful, but in the 20th century, the need to invent unambiguous language re-emerged in computer languages. Programming languages are based off of human languages. This is most commonly English, although many exceptions exist, including Algol which was always multilingual.

Domifare

I decided to build a programming language out of Solresol, as it’s already highly systematised and has an existing vocabulary I can use. This language, Domifare is a live coding language very strongly influenced by ixi lang, which is also written in SuperCollider. Statements are entered by playing tuba into a microphone. These can create and modify objects, all of which are loops.

Creating an object causes the interpreter to start recording immediately. The recording starts to play back as a loop as soon as the recording is complete. Loops can be started, stopped or “shaken”. The loop object contains a list of note onsets, so when it’s shaken, the notes played are re-ordered randomly. A future version may use the onsets to play synthesised drum sounds for percussion loops.

Pitch Detection

Entering code relies on pitch tracking. This is a notoriously error-prone process. Human voices and brass instruments are especially difficult to track because of the overtone content. That is to say, these sounds are extremely rich and have resonances that can confuse pitch trackers. This is especially complicated for the tuba in the low register because the overtones may be significantly louder than the fundamental frequency. This instrument design is useful for human listeners. Our brains can hear the higher frequencies in the sound and use them to identify the fundamental sound even if it’s absent because it’s obscured by another sound. For example, if a loud train partially obscures a cello sound, a listener can still tell what note was played. This also works if the fundamental frequency is lower than humans can physically hear! There are tubists who can play notes below the range of human hearing, but which people perceive through the overtones! This is fantastic for people, but somewhat challenging for most pitch detection algorithms.

I included two pitch detection algorithms, one of which is a time based system I’ve blogged about previously and the other is one built into SuperCollider using a technique called autocorrelation. Much to my surprise, the autocorrelation was the more reliable, although it still makes mistakes the majority of the time.

Other possibilities for pitch detection might include tightly tuned bandpass filters. This is the technique used by David Behrman for his piece On the Other Ocean, and was suggested by my dad (who I’ve recently learned built electronic musical instruments in 1960s or 70s!!) Experimentation is required to see if this would work.

AI

Another possible technique likely to be more reliable is AI. I anticipate this could potentially correctly identify commands more often than not, which would substantially change the experience of performance. Experimentation is needed to see if this would improve the piece or not. Use of this technique would also require pre-training variable names, so a player would have to draw on a set of pre-existing names rather than deciding names on the fly. However, in performance, I’ve had a hard time deciding on variable names on-the-fly anyway and have ended up with random strings.

Learning to play this piece already involves a neural learning process, but a physical one in my brain, as I practice and internalise the methods of the DomifareLoop class. It’s already a good idea for me to pre-decide some variable names and practice them so I have them ready. My current experience of performance is that I’m surprised when a command is recognised and play something weird for the variable name and am caught unawares again when the loop begins immediately recording. I think this experience would be improved for the performer and the listener with more preparation.

Performance Practice

The theme for AMRO, where this piece premiered was “debug”, so I included both pitch detection algorithms and left space to switch between them and adjust parameters instead of launching with the optimal setup. The performance was in Stadtwerkstadt, which is a clubby space and this nuance didn’t seem to come across. It would probably not be compelling for most audiences.

Audience feedback was entirely positive but this is a very friendly crowd, so negative feedback would not be within the community norms. Constructive criticism also may not be offered.

My plan for this piece is to perform it several more times and then record it as part of an album tentatively titled “Laptop and Tuba” which would come out in 2023 on the Other Minds record label. If you would like to book me, please get in touch. I am hoping that there is a recording of the premiere.

Community servers

live blogging AMRO

where have all the servers gone?

Aileen used to run a home LAN which grew into a home server, hosting 60 domains. Domains belong to people. Human relationships are central to all community projects.

Art spaces used to require community ISPs. Some of these have migrated to do hosting for art orgs. Some have migrates to hosting individual artists or collectives.

Some groups use servers as a part of feminist practice, knowledge sharing and collective empowerment. Feminist servers can be intergenerational. They can have joyfulness, reflection, and peer support.

There are still different wants to think about where and how to do servers. Always-on is not necessarily the most important value for arts servers.

Homebew self-hosting is cool again! There are collectives of people doing this.

Servus.at runs a proper data centre. Theyare a membership organisation. They also do operate as service that aims at reliability.

Sharing tech knowledge is a particular skill that not all techies possess.

There are dualities in trying to run an NGO in a capitalist space like the internet. Values about uptime and so forth cause friction. Things break and people get frustrated, so there is serious emotional labour in relationship-based tech services. They are trying to use tools made for profit on a non profit context.

What is the relationship between the server and the community?

User education is important. “The server is a.physical thing. We blew a fuse. Please stand by.”

One group has a mobile raspberry-pi based server. It is currently downstairs. When its on trains, its offline.

ISPs have histories. People working at them encounter users at moments of errors.

Knowledge transmission is always incomplete. Servers are complex and documentation is hard.

Capitalism is an inescapable context. The contradiction this creates is never resolved. Fixing servers can be hard or boring or frustrating.

What if computing was seasonal?

Community server NGOs are chronically underfunded. Membership organisations doing servers make members part owners. This gives a meaningful relationship with the infrastructure and reliability in terms of organisational stability. And data sovereignty.

Self hosting is not safer in terms of data reliability. Back up your data. If the data is necessary for you, then form a plan to preserve it.

How have things changed since serves was founded? People want to form collectives, but its unapid time and effort to document things.

Embrace, extend, extinguish fucks up stable protocols and makes things harder to maintain. Free software companies are also capitalist.

Systems can become hacks upon hacks upon hacks. Even Foss projects can chase shiny overcomplexity. Some building blocks may be politically neutral but systemic tools reflect capitalist values.

Thank your sysadmin!

Systerserver exists for people to learn. They have a system for shared command line sessions so everyone shares a terminal.

A matonaut is now reminiscing about the 90s and that era of websites. In the old days these collectives were about giving access. But now it seems like a lifestyle choice.

arts servers have greater longevity than community servers due to more sustainable funding models. (Oh, to be European!)

Q: Has the war in the Ukraine effected solidarity networks in hosting? What about circumventing blocks? Guides for activists now in effected regions are howto exploit gaps, not how to host. Telegram somehow allows a way to create proxies. This creates dependencies on corporations like Amazon, telegraph etc. How can we regain agency? Can we communalism proxies?

A: Activists in Rotterdam started building up resources. But there’s so much fragmentation. Will USB sticks be a thing? Some activists are still using Facebook because it feels safer than many mastodon servers.

Could mirroring be a useful practice?

What kind of resource sharing would help support community servers? We don’t wish to be islands!

Documentation/ information sharing can be helpful.. Store playbooks in git repos.

the era of websites shoukd be over. Nobody needs websotes any more. We should move on and make text services for text.

its time for an attitude change. Changing philosophy can change terminology can change philosophy can create situated knowledge. We can use this change in mindset to slow down.

Linux community’s are corporatised and isolating.

Q: Ate feminist server communities a service?

A: partially. Artists are relying on etherpad and some other services. There is a syster server mastodon instance.

Farmasoft quit serving schools during the pandemic because they did not have the resources to sustain that useage level. This had implications for teachers who were trying to avoid google docs. But also, it was an emergency and they didn’t have the resource. When should money get involved in these processes?