Feed on

Get the best HLSL Book available for XAML developers

A comprehensive guide to creating HLSL pixel shaders for WPF and Silverlight applications

Really, this will be a must have book for hardcore xaml people. ... this is the best shader content I’ve seen to date. 
-- David Kelley

Dude this is great stuff!  A for interesting, A for correctness)!
--Jeremiah Morrill

I really like the chapter now, Really good content. :) 
--Rene Schulte

Reading the early release of @waltritscher 's HLSL for XAML developers book. Very good so far.
   -- Kris Athi

Learn more about shaders, get the book

HLSL and Pixel Shaders for XAML Developers

I purchased the inexpensive Motorola Moto G Android phone for $99 USD at the local Best Buy.  It’s a cheap way to get a test device for Android development.  The Verizon version is a no contract phone so you are not stuck with a two year contract.  If you want to use it as a phone you need to buy a monthly “pass” from Verizon ($45).  For my purposes I don’t want to pay for cell service, I plan on using it as a wi-fi phone only.  At first glance there doesn’t appear anyway to use the phone without signing up for at least one month service.  But there is a way to avoid the fee if you know the ninja swipe maneuver.

The activation screen

When you turn on the device you select your desired language, then the phone shows the activation screen. 


Figure 01: Phone activation screen


The instruction tells you tap the “here” link, which dials the activation service. When you are connected to the service a recorded voice asks you to enter your Zip Code so that it can assign a phone number to your new device.  The voice then tells you about the $45 a month plan.  Press 1 to sign up for the plan, press 2 to hear more details.  Those are the only two choices offered.  So it appears that you have no choice but to sign up for the one month of service. But don’t despair, there is a way through the activation process.

Bypass Activation Screen

Here are the steps to skip the activation screen.

While on the activation screen , pull down from the top edge of the phone to show the notification screen.


Figure 02: Notification screen


Touch the recent apps button on the bottom right of the screen.


Figure 03:  Press the recent app list


The Activation screen will  appear as a small icon on screen, swipe the activation app to the left side of the screen.


Figure 04: Swipe the activation screen to left


It’s just that simple, now you can continue with the setup process and have a wi-fi only phone.

The fine print

The activation screen reappears occasionally while using the phone.  I’ve seen it appear when restarting the phone.  It also might appear if you try to dial a phone number.

I can tolerate these small annoyances on a phone that is only used for testing.  What about you?

Windows phone 8.1 has little changes and enhancements that are not covered in the mainstream articles.   This series of posts examines the gems hidden everywhere in the new OS.

More posts in the series

One of the features that I love about Windows Phone 8.0 is the ability to pin a contact to the start screen.  That makes it easy to see your friends status, send them a message or call their phone. The new 8.1 OS adds a small enhancement for quickly calling your favorite phone numbers.

Speed Dial

Version 8.1 adds a new Speed Dial section to the call history screen.  It shows a list of contacts, you simply touch the contact to dial the number.



Figure 01:  Speed dial screen



Figure 02: Dialing the contact


How is this different from calling via the pinned tile?  Touching the tile on the start screen takes you to the contact page, where you select phone number to call.  With the speed dial, once you have the history page open you can quickly call anyone on the list without looking at their contact information.

Adding a Speed Dial Entry

Touch the + button on the Speed Dial AppBar.  The contact list opens and you choose the contact to add. If they have more than one phone number you pick the number to add to the speed dial list.


Figure 03:  Choosing a speed dial number



Figure 04:  Speed Dial screen with new entry

Windows phone 8.1 has subtle changes and enhancements that are not covered in the mainstream articles.   This series of posts examines the gems hidden everywhere in the new OS.

More posts in the series

Call History UI changes

Microsoft changed the UI in the Call History screen.  The Call button is gone, replaced with the new Contact Button.

Windows Phone 8.1

Here is the history screen in 8.0.


Figure 01:  Windows Phone 8.0 Call History screen


On the left side of the screen is the Call button.  Obviously pressing this button calls the phone number.  Pressing the contact name or phone number in the history list takes you to the contact screen, where you can view and edit their contact information.


Windows Phone 8.1

Here’s the history screen in 8.1.


Figure 02:  Windows Phone 8.1 Call History screen


The Call button is gone. To call someone in the list you press their contact name or number.  I suspect that will trip up a few people who are familiar with the old system. On the right side of the screen is the new Contact button.  Press it to navigate to the the contact screen, where you can view and edit the contact information.


Figure 03:  The Contact screen

Windows phone 8.1 has little changes and enhancements that are not covered in the mainstream articles. This series of posts examines the gems hidden everywhere in the new OS.

More posts in the series

Call History

There are a some changes in the History section of the phone dialer. Repeat calls to the same phone number are grouped together on the history list.


Figure 01: Windows Phone 8.1 History screenshot


As you can see I made two calls to the 555-0101 number, indicated with the (2), then I called the 555-1888 number [*].  Next were four calls the the 555-0123 number.  Finally I redialed the 555-0101 number again.  Because I made calls to other numbers before redialing 555-0101 the group count is reset.

In the Windows Phone 8.0 history list each phone call is a separate entry.  So this  8.1 enhancement reduces the number of items shown in the history list

Searching History

The grouping disappears when searching the history list.


Figure 02:  Searching History screenshot


When I touch the search button, the list updates to show the individual calls.


Figure 03: Search results screenshot


The grouped data is not shown in the search results either. As you can see each individual phone call is listed separately.


[8] More information about U.S fictional phone numbers.


Until now, there has been no easy way to interact with MIDI devices in a Windows Store App.  But that changes today.  You can install the Windows Runtime API for MIDI Preview Nuget package in your project and start using MIDI in your app.


Unless you are music synthesizer devotee you probably don’t know much about Dave Smith.


He was big force in the early days of digital music, founding the pioneering Sequential Circuits company in 1972.  During his tenure at Sequential Circuits he designed and built the first programmable polyphonic synth. He was also responsible for writing the first digital communication protocol specifically targeted at music instruments.  That protocol, named  MIDI (Musical Instrument Digital Interface) was ratified by the music industry in 1983 and it changed the way musicians, producers and studio engineers worked with their tools.

What is MIDI?

First and foremost it is a serial protocol that defines how to send messages between devices.  If you want to explore the geeky details of the specification check out the midi.org site.  MIDI also defines what types of messages are allowed.  Some common examples are note-on, note-off, note-pitch, pitchbend, volume, controller-info (footswitch, knobs, sliders, pressure, velocity), program-change, time-code and clock.

Instrument Explosion

Nowadays MIDI is built into numerous devices. 

  • Music Keyboards
  • MIDI controllers
  • Rack Mounted synthesizers
  • Drum machines
  • Computer music interfaces
  • Electronic drums
  • Hardwar Sequencers
  • Wind Controllers
  • Digital Audio Workstations


This universe of devices is now available from your Windows Store App.  Essentially you can find attached devices and then read inbound data from a controller, or send control information back to the device. As a keyboard player I find this very exciting.  What do you think?

Beta API

At the moment, the Windows Runtime API for MIDI Preview is in Beta and Microsoft is actively seeking your input on what enhancements should be added to the API.

The Microsoft Build 2014 conference is this week. There is an avalanche of information flowing from the Redmondites on the future of Microsoft products and the changes to developer tools. One announcement caught my ear, the changes in the Windows 8 sandbox for Windows Store Apps.


Windows 8 store apps run inside a sandbox, which force the application to use approved WinRT APIs and prevent the application from damaging or infecting the host operating system. This is a good strategy for consumer apps but it limits what you can do with corporate applications. For example you can’t call certain .NET libraries within a store app.

The solution is to avoid making store apps and develop desktop appications instead. Now you have access to the powerful WPF GUI system and the full .NET framework. But you are missing out on some of the innovations available in the Store APIs and are prevented from using the new Windows 8 features. For example the touch system is much easier to work with in the modern libraries.


The forced separation of WinRT and .NET ends with the release of Windows 8.1. Now developers creating corporate apps can use any .NET library from within their WinRT apps. This is good news. It means that you have access to all your custom .NET libraries written for your existing projects. Plus you get access to the huge world of third party .NET code written during the last twelve years.

Now you can leverage your custom business layers written for .NET, and build a modern, sleek, touch friendly front end for your existing systems.

The Fine Print

You only get this “interop feature” if you side load the application. You cannot distribute your app through the Windows Store. That, of course, means that you have to have a way to sideload apps onto employees computers. Usually that entails having a Intune subscription for your company or buying packets of 100 sideload keys. This is a contentious topic, the past couple years have seen a lot of complaints about the current sideloading costs and limitations in the developer community. But those stipulations are changing too.

My sources at Microsoft confirm there are changes in the sideloading licensing costs and restrictions but details on the changes have not been announced.


Microsoft has released some information regarding the changes to sideloading. Rocky Lhotka tells the story on his blog.

Microsoft has now radically changed the cost of step 1. This blog post from Microsoft contains the following statement:

Enterprise Sideloading– In May, we will grant Enterprise Sideloading rights to organizations in certain Volume License programs, regardless of what product they purchase, at no additional cost. Other customers who want to deploy custom line-of-business Windows 8.1 apps can purchase Enterprise Sideloading rights for an unlimited number of devices through Volume Licensing at approximately $100. For additional information on sideloading licensing, review the Windows Volume Licensing Guide.

For those of you still using Internet Explorer.

This is the page I see when I create a new Tab in IE.


The other day I accidently click on the Remove this page button in the corner of one of the items on this page.

Unfortunately, it was a link to a  testing page I use all the time.  Now I’ve done this before, about a year ago, so I know that that link will never, ever appear in the list again. 

I knew there was a registry hack that could bring back the item.  I took me awhile to find it, here it is.


HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TabbedBrowsing\NewTabPage\Exclude

Note, delete any entries in this section.  There is no readable information in the keys so you are working blind.

Don’t blame me if this fix breaks your computer.  You should know how risky registry hacks are by now.

I’ve been using my HTC 8x Phone for about six months.  I had to get a replacement for the phone last week, due to some issues with the microphone.

After a brief call to customer support Verizon replaced it, sending me another phone via next day air.

This is the saga of my what happened when I started the new phone for the first time.  If you are expecting a angst filled post describing the #FAIL of the winphone ecosystem, then you’ll be disappointed.  The experience was first rate, from start to finish.  The windows phone OS did a great job getting me back to my apps and data in a short period of time.  The apps themselves?  Well, let’s just say that they could learn something from the way the phone handled the update.

Setting up the new phone

After unboxing the phone, I extracted my SIM card from the old phone and transferred it to the new device.  A few minutes later I turned on the phone and waited for the initial welcome prompt.

I’ve been through this process many times, with my developer phones.  This was my first time doing it with my personal phone with existing accounts and apps installed.

I entered my Microsoft account ID at the prompt, then entered my password.

A few minutes later the phone was done with setup and I was ready see what else needed to be done.

Setting up Email accounts

I use three email addresses on the phone. The OS discovered my other email accounts that I was using on the old phone and added them to the new phone.  I was prompted to reenter my password for the other email accounts when I launched the mail program, but it only took a few minutes before I was reading my inbox.

So within 10 minutes of starting the phone I was back in business with my email and people hub back to normal.


The next step was to connect to the local wireless.  I enabled the wireless connection and added my network. 


Once that was done,  I decided to check out the app situation.  Good news!  While I was configuring the passwords for the two additional email accounts the phone had been quietly downloading all my apps from the store.  By the time I looked at the app menu all the apps were installed and ready to go.  NICE!

I noticed there were some updates pending in the Store so I open the Store app to see what was happening.  There were four apps in the marketplace that couldn’t be updated.  Hmm. I spent some time investigating why the apps weren’t installed or updateable.  After all, the rest of the process had gone so smoothly.

The reason the apps were not installed is because they were no longer available in the marketplace.  For whatever reason, the apps had been discontinued, so there was no way the phone could install them.

I’m not sure how long the apps have been unavailable on the old phone.  My understanding of the system is that in most circumstances once you download an app to your phone, its is available on that device, even it it later pulled from the store. 

Logging into Applications

At this point the phone was  nearly identical to the old device I’d turned off thirty minutes beforehand.   I decided to check out some of my favorite apps.  Here is where the upgrade story gets discouraging.

Very few apps on the phone use the Microsoft account ID, Facebook or Twitter accounts for login.  This became apparent when I opened Rowi the first time.  I had to enter my Twitter credentials before I could read my tweet stream.  This happened over and over again as I opened each networked app.  Thankfully, I use LastPass, so it was easy to lookup each apps login information.

Game progress and application settings

What about my games?  The XBOX titles were the best.  Obviously, all my XBOX achievements were intact.  Games like Wordament were no problem.  Since it’s a live puzzle game, I just started with the next available puzzle.  Some of the other games remembered my progress and started me at the last conquered level.  But sadly most of the game didn’t.  For example. Angry Birds started the game from the very beginning. 

Application were similar.  Some were great about remembering me and my data, others were less helpful.  Since OneNote uses Skydrive it had all my notes ready for me to view.  CardStar one the other hand, remembered nothing. I use CardStar to keep my loyalty card information on the phone.  Apparently they’ve never heard of the cloud, because I had to reenter all my information.


The phone is masterful in the way it handles my account information.  The startup process was simple and the phone reconfigured itself seamlessly to match my old device.

Once I got to the third party apps it was a less joyous story.  While all my apps were installed, I spent an hour or more opening the apps and logging into their individual servers.

As we move our lives and data into the cloud it is imperative for app developers to integrate their apps and our data into a seamless experience.  I believe this will happen in most apps eventually, but we are not there yet.

Building Windows Store Apps Essential Training
A comprehensive and through treatment of Windows 8 Store Apps
Video training on Lynda.com

I have a touch screen laptop I use for Windows Store App development.  It’s hooked up to a two big monitors.  There is a set of keystrokes I use when debugging to get the App and Visual Studio on the monitors I want.

Moving Visual Studio to a Different Monitor

Move the focus to Visual Studio, then use WindowKey-LeftArrow or WindowKey-RightArrow to move Visual Studio to the monitor you want. Press WindowKey-UpArrow to maximize.

Moving the App to a Different Monitor

Move the focus to the Windows Store App, then press WindowKey-PageUp or WindowKey-PageDown to move it to the monitor you want.


Simple tip.

Learning a new API is fun and full of false steps.  How many times have you found a solution for a problem that seems overly complex.  Perhaps you write a wrapper class to simplify the API calls.  Then one day, looking through the documentation (or reading another developers code) you find there is a simpler way to accomplish the task.  It’s been there the whole time, tucked into an unexplored corner of the API.


A few weeks ago I saw some code in a open source library for reading the contents of text file.  The code was using a URI to access a file in the app temporary folder.

            var localFolder = Windows.Storage.ApplicationData.Current.TemporaryFolder;
            var folder = await localFolder.GetFolderAsync("game");
            var file = await folder.GetFileAsync("player.txt");
            var fs = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
            var inputStream = fs.GetInputStreamAt(0);
            DataReader reader = new Windows.Storage.Streams.DataReader(inputStream);
            await reader.LoadAsync((uint)fs.Size);
            string data = reader.ReadString((uint)fs.Size);

I knew there was as simpler way.  The PathIO class has the ReadTextAsync method which reduces this to a single code line.


  string contents = 
     await Windows.Storage.PathIO.ReadTextAsync("ms-appdata:///temp/game/player.txt");

Other methods you may find useful in PathIO:








Windows 8 Secrets by Paul Thurrott

Older Posts »