Adventuring with Warren Robinett

One of my earliest videogaming experiences was with the classic Atari 2600 game, Adventure. A favorite of many who played on the system, this game has attained legendary status for it’s brilliant design, a technical accomplishment that pushed the Atari well beyond what its designers had intended it to be capable of, fun and replayability, inspiring a genre of adventure games, including the Legend of Zelda series, and of course becoming as known as the game to feature the first “easter egg”.

The game is still fun to play today, and remains one of my favorites to revisit. It is extremely replayable, and much of the fun that I had playing it was with investigating and experimenting. In 1981, I played this game with my brother all the time. We learned the basics in Level 1, which was a truncated version of the full game, with a smaller map and only two of the three dragons, and no bat. I moved on to Level 2, which introduced an expanded world with one more castle, a dragon, and the bat, and had all the items in prescribed locations so that the quest was the same every time, but you had to go to every castle and defeat every dragon in order to win. The new dragon, Rhindle, was so fast and aggressive that he scared my brother, who was about 4 at the time, so much that he could only watch me play. After winning Level 2 a few times, I proceeded to Level 3, wherein the item placement was randomized, making each re-play a unique experience.

One time, my older cousin came over and we were playing Adventure, and she showed me a secret room in the Black Castle, accessible only by using the Bridge, where she found a mysterious, invisible Dot, which she used to reveal the most amazing thing: the first Easter Egg: a hidden secret that revealed a message from the game’s creator!


This was how I came to know the name of Warren Robinett, who designed and programmed Adventure and became famous for being one of the first game developers to have their name known publicly.

Even before being shown the easter egg, I had spent many hours exploring and experimenting in the world of Adventure. I played not just to win the game, but to do crazy things with the objects in the game to see what might happen.

I put the Bridge in walls and used it to exit the screen and appear on another screen, where normally you couldn’t get to.

I tested putting all of the objects in one room to see if anything special would happen. I discovered that when there were too many objects in one room, the Magnet would stop working. Or the Sword would not be able to slay a live dragon. Or keys would fail to unlock the castle gate. Somehow, if there were too many objects in one place, the Atari couldn’t handle it. But I could always move, I could always pick up objects and carry them, and walls always worked (with the exception of the wall involved in revealing the Easter Egg room.)

I learned how to “break” the game in other ways. I discovered that if you dropped a key in the doorway of a castle while you were closing the gate, the gate would close in front of the key, which would disappear inside the castle, forever sealing it. I learned that if a castle’s gate was closed, if there was a dragon or the bat inside, it couldn’t get out. And I learned that unlocking a castle would release any creatures inside, and that if a dragon did not have an item to guard, it would leave and roam around, hunting me down.

I learned that while I couldn’t carry or move a dead dragon, the bat could, and I could catch and carry the bat, which allowed me to use it to move dead dragons (or live ones, which was always a risky proposition!) So then I took to using the bat to grab dragon carcasses and move them to an otherwise-empty castle, and lock everyone in there so that in the event that I got stuck and had to reset the game to get unstuck (an action which resurrects every dead character in the game, you and the dragons) the dragons would be safely contained, leaving me free to continue exploring and experimenting without interruption, for hours.

I took time to carefully explore the mazes and learn how to move through them quickly, and to get to any area in the maze that I needed to. I learned places to put the Bridge to take shortcuts. I puzzled over three empty rooms in the vicinity of the White castle, wondering what their purpose was, if they contained any hidden secrets, and how to unlock them.

Despite being pretty sure that I knew everything there was to know about Adventure, I never could say for certain that there wasn’t something that I didn’t know, and this (as well as the fun of speedrunning the game) gave me the incentive to play the game endlessly, for years. While I figured that I’d found all of its secrets, I still had questions.

Recently, I was thinking about Adventure again, and played it a few times, and did some reading about it on various websites, and stumbled upon Warren Robinett’s website. There, I learned that he is writing a book on Adventure that will be coming out in 2015! I am so excited about this. His webpage mentions that to receive updates about the book project to send him an email with the word “annotated” in the subject line, so I did. I wrote him a short note thanking him for creating such a wonderful game that I have enjoyed these many years. And I wasn’t sure if he would read it, or if he merely set up a listserve bot that would automatically subscribe me to his mail list, and maybe he’d never read my message. But a day later I had a response from Mr. Robinett in my inbox!


Holy shit! Granted, it’s a sentence long, but he read and replied! So, not wanting to be too intrusive, but curious about some of the questions I’d had about his game since forever, I wrote back and politely asked. And he responded again, short and sweet, but I’m thrilled to have corresponded with a true legend of the industry.

At any rate, here’s the excerpt from our correspondence where he answers my questions:

csanyk: I have always wondered about the empty rooms in the area outside the labyrinth near the White Castle. Apart from occasionally holding random objects, I always thought that those rooms felt like they should have had some more purpose than they did. After learning about the easter egg with the dot, I spent a lot of time trying to figure out if there wasn’t some kind of hidden secret in those rooms, and as it turned out, there wasn’t. But boy did I try everything I could think of just to make sure!

Warren Robinett: Well, you are probably aware that the game world was bigger for levels 2 and 3 than for level 1. Level 1 was for beginners, and some of the difficult stuff was intentionally left out of the game world. I regarded level 1 as being “truncated”, because I changed the room-to-room links to leave out more than half the rooms. So the two rooms you asked about had different functions in level 1 — one was the interior of the Black Castle (just a single room in level 1), and the other was where the Catacombs are in levels 2 and 3 (again, just a single dead-end room).

In level 3, the random positioning of object was supposed to put stuff in those rooms sometimes, but I made some mistakes in the random number generator, and it seems they were nearly always empty.

csanyk: If you could have had more time or more computing resources to put something in those rooms, to make a Level 4 game, what would you have populated them with? Another castle and dragon? Some type of new item? Was there something that was meant to be there, that never made it in to the game due to constraints? Or were these rooms always intended to be empty spaces?

Warren Robinett: I talk about that in my book The Annotated Adventure, which I hope to be finished with this fall.

csanyk: I discovered that if you press select until you have the option for game 3, and then pull down on controller 1, the player spawns into the game select screen and can walk about the room. Was this something that was put into the game deliberately, and if so why? How did it come about?

Warren Robinett: The game-select screen was a room. I re-purposed a room as the meta-game UI screen to save memory. I put the Man down in the corner (I thought he was totally trapped) so he wouldn’t be there to distract you. You found a way to break him free.

csanyk: As a kid, after killing the dragons, I spent hours trying to put the Bridge everywhere I could think to and see what would happen. In a few screens, there are places where you can put the bridge off the top or bottom of the screen, and use it to “break through” the bottom wall of a room that you shouldn’t be able to pass through, and end up somewhere else, only to become stuck. To me, a huge part of the game’s lasting appeal and replayability was that it seemed to invite this kind of experimentation. For example, if you go one room down and left from the Yellow Castle, and stick the bridge in the bottom wall of the screen and pass through it, you end up in the White Castle screen, stuck between the towers:

Adventure (1980) (Atari)_7

Adventure (1980) (Atari)_6

or in the room one screen down from the Gold Castle, putting the bridge in the bottom wall will warp you to the Gold Castle, again between the towers:

Adventure (1980) (Atari)_8

Adventure (1980) (Atari)_9

or from this room in the labyrinth, you can travel to the room next to where the secret is hidden — only you appear at the bottom of the room, and can’t quite break free into the room, and have to retreat back up through the bridge to get back to the labyrinth.

Adventure (1980) (Atari)_10

Adventure (1980) (Atari)_11

Warren Robinett: Every room had a link to four other rooms. No exceptions. If you could get through the wall, you could find out which room that was.

Since the Bat and Dragons could move around in different directions, there had to be a new room off each edge.

csanyk: I loved the fact that when you are eaten by a Dragon, you can still move, confined within its stomach. Also, when two dragons are on the screen, and one eats you, the second dragon will come up and eat you again, while you’re in the first dragon’s stomach. And most fun of all was if you left the game run, and the Bat would come by and pick up the dragon whose stomach you were in, and fly around with you, giving you a bizarre tour of the kingdom. The idea that the game world continued after you died was very novel.

Was that a design choice or an accident?

Warren Robinett: The thing you need to understand was that developing the game was incremental. You add some code, you fix a bug (or try). And see how it plays.

I didn’t plan for the Man to be able to wiggle after he was eaten. But when I saw, I liked it. I could have eliminated that by re-ordering some subroutine calls. But it didn’t do that.

I didn’t plan for the Bat to be able to pick up a Dragon that had eaten the Man. But I had coded each piece separately. So it just fell out of the simulation with no effort required. I liked it — it was hilarious. No way would I “fix” that.

csanyk: How did you ensure that the randomization in Game 3 would not result in the game sometimes becoming unwinnable, such as by locking the Black Key in the Gold Castle and the Gold Key in the Black Castle?

Warren Robinett: I tried to make sure each random positioning was winnable, by choosing from certain ranges of rooms for each object. But I botched it, and it DID sometimes generate unwinnable configurations.

csanyk: I think I’ve played the game enough to have seen everything you can expect to happen. I’ve seen the Bat, carrying the Sword, accidentally kill a Dragon. I’ve closed the castle gates and dropped the key inside as it was closing, locking it in forever. I’ve seen so many objects on one screen that the Sword or Magnet wouldn’t work any more. I’ve seen the Bat fly by the castle gate with a Key, opening it. I’ve worried ever since that I could get locked inside of the castle by the Bat if I left the key outside where it could grab it, but this has never happened. It doesn’t seem like objects can interact with each other unless they’re on the current screen, with the notable exception that if you hold the Magnet off the edge of a screen, you can attract objects in the next screen. And also the above-mentioned trick with the Bridge going off the top or bottom of certain screens. The amount of exploration and experimentation that I’ve done in this game, for as small as it really is, is pretty breathtaking, when I think about it. Were you ever surprised to hear from fans just how much they replayed your game? What things have players done in Adventure that surprised you?

Warren Robinett: The stuff you mention above is correct. The Bat could also pick up objects off-screen.

I am now eagerly awaiting the publication of his book later this year. So stoked!

Fiction is all in your head: Everyone can have it their way

Personally, I don’t buy this theory of Metroid’s Samus Aran being transgender under our noses all along.

In the 1980’s, the secret of Samus being female was cool, and I liked the surprise. I don’t know of anyone who didn’t. Literally no kids who I know of played the original Metroid back in the day, learned of the reveal and thought it stunk, or felt betrayed to learn that “they” had “been” [playing as] a girl all along. Gamers have pretty much universally always accepted Samus as a female character.

I grew up with a few notable female heroes in sci fi, like Ripley from Aliens, and one of the Metroid minibosses was an alien named Ridley who takes some design cues from Giger’s alien, and it was later revealed that the creator of Metroid was doing homage to Alien with the character. Samus’s gender reveal has been understood to be another homage to the Ellen Ripley character. There was also Star Wars‘s Princess Leia, who, although at first seemed to be another damsel in distress needing to be rescued, stood up to Grand Moff Tarkin and Darth Freaking Vader and his interrogation droid, and upon being rescued turned out to be a strong and formidable character every bit as wily and capable of the heroic male characters who broke her out of Death Star detention block AA-23.

Nonetheless, I do think it’s fair to say that there’s plenty of sexism and stereotyping in our culture. In fact, it’s more than fair — it’s obvious, blatant, pervasive. While individuals are all over the map in terms of how open and accepting they are, as a culture overall we have made a tremendous amount of progress toward gender equality in the time since I was born. Yet, there’s still plenty of sexism and misogyny everywhere you look. It’s true there is a lot of the closed-minded thinking still around, and I’m sure it will continue to persist in our culture after I’m gone.

The Japanese culture that birthed the Metroid universe is different enough from American culture that we do find some of their ideas about gender and sexuality to be strange. But that’s part of what makes learning about other cultures cool. It is a subject that is too complex for me to adequately summarize in even a few paragraphs, but suffice it to say for the purposes of this article that comparative cross-cultural sexuality is a pretty fascinating field to study if you want to get into it, and aren’t too uptight. (Seriously, go out and do a PhD on the subject if you want to.) For our purposes here, it’s probably enough to know that there’s a streak of chauvinism, and in terms of traditional gender roles in Japanese culture the differences between traditionally masculine and traditionally feminine is even more pronounced than in American culture. But there’s also a lot of counter examples in Japanese entertainment, of strong, heroic, badass female characters as well. We might say that in Japanese culture, as compared with American culture, there’s greater contrast between gender stereotypes, but perhaps a greater acceptance of the exceptional.

I’ll admit that I don’t really feel like an authority on such matters, so I could be well off the mark. But I feel reasonably safe in assuming that the guys who came up with Samus were probably not the most advanced thinkers at the time when it came to gender identity. We should not hold an expectation for them to get it “right” or be “sensitive” or “politically correct” in how they think about, or talk about, or portray the character of Samus Aran. And when looking for characters to become more realistic as they develop over time, we should not hold an expectation for them to mirror our ideals. Real people are complex and flawed, and have similarly “problematic” views with regard to social justice issues as is present in our real culture. So for a fictional character to conform to some ideal in order to be a role model is neither necessary, nor realistic.

Even if that’s “problematic” for some, that’s acceptable. Nobody has all the answers, or has it all figured out. And the stories about how we struggle with ourselves are usually a lot more compelling than stories about ideal perfectly who always behave in exemplary fashion that should serve as a model for the behavior of others. The notion that “problematic” depictions of characters is acceptable doesn’t mean that there aren’t things that are problematic. But that people aren’t perfect, and sometimes artists offend, sometimes without meaning to. People talk about things they don’t understand all the time, and that’s great. That’s a part of how we make progress toward greater understanding.

I don’t pretend to know everything that I’m talking about, either, and that is why it’s important that I talk about it. I’m not trying to tell everyone “the way it is” or how to think. I’m talking about how things appear to me, from my perspective, and to the best of my knowledge. I think that’s all we can ask of anyone at any time. That, and to go and dig for the truth. Which, you may never know, but can often get closer to.

But basically, at its core, Metroid didn’t feel to me at the time like it was a game about any of that gender stuff, at all. And it still doesn’t today. For all I know, maybe the creators of Metroid did consider it in designing Samus, or perhaps joked about it as a way of getting around their own lack of comfort in thinking about a female character who does things that are more traditionally regarded as “masculine”. Perhaps they even really did conceive of the character as transgender, at least in terms of what their concept of transgender means. But in any case, regardless of Samus’s gender or sexual identity, the important aspects of Samus are that she runs, jumps, and shoots, explores, powers up, and is a galactic bounty hunter and a total bad ass who is fearless, cool under fire, and utterly competent. Because that is what Metroid is mainly about. “Surprise, you’re a girl!” was a twist at the end, revealed only to players who beat the game fast enough to deserve to be let in on something cool. But it wasn’t what Metroid was about.

Samus’s character and story becomes more important in later games in the series, where storytelling elements of the game design became stronger, but Metroid was in its conception a game about exploring a hostile alien world and defeating a grave danger. Whether it was a man in the suit, or a woman, was secondary. But it was cool that Samus was a woman. And if she’s a transgender woman, then OK. But regardless of what the creators might have said about the character while creating the game, or left on the cutting room floor, there’s basically nothing in the published material that points to Samus being trans.

Which means, of course, that if you like Samus and have a need to see her as a transgender character for whatever reason, the published material is open to such interpretation. Just like we can have black Santa Claus for black people to better identify with for Christmastime, why can’t we have Samus as a transgender woman for the trans community, and people who don’t prefer that “edition” of Samus can have it the way they want it? Why does every detail in every fan’s head about a completely fictional universe have to agree with every other detail in every other fan’s head? It doesn’t!

Nintendo did have a transgender character in the 80’s, though — Birdo, introduced in the US release of Super Mario Bros. 2 — so it’s not completely out of the question that they might have had others, but I still think that the early concept of Samus that we got in 1985 was a cisgender female warrior. Birdo was a creature, though, not a human, and the portrayal of Birdo’s gender confusion is, I’m sure, a bit problematic for GLBTQ allies in 2015 — Birdo is presented as “confused” about his/her gender, and this is presented as at least somewhat comical, and (as I’m trying to indicate by my use of his/her, which normally would be considered offensive to a transgender person who knows what gender they are) the folks at Nintendo weren’t entirely sure what to make of Birdo’s gender, or at least didn’t want to spell out all the answers for their audience, and instead wanted to raise questions. That was in 1988. Whereas, in 2015 I think the message we get from the transgender community these days is that they are not at all confused about their gender identity — it just doesn’t happen to match up with their genitalia. So, Birdo’s treatment is not exactly a paragon example for GLBTQ allies to hold up as an ideal of what they might like to see in popular culture. But while Birdo may not be the answer to questions for those who are curious about non-binary gender norms, he/she was a starting point for asking questions and having conversations.

Although, there’s nothing to suggest that Nintendo intended to open up a serious dialog about any of this. I suspect that most of us just took eggs and threw them at him/her until we got past the end of the level, and that was about it. Whatever Birdo’s gender, it doesn’t affect how you play the game one bit.

As my friend Jacob says, “As long as it’s side scrolling and has a screw attack, I don’t care who’s in the suit.” I think that sums up the attitude of the largest block of gamers in gamer culture. That’s not to say that there aren’t minorities who are vocal with their opinions, of course.

All that said, characters from video games and, more broadly in all types of serial fiction, are always open to redefinition. This happens all the time to comic book characters, and they routinely do radical character changes, not especially caring about preserving continuity — because ultimately it’s not important. Character driven serial fiction has come to be understood as a form that explores a mulitverse of possibilities around a loosely defined core template for the character. The original incarnation is usually received as canon, but as new artists work with the character and write new stories, they take liberties, and always have. It’s not about making sure that everything ever published about the character is logically consistent and describes a concrete, objective reality. It’s about taking a core concept that is malleable, and running with it to tell cool stories that inspire and entertain. And about being allowed to take risks and maybe miss the mark sometimes. Not every story is the best. And not every fan will agree about which story is the best.

This is why we get to be entitled to our own opinions and to have our own preferences, and why no one can tell us we’re wrong about what we like and what we don’t. Samus isn’t just a person. She’s a mannequin which we can dress up with our imagination. She’s the paint on the brush, with which we may paint vivid pictures. She was created by Nintendo, and Nintendo may hold the copyright and trademarks, but in an important sense, Samus belongs to us.

So, I am a “geek” who can “handle” trans Samus, even though my Samus is a cisgender woman, and I can also have my Samus multiple ways, depending on how the creators who are working with the character decide to use the elements from her milieu to create new works that (hopefully) I will enjoy, and allow different interpretations of the character. I could enjoy Black Samus, Boy Samus, Shapeshifting Alien Samus, Trans Samus, Hetero Samus. Original Samus. As long as they don’t suck. I don’t even mind Samus as an adult sex fantasy.

The point is this: It’s all fiction. If you want to point at a “canon” of fiction that is “more true”, and divide it from alternative fictions that are “less true”, or unofficial, or false, and attack those who posit an interpretation you don’t happen to like, maybe you don’t understand what fiction is, and need to get out more.

iMprOVE_WRAP extension for GameMaker Studio

Today I’ve released a new asset on the YoYoGames Marketplace, called iMprOVE_WRAP.

Many video games have the feature that exiting one side of the screen will “wrap” you around to the opposite side — notable examples of this include the smash hit classics Asteroids and Pac Man. GameMaker: Studio has a GML function, move_wrap(), which is intended to provide this feature easily, but it has a few limitations. iMprOVE_WRAP addresses these limitations, resulting in a more powerful, flexible implementation.

iMprOVE_WRAP improvements over move_wrap()

Wrap behavior is no longer based on the built-in GML speed variables.

One of the most troublesome limitations of move_wrap() is that it only works for instances that have a speed. In standard GML, the variables speed, hspeed, and vspeed are used to move instances. But you can also “move” an instance by changing it’s x and y position in the room, without setting a speed. Many GM:S users will implement their own movement systems that eschew these variables, in order to give themselves complete control over the movement engine. When they do so, they are often confused when they discover that move_wrap() doesn’t do what they expect.

iMprOVE_WRAP eliminates this dependency, so that an instance no longer need to use the GML speed variables in order to wrap; wrap behavior in iMprOVE_WRAP is based entirely on an instance’s x,y position.


Wrap region no longer limited to room borders

Another problem with move_wrap() is that it is intended to work with the Outside Room or Intersect Boundary GML Events. This means that move_wrap() is only useful when an instance moves outside the room, or encounters the edge of a room. But in many games, the “play field” may not be synonymous with the entire room — the room might have a border, or “dashboard” or “heads up display” which ideally should be considered “out of bounds” with regard to the play field.

iMprOVE_WRAP allows you to define a “wrap region” — a rectangular area inside the room, which instances wrap around the borders of, rather than the borders of the room.

Independent horizontal, vertical margins

With move_wrap() the margin argument which determines the margin by which the instance must be outside of the room is the same for both horizontal and vertical travel; with iMprOVE_WRAP the horizontal and vertical margins may be set independently of each other.

Wrapping instances can (optionally) draw themselves on both sides of the border

With move_wrap(), an instance still draws its sprite in the default draw in only one location: at (x,y). If the instance is off the edge of the wrap boundary, but hasn’t yet crossed over, the instance draws on the “pre-wrap” side of the room; after the instance progresses by margin pixels over the border, then the instance’s position is moved over to the “post-wrap” side of the room, and the instance is drawn there. This is not a big deal if the instance crosses the wrap boundary quickly, and has a relatively small sprite; but for slower-moving instances, or instances with larger sprites, it creates a jarring “jump” effect, where suddenly the instance appears on the “post-wrap” side of the boundary, with no real warning, rather than gradually entering the room.

iMprOVE_WRAP solves this by providing a new function, iw_draw_self_wrap(). This new function augments the default draw by drawing the calling instance four additional times, at positions left, right, up, and down from the actual instance, the width or height of the wrap region away from the actual instance. Thus, when your wrapping instance is moving off the edge of the wrap region, one of these extra drawings is poking out on the opposite side, creating an illusion of continuity as the instance leaves one side and emerges from the other.

For a wrap region that is smaller than the room itself, it’s best to do your drawing on a surface that is sized to the area of the wrap region; otherwise the parts of the drawing that should be outside of the region will be visible outside of the wrap region. Alternately, if drawing to a surface is not something you want to do, you can “mask off” the portions of the room outside of the wrap region by layering objects at a higher depth around the border, like a picture frame or dashboard.

Collision detection on both edges of the border

To compliment the iw_draw_self_wrap() function, I’ve added a new collision function, iw_collision_wrap(). This function checks for collisions at the four places occupied by the four drawings drawn by iw_draw_self_wrap(). There are actually two iw_collision_wrap() functions.

The more basic, iw_collision_wrap() sets five instance variables in the calling instance to store the id of any instance in collision: other_center, other_up, other_down, other_left, and other_right.

The more advanced, iw_collision_wrap_map(), returns the id of a ds_map, which holds those same five instance variables as keys, which you can access using ds_map_find_value().

Which to use is up to you, and the style of programming you prefer. iw_collision_wrap() is easier to use, and if you don’t mind the instance variable names, is probably slightly faster at runtime. iw_collision_wrap_map() is for programmers who get pedantic about “correctness” and want their functions to return something, not cause side effects in the application state. Since it’s not possible in GML to have a function return 5 separate values, we return a data structure that stores the five values. The downside of this is that you have some overhead, namely a need to clean up the ds_map when it is no longer needed. Fortunately, it’s not hard. The example project will demonstrate how to do this properly, so don’t worry.

iMprOVE_WRAP is available at the YoYoGames Marketplace for $2.99; however I am making it free for the first 10 downloads. Please rate it and review it if you give it a try!


The Vulnerable Android

Recently a story about a vulnerability affecting 95% of Android devices made the rounds. The vulnerability is particularly nasty, in that it can be exploited by sending a SMS message to the target, which in some cases need not even be read by the user, and which can be deleted immediately after the device has been compromised, leaving no visible trace to the user that they have been pwnd. If the thought of this isn’t enough to make you shit your pants, it’s probably because you’re not wearing any. Compounding the problem is the slowness with which cellular carriers typically roll out updates for the phones they sell.

It’s clear that it’s not a top priority for cell carriers to update the software on your handset. If it was, they’d do it in a more timely manner. Once they stop marketing a given model, it becomes increasingly unlikely that they will spend any money in support of it; it becomes their incentive to let your old phone go out of date so that you will have to buy a new handset.

This is clearly not in the interests of the consumer. The distribution model for software updates of the base firmware needs to change. It’s trivial to take app updates from Google Play, but not the Android firmware. For firmware updates, customers have to wait for the carrier to release an update, and then users have to go into the Android settings and find the “check for updates” feature and manually initiate the update, and that’s just crazy. Just as we do not look to our ISP to provide updates for our desktop PC, we should not be looking to our cell provider for these updates either. All devices should have the shortest possible update path — that is, get the update directly from the source of the software. Cell carriers are middle-men who provide packaging, bundling, and distribution, and they need to get out of the way, and let users get updates directly from the software maintainers.

This is especially important when it comes to critical security patches. Customers should not have to root their phone to gain this level of control over a device that they paid for and own.

Consumers should reject business models that call what they buy a “service” or “subscription” or “license” and insist on true ownership. I expect it’s too late for this to change, but that won’t stop me from advocating for it.

Since we do not yet live in this world, Android users need to take steps to mitigate vulnerabilities that they cannot patch.

It’s always a good idea to think about mitigation steps anyway, since it’s always possible for an unknown, undisclosed vulnerability to be present on a system, and so you should always assume that your device is vulnerable, and thus take steps to ensure that if it is compromised, you can accept the consequences of the event. It’s just a little more difficult to come up with mitigation strategies when the vulnerabilities are not known, but not impossible. All that you need to do is use your imagination to think of what could an attacker do with your phone if they got complete access to it, and ask yourself what you can do to minimize the harm and exposure of that.

If you have a smartphone, it’s not much of a stretch to say that You are your phone. Your entire life is in there. Your contacts, photos, web browsing history, your saved passwords, access to your email accounts where you receive password reset requests for all your other accounts. An compromised device also compromises two-factor authentication. If you use two-factor authentication, one of the two “factors” involved is a 1-time key that is sent to your phone via SMS. This, plus your password, are the two “factors” that are supposed to be a more secure form of authenticating than just using a password alone. But if your phone is compromised, and the 1-time key is sent to your phone, and therefore shared with the attacker who pwnd your phone, two-factor authentication is no longer effective at protecting you. And if the attacker can read your password reset request emails, and use them to gain control over your other accounts, that’s a very serious liability. Once your attacker has access to all your accounts, they can deny you access to them, and start impersonating you.

To mitigate these risks, I recommend the following:

  1. Stop treating the google account associated with your android devices as your “home” or “primary” account. Keep the minimum information and stuff in the account that you need in order to make the phone useful for you, and have that account be a “throwaway” account, which you can discontinue using if it gets compromised. I guess that probably means just using it for storing your contacts, and maybe for photos backups.
  2. Do not use the google account associated with your android devices as a point of contact for password resets. Create a secret email just for password resets, and use it only for that purpose. Don’t log into that account from your android device. Of course, most services will send you other mail to the account you use for password resets, so you’ll have a hard time using your password email only for that purpose, but limit your use as much as possible, so you do not become overly reliant on the account for other uses.

Do you have any other ideas for limiting the value of your compromised phone or tablet to an attacker? Comment below with your ideas.

Product Review: Anker 7500mah extended battery for Samsung Galaxy S5

I recently upgraded my phone to a Samsung Galaxy S5, after several years running on a Galaxy SII. While the SII was the best phone I’d had up until that point, there were a number of problems that I had with it, which got especially aggravating toward the end of my time with it. The biggest being ongoing support of the firmware, continually degrading performance over time, necessitating periodic factory resets, and battery life.

Even when brand new, the battery drain on the SII was a serious problem for me, and led to me feeling like I was chained to a power outlet. I’d lose 10% while disconnected from charge for 40 minutes, the length of my commute to work. And yes, I looked in to every conceivable thing you could possible think of to identify causes of drain and do something about them — nothing worked. I bought an extended 3800mah battery for it, which helped a bit, but even so at times I would see the phone draining impressively fast — 1% per minute, on many occasions.

I came to the conclusion that an ideal smartphone should be about an inch thick, and be about 90% battery by weight.

When I went shopping for a new phone, I was really unsure of whether I would want to consider one of the newer generation Samsung Galaxy phones. But ultimately, I selected the Galaxy S5. The non-removable, non-upgradeable battery on the S6 is one of the main reasons why I went with the S5 over the newer model. The other major reason was the lack of a SD card slot on the S6. While looking at extended battery options for the S5, I found that there were a few super-sized batteries offering 5500mah+ — including a 7500mah battery from Anker, and a 8500mah from ZeroLemon.

I went with the Anker for two reasons: the case looked like it would be more comfortable in my pocket, being less bulky if perhaps less armored than the ZeroLemon. And two, the battery was shaped in such a way that it would not block the external speaker, which is an issue with a number of the other extended batteries.

Thankfully, I found that the S5’s battery life on the stock battery wasn’t bad at all, going 10-14 hours on a charge before it got below 20%. That’s almost a full day on the go. But I still wanted to see what it would be like to live completely free of battery anxiety, and this does it for me. Maybe someday they’ll integrate transparent solar cells into the touch screen so that we can charge while using the phone, and at that point a smaller battery might make sense. But I think, minimum, a smartphone with today’s power draw characteristics needs a good 5000mah on tap at a minimum in order to be useful.

With the 7500mah battery from Anker, I am completely satisfied. I have had days where I unplugged at 7am, and didn’t charge it at all throughout the day, used the phone quite a bit, and yet still had a 65% charge by 10pm. Knowing that I don’t have to worry about my battery draining, and can still use my phone, makes me feel like I really have a phone, and not an emergency device to use sparingly if at all. And not needing to stay within 6 feet of a power outlet all the time feels like complete freedom.

anker7500-2 anker7500

It makes the phone heavier and thicker, but these are not a big deal. It’s well worth it to have a phone that I can use all day, and really use, without running the battery critically low in just a few hours. I feel that this should be the standard battery performance for any smartphone. It’s pretty much a must-buy.

The only real downside to the battery is that the way they designed the case, it makes it basically impossible to use the fingerprint reader/heart rate monitor. If you want to use that feature on your phone, you may want to look into a different battery. Samsung makes an OEM extended battery with 3500mah capacity, which, based on the performance I saw from the stock 2800mah battery that came with my phone, is probably adequate for an estimated 16-18 hour day of moderate to heavy phone use. There are some other larger batteries between 3500 and 7500mah from various other manufacturers, but I don’t know how reputable they are, and it’s not uncommon for false, inflated capacity claims from the no-names, so be careful. The Anker, at least, is the real deal. Highly Recommended.

Buy it

Ouya that was

It was announced today that Razer has bought Ouya.

“Razer reportedly plans to continue supporting Ouya’s existing game service for a year.”

“Razer doesn’t seem to be interested in trying to continue Ouya’s original strategy.”

So what does this mean for the users? Razer will continue the Ouya service for another year, and then they are pulling the plug. After that, will an Ouya have any useful purpose? Will it boot? Probably. But you can bet that any updates there might have been for it will not be available any longer. Can users re-install games that they had purchased? It doesn’t sound like it.

Someone will hopefully come up with a solution, a way to back up your Ouya games and run them — at least those titles that do not depend on a live service that they must connect to in order to play at all. Any games that do require a server for the client to access, will probably cease to be playable. Which is a shame. Unless perhaps the services are spun off to some other organization, or released as a product that people can obtained and run on their own hardware. But that seems quite unlikely. What profit would there be in it? The industry has interest only in selling you new product — sorry, services; it’s not fair to call it a “product” anymore when you can’t own what you are paying for — and they have no incentive to compete against what they released a few years ago, even though there might well be a long-tail niche of fans, enthusiasts, and academics who have an interest in keeping it around for amusement or research.

This weekend, I attended the 2015 CCAG Show where gamers, fans, and collectors gathered to exhibit and trade vintage and recent video games, some approaching almost 40 years old. This celebration of living video game history has been going on for 10 years now, and was made possible by the love players have for these games, and the enduring survival of the physical medium into which they were encoded. Will there be anything like this for Games as a Service consoles and mobile devices? It seems very doubtful. Once the vendor no longer wants to support the product, they will shut it down, the lights will die, and the party is over, the attendees left standing around in the dark, shuffling to music that is no longer playing, wondering what it all meant, or if it even happened at all.

Historians such as Jason ScottHenry Lowood, and others engaged in the struggle to preserve the history of the culture and industry of video games can do a great deal when it comes to archiving media and emulation of hardware, but when it comes to service-based business models, it becomes difficult if not impossible to envision how these things can be preserved so that future generations will be able to look back and see what was, and understand how we got here. The users only have access to the client side, and the service side is not only out of their reach, licensed for use but not owned, but it changes and evolves over time.

The ultimate laptop: retro modern ThinkPad

Lenovo started listening to years of ThinkPad fans griping yesterday.

Ars Technica picked up the story, and people are discussing it, really exited about the idea.

Yesterday I talked about what would make the perfect keyboard for my dream laptop.

Today I’ll talk about the features that I’d love to see on a new ThinkPad that harkens back to the best days of the product line.


  1. 15.4″ (but by all means, produce a full line of different sized ThinkPads with different screen sizes: 11″, 13″, 15″, 17″…)
  2. 16:10 aspect ratio — this is a MUST
  3. 10-bit IPS panel with at least up to 3K resolution
  4. glare-free matte surface, not glossy.
  5. not a touch screen (but I’m ok if it’s a configuration option at purchase)


  1. Rugged, metal frame — aluminum, magnesium, or titanium
  2. Rubberized black paint finish
  3. Easy to work on. Repairing/replacing or upgrading the keyboard, RAM, and hard drive should be as easy as they were on the T61p.
  4. RAM slots sufficient to support at least 32GB of RAM
  5. Support ultrabay hard drive carrier
  6. Door/sliding cover for webcam for paranoid folks
  7. Sliding latch to securely hold lid closed
  8. Weight and thickness not primary concern, should not constrain design or compromise durability or features.
  9. Removable battery with sufficient capacity to run laptop for at least 12 hours of heavy, active use, on a charge — 18 hours would be even better. Yeah, a big bulky heavy battery. What good is the ultimate laptop if you can’t use it because it’s out of juice?


  1. Modern everything. HDMI-out or Display Port out instead of VGA. USB 3.0 slots (at least four of those).
  2. Gigabit ethernet (of course).
  3. Optional for SD card reader slot
  4. Full size slots, nothing proprietary or minimized for space