1
2
3
4
5
6

Deck from 'Practical Mobile UI / UX for Developers' Talk at the Atlanta Mobile Developers Meetup

I was lucky enough to get to present at the Atlanta Mobile Developers Group earlier this week where I talked about sketching, wireframing, and other user experience and design subjects relative to turning your mobile app idea into a fleshed out app ready to be developed. I've uploaded this slide deck to SpeakerDeck.com, you can find it here or via the image below.

Thanks to everyone who sent in kind words or stayed after to talk. If you're looking for help with the strategy of your mobile app, or help turning your mobile app idea into a reality, check out my mobile app development company All Mobile Everything.

Slides from 'Monetizing Mobile Games' Talk at the Atlanta Code Camp 2013

I had a great time this weekend at the Atlanta Code Camp where I had the opportunity to give a talk on Monetizing Mobile Games. I've just uploaded this slide deck to SpeakerDeck.com, you can find it here.

Thanks to everyone who came out and chatted afterwards. Building up an app network is a lot easier when you know other folks also trying to get started in mobile games - so stay in touch!

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)

Choosing Between Silverlight and XNA for a Windows Phone 7 Game

In my last blog post on XNA for Windows Phone 7 I said that I was working on a game in both Silverlight and XNA, and that if I got a chance to test out performance I would report back. As you can see in the image below, I got a chance to test out my Silverlight game on a real device last week at ReMIX Atlanta - so this post is to cover some insights gained.


me testing my game prototype on a Windows Phone 7 device

First off, if you are trying to get a basic understanding of when to choose between XNA and Silverlight for WP7, you should take a look at this post by Michael Klucher. Michael lays down the basic differences between the two platforms - Silverlight has great controls with great tool support for styling them, and XNA has a crazy fast sprite rendering pipeline which supports full 3D.

But, let's say that you don't need controls for your game, and you don't need 3D - is Silverlight good enough for writing a basic 2D game? After playing with a device briefly last weekend I can tell you the performance of Silverlight on the device looked great - but you will need to analyze the game you're creating a bit before making the ultimate decision.

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

Using the Facebook Developer Toolkit With Windows Phone 7

A couple of people have noticed that the Facebook Developer Toolkit doesn't work on the current release of Windows Phone 7. The primary reason is that it has a dependency on System.Windows.Browser - a library which isn't in the WP7 runtime (Silverlight isn't hosted in a browser on the phone).

I took the source from the Facebook Developer Toolkit and hacked at it until I got it to work on the phone. Here is a quick demo showing it working in the WP7 emulator:

(click 'read more' for more on how this was done..)

Example Pivot Control for Windows Phone 7

I know I said I was done trying to recreate the Pivot control, but I'm happy to be able to share a standalone Pivot control that I've been working on. Keep in mind that a real Pivot control from Microsoft should eventually be released, so this control is not intended to be used in your final production code.

First, download the attached SmartyPantsPivotLibrary_Release1.zip, extract it, and add a reference in your project to SmartyPantsPivotLibrary.dll. Next, add a reference in your MainPage.xaml to the library like this:

xmlns:spcoding="clr-namespace:SmartyPantsPivotLibrary;assembly=SmartyPantsPivotLibrary"

Next, add an instance of the PivotControl inside of the ContentGrid in your MainPage.xaml:

        <Grid x:Name="ContentGrid" Grid.Row="1">
            <spcoding:PivotControl>
                <spcoding:PivotControl.PivotPages>
                    <spcoding:PivotPage PageTitle="main">                        
                        <spcoding:PivotPage.Content>
                            <TextBlock>main section goes here</TextBlock>
                        </spcoding:PivotPage.Content>
                    </spcoding:PivotPage>
                    <spcoding:PivotPage PageTitle="options">
                        <spcoding:PivotPage.Content>
                            <TextBlock>options section goes here</TextBlock>
                        </spcoding:PivotPage.Content>
                    </spcoding:PivotPage>
                    <spcoding:PivotPage PageTitle="about">
                        <spcoding:PivotPage.Content>
                            <StackPanel Orientation="Vertical">
                                <TextBlock>about section goes here</TextBlock>
                            </StackPanel>
                        </spcoding:PivotPage.Content>
                    </spcoding:PivotPage>
                </spcoding:PivotControl.PivotPages>
            </spcoding:PivotControl>
        </Grid>

As you can see by the XAML definition above, you are basically adding a PivotControl, and then populating PivotPages with multiple PivotPage entries. A PivotPage is defined as having a PageTitle property (what appears across the pivot menu across the top) and a Content property (what shows up in the main content area for each pivot page).

One other thing you may want to use are two events that tell you when the pivot pages are being dragged around - by listening to these events you can make sure the user doesn't accidentally click on something while changing pages (more on this in the video below):

MainPivot.PivotPageMoving += (s, e) => { _ignoreClicks = true; };
MainPivot.PivotPageDoneMoving += (s, e) => { _ignoreClicks = false; };

Below is a quick video showing how to use the control and discussing a bit more about it, you'll find the example project attached to this post:

As a side note, I have been unable to get this control to work in a large project I had already been working on - for some reason an unhandled Application level exception occurs after changing pages from time to time - unfortunately the exception provides no details and the call stack only shows internal methods. So, this control is provided AS IS - I won't really know how well this works until others try and use it. I also am not committed to maintaining this control, but if you improve on the code and would like to have the code posted updated please feel free to let me know.

Creating a Windows Phone 7 Metro Style Pivot Application [Part 3]

This is part 3 - the final part - of how to create a Pivot style application for Windows Phone 7. Attached is the sample project and code for this example.

The screencast starts off in Blend and shows how to create the endless pivot menu across the top. After that the screencast dives into the code hooking up our new pivot menu and changing how the content area works. The last 15 minutes or so of the screencast is a bit long winded, but talks about issues you might run into when trying to use this code in a more feature rich application.

After using this method of creating a Pivot style application for a project for my employer, I've decided that hand rolling one of these things is way too much of a pain. I hope these videos will help those of you who can't wait for the real Pivot control release, but be aware that the devil is in the details for this approach - and there are a lot of little details. It's also worth noting that if I had to do it over again I may have made use of WriteableBitmaps to prevent some of the accidental interactions that can occur when you have interactive elements inside of a pivot page.

On a side note, while working on this screencast and trying to make use of the Pivot in an application I also attempted to create a standalone Pivot control. Unfortunately I could never get it quite stable enough, and after spending so much time on these screencasts I don't have any desire to revisit it and try to get it working - perhaps that will change if the real pivot control still hasn't arrived in another month or so. In the mean time, I've got some WP7 applications and games I want to get to work on.

Preview of My Current Windows Phone 7 Pivot Work

I got some feedback after part 1 and part 2 of how to create a Pivot style for your Windows Phone 7 application - what I had created had a few issues. First, the pivot menu items across the top of the screen is supposed to be an endless scrolling menu. Second, there wasn't supposed to be an overlay of each pivot page on the edge like there is in the Panorama style.

I took a closer look at exactly how the Pivot control should look and interact. In the process I noticed that the Zune HD's pivot menu is actually different - it doesn't have an endless menu across the top. I also noticed that the menu on my AT&T U-Verse box uses the pivot style as well (not surprising, it runs on a Microsoft Media Room) - and it doesn't endlessly repeat either. The only way I could try and figure out exactly how it should look was by looking at the hacked ROM that showed up on the web right after MIX.

Above is a video of my current Pivot app (on right) working very closely to what can be found in the Photos application in the hacked WP7 ROM (on left). This was built by modifying the code from Creating a Windows Phone 7 Metro Style Pivot Application [Part 2]. I was hoping to get the code posted before heading out of town, but there is still some tweaking left to do - I will be posting a part 3 sometime next week.

Creating a Windows Phone 7 Metro Style Pivot Application [Part 2]

Note: It has been noted that this demo and code more closely follow how to create a Panorama style application than a Pivot style application. I hope to fix that in the next part to this series - sorry for the confusion.

This is part two of how to create a basic Windows Phone 7 application that follows the Pivot style of navigation (you can find part one here). Part two of this screencast is focused on using manipulation events to provide gesture support for the Pivot style of navigation.

(click here to go to Vimeo and watch in HD)

In the screencast I reference a few other posts on this same topic, you can check those out here:
[WP7] Create a panoramic view using Silverlight
Panoramic Navigation on Windows Phone 7 with No Code!

The code from this step of the app can be found here. Please leave any suggestions about the code and/or update it yourself - I may or may not be updating it going forward depending on other solutions that come about. I hope to continue similar screencasts over the coming weeks/months, and would definitely appreciate any feedback on how to improve these going forward.