Sumit Chandel and Eldhose Mathokkil Babu, writing for the Google Developers blog:
In 2018, we announced the deprecation and transition of Google URL Shortener to Firebase Dynamic Links because of the changes we’ve seen in how people find content on the internet, and the number of new popular URL shortening services that emerged in that time. This meant that we no longer accepted new URLs to shorten but that we would continue serving existing URLs.
Today, the time has come to turn off the serving portion of Google URL Shortener. Please read on below to understand more about how this will impact you if you’re using Google URL Shortener.
Any developers using links built with the Google URL Shortener in the form
https://goo.gl/*
will be impacted, and these URLs will no longer return a response after August 25th, 2025.
How much money could it possible cost to just keep this service running in perpetuity? Tim Berners-Lee wrote his seminal essay, “Cool URIs Don’t Change” back in 1998. It’s bad enough when companies go out of business, taking their web servers down with them. But Google isn’t struggling financially. In fact, they’re thriving.
Like many other game designers with a systems bent, I have spent copious enjoyable hours this year with the breakout indie hit Balatro. It’s usually described as a “poker roguelike”, which is a perfect logline for onboarding curious new players. Framed this way, it makes sense that it often invites comparison to Slay The Spire, another hugely popular deckbuilding roguelike.
It’s therefore ironic that the developer’s primary inspiration was not poker, but rather a Cantonese card game called Big Two. Furthermore, LocalThunk has stated that he drew initial inspiration from the score-chasing roulette game Luck Be A Landlord, but otherwise intentionally avoided playing other roguelikes during development. This often makes Balatro feel mechanically distinct from other roguelikes, since it does not always converge on the consensus “best practices” in the genre.
Seeing the game this way led me to an offbeat hypothesis. In returning to first principles on a deckbuilding roguelike, I believe Balatro’s design had a sort of convergent evolution towards a different game genre. A genre where players also seek synergies while drafting an evolving build, banking funds is rewarded with interest, risk mitigation is a fundamental skill, and the winner must survive multiple structured rounds with escalating stakes.
That genre is “auto chess”, which exploded in 2019 with the release of the popular mod Dota Auto Chess1. While there are many thriving games in the genre today, the one I’m most familiar with is Teamfight Tactics (TFT), which uses the game engine and characters from League of Legends. Riot’s president of esports claims it is “the number one strategy game in the world” in terms of popularity. For the sake of this comparison I will use it as representative of the wider auto chess genre.
Structurally, both Teamfight Tactics and Balatro always progress through an ordered structure of stages (antes) and rounds (blinds). The games are divided between the core phase (champions autobattling or playing poker hands) and the deckbuilding phase (drafting champions or buying jokers). The player’s performance in the core phase generates the currency for the deckbuilding phase. Both games also feature special rounds scheduled at the end of each stage (a carousel draft or a boss blind).
Note that, unlike Balatro, modern roguelikes do not usually follow this kind of regular sequence. Most have instead structurally converged on Slay The Spire’s randomly generated branching adventure map. Furthermore, it’s uncommon for deckbuilders to use currency for drafting; most favor the simpler “choose one from three options” mechanic.
More conspicuously, Balatro shares interest as a mechanic with auto chess: players receive additional currency at the end of each round for each $5 they’re sitting on, like interest in a bank account. This is an exceedingly rare mechanic in video games more broadly, even in the strategy genre. It suggests to me that the designers of both games had a similar need to incentivize conservative purchasing decisions. Otherwise, the player’s existential drive to win each round would discourage them from sitting on unproductive money. The interest mechanic rewards players who just barely win each round, leaving the remainder of their unspent resources to grow.
In terms of drafting, champions in auto chess and jokers in Balatro provide specific roles within a build. TFT gives buffs for stacking several champions of the same class and origin, and generally rewards balancing combat roles (tank, damage, healer). Balatro players can seek to maximize their score engine by assembling +Chips, +Mult, and ×Mult rewards across multiple jokers, ideally with significant overlap in their trigger conditions.
A tactical element of both games is the power curve of certain champions and jokers. To survive the early rounds, a player needs to draft for things that provide immediate value and tempo. Cheap $1 and $2 champions carry the early rounds in TFT. Similarly, jokers like Ice Cream and Popcorn provide immediate value, but decrease in potency after each round. As the game progresses to later stages, players need to pivot their build towards scaling power2. Managing this transition is a major skill element in both games.
Another shared strategic element is the ability of players to viably target “high” or “low” builds. For instance, an obvious strategy in Balatro is to build around high-value hands such as Flush and Straight. However, there are also competitive strategies for building around the lowest hand possible: High Card. Similarly, there are team compositions in TFT that seek to level up stacks of $2 champions, and others that count on turning out a $5 hypercarry.
Having a broad range of meta builds gives skillful players the opportunity to adjust their strategy on the fly based on the luck of the draft. Additionally, both games have mechanics that disincentivize relying on the same build every run regardless of circumstance. In TFT, all players are drafting from the same pool of champions. If another player is attempting the same team composition, those champions will get snatched up and become harder to find. Skillful TFT players can use this information to their advantage, pivoting their build towards undervalued champions.
In Balatro, the boss blinds create a similar dynamic. For instance, in the first week of the game’s release, the most popular strategy was to build a single-suit Flush deck. However, savvy players noticed that this choice was risky; there are four different boss blinds that each debuff a particular suit, which hard counters this build3. The philosophy that “a burnt hand is the best teacher” coaxes players to mitigate risk and integrate a secondary strategy into their drafting.
I have read and listened to several developer interviews about Balatro, and LocalThunk has been very open about his process and design values. I firmly believe that the similarities to auto chess that I’ve established here cannot be attributed to direct inspiration. Rather, I believe there are certain game design patterns that emerge organically when seeking to craft a particular kind of experience. Perhaps we’re all following these ley lines of game design, unwittingly tracing some underlying truth of mathematics and systems.
1. Another connection: Dota Auto Chess was also inspired by a Chinese board game: Mahjong. ↩
2. Balatro even plays with this as a difficulty element: adding “Eternal” stickers to jokers so they cannot be sold is a significant challenge. ↩
3. LocalThunk discusses this design choice in detail in an interview on the podcast “Eggplant: The Secret Lives of Games” around the 20 minute mark. ↩
I pride myself on being quick to respond to messages and my colleagues often express surprise at how up to date I am on information that has been sent to me. I do this because I am an information worker. If you are reading this there is a good chance that you are, too. And to be effective in these roles you need to actively and ruthlessly maintain your information ecosystem.
In our line of work we create value when we generate new code, or designs, or any other form of idea. But no sufficiently ambitious idea lives in a vacuum. Ideas only make sense in the context of other work done by other workers. Ideas are constantly in competition with others in the marketplace. Being informed about the context and market for our ideas is as important to our success as the ideas themselves.
Your ability to be effective is a function of your ability to efficiently ingest the information around you. Without this you have no chance of synthesizing something valuable. And this is why you end up plugged into vast communication networks of email, messages, slacks, chats, posts, video calls, all-hands, meetings, and any number of other channels.
In information work the cardinal sin is to block another team. You are one person and they may be many which means every second wasted risks being multiplied. We should all aspire to develop reputations of increasing leverage.
On the other hand, if you aren’t careful you could spend the whole day unblocking others only to find you haven’t made any progress of your own. You cannot allow the urgent to overtake the important and many of these channels convey only the urgency of a task.
How do you stay informed and advance your own work while also keeping others informed so they can do the same?
1/ Have A System for managing your communication across all channels.
No single system for managing communication is inherently better than another, it is just a matter of what works for you. The properties of a system that is working well for you:
Managing your information ecosystems is a bit like tending a garden. It is a small amount of work to maintain order if you do it every day, but if you aren’t proactive things can be quickly overrun.
2/ Know your role and set expectations.
3/ Be proactive but not formulaic.
Your communication preferences do not live in a vacuum and affect those around you. If you ignore emails or send disruptive work chats then you are contributing to a net decrease in overall productivity. One thing you can do is be more proactive.
Reactive communication is much more expensive as it is interrupt driven and tends to be piecemeal rather than comprehensive. It is beneficial to be more proactive in sending out thoughtful communication to a consistent group of peers to ensure you are all on the same page. Those regular communications can also serve as a shorthand reference for future ad hoc conversations which will save time. However if they become formulaic they end up being a chore to compose and are rarely read. So if you don’t have anything new to say or a new way to say it then don’t bother.
What Works For Me: Inbox Ten
For those who are curious, my system is Inbox Ten. That means I aim to end every day with fewer than ten emails in my inbox. I also have fewer than ten open chat threads across all interfaces. I’ve also read all relevant notifications in internal tools, read all relevant posts in internal groups I care about, and started rough drafts of any relevant proactive communications I intend to produce.
Email is the backbone of my system and I treat every email I receive as an action to be taken.
One of the most important tools you can use, regardless of channel, is to just decline to engage. If you don’t have anything to add, don’t have time to take on more, or just aren’t interested: say so. Don’t let it linger in your inbox or get yourself talked into work you don’t think is a good use of your time.
When I am initiating communication:
One thing you don’t see here are Google Docs. I do create them from time to time, mostly to allow for line level comments and questions, but they are payloads for these messages and not the content themselves.
A good sign your system is functioning is if you use it on yourself. For example, I often email myself throughout the day with work I need to attend to.