My New Adventure as an Independent Mobile Developer in Atlanta

It's official - I've quit my day job.

I can remember ~10 years ago talking to my buddy about how one day we would be able to write killer apps that would run on our phones. At the time I had just picked up a Danger Sidekick - in many ways a predecessor to the iPhone (in fact it was started by a former Apple employee, who later went on to start Android as well). The phone had apps - like AIM, and MSN Messenger, and Telnet - and you could get them out of an app store - a revolutionary concept at the time in the largely pre-touch world. We imagined that one day they would allow 3rd party developers to write apps - no more creating boring desktop apps - we would be at the forefront of people's daily lives.

Fast-forward 10 years, and that has all largely come to fruition. I've been lucky to be a part of the mobile revolution that we've all witnessed these last several years writing mobile apps for folks like Microsoft, Home Shopping Network, Tesco, and others. While I've developed several mobile apps and games both professionally and independently, I have never been in a position to purely focus on mobile - and I wanted that to change.

As of a month ago today, I left my job at IQ as Director of Technology. To say that was a tough decision would be an understatement. Working at IQ, a digital agency in Atlanta, I was around some of the smartest folks I've ever worked with - from user experience gurus, to creative talent which continuously blew me away, to my own team of diverse and incredibly talented coders (big shout outs to our PMs and Account folks as well). It was unlike anywhere I'd worked before - and I largely give IQ credit for my evolution in the last 3 years from a mindset of a front-end-leaning developer, to one that sees opportunities and has the guts to go after them. It sucks that pursuing my dreams must come at the cost of me having to leave IQ - but I am very happy that transition has gone well, and that I have their support and well wishes.

So, what exactly does this mean? Well, for the short term it means that I'm getting back to full-time development. For the last 30 days I've largely locked myself in a room and been designing and coding. By this time next week you should see the results of those first 30 days - a game for Android which I created from scratch entirely by myself. The upcoming 30-60 days I will largely focus on Windows 8 development in preparation for the release of Windows 8, and more importantly the Windows 8 Store. Depending on how these first two ventures go, my plans may of course change, but tentatively my plans then move on to learning iOS to develop for iPhone/iPad - something I've been putting off for way too long. My goal being to round out my mobile knowledge, and to be able to develop for all the major players equally well by year-end.

My longterm goal? To be an independent mobile developer that can bring multi-platform apps and games to businesses that can't afford to hire 5-10+ person teams to create their own apps. In the mean time, it's my job to prove what I can do with various independent projects. My mantra succinctly has turned into "All Mobile Everything" - and that's what I plan on living by as I start out on my own. It's going to be a fun ride - one in which I'll probably learn a lot. I hope you'll stay tuned and help continue to support my efforts. If you'd like to get in touch, feel free to use the contact link on SmartyP.net.

Best wishes.

Facebook's Emerging Mobile App Strategy

In case you didn't know, there's money to be made in mobile. Not necessarily by mobile developers like you and me, but most definitely by the app stores that collect their 30% off the top. With Apple posting revenue in the billions from their app store, it's no wonder folks like Amazon and Samsung have entered the app store business as well. Who has been notably absent is Facebook.

Obviously a mobile app store probably isn't something that would make a lot of sense for Facebook, but with Facebook now getting more visits from mobile than desktop, it would only make sense for them to try and capitalize off all that mobile traffic - and it looks like they have found a pretty smart model.

(click 'read more' below to continue)

Getting Started with Adobe Brackets

Adobe Brackets is an open source editor for open standard web languages (html/css/js/less/etc). It is totally free, and is a pretty exciting editor to try out. While Adobe says the editor isn't quite ready yet for prime-time, it can be a great tool if you are looking for a free open standards editor for web development. Written itself in html/css/js/less, Adobe Brackets aims to be incredibly extensible and is looking to build a community of contributors through GitHub.

(click 'read more' below..)

Off Topic: Photoshop Cleanup Timelapse

I find cleaning up and editing snapshots to be quite fun and a good break from the world from time to time. I recorded a quick Photoshop cleanup job the other night and posted it to my Youtube channel. It's not exactly coding related - but hey, this is my website right? ;)

(click 'read more' below..)

Second Phase of the Reboot of SmartyPantsCoding.com

This weekend I rolled out large parts of the second phase of the reboot of SmartyPantsCoding.com. This time around the primary changes all centered around the homepage. You'll notice now that the homepage of SmartyPantsCoding.com serves as a central hub to all of my creations (apps, games, etc.) I have out in the wild. The homepage also teases the last two blog entries, with the full blog now residing at SmartyPantsCoding.com/blog.

You'll notice the new homepage is also built as a responsive layout, so it should look great on any device at any size - something I'm pretty excited about. There are some issues left, specifically around the background and how it scales on iOS and HP Touchpad tablets, but expect that to be fixed in the coming days.

Subscribe to me on YouTube

One of the other changes I made was to rename my Youtube channel from SmartyPantsGaming to SmartyPantsCoding as part of my ongoing efforts to consolidate everything under one roof. Unfortunately, the only way to do this was to close the old account and open a new one. I plan on investing a good bit more time in creating video based content going forward, so it was best to tackle this now before I get started. Please take a minute and subscribe to my new channel, there will be new video content being added later this week.

There are a bunch of smaller tweaks that were rolled out as well - you may notice a few of them while looking around. The relaunch of the product-centered homepage was the primary focus for this phase. While I still have a long backlog of things I plan on improving on SmartyPantsCoding.com, the main changes to the overall site structure are done at this point. You'll see new features rolling in over the coming months - but for now, the main focus is to get back creating great content for readers like you - stay tuned!

First Phase of the Reboot of SmartyPantsCoding.com

I'm very happy to report that today I've deployed the first set of changes for the reboot of SmartyPantsCoding.com. The changes pushed today are a first step towards a larger set of changes coming to this site in the future. I have quite a list of changes that remain (some of which I'm very excited about) but I wanted to get the new theme rolled out so that I can get back to blogging on the work I'm doing. This site will remain primarily a blog, but expect other sections to appear later focused around promoting the various creations I have out in the wild.

One of the main things you'll notice today is a new overall look to the site. I built this new theme using CSS3 media-queries for a responsive layout, so the new theme should work well across all devices - something I'm pretty excited about. I'm looking forward to other pages being added in the next phase which will benefit from the responsive grid. This new theme is built on top of Twitter Bootstrap - a fun piece of kit. Getting the Twitter bootstrapper to play nice with Drupal wasn't the simplest, but thanks to the Lullabot Bootstrap theme it wasn't too bad.

The next big thing on the list is the new logo for Smarty Pants Coding. Gone is my awesome mug-shot, and in its place is an even more awesome caricature of my inner-coder. This new logo speaks a lot to me and who I am, so I hope you like it as much as I do. Expect to see this guy on all my work going forward. I'd like to give a big thanks to my friend Larry over at ecdesignco.com for doing the awesome illustration work.

Now that this first big update is out of the way, I'm looking forward to having a place once again to blog about my various coding adventures. I have a handful of projects that are on my list, and a growing list of ideas for content around web development, mobile development, and other surrounding topics - I plan to get back to releasing new content soon.

If you find any issues in using the new site, please send them in through the contact link on the about page, or over on Twitter. In the mean time, I have some THPS HD to catch up on.

SmartyPantsCoding.com Reboot Coming Soon

You might have noticed that this blog has been dead as a doornail as of late. It's hard to believe it's been over a year since my last blog posting. Things have changed quite a bit since the inception of this blog - 4 years ago this week. I wanted to write a quick blog post to close out this first chapter of SmartyPantsCoding.com, and talk a bit about the next chapter and the changes that will be coming as the site gets a much needed reboot.

This blog started back in 2008 when I decided I wanted to learn WPF (mostly XAML) and dove head first into it - I wanted to blog my efforts to help others trying to learn the same thing. I later moved on to Silverlight, and even became a Silverlight MVP. Later I became focused on Windows Phone - the new frontier for Silverlight - and ended up working on a handful of apps for the platform ranging from personally developed games to apps for large brands through the agency I work for. After that there was a little snafu with my app Imagewind being banned from the Windows Phone marketplace - and that was pretty much the last time I blogged on Silverlight, Windows Phone, or anything else for that matter.

Part of the reason I stopped blogging was that my position at work went from a development position to a director position. I was no longer coding in Silverlight everyday, and was now overseeing projects across a wide range of technologies including HTML/CSS/JS, Flash, PHP, and Android just to name a few. Making this change in my professional life while at the same time seeing Silverlight (and Flash) essentially die on the web made me pause quite a bit and reassess where I wanted to invest my development efforts going forward. A few months ago I won 2nd place in a Samsung development contest with MazeRacer - my first Android game. I've also been doing a lot more in the HTML/CSS/JS space lately as well - and I'm looking forward to blogging about some of these topics soon.

I'll be rebooting this blog with a new design and all new content focused on a wider variety of topics soon. The homepage of SmartyPantsCoding.com will become more of a focus on the various creations I have out in the wild while the blog will remain development centric and contain updates for the various apps and games I have as well. I will likely merge in all the content from SmartyPantsGaming.com and unify everything under SmartyPantsCoding.com going forward to make things a bit simpler. You will see a slow roll out of the changes over the next month or so - while that happens some things (ex: comments) may not work. I look forward to sharing more of my coding adventures with you soon, and I hope you'll stick around for the ride.

Publishing a Windows Phone App? Enter to Win a Free Windows Phone

Have you published an app to the Windows Phone marketplace recently? Are you about to? Have you got 4 apps already in the marketplace?

There is a contest going on right now until June 30th to win a free Windows Phone 7. All you have to do is get an app into the marketplace, and fill out a simple form. Each time you release a new app you can submit another form and increase your chances of winning. I don't have exact numbers, but my understanding is that the chances are pretty good. If you've already got apps in the marketplace then use those for the contest as well.

R.I.P. Imagewind for Windows Phone [Update - It's gone]

R.I.P. Imagewind for WP7: 3/16 - 3/30

After being in the Windows Phone marketplace for just two weeks, I am very sad to say that Imagewind for Windows Phone is going to be pulled from the marketplace tomorrow. If you are reading this on March 30th, then you can act quick and grab it before it is gone.

I had a concern all along that Imagewind might not make it through marketplace approval, which is why I submitted a simple beta version of it in late February to test the waters. On March 3rd that version of Imagewind was approved, and I immediately doubled-down and invested more time into making Imagewind hot. After two straight weeks of late nights, and spending a few hundred bucks on design and website creation, Imagewind was re-submitted and approved on March 16th.

Since its release Imagewind has been doing great in the marketplace with 17 reviews and an average rating of 4 1/2 stars in just two weeks. In fact, just today Imagewind broke over 1 million images displayed across all Windows Phone users.

About 10 days ago I submitted an update to Imagewind which added pinch/zoom support and search abilities. After 10 days of no results from the marketplace approval team, I started to worry that maybe the search ability was pushing the boundaries a bit too far - I didn't however expect to get a notice this afternoon that the app was going to be pulled from the marketplace altogether:

Imagewind - app unpublish request
[..] While the images shown are dynamic, per your app’s disclaimer, a portion of the images’ content is too graphic for the app to be permissible in Marketplace. In order to be permissible, there would need to be a content filter before surfacing images since users are not querying a specific type of image and are rather pushed to them.

Given this, we ask that you unpublish your app within one business day until you are able to modify your application to comply with the certification guidelines.[..]

Thank you for your understanding in the matter, and we will hope to see an updated version soon.

Windows Phone Marketplace Policy team

Since Imagewind is entirely based on live unfiltered images from Twitter, there is no chance of me ever being able to comply with the policy team's request short of hiring a team to monitor and filter images 24/7. This rejection draws the line in the sand for what is and isn't allowed on Windows Phone, and it paints a distinct difference between what is allowed in the iPhone app store and the WP7 marketplace.

The screen above shows a common warning in the app store for iOS devices. Anytime an app brings in data from the web which could contain questionable content, you have to approve this warning. It is a bit ridiculous in that all Twitter clients, the Opera web browser, and even Wikipedia apps all have to show this warning - because they could show questionable content.

The Windows Phone marketplace doesn't have a warning like this yet, so I created my own shown every time Imagewind launches:

Unfortunately my warning won't cut it, and the marketplace won't currently allow an app like mine. The wording in the marketplace notice seems to suggest that it's not a problem that questionable content can be displayed, but that the questionable content is displayed without the user explicitly requesting said questionable content ("there would need to be a content filter before surfacing images since users are not querying a specific type of image and are rather pushed to them."). I am hopeful to work out some way to get Imagewind back into the marketplace, but I have little hope currently.

It is worth noting that the iOS marketplace would in fact allow Imagewind, and has another similar app already called Pingwire (which has apparently been covered by CNET, BBC, and The New York Times). Unfortunately as of now, such apps aren't within Windows Phone marketplace guidelines.

You can find the XAP for Imagewind v1.1 attached. If you are a developer and can side-load apps please continue to enjoy it. Hopefully the ads served up by continued usage can help me recoup my investment which is now all for naught.

It should be noted that I'm not totally ticked. I understood in the beginning it might be rejected for just these reasons. My biggest complaint is that it was approved twice before, and it is only now being rejected (and removed) after adding new features via an update. Had it been rejected on the beta run in early March I would've cut my losses then - that's why I submitted such an early version.

Please leave a comment on your thoughts regarding this policy. Obviously there is still room for the Windows Phone marketplace to improve, and maybe this can be one place to push for some changes.

[Update 3/31/2011 1:14pm EST]
I emailed back and asked for an extended grace period while the policy team and Brandon Watson talked about the app being removed. I am hopeful something good will come out of their discussions - like a way to get Imagewind back into the marketplace. Until I hear back from them Imagewind will stay available. Stay tuned.

[Update 4/1/2011 11:45 EST]
Unfortunately I got notice tonight that after further review the marketplace policy team are sticking with the decision to remove Imagewind from the marketplace. I only got about 60 minutes of notice to remove it myself, which of course happened at 7pm EST on a Friday, so it was removed for me, which means all 25 5-star average reviews are now gone forever. I guess if the app won't see the light of day in the marketplace then that doesn't matter much anyways. For what it is worth, I still haven't been contacted by Brandon Watson, so I don't really have any more insight as to if I have any further options here. My best bet now is that until marketplace regulations change, Imagewind won't be allowed in the marketplace. Perhaps most disappointing is that it could have been released in the iOS or Android marketplaces - but for now it can't be in the WP7 marketplace.

R.I.P. Imagewind for WP7

I guess for now Imagewind will continue to reside at imagewind.net in an online version, and folks who can side-load apps can continue to grab the .xap file attached to this post (and eventually at imagewind.net/wp7). I'm hoping that despite this rejection, Imagewind for WP7 will continue to thrive with folks who grabbed it before it was removed, and from folks willing to side load it. I guess now I'll start the journey of getting Imagewind on other mobile devices.

Examples of WP7 Marketplace Certification Failures

I have now made it through a baker's dozen Windows Phone Marketplace certification attempts for SmartyPantsGaming, and thought I would share the various ways in which I've failed in my apps. I generally think the best way to learn is to learn from your mistakes, but learning from someone else's mistakes is even better - so here is a rundown of ways I've failed WP7 marketplace certification so far.

The back button should close popup windows
In the release of Matchingo Free we received an app rejection because the name entry dialog popup could not be closed by pressing the back button.

If the current page displays a context menu or a dialog, the pressing of the Back button must close the menu or dialog and cancel the backward navigation to the previous page.

To fix the issue I setup a boolean flag to keep track of when the name entry dialog was open, and then override the back button event. If the dialog is open and the back button is pressed then I cancel the back button event so it doesn't continue to bubble up, and close the popup window. Here is the code block:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    if (IsNameEntryPopupOpen)
     e.Cancel = true;

(click 'read more' to keep reading..)