Universal App Tutorials Part 17 : Background Tasks

UWP apps, like the Windows Phone 7 and 8 platforms before them can have Background Tasks, while a background task for the Morse Coder app might not be enormously useful at this stage, let’s take a look at how to create one.  In a further post we will look at updating the Live Tile from our Background Task.

Outcome

By the end of this post we’ll have a Background Task running on a schedule.  It won’t do anything, but we will have set up the permission in the manifest, created the project, and our task class and registered it with the application.  We will then be ready to implement the task.

Continue reading “Universal App Tutorials Part 17 : Background Tasks”

Eager Instantiation of ViewModels with MVVM Light Messaging

Dependency registration in SimpleIoc, by default uses Lazy Instantiation, meaning the object won’t be created until it is requested, in this case, via the property on the ViewModelLocator class.

Due to configuring subscription of a message type in the Constructors of my ViewModels in MVVM Light I recently came across a situation whereby messages were being published prior to them having been subscribed to, meaning that the messages disappeared into the void unhandled.  The ViewModels relating to the pages I had navigated to were available in the ServiceLocator, but the pages that I hadn’t navigated to were not being instantiated.

Continue reading “Eager Instantiation of ViewModels with MVVM Light Messaging”

Universal App Tutorials Part 16 : Styles

Using Styles to create a consistent User Interface is generally considered to be a best practice.  In much the same way as CSS is used on the Web, Styles in XAML provide a similar development experience.

Outcome

By the end of this post we will have implemented a Style to target our About and Settings Buttons on the Home Page. removing some of the duplication in the XAML definitions.

Continue reading “Universal App Tutorials Part 16 : Styles”

Development Team Leadership : First Steps Part 9

Identify Bottlenecks

It’s important to be able to take a top down view of your team and it’s bottlenecks, internal and external.

bottleneck.jpg
Bottle Neck

External

For example, the inputs to your sprints “should” be nailed down when planning, you might need:

  • a data model definition;
  • web service schema;
  • validation use cases;

…the list goes on.

If they consistently aren’t appearing on time, this is a bottleneck hampering your productivity.  It’s important to raise the alarm. Continue reading “Development Team Leadership : First Steps Part 9”

Universal App Tutorials Part 15 : MVVM Light Messaging

It’s often necessary to “inform” other areas of an application of changes that have occurred.  This can be achieved through Messaging.  In the previous tutorial we created a Settings page and made the TranslationDirection Configurable.  It would be nice if the Main View Model knew about our new Translation Direction setting, let’s look at how we can achieve this.

Outcome

By the end of this tutorial we should have implemented a SettingsChangedMessage, subscribed to it from our MainViewModel and Published it from our SettingsViewModel. Continue reading “Universal App Tutorials Part 15 : MVVM Light Messaging”

Universal App Tutorials Part 14 : Settings Page

Applications generally have a settings page, or similar allowing the user to configure the application.   We laid the groundwork for making the Translation Direction setting configurable in the previous post, let’s look at putting that in to practice.

Outcome

By the end of this tutorial we’ll have a really basic Settings Page, 2 Buttons allowing the user to pick between Morse to Alphabet and Alphabet to Morse, and a TextBlock displaying the current Translation Direction. Continue reading “Universal App Tutorials Part 14 : Settings Page”

Universal App Tutorials Part 13 : Custom Enum Attributes

Most applications need a settings page to allow a user to configure how they wish to use your application.  In this tutorial we’ll start to look at making the Translation Direction configurable.  We’ll shortly be adding in a Settings page, but there’s some groundwork required before we begin.

Outcome

By the end of this tutorial the Translation Direction Attribute should have a custom Display Attribute associated to it, allowing for the associated display string to be displayed on the view via a Value Converter, which will look up the display text for a given enum value. Continue reading “Universal App Tutorials Part 13 : Custom Enum Attributes”

Universal App Tutorials Part 12 : Universal App Reviews

One of the most compelling reasons to download an app is the number of Universal App Reviews in the store.  This tutorial will look at adding a Review App Button to our completely empty About Page.  There are various places you can surface the Review App Function, commonly it’ll be available on an About or Info page, or you may choose to have a Review Reminder.  As with a number of things with UWP apps, the Universal App Review Method changed slightly from Windows Phone 8’s MarketPlaceTask, let’s take a look…

Continue reading “Universal App Tutorials Part 12 : Universal App Reviews”

Development Team Leadership : First Steps Part 8

Constructive Criticism

Something I’ve seen many people struggle with is the ability to take constructive criticism, and inversely offer it.

Giving Constructive Criticism

I’ve previously recommended being free with advice.  An extension to this, and a vital leadership skill is the ability to critique a colleague’s work without causing offence.  Obviously being rude about someone’s work will alienate them and earn you no favours, but it’s often the case that a colleague won’t quite have understood the direction in which you wanted them to head with a certain task.  There’s a couple of things personally you can take from this : Continue reading “Development Team Leadership : First Steps Part 8”

The Star Wars / Software Development Paradigm

In preparation of Star Wars Episode VII – The Force Awakens, I, like many others are watching the other 6 films.   An experience I am inflicting on, sharing with my partner with mixed success.

123 vs 456

My partner had never seen Star Wars Episodes 1, 2 and 3 (lucky her you may say, I might agree), and was actively against the idea of “wasting time” doing so.  As films in their own right, generally I could take them or leave them but I also understand the relative importance of knowing how Darth Vader came to be, and quite enjoy the completeness of watching them all in the correct order (that’s another story).

It occurred to me that in having this conversation, it was actually pretty similar to conversations I regularly find myself having at work… Continue reading “The Star Wars / Software Development Paradigm”