Server teams are made up of the people who write and maintain the code that makes servers go, as well as those who keep that code working. Twitter, Facebook, Instagram, Amazon, Google, and every other service in the world have one or more people in this role. When things go right, nobody notices, and they get no praise. When things go wrong, their phones ring at 3 in the morning, they're up fixing a new issue, and they're answering calls from every cog in the corporate ladder who's screaming about how much money they're losing. It's a thankless job.

Diablo 3's launch has had a number of issues around load. When you have millions of people swarming on a server, ruthlessly trying to log in every few seconds, it causes a huge amount of load. At this scale, things you expect to go right suddenly break in strange and unfamiliar ways. No amount of load testing could adequately prepare the server team behind Diablo 3 for firepower of this magnitude. The way you fix these kind of issues is to look at what's slow, fix it to make it less slow, and hope it works. Do this until load stops being a problem. Oh, and you have to do it quickly, because every second that goes by people are getting more and more upset. And you can't break anything else while you do it.

The people who work on the servers for services of any decent scale cope with new problems every day around keeping the thing alive and healthy. The Diablo server team has been moving quickly, solving issues of massive scale in a short time, and getting the service running again. Players notice and yell the service when it stops working, but the response to it and the maintenance of it has been quick and effective.

Next time you're using an Internet service, or playing a multiplayer game, think about the people who keep it running. If you know any of these people, tell them thanks. They're the unsung heroes of the Internet.

 

Smartphones have replaced lots of types of small devices. iOS and Android have made it easy to build apps that perform all kinds of functions, replacing other standalone devices like media players and GPS. It's been wondered if they would replace handheld gaming devices, and for many people they have. For awhile, I thought they had, at least for my needs. But after trying to play games on touchscreen-only devices for years, I've largely felt unenthused about the deeper and more engaging games that would come from big studios. These games required a higher level of precision control that touchscreens just couldn't deliver.

The PS Vita caught my attention about a month before its launch in the US. It combines a lot of the best features of smartphones with the controls of console games. It has a gorgeous, large, high-resolution touchscreen (and a back panel that is touch-sensitive), as well as a tilt sensor and cameras for augmented reality games. But it also has almost all of the buttons of a typical PS3 controller, including two analog sticks. Sony managed to cram all of this functionality into a device that, while large, is not too big to fit into my pocket, and with long enough battery life for a busy day interspersed with some gaming. The combination of apps and games (which I will describe as just "apps" for the sake of this review) is powerful, and the hardware power and display size make it a compelling device.

Hardware

Put simply, the Vita is a delight to look at. Its black and silver case is easy on the eyes, and falls away while playing games. The device itself is almost entirely plastic, which does make it feel a little bit cheaper than the iPhone, but it's still quite comfortable to hold, if you don't have to use the back touch sensor (more on this below). The physical controls are small, but placed well; I have no difficulty moving my hands between the buttons and the analog sticks for the kind of twitch gaming that hardware buttons excel at.

The display is stunning to look at; at 220 DPI, pixels are almost never noticeable, and the color depth and contrast provide some incredible graphics. The pixel density is not as tight as the newest iPhones or Android phones, but it's just not an issue. The screen itself has a multitouchscreen with amazingly low latency; it feels ever-so-slightly faster to swipe something than the iPhone does (which may be real or not, but it's at least as good). There were some minor issues with the display. It seems prone to banding in a few cases (an issue where a smooth transition between two colors appears as stripes, or bands, on the display). And the graphics, while high-resolution, occasionally showed some slight jagged edges, especially in the OS UI. These issues are tiny, though, and aren't hugely apparent in gameplay.

Spanning the back of the device is a touch sensor which can be used for controlling games, which is as responsive as the front, but is almost too large. There are grips for your fingers, but these grips are too small for my hands. If you need to use them for a game which relies on the back touch sensor, I have to grip the device somewhat awkwardly. It's not uncomfortable, but it does make me worry a bit that I will drop the device due to loose grip (a problem that has never actually happened in use).

There are a number of input ports on the device. Along the top are two trays, one containing an accessory port, and one for inserting the tiny game cartridges. These trays have a plastic cap that I found incredibly difficult and frustrating to open with just my hands, which will probably limit how many physical games I end up buying versus downloading through the store. Along the bottom is a proprietary "multi-use" port similar to Apple's dock connector, a headphone jack, and a memory card slot. The memory card is the only covered port, which is thankfully far easier to open than the ports on top. I have to wonder if this was a conscious decision by Sony to encourage purchasing games over the Internet; make the old-style games hard to replace, but make the memory card (which you can store downloaded games on) easy to replace, and people will tend to buy more online. There's also front and rear cameras; these take terrible photos/videos, and are basically useless for anything other than augmented reality games, which are actually really interesting (more on that in the Games section below). But it's not like you're buying this to replace a camera anyway.

The usual wireless technologies are here. Wi-Fi worked pretty well and generally connected automatically to 802.11b/g/n networks. I paired my Sennheiser MM 100 Bluetooth headphones to the Vita and they sounded great. You can also get a version of the Vita with 3G data. I ran into several issues with these in common use. While I did not get the 3G model, it's limited to 20 MB downloads (so basically no games), and multiplayer games cannot be played over 3G. It's basically useful for messaging and browsing, and that's about it. If you have a smartphone with tethering, it's probably best to just stick with that. And while the Vita had no issue auto-connecting to the Wi-Fi at my home and my office, it didn't seem to want to connect to my iPhone's tethering Wi-Fi until I went into the settings app and turned it on. Similarly, the Vita had no end of trouble automatically connecting, to my Bluetooth headphones, leading to a similar jump through the settings app. Hopefully these are 1.0 issues resolved with software updates, but it limits their use when you only have 10 minutes to play a quick game.

OS

The system OS is pretty well thought out in terms of interaction, though it has some rough edges. It's completely controlled by tapping and gestures on the touchscreen; none of the buttons do anything. You can either use your index finger, or the combination of both thumbs, to access every pixel on screen, and all the gestures are usable by just a single thumb. This might be an issue if you have smaller hands, but I have no issues with it. Navigation around the home screen is more fluid than any touch device I've ever used, and animates at very high framerate (probably 60 FPS).

Your apps are listed on the leftmost screen, stored on multiple pages you can access by swiping vertically. You can organize them as you would on a smartphone, and assign different wallpapers to each page. Tapping on any icon opens its LiveArea, which you can use to then launch the game. This is one thing I rather dislike about the Vita OS, as it requires two taps to open anything.

To the right of the app pages, you can find the list of recently running apps. Each shows what Sony calls a "LiveArea", a nearly full-screen page showing information about the game, some meta controls, and recent activity about the game (when you last played, recent Trophies you've gotten, etc.). App developers can place stuff on the LiveArea, such as announcements and links to downloadable content. The system also shows some common controls for apps, like an update button, a button to do a web search for the game name, and on-device instruction manuals for the games. You can close any of the LiveAreas just by swiping from the upper right to the bottom left, with a nice paper effect of throwing the page away.

The graphical style of the OS is not great, but it's livable. App icons are glossy bubbles on the home screen, which looks kind of cheesy. As far as I can tell, the Vita doesn't use anti-aliasing (at least on the home screen), which causes the round bubbles to appear extremely jaggy. If the display were higher resolution, this might work, but it just isn't quite high enough to warrant eliminating anti-aliasing. The LiveAreas look nice, but some of the stock apps use this to excess with bright, conflicting colors that just look under-designed. But it works, and it's intuitive.

The interaction between software and the OS is generally pretty great. When inside an app, the OS disappears except for a few interactions (loading/saving data, for example). Some popups will appear occasionally, such as when you unlock a Trophy or a friend comes online, in the upper right corner. At any time you can press the PlayStation button to suspend the app and return to its LiveArea; you can then switch to a few of the other apps, such as Settings or the Twitter app, do something, and return to the app in the exact same state. Unfortunately you can only have one app open at a time, which can be annoying (specifically for the Browser app). But this doesn't get in the way all too often.

Apps

The Vita comes with a handful of stock apps, none of which are particularly great, but they get the job done. I haven't gotten to play in-depth with all of them, primarily as this is a gaming device first. The Friends app lists your PSN friends and who is online, but has a lot of whitespace, leaving you to see only 6 people onscreen at a time. The Messaging app is handy for chatting with your friends, and has no setup other than your PSN account, which is handy. Maps is pretty capable, using your geolocation to show you places and driving/walking directions, and storing favorites (but has no public transit, which is a dealbreaker for me personally). The Browser is okay, and can view basic pages, but anything taking advantage of newer HTML5 features will probably not render well. Hopefully these are 1.0 issues that will be improved with system updates

As of this writing there are four apps you can download from the PS Store - LiveTweet, Facebook, Flickr, and Netflix. I could not get the Facebook app to work, which just showed a "connecting to Facebook services failed" dialog and a cryptic error code. The Netflix app was slow and not particularly aesthetically pleasing, but it worked and you can stream video on it, pretty fast (and video plays very well). The best app is definitely the Twitter app, LiveTweet, which is a surprisingly full-featured Twitter client, supporting reading your timelines, pull-to-refresh, uploading images to the Twitter image sharing service, and lots of other little nuances in Twitter. It's a pretty great app, though it has some polish issues that will surely be resolved in updates.

The PS Store is the app you use to buy stuff and download free apps. It features one of the best LiveAreas in the system, showing popular content that you can find within the store. The Store itself works pretty well, albeit slowly and with some organization problems. You can see featured apps, new releases, and the most popular downloads. There are also a number of categories, such as Vita-specific games, PSP games, games that run on either the Vita or the PS3, and smaller games called "minis". These categories are generally grouped by their title, which is weird for me, as I prefer exploring all the games, not just the ones whose first letter is betweeen E and H. You can also sort games by genre, which is probably my favorite view (but is inexplicably buried at the end of the list). There are a number of genres (including both the "Shooters" genre and the "Shooting" genre) to explore games. Sadly the game pages themselves don't show screenshots, previews, or customer reviews; just an aggregate rating, a description, and the ESRB rating. This should really be fleshed out to show more detail, similar to the App Store or the Android Market.

UI-wise, there are some nice affordances. If you reach the end of a scrollable area, the content will either stretch (in the case of a single piece of content like a web page), or the items in the list will space themselves out (in the case of the Twitter or Messaging apps). Apps can fire off notifications, which appear in any app as a bubble and are collected in a notification space on the home screen, accessible by tapping the bubble in the upper right corner. Text input is generally easy, although there is no selection/cut/copy/paste (though you can tap-hold anywhere to zoom into the text to place the cursor where you like). The keyboard is pretty good, with a fairly intuitive layout and some OK autocorrect features which work similarly to Android's suggestion tray above the keyboard.

Games

There are over a dozen full Vita games available at launch, as well as a huge online catalog of PSP ports and mini games you can download through the PS Store. Of the games available at launch, I've played:

  • FIFA '12 (Vita)
  • Uncharted: Golden Abyss (Vita)
  • Unit 13 (Vita, demo)
  • Fireworks (Vita, a tech demo)
  • Final Fantasy IV (PSP)

So far, my favorites have been FIFA '12 and Final Fantasy IV. FIFA is EA's well-known soccer game, and the extent of the game is pretty huge for a portable device. It's so complete, it feels like it belongs on my TV. Tons of gameplay modes, a huge array of national teams, an extensive Career Mode, and tons of character customization. The touchscreen controls are OK, but can be kind of gimmicky and in practice are only occasionally useful. It often takes too long to move your hand from the buttons to the touchscreen and back to use in action-packed gaming. It's more useful for throw-ins and other less intense moments. The rear touch surface lets you shoot the ball on goal extremely accurately, and this is where the touch controls truly shine in FIFA. And it just looks amazing.

Final Fantasy IV is a remake of the SNES original, one of the greatest Japanese RPGs ever made. Square Enix completely remade the graphics and made a great version for the PSP, and it looks great on the Vita's screen. PSP games have some additional features on the Vita, accessed by tap-holding on the touchscreen, such as changing how the image is upscaled and colored, determining which camera to use, and picking what to control with the right analog stick. If the $29 price tag is off-putting for a 30 year old game, at least you're getting a polished remake with high-quality pixel graphics with cutscenes and video, and a bunch of supplemental material.

Uncharted was a game I was looking forward to, but it has mostly been disappointing. The jagged edge effect is more noticeable here than in any of the other games, simply because there's a lot going on onscreen. The game has so far tended to hold your hand throughout the entire process; walk for 50 feet, then a cutscene telling you exactly where to look and what to do. The combat controls are fairly good, but with one huge exception. If an enemy gets too close to you, it enters "melee mode", which wants you to use the touchscreen to draw gestures on how to attack your opponent. As with FIFA, the switch from physical buttons to touchscreen is not fast, and the whole thing is somewhat jarring. The game uses the touchscreen for some "puzzles", which are so far pretty boring and repetitive tasks like "wipe this thing off" and "spin this object around to look at it". The one good use of the touchscreen is climbing. You can draw a gesture along rock walls to signal to the character where to climb, which is handy and doesn't seem to come during fights.

Unit 13 is a tactical shooter game by Sony, which makes good use of the physical controls of the device. The graphics look pretty good, but not stellar, mostly like a PS2 game. The controls work very well, and I had no problems with moving around or hitting my target. And the game doesn't coddle you - it doesn't point out where enemies are, and it will happily let you die mid-mission if you take a few shots from the enemy. It makes light use of the touchscreen for controls, but it does so when you're supposed to have cleared the room of targets, so you're encouraged to avoid using it while in twitch mode, and to use it when things calm down. That's smart use of the touchscreen, and I hope more game developers will do that. I only have the demo, but will probably pick up the full game soon.

Fireworks is a free tech demo published by Sony that uses the augmented reality feature of the Vita very nicely. The system comes with six AR "cards", which are about as big as the Vita, with QR-like shapes printed on them. The idea is that you set one of these down on a table, point the Vita at it, and the camera will recognize the card and project graphics on top of it. In the case of Fireworks, it showed a small house which was shooting off fireworks, and you tap the round to make it explode. I've played AR games and apps on iPhone, and found it to be lacking; if you moved the device, it was too slow to respond, leading to a disconnect between the real world and the augmented world. Not so on the Vita. The camera, display, and accelerometer work extremely well together, and it really feels like you're projecting onto the real world. If you move the device, the lag it takes to see the game update is nearly imperceptible. I can't really explain this one, you just have to see it in action. I hope to see more games (and apps) take advantage of this.

In general, games and demos look great, and the physical controls are quite snappy. This truly was built to be a gaming system first, and it shows. Touchscreen input is OK for instances where you don't have to make a lightning fast reaction, or don't need accuracy beyond a tap or a swipe, but you're not going to want to do it often. It sucks for all the reasons intense games suck on touchscreen-only devices. I'd love to see more use of the rear touch surface, though, which is handy because your hands are already there. And the augmented reality stuff could open up some really awesome possibilities, if everyone manages to keep from losing their AR cards.

Future

Sony is propositioning this as another long-life console, like they are with the PS3. It very well could be; it certainly has the raw horsepower, a great (if maybe too large for the average person) form factor, and a wonderful blend of console mainstays and fresher smartphone ideas. It's pretty clear that the smartphone manufacturers aren't terribly interested in making the input side of gaming much better. And Nintendo's 3DS is gaining some traction, but is certainly not as big a success as they'd hoped. The big question remains, can a gaming device remain a standalone product and gain enough traction to warrant being a separate device?

I, for one, hope so. The Vita is extremely capable and, with some updates to the stock OS/apps and some additional software, could be (and this is probably a stretch) a competitor to the iPod touch. It makes sense to me that, as people want to use technology in ever-more-mobile spaces, they'd want to bring powerful games along with them, and smartphones just can't provide that beyond flinging birds and other simple games. The Vita shines because of its ability to provide the immersive experience, and it does that very well. I can't remember ever seeing three hours disappear playing an iPhone game; I did that this weekend on the Vita.

One way they can definitely attract consumers is by expanding the available apps to include all kinds of content, as well as indie games. The mobile software industry is exploding right now on all platforms that offer everyone the ability to tinker, from massive companies to hobby hackers to teenagers. A Vita that ignores that opportunity is leaving money on the table, both from lost sales of software to unpurchased devices. Sony has announced that they're bringing an SDK for developers, called the PlayStation Suite, but it's unclear if this will be a less restricted approach like on iOS and Android, or a locked down and tightly controlled approval process that has been the status quo in the gaming industry since its inception.

If Sony can keep game makers interested in bringing massive new titles to the Vita, we are probably looking at some of the best days for mobile gaming ahead. Hopefully customers will notice, and be willing to fork over the premium for a better gaming experience. But it will be a tougher sell in a world of mobile computers crammed into smartphones.

Conclusion

Five days in, I love my Vita. I've been spending at least an hour or two on it every day, and that's only been going up. The games are pretty great for first-gen titles. This truly feels like a console experience merged with the best ideas the smartphone world has been building for years. There are some 1.0 issues, and some hardware quirks that are metaphorical rough edges, but the overall experience is solid and thought out. If you are a fan of gaming, or are disappointed in the state of gaming on cell phones, a Vita will be a great asset to you. Hopefully Sony can sell a bunch of these things and keep game developers interested over the long run. And hopefully they open it up to indies and app developers to add that much more value as a great Internet communication device.

Edit 2/27/2012: As Kevin Ballard pointed out, I incorrectly called the LiveArea feature "LiveTile", which is actually a feature of Windows Phone 7. The Vita's feature is called LiveArea.

 

2011 is coming to a close, so I'd like to take a moment to highlight a few apps and games on Mac and iPhone that have been invaluable to me. I broke this out into four categories, each with two apps. I have purposely omitted iPad, because frankly, I rarely use my iPad (and I prefer the TouchPad over the iPad), and don't feel I've played with enough iPad apps to really give it a fair shake. So I've left that off to focus on iPhone and Mac apps and games. I hope you'll check out all of these great apps.

DISCLAIMER: I am friends with the guys at Tapbots (makers of Tweetbot) and the guys at TapTapTap (makers of Camera+). However the apps would not have made it onto the list if they were not of the highest quality, and have not influenced my reviews. I have deliberately excluded apps made by any company that I have worked for either now or in the past. I have also not included affiliate links.

Best iPhone Apps

Tweetbot

$2.99 - Tweetbot came out this year as a pretty full-featured Twitter client, but naturally everybody has their own pet features they would like. The guys at Tapbots have steadily improved the app over the year, adding support for push notifications, muting, Favstar integration, and plenty more. It has since become the best designed and most full featured Twitter client, far exceeding Twitter's iPhone app.

Camera+

$0.99 - The iPhone has the best camera of any mobile device (and I test a lot of mobile devices). Camera+ has many features that go beyond the included Camera app. The most important ones actually help you take better photos, such as the image stabilizer, which uses the iPhone's gyroscope and only captures a photo when your hands aren't not shaking. The touch up tools are very handy, and the filters look pretty good compared to other photo apps. And a suite of sharing tools help you share your moments with your Twitter, Facebook, and Flickr friends. It's the tool you should reach for when taking photos, and it shows how good a replacement the iPhone can be for a standalone camera.

Best iPhone Games

Super Stickman Golf

$0.99 - I'm a sucker for a good physics game, and Super Stickman Golf is a great one. Get the ball into the hole while navigating steep terrain, dodging death traps, and staying under par. With dozens of 9-hole courses and a grab bag of power ups, there is a ton of replayability here. It also includes an exhilarating multiplayer mode which completely changes the mechanics from precision to speed. One of the greatest physics games for iPhone that isn't just another Angry Birds clone.

Jetpack Joyride

$0.99 - The form factor of the iPhone lends itself to simpler games over more complex ones. One-tap games like Canabalt are great because of their simplicity. Jetpack Joyride takes this to great lengths, packing a ton of variety into a single tap. And it shows how to do free-to-play games right, in a way that doesn't give an unfair competitive advantage or make you feel forced into spending more money. Gorgeous graphics with a ton of tiny nuance help seal the deal.

Best Mac Apps

Spotify

Free w/ optional subscription - Spotify combines a cloud-powered streaming music service, a lovely native Mac app, and excellent sharing features into one great app. Though Spotify has been around for awhile, it only recently became available in the US. It lets you combine their huge streamable catalog with music in your iTunes library. It syncs your playlists in the cloud, and copies tracks to your iPhone via Wi-Fi. And it lets you share tracks and playlists, either to one person or the world, quickly and easily. I've ranted before about how I don't like iTunes, and have searched long and far to find a suitable replacement. This year, Spotify became that replacement.

Pixelmator

$29.99- Photo-editing tools typically come in one of two favors; way too complicated, or way too simple. Pixelmator bridges the gap by bringing much of the power of Photoshop to mere mortals at an affordable price. While pro designers probably won't drop the Adobe tools for it, it's a fantastic and flexible tool for editing photos. And it has great support for core Mac OS X technologies like Core Image and Auto Save. It's the perfect tool for going beyond red-eye reduction and one-click canned filters to make photos and images look fantastic.

Best Mac Games

Minecraft

$26.95 - Not many games have staying power for me; I typically lose interest in most games after a couple weeks. Not Minecraft. I started playing Minecraft in September of 2010 and have been continually coming back to it ever since. A Lego-style deformable terrain lets you create the world in your image, getting lost in massive caves, and dodging monsters who hunt you down and try to kill you. The game has incredible depth, forcing you to find raw materials and learn how to turn them into weapons, armor, building materials, and so much more. If you've got some friends who play, and one of them is technically savvy, you can set up a multiplayer server where everyone can contribute to the same world, helping each other survive and creating ever-cooler worlds. The 1.0 version, released in November, has a series of objectives and an end-game, though you can happily ignore it and just have fun making your world. You'll spend hours playing Minecraft, and actually have something to show for it after.

Galaxy on Fire 2

$19.99 - One dream that will probably go unrealized in our lifetimes is that of interstellar space travel. We've all wanted to live out battle scenes from Star Wars. Galaxy on Fire 2 is a gorgeous space action game that brings that to life. You can hunt pirates, trade minerals, go on side quests, and hunt down the mysterious race known only as the Voids. A large economy lets you customize your ship to give you the edge in battle, or help you carry more precious resources across the galaxy. A massive story, incredible graphics, great voice acting, tremendous depth, and perfectly-tuned controls make this a must play. It's available on iPhone and iPad, but with so much graphical detail, you'll want to check this one out on the big screen.

, , , , ,    Tags
 

Adobe is finally putting an end to Flash Player. They've announced they're stopping development of the mobile Flash Player, which is where the future of tech innovation is heading, and the writing is on the wall for desktop Flash Player as well. This is a good thing for a myriad of reasons, both technical and political.

However, it is important to remember that Flash drove much of the innovation on the web as we know it today. When Flash was conceived over a decade ago, the web was a glimmer of what it is today. Creating something visually impressive and interactive was almost impossible. Flash brought the ability to do animation, sound, video, 3D graphics, and local storage in the browser when nothing else could.

Without Flash, MapQuest would not have been able to provide maps for years before Google did in JavaScript. The juggernaut YouTube would not have been possible until at least 2009, four years after its actual launch. Gaming on the web, which has been around as long as Flash, would only now be possible a decade later. Flash enabled developers to create rich user experiences in a market dominated by slow moving browser developers. Even in 2011 Flash exists to provide those more powerful apps to less tech-savvy people who still use old versions of Internet Explorer.

Flash Player itself seemed like a means to an end. Macromedia, and then Adobe who acquired them, sells the tool that you use to build Flash content. Thus, Adobe's incentive was not to build a great Flash Player, but a pervasive one that would sell its tools. Its technical stagnation provided a market opportunity for browser developers to fill in the gaps that Flash provided. As a result it has a huge market dominance in tools for building rich apps for the web, tools HTML5 lacks.

This puts Adobe in a unique position. As HTML5 continues to negate the need for Flash Player, Adobe has the tools for implementing Flash within HTML5, and the market eager for those tools. Hopefully this move signals that Adobe will be moving in this direction. Because the web DOES need great HTML5 tools for people who aren't savvy in JavaScript, especially for the people who used Flash to do it previously.

HTML5 offers developers the ability to build high-performance, low-power apps and experiences. Browser innovation has never been faster; Apple, Google, Microsoft, and Mozilla are all competing to bring the best new features to their browsers in compatible ways. But they're just now filling in many features Flash Player has had for years. Adobe can harness this to help build a better web, and few others can. Hopefully they seize this moment.

 

It seems like every other week I'm reading a blog post from a person who went to a tech conference, or a meetup, or heard a talk, and was rightly offended that someone made a tactless joke about women, either about women in general or about specific women. It is disheartening to hear that any group would be made to feel less worthy of respect in our circle, especially at a time when our industry is undergoing one of the most massive and impactful revolutions in decades, and at a time when we need new blood the most. Every person in our industry should be fighting for inclusivity and should welcome new members with open arms and helpful tutorials. Why there aren't more people pushing for this, I don't know.

It is equally saddening to hear so many respectable people jump to conclusions about what your actual motives might be when trying to have an adult discussion about this sensitive subject. I'll make no qualms about it; I'm a born-middle-class white guy, so right off the top, there will be people who will read this under the pretext that I'm either a misogynist or that I'm some kind of "Internet white knight". As a middle-class white guy, my exposure to injustice and inequality has been limited. I cannot possibly know how it feels to hear words thrown around that minimize the role of women in tech. But I also have rarely been a presenter; who am I to say that I know what Noah Kagan's motives were when he put "faceless bitch" on a slide at a recent conference? He could've been trying to lighten the mood, he could have a vendetta against women in tech. I don't know.

I'm inclined to believe that incidents like this, such as where women are mocked by a presenter, are isolated events perpetuated by a non-representative group of a few people. When I go to conferences, I keep an active ear open for slurs against women, and have yet to hear any. But what's fascinating to me is how women are the group continually called out. A demographic survey created by A List Apart shows that women made up 17.8% of respondents; the same study also showed that Asians, blacks, and Hispanics each represented no more than 6% of the group (which is itself a completely separate topic of inequality that seems to be forgotten in these discussions). Yet women are the demographic so frequently mocked and shamed. It probably boils down to sex and the fact that the people that connect to this industry tend to be more introverted, but I don't know.

The only two things that unite everyone in this industry are that 1) we are all fascinated with high technology, and that 2) we are all humans. As humans we have cognitive biases which prejudice us towards recognizing things the way we'd like them to be. So when we hear that, over the course of several conferences, jokes were made that denigrate women, we're biased to believe that these events are misogynistic in nature, and that repeated incidents show a trend of sexist men trying to keep out women. It's possible that's what's happening; I think the truth is that these people generally are poor communicators and entertainers put into a role of communicating and entertaining, and failing. But I don't know.

I don't know the solutions to the problems we face, but I do know a few things that we all can do better, no matter what subset of demographics you belong to.

  • Actively call out unacceptable remarks when they're perpetuated at the expense of any group within our community. Whether that's at the expense of women, men, Android fans, Windows fans, Apple fans, anyone. There is no logical reason for our fledgling industry to show animosity towards any group.
  • Fight the groupthink mentality to label anyone who screws up . Nobody is perfect. Everyone makes mistakes. Few people are truly evil and rotten. I'm reminded of this YouTube video on race; watch, but replace "racist" with "sexist". Address what they did, not who they are. Let's address individual problems without calling into question someone's motives, unless someone makes the same mistake over and over without remorse.
  • Consider not just on how your message is delivered, but also on how it will be perceived. Your audience will contain not only women, but members of every race, gender, religion, and sexual orientation. Joking at the expense of other groups is juvenile and unbecoming, and will reflect negatively not only on the speaker but on the tech community as a whole.
  • Mentor young people who are interested in high technology, and help them learn how to become successful and open-minded. This is something that we should be doing a better job of as an industry as a whole. A teenager who wants to become a software engineer will learn acceptance if they are accepted into a group dominated by grown-ups.

More non-middle-class-white-guy people in our industry will only benefit everyone, from developers to designers to companies to customers. We must be vigilant to keep prejudice out and embrace every single person who wants to contribute to this revolution. But we must be similarly careful not to vilify people for mistakes; hindsight is, after all, 20/20. Of course, maybe I'm wrong. I just don't know.

Be excellent to each other.

Thanks to Faruk Ateş, who has spoken at length on this issue, for his feedback on this post.

 

iCloud looks like it will be an incredible technology for moving app data between devices. This is inherently a good thing, and it will open avenues for many new types of apps. But, there is a fundamental problem. Right now, the only way to access it is through Objective-C APIs embedded into iOS and Mac OS X. Under the hood, they are obviously talking to the network and doing the business of syncing data, but that networking layer is not exposed or documented, and would have to be reverse-engineered in order to understand and use. So the only way for developers to move their data through this system is through a pre-compiled bundle that gets referenced within an application.

This has a few interesting practical repercussions. If you build an application targeting iCloud, you can only ever put it on two platforms - Mac and iOS. You will never be able to port it to Android, WebOS, Windows Phone, or the web (mobile or desktop). If you sync data through iCloud, And, you will never be able to have a server component that can do things with your data all the time.

Here's some examples of what I'm talking about. In my To Do list app, Todolicious, one thing I would love to be able to do is to push badges to your iPhone and Mac showing the number of To Dos you have left. When you tap a To Do to mark it as done, suddenly all your devices would show the correct number on the icon. With the sync server I was building, this was fairly trivial; wait for the user's list to change, and send a signal to push the count everywhere. But if I back Todolicious with iCloud, I have no way of speaking between my server and iCloud (and I'd still need a server of some kind to send the notifications, after all).

Similarly, if I were to build a web app version of Todolicious (which I was planning on), I could not get access to that data within iCloud at all. I'd have to have either to sync to both iCloud and a custom solution (unwieldy, poor UX and network traffic, and otherwise gross), or not load existing data at all (completely negating the benefit of having such a web app).

So there is a serious ecosystem lock-in problem for apps that wish to target iCloud. All of these problems go away when iCloud is made available as a server-to-server API. A big benefit in the promise of cloud computing includes service interoperability, but right now iCloud is merely a data silo. I have filed this as a bug, rdar://9598555, for a server-to-server API (through which you could build code that speaks to iCloud on your server or on other platforms). I dearly hope Apple addresses it.

Such a server-to-server API would drastically decrease the friction of setting up cloud services to complement an iCloud-backed app, and would lead to better apps and more pleased users.

 

 

Osama bin Laden was killed on May 2, 2011 in Pakistan. It marked the end of a manhunt that lasted many years, against a man who funded and conspired to commit several attacks against many countries. bin Laden was the iconic figurehead of Al Qaeda, a brand which inspires fear worldwide. As time led on, it became increasingly less realistic to assume that he would ever face justice. His actions led to two (arguably three) wars conducted by the United States and allies against nations in the Middle East. The world watched Sunday night as President Obama said that his military action succeeded where two the prior presidents had failed at stopping public enemy #1.

I've reflected on this moment a lot over the last couple of days, and have had much difficulty in coming to conclusions on it. Was bin Laden's death justified? I believe it was, given his actions against humanity. Was it morally justifiable to have him assassinated by a Navy SEAL strike team? Probably. Should he have faced jury trial like Saddam Hussain? Ideally, yes, but if the people in the house were firing back at the SEALs, they'd have to defend themselves. Is it equally justifiable to celebrate and revel in the death of bin Laden? I don't think so. Celebration of death, especially one conducted by a government without a trial, is inhuman and barbaric; it inspires hatred of others, which perpetuates the cycle of terrorism.

But my moral decisions are based on my own past. I don't even remember the 1998 US Embassy bombings that bin Laden's al Qaeda conducted (I was only 11 years old then). My conclusions would certainly be different if I lost someone on 9/11, or if I lost family members in Iraq, Afghanistan, or Pakistan. Many others have provided their own insights, such as the fact that Obama did not attempt to bring him to trial. This is too complex an issue affecting too many people personally for it to have a simple right or wrong answer. Some things are neither right nor wrong.

What is right about all of this is that the symbolic head of the hydra of Al Qaeda (and by extension, of fundamentalist Muslim terrorism) has been cut off. To the United States, a symbol that inspires bigotry, hate, xenophobia, and fear of Muslims in the Middle East no longer exists. The face that has risen over the last two years from the ashes of the Iranian election and the uprisings in Egypt, Libya, and others is one of democracy and of youth. While the death of bin Laden will not suddenly cause racists to be less racist, it does have the potential for the US to come to a greater acceptance of those in the Middle East. And that's morally right, it's beautiful, and it's inspiring.

In 2011, with Twitter and Facebook and SMS, we have the ability to blurt out our thoughts with little reflection. This event is not one that has a good or evil label, and one's position should not be a knee-jerk reaction to how you feel in the moment. It is worthy of reflection by everyone, as everyone has invariably been affected by bin Laden's actions in some way. This event has changed the course of some small part of history, and the true effects will be felt many years down the road.

 

Yesterday Twitter released a new set of guidelines to developers on what to build on their platform. In it, they took a pretty radical view at what is arguably the most popular type of application to build: the "mainstream consumer client". There are easily hundreds, if not thousands, of these apps on the Twitter platform. However, as of yesterday, the official line from Twitter is "don't build these apps any more". This has upset a lot of developers of exactly this type of app (and validates my theory that getting out of writing Streamlines was a good idea!). This announcement will have a chilling effect on innovation, and will permanently and irrevocably destroy any semblance of trust remaining between developers and Twitter.

Looking Back at Third Parties

When Twitter launched in 2006, there were two ways to interact with it. The website (which has now come to be known as #OldTwitter), and SMS. There was no Twitter client, no desktop experience, and no mobile experience. Oh, and they had an API. For the non-programmers in the audience, this API basically consists of a standardized way for apps to contact Twitter and get data in and out. Just about every Twitter app (client or service) you've ever used has used Twitter's API to do its bidding.

People started using Twitter's API to build apps. One of the first and most notable is Twitterrific, which launched around January 2007. As the lead developer, Craig Hockenberry, notes in a blog post made yesterday, Twitterrific was responsible for many innovations like:

  • being the first Twitter client for both Mac and iPhone,
  • being the first to use the word "tweet" (which is now actually trademarked by Twitter),
  • being the first to use a character counter in a tweet composer

In mid-to-late 2008, Loren Brichter of Atebits released Tweetie for iPhone, a pretty universally loved Twitter client (for good reasons). He released version 2.0 in 2009. In that time, he added a ton of innovation, including (among many other things) the now-ubiquitous pull-to-refresh interface concept, which is now pretty much standard on Twitter clients, but also lots of other apps (including Facebook's own).

I've highlighted these two, because I'm a Mac/iPhone guy, but they're hardly alone. Many other Twitter clients that are out now have innovated on the Twitter platform to deliver something greater than the sum of its parts. Millions of people rely on the power and flexibility of TweetDeck to carve out the relevant portions of the social networks it consumes, for example.

All of these innovations were driven by third parties, not by Twitter. In fact, most of these apps pushed Twitter into implementing features which improved the user experience, such as retweets and conversations.

Looking Back at Twitter

Twitter has always been plagued by performance problems. Going back to their launch, they've had constant downtime and slow-to-respond APIs. They've made improvements, but you can ask anyone who uses Twitter that they've still got a long way to go. Instead, they clearly seem focused on shoveling features into their platform. Over 2009, they added several features, including retweets, lists, and geolocation. Each of these were adopted by users quickly, who insisted these features be present in clients. These features were largely added with no real prior announcement or technical information given ahead of time. Most of these features were written once, and then summarily never improved again. Issues still exist with retweets and blocked users, and lists still have the same limitations as when they started.

In 2009, Twitter decided to change up how they authenticate (how a call to the API knows that I'm @SteveStreza and not, say, @WhiteHouse). They switched from basic auth (which sends your account's password to Twitter on every request) to a system called OAuth (which sends a "token", which pairs your account to a specific app, to Twitter on every request). This in itself is a Good Thing, because it makes it harder for a malicious app or person to steal your password, and makes it easier for you to cut off apps you don't trust any longer.

However, Twitter's roll-out of this feature was very botched. Their initial implementation required that all users get sent to a web page, where they entered their password. This design was geared towards web developers, not desktop/mobile developers. As a result of this, implementing OAuth was a terrible user experience for those environments. Due to the poor user experience compared to basic auth, existing clients waited until the very last minute to add OAuth support to their clients, while new apps (which HAD to use OAuth) suffered a competitive disadvantage with a hostile login process. Many clients could not even be written; certain cell phones had such poor web browsers that they couldn't even display the login page necessary. A year later (February 2010), they finally fixed this by introducing XAuth, which allows mobile/desktop developers to present their own UI for asking users for passwords. And in August 2010, the cut the spigot off for basic auth.

But in 2010, everything changed. In April 2010 (not even a year ago!), Twitter acquired Atebits and made the formerly paid app free, under the branding "Twitter for iPhone". They also released Twitter for Android. In September, they launched #NewTwitter, a new version of the Twitter.com website (which had previously had incremental improvements and feature additions). In the beginning of January 2011, they released Twitter for Mac. But the glue that holds this all together: in April 2010, Twitter announced their Promoted Tweets ad platform.

Over the course of one year, where Twitter was encouraging people to develop these kinds of apps, they completely undercut the existing market by putting free apps on a variety of platforms, with no prior announcement about any of this.

Looking Forward

Twitter recently introduced the #dickbar (or, officially, the "Quick Bar") to Twitter for iPhone, which forces you to look at whatever trending topic (promoted or not) they'd like. After the backlash, they backpedaled and made the feature, to quote a friend, "less annoying" (it's still a user experience nightmare, but now it's somewhat less so!). Then, a couple days later as users abandon the official app for third-party clients, Twitter releases a statement "discouraging" developers from writing their own apps.

Instead of building the "mainstream consumer client", Twitter says developers should focus on other kinds of services that interact with the Twitter API. Their recommendations include things like "brand insights" tools and "social CRM" apps; the kind of stuff that makes self-described social media gurus cackle but makes actual engineers vomit. They say to build enterprise tools, when they are already building enterprise tools. Their messages and their actions are completely out of sync.

Twitter's intentions have always been packing more functionality into their platform, and informing developers about it as late as possible. As Wayne Gretzky said, "you skate for where the puck is going to be, not where the puck has been". Twitter's made it impossible for developers to have any insight on where they should aim. They provide conflicting messages about their intentions. But most of all, they introduce a level of uncertainty about what it is they're building. Uncertainty kills innovation; if someone doesn't know what the rules are going to change to tomorrow, they won't invest time and money in building something today.

What I Think Twitter Should Do

In-your-face forced promotion and shutting out 3rd-party players is endemic when you take money from advertisers, not users. But many of these users (myself included) are intrinsically tied to the real time social network, and would gladly pay in a heartbeat for value added to the service, as opposed to degraded user experience. Certainly not all, but a significant portion.

Consider the model recently adopted by Reddit, a system called Reddit Gold, where users who pay for the service get perks like extra features and access to early features. On top of that, the service is now answerable to the users who pay the bills, not the advertisers.

To do some calculations, Twitter now has over 253 million unique users per month visiting their site. If 1% of those users were willing to pay $5/mo for the service without ads or promoted tweets, they're looking at a revenue of $151 million dollars per year based on the users they already have who want to pay for this. This is over 3x what they earned in 2010 on ads. These users are the ones who will be deriving the most value from Twitter the service, and will be the least likely to be effected by in-app advertising. They can keep Promoted Tweets and Trends on for those who don't pay. iPhone app developers use this technique all the time; the app is free with ads, or spend a few bucks to remove the ads. These numbers may be higher than reality, but there is a lot of opportunity for Twitter to bake value in at the service.

Additionally, Twitter should focus more on improving the core infrastructure of their service. Their constant downtime is pretty hard to accept four and a half years later. Removing some of the limitations (like the 20 lists or the ability to only access your most recent 3,200 tweets) would be welcome as well; the black box of data that Twitter has stored is massive, and users want the ability to be able to access their own data (hence apps like TweetLibrary which fill that void by maintaining their own database). When Twitter has actually built up their service to the point where it is reliable and not so terribly opaque, they will have a more convincing argument that they're prepared to handle a unified user experience.

However, it may be too late. Twitter has broken trust with their developers far too many times; the developers who helped build Twitter's platform from a micro-blogging service to a cultural phenomenon. Whether anyone will innovate on the Twitter platform any more is yet to be seen, but I doubt it.

Denouement

I'll let Tim Haines, developer of Favstar, sum this up in less than 140 characters.

I think I'm pissed off at Twitter's announcement today because the wording makes me feel like I'm be lied to and taken for a fool.

 

Two years ago, I began working on a new Twitter client for iPhone, named Streamlines. I hinted at it about a year ago, and has been a driving force in my development of MGTwitterEngine and a ton of open source projects. I've come to the conclusion that I won't have time to finish and release it, as there's still probably another 6 months of development needed to really ship it, and hostility from Twitter and from users of other Twitter clients make effort into building one unsustainable. However, I think there are UI concepts in there which are totally unique and have never been seen before, so I'd like to share them with you before this project is lost to the annals of dead projects.

Here's a video walking through some of the main UI concepts found in Streamlines.

Streamlines is a social networking client that is designed to show you what you want to see, and hide what you don't care about. To do this, it avoids using tab bars and navigation stacks, and instead uses a card interface with a horizontal swipe, similar to the iPhone's Weather app or WebOS' multitasking UI. You pick which timelines you want to see.

On top of that, you can merge multiple timelines together, across all types of timelines, accounts, and services. For example, if you use Lists on Twitter and Facebook to organize, say, your family members, you can create one contiguous timeline which combines both those lists and shows you what your family members are doing, regardless of where they posted it to. Or, you can combine your Twitter followers, mentions, and direct messages together, similar to how Twitterrific works. This saves you time, as it lets you create your own timelines which show you new perspectives on your social networks that you simply can't get with most Twitter clients.

Streamlines tries to make sure you always are looking at the best data, so for every tweet you see on screen, it will update the relative date in real time. So if a tweet is 6 seconds old, it'll update live to say "6s", "7s", "8s", etc. The time is always up to date, so you know how long ago someone actually posted something. Streamlines accounts for API rate limiting, using some advanced heuristics to schedule API requests so that you never run out. This was more a problem two years ago, when you had 30 API requests per hour shared across all your Twitter clients, but still handy. And it handles incoming and outgoing attachments, so if you or someone else embeds content from another site, Streamlines will replace the URL inline with a preview of the image or video.

Under the Hood

Streamlines is backed by two frameworks I wrote, BirdNest and BirdNestUI. They're frameworks because, well, I actually have about 8 apps which use the same Twitter source code, spanning iPhone, iPad, and Mac. This framework tries to encapsulate a lot of functionality - it includes multiple accounts (with credentials stored in the Keychain) spanning multiple services (Twitter and Facebook, with plans to expand into other timeline services like Google Buzz, Foursquare/Gowalla, Yelp, etc.), networking, persistent data, and lots more. It's powered with Core Data and has about 12 open source projects which make up various pieces. The UI framework contains views for showing and creating accounts and timelines, creating tweets or wall posts, and showing timelines in tables (and there's a corresponding UI framework for Mac).

Why Won't It Ship?

There are many reasons. First and foremost, it's at least 6 months out from being released, and that's optimistic. There are lots of bugs, crashes, and UI problems alone, not to mention whole views just not having been built yet. So there's a huge body of work still to be done. I haven't had much opportunity to work on it recently, and there's not much to suggest I'll have more soon.

On top of that, building a Twitter client has become far less appealing than it was two years ago. In those two years, Twitter has drastically increased their feature set to include a TON of things, including geolocation, native retweets, and lists to name a few. The only way to remain competitive is to iterate extremely fast to include every new feature, whenever Twitter announces them. At the same time, Twitter has made several very hostile moves to make it even less appealing to develop on their platform; the most egregious of which was the acquisition of Atebits and their Twitter client Tweetie. There's now such tremendous market saturation for Twitter clients, especially on iPhone. Releasing a new Twitter app now is difficult, as nobody really pays attention to new Twitter clients any more.

Competing with Twitter's free app is hard enough. Even if I could get it to market, there are tons of users who will demand that every feature Twitter offers be crammed into every new release. And everybody's list of must-haves is different; some people will only care about lists, and will rail on you if they can't edit lists. Some will only care about the geolocation feature and if you can put that on a map. Some will only care about native retweets and seeing a list of people who retweeted. Every one of those features, to these users, is a line item on a checklist that needs to exist. To a developer, every one of those features can take weeks or even months to build properly. But every one has to be in there. Oh, and all of those features need to coexist, cleanly, on a small screen, with a fantastic user interface. It is an insanely complex problem to solve.

All of which needs to be built for an app that will not receive much attention, that will be crowded out of the market and will need to be priced cheaply to compensate, and that will be overshadowed by Twitter's own app anyway. There just simply isn't much reason to build a Twitter client anymore. I would much rather spend my time building an app that users will judge for its own merits, not for its completeness in binding to another service.

Going Forward

I'm not sure what to do with Streamlines as it is today. I do think there is a market for niche apps which use Twitter, and I still have some intention of bringing those to market. But I can't say when, and if they ever come, they will not be full Twitter clients.

I'm considering open-sourcing the code, but I'm not convinced of its practicality yet. I'm hesitant to think that someone will want to adopt a monolithic framework for building their own Twitter apps. It's possible they do. But the code is not the cleanest, and there are surely lots of bugs.

That being said, if anyone wishes to build an app with a similar interface, they have my full blessing and encouragement to do it without any permission from or attribution to me needed. I'd like to see more variance in Twitter client UI in general, as the tab bar metaphor is pretty worn at this point.

I would love to hear any and all feedback, positive or negative, either by Twitter or by leaving comments on the YouTube video above. Thanks for watching and reading.

Page 1 of 21 Next →