Hovercraft Battle Arena Hack

We’d been playing a silly game on the FireTV cube — Hovercraft Battle Arena. It’s what my former boss would call good, stupid fun. But you’ve got to wait to open these crates to get stuff — gems, money, and components to upgrade the hovercraft. We wanted to be able to play with maxed out hovercraft. So I poked around a little bit and found a cheat for insta-upgrades. Game components are stored as files. For Android installations, the files are under /Android/data/com.highscorehero.battlearena/files … but it’s a lot easier to write a batch to copy files in Windows. The Windows app data files are under %userprofile%\AppData\Local\Packages\ … then the trick is finding the right HighScoreHeroLLCHoverfractBattleArena folder.

Once you find the files, there’s no validation on the files. Now it’s binary stuff that would take a good bit of effort to manually edit (i.e. if I wanted to just give myself 10k gems, I’d have to figure out which exact bits to flip) but you can grab an entire file when the game is in a state you want. That is — when you have four crates ready to open, copy out the Crates* files. When your near the end of the season and at level twenty-something, copy the XP_Int.data file. When you’ve not claimed any of the season rewards, copy out the SeasonReward_Bool.data file. Drop those files into the live folder used by the game & launch the game. Now you can open four crates, claim the gems from each level, and close the game. Copy the season rewards and crate files back and do it again. And again. And again. Eventually, you’ll have all of the blueprints, upgrade parts, gems, and money that you would need. You can make a backup of the entire folder at this point. Use your money and gems to upgrade a hovercraft, then copy out the files for that craft. Snap the backed up files back so you’ve got all of the gems and money, then upgrade a different craft. Repeat until you’ve got upgraded files for all craft.

It does, unfortunately, kind of ruin the game. There’s no point — you’re not accumulating points to upgrade anymore. Anya and I still like it … but it’s absolutely not the same 🙂

On Originalism

Originalism can roll back a frightening amount of legislation — New Deal, civil rights, food safety, etc. There’s even a school of thought that says the 14th amendment doesn’t mean stuff like the bill of rights doesn’t limit state government. Just Congress. Which would mean a *state* is free to enact limits that abrogate our federally ensured rights. The illogic of the argument is, I assume, why originalists inconsistently apply their beliefs rulings. Think of the 11th Amendment interpretation that “by Citizens of another State” includes ‘citizens of *that* state’, for instance. Or the purported Second Amendment right to weaponry that hadn’t been imagined in the late 1700’s. Originalists make decisions contrary to the founders’ understanding of what they wrote.
 
And originalism seems to invalidate itself — was the understanding at the time the Constitution was adopted that most legislation requires a Constitutional amendment?

Coop On Wheels

Scott built axles and wheels to move the chicken coop across the yard. We jacked a side up, slid the axle underneath, and lowered the coop. Repeated the process on the other side and, voila, a mobile coop. We pushed it because we needed to adjust the angle of the axles to make a few turns. But it moved surprisingly well.

List Extensions Within Folder

It didn’t occur to me that Apache serves everything under a folder and the .git folder may well be under a folder (you can have your project up a level so there’s a single folder at the root of the project & that folder is DocumentRoot for the web site). Without knowing specific file names, you cannot get anything since directory browsing is disabled. But git has a well-known structure so browsing to /.git/index or really scary for someone who stuffs their password in the repo URL /.git/config is there and Apache happily serves it unless you’ve provided instructions otherwise.

A coworker brought up the intriguing idea of, instead of blocking the .git folder so things subordinate to .git are never served, having a specific list of known good extensions the web server was willing to serve. Which … ironically was one of the things I really didn’t like about IIS. Kind of like the extra frustration of driving behind someone who is going the speed limit. Frustrating because I want to go faster, extra frustrating because they aren’t actually wrong.

But configuring a list of good-to-serve extensions means you’ve got to get a handle on what extensions are on your server in the first place. This command provides a list of extensions and a count per extension (so you can easily identify one-offs that may not be needed):

find /path/to/search/ -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort | uniq -c

 

Dueling Town Halls

It struck me, while watching the dueling town hall events, how normalized it has become that the national news talks about the president every.single.day. I get that it’s news because he’s the president … but, for most of American history, the president did his thing. Some people didn’t agree with his choices, some did. But it wasn’t so outrageous as to warrant being broadcast to the entire country on the national news. I don’t mean the cable-news plenty-of-time-to-fill stations — I mean the half hour daily news on the national networks.

Chicken Coop Down

Success! We removed the plywood around the playhouse base and tried pulling the playhouse down. Nothing. It’s an odd combination of flimsy and sturdy, but sturdy won out. Scott wrapped a chain around the front 4×4’s and cut through them. For safety, he tacked in two non-cut 4x4s to act as braces while he cut the structure. Pulled again and nothing — those two braces held the entire building.

Then the took other dimensional lumbar and threw it like a javelin at the two braces. A single brace still held the whole building, but after the second brace was removed … we finally have success. It came down in one piece — there are a few dings and the front porch was damaged. But we’ve got a little building at ground level. Now to flip it, clean it up, and get the chickens moved in.

On Patriotic History

History is written by the victor. They can tell us how nice they were (or at least how necessary their not-niceness was). But the fact those who win get to write history in their favor doesn’t negate the value of ensuring people have a more robust view of what actually transpired. The good and the bad. Which makes Trump’s idea of a more patriotic history quite frightening.
 
In software development, we have “retrospectives” — a meeting where everyone chats about how the last project went. What worked well. What didn’t work well. It’s not meant to be subversive, negative, or blamey — it’s meant to get people thinking about how we could improve the things that didn’t work well. And to feel proud about the things that did go well. I’d love to see this approach taken to teaching history.
 
By focusing only on the good aspects, you lose important information. A tangentially related example: my daughter’s social studies book attempts to cover the concept of savings and loans. They talked about saving money to buy something bigger later and about the bank giving you money to buy something bigger *now* and you you give the money back later. And omitted the entire concept of interest. Elementary schools are telling kids that the bank will give you a couple hundred k to buy a house, you pay them back over time, and it’s all beautiful. I pulled up my credit card statement and showed her how the grand we spent last month could be paid back immediately — the bank gave me a grand, I paid them a grand back, and they gave me 30$ in bonus cash back for using their service — but that’s not a sustainable business model. How does the bank pay for the building downtown? The people who work there? The advertising? The computer systems? I showed her the “if you pay the minimum” and “if you pay more than the minimum, look how much you ‘save'” box where that grand could cost me three grand. Or I could ‘save’ 1500 by paying more than the minimum due.