Wish I could play with the demos now…
Early this year, I made my fifth PAX pilgrimage, this time to PAX East 2012. Even though we only attended two days (because of Easter Sunday and impending travel), we managed to fit in a mix of activities, including the keynote from Jordan Mechner, the Saturday night concert featuring JoCo, a few panels, and some good tabletop gaming. I also spent a fair bit of time on the expo hall floor. An interesting twist this year was the creation of The Indie Megabooth, for which a bunch of small independent developers pooled their resources to secure one large booth.
This is where I ended up spending most of my time, because to me, this is where the gameplay innovation is happening. Also unlike AAA games, many of these games were going to be available much sooner, are generally more affordable, and are more likely to be available on my platforms of choice (Mac and iOS). Another bonus was that the lines were short, so you could get a demo of many of these games without having to wait a couple of hours in line for a preview video (which in my mind is a total waste of your PAX ticket).
They also did something fun: they created a little achievement card, called the Indie Mega Passport, with silly activities or game actions that you had to complete at each booth. Pictures of my completed passport, plus a review of the games I was able to play, are below the cut.
About two years ago, after a primary hard drive failure, I wrote a long post on what I called the “backup tripod”. As I said then, the tripod consists of three classes of regularly performed backup: offsite clones, incremental local backups, and cloud backups. For me, that consisted of Carbon Copy Cloner, Time Machine, and a few files on Dropbox on an as-needed basis, respectively. I think that the trade-offs of each leg of the tripod make for a complete solution, so you need all of them.
At the time, I was pretty strongly against any sort of comprehensive cloud backup solution. I was suspect of their security practices, and disliked the lack of control. I think this was in part inspired by bad experiences with Windows backup products for my work desktop, as well as the sketchy TV commercials from companies like Mozy. I’ve since changed my mind, convinced in large part by The Wirecutter‘s selection of Crashplan as their Best Online Backup Service. Why do I trust their review? A combination of Daring Fireball‘s recommendation, and the fact that we are very happy with the Omega 8300 juicer that they recommended. Crashplan’s own website also talks about security in a knowledgeable way, which makes me think they’re engaging in best practices.
Another factor is that due to a little life change (marriage to Andrle!), I’m now backing up more than just my own computer. Crashplan’s family plan takes care of that, for her 11″ MacBook Air, since we don’t currently run OS X Server or own a Time Capsule. While we have an offsite clone of her laptop, a cloud backup service can capture more recent changes. Unfortunately we’re not always on top of updating those offsite clones, so they can lag behind by a month or more, which is just asking for data loss.
At first glance, it might seem that an online backup service is all you need; it provides a combination of the benefits of an offsite backup and incremental backups. It is both complete and updated regularly. However, while I’m sure Crashplan would be quite happy if they were your only backup provider, I maintain that you still need all three. Each of the other two legs still has an advantage: speed of recovery and frequency of increment.
My initial Crashplan backup (roughly 450 GB) took almost two weeks. Obviously part of that problem is the ridiculous imbalance in downstream vs. upstream bandwidth with almost all ISPs, including Comcast. Downloading to restore from backup wouldn’t be quite that slow, but could easily be a couple of days after a catastrophic failure. The second problem is that I’d need some working OS install with which to run the Crashplan client. These two downsides are both solved by the first leg, a bootable offsite clone. I store mine in a locked drawer in my locked office in a locked building at work, which is only a 20 minute round trip by bicycle if I had a data emergency. Crashplan does offer seeded backups and restores, but it’s well over $150 which at best gets it to you on a hard drive the next day. Although this wouldn’t be a problem for me, it’s also limited to a 1 TB USB drive, which for some people probably isn’t nearly enough.
While Crashplan does promise regular backups, that can’t always help you back off a very recent set of changes, or an accidental deletion right after making changes. That’s where the combination of OS X Lion’s Versions feature and Time Machine can save you on a per-file basis (and, as before, Dropbox may be useful).
Speaking of Dropbox, it has an additional role for me these days: synchronization for iOS apps. iCloud is still a pretty nascent feature, and for me only really helps moving data within one app between my iPhone and iPad. Dropbox, because it’s not post-filesystem, provides some combination of cloud backup and cloud sync for files across all of my computers and devices. Probably the most important example of this is my 1Password keychain, synced between my home and work desktops and my iOS devices, which is absolutely critical since I use generated passwords everywhere. I also use it to move files into GoodReader on my iPad for work, and to export files from Textastic, which I occasionally use for code editing. (I should add that my iDevices are backed up to my computer, not iCloud.)
Overall I think Crashplan will fit in fairly seamlessly to my current backup solutions. Obviously the hope is that I’ll never need it!
One quick aside that’s related to backups generally, but not so much to backing up your computer: update a local copy of your social network data periodically. At least for me, I generate a lot of content on Facebook and Twitter, and I would be sad to lose it. A data loss on their end is probably less likely than some kind of major service change, but either of them could make it impossible to access your old posts.
Somewhat ironically, Facebook makes this a lot easier than Twitter; just go to Account Settings and click the tiny “Download a copy” link at the bottom of the page. Unfortunately Twitter doesn’t provide API access to anything but your 2000 most recent tweets; I hope this changes at some point. I have all of my tweets being archived to Pinboard, but that only goes back to May 2011, missing over two years of usage.
Cloud backups now have my full blessing as part of the Backup Tripod. Crashplan seems to be the best service for the cost, and fits in well with the other legs of the tripod. The steps I’ve suggested in these two posts are fairly easy (albeit Mac-centric); at this point I think very few people have an excuse for losing data due to not having backups. I can’t reiterate this enough: back up your data, or someday you’ll get burned. Help your less-skilled family members set up automated backups that they don’t have to worry about.
Increasingly our lives are recorded almost entirely in bits. While there are many advantages to this, too numerous to go into here, they are inherently much more ephemeral things. Regular backups are one of the best ways to avoid complete data loss, although it may need to be coupled with occasional conversions in order to avoid file format rot. Make sure you have a plan to protect all of your data, on your own devices and in the cloud.
Although it’s been almost a month since the end of the semester, I wanted to share some of the final project that consumed most of my time and mental capacity in April. I was taking CS266: Bio-inspired Multi-agent Systems from Prof. Rhadika Nagpal. It was a very fun course, emphasizing seminar-style discussion of research papers, with labs working with actual robot hardware and culminating in a final project that had both a physical robot competition component and a more open-ended simulation component.
My contribution to the final project focused on the simulation, while my partners Andrew Reiter and Pierre-Emile Duhamel focused on the robots. We decided to use the recommended MASON simulation library to implement a virtual version of the competitive foraging task, and then coupled that with a genetic programming implementation to attempt to evolve robot strategies. You can read a lot more detail about our methods and results in our final paper (pdf), including our approaches using the actual e-puck hardware. The simulation is discussed in Section 3. Long story short, the GP approach worked, in that it did successfully learn strategies, but I think that our fitness function could use some work in order to develop strategies that do something more interesting than the manually written strategies.
The complete source code is available on GitHub under a BSD license.
Various videos (some of which I’ve already posted elsewhere) are below the cut.
Three Sundays ago, my primary Mac OS X hard drive failed. Those of you who follow me on Twitter got somewhat of a play-by-play as I discovered the depth of my drive failure I got home to the Spinning Pinwheel of Death (SPOD), and discovered quickly that my computer would not wake from screensaver or boot. However, I didn’t panic. Why? Because I have what I believe to be a relatively robust backup system for home use.
I can’t stress enough how important regular backups are. Data loss is one of my personal nightmares (well, that, and Lego or Andrle loss), since most of my life (professional and personal) is on the computer. Among other things, I’d lose every picture I’ve ever taken since freshman year of college, every homework assignment I’ve written on the computer since late 6th grade (when we got our first Mac), not to mention substantial configuration work and those precious saved games.
I sit atop what I call the Backup Tripod: regular clones to an external disk stored off-site, hourly incremental backups to a local disk or local network storage, and as-needed on-save synchronization to cloud storage. I’m sure there are many other articles out there that recommend a particular strategy, but this is my solution for Macs. I even convinced my parental units to use a similar setup. I’ll go into detail on what solutions I use and why (as well as recovery strategy) for each below the cut.
I can’t emphasize enough how important data backup is for the typical modern power user.
Like every other critic and salivating fanboy, I feel compelled to chime in on yesterday’s religious experience in which The Steve descended from on high bearing a tablet. However, this is not a review, but merely a (lengthy) answer to a simple question: is the iPad for me? I won’t be talking about the market for digital content distribution, I won’t be whining about what software and hardware widgets weren’t included, I’m not going to rant about Apple’s closed ecosystem, I won’t be begging to lick someone’s boots for a chance just to touch one. Additionally, although hopefully this is obvious, this is heavy on speculation, since I have yet to actually hold the product, let alone use it for any length of time.
I’ll also take this opportunity to brag that I got 29.5 points on the prediction score card, with only one question as yet unanswered: will textbooks be available (I said yes, and I think this is eventually likely, based on the list of publishers involved). I was briefly unsure if my existing Apple Wireless Keyboard would be supported, but the Design page indicates that in will be, in spite of the existence of the iPad Dock. I got the name right, and most of the detailed features based on the rumorsphere. The substantive places I was wrong were the absence of a camera, the price point (cheaper than I expected), and the lack of any information on iPhone OS 4. I had a hope for an open development environment, but I knew that wasn’t going to be true, so that’s more a self-docking principle point. I failed to predict the dock, and I gave myself a half-point for saying no 3G when there are models both with and without.
Below the cut I’ll start off with a brief history of my personal electronics habits from college through today, and then consider where the iPad would fit into my little niche… and, if it does fit, whether it’s worth it. I’ll also look at what still-open questions about the device would affect my potential buying decision (not the least of which is that I need to try it out in an Apple Store to get a sense of the ergonomics). While I’m only speaking for myself, maybe my analysis will be useful to people similar to me.
I found a Twitter bug! Hah!
Specifically, certain characters which much be escaped in the GSM 03.38 character encoding are getting treated as the wrong encoding when posted to Twitter from Verizon Wireless SMS, and showing up as ? in text messages sent by Twitter to Verizon Wireless customers via SMS.
I should add that I didn’t find this bug alone – @elliotreed asked why I used question marks to note something in a tweet when I had actually used square brackets around some text. Some quick investigation with him revealed the more specific nature of the problem, but it wasn’t until I actually found out that there was such a thing as GSM encoding that I came up with a hypothesis to explain the character weirdness.
As far as I can tell, Verizon’s HTTP/SMS gateway is now doing the GSM/UTF-8 mapping internally, but Twitter is assuming it still has to send GSM bytes to Verizon, so the encoding is happening twice, or at least attempting to happen twice. Verizon chokes on the GSM two-byte characters, since they’re not valid UTF-8, while Twitter receives certain ASCII-range one-byte UTF-8 characters but converts them as if they were GSM one-byte characters, resulting in a totally different UTF-8 character!

The GSM-to-UTF-8 encoding bug, shown here for square brackets, curly braces, tilde, backslash, and carat.
The GSM encoding doesn’t allow certain characters as single-byte characters; this appears to be a way to shove a number of European characters into a 7-bit mutant ASCII, with control characters and certain punctuation replaced by characters from the Latin-1 codepage. To some extent this makes sense, given that with the 160-byte length limit on SMS messages you want to avoid multibyte encodings while still supporting commonly used characters (UTF-16 is used for non-roman languages). Unfortunately, this leaves [, ], ~, {, }, \, |, and ^ out in the cold. As a programmer, I use these punctuation characters often as separators in various notations, so it is perhaps not surprising that one of my tweets revealed the problem. These characters can be sent as a two-byte sequence in the GSM encoding, but those start with an escape byte 0x1B, which since it starts with more than one initial bit high will always be invalid as the first byte of a UTF-8 character.
I would have thought that the Age of Unicode would have ended many of these non-standard application-specific encodings (and plus, given the way mobile carriers love to gouge on SMS, if they make your characters take more bytes, they get more money!). It looks like that’s exactly what Verizon is trying to do, in moving to exposing UTF-8 on the edge of their network… they just didn’t tell anyone that they had changed encodings, or if they have, Twitter hasn’t acted on the change yet.
Since Twitter disabled their help ticket creation (probably because too many stupid people were posting the same questions without reading the FAQs), I reported the bug using the Twitter API ticketing system on Google Code.
Short story: if you use any of the punctuation characters above in your tweets, expect texting Twitter users with Verizon to see ?, and expect to receive tweets from them with weird European characters, until this is fixed by one or both parties.