Kartones Blog

Be the change you wanna see in this world

The state of PC gaming in 2019

I love playing videogames, and for a long time PC has been my preferred platform. I've suffered from the old days of MS-DOS with 640KB base memory (until DOS4GW came along) to most Windows versions (until Windows 7, with which I'm staying until really forced to upgrade). I've seen come and go all kinds of installers and copy-protections up to the coming of the digital era, where I no longer need more than two hard disk drives full of my old CD/DVD games dumped to ISOs plus an internet connection to download the ones I have in digital format. I've suffered quite a few graphics driver crashes (I'm mostly looking at you, NVidia), until Windows 7 came along with user space and system space drivers, and I no longer get angry whenever most games I want to play asks me to update itself before I can have fun.

Three factors have changed the rules of play and made everything in theory easier and simpler by going digital:

  • Steam got so popular and big that it became the de facto distribution platform for the majority of games, and a really high percentage of indie titles.
  • Piracy, (often terrible) copy protections for games and broadband connections made very convenient to ditch out physical media and instead do server-side checks.
  • Game sizes are growing at a rate that not even a single Blu-Ray disk can contain the full game data, with all the multi-language assets. Plus it would be very risky to force everyone to buy a Blu-Ray reader, when laptops and most desktop rigs no longer have any optical drive at all.

All this initially sounds good and great for us gamers. For many years, only Steam was doing it, and PC sales slowly decayed until now, so marginal that I cannot conceive buying PC physical titles except when via Amazon are cheaper (and then, I just throw away everything except the CD-Key). It came to a point where most retail games are now just a Steam installer binary plus the downloaded steam data: You add the game to your collection, install it from the DVDs and then it updates with the latest patch.

But lately, other major game publishers wanted their share of the cake instead of paying Valve, and thus started to create their clients, their gamification layers (with cross-platform accounts, friend lists, achievements and the like)... and as of 2019 I currently have six game launchers installed:

  • Activision Blizzard's Battlenet
  • EA's Origin
  • Epic Games Store
  • GOG Galaxy
  • Steam
  • UbiSoft's UPlay

And there are even more (like Bethesda launcher or the Windows Store), so this list is just a sample and it can be even worse.

I now have the fun? sad? problem of sometimes not knowing if I got a certain game on Steam, GOG or Origin (e.g. Dead Space). I also have to keep a list of user accounts, complete with 2-factor auth configurations or "authenticator apps" for each. Just compare that with any console, where you have a single, centralized store, with a single list of installed games, that you launch with a single button.

I totally understand publishers not willing to "pay the competitors" (mostly Valve) when the PC is an open platform, and of course it is so good for them controlling everything and having their games distributed digitally because they also solve the problem of resale/second-hand market (which probably hurts them way more on consoles than on PC, but anyway one less problem to care about).

But at least there's some hope, as GOG recently announced they're working on an universal PC launcher, GOG Galaxy 2.0. If this idea works, and specially if they don't attempt any self-promotion over other store titles or anything that could get the other store publishers angry, it could be our salvation for this chaos. Just by scanning your hard drive, and keeping a list of game "shortcuts", even if those then launch the corresponding secondary launcher/store and boot the game (as now Steam does with for example some Ubisoft titles launching UPlay), that would be more than enough for me. There's really no need of unified achievement systems, unified friend lists or "one shop to rule them all".

A small note: GOG Galaxy will only be for PC, so I can forget about Linux, but there at least we have some other nice alternatives like Lutris with its amazing Wine-tuned installers. Gaming on Linux is getting better but it's still far from being a viable alternative for the masses.

Now, I'm no expert on the field but I've been playing games for long and this is the only thing I really need and want: A unified "installed games library" for PC. 🤞 Fingers crossed we'll get at least that.

Naming bugs for fun

Going for a walk today, I remembered how, at previous jobs, we used to give funny names to certain types of bugs that either happened from time to time, or were different and posed unique challenges. I'm probably missing more, but the following small list are all that I recall :)

Cinderella bug: For example, a bug (or failing test) that only presents himself around midnight. Usually relates to datetime issues.

Spring/Fall bug: Variant of the previous one, caused by dailight saving. Not handling timezones can also help making it (or other variants) happen.

The poltergeist: You feel it, you sense it but you cannot see its source.

Schrödinger's variables: Issues with compilers or interpreters causing broken data structures to crash and/or report having and not having multiples values at the same time when inspected. I have a precise example of this one from late 2010/early 2011, in which I got Javascript error under Internet Explorer 9 beta incorrectly reporting success:true for a scenario that was erroring. It said it was a boolean but it's value was neither true nor false, and at the same time was not true and not false. Here is the screenshot I took for fun:

IE9 Beta Schrödinger's boolean

Gotta catch them all bug: When somebody applies Pokemon exception handling (capture Exception, Error or the corresponding language equivalent to the parent exception type) and the real bug gets shallowed by the handler, either raising a different error or being just hidden until found.

The It works on my machine!: Bug that surfaces on environments other than local/dev. More often than it should applies to tests, breaking when run via CI but not locally. Usually relates to to diferent configurations, different packages, or even different operating systems (Mac vs Linux, Ubuntu vs Alpine, ...).

The orphan: nobody takes responsability/ownership of this bug so it remains unfixed.

The destroyer of worlds: fatal bug that either crashes the whole system or breaks thousands of tests. Writing the post I found the alternate name Hindenbug.

The Hydra: A bug that, upon fixing, causes (or simply uncovers) more bugs to appear.

The Yeti: A bug reported, probably multiple times, but that nobody is able to reproduce/find it. Alternate name: Loch ness monster bug

The inmortal: A bug no matter how many times you try to kill, you're never able to fully get rid of.

Heisenbug: A bug that changes how it behaves when you try to triage or debug it.

The Padron pepper bug: A joke of a famous spanish food, of which some peppers are hot and some not. Applied to bugs, a bug that is not deterministic, sometimes happens and sometimes not.

Course Review: English Speaking Patterns Mastery (Udemy)

English Speaking Patterns Mastery: Upgrade your English contains 19 English patterns to improve the vocabulary and conversation quality. I knew a few of them but combining the new ones and practicing the others, as usual a good run for the cost.

My only complaint is that, as there are so many examples of each pattern, it becomes way too repetitive to listen to so many similar ones. I'd instead have more items than so many repetitions, but not a big deal.

Course Review: English Idioms Launch (Udemy)

English Idioms Launch: Upgrade your speaking and listening contains 60 idioms in blocks of four per chapter/section, and as other courses from the same author feature quite a few examples of each, with listening, speaking and pronunciation exercises.

Some of the examples are too similar and feel repetitive, but it still works as practice. What was a bit dull was the "roleplaying" combining each block of four idioms, I get the reasoning behind but ends up sounding a bit forced together.

Still, interesting for its ~5 hours of content.

Work life hacks: Noise-free Gmail and muting Slack

I seriously think there are very few 10x engineers, but instead that a productive engineer is one that knows how to focus on the task at hand for long periods of time. Apart from other actions to achieve discipline and concentration, I love to do pomodoros (usually 45 min long), but at work I noticed there were two things annoying me since long, long ago: Gmail with high volume of mails, and Slack notifications of unread messages.

Here is how I inverted the control and now I can check the email or work chat whenever I want (between pomodoros or at idle times).

Removing noise from Gmail

First, an image of my work Gmail will give you context of where do I want to arrive with my "settings":

Minimalistic Gmail

I once read about the zero inbox concept regarding email: Develop some rules for your mail client so you don't have those huge unread counters. I, for example, can't handle an unread counter (I get stressed), so this idea was a nice solution. In my case, what I do is have a pending label, that I apply to any email that requires something from my side (a reply, a follow up if after a few days I have no answer, etc.).

This system allows me to keep zero unread emails by quickly checking their contents and manually labelling them. But just combining Github, error logging, CI build reports and a few more sources you can easily get from dozens to even hundreds of daily emails.

So I also heavily use filters to usually "apply label X, and archive", and if is not important also "mark as read". As you can configure each label to display on the left sidebar "only if unread", this means the sidebar itself hides the complexity (you can have dozens of labels if you want) until there are unread emails. And when those arrive, you can check and mark as pending or not.

Teaching people to use BCC field is a plus, but being humans, there will be mistakes, people forgetting about it, etc., so I've became used to filter sometimes even certain senders (as if they were spam), based on my mental metrics of "has this person ever sent a relevant email?", "do I even care about offtopic emails of topic xxxx?", etc. It sounds antisocial, but to me is exactly the same as being slammed lots of postal mails on my mailbox, just because it's digital and easier to do doesn't means you should write everything to everyone.

Extra tip: Do not enable the "unreads counter badge" advanced feature. For personal email might be cool, for work I dislike to see the counter at the favicon if I have to use the web browser.

Muting Slack notifications

Slack can be a useful communication tool, but also an overwhelming source of distractions and a concentration-breaker. I've never fully liked it not because of the product itself, but because of the use and abuse vs ways to protect yourself from it.

Focusing on reducing noise, these are the actions I've taken to only read it between pomodoros or when I'm really not busy:

  • No desktop notifications (this includes direct messages)
  • Disabling @here and @channel notifications everywhere
  • Using favourites to keep a list on the left sidebar of the really important channels and direct conversations
  • Muting every non-important for daily work channel. This combined with the previous point acts as a 3 lists classification: 1) Favourite 2) normal 3) muted
  • No email notifications: This is just noise, if I have closed the app/web it is on purpose
  • No phone notifications: Personal rule here: If it's my personal phone, no work chat app installed. But if it's a work device, if I'm not active on Slack it's because a) I'm not working or b) I'm busy (like in a meeting)

But, there was one thing I couldn't get to disable and forced me to directly close the browser tab; I use the web client, and the favicon always shows you unreads and private messages/mentions. Few days ago I got tired of the situation and, as I use Chrome for work, searched for some extension to replace or fix the favicon of a tab... and found Tab Modifier perfectly suiting my needs.

This is a sample config to force Slack to remain with their default favicon (which is also prettier):

Tab Modifier configuration to mute Slack click to see full size

Update: As of July 2019, Slack web has changed the urls and now instead of being <organization>.slack.com all of them are app.slack.com.

With this hack, I can finally check the browser as many times as I want without being distracted of having unread slack messages.

We live in a world full of digital noise: From ads and videos to lots and lots of emails. While educating people is and will always be an ongoing task (after all, few things are so critical can't wait 30-40 minutes), with some effort we can regain some control and reduce that noise.

Previous entries