{"id":51126,"date":"2020-11-09T06:00:52","date_gmt":"2020-11-09T11:00:52","guid":{"rendered":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=51126"},"modified":"2020-11-09T01:15:24","modified_gmt":"2020-11-09T06:15:24","slug":"a-new-version-of-the-same-version","status":"publish","type":"post","link":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=51126","title":{"rendered":"A New Version of the Same Version"},"content":{"rendered":"<p>Like I said last week, the plan was to have <a href=\"http:\/\/www.seventh-house.org\/about\/\">Ross<\/a> on the podcast and talk about his involvement with Watch Dogs Legion. Since you&#8217;re reading this and not listening to a podcast, that obviously didn&#8217;t work out. The reasons for <strong>why<\/strong> it didn&#8217;t work out are fairly stupid and complicated and will require the following long-winded explanation&#8230;<\/p>\n<p>We use the program Ventrilo to record our show. Vent is ancient by internet standards. In its heyday it was used as voice chat by raiding guilds in World of Warcraft. The trick with Vent is that you need to pay someone to run a server for you. This means it costs money, which in turn means it has faded into obscurity as free services like Discord and Steam chat gave everyone the ability to talk for free.<\/p>\n<p>For the past few weeks I&#8217;ve been getting alarmed emails from my Vent provider, warning me that I&#8217;m going to need to upgrade soon. That struck me as a little weird. I pay them to run the Vent server, so it seems like I ought to have the option to NOT upgrade right now. Just, you know, <strong>don&#8217;t<\/strong> upgrade my server and my client should continue to work.\u00a0 Specifically, I wanted to finish the episode with Ross before doing the upgrade. It&#8217;s bad enough I force guests to install this ancient and needlessly ugly<span class='snote' title='1'>The interface looks straight out of Windows 98.<\/span> software when they already have newer alternatives installed, and the last thing I wanted was to do that to someone in the middle of a technical shake-out period.<\/p>\n<p><!--more--><\/p>\n<p>My hosting provider didn&#8217;t make this easy for me. They sent an email announcing that this forced upgrade would happen at the end of October.\u00a0Then just before the day in question, it got pushed back to early November. I shrugged. I only use it once a week, so I figured I&#8217;d just wait until they send out the &#8220;All done!&#8221; email before doing the upgrade on my end.<\/p>\n<p>They did not send such an email. It just happened without fanfare. Which, fine, I guess? That&#8217;s not unreasonable. I was just caught off-guard because it&#8217;s not what I expected.<\/p>\n<p>But then Ross emailed me, saying he couldn&#8217;t connect to the server. Did the upgrade happen and I missed it?<\/p>\n<p>I jumped over to the Vent site and checked. Nope. The latest version for download was 3.1.0, and\u00a0 that&#8217;s the version I&#8217;m already running. So the mandatory upgrade hasn&#8217;t happened yet.<\/p>\n<p>Right?<\/p>\n<p>The next day Ross still couldn&#8217;t connect. Just to make double-sure this wasn&#8217;t a new version problem, I decided to connect myself. And then I discovered I couldn&#8217;t.<\/p>\n<p>So nobody can connect, but there&#8217;s no new version out? What&#8217;s going on here?<\/p>\n<p>Next up was a long chain of misunderstandings and misguided troubleshooting as I tried to figure out what was going on.\u00a0 Eventually I realized that I needed to upgrade to the new version&#8230; of 3.1.0!<\/p>\n<p>Whenever you make a new version, you <strong>increment the version number<\/strong>! That&#8217;s literally why version numbers exist! Vent even has a three-digit version number. Just call the new one 3.1.1 or whatever. And if your new version breaks compatibility with the old, then maybe you ought to make this a major release and call the new one 3.2.0 or something. But the one thing that you shouldn&#8217;t do is come out with a new version of the same version number, because that&#8217;s <strong>nonsense<\/strong>.<\/p>\n<p>But fine. Let&#8217;s say you&#8217;re bound to some external numbering system. Maybe you&#8217;re (somehow) forced to keep your version numbers in lockstep with (say) a third-party provider to keep the versions matching between client, server, and protocol. That&#8217;s a terrible way to run things, but whatever. If that&#8217;s the case you could <strong>at least<\/strong> append something to the version number to help your users out.\u00a0 Maybe adopt a system of sub-versions like 3.1.0.1 or 3.1.0a. Whatever. You just need some way for people to tell two distinct and incompatible versions apart.<\/p>\n<p>Paul and Ross: To fix this, go to the Vent <a href=\"http:\/\/www.ventrilo.com\/download.php\">download page<\/a>, and scroll down to the bottom where it says &#8220;Version 3&#8221;. Yeah, just &#8220;3&#8221;. Then skip the paragraphs of ominous import regulations and go down to the bottom. You&#8217;ll see that the &#8220;latest version&#8221; is 3.1.0, which is supposedly the version you already have. But it isn&#8217;t! This version of 3.1.0 is somehow newer than the version 3.1.0 you&#8217;re using now. Just download this and install it over the old one.<\/p>\n<p>You&#8217;ll know it worked, because&#8230; uh? Well, I guess you can&#8217;t check. The program looks the same and the About screen shows the exact same info. I guess you&#8217;ll be able to connect now, unless something else is preventing you from connecting.<\/p>\n<p>Done? Great. We&#8217;ll try this again same time next week.<\/p>\n<h3>Shamus, Why Don&#8217;t You Dump Vent?<\/h3>\n<p>A fair question. This thing is old, ugly, outdated, and it costs money when the alternatives are free. The vast majority of podcasters seem to talk over Discord. Everyone records their audio locally in Audacity, and then after the show they all send their audio to the host. If everyone else does that, then why am I clinging to this silly system?<\/p>\n<p>Because of risk.<\/p>\n<p>Over the years I discovered that I really, <strong>REALLY<\/strong> hate it when we lose a show. It&#8217;s only happened a few times, but it&#8217;s been incredibly painful and I never want to do it again. It sucks to burn an entire evening and have nothing to show for it, and it sucks even more when we come together the following week and try to recreate those lost conversations. It&#8217;s confusing and awkward and it&#8217;s never as good as the original.<\/p>\n<p>Here&#8217;s the thing: Vent is an exceptional recording tool for this sort of thing. When you hit the record button, it will record everyone&#8217;s contribution in an audio channel that&#8217;s isolated from everyone else. So if someone lags and their audio gets out of sync, or if people lag out and accidentally talk over each other, then it&#8217;s easy for the editor to sort that out because the voices aren&#8217;t all mixed together. If one person is too loud and another is too quiet, the editor can fix it in post because they&#8217;re not all smashed into a single audio file.<\/p>\n<p>The important thing is that every participant gets a copy of the entire conversation. If Paul&#8217;s laptop crashes and it corrupts the recording in progress, that&#8217;s no problem because I still have clean recordings for both of us.<\/p>\n<p>But let&#8217;s say we record on Discord instead. We can do the naive thing and record the raw audio of the discussion. But then we have everyone&#8217;s voices mixed together and we can&#8217;t fix problems in post. That sucks, so let&#8217;s not do that. Instead,\u00a0 we each record our own audio locally.<\/p>\n<p>Let&#8217;s say the odds of one person losing their recording<span class='snote' title='2'>A crash, disconnect, Windows Update ambush, or a power outage, or just forgetting to hit &#8220;record&#8221; at the start of the show.<\/span> are 1:100. In Vent the only way we can lose the entire show is if <strong>everyone<\/strong> hits that unlucky 1:100.\u00a0 In a show with just Paul and I, our mutual redundancy means the odds that we <strong>both<\/strong> lose everything are 1:10,000. That&#8217;s pretty safe!<\/p>\n<p>Now in a scenario when we each only record our own audio, the odds work against us in the other direction. If <strong>anyone<\/strong> involved loses their recording, then the whole show is a bust. My audio alone is worthless, because I&#8217;m obviously speaking <strong>to<\/strong> someone. So the odds of failure are now 1:50, which, on a weekly podcast, is about once a year.<\/p>\n<p>The odds get even more extreme in a show with 3 people. A discord-style podcast has a 1:33 chance of failure, and a Vent podcast has a 1:1,000,000 chance of failure.<\/p>\n<h3>In Conclusion<\/h3>\n<p>Please use version numbers for your software. If you&#8217;re already using version numbers, then please don&#8217;t forget to increment the number when you release something new. And if you work for lunatics who won&#8217;t let you do that for some reason, then append sub-versions to save your poor users from confusion. Barring that, just copy the WordPress system and give each version a cute name. WP likes to name their major releases after jazz musicians, but you can do whatever you like. Name versions after colors. Ice cream flavors. Sports teams. Mythological creatures. Varieties of mold. Porn stars. Serial killers. Plagues. Whiskey brands. There&#8217;s so much fun you can have with naming versions. Express yourself!<\/p>\n<p>Just don&#8217;t give a new version of [thing] the same number as old version of [same thing], because there&#8217;s already enough insanity and chaos in the world.<\/p>\n<p>Thank you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Like I said last week, the plan was to have Ross on the podcast and talk about his involvement with Watch Dogs Legion. Since you&#8217;re reading this and not listening to a podcast, that obviously didn&#8217;t work out. The reasons for why it didn&#8217;t work out are fairly stupid and complicated and will require the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-51126","post","type-post","status-publish","format-standard","hentry","category-rants"],"_links":{"self":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/51126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=51126"}],"version-history":[{"count":8,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/51126\/revisions"}],"predecessor-version":[{"id":51134,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/51126\/revisions\/51134"}],"wp:attachment":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=51126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=51126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=51126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}