At 83, I Decided to Develop an App

I’ve done business, politics, and war. Now I’m trying my hand at mobile gaming.

Among the things one learns as time passes is that everyone has to age, but not everyone has to get old. One of the best ways to stay young is to keep learning.

That’s one of the reasons I’ve spent the better part of the past two years trying my hand at developing a mobile app. To be more precise, I’ve been working with a team of developers to bring into the digital age a card game that dates back to at least the Second World War, and perhaps earlier. Starting this week, I’m pleased that it is now going to have a new life thanks to modern technology.

My involvement in this game — an incredibly devilish version of solitaire — starts with one of the greatest leaders of the 20th century at one of the most tumultuous times in world history. This is that story.

On May 10, 1940, Nazi tanks overran Belgium. Hitler’s invasion of Western Europe had a number of consequences. One was for a man named Winston Churchill to become Prime Minister the day after his predecessor, Neville Chamberlain, resigned in humiliation. Another consequence was to force into exile a young Belgian government aide named André de Staercke. As they plotted to turn back the Fascist tide, De Staercke came to know Churchill under incomprehensible stress: the Luftwaffe’s nightly bombing raids of London, an America reluctant to be dragged into another world war, and an entire world that looked to be on fire.

Winston Churchill, then in his mid-sixties, was opinionated, forceful, and determined, and ever ready with a colorful quip. Once a young photographer told him that he hoped he’d be able to shoot Churchill’s picture on the prime minister’s 100th birthday. Churchill immediately replied, “I don’t see why not, young man. You look reasonably fit and healthy.”

Churchill appreciated many things — a good book, a bottle of scotch and a cigar, games of all kinds, and perhaps above all else, a keen mind. He found that last quality in young André de Staercke, then in his late twenties, who became something of a protégé to Churchill.

André de Staercke, Joyce Rumsfeld, and me, c. 1974.

I have no doubt that Prime Minister Churchill taught André number of things — but the one thing I know about for sure Churchill taught him was how to play a uniquely challenging game of solitaire. I know this because I met André de Staercke some thirty years later in 1973, after President Richard Nixon nominated me to serve as the U.S. ambassador to the North Atlantic Treaty Organization (NATO), and de Staercke, then an esteemed senior Belgian diplomat at the NATO headquarters in Brussels, taught Churchill’s game to me.

I can remember de Staercke sitting across from me on a plane somewhere over Europe playing the curious game, dizzying columns of miniature cards arrayed on the table between us. I asked him what he was playing and he proceeded to tell me the origin of the game he called Churchill Solitaire after the man we both very much admired, and the diabolical rules that make it the hardest game of solitaire — and probably the most challenging and strategic game of logic or puzzle — I’ve ever played.

Most people have played some version of Solitaire in their lives. The Churchill version, like the man himself, is far more demanding and complex. Instead of using a single deck of 52 cards, Churchill Solitaire uses two decks. Instead of the traditional 7 rows of cards, there are 10. Instead of simply moving cards so that they fit back into single-suited piles from Ace to King, Churchill Solitaire includes an extra row of six cards — the Devil’s Six — that a player has to liberate as well.

Churchill Solitaire is not a game for everyone. It takes patience and perseverance, cunning and concentration, and strategy and sacrifice.

It’s a card game that can frustrate even the most skilled player because a single move can make or break an entire game. A number of hands are simply unwinnable. But the most steadfast players will gamely soldier on to find their way to victory.

As my friend Andre de Staercke once put it to me, “What one needs in life are the pessimism of intelligence and the optimism of will.” Play a couple hands of Churchill Solitaire, and you’ll know precisely what he meant.

Over the ensuing four decades, I played this game with two miniature decks of cards across a wide table, in much the way I envision Churchill playing it (except without the cigars and the Red Label.) On long flights across the world, or when I found a quiet moment at the end of a busy day, I would clear my mind and refocus by playing a few hands of the game. I’ve found it helps improve concentration and sharpens instincts. To succeed in Churchill Solitaire, you have to envision a variety of scenarios and think a good many moves ahead.

Up until a few years ago, there were probably a dozen or so people in the entire world who knew how to play this game. These were mostly people I taught the game to — my wife, Joyce (the second best living Churchill Solitaire player I know), our children, and some assorted colleagues and friends. That was it. Winston Churchill was gone. André de Staercke, as well. And I knew I wouldn’t be around forever. There was every chance the game Churchill so enjoyed could be lost to the ages.

Then I was approached about turning this game into an “app.” I can’t say I had much of an idea of what an app even was. I had played the regular version of solitaire on my iPad, but turning Churchill Solitaire into an app of its own wasn’t something I’d ever envisioned. It wasn’t something I was sure the Churchill family would even want us to contemplate.

In January 2014, I wrote a letter to Sir Winston Churchill’s great-grandson, Mr. Randolph Churchill. I had known Randolph’s father during my days as a diplomat. I told Randolph the background of the game, my interest in calling it “Churchill Solitaire,” and wondered if the Churchill family would have any objection.

To the contrary, the Churchill family was enthusiastic about the idea — Randolph called it “a marvelous way to bring this back to life”— and they agreed to lend their name to it as well. This is not a profit-making endeavor on either of our parts. The Churchill family’s profits from the game, like mine, will go to charity.


Since we began our partnership, I’ve reviewed wire frames and branding guides. I’ve spent countless hours on beta releases. I’ve signed off on something they call “UX.” I’ve put the game through its paces, offering suggestions and ideas to make it as closely resemble the game Churchill played.

After 172 builds — thousands of lines of code each — we have arrived. I am now officially in the app business.

What motivated me to push myself into the tech world was simply the fact that I thoroughly enjoy the game. My wife, Joyce, and I play it against each other regularly, keeping score — she might not want me to disclose that I’ve been leading her over the past several years — and more recently, with the app, comparing our relative skillfulness by trying to win the same hand. We both tend to be believers in the simple, Churchillian tagline for the game: #NeverGiveIn.

Churchill Solitaire is a game that is a host of contradictions — simple yet complicated; frustrating yet fun. Now it lives on for a new generation — a fitting tribute to a great man. And starting this week, it is available to the world on the AppStore and will soon be coming to other platforms.

I can’t say if this is the last app I’ll ever be involved in — after all, I’m only 83! But it is safe to say that Mark Zuckerberg has nothing to worry about.

Next Story — An Open Letter to John Hanke & Niantic
Currently Reading - An Open Letter to John Hanke & Niantic

An Open Letter to John Hanke & Niantic

I write this not as one of the creators of Pokevision nor as player who has gone through the past few turbulent days in Pokemon Go; instead, I write this as a fan of Pokemon ever since I was 8 years old.

My family and I moved to the U.S. in 1998, when I was in the first grade. I didn’t know much back then, and even less about popular culture. When my friends introduced their Gameboys and Pokemon Red/Blue to me, I couldn’t help but feel envious. I begged and begged my parents to buy me a Gameboy and Pokemon Yellow. I remember that when I finally convinced them to buy me a Gameboy for $70, they also found out that they had to buy the actual game too for $30. This was foreign to them, and I got yelled at a little. $100 was a lot back then, I believe it was almost 10% of our family’s income at the time. While this may seem irrelevant, even today, this amount of money is still not insignificant to many families in the US, not to mention the rest of the world.

So I got my game, and I played along with my friends for hundreds and hundreds of hours — trying to figure out all the puzzles in the game, like how to get to Articuno; battling our favorite Pokemon to see who’s stronger, train, repeat; and just trying to “catch em all.” I’ve spent countless hours in that video game with my friends, and it became my fondest memory of that time in my life. Pokemon is so ingrained within me, and I can’t imagine myself being the only one. I’m not the only one that vividly remembers how you beat the Elite Four, then go to the dungeons above Cerulean City and find Mewtwo for the first time, right?

Fast forward almost 20 years. I’ve barely touched anything Pokemon-related since then. I still have my Pokemon cards, as I’m sure many others do; but I haven’t bothered to take a look at them for quite a while now. Pokemon is something I’ll probably remember forever, but it’s not something that’s actively in my life — because it just doesn’t fit. On top of work, friends, family, etc, there’s just simply no time for Pokemon. It doesn’t mesh with life any more as well as it used to when I was 8. You can’t just bring up the topic of Pokemon and expect people to not give you an odd stare.

Enter Pokemon Go — 2016.

Admittedly, I was never too excited about Pokemon Go. With that said, I did not have many expectations for it. Pokemon is important to me, but I — like many others — have stuffed it in our little box of childhood things and never looked back.

But when I opened Pokemon Go for the first time, as cheesy as it sounds, it all came back to me. The nostalgia, the good feelings, and the happiness that Pokemon has always brought.

The “Hi, I’m Professor Willow,” “Pick your starter: Bulbasaur, Charmander, Squirtle,” everything.

And now I can catch them in real life? At first, I was dubious, but this became the most amazing, yet simple thing I’ve seen in gaming. On social media, I saw that my friends and practically the whole world was talking about Pokemon Go, and the first thing I did was go out for a drive trying to “be the best.”

One of the best parts? Apart from having to own a smartphone, the game was free. No $70, no $30, free. This opened up Pokemon to essentially everyone in the world. Pokemon now can be shared with anyone.

As the days unfolded, the world became captivated by Pokemon Go. People absolutely fell in love. We saw stories of elderly learning about Pikachu for the first time. My parents that could care less beyond who the yellow mouse looking thing was 20 years ago, started asking what the other Pokemon were. It was phenomenal.

We saw investment bankers asking their kids how to play Pokemon Go so that they can better connect with their younger clients. We saw the elderly become more fascinated in the world of Pokemon. We saw kids going out more, exercising, and being active in general just because of Pokemon Go. And most importantly, Justin Bieber finally got to feel what it’s like to not be mobbed because everyone else was too busy trying to find a Gyarados to notice him.

Local stores integrated Pokemon Go in their services within days of the game’s release. Hospitals started praising the health benefits of having Pokemon Go around its patients. People traveled hundreds and thousands of miles just to play it. Players explored parts of their cities that they never knew existed, and befriended strangers on their hunt for Pokemon. These stories of triumph were solely because of Pokemon Go. Pokemon was no longer just a game, it was part of a lifestyle.These stories shouldn’t surprise any of us, we’ve all been there to watch it unfold.

You’ve simply captured all of our hearts with Pokemon Go, Niantic.

But then, you broke it all too quickly.

When the game broke every few hours or so and wasted our lucky eggs, we stood patiently, excusing the huge growth and thus, strain on servers, as the cause. We were happy to wait it out with our fellow trainers knowing that it’s worth waiting for. No one got mad.

When the in-game tracking “broke,” we all stood idly by, patiently, waiting for the game to update and fix.

Along came Pokevision. We made Pokevision not to “cheat.” We made it so that we can have a temporary relief to the in-game tracker that we were told was broken. John, at SDCC, you said that you guys were working on “fixing the in-game tracker.” This made everyone believe that this was coming sometime soon. We saw Pokevision as a stop gap to this — and we had every intention in closing it down the minute that Pokemon Go’s own tracker restored functionality.

As we waited more than 2 and a half weeks, the tracker was still not fixed. We noticed more and more of our friends leave the game; the only way I — and I know experiences vary here — could convince them to play was show them Pokevision, and say that “Hey, here’s a temporary remedy to the tracking issue — we’re still optimistic that Pokemon Go’s tracker will be fixed soon!”

Nobody heralded Pokevision as a permanent, end-all solution; in fact, all the media coverage of Pokevision was littered with comments such as: “Pokevision is okay, but when the tracker is fixed in game, I’m going to stop using this.”

For the past 4 weeks. Every single one of your 80+ million players had so much faith. Take a look at Reddit, take a look at all these journalists who don’t even play games (calling out Ryan Mac of Forbes), who became obsessed with Pokemon GO.

All of us were so eager for Pokemon Go to be “fixed” so that we can return to sharing Pokemon Go with our loved ones and friends. Remember when I said that before Pokemon Go came about, mentioning Pokemon Go would land you an odd stare? Pokemon Go reversed that — Pokemon Go became the conversation starter, the topic that everyone bonded over, the topic that guys used to pick up chicks with and not felt like a geeky nerd. That, and so much more, were solely because of Pokemon Go.

As almost 3 weeks have passed by, the in-game tracker is broken. People had a temporary solution in Pokevision, but we knew, and everyone else knew, this wouldn’t be permanent. We didn’t make Pokevision to spite you, Niantic — we made it so that we can keep everyone playing while we wait patiently. We want to keep sharing our Pokemon stories with everyone else. How many people in the world have gotten the chance to have a serious conversation about POKEMON with their parents for the first time? How many of us got to talk about Pokemon like it was socially acceptable in any context? It’s captured all of our hearts and imaginations, I cannot stress that enough.

After 3 weeks though, we started seeing that you guys seemed to not want to talk to us (the players). Pokevision, at this time has grown to almost 50M unique users, and 11 million daily.

Let that sink in for a second.

Half of the player base of Pokemon Go stopped by — and they didn’t do so to “cheat.” The game was simply too unbearable to play in its current state for many (note: many, not all). The main attraction wasn’t that they got to have an advantage with Pokevision, the main attraction was that it allowed them to play Pokemon Go more. This is what everyone wants — to play Pokemon Go more.

When we closed Pokevision out of respect for your wishes, and at your requests— one of which came directly from you, John — we trusted you guys fully in allowing the community to grow. I literally cannot express this more — we just want to play the game. We can handle the bugs every now and then, but please at least tell us you guys care. Yes, Pokevision does give some advantages that may be TOO much; but is it all that bad? Pokemon has survived 20 years — even grown, I would say. And Pokemon Go made it even bigger. If the argument is that “well, if you catch a Snorlax you weren’t supposed to find, but you found it on Pokevision, it might make you play less.” If that was your argument, I’d have to disagree! I’ll still catch a damn Snorlax even if I have 20 of them. Just like how millions of us have caught probably over 100 pidgey’s or zubat’s each.

Pokemon is everlasting. The same 151 Pokemon have been around for 20 years. If 80M people downloaded and played Pokemon Go within a week (before it even released in multiple major countries) isn’t an indication that no one can be sick of Pokemon, I don’t know what is.

After disabling the in-game tracker and Pokevision, the ratings on iOs and Android Google Play store went from 4.0 stars to 1.0–1.5. I am only one person, I admit that my sole opinion is not important, but what about the countless players begging for the game to be restored to its former state? I may be biased in saying that Pokevision being down had an impact on the amount of negative ratings, refund requests and outcry on social media — but could it be true? Nothing has changed between the time the in-game tracker broke and Pokevision went down. Could it just be possible that the tracker — no matter if Pokevision made it, or Niantic made it, is something that players desperately NEED — not want, but NEED — in order to play the game? Could it be possible that this is the very core fundamental feature that drives most players? I understand that there are some that want to walk around and stumble on a random Pokemon — to each their own. But, 50M unique users and 11M daily and the ratings on your App (with no significant change in itself) are big indicators of this desire. Are customers always right? Especially if over half of them are looking for an outside fix just so they can enjoy something they love? People are naturally inquisitive, and in this case, they just want to play more and more, so they sought out something that helps them do so.

Pokemon Go is a social game. Its enjoyment depends on the players and their environment. If you take away the environment part (tracking) but keep the social part (players and their friends) intact, sure, people will still play; but would you not rather it be at its fullest potential?

Everyone in the world wants to play Pokemon Go. It’s been a huge part of everyone’s lives already if it has not been clear enough. Look at the fans from Brazil — they aren’t spamming social media because they want to cause harm — they just want to play the game. Just as I saw my friends play Pokemon many years ago, and wanted to be a part of it — these guys are doing the same.

They just want to be with the rest of the world. Sadly, by the time they join, Pokemon Go may not be the game it was weeks ago.

Lastly, if money is an issue for you, Niantic, I must ask — why? You’ve captivated the world and introduced Pokemon to people that would have never touched it had it not been for Pokemon Go. To me, that’s priceless.

You won’t be remembered for the profits you made, you’ll be remembered for the world you changed through Pokemon and all of the lives you made better. Just look at all the stories — there’s plenty. So when millions of players are expressing their feedback to changes, is it not worth it to listen to what they have to say?

In its first few weeks, Pokemon Go has already enhanced millions of lives in unimaginable ways. It has so much potential to continue changing the world. Wouldn’t you, Niantic, want to see just how much good you can do with Pokemon Go — is that not more valuable than anything else? I sure think so.

Warmly,
Yang

Next Story — Ugly Truths of Game Development
Currently Reading - Ugly Truths of Game Development

Ugly Truths of Game Development

As other articles have mentioned before, game development has become so accessible and such a huge market, that everyone and their dog are doing it these days. Most of those people are young, eager, and have completely unrealistic expectations of what it takes and how rich it will make you. Spoiler alert: More of one of those and less of the other than you think, but I’m not yet telling which is which.

As always in a good article, there is a personal story going along with this. My own game Schwarzwald, which I’ve been working on for around half a year, is now on Steam Greenlight and the feedback has been both over- and underwhelming, as you can see right here:

The first two days, I got more exposure on Steam than I had managed to get by myself on, for example, my Facebook page for the game. The stats for that are, to be completely honest, depressing:

So now that I’ve driven away half of the audience with statistics, let’s look into what makes game development so unlike the expectation of the game enthusiast.

Note that I am not talking about the game itself that you are writing, or your passion in doing so. Because passion and drive are important ingredients of a successful indie game, but they are neither surprising nor unexpected. I am talking about the parts that many of us indie developers forget or underestimate.

These less-obvious ingredients basically boil down to:

  1. Marketing
  2. Polishing
  3. Marketing
  4. Bug-Fixing
  5. Marketing

Marketing

The first thing that your game needs is some initial exposure, and when you start you think that your friends will come and play — and they will. Then they will stop, because unless most of your friends are gamers with the exact same taste as you, it simply isn’t the right game for them.

You absolutely need an audience that you can talk to, and it’s best to build it before you even start game development. If you have a lot of followers on Facebook or Twitter, that is wonderful. If not, you need to get them. Post interesting content, join groups, whatever it takes. You will need as many people as possible who will get your initial postings.

Polishing

As the saying goes, first you do 80% of your game, and then you sit down and do the other 80%.

Polishing is the act of turning the playable, almost-finished game into something that actually works as a game not just for you and some die-hard fans. It includes smoothing out the interface and flow of interactions, testing the game with different people to understand how they interact with it, what they expect, what confuses them. It includes making things visually more appealing, adding subtle effects, background music, improving the graphical user interface, adding icons, settling on a proper font and one hundred other small details.

This part is always bigger than you thought it would be. Always. Because you can always polish one more thing, make this more beautiful or that more attractive or work on this part a little more. There is always one more animation that could be improved, one more sound effect that could be added, one more user interface feedback that can be made better.

Polishing is what makes or breaks a game. Anyone can write an endless runner, or a platformer these days. Actually, I just wrote an endless runner involving cats for my girlfriend, and it took me one day. Now we’ve decided to polish it and release it as a mobile game, and I’m under no illusion that it will be ready in one more day. For simple games, the ratio is not 80% + 80%, it is more like 80% + 180 %.

To understand what polishing is, look at AAA titles and compare them to the crappy indie shit that you find in the lower ranks of, Greenlight, for example. The cringeworthy stuff. Let’s all be honest with each other and admit that it exists. Now stand the pain for a few minutes and understand what exactly makes you cringe. I don’t want to show an example here, so follow in theory. The bad game is most likely unpolished. The balance is off, the gameplay boring — yes, maybe. But what makes us cringe is bad sound effects, horrible graphical user interfaces, bad tiling textures, choppy animations, badly responsive input, overly flat surfaces, too much re-use of the same three models, bad lighting, all those small and not so small details that are actually not about the game itself, but its presentation.

Marketing

What you need these days to speak to your audience, to be “present” in the digital world, is just mind-boggling and it will eat up a massive amount of your development time. Here is just what most guides on marketing for indies recommend you have to have:

  • Facebook page
  • Twitter feed
  • Dev Blog
  • YouTube videos
  • Screenshots
  • Press Kit

Each of those can take hours or days to set up and populate. And bear in mind that this is the bare minimum. To be really successful, you also want:

  • your own / “company” webpage
  • the games own webpage
  • a page on IndieDB, itch.io or half a dozen other indie game sites
  • join various groups and forums to spread the word
  • go to local gaming conventions and events
  • attend gaming conventions, game jams, exhibitions and fairs

How one person is supposed to do all of that while also developing a game and having a job to pay for the hobby is anyones guess. So better get started today.

Because while it sounds overwhelming, there is also a lot of content shared between all of those channels. You will use the same videos and screenshots for all those sites. You will post the same description and updates to all of them. Gaming conventions are a few times a year and probably you are going anyway.

Most importantly, you should monitor which of these channels actually work for you and which don’t. You will find out that they work differently, too. For example, here is Schwarzwald on IndieDB (left) itch.io (right) and :

Which of these is the better channel? In total, IndieDB brings almost twice as many visitors (920 compared to 548 on itch.io) but on IndieDB they come in boosts and always when I have written and published an article about the game there, which takes considerable time and effort. Itch.io on the other hand, has a fairly steady influx of people showing up, and most of the referers show that people are actually coming from inside the site.

That is the main reason for having multiple channels. Different audiences, different ways of reaching them.

Bug-Fixing

Once your game is 95% done, it goes back to 90% and then to 80% and if you are unlike, some more. If your marketing has been successful so far, you will now curse the fact that you have many players, because many players find many bugs. And many players will report many bugs. And many bugs will be reported many times. For a time, you will feel like shutting down the bugtracker because anyway people are just posting duplicates. Or if you don’t use a bugtracker: Your e-mail.

There will be easy bugs. Bugs you already marked as #FIXME in the code. Bugs that surprise you, and bugs that make you angry. The worst are the bugs that evade you. That you can’t figure out or that only happen on player machines, never on your own. Then there will be bugs that you swear you fixed last week, why in the name of all the gods is it back, and how?

Bugfixing is decidely not fun and can be outright frustrating. And it feels like it is never ending. But of course it needs to be done, nobody wants to play a buggy game. So you will go and do it, and lose your motivation. This phase is a careful balance between keeping your spirits up and sitting down and doing the shitty work. And at the end you want to shout to the world about the fifty crazy bugs that you fixed, but truth be told, nobody gives a damn. People are fast to add to the noise when a bug is present, and slow to post even a thumbs up or like when a bug is fixed. That is just how it is.

Marketing

And then you are almost done and now you need to roll it out. You have already exhausted your existing channels to get testers and early access players or whatever. But you want to raise your player count from a hundred or so to a few thousand.

Press Kit. You prepared it a long time ago, now is the time to use it. So you write to the press. To YouTubers, to everyone, and get largely ignored. Because they get mails like yours a dozen times every day. But you have no other choice. One or two of them pick up the story and run it. Maybe you will get an award at one of the game jams that you go to, that gives you a reason to mail everyone again and maybe another few stories get posted.

If your game is any good, word-of-mouth will expand your audience as well, but slowly. One of my old games went from about one dozen players to over one thousand with just word-of-mouth. Good games still work — but they will not make you rich. Speaking of rich…


Forget about getting rich. If you joined a bunch of indie game developer groups, you have noticed the absence of millionaires. Most everyone is doing ok more or less, some have a successful small company, very few became rich. The gaming industry is just like any other industry: You can be successful and you can become rich, it’s just not very likely.

Look at the guys from Introversion, for example. Incredible guys, made really wonderful games. They had some modest success, hired a few people and planned to grow bigger. Then they had to fire those people again and while they are still around with Prison Architect, I’m quite sure that none of them is driving around in a Bentley.

But these are the heroes of indie game development. They have made a living from it for many years, they are still creating wonderfully unique games, and I can’t wait to see what their next title will be.

That is the other part that goes into game development: A healthy expectation of what is to come. Sweat and blood and sometimes tears. Any many times the realization that you thought you are almost done, but you were wrong. But also, the incredible feeling of having created something, of sharing your creation with the world. The feedback from happy players (ignore the unhappy ones!) and how your creation comes alive in their hands. This is what makes it worthwhile.

And if you are a gamer, not a developer, and just reading this out of interest: Give feedback to your indie developer. Putting something out there and not hearing anything is the worst. 1000 players mean nothing if they don’t tell us that they like the game. If I have a choice between 10,000 distant players or 100 passionate fans, I would always pick the 100. The community. The people who care and remember your name.

Next Story — The Apple-Google shift
Currently Reading - The Apple-Google shift

The Apple-Google shift

In the last couple of years, two very distinct things have happened — or, to be more precise, been happening — in the world of consumer tech, in my opinion. A shift has occurred: Apple, once the definition of innovation, has become stale, content to rest on its laurels; while Google, once ugly and disparate, has continually pushed forward with new and better products that are a delight to use.

The result is two-fold: firstly, from a software perspective, Google-authored apps have all but replaced Apple’s defaults on my iPhone; secondly, for the first time ever, I find myself potentially choosing a Google phone over an Apple phone — a choice that represents not just a one-off hardware purchasing decision, but a first tentative step outside of Apple’s ecosystem and, as a result, a break in unashamed Apple fanboy-ism.

Okay, so I’m considering a switch to Android. No big deal. I’m following in the footsteps of many, many, many others. But what I find interesting outside of my own personal decision is that there seems to be a growing discontent with Apple — especially amongst former so-called fanboys/girls — and, at the same time, a growing appreciation of what Google have been doing, especially from a design perspective. In many ways it’s unwise to compare these two companies alone, but few would disagree that these days they’re the two sides of one coin.

So I thought I’d try and pick this apart. What’s actually changed?

It’s not that Apple no longer creates great products, but there’s just not that spark there anymore, is there? Remember when a new MacBook or iMac would launch? Or the iPhone? Or pretty much any new product? The buzz was palpable; the hype almost always justified. For years and years, Apple constantly innovated, whether it was with entirely new product lines or updates to existing ones, but recently everything has just felt a little… well, meh, hasn’t it?

Could this feeling because Apple is now so ubiquitous, no longer the underdog? Possibly. And could this be down to some very shrewd business decisions, with Apple deciding to refine and hone rather than experiment, as evidenced by the longer life cycles of designs for their phones and computers? Very likely.

But that doesn’t excuse recent product launches that have (again, in my opinion) fallen flat by their past standards. The MacBook? Well, it’s a lovely little machine (and I’m typing on it right now) and I even took a whole set of photos to capture its beautiful form, but time has revealed it to be irritating in many ways (the keys repeatedly get stuck, for instance, and the removal of a magnetic power connector is genuinely irritating). The Apple Watch? After the initial magic wore off, I came to the conclusion that it’s essentially useless — as did almost every other Apple Watch owner I’ve spoken to. The new Apple TV? A total lack of innovation — both from its previous version and the numerous offerings from competitors. New iPhones aren’t even exciting anymore.

In many ways, I wonder if this all started with the launch of iOS 7: although I was originally one of its supporters when it came out and enraged half the Apple-buying world, when I think about it these days, iOS still doesn’t really encourage interaction. It’s not about flat design versus skeuomorphic design; it’s more about how Apple laid the groundwork for what a great, minimal, mobile operating system could be… and then never really built upon those foundations. The same could be said of their camera technology. The iPhone camera’s noise reduction algorithm has ruined many a photo that would have benefitted from not being put through a paint-like Photoshop filter. Oh, and don’t even get me started on Apple Music. What a mess. Sure, it’s not a total failure from an interaction design point of view, but it’s a sub-par effort from a company that should really be far, far, far better than any other steaming music competitors. That Apple Music has been so successful is only down to the ecosystem they’ve cultivated — not because it offers a superior experience.

Then there’s just all the douche moves Apple has made again and again with proprietary connections — their decision to remove the headphone jack on the forthcoming new iPhone being the latest. All of this has added up to make even this most ardent of Apple fanboys start to question his allegiances.

And all the while this has been going on, Google — which, with each new product launch, whether software or hardware, has become even more of an Apple competitor — has continued to innovate; to make better versions of Apple’s own apps. (I don’t even need to mention Maps, do I? No? Good.) And from a design perspective, Google has well and truly grown up: Material Design offered a lot of promise when it was first announced, and in the time that’s passed since, it’s proven itself to be a strong framework for unifying a the company’s multiple software offerings. Sure, there are times when its incarnation feels a little templated and dry — Google Play Music, for example — and perhaps it’s easy to praise Google for their grown-up new looks when, until recent times, Google web apps were so damn ugly. (Remember how Gmail used to look? For a reminder of that less graceful era, look at the browser version of Google Calendar.) But the difficulty of creating a system that works in so many instances, both in terms of aesthetics and interaction, should not be underestimated.

Beneath all of these apps and interactions and aesthetics, there’s another layer of Google that has become so trusted: its infrastructure. Yes, I get the fears about our data being mined to show us more relevant ads, but who do I trust for reliable cloud syncing: Apple or Google? Who do I trust to backup and share my photo library: Apple or Google? Whose infrastructure do I trust for my emails, documents, calendars, and more: Apple or Google? Granted, the latter could be any service provider vs. Google, but the point is that Google’s infrastructure underpins so much of the internet and our daily lives, it often just doesn’t make sense to let someone else handle what we know Google can handle so well.

(At this point, i’m going to refrain from delving into lengthy praises of particular Google apps and services, but I do want to give a quick mention to the Google Calendar and Google Photos iOS apps. They’re so radically superior to Apple’s equivalents, I’d question anyone’s need to ever open those defaults again.)

All this is to say: if Google can be this good on a competitor’s operating system, how much better can it be in its own environment? This is the question that’s been gaining traction in my head recently.

Android used to be a poor man’s iOS, but it’s obviously grown a lot since then. Unfortunately, fragmentation is a problem that’s plagued Android from the very beginning and is probably the primary factor that’s never allowed me to take switching seriously, but here’s where it gets interesting: with Google making (via OEMs) its own Nexus hardware, it’s possible to use a vanilla version of Android, free of bloat from carrier-installed software. It also removes that weird you-can-only-use-this-particlar-version-of-Android thing that plagues Android phones made by other manufacturers, and, in doing so, puts Google on an evening playing field with Apple: control the hardware and you control the software.It just works.

So it’s this vision of Android — a Google phone in its purest form — that’s making me, and others, consider the switch. And with new Nexus phones rumoured to land (or at least be announced) very soon, the opportunity to do so might be just around the corner.

Or maybe not. The new iPhone is also due very soon. Maybe it’ll be amazing. Maybe it’ll be the best hardware and software combination that exists in the world. Maybe Apple’s core apps, services, and experiences that underpin the entire iOS / macOS / tvOS ecosystem will up their respective games and I’ll look back on this post as blasphemy.

But — sadly — I’m not sure that’s something the Apple of 2016 is capable of.

Next Story — Server Side Swift vs. The Other Guys — 2: Speed
Currently Reading - Server Side Swift vs. The Other Guys — 2: Speed

Server Side Swift vs. The Other Guys — 2: Speed

After the last article about reading and responding JSON, it was clear that people wanted to see the frameworks benchmarked. So we gathered some really smart guys — web development professionals from around the world — and worked together on a Digital Ocean droplet to test and benchmark the top web frameworks.

Frameworks

  • Vapor (Swift)
  • Ruby on Rails (Ruby)
  • Laravel (PHP)
  • Lumen (PHP)
  • Express (JavaScript)
  • Django (Python)
  • Flask (Python)
  • Spring (Java)
  • Nancy (C#)
  • Go (Pure Go, no framework)

Test

  • Plaintext
  • JSON
  • Random SQLite Fetch

Benchmark

The following wrk commands were run 3 times per framework on a separate Digital Ocean droplet in the same zone.

wrk -d 10 -t 4 -c 128 http://<host>:<port>/plaintext
wrk -d 10 -t 4 -c 128 http://<host>:<port>/json
wrk -d 10 -t 4 -c 128 http://<host>:<port>/sqlite-fetch

The Results

Vapor and Express are the fastest frameworks out there, competing with (and even sometimes surpassing) pure Go.

Plaintext

The plaintext test is the simplest and its results show the maximum possible speed of each framework.

Vapor surprised us with how close it got to Go. The pure Swift HTTP server Vapor uses is thread based where as Go uses coroutines. Coroutines can be a lot faster, but require additional libraries and setup. It’s possible Vapor could adopt this type of parallelism in the future. (Read more about threads vs. coroutines in the code section).

Additionally, Swift on Linux is still beta and compiles with unoptimized toolchains. As the compiler nears production in the coming months, Swift has the possiblility to dethrone Go.

JSON

Express gets the obvious advantage being written in JavaScript (JSON stands for JavaScript Object Notation in case anyone doesn’t know). Vapor falls into third place due to it’s nascent JSON parsing on Linux (Apple is still working on the official one). Still, Swift proves to be at least 3x if not 10x faster than the rest of the frameworks tested.

SQLite Fetch

Express came in with a surprising lead, and Go dropped to a surprising fourth place. Even more surprising is that Vapor came in second being the only framework besides Spring to use an ORM (Vapor includes Fluent by default).

// Fluent ORM
let user = try User.random()
// No ORM
let row = DB.raw("SELECT * FROM users ORDER BY random() LIMIT 1")

The SQLite Fetch test is arguably the best test to look to when examining a framework since it shows how it performs doing real world tasks. As Vapor’s dependencies such as the Fluent-SQLite library mature, it will surely see improvements in this type of test.

Code

This section shows the code and configuration used to run each framework.

Vapor

Vapor ran using the built in POSIX-thread based HTTP server. It was compiled using Swift’s 06–06 toolchain with release configuration and optimizations.

vapor run --release --port=8000

The Vapor CLI made creating and running the application easy. All of the code required to pass the test follows.

Setting up the database was easy using Fluent. And Swift’s do/try syntax ensures the application won’t crash or produce a 500, even if the database isn’t where we think it should be.

Speed

Vapor’s speed comes from the fact that it is both compiled and has modern syntax and language features. Swift can reach C performance if worked correctly, and advancments like Array Slices make it easy and readable to make incredibly performant and optimized applications.

Thread vs. Coroutines

Threads require interacting with the kernel when accepting requests, which makes them much slower than Go-style coroutines. This is because the operating system manages creating and scheduling threads.

Though they are slower, they are arguably easier to use since the same application can run on different server setups without knowing the number of cores before hand. They also don’t require any external libraries or C dependencies, as almost all operating systems have full POSIX compliance out of the box.

Ruby

Rails was run using the supplied server in production mode. The database and routes were configured in separate files.

bin/rails s — binding=107.170.131.198 -p 8600 -e production

Nancy

Nancy is an open source and lightweight .Net framework. It focuses on easy testing, extensability, and staying out of your way. With over 250 contributors and a vibrant community it shows how awesome C# on the web can be.

The code was concise and and it was very fast.

Laravel

Laravel were served using Nginx and PHP 5.

Lumen

Lumen was served similarly to Laravel.

Express

Express ran clustered using NPM with cluster.

npm run cluster

The entire app resided in one file.

Speed

Express gets its speed from being so lightweight and relying on highly performant C dependencies. Even though you write in JavaScript, the requests are parsed using Node’s C libraries.

Django

Django was served using the wsgi and gunicorn running 4 workers.

Flask

Flask was served the same as Django.

Go

Go’s built in web server, router, and entire application fit in one file.

Spring

Java barely made it in to the results (10pm last night). It tooks a long time to set up and get everything installed on the Droplet. And it kept destroying the SQLite database. 😆

[10:54]
it took ​_a hundred and seventy-seven seconds_​ but it finally nuked the rows out of `users` and started itself up
[10:54]
:alien_guy: Java

Edit: This doesn’t mean Spring is bad, we like Spring. :)

Java was run using Spring Boot on the Java Virtual Machine, one of the fastest and most battle-tested VMs out there.

The full Java code can be seen here: https://github.com/hlprmnky/vapor-spring-benchmark

Contributors

Sign up to continue reading what matters most to you

Great stories deserve a great audience

Continue reading