In the Battle of the Ecosystems, No One Wins

While I was excited today at some of the announcements Google made at I/O, I was also troubled: there was an awful lot of Google Play, which is fine, but the Nexus Q announcement just left a bad taste in my mouth. It’s a product that has cool use, but the only demonstrated use of that product is in Google’s closed Play ecosystem, a tactic that smells entirely too much like Apple.

The traditionally held dynamic is that in a competitive market, the consumer wins. Competitors force each other to innovate and also force prices low. The problem is when the competition is between large, closed ecosystems involving multimedia content, the consumer will always lose. Google may make more of an effort to make their content available cross-platform than Apple does, but at the end of the day Play is just another iTunes store. I want to see better from Google.

Closed ecosystems gain enormous inertia as consumers begin to “buy in” to them. The more purchased media I have on (iTunes/Google Play) the less appealing and more cumbersome a switch to another ecosystem becomes. This inertia counterbalances normal competitive forces allowing for effective lock-in of customers without the need to continually court and re-convince customers to stick around. This is basically Apple’s whole business model, but it isn’t sustainable forever.

Apple’s domination of the digital content space is going to come to an end, and it isn’t going to be ended by a competitor that, for all intents and purposes, is identical. It’s going to be ended by Spotify, Netflix, Hulu, and other subscription services that challenge the very nature of traditional content distribution. Simply put, I don’t ever want to buy another movie, song, or book. I want access to everything, all the time, legally and with enough flexibility to do so when and how I wish. We have the technology, we just lack the right set of licensing agreements.

If Google wants to eat Apple’s lunch it shouldn’t be announcing the fact that you can now buy DRM’ed movies in Google’s store just like you can in Apple’s. It should announce a partnership with Netflix and Spotify that lets you subscribe to both services with a single bill. It should make its Nexus Q so seamlessly compatible with popular subscription services that Apple TV seems like a joke.

I’m sick of walled-off ecosystems. I will never, ever “purchase” content that I can’t freely reformat and redistribute in whatever way I see fit. Subscriptions at least offer me a middle ground: in exchange for giving up complete freedom over my viewing experience, I pay a small amount for access to huge libraries of content. That’s the future, and that’s where I will be from now until everyone else agrees with me. In the battle of the ecosystems, the first one that draws a line in the sand and says “no” to traditional distributions will be the real winner.


The Why of Zero Tolerance

In the past couple of days the developer sphere has been ablaze with fury over sexism. Two days ago, startup Sqoot made a carelessly sexist statement in an event description. As a result, a number of high-profile sponsors including Heroku immediately pulled out of the event and a minitornado of fury was directed at the fledgling company.

Today, ire is building over the actions of the founders of Geeklist after someone pointed out the sexist nature of a video that was posted with their branding. I’ve yet to see how this one is going to turn out, but I’ll tell you what I did personally: I tweeted at them to disable my private beta account and let them know that it was because of the emerging story.

It wasn’t until yesterday that I realized just how much of an opportunity the development community has. We have long suffered from a terrible lack of gender diversity. This lack of diversity is an incredibly complex subject and I can’t begin to understand all of the contributing factors; however, the casually sexist and man-culture attitude assumed by developers certainly isn’t helping things. This issue has been slowly heating up in the past months (even years) and I think it’s finally at a boiling-over point. The furor in the past few days paints a picture of a developer community with an emerging zero tolerance policy for sexism.

But, you might say, aren’t we getting a bit extreme here? Sure Sqoot did something careless, but wasn’t the response a bit disproportional? Yes, and that’s exactly the point. A zero tolerance policy is not about the specific cases, it’s about changing the behavior of a group as a whole. If we as a community make the punishment for even casual sexism swift and incredibly harsh, we will change behavior. A simple complaint is likely to make a specific person or company think twice about behavior (although it seems less clear that this is the case with Geeklist), but an internet firestorm that results in a measurable impact (lost sponsors, lost users)? That has the power to affect the whole community. People who see these acts even from the sidelines will think about how little they want to be in the shoes of Geeklist and Sqoot and, as they interact with the community, they will be a little more mindful not to make the same mistakes.

I’m not advocating political correctness, and I think that women are (chauvinistically) painted as being oversensitive and needing to be treated with kid gloves. I love that we can say fuck in our talks when we feel like it and I don’t want to see that change. Far more harmful is language that, without ever swearing, simply assumes that women aren’t a part of this community. Until we can purge that completely from our behavior we can’t honestly say that we are doing all that we can to encourage women to join us. I’m committed to that outcome, and I think that more and more we all are.

LocalStorage? IndexedDB? What we need is Redis for the browser.

After Mozilla’s hacks blog posted an article about how localStorage is too slow and someone else said localStorage is just fine it reminded me of how frustrated I’ve been at the various proposed “solutions” for an in-browser persistence engine. It is completely ridiculous to think it reasonable to have a schema-driven store in the browser. Schema-driven stores work on the server side because engineers can run data migrations and control the flow of data. Browsers are distributed and stateless, there’s no “migration” pattern except one that is roughly lashed on using ugly Javascript conditionals.

At the same time, localStorage simply isn’t enough (though it’s better than schema stores). A pure key value store works for lots of cases but is going to slow down and cause problems with any kind of complex structuring. So what is the solution? I think a document store could make sense: it’s schemaless, simple, and you could write simple querying semantics for it. Maybe a subset of MongoDB’s functionality. But you know what would be perfect? Having Redis in the browser.

Redis gives you a simple key value store with some simple but powerful data structures on top. The interface is dead simple, the values stored are just strings (like localStorage) but with sets, ordered sets, and lists you can implement powerful (and fast) complex logic for an application.

I’m not saying that Redis should literally be ported to the browser as an engine, but I do think that the ideal in-browser store would look almost exactly like Redis. It would be able to set values on keys, have them expire, add values to lists and sets and generally be a “key value store and a little bit more.” Implementation-wise I would imagine that this would be an in-memory store that had the ability (but not the necessity) of flushing to the disk.

Here’s the reasons it would work:

  1. Straightforward API: No complex schema migrations, just a simple API that can be used to accomplish powerful things.
  2. Small Footprint: Redis, for all its awesomeness, has a very small footprint in terms of complexity of implementation. I believe that something akin to Redis could be taken down the standards path because, unlike WebSQL, it is simple enough for each browser vendor to implement independently.
  3. Just Enough Power: SQL is overkill for an in-browser storage layer. Similarly, a document store would be nice to have but would also be overkill for the 95% use case. Redis gives you a simple key value store that can do just enough to cover almost everyone almost all the time.

So Mozilla, Google, Opera (heck, even Microsoft) if you’re looking for an example of a storage API that would match the web browser perfectly, look no further than Redis.


If Government Embraced Technology…

As an entrepreneurial software developer, I don’t usually look to the government to solve problems for me. Instead I usually try to think of ways to solve the problem (or start a business to solve the problem) myself. Sometimes, though, I stop to think about what it would be like if the government truly embraced and understood technology the way I do. Here are three big changes that might come about from such a government.

Digital Currency

Physical currency’s days are numbered. It may be some time yet before we truly replace it, but the time has come to build the systems that will eventually supplant it. The government should create a system of digital currency that would include at least these features:

  1. Peer-to-Peer Transfer: Any digital currency must obviously be as transferrable as real currency is now, both between individuals and from an individual to a business.
  2. Not Device-Locked: Digital currency should not be tied to some specific “card” or device except as a convenience of transfer (such as a gift). I should be able to lose my wallet without losing my digital cash.
  3. Anonymous Transactions: Digital currency should retain the same level of anonymity as physical currency. I should be able to buy something without it being tied to an account or the destination of my funds recorded. Any kind of “tracking” of specific digital currency must only happen after court order (if at all).
  4. Online and Offline: Digital currency should be simple to use both in person and online.

The impact of digital currency would mean an immediate boost for peer-to-peer economies that are already developing online. If everything from Etsy to eBay could be paid for in cash instead of through an intermediary the growth of individual power in the marketplace would be greatly increased, something that I think is vital to our economic future. I’m guessing that many of the ideas surrounding Bitcoin could be used for “official” digital currency.

This would also negatively affect a number of large companies. Visa, Mastercard, Paypal, and a number of players small and large would have to drastically alter their business models to cope with a convenient, universal digital currency. Since digital currency is (in my opinion) inevitable, this is not reason enough to abandon the concept but instead a warning that there will likely be lobbying interests trying to stop such a move.

Phase Out Physical Addresses

The Post Office is struggling, and plenty of people say it shouldn’t exist at all any more. I’ll avoid weighing in on that, but one thing that should exist is a central registry that maps people and businesses to physical locations without the need for physical addresses. I would propose that the identifier should be an email and the system could work like so:

  1. The system should be entirely opt-in and completed via some kind of online form.
  2. I should be able to map multiple email addresses to my account and specify privacy options for each. This could include the ability to reject mail from unapproved senders or get emails to approve/deny the delivery of mail.
  3. When I mail something, all I have to do is write the email address and affix a stamp. I can just write my own email address for the return address, or I can buy verified stamps associated to my own email address. This way someone can know that the message is actually from me.
  4. There should be publicly available APIs to allow businesses to check if an email address is associated to a physical one and what the privacy policy is for that email. This way Amazon.com can check if my email is associated to an address and, if it’s not, have me do so.
  5. There should be special APIs that can be accessed only by delivery companies such as UPS and Fedex that actually allow dereferencing an email address to a physical address. Usage of these APIs should be tightly restricted and regulated to prevent abuse.

The impact of this would be to drastically increase the ease and convenience of sending physical packages and mail. It would also encourage a whole new industry of startups based around the ease with which delivering physical mail would be handled. It would also ease the frustration of changing address, since people are now mailing things to you, not you at some specific address.

Negative impacts mostly center around the privacy dangers of having identity-based physical mail, but these are mostly addressed by the opt-in nature of the system. I would absolutely love to see this work.

The reason the government can do the above while it would be difficult for a business is because both of these problems have solutions that only work at massive scale. If there isn’t a single digital currency that everyone can depend on using it won’t take off. If there isn’t a single accepted repository for physical address mappings they won’t be used. What other infrastructure

Automatic Tax Preparation

It’s always seemed slightly insane to me that the calculation of taxes is a burden for the citizenry and not the government. It’s seems akin to hiring a plumber who hands you a complex rate sheet and a calculator instead of a bill when the work is done.

For the millions of individuals with relatively simple taxes (the kind that are mostly just filling in numbers from W-2s and other documents into TurboTax), why can’t the government simple accept the documents themselves and send a bill or a refund? Why do we have to purchase software or hire a professional to do something that could obviously be automated if the right systems were in place?

If implemented, this would greatly disrupt the accounting industry, of course, but given the productivity gains of millions of Americans not spending hours worrying about preparing taxes each year, the benefits would far outweigh.

Technology and Politics

I’m often only thinking about politics when they start mucking about in my own technological backyard (e.g. SOPA/PIPA), but the truth is that a government that truly embraced technology could do some pretty amazing things. What grand ideas do you have that could be a reality if the government had the same know-how as a startup?


Forward: Let’s Start a Political Party

I’ve never really been very interested in politics. At least, I wasn’t until SOPA/PIPA came along. The issue demonstrated for me two very important facts:

  1. Technologists are severely under-represented in our current political system.
  2. Technologists are capable of causing political change.

The first I’d known for ages, the second came as a surprise. I honestly never expected that my outrage and participation in activism regarding SOPA/PIPA would actually succeed. So what now? Well, we can start with crowdfunding for startups, but why not aim a bit higher?

I think it’s time for technologists to organize and get some real change happening. The Test PAC is a great start, and I think any action should recognize that we may (for now) have more success influencing current political stakeholders than becoming them, but I believe that to truly move things forward we need actual people in office. Oh yeah, and I propose we call the party Forward. Simple, to the point, and not confusing for ordinary people like Sweden’s Pirate Party. I also have a few ideas for ways to make the party successful in ways other third parties aren’t:

  1. Large Active Member Base. It is simply amazing how many technologists joined together to fight SOPA/PIPA. I truly believe that we can have a larger base of active party members (people who actually contribute in a meaningful way) than many other third parties.
  2. Online Organization. We already know how to organize. We can use Reddit, Hacker News, Twitter, and networks we create to build consensus and tackle specific issues in a way no other group can.
  3. Position of Power. We are the people building and shaping the most important industry in the world, the one that continues to grow despite the global economic setback. We can use this power for demonstration like with SOPA/PIPA and we can use it for education, too.

If we can get one person into Congress it can be the same as if every member of the party was elected. Why can’t we have an elected representative who puts a piece of proposed legislation on GitHub, accepts pull requests, and then submits the collaborative bill to Congress? From there we can collectively gather support from our representatives using phone campaigns, emails, etc. It’s time to change politics, and we have the power. Who’s with me?

P.S. I created a Forward Party Reddit and would love to see discussion, links, and more there to evolve this idea and really make a difference.


This is How I Want Social to Work

I think that solving the dual problems of privacy and noise in social networking applications are very difficult. Personally I don’t think any of the major players (Facebook, Twitter, Google+) have tackled these problems entirely successfully. I did a little thinking and if I built a social network today, here’s how I would tackle the graph.

Let’s say that I just signed up for the network. As part of the sign up process I would be asked to create Topics that I might post about. By default there would be two topics pre-populated: Personal and Work. In addition, the app would suggest that I add other topics that I might be interested and give examples such as Technology or Fashion. It would also say “hey don’t worry, you can always create topics while you post”.

So far so good. Now, whenever I share something I’m encouraged to select topics from those I have already posted about. I can also create a new topic on the fly just by typing its name. “Golly gee, this sounds an awful lot like Google’s Circles” you might be thinking if you were a 1950s era television character. Wait for it, here comes the payoff.

Now I want to connect to people on the network. When I click “Follow” I’m greeted with a dialog box that says “For which topics do you want to follow X?” and presents me with a list of all of the topics that X has posted about (or I can say “all”). For my close family members I follow all topics, for friends I follow their “Personal” topic, for coworkers I follow their “Work” topic and for everyone else I follow the topics that I think I’ll enjoy reading from them, maybe “Funny” or “Ruby” or any number of other things.

This is the best solution I’ve thought of to the “noise” problem with social networks. Right now I pretty much use Twitter for work and, well, I don’t really use Facebook much but if I did it would be for personal stuff. I don’t want to bore my friends with programming observations and I don’t want to bore my coworkers with personal observations. This system makes me certain that anyone looking at my posts has pro-actively decided that they are interested in hearing from me about that.

The final piece of this puzzle is privacy. I would also have the ability to create private topics that require my approval before someone can follow me on. When someone subscribes to “all” of my topics they can check a box to request permission for private topics as well, which I can approve or deny on an individual basis. Private topics are not explicitly listed out nor are they revealed when I post to them (in this way private topics are much like Circles).

There it is, my best attempt to describe a system that maximizes privacy control, minimizes noise, and creates as small a burden as possible. The only time that this requires “work” is that I need to tag each post I make with topics, and when I follow someone I have to decide which topics I want to follow them about.

Pros/Cons

Here are some of the advantages that I see to a system like the one described above:

  • I believe that this solves the noise problem better than any existing system. Being able to subscribe to a subset of a user’s posts allows for specialized content without alienating followers who are interested in something else.
  • Brands would be able to leverage this to their advantage as well. I could follow my favorite brands, blogs, etc. but only on the types of stories that would interest me.
  • Gets us a little closer to “one network to rule them all” instead of needing to create a dichotomy between our personal and public lives.
  • Since I’m encouraged to tag every post I make, lots of semantic data can be gathered about posts and used to make content discovery and other serendipity work on the system.

Of course, there are drawbacks as well, some surmountable some less so:

  • The biggest problem is that people have to tag their posts accurately or none of this matters. It requires more work when I share and friction there is definitely a problem.
  • What happens when people create new topics? I would imagine something like the Twitter interactions pane that would say “X posted about new topic Y, do you want to follow it?”, but this would have to be tuned to be user friendly.
  • Users may feel tempted to follow all topics just out of fear of “missing something.”

I’m putting this out there because I’m both wondering if anything like it exists and if there are huge glaring problems with it that I’m not considering. If this isn’t the right model for social, what is?


Free-to-Play Could Crash the Gaming Industry

This post is part of my Where Games Are Going series in which I talk about the future of one of my favorite industries: video gaming.

ET Didn't Help

At the same time that digital distribution is poised to level the playing field more than ever before for independent developers, another trend has the potential to cause a crash the likes of which hasn’t been seen since 1983. And it’s all Zynga’s fault.

These days you can’t throw a rock in the gaming community without hitting someone who is talking about the brave new world of Free To Play. Everyone is taking a look at the hand-over-fist cash generated by the addiction engines pumped out by Zynga (no, I won’t call them games) and wants their piece of the pie. From the expected ranks of big publishers like EA to some of gaming’s most respected brands like Blizzard and Valve, everyone is exploring “alternative monetization” for games.

But, you might say, won’t these alternative monetization strategies just lead to more people playing games and more games being made? If games are cheaper (or even free) isn’t that better for everyone? The answer is no.

Free-to-play and in-game purchase models break the incentives associated with game development. Sure, it can be done in a tactful manner and, in some cases, may even lead to a bigger audience for a great game. I haven’t played it, but I hear that League of Legends handles free vs. paid players in a very fair way. The problem is that once your money comes not from an up-front or monthly fee but from in-game purchases, you are no longer incentivized as a developer to make the game as fun as possible. Instead, you are incentivized to make players make as many in-game purchases as possible.

We don’t have to make up a worst case scenario for how this could end up, it already exists. Games like FarmVille are, quite literally, addiction engines. They are fine-tuned to draw a player in and build an obligation to continue playing and then an obligation to continue purchasing. The problem is that there isn’t really a game underneath all the addiction; it’s just a psychologically tuned profit machine.

In-game purchases might actually be more profitable in the short term. If you can convince people that they aren’t spending as much when they actually end up spending more, you’re going to make money. The problem is that in the long term people will come to realize that they are “playing” these games but not actually having, you know, fun. If the industry focuses on this model as much as I fear it is gearing up to do, the realization that games aren’t fun anymore could have sweepingly negative impact on the industry as a whole.

The video game crash of 1982 was precipitated by a glut of mediocre-to-bad titles and little information to know which ones were good and which were bad. The gaming crash of 2015 might happen after developers have stopped making games fun in the quest to make them microtransactionally profitable. Casual and hardcore gamers alike could end up feeling jaded and alienated by an industry that treats them like marks instead of players, and if that happens gaming as a whole will suffer greatly.

Personally I loathe the idea of in-game purchases. I don’t want my experience playing a game to be marred by thinking about the price of my fun. “Gee, would I have $2.99 more fun if I bought this Vorpal Sword right now?” It’s not that I’m price-sensitive, it’s that I explicitly play games to escape the pocket-conscious decision-making of the rest of my daily life and now I’m being slapped in the face with it every five minutes.

I care deeply about the gaming industry. I believe that video games helped to shape my logical thinking and problem-solving, and I know that my interest in them precipitated my interest in computers and technology as a whole which has become a passionate and fulfilling career for me. So when I talk about this problem, it’s not because I think that there is something seriously wrong with games now. I just think that many in the industry are being fooled by this mirage of a free-to-play future, and I implore these people to think twice before signing up to willfully misalign their incentive to simply make a great game.

Where Games Are Going: Consoles as App Platforms

I’ve been an avid gamer since, well, ever. Like many developers, an interest in video games (and creating them) is what first lured me to the world of programming. While I’m not a part of the game industry I follow it closely and have greatly enjoyed discovering such online video series as All Your History Are Belong To Us and Extra Credits this year. “Where Games Are Going” posts simply represent my observations and predictions about gaming and its future. This time, we’re going to talk about the next generation of consoles.

The current generation of consoles (Xbox 360, PS3, Wii) is going to be the last generation in which physical media (discs, carts, what-have-you) are the primary way in which new games are acquired. This is a large trend that can be seen especially in Microsoft’s full downloadable games which include AAA titles from this year, not just the older/smaller titles to which downloadable games have traditionally been relegated.

The company that wins the next generation console war will be the one who most wholeheartedly adopts the App Store model, specifically meaning a simple distribution system open to any and all developers with a constant revenue share model. I believe that Microsoft is currently best positioned to make this happen: Xbox Live is still far and away the most comprehensive console gaming community, they’ve shown that they’re willing to pull in this model with Xbox Live Indie Games, and they have Windows Phone 7 and Windows App Stores either here or on the way. That’s not to say that there aren’t a few kinks left to figure out:

  1. Big Publishers Will Resist. The next generation of consoles is going to see content created by a single guy pitted directly against content created by a seasoned team of 100. Big established publishers will fight hard to keep themselves separate to avoid competition from smaller developers but, ultimately, they will lose. They’ve already had to accept this on iOS and Android devices, they will eventually accept it on consoles as well.
  2. Price Will Be A Problem. A recent post on Signal vs. Noise called the physical disc/digital content price gap the Lazy Tax, but in reality the problem is monolithic price control. Microsoft and publishers alike are going to have to radically alter the game price structure to work in the new market. Games will either have to drastically lower in price at the outset or aggressively discount after the first few months. Otherwise, there will be a big swell of frustration from the gamers who are accustomed to the used and on-sale markets for getting their games. One way to get around this (but it isn’t pretty) would be to have unique unlock codes that can be purchased for games and sold by retailers. This would allow Amazon et al to discount games more like they do currently.
  3. Non-Games Will Be Huge. The next generation of gaming consoles aren’t just going to be for games. This is already obvious with the huge push for video that Microsoft has done on the Xbox 360 but it will become even more so as the consoles from all major players will open their doors to non-game content. Even Nintendo, traditionally focused exclusively on gaming, is rumored to be jumping on the app train.
  4. Google and Apple Will Enter the Fray. The interesting side effect of consoles becoming app platforms is that they will suddenly face competition from the existing app platforms of Apple and Google. Each platform will have to work hard to differentiate itself from the pack.

I think the next generation of consoles will be very interesting and there’s a lot that remains to be seen. Perhaps even more interesting, I think the next next gen will come from disruptive game streaming services like OnLive. As actually fast connectivity gets cheaper and more available it will make a lot more sense to stream games from big gaming rigs in the sky than to outlay a pile of cash on a home console. Once this happens, game platforms will go ubiquitous, no longer tied to any one device. Expect to be able to play full Xbox 1080 games on your Windows Phone and (maybe) even your iOS or Android device.


Why I Rarely Read Books

I don’t really read books these days. I read plenty of blogs and web development related things via Google Reader, but I almost never just sit down and read something in my free time. Sometimes I’m filled with guilt about it: surely I should be reading more, enriching my life and whatnot. But then I realized that it’s not because I hate reading that I don’t do it often, it’s because reading is anti-social.

I spend a large portion of my life reading and writing text from and to a computer screen. When I’m ready to put down the computer I’m also ready to have some actual face-to-face interaction with people. Reading is just about the only form of common leisure activity that can’t be enjoyed simultaneously by more than one person (unless one is reading aloud or being read aloud to).

Video games, board games, concerts, and even to a lesser extent movies and television are all social experiences. When I’m playing video games with my family and friends we also chat about this and that in gameplay lulls. Board games have always been social and my collection continues to grow. Movies and TV aren’t quite as social but during commercial breaks (Hulu, of course, not actual television which I abandoned years ago) or afterwards there is a new shared experience to talk about. Most forms of entertainment are about creating that shared experience. Reading is not.

Reading is an isolating experience: you have to concentrate on the story and separate yourself from the rest of the world. So I still read when I’m on a plane or alone on a business trip, when I find myself both without company and uninspired to be hacking on open source or another side project. Sometimes my wife and I even read aloud to each other when we’re both really interested in a book (or manga series). But I rarely read books these days, and I’m starting to feel ok about that.