Ramblings of General Geekery

Corporate Gavage

In the past couple years I’ve been thinking about an aspect of 21st century technology that I’m not sure has a name. I thought about it again when I read this recent post by Cory Doctorow on “The ordinariness of evil”. Cory talks about gen-AI CEOs touting the impending danger of their products as a weird and evil way to promote them as something with immense potential in the near future. Something you’d want to invest in now. It’s basically snake-oil salesmanship:

In other words, AI is mostly a novelty, a heavily subsidized toy that produces little more than distraction. Where AI does produce value, that value is comparable to a plug-in, a new feature for your word processor or image/sound/video-editing package that might help you do your job somewhat better, or it might not.

That doesn’t make AI useless, it just makes it a normal technology: useful for some, useless for others, capable of being abused and likely to waste a lot of time when used unwisely.

And so this relates to that thing I’ve been thinking about: that there have been an increasing number of technologies that seem useful for some use-cases, but that we were somehow sold as useful for everyone. Here’s a non-exhaustive list of examples of this phenomenon:

  • From the 1980s to the 2000s, 3D-movies were mostly a novelty in theatres. And then some people figured they wanted to turn this into mass-market appeal. We got 3D televisions, 3D cameras and camcorders, and 3D video game consoles. People saw it for what it was, and the market for 3D consumer equipment died in the mid-2010s.
  • Virtual Reality was at first either for novelty entertainment gadgets and R&D projects. When the technology had enough breakthroughs, some people identified several relevant use-cases, from architecture to therapy to dedicated entertainment spaces. But once again a few corporations insisted this was the next big thing, pushing VR headsets as mass-market products. They still are, despite consistently failing at it.
  • Blockchain, the technology underlying crypto-currencies, is interesting. It was originally meant for digital document signing and other cryptographic use-cases. But it was then decentralized (again, an interesting innovation) and applied to one of the most mass-market products of all: money itself. Many startup CEOs tried to apply this idea to other mass-market products such as art or video-games. They were rightfully ridiculed, but somehow this is still going on.
  • And now we have generative AI, which is also based on interesting and useful technologies, from statistical algorithms to machine learning. Anybody can think of a few use-cases where that technology would be incredibly useful, but it’s all been spoiled because, once again, corporations and people with too much money are trying to push it as a mass-market product. And because, unlike previous technologies, the cost of training LLMs is astronomical, we are seeing an equally astronomical push.

Each time this same phenomenon can be observed: some smart people make a cool technology, and it can be very useful in some specific or niche applications, but greedy people instead want to sell it to as many people as possible. Ideally, they want to sell it to everyone. To make it even shorter:

A technology that could be useful in limited markets is utterly ruined by some assholes pushing it to be mass-market.

The incredible financial successes of the iPhone and Facebook and other similar staples of modern society have rewired the brain of executives everywhere. Any new product or company is a failure unless it makes a gazillion dollars from a billion users. Everything needs to be mass-marketed, even when it doesn’t make sense.

I’m sure this phenomenon has already been noted somewhere, but frankly it’s hard to search for it online when you don’t know what it might be called. So until someone points me at prior art on the topic, and until someone comes up with a better term, I’m going to call it “corporate gavage”, where “gavage” is a French-borrowed term for force-feeding, especially force-feeding animals. I think the metaphor is unsubtle enough that you’ll get it.

I’m going to tentatively use “corporate gavage” liberally from now on, but I’d be happy if anybody could point me to prior writings on this topic! Again, I did some online searches, but didn’t find much that was relevant.

Granted, I didn’t search very long. I’m lazy.


On Reading the News

This article from NiemanLab titled “I’m a journalist and I’m changing the way I read news. This is how.” didn’t start particularly well for me. It read less about ways to read the news, and more about the inability of some people to just, you know, keep their phone in their pocket when they’re with other people. I know some people truly struggle with this, with connectivity, social media, and all that stuff leading to real mental health issues but, well, I don’t get it.

Anyway, there’s a great bit in the middle of the article, when the author decides to change their ways:

I’ll read news, not other people’s reactions to news. I have resubscribed to print newspapers because they are finite; when you’re done, you’re done

Read more…

The World Before Git

This inaugural article by Sarup Banskota for the OSS History newsletter sent me down a little nostalgic trauma trip:

Unless you’ve been writing code for decades, you’ve likely never used a VCS besides Git. However Git is far from being the first important VCS. 

The World Before Git

What follows is a short history lesson about source control, from the early days of RCS to the modern day of Git. I remember being confronted to CVS in the late 1990s during an internship, and I was completely confused. I don’t think our software development professors ever taught us about source control, so the very concept of it was fairly alien to me at the time.

Later, in one of my first corporate jobs, I started using Rational ClearCase, which was anything but. That’s probably when I learned about branching, and when I got really interested in source control. At home, I got on board with Subversion (SVN) and that was the first VCS I ever truly enjoyed using. For solo projects, it just worked, kept out of your way, and early software like TortoiseSVN made it super user friendly. I was quite surprised by this bit, though:

A key idea SVN introduced was that of atomic commits. With CVS, when a commit operation failed halfway, it would lead to data getting corrupted. Part of the files would get saved, and part of them would be lost. SVN’s commits took an all or nothing approach, ensuring reliability.

The World Before Git

It’s amazing to think that atomic commits weren’t a thing before the early 2000s.

Sarup glosses over a few things about how Linus Torvalds came to write Git, though. As far as I know, it wasn’t so much about the controversy around an open-source project like Linux using a proprietary system like BitKeeper. It probably played a role, but I think the main impetus came from BitKeeper terminating their free license.

Of note, around the same time, Olivia Mackall (known back then under the name Matt Mackall, or mpm) also started working on Mercurial, with the same goal of replacing BitKeeper. However, Linus came out with Git a few days earlier, and Git was adopted over Mercurial for obvious reasons. Still, Mercurial is the only other VCS, besides SVN, that ever truly liked. It just makes sense to me, and when I use it I rarely have to scream into a pillow afterwards the way that all other VCSes make me.

I actually like Mercurial enough that I wrote a few things for it: a plugin to push/pull from multiple remote repositories (now maintained by Marcin Kasperski), a Vim plugin (ironically also available on Github), and, oh yeah, the Mercurial hosting implementation for Sourcehut, among a few other things.

Meanwhile, over here in the game development industry, Perforce reigns supreme. The main reason is that source code is a rounding error in our repositories: binary assets (3D objects, textures, audio, animation, etc.) take up dozens and dozens of gigabytes, up to a couple hundred gigabytes for big AAA games1. Add to that many branches for different releases or GDC demos and so on, plus hundreds of commits per day, and the Git/Mercurial model of cloning and merging utterly fails.

Some game developers argue about storing code in Git and binary assets “somewhere else”, but with tight dependencies between code and data, the act of keeping the two in sync becomes tricky (although I’ve seen some game studio attempt it). Other game developers argue about investing in Git LFS in the way that, say, Microsoft did to make Git work with their massive codebases. But of course nobody has that sort of money to throw at problem that isn’t their core business.

At some point, Plastic SCM looked like an interesting competitor to Perforce, but that didn’t go anywhere, and then Unity acquired them and squandered them away. Meanwhile, the Git hype is so strong that Perforce has spent years trying to chase it, instead of, you know, taking care of their customers who need something different from Git in the first place. I think there’s a great opportunity for someone out there to write a VCS that properly addresses the needs of the video game industry and be the, well, maybe not the hero we deserve, but the hero we need.

  1. My peers on Mastodon remind me that, as a programmer, I don’t see all the raw assets, also often stored in Perforce, that can easily triple these numbers! ↩︎

The cult of Obsidian

This article from Fast Company has a bit of a click-baity title (I don’t know if Obsidian users are really “obsessed” with a piece of software), but it’s a pretty good round-up of why I really like Obsidian. I actually wouldn’t even describe my own usage of Obsidian as a “note-taking app”, and more as a “personal wiki” app. But of course, many people use Obsidian differently.

Anyway, I like that Obsidian has some grassroots origins and lets you just edit a bunch of text files that you can otherwise manage any way you see fit, as opposed to some venture capital-backed startup that uses “the cloud” or some proprietary format or whatever else. It’s extensible and pretty well written — in fact, it’s one of the rare Electron applications that doesn’t feel and behave like a giant turd. It feels light and fast. It does almost everything I need, and the rest is handled by an absolutely vibrant plug-in ecosystem.

In fact, I have one very simple plug-in myself, Remember File State, which does something that I hope Obsidian will eventually do itself: remember where you were in a file when you reopen it. Duh. At the time of writing, there are more than 5000 people using it.

I personally support the development of Obsidian by paying for their Sync service, which has been 100% reliable over the past year or two. You can of course achieve the same by syncing your notes via Dropbox or iCloud or whatever (Again, it’s just a bunch of text files! That’s the point!), but I like to send a few bucks to people who make good software.