June 2024

Tabroom

The season is officially over as of last Friday night.   I got home late Saturday and slept for the next 14 hours.

The Tabroom Inbox is an unmitigated hit.  15,323 users have accessed it since I rolled it out without announcement on Friday May 24th, a month ago today.  There haven’t been very many tournaments since then, though we have held two of our largest.  People are finding it and using it.  So hurrah for that.

On Downtimes & Slowdowns

I thought I had oversupplied Tabroom with compute capacity, but we were hit with two slowdowns during Nationals anyhow.  Tuesday midday we just had too much traffic for the machines, so I doubled the memory on the existing ones and spun up two more.  It was overkill, but it worked.

Monday morning, it slowed down but that had nothing to do with capacity.  Sometimes database queries do fine when they return 2,000 records for normal tournaments, but slow down out of proportion when they return 20,000.  Or, 200,000.  On Monday, we discovered 4 such queries, and each of them was being hit dozens of times.  The most significant was the public list of judges at the tournament & their paradigms.  The query behind that page usually takes .04 seconds.  At Nationals it required 2 minutes.

2 minutes sounds like not much time, but in terms of a computing operation it’s deadly slow. The average query to the Tabroom database takes milliseconds.  A 2 second query is usually unacceptable by my standards, unless it runs rarely and is very complex.

A 2 minute query also avoids another capacity-saving technique.  Public facing pages that don’t change often, like that judge list, will be calculated and laid out on the server, with the code for your browser sent off at the end.  For many pages, the server will then save that resulting display code in a cache.  The next person to ask for that page just gets the same display code without the intermediate computation having to be redone. Everyone so often, depending on the page, the cache is invalidated and the page is recalculated on the next request, but for pages that don’t change often like a judge list, that’s usually just once every 30 minutes or so. We save a lot of server capacity and cost that way.

However, if the first request comes and takes 2 minutes to complete, then the next request, and several hundred after that, come in before the cached result is ready.  So they too are sent to the database instead.  A bunch of 2+ minute queries hitting at once become a problem real fast. Soon, the database server gets bogged down with hundreds of these difficult and long running queries, and has few resources left for more ordinary data requests, and the site eventually goes kerplop.

That’s a technical term.

We also  went from using 2 giant machines to a bunch of smaller machines.  That helps us in a lot of ways — when one machine gets knocked out by a hardware fault, we lose less of our total capacity. But,  each machine has its own cache. So instead of an inefficient query hitting 2 times per cache period, they now run 16 times.

For next season I’m on a mission to make sure that you and I do not have to deal with this type of problem again.  I’m going to measure out what the traffic at each slowdown was and what type of machine profile was necessary to meet the demand.  In other words I’ll be revising upwards my idea of what “overkill” means.  Also, a lot of this mess is because we’re still largely using legacy code that takes a lot of memory and CPU to run; the more progress I make replacing it with rewritten JS code the faster things will be with the same compute power.  And finally Hardy has reconfigured our gateway machine to redirect traffic away from Tabroom when the servers are overloaded.  That will help us recover faster from these types of things when you all start refreshing the page every heartbeat; most of those requests will fail, but the ones that do get through will be served properly and we’ll be better able to log in and fix things.

Next Season

So next year I’m no longer tabbing any NDT/CEDA tournaments, and will prune out a fair few others that will be fine without me. It’s difficult to choose which ones to skip, since I don’t tab tournaments for people I dislike.  So I must tell people I like that I’m out.  I do enjoy travel and interacting with the community like that. But I can’t sustain what I’ve done this year, and focus on the long term needs of Tabroom and the code rewrite.  I’m also concerned about my health. I’ve gained back enough of the weight I lost during Covid to be alarmed by it, and this summer I need to reverse that trend.

We’ve also dropped a lot of the sustainability lessons I had thought we’d learned around the pandemic.  Tournament schedules start too early, in the face of a growing mountain of evidence about how badly that affects teenagers and young adults, much less me.  You’d think we’d value the students thinking at their best to get the most out of debate, but instead most tournament directors let their anxiety about what might happen at the end of the day push them into earlier starts.  I don’t truly understand that; in order to make sure we don’t stay to late and lose sleep, we therefore make everyone get there too early and … lose sleep?

And for me, when I’m tired, I have much less willpower to order the salad instead of the burger.  The tired also lasts longer; when I get home from the west coast it can take days until I right my schedule, and by then I’m off on another jaunt.

Maintenance Mode for Tabroom Legacy Code

By August 1st or thereabouts, Tabroom’s legacy Perl code will be declared maintenance only.  That means I will only apply bug fixes and updates to the existing legacy Tabroom code, and will not be coding any new functionality into legacy Tabroom but instead will focus exclusively on the front end for the new system in Javascript & Svelte.  New features will wait until they can be deployed in JS.  That will require focus, discipline and lot of saying no, but it’s the only way we’ll get over this hump of deploying new code while maintaining the system.

This rewrite has been on our horizons for a long long time, and it’s been derailed and delayed by a lot of circumstances, from our failure to work out the original collaboration plan well, to the pandemic.  And it would not have been easy even without those challenges.  Writing a new system while maintaining its predecessor alone is extremely hard, to the point that many such efforts fail.  However, we have made progress behind the scenes, and now we’ve about reached the limits of what I can do with adapting the system over seamlessly.  So now, the seam.

Non Professional Quick Hits

  • I missed the Celtics parade for their 18th title while at Nats.  I sent the boss an invoice for one championship parade.  I know he can’t fulfill that.  I just wanted it on the record.  By the looks of this team, we may be parading banner 19 soon enough anyway.
  • I have planned out my annual July walkabout.  This year: Alaska. I leave in a few days and am starting to pack.  I’m going to be on a lot more guided tour type things this trip than I usually do; more often I prefer to have zero plan and move each day as the spirit hits me.  But in a place as vast and wild as Alaska, where rental car companies are very clear that you may not take their vehicles to some of the best spots, I am erring on the side of the professionals for this one.  Next trip, I’ll go more independent.
  • My brother in law’s mother is having some health struggles. Send some positive vibes northwards to Maine. I’m not one for much belief in the ephemeral like that, but sometimes it’s all you can do.
  • I may have accidentally bought a new super-telephoto lens for my camera that I don’t actually need for the trip.  Oops.  That said since I’m just a hobbyist I don’t feel the need to buy the huge, expensive Canon lenses with the magical red ring.  That color describes your bank account balance is if you buy too many of them.  Honestly, I prefer the ring-less cheapo line for my hiking and ranging anyway; they’re far lighter and easier to carry, and it’s less terrifying if you drop them.
  • I somehow found time to read.  I finished the Strong Towns Housing book, a re-read of the excellent Tony Judt history of postwar Europe, a takedown of the historicity of constitutional originalism by friend-of-friend Jonathan Gienapp, and some fiction that I wouldn’t especially recommend.  Looking for audiobook suggestions now for some long Alaska drives.
  • This summer I’m hoping to get serious about taking the massive pile of photos I’ve taken in the last few walkabouts and pulling out the dozens that actually have a sense of composition and style to them to display in a more prominent manner.  But I have to say, even if I never look at them again, the process of finding photos has pulled me into places I appreciate being for their own sake.
  • Late summer I’m landing in LA for a Mock Trial workathon and have used the excuse and coast-to-coast plane ticket to slide in a side trip to Mendocino the week before.
  • I’ve written about half of a book that I’ve been working on for a while.  It’s all handwritten right now.  I have no idea what I’ll do with it when I’m finished, but I think I owe it to the stuff to at least type it up and finish it, even for just myself.  I’m contemplating whether I should go rent a cabin somewhere woodsy and not let myself come home until I’ve focused a little more on it.
  • I’ve had six people in the last three months proactively tell me I should start a travel blog.  I’ll consider doing it if I can manage to sit down and crank out six entries first.  But it’s not a terrible idea.

Tabroom Blue™, or, The Death of the Text Blast

Elon Musk loves to inspire headlines. He’s also good at it, whch is nice because he doesn’t appear to be good at much else. Take, for instance, running a busness. It’s a skill you’d think a self styled god-tier entrepeneur might have. But just last year, Musk signed a $42 billion agreement to buy Twitter without apparently understanding it. Perhaps he didn’t even read it. But Twitter’s lawyers sure did, an when Musk got cold feet and tried to back out of overpaying for the company, they took him to court and lined up a sufficiently rapid beatdown that he surrendered and bought the company anyway. He then strolled into the company, spent barely a week in the office, and fired 3/4 of its workforce without bothering to understand what they do.

Next time you want to light $42 billion on fire, Elon, feel free to invest in speech & debate tabulation software instead.

That only started the headlines; they’ve been near nonstop since. Each article is a paragraph in a wider story. Musk’s original goal, the spark that spurred him to sign that awful contract in the first place, was to find an online home for unimpeded right-wing discourse. He found it unacceptable that Twitter and other social networks drew boundaries around Trump and his fiercest supporters. So Musk bought the place. Now the only people who get banned from Twitter are people who annoy him, people he deems too ‘woke,’ or sometimes folks who point out facts about his decisions.

But that policy shift created some serious problems for Twitter. The forces pushing to remove far right discourse from social media wasn’t a diabolical progressive conspiracy in Twitter’s management, funded by George Soros and connected to the Clintons somehow. Musk’s real problem is that as long as social media is paid for by advertisers, alt right speech cannot be welcome.

The dirty secret of the rightmost wing of the Republican party is that they’re a very small part of the overall population. They exploit loopholes and broken rules in the constitution to produce an oversize political impact in the US. Their demographics are skewed older and whiter, and such people turn out to vote in large numbers; they’re more rural than urban, and rural areas are over-represented in Congress and the electoral college. The GOP has spent a few decades cheerfully narrowing voting rights protections so as to produce election wins from an ever smaller base of support. But, that base is small, and when it comes to business, you can’t built much of a market on just that small faction, unless you’re running a scam.

Businesses need to reach a large mainstream audience. And modern far right rhetoric is polarizing: its few fans want to hear nothing but, but everyone else is allergic to it. So engagement and audience sizes on Twitter have been dropping off ever since Musk designated it as a safe haven for his brand of free speech.

Apropos to nothing, you can now find me on Mastodon at https://tech.lgbt/@mildconcern.

Naturally, as customers leave a platform, so too do advertisers. They always chase the largest audience. But it’s not just a matter of how many ads get seen, but what type of ads they are. Before Musk, Twitter’s revenue was about 90% brand ads. Brand ads are not designed to generate clicks and direct sales, the way most ads on Amazon work. Brand ads intend to create positive associations, so you remember the company the next time you need to buy whatever it is they sell. A car maker is a classic brand advertiser. The chances someone clicks an Instagram post and puts a Camry in their cart are very low. But if readers associate Toyota with “reliable” and “comfortable” and “safe” over time, through repeated exposure to brand ads, they are more likely to buy a Camry a year from now when their old car dies and is too expensive to fix.

If you’re running brand ads, you take care that the only associations you build are positive ones. Twitter is a news platform, and when the news ran bad, brands would pause their ads. Nobody wanted their ads to be associated with wars, earthquakes, or mass shootings. As discussion of the weekly tragedy would dampen out, brand ads would come back.

Now, enter Elon. Racism, sexism, or anti-LGBTQ rhetoric once got you banned; now it gets you retweeted by the company’s owner. Almost immediately, that rhetoric was everywhere. Advertisers reacted. Various estimates say Twitter’s brand ad revenue has dropped anywhere from thirty to seventy-five percent. That free speech sure has cost Musk a lot. Note that this process does not require advertisers themselves to personally object to the speech in question. They only care that most customers hate it. The companies and their management could be wildly racist, sexist and homophobic, but if they answer to investors, they’re still going to yank those ads. The bottom line is their only true morality.

So, a conundrum for Musk. Almost all of Twitter’s revenue was brand ads, and brand ads cannot coexist with the type of speech he spent $42 billion to liberate. Perhaps the genius Elon was supposed to be could untie this knot, but our real world Musk has no answer. His main attempt is Twitter Blue: selling blue checkmarks for eight bucks a month. It’s brought in nothing comparable to the revenues he’s lost. And Twitter has almost nothing else it can offer to a paying customer.

So Musk is now lashing out: he’s threatened his advertisers, but then gave ads away — and neither brought them back. His company is drunkenly lurching towards bankruptcy, perhaps as early as this summer. Musk, without any real idea of how to fix it, has crawled into the last refuge of the rich guy: cheaping out on everything.

He’s cut most of the staff, and cut perks, space and benefits for those who’ve stayed on. He stopped paying rent on his offices. Twitter keeps having technical failures because he shuts off servers at random to prove they’re not needed. Hundreds of vendors have overdue invoices sitting on his desk. He’s cutting pennies because he can’t find dollars. It won’t save Twitter, but it’s all he has left.

A few weeks ago, the tech press was baffled when Twitter announced that 2-factor authentication via text message will only be available to those checkmark buyers. Two-factor authentication, or 2FA, means you need more than a password to get access to an account. In its simplest form, a random code is emailed or texted to a user, and then asked as a confirmation of your identity. That should prove you have the phone listed in the account, which gives the site further proof that you’re you. Musk now said text messages only were for paying customers.

The more complicated method, 2FA by means of an authenticator app, was still free. Such apps work by taking a sequence of random numbers, called a shared secret. The site generates the secret, and you copy it into the app on your phone, usually by means of a QR code. After that, it’s never sent over the internet again. Instead, the app combines it with the current date & time, and runs that in turn through some math that produces a six-digit code. The site you’re logging into runs the same math on the shared secret stored in your account. If its result matches the six-digit code you typed in, you’re allowed to login.

Because they rely on timestamps, the correct code changes every minute, making them hard to snoop usefully — by the time you’ve cracked one, it’s changed. And, for Math Reasons, you cannot easily guess the original shared secret from the codes it outputs. The math works only forward, not backward. One-direction codes like that are called hashes, and among other things, it’s how your Tabroom password is stored in our database. When you log in, we can’t tell what your original password is, but we can tell that you typed it in correctly, or else the hashes would not match.

Shared-secret apps are a much more secure method of 2FA than using text messages. Texts aren’t sent encrypted, and it’s proven relatively simple to hijack cell phone numbers, especially if you’re targeting someone in particular. Phone company customer service reps are relatively easy to fool, and have often give account and phone access to hackers. With apps, the shared-secret is never sent to a phone company; it’s never trusted to anyone at all besides you and the service you’re logging into.

That’s why the tech press was confused. Paying customers are being given exclusive access to a less secure system. Most outlets assumed Elon was just being arbitrary and bizarre. Again. Given how much of the last year Musk has spent playing the role of “clueless clown on fire,” they can be forgiven for falling back on that explanation. But I knew right away what it’s all about, because it’s related to a slow crisis that Tabroom has been facing for most of the last year.

You probably think sending a text message is free. They have been free for people with most US phone plans for at least a decade. As soon as smart phones became the norm, and data became the bulk of cell traffic, phone plans stopped charging for talk minutes and texts. Data was where the money was. Who even talks on their phone anymore, anyway? My own ringer has been on silent for about four years, now.

So texts between phones are free now. But sending a text from a non-phone, such as a web system that manages speech & debate tournaments, to pull a random example out of nowhere, it’s more complicated. For Tabroom, I have two basic choices. I could use an SMS/MMS gateway service, which talks directly to the cell providers and sends messages. Or, I can use email. An email sent to 5555551234@messaging.att.net will deliver as a text, as long as that line is on AT&T.

So why not use a gateway? They charge a small amount per text you send. But if you’re Twitter, those charges can add up. Rumors say that Twitter spent $60 million or so per year on these texts, which seems staggering but not when you weigh it against a company that once had $5.4 billion in annual review. That is, until a business leader with no idea how to save his sinking ship takes over and starts attacking every little expense he can find. So, I figured he saw that bill and decided to cut it.

I hope this revelation doesn’t shock you, but Tabroom has never had $5.4 billion in annual revenue. So, we use the free method. But much as Musk’s free speech had costs, so too does free text messaging. Email to text gateways are much less reliable. Messages get tagged as spam, or sometimes just don’t deliver, all the time. I also have to keep track of your cell provider, because each one has a different email address I have to send messages to. When Tabroom users switch carriers their text blasts stop working until they update their account. And of course, when folks who judge tournaments do switch carriers, their Tabroom blasts aren’t usually their first concern, or their tenth. Few judges are constantly yearning to be harassed into hitting their start round button.

Those downsides are all annoyances. However, now Tabroom also faces a legitimate danger: those email gateways are not really intended for bulk messaging. And, spammers sometimes use them to bother phone customers. So the carriers are growing more restrictive. AT&T drops any message with a web address in it. That’s why Tabroom doesn’t send map URLs anymore. And then in late 2022, T-Mobile began capping how many messages per hour a single sender can send them. Which means, if you haven’t noticed, that T-Mobile users don’t get text blasts during the middle of the day most Saturdays; we hit that cap all the time when Tabroom is busy.

I can’t complain to T-Mobile, because T-Mobile’s answer will be “you should be paying to use the SMS gateway.” So, Tabroom hosted 192 tournaments this weekend, with 2356 schools, 21,312 entries and 6,133 judges. Over the course of this Saturday, those 27,445 folks were sent 144,350 text blasts. At that rate, we’d run up a $75,000 annual bill. That’s a lot of money for the right to yell at debaters to be on time.

Is it worth it to increase Tabroom fees a substantial amount for that? Should we try to track who texts a lot and bill them extra — but therefore increase our own overhead tracking every time Menick harasses that judge who never hits start? What happens if Verizon or AT&T follow suit and start limiting us, too? AT&T is already quick to delay deliveries sometimes too, when it decides we’re sending spam. Do we rely on emails and forget texts, when most people don’t get audio notifications of new email anymore? Do I have to write an app for Tabroom just so people get notifications through it — and then pray new judges install it basically so they can be bothered?

I don’t know the answer. But I hope it doesn’t become a crisis. We’ve come to rely on the text message as a prime form of communication, especially during the pandemic and online debates. We need to rethink that a lot in the coming months or years. It’s already tumbling around my brain, for what it’s worth. I’m trying to make sure Tabroom survives longer than Twitter will, at least.

The way Musk is going, that shouldn’t be too difficult.

the loneliest moment

A paradox of debate is that an activity where thousands of people argue with each other at once can still leave us lonely.

I don’t buy into personality type tests, but I am certainly an introvert. Constant exposure to people wipes me out, but when I go to tournaments, my place is usually at the center of the storm. That costs energy. So, after all is done and I fly or drive home, I’m ready for a break from all you screaming performers.

But I live alone. Before this year, I’d return home to an empty and cold house and it would be too quiet, too fast. The stampede of debaters and judges who all rely on me for assignments and results were gone, and I’m just left with an echo. It’s strange to be lonely at the same moments you most want to be alone, but on those Tuesdays Afterwards? I was.

But that was the Before Times. The age of lockdowns has been unkind to us all. I’m a loner, sure, but also a nomad: I used to travel constantly, and even when I was home, I’d leave the house every day, if only to go work in a coffee shop or the library. The buzz of people around helps me focus, and the journey forms a boundary between work and not-work. In other words, I need people around that I can ignore. And it’s a rare introvert who can make do without human contact at all. I’ve found myself talking back to podcasts, or pacing around the living room for an hour at a time, or wasting gas just to change the scenery.

It feels like the worst year of our lives, even for those of us who’ve so far avoided direct harm from the greater wounds 2020 offers: the virus itself, the poverty it has sparked, the smoke and flames of an entire coast ablaze, or the constant reality that police can end black lives and stay free. Against that balance of misery, my own debts seem minor. But the lesson of a lonely time is that sometimes, no one is there to look out for you. Right now, no one can be, even if they wish to. You have to be careful of your own troubles, even if others have it worse. Being lonely and down might be the baseline right now, normal by majority vote. But it is no less healthy or easy to shoulder.

I bear the dubious honor of being Debate Famous. There are several ways to become Debate Famous – you can win a lot of tournaments, serve on a lot of tab staffs, national boards or committees, or just be obnoxious for long enough. Some manage all three! But I took perhaps the easiest route, and joined a tiny band with few entrance requirements and even fewer members. I am one of the Techies.

I cheat in calling us a band, for one of the defining features of a debate techie is that we all drift on separate islands. Each debate techie is tied to a Project. These projects are usually the residue of a hobby idea that got out of control. Tabroom is certainly that: it now runs 3,000ish tournaments a year and serves millions of hits per weekend. It’s a luxury beyond telling that the NSDA can make it my full time job and dedicate others to helping with the tsunami of emails that results from its popularity.

But at the end of the day, even with that support behind me, I’m still alone. Nobody understands Tabroom and its internal workings half so well as I do. If something major breaks, I can fix in minutes what might take anyone else several days. Speech & debate is never so lucrative that our scant resources can hire me a co-programmer; they’ve had to stretch to underpay me enough to do this full time. And that’s the root of my Debate Fame, because I am Tabroom, and it is me, as far as the debate world sees it. Every user of Tabroom therefore is one who relies on Palmer.

Such “fame” comes with a price, for technology is brittle. From time to time, some hidden capacity limit is reached, or a buried mistake in code I wrote six years ago decides TODAY IS THE DAY! My machines start to stagger, and disconnect, and lock up. My phone starts dancing with messages, half of which start “You probably already know about this, but… .” People have no choice, because only I can type the keys that get your tournament started again. Sometimes I fix it immediately, and people barely notice the trouble. Sometimes it takes me an hour, or two – or four – to find the illness and its cure. And those times are the loneliest moments I know.

If you were in a tab room with me, you’d just see me beating the crap out of my laptop keyboard. You’d hear me mutter incomprehensible nonsense to myself, as if I were chanting spells to appease furious eldritch demons of silicon and resin. I’d be zeroed in, focused on the screen, phone definitely muted. But I’m still utterly aware of you all. I can feel your eyes, the eyes of each and every one of the tens of thousands of you who rely on me to continue your tournament day. You might not know where I am, or even what I look like, but I can feel your eyes all the same, in the place where my neck meets my shoulders that tighten and coil with the strain of it. And I can’t step away, I can’t delay, because there’s no one to hand the problem to, and thousands are waiting.

It’s a pretty steep personal cost, this consequence of the realities of our activity, and the ever insufficient resources we have to stretch to meet our problems. Software is delicate, with so many layers and complexities that are impossible to fully predict or understand. Imagine an engineer designing a bridge: they carefully calculate known stress factors, material strengths, expected weights and the like to arrive at a construction whose weakest point is much stronger than the load it will bear. Now make the engineer do it without knowing what material half the bridge is made out of. Throw three hundred hollow rivets into their supply. Then build sixteen more bridges stacked atop the first one, all with unknown materials and different designers. Would you drive across those bridges? But that’s software development for you. Thankfully, unlike our hypothetical stack of bridges, nobody dies when speech & debate tech collapses, though you wouldn’t know it listening to people sometimes.

Because of this constant ticking disaster we call software, companies can spend billions on people like me. Vast teams of techies find and fix expensive problems, but those billions can only make outages happen less often, not never. Google had serious downtime just two days ago, and Tabroom’s entire annual budget is a rounding error in their departmental catering bill. But Google’s wizards are not underpaid, or alone. Their problems are greater in size, but not much different in kind.

When Debate Techies get together, that’s what we talk about, those lonely moments. You may imagine great rivalry between Speechwire and Tabroom and TRPC. There is none; I can think of no greater personal nightmare than Speechwire disappearing and having to fill even a portion of the gap it’d leave behind. But even if we did view each other as the Enemy, you would never see me laugh at Ben when Speechwire goes haywire, and he would never do the reverse. The price of admission to the little club of Debate Techies is understanding what that moment feels like. You cannot see another suffer it without sympathy and remembering your own terror.

The era of covid has affected debate like everything else. Online debate was always a side hobby project of a few visionaries, but never got much real traction – until suddenly in April it was everything. Every member of the little band of debate techies had to drop all plans and change our entire world overnight. 2020 Nationals was going to be the first all-online balloted Nationals anyway, but overnight that was no longer a Project but an Assumption. Priten suddenly joined our ranks with his terrific Classroom.cloud project, and therefore saved the TOC and Nationals both. He got his very own baptism, with a slowdown and lockup the first day of Nationals; I spent those moments in the Des Moines office preventing people from calling him. I know.

But Classrooms is based on Zoom and therefore can be pricey. Large expensive tournaments can swing it, but in the world as it existed in April, the type of small local tournaments I grew up in – the Massachusetts local that charges about seven bucks an entry – could not begin to afford it. Circuit kids may mock those types of tournaments, but speech & debate wouldn’t exist without them. And so, we set about trying to find a way to keep them alive, and the result is NSDA Campus. I’ve helped with Campus at the edges, but again all speech & debate tech must be lonely, and this burden belongs to Hardy.

It turns out spinning up a custom private video conferencing on-demand service given about 3 person-months of work and a shoestring budget isn’t simple. So we’ve had our problems. The first couple of weeks went fine, but then we hit a threshold of usage that triggered an odd undocumented condition in our proxy service — the traffic cop that keeps all the traffic for your particular PF round going to the same server so you can see your opponents and judge. The proxies went nuts and started sending people anywhere and nowhere. It was not because we didn’t have enough server capacity — we’re running our servers on Amazon’s cloud, which also hosts services you might have heard of, like “Netflix.” As I write this 128 machines are serving Campus rooms just fine. The flaw was a condition buried deep in someone else’s code that would only manifest when we had more than 400 rooms going at once. It’s fixed and behind us.

Today we hit another, tripped by a new threshold of 3,000 users. Hardy found these new issues, and fixed them too. Because that’s what we do in the little club of Debate Techies.

It’s hard to test these things. We don’t employ a couple thousand people who can be drafted to all join online rooms at once, just so we can see what breaks. There are ways to simulate that type of load in testing environments, but setting such things up is time consuming too, and each of us lonely techies has an enormous list of problems to deal with right now. It’s hard to find time for the future’s problems when when we have so many already on fire in the present. And of course, only one of us can solve most of them. Hardy is the person who understands my tech province best, and vice-versa – but if we traded to-do lists, our productivity would nearly vanish. The difference is like translating text into a language you’re fluent in, versus one where you have to look up every 5th word.

And so was Hardy was condemned to another pair of lonely moments for each of those bugs. He knew they’d come. We all do.

Because today the demons came for him and not me, I feel more free to speak, to point out the underlying realities of our activity, and to shed light on the effort we’re making to keep our speech & debate circus going despite a global pandemic. The type of tech required to do debate online is only barely ready for what we’re asking it to do. If covid-19 hit 10 or even 5 years ago, speech & debate would simply have shut down. As it is, we haven’t caught our breath. Everyone in the debate tech world has been running full tilt for months now, trying to get this all to work – and sometimes, we fail. We can promise you effort. We can never promise perfection. Neither can Google and its billions.

But perhaps, on behalf of the other members of my little tribe, I can ask for more clemency, at least in public. It is unkind at best to churn out memes about a service that someone just spent three days not sleeping to fix for you. It’s unwise to hit Facebook to air grievances or unfounded theories as to what the issues are. And most of all, it’s bad form to suggest we give up on the whole project, and give up affordable speech & debate tournaments with it, because of a few software kinks that made you wait around a couple hours – at home, no less – in the early days of an immensely complicated project that did not exist and was not planned for six months ago.

When you do so, you underestimate the realities and the economics that go into the projects that us lonely techies are keeping alive so that debaters can debate and speechies can speak. But more than anything, what you do most of all is take our loneliest moment, and make it lonelier. In the era of covid, when the gaps between us in real life are so huge and enforced by a deadly and invisible enemy, we should be careful before adding to another’s isolation.

And do remember, none of us in debate tech are in it for the fabulous wealth and prizes. We do this because we’re tied to the activity, and find it worthwhile to make your competition work better and faster in normal times – or to work at all, now in the age of pandemic. We do it because I too once paced in prep rooms before giving extemp speeches, while Priten and Hardy blitzed through policy debate rounds and Ben prepped his IEs.

Any of us could expand our wealth and free time by leaving speech & debate, and the lonely moments it causes us. We stay because of the satisfaction and our connection to this community. So consider please the living, breathing, lockdown-trapped & lonely person at the other end of that link before you decide to trample on us because the fragile tech we’re trying to build snapped today. Even if the meme is funny.

Solidarity

I was born into a city as it started to die.

That takes a long time, and it may still recover, but it by the late 70s, Fitchburg was fading in all the ways that more famous cities in the center of the country would. Fitchburg was a place that worked with its hands, turning out machine tools, paper, wood and the like. It was a busy booming city in the late 1800s. The city carved the Hoosac tunnel out of a western mountain to build a train to Albany and beyond. The New York Times was printed on its paper, along with others up and down the coast.

And like many other places that worked with their hands, a haze of decay began to set in during the 70s and 80s, as factories closed and were not replaced. Poverty is now around 20%. Grand old buildings sit quietly, unpeopled, crumbling for want of a few coats of paint. If either end of Main Street were blocked entirely, no traffic would pile up. It hasn’t been hard to park for decades. The population as a whole shrank by a tenth, which yet understates the change. Almost everyone I went to school with then would leave. About three to five generations of my ancestors in any direction were born there, but my classmates’ children were mostly not.

My age cohort was also one of the last where schools were mostly full of white kids. A large stock of empty cheap housing was a draw, even in a poor and wage-sparse area. As the white folks left for fancier places, we were gradually replaced by others. By the grace of a local quirk, most of these newcomers were not in fact immigrants. The vast majority were Latinx, and despite many coming from other places, they were broadly labeled for their majority: The Puerto Ricans.

My parents and their siblings didn’t go to school with any kids who spoke Spanish. I went to school with a few, though that was an era of separate bilingual education, so we didn’t know any of them. Those kids weren’t in our classes, and we were separated by language. And beyond that, I was in no way encouraged to get to know them. They didn’t have names, or individual identities to us, and the adults around us were careful to keep it that way.

These white adults were anxious for their jobs and their homes, and saw both declining at the same time as this new population moved in. So they associated the decline with the people. And the lessons passed down to us were as clear as they were horrible: these different strangers were Ruining. The. City. They weren’t even working; they were instead sitting around at home sponging off the system, absorbing welfare benefits that were put in place for Us, not for Them. They were dirty, immoral, incomprehensible thieves, and their very presence an affront to all that was good and just in the world.

And so, it was The Puerto Ricans that were used to teach me racism. This message was never laid out all at once, of course. It was collected in brief asides, comments that were clear only in context, snide remarks half concealed around the kids. But it was made clear to us all that the Puerto Ricans were the lowest of the Different. The Laotians and the Vietnamese were war refugees, and were here because they sided with America. We had more black kids around school than most New England towns, but that’s not saying much, and they weren’t visibly worse off than anyone else. I only later learned the hidden ways the world deals harshness to black kids. Overall, in Fitchburg in the 1980s, it was all about the Puerto Ricans, who ruined all they touched.

“Puerto Rican” is not a pejorative term. It simply denotes someone from Puerto Rico, after all. It’s the actual name, of the actual island. But I cringe to write it and automatically search for an alternative phrase, because as I grew up, it was voiced as a slur. It was spoken in that tone, with that heat, and with that intent. It was sometimes used as insult. I could almost wish the adults around me had used actual slurs instead, so the real term wouldn’t carry this fearful weight for me.

Of course, this picture of a people left out an awful lot. I didn’t know they were US citizens by birthright until we hit the Spanish American War in 8th grade history. The history of the US’s treatment of Puerto Rico also undermines any view that they weren’t owed the benefits of American citizenship. Hurricane Maria and its aftermath are only the latest testimony. Also, welfare benefits were never generous enough to provide that lavish lifestyle — after all, if welfare was so good, why didn’t we sign up? A good lifestyle on welfare was only possible if you cheated the system a bit, which we knew because white people in the family had done so before. But somehow, this sin was far worse when done in Spanish.

The Puerto Ricans tended to live in the worst housing on any street, with a few too many people per apartment — not a sign of excess wealth. The jobless rate among them was higher than white people, but not so high that the claim “none of them ever work” could be defended. As actual knowledge replaced the lazy folk wisdom, the collective sins of the Puerto Ricans of Fitchburg were reduced to “their music was loud sometimes.” But then, so was ours. And man, can they throw a killer barbecue.

I tried to say as much, and got nowhere. My family has not known Puerto Ricans personally, except a few people they worked with who were clearly The Good Ones, evidenced by their having a job. But “seeing people lying around all the time” was good enough evidence to support the narrative. Those people were moochers and thieves, and that was that. After all, if you want to believe something, any proof will do. And if the Puerto Ricans weren’t to blame, that would present some uncomfortable questions. So, anytime we’d pass some Puerto Rican people out on the porch or something, the line was “Look at them, just sitting there without a care in the world, while we work to support them.” I’d hear that often enough. On Sundays.

But as humans grow up, we don’t just understand things in isolation. Part of growing up is putting the things you learn into a broader context. The mind relies on categories, grouping things together to understand them more quickly. That’s part of why racism is so lazy and yet so hard to overcome. But these judgments go beyond race: the picture being painted with snide remarks and half-concealed hatreds was a clear to any 10 year old. It was a lesson being taught to tens of millions of other kids in the 1980s by parents fearing the change falling upon them: to be different is to be less. A generic white person is the pinnacle. Everything else is a faded and flawed copy. The more flaws among your neighbors, the worse off you’d be. It was a lesson I held onto for far too long.

I adopted my mother’s newfound judgmental strand of Christianity, and the conservative politics that resulted from it. By then, I’d gotten scholarships, and headed off to increasingly prestigious private schools. The academics were great, but I didn’t fit in well. I remember individuals would often be kind and open to me, but groups usually were not. And I was set apart politically as well as socially. Mom’s flirtation with evangelism didn’t go very far, but the politics were more stable. And I loved to be contrary, seeing absolutes and truths everywhere in the rigid way of the intelligent teenager. The timid liberalism of those private schools, with its placid faith in the system to do right, had no answers for me. Private school kids, and most of the teachers, didn’t understand places like Cleghorn or the Patch, and so they couldn’t address the real source of my fears and prejudices. Their talk of race and economic relations was rooted in the black/white divide of Boston and most of the rest of the country, and that seemed bizarre and irrelevant to what I believed. I knew something of their world, but they knew nothing of mine, and so they were unable to move me.

But then, I would end up moving myself.

There was a hairdresser named Keith who rented an apartment from my grandmother and came over a couple times to give us all haircuts. My uncle would mention his name and AIDS an awful lot. I didn’t know much about AIDS then, other than it was deadly, and had something to do with gay people. So, I was afraid of Keith. I didn’t know much about gay people either, beyond the bare facts of who they “liked”, but I definitely knew Keith was Different. Maybe different like the Puerto Ricans were different. Bad different. And a very few years after Keith moved on from my grandmother’s building, I came to know that I was Different too.

What followed was a story too typical of my generation, of sleepless nights learning to fear to love anyone, of trying to explain it away in a million ways, of stealing glances when I thought nobody was looking while everyone else got to leer openly. Of pretend conversations about pretend girls with pretend boobs. Of remembering my young childhood insistence that girls were icky and I’d never marry one with a twist of irony. Of seeing relationships and love as for other people, not for me, as the hand of the God would definitely punish me in some awful way, probably involving hairdressers with AIDS. If I ever gave into it. Which I tried very hard not to do.

And of knowing, most of all, that now I was Different.

And the adults around me, they hated Different. They were unfair to it, harsh to it — mocked it, avoided it, and penalized it. I was already different in enough smaller ways to understand that. I caught enough grief for reading books a lot, and being awkward physically, and having ideas nobody else around had, even though they also acknowledged these qualities were likely to help me out in life. They knew these were signs of a smart kid who might go places, but wouldn’t engage with them. I’d get blanket expressions of approval for Being Smart, but these were belied by criticism and poking at the particulars. So, I learned to keep these differences to myself, since I’d at best only be laughed at for expressing them. And if I could be mocked for small differences, what would a huge difference do to me, if it came out? “Reading too often” had nothing on being gay.

I did the only thing I could think of. I boxed it all in. I learned to keep the greater part of what I was going through from them, and everyone else. And even from myself. It pulled us apart, of course. One of the first lies a gay kid tells himself is that being gay doesn’t affect your personality, it’s just who you like for sex. But of course, that’s only possible to believe if you’re a teenager who has no personal idea what love is yet. Love goes far deeper and affects far more than just sex. So as I hid the parts of myself related to being gay, I hid the parts related to love. And therefore came to hide nearly all of what I truly am.

But my internal life changed. I gave my heart to someone. It was given back. He didn’t have a choice; my gaydar wasn’t so hot back then. So I was deprived of a villain in my first failed love story, and was never able to properly hate him as might have been better for me. Instead I spent an unreasonable amount of time being morose and weird about it. However, it made me realize how deep being gay ran. The bullshit line a conservative gay kid clings to is “I’m not a gay person, I’m a person who happens to be gay.” But it was clear to me now, love’s not that simple. I couldn’t pretend that to myself any longer, and giving that game up turned my world around.

I didn’t abandon my politics immediately, but they were much less central. My college friends would have been surprised by my high school polemics. I was reconsidering everything, starting with my heart, but eventually I worked outwards. I ended up in the wrong major as a result, but so it goes. There’s no good time to go through a huge, personality redefining crisis. I rejected the prejudices I’d been handed about being gay, came out in college, voted for Al Gore. And I started to question a lot of the other attitudes I grew up with. Now that I was okay with my Different, I started to reconsider the other Different people. I started to learn the lies behind the racism I was taught, and how similar they were to the lies I was taught about gay people. I can’t claim to be racism free — no white American does so without generous self-delusion. But, I’ve learned at least to recognize a lot of it and fight my impulses towards it.

But I still lead a dual life. I grew far more cosmopolitan, far more accepting, and far better able to embrace differences instead of rejecting them by reflex. But I never shared this outlook with the family whose prejudices I had to overcome to gain it. I tried a few times, halfheartedly, but settled into a truce where they didn’t get their ideas challenged, at the price of not knowing the vast parts of me that didn’t fit with those ideas. They know only a shell, not the full me.

The election of 2016 did not surprise me; I knew America was capable of it. Trump is what poor people think rich people are like, a self promoting liar and charlatan who proves every day he knows nothing and does not care, and his fans still love him for it. I knew this country was capable of deeming him the best of us and giving him power. So no, the election did not surprise me. But it did disappoint me. It scared me, and scares me still. We have a racist in power, who doesn’t even understand the law much less respect it, and who lets his aggressive hostility rule him. The same type of quick false judgment that made my family look down on people for not working on a Sunday is now setting White House policy. And, a good chunk of my own family had voted for him, both proudly and reluctantly, out of those same old impulses that scared me of AIDS and loud Spanish music and difference.

It was a step too far. I snapped. I haven’t spoken to most of them since.

Trump has been a remarkably hostile president to the LGBT. But he’s been so much more horrible to others within the LGBT community, and worse still to other groups of people, I almost don’t dare bring it up in reference to myself. I wish I could claim the worst of it, and spare those more vulnerable still. There are concentration camps full of children in this country. There are now laws in place saying others’ religion can be used to deny me just about anything. There’s a judge sitting on a stolen seat on the highest bench who’ll freely and gladly vote to downgrade my particular citizenship. We have a vice president who probably thinks in his deepest heart that I should be killed. And I still don’t have the worst of it.

The thing about building a big wall between yourself and other people is you don’t get too choose which side everyone is going to stand on. Where you place the wall doesn’t matter. Building the barrier is itself the sin. I’ve been outside enough walls to take no comfort from being inside theirs. The walls of the closet I was stuck in for too long, and the closet I walk mostly back into when I’m around them, are made of the same hatreds they taught me for Puerto Ricans.

The “freeloaders” and “welfare mamas” and various far ruder words they flung around built the walls of my closet, and fired the fears that kept me there far too long. So now, when you say those words and express those beliefs, you mean me. You can’t drop the n-bomb or the s-word or any other epithet without me automatically translating it to faggot. I can’t hear it otherwise. Nearly all gay people understand it so. Trump claimed strong LGBT support, but it was just another lie: McCain got 27% of the LGBT vote, Romney 22%, while Trump got 14%. He doesn’t attack the LGBT first, but most of us understand that when targets are being lined up we’ll make the list eventually. Any world made of walls is a threat to all of us, and we have to stick together in the face of opposition, of hatreds — and of family, be they ignorant, hostile, or both.

This message is partly an answer to an aunt who doesn’t understand boundaries — at all — and so has been drafting other family members as messengers to undermine my wish to have nothing to do with her. But that will fail. I no longer will crawl back into the box they created and continue to create — and vote for! Ignorance is no defense. It’s how we got here, after all. And I’ve tried to inform, and to teach. They can’t handle me outside of my box, and I won’t go back inside anymore. That would make of me “a person who happens to be gay.” Which is to say, a lie.

What’s more, I wouldn’t do it even without the personal angle. Trump’s language has an edge and venom unlike any Republican presidential nominee before him. I wouldn’t have liked President McCain or Romney, but I wouldn’t have been unable to accept them. But Trump is plainly different. And an election like this must have consequences for the winners. If you voted for an openly racist President, you can’t get pissed at me for treating you like the type of person who would vote for an openly racist President.

I can’t countenance that when there are children separated from their families no matter what their parents’ crimes were. I can’t be at peace with that when your hatchet man in chief destroys the last vestiges of welfare, health care for millions, social security, and more, while profiteering personally and inflaming racism. He calls people animals on a regular basis. He destroys relationships with our allies and embraces terrible dictators. His followers would make a dictator out of him. And you are marching along with those people, people waving the Confederate battle flag and even the swastika, people who’d have my friends deported, and many of whom would have me shot. Look at your fellow travelers, and wonder no longer why I won’t be there to quietly pass the turkey in November. To stand beside you is to stand beside them. I will not do it.

I had no choice over being different, and neither do the Black people in your state, or trans people in your bathroom, or Puerto Ricans down the street. The Trump faction label us together to blame us, to attack us, and in some cases to kill us. And in the face of that threat, solidarity matters. The only way the Different can last this thing through is if we don’t abandon each other. And in voting for Trump you helped build that wall you’ve been working on my entire life, the wall between the Different and you. Thanks to your wall, I can’t live on both sides at once. So, misguided Trumpist family, you’ve given me a choice. On one side of your wall are the people who share my burdens and struggles, the people who don’t dismiss facts with prejudice, who understand how privilege and power work, and who know what it feels like to be an outsider. On the other side sit you, the builders of that wall, the makers of the box I shoved myself into for decades too long.

The choice was not hard. And I do not regret it.

What your vote means

So you tell me you’re voting for Trump.

You may like him because he’s different, and you want a change.  You may like how he sticks up for you.  You might choose to believe the accusations against Clinton more than those against Trump.

Or maybe you don’t really like him that much.   Maybe you fear  his flaws, maybe you dislike how harsh and cruel he sounds, how cruel he is.  But you worry about the Supreme Court judges that Clinton would choose.  You worry about liberal control, about taxes and immigrants and health care.  At least he’s the bastard who agrees with you, right?

But either way, whether you’re his cheerleader or his reluctant voter, you’re voting for him.  And when you tell me that, you tell me a lot of other things.

You tell me you want a man in office who will try to take  rights from me.  You want me to once again be legally unable to marry, and so to be barred from the hundred little rights that come from that one big one: hospital visitation, taxes, foreign citizenship, shared benefits at work, adopt children.   My rights to these things don’t take away yours, but you’re voting to take them from me anyway.  You want me and other gay people to be second class citizens, punished by law for being born.  And when we lose those rights, when the law says we’re not equal, it tells the world that it’s all right again to fire us for being gay, to evict us, to beat us on the streets, to ignore us when we’re injured, to refuse us medical service even if our lives  depend on it.    All that still happens today, though less than it used to.  You’re voting to make it happen more.

Your vote tells  me you  want  a world where your children to fear being gay.  Gay people are different than other outsiders  in that we do not grow up in families of people like us.  We grow up with sleepless  nights, knowing the law and the world are against us, and fearing whose  side our families will take when they find out.  When  families don’t take their gay child’s side, we  are suddenly cast out on our own, in a country  with little help or kindness to offer.  You’re voting to give these children more reasons to fear, to hide, to doubt their own parents and families.  You’re voting for more gay teens to become homeless drug addicts and prostitutes.  You’re telling kids too ready to consider it already that they’re better off killing themselves.  And many will.

Do not deny  you want these things.  You’re voting for them.   Avoiding “Clinton’s Supreme Court” is the first motive  I hear from the most reluctant Trump voter.  He promises to nominate judges like the late Antonin Scalia.  So, my rights are the first and sometimes the only thing you’re voting against.  A court of Scalias would take as many rights away from me as they could.

The Trump campaign is all about believing that some people are by nature better than others.  If you’re white you’re better than Black.  If you were born north of the border you’re better than those born to the south.  If you’re straight you’re better than gay.   If your body’s gender matches your mind and heart’s, then you’re a Good Person.  If they differ, you should  be punished.  It doesn’t matter that none of these differences were anyone’s choice.  You got the good end of the birth lottery, and you’re voting for a guy who promises to make that pay off again.  Your vote means you believe America wins when the Right People win.  And Trump has made it clear where I stand a thousand times over.   I’m the Wrong People.

Don’t bother to say  I’m taking politics too seriously.  I don’t care if you root for the Republicans with as much thought as you root for the Red Sox.  Don’t try to score argument points with clever zingers.  My rights are too new and challenged by too many for me to relax about politics and not take them seriously. Don’t tell me about Clinton’s flaws and dark past; I have hope for her presidency, but she could be the weakest, most corrupt and dumbest Democrat alive and I’d still have to vote for her.  Your party has made my rights depend on it.  Your candidate  believes  I should be punished for who I am, and your vote will give him the power to do it.

Above all, don’t tell me you respect me but disagree.   When you tell me you’re voting for Trump, I understand what you’re really saying, and it has no  respect for me and people like me.

It’s National Coming Out Day today.    I am gay, and I’m with her.  And if you’re with Trump, you’re not with me.