Ratchet and Clank: Up Your Arsenal was an online title that shipped without the ability to patch either code or data. Which was unfortunate.
The game downloads and displays an End User License Agreement each time it’s launched. This is an ascii string stored in a static buffer. This buffer is filled from the server without checking that the size is within the buffer’s capacity.
We exploited this fact to cause the EULA download to overflow the static buffer far enough to also overwrite a known global variable. This variable happened to be the function callback handler for a specific network packet. Once this handler was installed, we could send the network packet to cause a jump to the address in the overwritten global. The address was a pointer to some payload code that was stored earlier in the EULA data.
Valuable data existed between the real end of the EULA buffer and the overwritten global, so the first job of the payload code was to restore this trashed data. Once that was done things were back to normal and the actual patching work could be done.
the next time you are debugging emergent behavior, you might try thinking of the components as agents colluding via covert channels
Everyone at hot startups drinks a lot of coffee. But you can’t drink just any coffee. Nobody can drink just any coffee anymore and be taken seriously. (Except for those who proudly and intentionally do so. The key is doing it with intention. But you can’t just saunter up to Starbucks or Dunkin’ Donuts and get a coffee and actually think it’s good.) And so five times in a row, Stewart stalks past the Starbucks at the corner of Second Street and Folsom. He’s looking for an independent cafe that is supposed to be… right around here… somewhere…
in the majority of Latin languages, ø sorts as an accented variant of o, meaning that most users would expect ø alongside o. However, a few languages, such as Norwegian and Danish, sort ø as a unique element after z. Sorting “Søren” after “Sylt” in a long list, as would be expected in Norwegian or Danish, will cause problems if the user expects ø as a variant of o.
What we have now is an enemy of the state that’s just there, passively feeding off everything, working off the fact that all these data plumes are given off – exhaust that’s just exhaled as a matter of course as people go by their lives.
Dan Hon. You can’t go full-on data plume silent-running without opting out of 21st century social life, but give off too much and you’re feeding parasites. I wonder if there’s a compromise between the two, or if the demands of the former mean the latter isn’t escapable..
The developer raises up the great sword of technology and brings it down upon the plinth of culture—and the sword shatters. But never mind; we can go back to the forge to make a bigger, better sword for retina displays. And as we craft it we whisper that eternal prayer for the comfort of list-makers: This time will be different.
This is just a list of the personal pain points that I have at least a tiny hope of seeing fixed. I’ll assume that Apple aren’t going to get better (or more open) at cloud services. So asking for an iMessage that works, or that will also work on Android (I avoid things that lock me into a single platform nowadays) is a non-starter. Likewise, there are things I’d like that are never going to happen (choosing the default camera app, choosing the default web browser, relaxed app review). From most-likely (?) to least-likely:
- I’d like to see which apps are using all my battery. Mavericks grew this last year. There’s a “that’s too much information” argument, but the phone will already tell break down cell data usage by app – to me, knowing what’s using battery seems more useful than that.
- Stop home screen icons auto-arranging, so you can leave gaps between icons.
- Make the notification settings screen not awful. Just sorting the list of apps would help. But also removing the pointless distinction between the two lists, and letting me see which apps can (eg) make noise without having to tap on every single one.
- I want to be able to share links and images to WhatsApp (this is an end-run around iMessage). I want “links” and “images” to be treated as special objects, and let third party apps register to handle them. (On Android this has led to abuse but this is mostly because of the naïve implementation there.) Sharing links to Pocket from any app without needing special integration, sharing images to Instagram direct from the camera app, whatever. This doesn’t even need full-on XPC, just launching the other app and sending a file will do it. 90% of the infrastructure is already there.
- As a developer, I’d like to see code signing requirements relaxed a little. I’d like to see closed beta testing for apps that doesn’t require collecting UUIDs and managing devices and having to turn people away because you might hit your 100 device limit*. I spend days fighting this rubbish. And it stops no piracy because people who want to do that are just jailbreaking their devices.
- I’d like to know if I just pressed “snooze” or “stop” on the alarm, so I know if it will go off again 5 minutes after I get in the shower.
* The 100 device limit is clearly not taken seriously in Apple because you’re supposed to get an enterprise cert. The $100/year developer level is for toy developers. If you’re doing anything serious at all, you’re doing beta testing with an enterprise certificate. That’s why Apple don’t care about solving that problem – no-one they care about has that problem.
At the end of 1386, Jogaila returned to Vilnius to [..] convert the Grand Duchy to Catholicism. [..] New converts were baptized en masse, with little teaching, and were awarded wool shirts.
“People will do anything for a free t-shirt”, historical perspective edition. From
“Union of Krewo” on Wikipedia.
Going on my list of “best pictures ever”. (via Pyramid Energy)
The consequence of Apple’s approach is that pretty much everything behaves in predictable ways, but you have a very narrow range of devices at a narrow range of prices (and screen sizes), and that severely restricts the addressable market. More people can afford $50 phones than can afford $600 phones. The consequence of the Android approach is that you have a much wide range of devices and prices, and a much larger market, but anything on the bleeding edge doesn’t work predictably at all.
This is presented from a seller’s perspective (“addressable market”), but the other perspective here is that “Android is fragmented” as a complaint looks interestingly close to “poor people should not be allowed smartphones”.