Shame on Yelp, See What I Did There?

14 July 2014

Yelp, we’ve got a problem. A serious problem. I really like what you’re doing, but you should know that commas cannot join two sentences. Yet every time someone sends a friend request, the placeholder sentence is a classic example of a comma splice.

That comma should be a period or a semicolon.

I already shed enough tears on behalf of the English language when I read some people’s reviews. Yelp, please do your part and stop this unnecessary propagation of terrible grammar. Your community will thank you.

P.S. Also, tell your engineers that they really should get around to replacing “[link to your page]” with the actual link to my page. iOS developers can check out the stringByReplacingOccurrencesOfString method and Android developers can use the replace method. Happy coding fellow developers!

Tales of Awesome

10 July 2014

Namco’s Tales series has been one of the most consistent JRPG franchises. My first taste was in 2004 with Tales of Symphonia, and that was a wonderful experience. I haven’t played every game in the series (there are a few duds it seems), but since Symphonia, I’ve thoroughly enjoyed Abyss, Vesperia, Graces, and most recently, Xillia. In a month, Tales of Xillia 2 will be released. I found Xillia to be a solid entry and the sequel is very, very well-regarded. RPG Fan has a great preview on the game; here are my main (and somewhat irreverent) takeaways.

  • “Ludger [the protagonist] can switch between three weapon types (dual blades, a hammer, and a gun) to fight his enemies effectively at any distance.” Finally! Some game designer realized that the best weapon isn’t a sword, or even two swords, but two swords, a sledgehammer, AND dual-wielded pistols. Genius!

Where will cosplayers keep the extra weapons?

  • “He can also transform into a demi-humanoid using the power of ‘Chromatus,’ dramatically augmenting his strength and ability repertoire.” Yes!!! Not only does he wield three different kinds of weapons, he can also GO SUPER SAIYAN!


  • “The Double Raid Linear Motion Battle System (DR-LMBS) returns as well.” The awesome battle system in the Tales series is a cornerstone of the series, but I never realized how ridiculous they name the system.

The Double Raid...ehh, fuck it. This is the battle system in action.

  • “Ludger and Elle are injured during a train hijacking early in the game, and a mysterious man takes advantage of their plight by paying their medical bills and putting Ludger into astronomical debt.” Sounds like Ludger and Elle don’t live on Elympios, but in the United States of America given the ruinous amount of medical debt they were able to incur. Running with that theory, it also sounds like the TSA should start securing our train systems.

20 million gald!? They must've spent a week and a half in the hospital!

Irreverence aside, August 19th can’t come soon enough because I’m super excited to dive in Tales of Xillia 2.

ChucK Meets Travis

06 July 2014

Ge, Spencer, and I sometimes talk about our dreams when we’re playing StarCraft. During the small windows of time when we’re not playing StarCraft, we’re all making some sort of headway towards our dreams. Today, one of those dreams has come to pass. ChucK is now set up for continuous integration on Travis. Every commit to ChucK triggers Travis to check that ChucK compiles and passes a suite of unit tests.

Who’s Travis? Travis is a free (for public repositories) hosted continuous integration service. With zero knowledge of Travis (but plenty of tears shed dabbling in release engineering at Smule), it only took an hour to get everything set up and running. You add one file to your repository (.travis.yml) and set up your scripts in there; it’s straightforward and just works. They say you get what you pay for, so I feel kind of bad because Travis is so good I feel like someone is getting robbed. How good is it? It builds and tests pull requests! Gone are the days where you would have to meticulously review the changes you were about to pull into your project. If Travis THINKS it’s okay, you KNOW it’s okay. But, perhaps double-checking isn’t a bad idea!

travis.yml file that supports both Linux and Mac

Travis has a multi-platform feature that’s in beta, and we’re already taking full advantage of that to run our tests on both Linux (Ubuntu 12.04) and Mac (Mavericks 10.9.2). When Travis adds more platform and OS configurations, we’ll run (not walk) to get those configurations set up. And while the current 150+ tests are a great start for unit testing, we’re looking to expand testing to make it more thorough and exhaustive. ChucK has a pretty awesome user community that is good at pushing ChucK to the limits (and occasionally breaking it), so we see a future filled with more tests, and consequently a greater and more stable (i.e. more stable than incredibly stable) ChucK.

Want more? Check out ChucK on Travis, check out ChucK on GitHub, read all about ChucK on its webpage, or join the ChucK community. Happy ChucKing you motherchuckers!

iOS Keyboard Addendum

02 July 2014

A few weeks ago, I wrote a post pointing out (i.e. complaining about) how iOS 7 broke the keyboard’s shift key. A coworker pointed out that the shift key really didn’t break in iOS 7 (released September 2013), but rather in iOS 7.1 (released March 2014). Android aside, I think iOS 6 still has the best shift key, but iOS 7.0’s shift key at least makes some sense. Here is a more complete picture depicting the shift key’s deterioration.

The descent into madness...

I can’t wait to see how much “better” they make the shift key in iOS 8!

Playing Naughty with Facebook's Slingshot

22 June 2014

The new Facebook Slingshot app is like SnapChat with a twist: you can only see a photo or video someone has sent if you if send them something back first. It’s pretty cool. I’m not here to wax poetic about the potential merits of the “send me content back or you can’t see what I sent you” mechanic, but I do get slightly irked when I take all of 5 seconds to craft a crappy SnapChat only to NEVER hear back from the poor sap who wasted 10 seconds looking at it.

My biggest question about Slingshot is: can we just bypass this whole locked content stuff?

Turns out you can. Just configure your device to use an SSL proxy like Charles Proxy and check out the calls made to and Look in the JSON array keyed by “lockedShotUsers” and you should see something like this. Note: the JSON body was trimmed to just show the essentials.

"lockedShotUsers": [{
    "name": "Tom",
    "username": "alltom",
    "shots": [
        "mediaType": "video",
        "media": {
            "__type": "File",
            "name": "92aeee69-f7e9-42de-b72c-4ead1a3a9ee7-video.mp4",
            "url": ""
        "mediaSize": 385633,
        "thumbnail": {
            "__type": "Bytes",
            "base64": "OMITTED - base64 encoding of the blurred thumbnail"

Yes, that is a video taken by my mentor and hero, Tom Lieber a.k.a., playing Super Smash Bros. Yes, I didn’t reply to him. Yes, he called me a cheater and made me feel a little bad about this breach of Slingshot etiquette.

Does this matter? Not really. You could make it so the content URL isn’t sent down until you send content to someone else, but you don’t get a lot by cheating here. You’ll see what your friend sent you and have a little evil laugh. The main operating principle for the system still holds – if you want more content, you’re gonna have to make and share content. But if a friend says send me a picture of your credit card and I promise to send a picture of mine to unlock yours, you may want to ignore them.