Search

Tuesday, June 4, 2013

Windows Phone 8 continues to rapidly gain market share

With the recent reports of smartphone market share beginning to pour in, Kantar Worldpanel data reports tremendous growth year over year (YoY) for Windows Phone 8.  From last April until this April, Windows Phone has increased it's footprint by nearly 50%.  It has reached nearly 7% market penetration on Verizon and this is without the highly lauded Lumia 928, which just recently became available.

Even more surprising is the numbers coming over from Europe.  Windows Phone 8 has exceeded 10% market share in Italy and is fast approaching that number in the Great Britain market.  Only Android has consistently outpaced Windows in growth.  As you look at the percentages, Android's gains are relatively small compared to Windows.  iOS percentage continues to decline in half of the markets.

Blackberry has lost share in all the markets.  Even with the new launch of BB10, their shares continue to erode.  I anticipate that Blackberry will be gone within the next 12-24 months.  Unless they find a way to maintain profitability with their government contracts, it looks like this market is quickly becoming a trio-poly. 

If you follow the Windows go to market strategy even further, Nokia and Microsoft have been pushing out lower end devices at really bargain prices.  Most people don't know this: Android's market dominance has more to do with the low end, rental phones and cheap phones than the $640 Samsung Galaxy 3 and 4.

As people's 2 year contacts continue to expire, more and more people will jump ship and pick up a new Windows Phone.  And after seeing some of the leaked shots of iOS 7, I expect that update will greatly disappoint many Apple fanboys, while Android is still struggling to get past it's anemic updates to Jelly Bean. 

Couple that with the newly released 928 on Verizon and the stunning 925 on T-Mobile, Microsoft's shares will continue to climb and take over the #2 spot in many more markets in the coming months and years. 

Tuesday, May 28, 2013

Xbox One

I remember the first day that I got my Xbox 360.  I remember longing for the days of playing HD games without having to constantly upgrade my PC with expensive graphical cards and the latest CPUs.  The gaming consoles long solved that problem by packing in tons of power into a little box.  The 360 was no different.

It has twice the memory of the PlayStation 3.  It had HD graphics, while the Wii did not.  I was completely blown away by the quality and theater sound you could get out of this little machine that cost less than $400.  I remember that day very well.  What I also remember was...it should've included a TV capture card so Windows Media Center could be your DVR. 

Fast forward till today.  While there's no explicit mention that the Xbox One would have DVR functionality, what was clear it was taking the next major step at controlling your family room entertainment.  You have voice controlled functions powered by the Kinect 2.  Turn on your Xbox by saying "Xbox on", switch channels by speaking their name.  Accept Skype calls and watch TV at the same time.  Finally picture in picture that makes sense.

The Xbox One will clearly change how we watch and enjoy TV, play games and interact with one another.  Some of the amazing new features is game pausing and picking it up where you left off, even if you are picking up the play from your friend's house.  You can record your games, maybe even share those experiences on Vine or Facebook. 

Kinect 2 can detect your heart rate.  Yes, it can even tell if you are working too hard and let you know if you need to slow down.  It can detect wrist movements and more granular motions and movements.  An improved voice recognition system that can learn and detect multiple people's voices at the same time.  You can play in a smaller area (Yes!) and with up to six people.  You have HD video capture on multiple visible and invisible light waves.

The Xbox One doesn't stop there.  It has a fully working version of Windows 8 on it.  Microsoft has longed to set this up.  They have a single host operating system that runs the Xbox system, Windows and another system that talks to both. What does this mean for the non-geeks out there?  It means that you can play games, interact with Win 8 apps and do them at the same time.  Its two gaming environments packed into 'One' box. 

Add in Blu-Ray support, cloud supported gaming, where the 300,000 Microsoft servers process heavy tasks so your Xbox One doesn't have to, upward support for 3D, 4K video and much more.  Tack on IllumaRoom and the possibility of augmented reality glasses and we've got the Star Trek holodeck in the year 2013!

Friday, May 3, 2013

Windows Phone 8 and Windows 8 sales surge in Q1 2013

With the first quarter sales coming out, there happens to be a lot of good news for the Softies from Redmond.  IDC has been reporting that Windows Phone 8 has outsold iPhone in 7 markets and have reached the “critical 10% in multiple markets” and continue to gain ground on both Android and iPhone in the all-important US market. 

While there are a lot of various reports, Gartner, Kantar, IDC, etc. they all show a common theme.  Windows Phone 8 has grown on average by 20% YoY (Year over Year).  iPhone sales are flat to declining, Android has shown all three (declining, flat and slightly growing %’s) and Blackberry falling off the planet. 

Verizon will be launching the Nokia’s flagship 928 in the coming weeks.  T-Mobile will be following suit with their own variant.  Nokia has the lion’s share of the Windows Phone 8 market, hovering around 80—85%.  HTC has second place with a double-digit share with everyone else in the low singles. 

You can expect Windows Phone 8 to continue their steady climb up.  Many analysts expect they should have 20% share by the end of 2014.  At the pace they are climbing this seems a very realistic goal. 

Looking over the aisle to Windows 8, the Surface Pro continues to amaze with its market penetration.  Amazon Kindle took the world by storm around 18 months ago.  Their sales were so impressive they came out with 4 new tablet variants last holiday season. 

In the same 6 months, Microsoft Surface has gained nearly 50% on the Kindle.  As Microsoft expands the Surface Pro sales into various markets, you can be rest assured that those sales will skyrocket. 

Microsoft has been rumored to be looking at a 7” tablet and 5”+ Windows Phone.  More profiles, more options and more markets will translate to deeper penetrations.  

Intel spoke about tablets running their new processors will be around $200.  If WinTel is able to pull off a $200-$300 tablet PC that runs Office 2013, touch/pen and has that awesome cover-keyboard, no competitor will have a solution to match. 



Thursday, April 25, 2013

Brandon Saad deserves to win the NHL Rookie of the Year

The Calder Memorial Trophy is the annual award given to the NHL Rookie of the Year.  It has a long history of illustrious winners including Alexander Ovechkin (over Sidney Crosby in 2006), Evgeni Malkin, Brandon’s teammate Patrick Kane and others. 

This shortened NHL season has seen a strong crop of potential candidates for the award.  While you can find out more information on those candidates, if I had a vote it would go to Blackhawks starting Left Winger, Brandon Saad. 

Why?  While Brandon stats speak for themselves: He's fourth on the Blackhawks in goals (10), fourth in assists (16), tied for fifth in plus/minus (+16).  He’s only committed 6 penalties all season long.  Sydney Crosby has committed 1 more penalty in 36 games compared to Brandon’s 45. 

Brandon’s stats against other rookies are even better.  He’s 5th in goals (only 4 behind #1), 2nd in assists (1 behind), 3rd in points (2 behind) and 1st in plus/minus.  

Brandon’s success doesn’t stop there.  He plays on the #1 line across Jonathon Toews and Marian Hossa on the #1 team in the NHL, the Blackhawks already won the President’s Trophy for most points in a season.  He’s played there since game 1 and hasn’t lost his position.

For those who don’t play, watch or coach hockey my last paragraph wouldn’t make much sense.  Let me take a moment to explain why “the last” paragraph alone should merit the award.  When you play on the #1 line on the #1 team, you face every other teams “very best” players.  You play against their elite defenseman, their shutdown forwards and the other teams #1 scoring line. 

No coach in their right mind would put a rookie on the top line unless he whole-heartedly deserved to be there.  Not only has Brandon earned his spot, he kept it, excelled at it and continues to be one the reasons the Blackhawks are the #1 team.  Coaches are paid to win games.  Hockey owners are notorious for firing coaches for sneezing in the wrong direction, there's no room for experiments or error. 

When you put together your #1 line, you place your best players on that line.  Chicago has a ton of elite talent.  In addition to the #1 line, the roster has incredible forwards which include Patrick Kane, Viktor Stalberg, Bolland, Sharp to name a few.  Through all of this, Brandon still plays on the #1 line. 

My final comment on why Brandon Saad should win the Calder Trophy lies in the how the season’s progressed.  Those who follow hockey know that every NHL player will tend to play their best hockey and give 110% towards the end of the season.  The NHL Playoffs can end up being equivalent to 25% of the regular season and with 16 out of the 30 teams making the playoffs, the end rush is generally what matters. 

Brandon has faced his opponents #1 talent during this mad rush to the end, while those players are playing their best.  Through all that, he’s had a monster March with 15 points in 14 games.  Look at the other Rookie of the Year candidates.  Their numbers have dwindled, some plummeted, in March and April. 

There’s a lot of reasons why Brandon Saad deserves to be Rookie of the Year.  But when the game’s on the line and the season’s accolades are at stake, the Blackhawks kept Brandon at the tip of the spear and he delivered against the NHL's elite talent.  None of the other rookies can say that.

http://espn.go.com/nhl/story/_/id/9248781/calder-finalists-top-nhl-rookie-montreal-canadiens-brendan-gallagher-florida-panthers-jonathan-huberdeau-chicago-blackhawks-brandon-saad


Tuesday, April 16, 2013

Windows 8 WiFi connectivity issues

Read on if you are struggling with Windows 8 connectivity, here’s my story as to how I fixed mine.

I’ve been playing around with Windows 8 since its first public release.  While I was getting used to its schizophrenic (Metro and traditional desktop) interfaces, I noticed issues with my PC getting ‘Limited’ wireless connectivity.  In addition to the limited connectivity issue, I started experiencing recurring USB, Bluetooth, Outlook (svchost.exe) and other connectivity problems.

Recently, it got so bad that I had to start intentionally blue screening my PC to free up the corrupt processes that were causing these issues to arise.  Stopping and starting services, disabling and enabling devices and other tricks were employed to have it maintain connectivity.

Soon after that, Microsoft acknowledged and put out a fix for the ‘Limited’ connectivity problem.  As soon as I could download it, I did.  I noticed all my Bluetooth issues disappeared.  To my chagrin, my wireless issues got worse.  Before the fix, I could connect to wireless networks 30% of the time.  Now it failed every time. 

The svchost.exe process got worse and my PC became unusable until I went through my routine of disabling, enabling the devices and processes.  I’ve proceeded back to the Internet and the forums and started going through these steps below. 
  1. Turned on "Download over metered connections"
  2. Turned off all power management that I could find
  3. Set maximum performance on wireless adapter in power settings
  4. Ran through the network troubleshooter
  5. WLAN Autoconfig is set to automatic
  6. Verified that I have the latest drivers
  7. I changed the driver from Microsoft to the manufacturer
  8. Ran netsch winsock and netsch int ip
  9. Disabled IP Helper
  10. Disabled suspect applications in Task Manager’s Startup

In a stroke of luck, I read one article where a user uninstalled his corporate VPN client and it freed up his PC.  At this point, I had nothing else to lose.  I uninstalled the VPN client I had on my PC, rebooted and noticed that the wireless connected…automatically.  I went to Device Manager and saw that all the devices that failed to load, successfully loaded. 

I was shocked. 

I rebooted, put the PC in sleep mode, restarted and it worked every time!  My PC feels like a brand new computer now.  Everything runs smoother and performs without a hitch. 

Hopefully this article will help some other people experiencing the same problem.  I was confident that MS had fixed the WiFi issue and my problem was environmental.  For the first time ever, I’m able to use Win 8 as it was meant to be, an ultra-fast, ultra-responsive and rich OS that lives up to the billing. 


Tuesday, April 9, 2013

Create Beautiful Dynamic UI’s using DataTemplates and MVVM

In yesterday’s post, I talked about MVVM and how easy it is to start building composite applications leveraging this innovative programming paradigm.  Until today, I was struggling with linking dynamically created UI elements to the view-model.  To take it one step further, I wanted the user interface to be bound fully (Two-Way) to the view-model and be automatically updated as the view-model changes.

What’s an example?  You have a view that prompts the user to input a count.  That count could be used to create Albums, Contacts or whatever ‘class’ you want.  Here’s the sample code for an Album.cs file:

public class Album
{
public string Artist { get; set; }
       public string Name { get; set; }
       public string Year { get; set; }
}

You can add this code to your view-model class:

private ObservableCollection<Album> albums = new ObservableCollection<Album>();
public ObservableCollection<Album> Albums
{
       get
       {
              return albums;
       }
       set
       {
              albums = value;
              OnPropertyChanged("Albums");
       }
}

Update your view code with the XAML below, link your DataContext to your view-model and as you add new Album objects to your Albums observable collection, they will automatically show up on your UI and be bound to the view-model.  Yes, it’s that simple to build rich UIs that are managed by user input at runtime.

<ListBox Width="510" ItemsSource="{Binding Path=Albums, Mode=TwoWay}" HorizontalContentAlignment="Stretch" BorderThickness="0">
  <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel Orientation="Vertical">
         <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
           <TextBlock Text="Artist:" Width="60" VerticalAlignment="Center"/>
           <TextBox Text="{Binding Path=Artist}" Width="100"/>
           <TextBlock Text="Name:" Width="60" Margin="5,0,0,0" VerticalAlignment="Center"/>
           <TextBox Text="{Binding Path=Name}" Width="210" />
           <TextBlock Text="Date:" Width="60" Margin="5,0,0,0" VerticalAlignment="Center"/>
           <TextBox Text="{Binding Path=Date}" Width="50" />  <!--Normally a date/year picker would be here-->
         </StackPanel>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Monday, April 8, 2013

Demystifying MVVM (Model View View-Model)

If are new to programming or haven’t used modern design and development patterns, MVVM could be a confusing acronym that makes no sense to you.  If you are familiar with legacy design patterns (like MVC and MVP), the model view view-model may look a bit weird, although you’ll find it to be an excellent evolution to your current programming paradigm. 

In layman’s terms the three areas are broken down with these definitions:
  1. Model – The data, typically coming from a database, web service, file, or other source
  2. View – The graphic user interface, such as a windows form or web screen
  3. View Model – An abstraction layer that manipulates the data (model) so the screen (view) can display it.  The view model will include other actions (methods/functions) that can save, edit and persist data.

The real power behind MVVM is the view model.  The view model has OnPropertyChanged events that notify the listeners that data has changed and you should refresh your UI.  Most view models are based upon a ViewModelBase class that has event handlers that are subscribed to and other methods that manage the low level state of the view model.  I included a code snippet at the end of the article that I used in all my projects.

The view model is so powerful, you can reach the point where you have no code behind your view.  You can have the view code (HTML, XAML, etc.), your view model (which can handle button click events, data bindings and data events like inserts, updates and selects) and your model.  You can build test driven software that validates your assumptions and requirements without having a working application.

You can serve up mobile applications, web and thick client from the same infrastructure.  The end result can be limitless.  You can support iPhones, Android, Ubuntu, UNIX and Windows clients.  Your development time can be dramatically reduced and your quality can be increased as well. 

The best part there’s so many different programming technologies that support it.  WPF and Silverlight inherently support it.  JavaScript has a library known as Knockout that implements MVVM.  You can leverage the Razor engine, standard ASP.NET, Ruby and so much more. 

Look at MVVM and you’ll find a new paradigm in programming that’s easy, powerful and efficient.  The best part, it’s light and doesn’t require a lot of infrastructure to make it work. 


public class ViewModelBase : INotifyPropertyChanged
{
/// <summary>
/// Set the ViewModelBase to throw exceptions when property names are invalid
/// </summary>
private bool throwOnInvalidPropertyName = true;

/// <summary>
/// Expose a property to override the base value
/// </summary>
protected bool ThrowOnInvalidPropertyName
       {
              get
              {
                     return throwOnInvalidPropertyName;
}
set
              {
                     throwOnInvalidPropertyName = value;
}
}
/// <summary>
/// Setup an event to handle property changes
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Verifies if the property is valid and raises an event that its changed
/// </summary>
/// <param name="propertyName">Property that's changed</param>
protected virtual void OnPropertyChanged(string propertyName)
{
            VerifyPropertyName(propertyName);
 
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName);
       handler(this, e);
}
}
 
/// <summary>
/// Verify that the property name matches a real, public, instance property on this object
/// </summary>
/// <param name="propertyName">Property to check</param>
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
            if (TypeDescriptor.GetProperties(this)[propertyName] == null)
           {
                       string message = "Invalid property name: " + propertyName;
if (ThrowOnInvalidPropertyName)
throw new Exception(message);
else
Debug.Fail(message);
}
       }
}

Thursday, April 4, 2013

Is Silverlight development dead? Far from it!

Silverlight started out as a boutique development toolkit that originally only supported JavaScript with vector based graphics.  It was Microsoft’s attempt at stemming the Adobe Flash tide that was sweeping the web world. 

Originally launched in 2007, it was Microsoft’s first foray into a platform independent software application.  Soon it grew in popularity and over the course of the next 5 years, reached approximately 2/3 market penetration of internet users.  With support for various browsers and the Mono implementation on Linux, Silverlight expanded its reach further into the world of computers more than any other MS tech. 

During this time, the use of smart phones and ultimately tablets took a major foothold in the market.  Battery life and enabling these devices to work through a day without a charge became a struggle.  Plug-in based controls like Silverlight and Flash became taboo.  They consumed a lot of CPU resources and thus reduced battery life. 

I won’t pretend to be an expert on the subject, but something tells me that software running in a plug-in environment can’t possibly be worse than HTML5 canvas or OGG video.  Open your browser, go to your favorite website and see the memory footprint of your browser.  I bet it’s over 100 MB.  So much for thin client applications…

As I digress, Silverlight 5 appeared to be the last version of this really compelling software stack.  Silverlight 6 still hasn’t shown up in any MS document or road map and most likely it won’t.  Windows 8 ‘Metro’ IE browser doesn’t support it.  Mainly because it’s 64-bit and Silverlight was never ported to be run in a 64-bit browser.  Interestingly, Microsoft just extended support for Flash in the Metro browser in a recent update.

I’ve written, implemented and brought to market over a decade’s worth of web applications.  I’ve used many of the innovative technologies under the sun.  I’ve seen the future with HTML5, CSS and JavaScript and let me tell you it isn’t as rosy as people make it out to be. 

Building business applications can be very tedious and the performance can be horrible.  Like its predecessors, HTML5 lacks standard controls (data grid anyone) and use of real object-oriented programming is missing in this new wave of programming.  Even using the venerable MVC development pattern is taking 5 steps back compared to MVVM. 

Sure you have portability across iPhone, Android, tablets, WinPh8 and so on.  What you gain in flexibility you lose in programming speed and features.  Sure you can build anything you want and given the amount of time it takes it may not end up being that feasible.  I’m not convinced that HTML5 is the answer.  With no Silverlight 6 coming, it appears that this dynamic, rich development toolkit will go the way of the dinosaurs. 

Well not so fast.  You see Silverlight happens to be the primary technology used in Windows Phone 8.  In fact, ‘Metro’ based applications leverages Silverlight like technologies in a hybrid WPF kind of way.  Microsoft hasn’t given up on this amazing technology, they’ve adapted it.  They are using it to meet new and emerging needs.  In areas that could really use it. 

While I’d love to see Silverlight 6 come to market and be supported in Windows 8 Blue and on the iPad.  In lieu of that, I’m confident that this amazing technology stack will continue to evolve and meet new and challenging needs going forward.

Sunday, March 31, 2013

Easter - The Greatest Day in History

The week of Passover started with Christ’s highly celebrated entrance into the city of Jerusalem.  A culmination of three years of ministry, Christ came to the city of Prophets with one purpose in mind: To conquer all that’s evil and free us all from slavery and death.
 
During the first week of Easter (circa 30 AD) showed so much promise for the young Christians.  They got to personally know the King of the Universe.   So many of them believed that Christ was entering the city to free them from the terrible Roman occupation.  They thought that Christ was ready to start His kingdom on earth. 

Enter Good Friday.  His trial, the unmerciful beatings, the humiliation and ultimate death on the cross.   In a span of less than a week that all changed.  One of Jesus’ closest brothers, Simon Peter, denied Him three times.  Judas Iscariot was personally responsible for betraying Jesus, then he hung himself.  All the disciples ran for their lives, except John and the Mary’s. 

Christ’s entire flock must have been in total disbelief.  No prophet of old had ever done the things He did.  His love transcended the rich and the poor.  He fed thousands with a few loaves and fish.  He raised Lazarus from the dead.  He calmed storms, both physical and personal ones.  Even demons that He exorcised proclaimed Him the Son of God.

I could imagine that the Saturday between Good Friday and Easter had to be longest day of their lives.  The pain would have be unimaginable.  Then dawn broke on Sunday morning…


Luke 24:1-6 explains what happens next, "Now on the first day of the week, at early dawn, the women went to the tomb, taking the aromatic spices they had prepared. They found that the stone had been rolled away from the tomb, but when they went in, they did not find the body of the Lord Jesus. While they were perplexed about this, suddenly two men stood beside them in dazzling attire. The women were terribly frightened and bowed their faces to the ground, but the men said to them, “Why do you look for the living among the dead? He is not here, but has been raised!"

All their pain, all their suffering ended at that moment.  Overwhelming fear turned to ecstasy.  He did it.  HE DID IT! 

The following hours Christ appeared to His brothers and sisters in many different ways.  I'm sure many were excited (beyond belief) that He was alive again. 

What does means?  His resurrection CRUSHED death.  His resurrection SMASHED the chains of slavery to sin.  His resurrection CHANGED the world forever. 

Go forward believing that we can live our lives knowing that no power, no one person and no force can separate us from God.  Trust with 100% confidence that Christ is willing to walk the walk with us.  He will never abandon us.  He will follow us to the ends of the earth and be with us to the end of time. 

Now with Christ's death and resurrection, the end of our life's marathon will culminate with a permanent home in paradise we call...Heaven.

Friday, March 29, 2013

Good Friday

One of the pinnacle moments within the Christian faith occurred on Good Friday.  Marking the culmination of three years of ministry, highlighted by the Passover (and thus freedom from the ultimate death), Christ was crucified on a cross. 

Many will argue who was ultimately responsible for Christ’s death.  In my opinion, that point is relevant and serves no purpose.  What matters to us was Christ, a living, breathing God, sacrificed Himself for us. 

Think about that statement for a moment.

Other gods, all false idols, want us to bear the responsibility.  They desire us to put them in the limelight, follow their words or even worship them.  Some of these false gods are unworthy people that spout lies and twist the truth to suit their whims.  Some desire our money, our bodies and others have even more sinister desires.

Christ took the low road.  He walked the walk with us.  He bled when we bleed.  He hurt when we hurt.  He cried when we wept.  He is a God that was willing to bear the weight of the world on His shoulders.  He refused to take the easy way out. 

Christ has the power to do whatever He so chooses.  He and His Father set this all in motion the moment Adam and Eve succumbed to original sin.  Christ is all powerful.  So powerful in fact, that forgiveness of sin didn’t need a sacrifice.  Christ has the power to choose another way. 

He didn’t. 

Christ and His Father actions speak volumes.  They make statements.  Some we never see.  Some that have an everlasting effect on the world. 

An all-powerful God, who created the universe in 6 days, decided that if He died for us.  We, a feeble, broken, faithless race, would find hope, joy, love and ultimate salvation by His sacrifice.  A sacrifice that has a permanent lasting effect on the universe.  We know that we have a future beyond our failings.  A future that extends beyond death.  A future that no one can take from us. 

Because of Christ’s sacrifice, nothing can separate us from God.  Not distance from our home, not pain, not suffering, not even death can keep us from Him.  The Father gave all authority to Christ.  With that authority He freed us from sin and death by willingly sacrificing Himself on the cross, almost two thousand years ago. 

Why?  So we can spend eternity in heaven free from all the pains of this world with Him…forevermore. 


Wednesday, March 27, 2013

Leveraging Live Tiles in your Windows Phone 8 App

There’s no question that Live Tiles are one of the marquee features of Windows Phone 8.  Live Tiles are a clear differentiator to the current UIs of iOS and Android.  They give the user instant knowledge to what’s going on and enables them to setup their home screen with a configuration that matches his/her busy life. 

As a developer, using this innovative technology can be difficult at first.  We aren’t used to promoting knowledge in this manner and because it’s new, we may not know exactly what and how to use it.  So I’ll take a few moments to explain what a developer can and can’t do:

Features:
 
1.  You have 3 different sizes of Live Tiles.  See below. 
 
Size 2x4
 

 
Size 2x2
 
 
Size 1x1

 

Given these three sizes, it's important to know that your app may be running in any one of these modes at any given time. In my example, the stock photos app supports all three sizes quite nicely.  Being a photo application that displays my recent pictures, it makes sense that users will typically set it up in a 2x4 or 2x2 configuration.  My Night Time Clock app on the other hand makes sense to be setup in a 1x1 or 2x2 configuration. 

2.  Now that you are aware of all the various configurations, you need to decide what information you want to present when in each mode.  One thing to note, if your app is sized to 1x1, your options are minimal and standard implementations only show a number next to the app icon.  If a number/counter doesn't apply then you shouldn't force anything else unless you present information appropriately given the small size.

There are two primary methods (there is a third that I'll talk about soon) of showing information while using Live Tiles.  You can update a counter on a Live Tile like the (great) Weave application does.  This is a very nice and simple feature to notify your users that something has changed.  It doesn't take up a lot of space while giving you a feel that something new awaits the user.
 
 
 
The second option involves a second Live Tile, that can contain up to 9 images.  Live Tiles are actually double sided and allows the developer to create alternate content that's refreshed every hour.  This is a local refresh that doesn't require an internet connection, which is nice for users on restricted data plans.  If you want your application to update more often than an hour, like a clock application, you need to incorporate option 3 below. 
 
3.  The third option requires some web infrastructure and gives the developer push notifications that can be presented to the user.  This method offers the most flexibility and enables dynamic content to be displayed on the tile. 
 
Applications that use this method can be weather, stock, social networking, sports, news and other apps.  The Weave app (above) is using both the numeric counter and the push notifications.  The image of Wolverine is pushed from a web server.
 
Hopefully this guide will serve as a starting point to building incredible WinPh8 applications.  If you are looking for more information, you can browse the Windows Phone Developer documentation here.
 
 


Tuesday, March 26, 2013

Holy Week continues...

The Jewish rite of Passover, also celebrated by Christians and Muslims worldwide, happens to be iconic tale of freedom from slavery.  As many of you know, the story of the Jews enslavement by the Egyptians marks a low point in the Hebrew history.  Until God empowers Moses to speak before the Pharaoh to set His people free. During this confrontation, Pharaoh exclaims he's god and after ten horrific plagues he finally relents. 

Passover signifies the last plague, when the angel of death descended upon Egypt to kill everyone's first born.  Yet, God gave the Jews a reprieve.  He instructed Moses to tell them to put lamb's blood on their doorways.  When the angel came through, the angel would pass over the Jewish homes and only afflict death to the Egyptians.

The act of placing the lamb's blood on the doors worked only this time.  The Jews were enslaved six more times, culminating with the horrific acts in WWII. 

Given all of that, it's interesting to see the similarities to the plight of Christ. It's the only documented time that the people of Israel gave public praise to the King.  Christ rode into the city on a colt showing extreme humility. 

Christ came to Jerusalem knowing full well that the Passover feast would end in a sacrificial lamb shedding his blood.  The difference, Christ's blood would be shed on the cross and permanently free all of us from slavery to death and sin. 

His journey didn't end on the cross.  Three days later, Christ rose from the dead, breaking the shackles that were placed upon humanity's hands at the time of Original Sin.  Now we can move forward knowing that all of our struggles, pains and shortcomings can be overcome by the Blood of the Lamb, who sacrificed Himself on the cross nearly two thousand years for the forgiveness of all sins, now and forevermore.



Wednesday, March 20, 2013

First day of spring

Today is the first day of spring. By now, all your New Years resolutions are in the past, Easter is around the corner and you're probably wondering what's new on the upcoming horizon. Spring is clearly a metaphor for a new beginning.

Spring represents an opportunity to move forward in life and leave behind the cold, stark history behind.  As many of you struggle with various afflictions (health, financial, emotional and mental), understand that Christ continues to pour a living love into our broken, dark lives. 

We might not notice it at first.  Sometimes it can be so subtle, like a friend who calls you out of the blue.  Or a family member that gives you an extra long hug. Look and be aware of the signs, they are everywhere. 

Sometimes Christ's love slams our hearts!  Maybe your spouse 'springs' a surprise gift on you.  Dinner suddenly appears on the table, kids listen and go to bed on time.  Coworkers, bosses get along and you get to leave work a half an hour early. 

We are fast approaching the greatest day in human history.  A day that marks the Resurrection of Christ.  Christmas and all other holiday's pale in comparison.  Just like the cherry blossoms of DC burst full of life, Christ's death on the cross guarantees life everlasting.  A life where all your afflictions, all your tears are wiped clean...forever.



Tuesday, March 19, 2013

Microsoft Surface Tablets Sales

The media outlets have made the recent news of Microsoft Surface sales sound like it's doom and gloom for the infant device.  If you haven't heard, there have been 1.1 million Surface RT and 400,000 Surface Pro tablets sold since their release in 10/12 and 2/13 respectively. 

Let me first explain the difference between RT and the Pro device.  I'll have to admit that until the RT device was released, I really didn't understand what the differences were between the two tablets. 

Besides the obviously horrid name, Windows 8 RT (which stands for Run-Time) runs applications from the Microsoft Store, including a modified version of Microsoft Office 2013.  Microsoft has been plagued by backward capability and RT was intended to break the mold and usher in a new, more secure and flexible platform.

Pro tablets do everything RT tablets do, plus it supports all applications that can run on Windows 7.  You get the flexibility of full screen (a la Metro) apps and you can install all your legacy applications, games, tools, etc.

Microsoft controlled the release of the product for numerous reasons.  They need their channel partners to survive in order for them to continue to sell software licenses, which is their primary business model.  They are slowly expanding their markets to include other countries, retail outlets and distribution channels.  We are seeing a steady and controlled pace to bringing this innovative solution to market. 

So what does 1.5 million Surface tablets translate to?  Another billion dollar a year business for Microsoft.  That puts Surface in the same category as Windows, Office, Xbox, SharePoint and other mega Microsoft business divisions.  Not bad for a tablet that's been on sale for 6 and 1 month respectively. 

Monday, March 18, 2013

Prequel to Holy Week

As we approach the upcoming, and early Easter celebration this year, I'm reminded once again about the overflowing grace the Lord God bestows upon us.  Grace, being defined as God's love that surrounds us and occurs before (and after) all of our decisions, is a powerful testament to God.  Think about it.  God loves us 'before' we know anything, we know him and is persistent.  Thus, even after we sin and fall, He's still there loving us, caring for us.

God's love emanates all around us.  We feeble minded humans struggle to understand what affect this grace and love have in our lives.  We challenge those constructs easily when things go awry.  We wonder why children suffer and die of diseases, hunger, abuse and neglect.  We say only bad things happen to good people and bad people get away with everything.

We see the poor being outcast in our society.  Our youth grow up with addictions to drugs, alcohol, sex and so much more.  Our elderly are discarded, useless people who drive slow, can't see and only get in our way of a normal life. 

Through it all, God's grace remains constant.  We find it so easy to forget all the wonderful good that's happened.  Like those wonderful hours spent with our children as they grow up.  Their first words, the first time they call us 'daddy' or 'mommy'.  We forget how our parents sacrificed their lives for us.  How they work their hands to the bone so we can get a chance a better life.  And seeing us succeed, even if it's just a bit better than their successes, can bring an tremendous sense of satisfaction that they did the right things. 

Grace enables us to see the bridge that Christ paved with his broken body.  Grace shows the lines of the road painted with Christ's blood. And the finish line, won with His triumph over death.  That's what grace is all about.  No matter how hard or terrible your life is, was or going to be, Christ is right there next to you.  Walking the walk with you, surrounding you with His love when we need it the most. 

He's ready to carry your burdens on His back and place His yoke on us because it's light enough for us to bear.  That's God's Grace.

Monday, February 25, 2013

Windows Phone 8 Development Tips and Tricks


Change your application title as it appears on the phone app list

Go to the WMAppManifest.xml in the Properties folder and edit the Title attribute in the <App line or open it in the editor and update the title and other attributes

<?xml version="1.0" encoding="utf-8"?>
        <Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment"
       <DefaultLanguage xmlns="" code="en-US"/>
        <App xmlns="" ProductID="{xxxxxxxxx}" Title="Your Product Name"

Stop the lock screen from popping up

PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;

Setup a menu with navigation to another page

// Set the page's ApplicationBar to a new instance and minimize it used when no buttons/icons are needed

       ApplicationBar = new ApplicationBar
       {
              Mode= ApplicationBarMode.Minimized,
};

ApplicationBarMenuItem menuItem = new ApplicationBarMenuItem(AppResources.Token);
ApplicationBar.MenuItems.Add(menuItem);
menuItem.Click += (s, ev) => { NavigationService.Navigate(new Uri("/Token.xaml", UriKind.Relative)); };

 Using geolocation (GPS) services
 
// Get a high accuracy watcher, usually called from a Dispatcher Timer so it won’t block the UI and be reset after a period (usually 15 minutes) of time
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
// MovementThreshold is in meters
watcher.MovementThreshold = 100;
// Add event handlers for StatusChanged and PositionChanged events
watcher.PositionChanged += (s, ev) =>
{
       try
       {
              // Get the user's location
              latitude = ev.Position.Location.Latitude.ToString("00.00000");
              longitude = ev.Position.Location.Longitude.ToString("00.00000");
 
              // Stop the watcher because the method will be called again in 15 minutes
              watcher.Stop();
       }
       catch (Exception ex)
       {
       }
// Start data acquisition
watcher.Start();
}