Brian Willis

How t0st Cut GTA Online Loading Times by 70%

The pseudonymous hacker t0st took it upon themselves to investigate what was taking so damn long during GTA’s famously lengthy loading times, and the results are not good:

It’s parsing something. Parsing what? Untangling the disassembly would take forever so I decided to dump some samples from the running process using x64dbg. Some debug-stepping later it turns out it’s… JSON! They’re parsing JSON. A whopping 10 megabytes worth of JSON with some 63k item entries.

It’s fascinating to see the whole investigation laid out like this so plainly. I’ve never been involved in a disassembly project like this, so it’s a lot of fun to look behind the curtain and see how the professionals do it. It’s also remarkable that this whole thing was pulled off with no access to the original source code, but instead by using the obfusticated assembly that’s shipped to customers.

We're in an Asset Price Bubble Again Aren't We?

“I see a stock going up, and I buy it, and I just watch it until it stops going up, and then I sell it”.

Genius. I wonder why no one else tried that.

Filecoin

I’ve subscribed to Coinbase Earn for a while now. The deal is straightforward: you watch videos about up-and-coming cryptocurrencies and you’re rewarded for your time with units of the currency that you’re learning about. It’s a neat way to distribute coins to a wide variety of people and to spread some love in the crypto community.

I’ve watched a fair number of videos after this many months, and the thing that strikes me about so many of these alt-coins is how undifferentiated they are. Compare Coinbase’s description of Stellar Lumens:

Stellar’s cryptocurrency, the Stellar Lumen (XLM), powers the Stellar payment network. Stellar aims to connect banks, payment systems, and individuals quickly and reliably.

…to their description of Ripple:

Built for enterprise use, Ripple (XRP) aims to be a fast, cost-efficient cryptocurrency for cross-border payments.

Or was that Tezos? Or Algorand? who can keep track any more? The differences between some of these projects are so small that they barely register.

Which is why Filecoin is such a surprise. First, it solves a genuine problem—people want low-cost cloud storage—but the way it solves this fits cryptocurrency remarkably well. Providers of cloud storage offer up their available storage space, and you can purchase this using Filecoin tokens. Proof-of-spacetime checks happen every 24 hours to ensure that the storage provider is actually holding the data and keeping it available, and as this happens the network distributes Filecoins to the provider.

This use case fits cryptocurrency really well, far more so that any other that I’ve seen. Storage providers and customers can be somewhat anonymous from one another, a large pool of providers will ensure that competition keeps prices fair, and the distributed nature of cryptocurrency means that you’ll have providers from all over the world.

The crypto community has always had a lot of high falutin’ talk about redefining money and it’s role as a store of value and medium of exchange, but the recent run-up of cryptocurrency prices—in particular Bitcoin—shows us that a big chunk of the market is prioritising get-rich-quick scheming, but with Filecoin there’s a return to genuine honest-to-goodness capitalism with buyers and sellers and value creation and a marketplace.

Technical requirements are fairly high at this point. You’ll need at least 32Gb of memory and 1Tb of fast NVMe storage to participate as a miner, but it’s easy to see where this is headed. Imagine a world where you could slice off 50% of the free space on your hard disk, and have the network manage that space for you. Consumers use the storage you’ve made available to provide redundancy for their data, and you get compensated in crypto tokens for your trouble.

Aussielent

When Soylent shakes were first announced I thought they were a really neat idea. Shopping for groceries and doing a bunch of meal prep once a week was becoming a bit of a chore, and eating out regularly gets absurdly expensive in my part of the world. Drinking your meals seemed like a way to save time and money.

International shipping being what it is, I never got to try Soylent. Shipping the powder halfway around the world nearly doubled the price, and I wasn’t prepared to wear that cost for meals that could very well end up tasting like wallpaper paste.

Aussielent packaging.

Last year I learnt about Aussielent—a company based in Australia trying to make a similar product. So I purchased a week’s worth and resolved to give it a try.

Each bag contains a day’s worth of food in powdered form. The instructions encourage you to break each bag into four servings, spacing them evenly throughout the day. You mix each serving with water in a shaker bottle, but otherwise don’t need to add anything.

My first impression was surprisingly good. The flavour was neutral and inoffensive. Imagine the taste of leftover milk at the bottom of a bowl of cereal. A mild oaty flavour that’s slightly sweet. I remember thinking while rinsing out the shaker bottle that I could eat this way all the time.

Then, while walking to work, it hit me. I was wide awake. Staggeringly awake. I hadn’t had any coffee yet, but the sun was shining, the birds were singing, and I was hyper-aware of all of it. Turns out liquids digest very easily, and this thing hit my bloodstream all at once. Of course, it all wore off very quickly, and I was hungry again by mid-morning.

The next few days continued like this. Without spending time to break down food in my stomach, the nutritional value of each meal hit me all at once and then disappeared just as quickly. I went through peaks and troughs of energy all day.

Eating four times a day is an inconvenience too. While your coworkers are taking lunch, you’re at your desk. When you’re hungry and need to mix up a meal, you’ll find yourself stuck in an 11 a.m. meeting. The rest of the world doesn’t operate on this schedule, and I struggled to as well.

On the third day, I was starting to get light-headed and dizzy before meals, which is never a good sign. So on day four I gave up and went back to regular food.

For a month, the remaining packets sat in their box on the kitchen counter, mocking me for my hubris.

I wasn’t willing to throw the remainder away, so I started having a shake each morning for breakfast instead, and I have to say this is where the product shines. If you treat these shakes as a once-in-a-while replacement for the occasional meal when you’re too busy to eat properly, they’re a lifesaver. I spent the next couple of week’s showing up to work full of energy, bright-eyed and bushy-tailed, with no time wasted in the mornings.

Be warned that the mix can clump together if you don’t shake it aggressively enough. Through some experimentation, I figured out that you can produce a more even consistency if you make each shake the night before and leave it in the refrigerator overnight to incorporate.

What surprised me most about this experiment was that unlike many supplement companies, Aussielent doesn’t hedge their bets by calling their product “part of a balanced diet” or “nutritional insurance“. They really do double-down on calling Aussielent a complete replacement for every meal. Given the complexities of nutrition, this probably isn’t true. In saying that, you could do worse. If you’re short on time and eating a lot of fast food I’d speculate that these meal replacement products are better for you, if only because their nutritional value receives so much thought from their creators and so much scrutiny from their critics.

The First Reckoning of Computer Science

Selected pieces of a twitter thread by Yonatan Zunger, posted verbatim here because Twitter is awful for long-form text:

I didn’t come up in computer science; I used to be a physicist. That transition gives me a rather specific perspective on this situation: that computer science is a field which hasn’t yet encountered consequences.

Chemistry had two reckonings, in the late 19th and early 20th centuries: first with dynamite, and then with chemical weapons. Physics had its reckoning with the Bomb. These events completely changed the fields, and the way people come up in them.

Before then, both fields were dominated by hope: the ways that science could be used to make the world a fundamentally better place. New dyes, new materials, new sources of energy, new modes of transport; everyone could see the beauty.

Afterwards, everyone became painfully, continuously aware of how things could be turned against everything they ever dreamed of.

I don’t know the stories from chemistry as well. In physics, I can tell you that everyone, from their first days as an undergrad (or often before), encounters this and wrestles with it. They talk about it in the halls or late at night, they worry about it.

For a long time, it frightened me that biology hadn’t yet had this moment of reckoning — that there hadn’t yet been an incident which seared the importance of ethics and consequences into the hearts of every young scientist. Today, it frightens me more about computer scientists.

Young engineers treat ethics as a speciality, something you don’t really need to worry about; you just need to learn to code, change the world, disrupt something. They’re like kids in a toy shop full of loaded AK-47’s.

The hard lesson which other fields had to learn was this: you can never ignore that for a minute. You can never stop thinking about the uses your work might be put to, the consequences which might follow, because the worst case is so much worse than you can imagine.

Short postscript: As several people have pointed out, many fields of biology have had these reckonings (thanks to eugenics and the like), and civil engineering did as well, with things like bridge collapses in the late 19th century.

Civil engineering responded to this by developing codes of ethics and systems of professional licensure which shape it to this day. I’ve been wondering about this a lot, recently: whether we should be doing the same in CS.

That is, ethical codes with teeth, and licensing boards with the real ability to throw someone out of the profession, the way boards can in engineering, medicine, or law.

The university I attended didn’t teach an ethics course as a part of the Computer Science program. I’ve heard others describe such classes as an easy way for people to bump up their GPAs while they should be off learning how to build compilers, or network infrastructure, or some other Hard Thing. I don’t know why we programmers are such suckers for technical self-flagellation, especially when there’s so much moral self-flagellation to be had.

Zunger is right—software developers are writing the script that the future will run on, and we’re doing so while asleep at the wheel. Between Equifax, Cambridge Analytica, and whatever major breach happens next1, we’ve set the world up to be taken advantage of by whichever player is willing to be the most malicious.

We can’t expect legislators to fix this, because they’ve shown that they don’t understand the technical side. We can’t rely on the market to fix this, because we’ve taught the world that software should be free, and so we desperately need advertising dollars (and all the associated tracking that comes along with that) to keep the industry afloat. We can’t rely on a professional standards body to fix this, because there’s no way to keep a motivated kid from learning to code—and let’s be honest here, most of us were that kid at some point.

So that leaves us. We’re going to have to fix this mess on our own.

  1. Notice that it isn’t controversial when someone suggests there are more serious breaches coming?