:::: MENU ::::

Nokia App Folders – Why I Think They Are Wrong

Today all the rage was about Nokia’s announcement about their App Folder app. This is essentially a way to group tiles into another tile and give it a title. Let us just establish that I am the biggest Nokia fanboy around, and I think the App Folder app not only is pointless, but it also encourages the wrong behaviour, which may damage the perception of the platform.

Apple and iOS, as well as Android, has had a similar feature for a long time, in act the first version was very similar to the App Folder app. This feature on iOS has now moved on and is must more polished. But it fits into a platform that is all about icons and more icons. They can be grouped.

On the Windows Platform it is a completely separate matter. The entire point, in my opinion, with the home screen is to be able for users to “glance and go”. I have said this over and over again, both in conversation and in my online courses: Live tiles on the Windows Phone platform is the single most effective way to engage your users and keep them returning to your app. If they don’t want to pin a tile to the home screen, then they use the list of apps. By allowing apps to be on the home screen, but not fully, and placing the app icons on a tile, the whole purpose of the home screen becomes polluted.

To me the appeal of the Windows Phone platform has always been that it was simple, intuitive (except for the back button) and predictable. Especially as a developer you can provide great value through a live tile by updating and customising them frequently. This is potentially lost now.

To comment briefly on the app itself, it is a very first attempt. It is not terribly intuitive, and it is really cumbersome to use. Because it is not part of the OS itself, you have to go into the app, then set up the tile, then pin it to the start screen. Unlike iOS you then can’t just tap to expand, but has to tap, tap, tap to get to the icons.

If you need the folders, then you are not understanding the thought behind the basic Windows Phone OS. Instead I would have loved to see a way to organise the long list of apps by for example category or by user choice. That would have been both useful and in line with the design of the platform.

Install App Starting Name Folder Select Apps Home Screen


Featured in the latest PSA from Pluralsight

Today the latest promotional video from Pluralsight was released. It takes form as a public service announcement (PSA) to highlight a world where everyone is a developer. It is pretty funny, and I just happen to be featured in it too. Check it out below

 


Building Quality Apps for Windows Phone

This post was originally post on blog.dvlup.com

With the rise of Windows Phone globally, mainly thanks to amazing Nokia Lumia devices, the number of apps has started to grow rapidly. With more than 200,000 apps in the Windows Phone Store, it is now more important than ever to build quality apps and distinguish yourself from the competition.

It is really important that the first time a new user tries your app they are amazed and impressed. Users have to feel confident that you can solve their problem, whether it is showing a list of nearby museums, taking a photo which puts moustaches on all the faces, or provides a list of recipes for a certain ingredient. Whatever it might be, there is no second chance for a first impression. If your first impression is not up to scratch, you might have one or more of the following unintended consequences:

  • Users will leave negative reviews, which can take a long time to balance out. We always want to start with positive reviews, and then build on that momentum
  • Amazing features lodged deep inside your app might not be discovered.
  • Download numbers will suffer.

There are many apps in the WP Store, and users can find an alternative to your app with a couple of clicks and a spare 30 seconds. If your app is not impressing users on a first run, they are very likely to just discard it all together. I know I have.

Make Every App Amazing – Right from the Start

Here is a list of easy steps you can use to ensure your new app is truly amazing from day one:

  • Use unit tests to ensure logic is sound and accurate (more on that soon). This can easily be set up when you develop your app.
  • Use a beta release to invite trusted users to help test and evaluate your product before a public release.
  • Use a logging framework such as Bugsense to capture any failures and events such as usage counters of important areas and features.
  • Provide a feedback mechanism for such as email or form from within the app, rather than only depend on reviews for feedback. Be responsive to your users, and act on their requests and feedback whenever possible.
  • Release many small enhancements on a consistent basis, rather than large overwhelming updates.

If you make these simple points part of your development plan and roadmap, there is very little overhead. It will become second nature to you, and the pride you will have in your product will shine through.

It really is a true win-win scenario for you and the users of your app.

If you want to know more about unit testing, integration testing, performance testing, error management and much more in that area for Windows Phone, watch my latest Pluralsight course on the topic, Windows Phone Testing and Error Management. It will make your app robust, reliable and successful.


Using Bugsense with Windows Phone – Part 1

When you develop and app for Windows Phone there is always an urge to get the project published and start making an impact on your future users. However, if you don’t make sure you have some visibility of usage and behaviour in the wild, it becomes a guessing game to enhance and maintain it.

Why Use a Logging Framework?

Once you have published you app, it is in the wild. You can decide which markets it is in and what types of devices, such as high powered and certain hardware requirements, but you can’t pick and choose the users that download it. Once you get that message saying your app has been published, you got to let your baby go. Or do you? One of the problems I have had, is that as well as you can test your project there is always that niggling doubt that you missed something or that a certain edge case will cause your app to break. I don’t like uncertainty, and when your app is in the wild that is pretty much what you are left with. How do you know when something fails? What can you do if the app does crash on the devices, displays the information incorrectly or can’t find that web service half the times it tries. With a traditional web application or desktop application you can monitor things and set up event logs. Further, how can you tell how often it fails? So not only might your app fail on a particular scenario, but how often does it happen? You need to know if it is a part of a critical path, resulting in a large percentage of failures, or if it is only in some obscure edge case, in order to prioritize the bugs you have to fix.

How can you know which features are popular and could benefit from being extended further? How do you update the project in the right places and with the most valuable features, if you are blind to how the app is used?

How can you manage the bugs that you do become aware of? How do you keep track of current and future bugs? There might be a number of bugs that come to your attention in various ways, but if you don’t have the full picture, you might be fixing inconsequential bugs instead of the real road blocks.

By being a developer for the Windows Phone platform you do get some help out of the box. You can use the Microsoft Crash Reports that are part of the Developer portal, which does give some indication of errors, but the information is only available for unhandled app process exceptions thrown.

 

Crash Report

Crash report from Windows Phone Developer Portal

You can get the stack traces from those crashes, but I have had apps crash that produced no reports and I only knew because users were telling me. You have no context, and relying on users to tell you what happened when the app crashed is like finding bitcoins at the end of the rainbow. You could also catch exceptions and events and store them manually in your own proprietary logging system, which a number of high profile apps do. But that is effort building a non-core part of your project and will waste time. Time you need to build features that will sell your app and give you that return on investment you want.

Bugsense

Bugsense Setup

What you need to use is an already existing logging framework. Introducing Bugsense. There are several plans with Bugsense, even a free one which is a great way to get started. Go and sign up for a free account now. Go. Do it. Done? Okay, excellent. Let us get started with the fun part then. Put your code hat on and away we go.

First create a new Windows Phone project, or choose an existing Windows Phone project you want to implement Bugsense into.

New WP8 Project

New WP8 Project

Next step is to install Bugsense which is done via a simple NuGet package update. Use either the Package Manager Console

Package Manager Console

Package Manager Console

Or the Package Manager Dialog in Visual Studio.

Package Manager Dialog

Package Manager Dialog

Next we need to add one line to the installation. Yes, one line. That is all. Open up your App.xaml.cs and in the App constructor insert the following

Insert Bugsense API key

Insert Bugsense API key

Now you are ready to start logging. Bugsense lets you log both exceptions as well as manual events for areas you want to monitor and log. You can also now remove the default unhandled exception handler, as Bugsense will take care of business for you.

Remove Unhandled Exception Handler

Remove Unhandled Exception Handler

That is it. You are now capturing exceptions with Bugsense. I could imagine you are after a bit more flexibility and functionality though.

Part 2 of this series on Bugsense will look at manual events and how you log custom information.


DDD Brisbane 2013

On Saturday 7 December I presented at the developer conference DDD Brisbane on my favourite topic of Windows Phone. Despite some flight issues I managed to get to QUT and deliver my talk Building Your First Windows Phone App. The audience was very keen to learn about Windows Phone, and there was a lot of great questions and discussions during the 60 minute session. I managed to convince most that Windows Phone is the superior platform and best opportunity for developers (at least if you ask me). The attendee with the best and most thoughtful questions I decided to give a brand new Nokia Lumia 625 generously sponsored by Nokia Australia. I also gave out Nokia Luna headsets and trial subscriptions to Pluralsight, so people can go watch my online training courses on Windows Phone.

Me explaining how awesome Windows Phone is.

Me explaining how awesome Windows Phone is.

The conference also had a special guest speaker in Scott Hanselman, who talked about all the new amazing features in Visual Studio and what is to come in the near future. Scott also joined a panel of Joe Albahari from Linqpad, Joel Pobar from FaceBook and Hadi Hariri from JetBrains in a panel Q&A session, which was very interesting and very unscripted.

Me and Scott Hanselman

Me and Scott Hanselman

I hope to join everyone at DDD Brisbane again next year and if you want more photos check out Bronwyn’s blog post. Thanks also to my awesome employer Kiandra IT for getting me to Brisbane and supporting my efforts in Windows Phone world domination.


Nokia Future Capture Hackathon Apps Available Now

In late August I participated in the Nokia Future Capture Hackathon in Lund, Sweden with 9 other teams of developers. We had all been invited and flown to Sweden based on ideas submitted on how to utilise the Nokia Lumia 1020’s amazing 41MP camera. The aim of the hackathon was to develop a concept of the idea and then present it to the Nokia imaging team. It was an awesome event.

And now, a few months later the apps are starting to emerge in the Store. Below are the top 3 apps from the event, which are all now available in the store.

Smart Resize

The winning app is now available in the Store for free! The Smart Resize project lets you resize photos and the algorithm in the app magically knows what the boring bits are, so you don’t have to. It is a very clever idea and well executed. You can even outline areas that cannot be erased, areas that have to be erased and apply filters to the finished image.

Available here.

Smart Resize  Smart Resize

Social Scene

This is a big undertaking by Jason letting users capture images at all corners of the globe in a collaborative way. It was the runner up at the hackathon. Social Scene lets all users create time lapse videos by recording the exact position of each scene, guiding new users to the spot at any time to contribute to the experience. The app is very well presented and polished, and is frequently updated with new features. Give it a go and create your own Scene.

Available here.

Social Scene Home  Social Scene Directions  Social Scene Profile

TapShoot

To address the issue of taking photos of yourself, Matt has built an app that lets you pair two phones and let one act as the viewfinder and the other as the camera. So you aim with one phone and can then see the image on the other phone so you can position yourself juuuuuust right. The idea doesn’t stop there though. Matt has built it in a way that you can control the camera from anything that uses his api, in fact Matt had the camera hooked up to a 200×200 pixel black and white smart watch. Very clever idea.

Available here.

Tap Shoot Guide  Tap Shoot Guide  Tap Shoot


First Pluralsight Course Published

This morning I published my first online video course with Pluralsight, titled Building Windows Phone Apps that Stand Out. It has been a long journey with an insane amount of hours spent writing, recording, editing and polishing everything off. It has given me an appreciation of how much work goes into producing high quality content for the World’s best hardcore developer training site, and I am immensely proud of the outcome.

Below is a small taste of my course, giving you the outline of the content. If you are a Windows Phone developer, this course will add that important knowledge gap of how you can make your app be awesome (and make you more money in the end).

So go ahead and check it out. You can get a free 30 day trial, so there really is no excuse to not start learning now.


A Guide to Choosing Native or Web for Mobile apps

As a consultant for one of Australia’s leading software development houses, I often come across the inevitable question from a client, when talking about mobile development: “should I have a native app for each platform I want to target, or should I just have one mobile web application”. Often the answer to that question is not that clear cut. In essence it depends on two factors, namely requirements and current technology.

You obviously always have to listen to the client’s needs and requirements, get to the core of the problem they are wanting to solve and provide a solution accordingly. With that in mind it becomes an exercise in fitting in to one or the other path to successful mobile app development. It is important to get this decision on native or web app right from the start, as it can be an expensive exercise to switch mid project. However, if you are prepared you can guide the client and inform them on the best choices they can make.

In essence it depends on two factors, namely requirements and current technology.

On the other hand you have to stick to what the technology can provide you once you start developing the product. You can of course push the boundaries, which we like to do at Kiandra, but there will be some limitations in whichever technology you choose.

Because this question comes up regularly, I developed a matrix to help myself, and the clients, out in determining whether to go native or web. It goes a little somethin’ like this:

 

Pros and Cons of Native vs. Web App

Pros and Cons of Native vs. Web App

It is meant to be a quick guide to identifying the pros and cons of each approach and help you choose the appropriate one in a particular situation. You have to take into account factors such as requirements, time and flexibility, but in general it is a great starting point.

For both approaches there are people who are for and against, and it is important you choose the solution that will get the job done in the best possible way. Don’t just chose an approach because it is the most popular at that moment.

If you have any other points that I have missed or would fit into the matrix let me know in the comments below.

First published at blog.kiandra.com.au

Top 5 Web Developer Browser Tools

In a world which increasingly relies on the internet for pretty much everything from funny pictures of kittens to complex Super Annuation calculations (ask @alexjmackey about fun with those), the modest web browser is not so modest anymore. Gone are the days of cumbersome web apps with full page reloads and spinning gifs (and who could ever forget <blink>Awesome Sauce!</blink>). Today web applications has to work on desktop, tablet and mobile formats. They have to work across all modern browsers (and sometimes in some archaeological ones too), be lightweight, responsive and unit tested.

As a software developer you have to be aware of all these areas when you set out to build the next web app of the future. You will most likely have specifications to build after, but what tools can help you really excel in your build process? Below I have listed some of the tools which have helped me nail some issues, or made some tasks much much easier. Let me know in the comments, if you have other tools that are awesome/interesting.

User Agent Overrides

Because the web is now available via pretty much every device with a screen, as a developer you have to accommodate all these different resolutions. You have to make sure your latest post on Estonian knitting looks awesome on a PC, a MacBook air, an iPhone, Nokia’s Latest Windows Phone and many other devices. All of these devices have different user agents, which tell the browser which device it is. The browser and, more importantly, the requested web site can then change it behaviour accordingly.

In Google Chrome you can access the user agent overrides via the Dev tools settings. Hit F12 and go to settings in the lower right hand corner (little cog).

Dev Tools Settings

On the settings screen select “Overrides”

Override Settings

Here you can override the user agent and the screen size. This is really handy to simulate all your target devices, and it actually works!

Similar functionality is available in Firefox via a plugin, or in Internet Explorer via the developer tools as well (that is via F12 too).

IE Overrides

Page Speed

One of the key ingredients to a successful website is performance. As the below infographic from StrangeLoop indicates, just a 1 second delay in page load time can decrease customer satisfaction by 16% and almost half of visitors will not return to a poorly performing site. On top of that web users now expect the site to work equally fast on mobile devices. Major sites like Google and Yahoo records increase in traffic in the millions for just getting fractions of a second faster page loads. Yes, page load and performance are truly important on all platforms.

Strangeloop Infographics

Fear not, Page Speed to the rescue! This add on to your developer tools in Chrome made by Google (there is also a FireFox version) instantly gives you an insight into yours or anyone’s site performance.

PageSpeed Start

Once you click on the “Start Analysing” button, the site will reload and all manners of metrics will be recorded. The really cool thing is that you don’t just get a bunch of numbers for sections or areas. All of the data is presented as suggestions on what to improve and how to improve it. Very cool.

PageSpeed Analysis

You can immediately tackle the high priority items, and prioritise the rest.

WhatFont

One of the pain points of developing smick looking web sites for your local Russian dance association is to deal with fonts. Fonts can be missing, they can be overridden they can be served from different sources. It all makes it complex to keep track of. WhatFont lets you inspect fonts on a page with ease.

WhatFont

Very simple, very easy to use. Makes the font task easy to handle.

Knockoutjs Context Debugger

There are a lot JavaScript frameworks around, and they can do vastly different things. There is the omnipresent jQuery, the pweetty and versatile three.js and the more interestingly named pyjamas and handlebars.

A framework I am starting to really get the hang of is Knockout. It is an MVVM framework, which makes all the JavaScript magic so much easier. Using a viewmodel, your front end code becomes very dynamic and updates through binding of properties. The problem with this is that all of the bound properties and code becomes hidden or obfuscated. Knockout Context Debugger to the rescue! This is a Chrome exclusive plugin that I was made aware of my @Nazulu.

Knockout Context Debugger

It installs as an extra section in your developer tools, which is accessible on the elements tabs. Select an element that has knockout binding to it, and watch the magic JS fairies populate your knockout context section. It is extremely valuable if you work with Knockout.

NHProf

Going hand in hand with performance of a web site is the server side response time. Often the backend of a website has some form of database interaction, whether you are storing recipes or the latest AFL results. If this database connection is slow, your site will be slow. A large majority of sites will be using an ORM to help interaction with the database. One of the more popular ORMs is NHibernate.

Although it is not a browser tool, I use NHProf every time I use the browser to optimise performance. NHProf is a profiling tool for the SQL executed on the database using NHibernate. Because NHibernate makes it difficult to see exactly what is being executed, optimising your NHibernate code is sometimes difficult. But with NHProf you can see exactly what was sent to the database and perform detailed analysis of the queries and results.

The licensing for NHProf is a bit on the expensive side, but the benefits are huge if you are serious about database performance.

NHProf


Top 5 Software Development & Software Management tools

Previously published at blog.kiandra.com.au

When it comes to tools for building software, there are about as many opinions as there are software developers (affectively known as code monkeys). Compiling a list of the top tools of any discipline within software building will be highly subjective. As such this list (well, there are actually two lists as you’ll find out) is a reflection of talking to a small sample of developers. These developers are all highly passionate about software and the creation of such, and all have their personal preferences. This article is not meant to tell you what you should use, but rather (hopefully) present new ideas and inspire you to try out alternatives. Take what you can use and leave the rest.

The first list of tools is leaning more towards the software crowd that has the business analyst or project management hat on. Having said that, all the tools in this list are very useful to developers as well. Chances are, if you are a disorganised developer your code will be disorganised as well. These tools could help organised your day, your project and your code.

Software Management

Any management of software building is complex. Acceptance criteria, customer expectations, development lifecycle, defects and unexpected events are all part of producing a successful outcome. For those task and more, below is a list of tools that can make your software management journey feel like a two week holiday in the <destination type=”dream”> Siberian Tundra.</destination>

Trello

Thought up by Joel Spolsky and his company Fog Creek Software, Trello facilitates easy collaboration between teams. Using a method known as Kanban, Trello has a series of boards which define various steps in a project. Boards contain Lists, which has a number of Cards on them. Cards, or tasks, are the basis for managing the finer grain of a project, and the cards are meant to move from list to list to monitor progress. Users are then associated with boards and can be assigned cards.

trello

The application of Trello is limited only by the imagination of the user. You have complete control of boards, lists, cards, who can see a board and who is doing what. You can attach photos, files and web links. You can tag and label cards for more categorisation and you can track changes to cards.

Top this off with a superb user interface that feels natural and straight forward. The learning curve is very mild.

JIRA

If you are working on projects that are just medium in size or are working in a medium sized organisation, chances are you have heard of JIRA. Built by Sydney based company Atlassian, JIRA is a one stop option for project tracking and task/issue management on any project. At the time of writing version 5 is the current iteration and offers the end user complete oversight of a particular task’s status, a project’s progress and everything in between.

jira

Just to test the flexibility (and because I am a developer, hence love cake) I once created a JIRA task for my business development manager to bake muffins. I tagged the task with the ingredients required, set the status to “blocker” and put a deadline on the task. The description allowed for some flexibility in the style of muffins and I even contemplated putting additional resources and cost estimates on the task too. The outcome was a healthy dozen muffins enriching my entire team’s day.

pm.stackexchange.com

Chances are that you have heard of stackoverflow.com, one of the largest technical forum sites on the interwebs. As part of the Stack Network there is pm.stackexchange.com, which is a portal for project managers in particular. Questions relating to project management are put forward, then answered and rated for relevance and quality, much like Stack Overflow.

pm.stackexchange

Podio

To organise team communication, business processes, data and content in project management workspaces, Podio supplies a web-based platform which is free to sign up to. You can also select business apps from an online app store or build your own as you see fit.

Being a relatively new service (started in 2011), Podio is very ambitious and does offer a great range of tools for managing leads, tracking job candidates, doing accounting and everything in between. It is a social take on project and team collaboration.

podio

As an aside, I don’t mind either that Podio is yet another quality software package to come out of Denmark. The motherland seem to have a lot of interesting products and ideas coming out in the last few years.

Zoho

The online office suite has been around for eons in web speak. Launched in 2005 Zoho offers a range of products including word processing, spreadsheets, presentations, wikis, bug tracker, chat, mail and much much more. They were one of the first to offer proper cloud office services, negating the need for software and hardware updates.

zoho

Software Development

The main mantra for a software developer is “why do something, someone else has already done (well)”. If there is a tool that makes your life as a developer more productive, makes you produce better software, allows you to refactor code easier, can massage your back while playing soft soothing music and feeding you snacks or whatever it might be, then we use it. There is always a better way of doing a particular task, and if someone offers you a shortcut to do that, then why try and invent the muffin tin yourself?

Cloud 9

If you are like me and always on the go, being in a car, commuting to work, at a client or spending time away from your normal work station in some fashion, then you will quite likely have come across the desire to have your work/pet project/library reading list app with you. Cloud 9 allows you to have a complete development environment within a browser. You can collaborate on projects with other likeminded developers and even edit in real time with another party. Pretty cool.

cloud9

The IDE in the cloud supports the most popular languages such as PHP, Javascript, SQL and XML. However, you also have support for the languages used less often such as Lua, Scala and SH. You get intellisense, code completion and integration with the most popular cloud services, such as Windows Azure, heroku and Cloud Foundry.

Live.js

Ever had to edit CSS or Javascript, then view it in the browser to see your change? The typical workflow is something like

  1. Load browser to see what is broken/needs fixing
  2. Open up the file to edit
  3. Save change
  4. Alt+Tab or click on browser window
  5. Hit F5
  6. Observe change

With Live.js you get to skip step 4 and 5. A small piece of JavaScript will automagically update your browser to always show the latest HTML, CSS and JavaScript. It is efficiency++.

BrowserStack

As a web developer testing your work in a plethora of different browsers is always arduous. Not only is it easy to skip over the browsers with little use, but even more importantly, where do you get access to IE version 6 or Firefox version 13. And not only that, but you have to test on Windows XP, Windows 7 and Mac OS Mountain Lion. Welcome to the party BrowserStack. These guys have made the effort of keeping around almost any modern(-ish) browser/platform combination you can think of.

BrowserStack1

BrowserStack2

It is a truly invaluable tool if you want to make sure you have all your bases covered. Every new browser and platform combo is spun up in a new Virtual Machine, so you have your own instance. You can set up a secure tunnel, so you can test your local html and design on the remote server.

ReSharper

It has almost become part of the default toolset for web developers working with the Microsoft stack to use ReSharper. A lot developers I talk to almost can’t use Microsoft Visual Studio now without this comprehensive productivity tool. Just to name a few features, ReSharper will give you real time code analysis, keep you compliant to agreed coding standards, search huge datasets and thousands of files instantly, code refactoring with ease, code cleanup, multiple refactoring tools and oh so much more.

ReSharper1

Chances are that your productivity as a developer will increase significantly, but that is not the best bit. ReSharper takes care of all the boring stuff, such as renaming “cat” to “kitten” in your Fantastic Feline application (@alexjmackey has written that one), so you won’t have to. The team at JetBrains has put a lot of effort into making sure you don’t do the boring repetitive tasks of old grey beard developer days.

ReSharper2

 

<tool>your favourite</tool>

As I said in the beginning, this list is highly subjective. This last item is your chance to let us know what your favourite tool is. Fill in the comment below and tells us your favourite tool and why you think it is valuable. It can be anything, as long as it doesn’t involve ducks. Ideally it should be something which improves the dramatically interesting live of developers.

Give it your best shot. I want to know!!