Unlimited Possibilities through Code
I spend a lot of time working with companies to help them change strategy on their technical products. Most of the time they initially view it as just "moving to the cloud", or "updating the software for scale". But in almost every case they are radically changing their future by doing so, they just don't know it yet.
Some of the companies I work with are going into this knowing full well that they need to make a change or become obsolete. Many are following industry trends in an attempt to be a first mover in their particular field. Others are embracing change as a way to be more profitable.
Where is your technology in your company? Is it moving to adopt with the future? Or is the last time someone hit File|New Project over a decade ago?
When I was in the Army they used to through all sorts of crazy training scenarios at us. If the scenario stayed the same more than twice people would become bored and just sort of go through the motions. But the instructors rarely allowed that to happen. They would always throw in some little twist to keep people on their toes, and to make sure they learn a new lesson from an old training exercise.
I think far too many software companies I go into are just running the same exercise over and over. Sprint #142 we will do the following work. We will test it here, we will ship it there. They have no part of their team looking at what could be the next big disrupter in their field.
Now you shouldn't fixate on that disrupter, but you need to know what it is. I personally follow OS development (open source, and academic), language trends, mobile phone trends, compiler changes, app design trends, and the list goes on and on. Why do I follow such a broad range of tech? Well, truth be told, I am just a geek who loves tech. But that also makes me good at my job as a Technical Evangelist.
But really the edge it gives me when I walk into a company is amazing. I can talk to the company CTO about trends that are in a similar vertical to his and ask if that is something happening in his. Sometimes they were not even aware of the change taking place, other times the change scares them. Change is constant in the tech world. Embrace it. That doesn't mean starting over every year. But every 5 years you should look at your current tech products and ask yourself, "Would I build the same thing now that I built 5 years ago?" Would you change languages, tools, features, analytics?
If the answer is yes to any of those, what are you going to do about it? You can bemoan that the choices are made and you have no budget to rewrite it all. Or you can get started spending 10-20% of your time and budget on building V.Next of the software. ALWAYS BE IMPROVING. If you are not improving your system, it is dying. Every month with no new features, no new insight into how the tech is serving customers, is a wasted month. Those months add up. Pretty soon you are 10 years down the line and your only choice is to hit reset and rebuild from scratch. Technical debt can pile up until you have to declare bankruptcy.
I knew this before I started at Microsoft, but it is SO much more apparent to me now than ever before. A short list of the industries I have touched since joining Microsoft.
Every single one of them is really a software company. They may not see it that way, but what they are selling cannot be done without the use of a LOT of software today. I asked one CTO who thought tech was just a nice thing to have, "What would happen if I took away every PC you have in your factories for a year?" He sort of turned pale, and the replied nothing would happen after just a few days we would be at a total stoppage. Prior to that meeting he had put technology as "not important" for the companies future. Afterwards he said he was going to be seriously looking at where tech meets his manufacturing and how they can get it moving forward again.
Always strive to be growing in everything you do. Personal life and work life. I personally don't ever want to think about what happens if I lose the will to keep learning and growing as a person, or if I decide to stop growing as a technical evangelist either.
My oldest daughter and I came up with this game during Shark Week this year. This is her write up about the game.
Fish Food - Sharks gotta eat is a casual game to help pass time while mastering your hunting skills. You'll be playing as Sharky, who lives in a post apocalyptic time period when people dumped trash in the ocean so there is more "stuff" than food! Sharky remembers when the waters were clean and food was easier to find, but he must endure! Avoid objects that could harm Sharky while keeping his tummy satisfied with the little fish that swim in their schools. YUM!
Swim through the food filled seas while avoiding objects that can hurt Sharky. During these times of need, it is just Sharky by himself. he has nobody to protect him anymore, so you must maneuver carefully!
You will love fish food!
I will update this post once the game has been published on iTunes.
This morning I got an email from Apple that my Nextpeer enabled Infinite Asteroid Dash is now approved and in the store. Phew. That only took a few MONTHS of effort.
First, go to the Nextpeer site and make sure you have the most recent SDK from Nextpeer. Older SDKs are still be rejected from what I have seen. Update your app to the most recent version, when you submit I recommend in the notes to the reviewers section you add something about Nextpeer. I added a statement that I was introducing multiplayer through a third party product and included the link to Nextpeer. I told them that I have the most recent SDK from them that has been approved by Apple for use in games. Viola! It was approved (after only 7 days!).
For more information on Nextpeer visit their site, and read my previous post about how I am using them.
I have been having email exchanges with the nice folks at Nextpeer. See my previous posts about being rejected by Applefor more information about Nextpeer and why this was so frustrating. Apple had rejected one of my apps because of my use of the Nextpeer SDK to add multiplayer support. Nextpeer told me yesterday to update to the latest SDK and resubmit, Apple should approve it now. Should be interesting, because without multiplayer in the Asteroid Dash game it just isn't very compelling of a game. Competing against your friends score, or even random strangers makes it much more interesting.
Here are some screenshots of the current SDK. I really like that they added a new screen after playing. It is basically a screenshot of your last checkpoint before the end of the game, with your score shown! So now you can tweet it, or post it on Facebook to prove you really did get that score. Nice touch.
Well this week I finally have some good news! I now have not one, but two apps in the iOS store. The first one (American Classic Slots) went live about a week ago, and the second (Infinite Asteroid Dash) just went live today. I figure this is a good time to talk about some lessons learned, and explain some shocking numbers around income.
Infinite Asteroid Dash - This is a super super simple game where you tilt the device to avoid asteroids as long as you can. This was to teach myself some UIKit and learn the Objective-C syntax needed to do some of this stuff. The game is a success from that standpoint, it showed me a lot of things that I am changing in future titles.
American Classic Slots - This is another UIKit game that was quick and easy to build thanks to some template code. But I am flat out shocked at how much money this has made in just 7 days (more below).
Let's get the ugly out of the way now... Apple has a serious issue with the amount of time it takes to respond to submission failures. The Asteroid Dash app took over 7 weeks to get in the store. This is just silly.
I would wait an average of 7 days to get a response to a question. The rejections were always polite, and usually to the point. Of course they would stop at the first thing they didn't like, so you fix that and then go through the whole process again and again.
They had an issue with the fancy NextPeer SDK I raved about earlier. Despite that there are 2000+ games in the store using the SDK they have now decided they don't like it. I tried to argue my point and even gave them the company contact if they have problems with something they are doing, but of course that took 7 days to get a "not our job to fix your vendor" email. Much as I expected.
In the end I had to rip out all the multiplayer which I can only assume will kill this app as a fun game more than a day or two. Having your face books friends that you could challenge and play against was a lot of fun. Maybe NextPeer will get their stuff working soon so I can use them again.
Apple announced last week at the WWDC that they are adding videos to the App Store so consumers can see better what the app looks like while it is being played. This pretty much admits that the current store (images only) is not good enough. While I like the Android video feature, I really feel that having a good strong trial system is far, far better. Why make users go through buying an app and then asking for a refund? Just give them a trial of the app! If they don't like it they will have never bought anything and not need a refund.
Do you think this is a plan to keep more money by refusing refunds? I can't believe that is true. Maybe Apple does make a small amount of money off apps that people are unhappy with and don't raise a fuss. But don't you think that the barrier to spending money is so high that people just stick to free apps instead? I know people who will not spend ANY money on apps because they were ripped off for $0.99 one time. This seems incredibly silly to me.
Literally Windows Phone has had this ability since day 1. Trial apps make it so much easier for users to actually use the app before they buy. You can easily add a trial to a Windows Store app. Did this solve all the problems? No, people still prefer free apps. When I ask people why they don't buy apps on Windows Phone the answer is usually vague, or they still complain about being ripped off on that one iOS app years ago! Some users don't know the trial ability is in the platform. Others don't think to go look at paid apps, they just go to free apps first.
This is sort of a cult mantra among most developers. It seems everyone thinks that Casino games are just money makers. I don't know if that is true, in fact I doubt it, but I am willing to find out. I made a simple slot machine that is built using a totally different technology than my first app. Mostly because I wanted to play with UIKit and see how it worked. I figured it is sort of like XAML on Windows Phone and wanted to learn it.
This was a surprisingly fun app to build. This took me about 50 hours total including all the artwork. I bought a source package that included the basic framework from a tutorial site and then used that as a base to build upon. The graphics took me the majority of time, but I am pretty happy with how they turned out.
This app also adds the ability to earn achievements using the iOS Game Center system. It is surprisingly easy to add to your game, and I think those types of "game"ing for players is really effective. I don't know how many players on iOS care about their Game Center score compared to Xbox score for example, but it will be fun to find out.
I have never been so frustrated by a review system in my life. Submit app, wait random period of time ranging from 1-3 weeks get rejection letter spelling out a chapter and verse that you go read and it does not apply to your app...
I have two apps that have been through six rounds of rejection / resubmit cycles. In the first app the reviewer doesn't like the vendor I used for multiplayer (NextPeer).
I am using NextPeer because they have a great multiplayer SDK that makes it super easy to add a head to head style of competition in your game with very little work on your part. If no one is online it even replays a recent player to give the user the thrill of competing with someone else. I personally found this aspect to be the only reason I liked a couple of games, so I wanted it in this first super simple game I was writing. I figured even if the game was pretty boring that players might be a couple times to compete against someone else. If the player logs in with Facebook they can even challenge their real friends to a match, etc. I thought it was brilliant and want to add it.
Today I am launching a new experimental phase of my app development. I have officially submitted my first app for the iOS Store. I know a few of my friends will be freaking out at this point and thinking I have gone to the dark side. Slow down, take a deep breath and read on.
This is a REALLY simple game that I built over the course of a couple weeks to teach myself iOS programming first and foremost.
Part of this code came from a template I found online, part was written by me. Most the graphics I did using Microsoft Expression Blend, some were from art packs I have gotten from various packages. It was a fun project just to see how the "other" developers live in this world.
Well, I would say I am still learning a lot. I am amazed at how mature and immature the iOS developer market is at the same time. They have some amazing third party tools like NextPeer that let a developer add multiplayer to games with very little code. This is one thing that Windows Phone and Windows Store apps just do not support. And this is not the only one of this type of library, there are dozens of them.
At the same time I think the tools (specifically Xcode) are just so far behind Visual Studio as to be almost laughable. I have seen iOS devs that are lighting quick, but I wonder what those guys would be like with Visual Studio. Productivity is just so different. Small things like right click include that header for me, or find the correct library, are just missing.
I really love technology. I mean why else would I be an evangelist if I didn't love tech? I also work with a lot of really large companies as a part of my day job, and they are all going cross platform at this point. They are building for Windows Phone and Windows, but usually after they have their iOS and Android apps in play. I need to be able to speak to these developers on their terms, using their tools, etc. I also think that the future is going to be multi platform for just about any serious project. So I want to learn how to do it for my own apps as well.
I will be interested to see how many downloads simple games can get on each platform (I am doing another game for Windows Phone, Windows 8, iOS, and Android). I will be interested in comparing them for downloads, eCPM, in app purchases, etc.
I also see a huge value in actually going through each platform "end to end". Design, coding, deployment, ads, monetization, etc. How can you talk to others about it if you have never done it? So this is my low-friction way to get into all the stores and experiment while picking up tips along the way to help others.
This will not come as a big surprise to many, but I think maybe my reason why is a little different than most. Microsoft is missing that gateway device for kids that are too young to get a PC or a Windows Phone. Something like the iPod, iPad or Google Android tablet device.
This is usually a birthday or Christmas present, and they almost immediately switch all present requests to gift cards for their new ecosystem. Of course kids don’t call it that, they don’t know they have just made a major decision point in tech for their future. They just thought it was cool they had the same device as their friends.
Most of these devices are bought (rather then rented per the current US cell phone market model), so that makes them unique. Many parents are price sensitive to giving an 8 year old a piece of technology.
In my kids own classes during middle school the device of choice was the iPod. These kids would literally spend $100’s in gift cards on music, movies, TV and apps. Now normally you would think that is just what kids do, they spend money on short term thing like that. But now the bigger decision comes when they hit about 13 and go to get their first cell phone.
©2010-2012 Jason Short. All Rights Reserved. The opinions expressed herein are my own and do not represent my employer’s views in any way.