This is just a short and sweet post about data visualization. Over the last week or two I have been trying to display alerts for the next version of Space Weather, in a smart and meaningful way. In earlier versions of my app, I displayed only the most current alert in plain text and only in black and white. This time I am determined to give them a little more oomph. Here’s my first attempt:
Here is what it looks like in my database (and relatively close to what it looks like in the current app):
I am going to continue this theme throughout the app. I would still like to clean up the list of alerts somewhat, but I think it’s a good start to where I want to be in future versions of Space Weather.
My new Space Weather service is getting closer and closer to being ready. I just rewired my MVC Web API site to use Entity Framework instead of some old LINQ I was using. Now I am serving up XML/Json/Whatever the HTTP header asks for using MVC Web API. Today I finally am able to consume this on any device. I just wired up a sample app on Windows Phone 8 and here it is! It’s crude, but it works. I will try to write up an entire post on this with samples once I get further along. Another step closer to getting my Space Weather service up.
Over the last few weeks I have been working on a new application for Windows Phone. The app is called Snow Emergency. It is an application that reports the current status of a Snow Emergency in Minneapolis Minnesota area. This is something that really hits home for me because 1) I live in Minneapolis 2) I have been towed before because of not being informed when a snow emergency was declared. When a snow emergency is declared parking restrictions go in effect and you run the risk getting ticketed and towed. This app checks to see if a snow emergency is declared and will alert you based on the current alert status.
Before I created this app, I checked to see if one existed for Windows Phone and of course, it didn’t. I saw that the city of Minneapolis had created one for iPhone and Android and immediately began to think what it would take to create one for Windows Phone. Both the iPhone version and the Android version have lackluster reviews, most of them complaining about how they don’t actually let you know that a snow emergency is in effect. I knew that if I were to create an app, this would be the first (if not only) feature for my app. From this, Snow Emergency was born. Not only do you get alerts, but you also get all of the information you need in one app. Got towed? Call the impound lot or search for your vehicle. Want to call the hotline? Just a tap away. Not sure of the parking rules for today? Parking rules are included in the app as well as many other bits of information in this one simple application.
One slight problem I have is that I have received no response from the City of Minneapolis when working on this app. I contacted them a few times (by using the Minneapolis – Contact Us page and Twitter) but no response. Dear Minneapolis, if you are reading this, please contact me. I would like to know when/if your Snow Emergency site changes so that I can update my app before you do so that the app will not break.
Currently, this app only supports Minneapolis but I would love to add other cities. If your city has a similar warning for snow emergencies, let me know and I’ll see what I can do. This is my public service to the great city of Minneapolis – the app is free of charge. If you would like to support me, consider buying on of my other applications – though not required.
You can download the app here:
You can check it out on Facebook too.
or our new home at
Visual Studio 2012 Update 2 was released about a week ago. This update includes lots of fixes and some features – you can see the list here. The only problem with the update is that Microsoft does not provide an offline installer. If you are installing this on your own PC or for one person, you may not have a need for one. But… if your entire team needs to install this (or you just want to have it for later for a PC rebuild, you can download all 1.8 GB and have an offline installer for you or your team to share. Here’s how:
- Get the update from Microsoft here.
- Save the file to a folder.
- open the folder
- Pro tip – Shift + right click the background of the folder and choose ‘Open command window here’
- in the command window type VS2012.2.exe /Layout
- It will then ask you where you would like to save and extract the files.
- This step will take some time depending on your download speed. This is the step that adds time to the install when you choose the web installer.
- You will now see a folder with the update installer along with all of the source files. You can now store this safe on a network share or your hard drive and update your installation of Visual Studio without downloading 2GB of files!
- This will also work for creating an Update 1 offline / standalone installer (and should for Visual Studio 2012 Update 3).
Here’s something I never knew was possible. After all these years of using Windows I always thought it was impossible to associate a file without an extension to an application. Why would I want to do this? Simple. Sometimes applications do not add a file extension to files. This seems to be the case when working with files from different operating systems. In my case, I need to inspect some app settings that my phone app is writing and it does not add .xml to the end of the file. The app I use to retrieve these settings prompts for the app I want to open it with AND I have to choose each time. This adds extra steps to my workflow and I almost always open files without extensions with Notepad++. Here’s a simple way of making all files without an extension open in Notepad++ when trying to open them:
- First add Notepad++ to your Path variable.
- Advanced System Settings>Environment>System variables>Path>Edit
- In the Variable value section, add ;C:\Program Files (x86)\Notepad++
- Note that this is for a 64-bit Windows. If you are using 32-bit the Path would be ;C:\Program Files\Notepad++
- Be sure that you add the semicolon before you add the path to Notepad++
- create a .reg file and put the following in:
12345678910Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.]@=""[HKEY_CLASSES_ROOT\.\shell][HKEY_CLASSES_ROOT\.\shell\open][HKEY_CLASSES_ROOT\.\shell\open\command]@="notepad++.exe %1"
- Then save the .reg file and merge it
Now, when you double-click files without an extension they will be opened with Notepad++ !
If you prefer Sublime Text or Notepad you can change the last line in the reg key. I totally took the lazy way and added it to my Path since I couldn’t figure out how to escape the double quotes for the command. (And by “couldn’t figure out” I mean “didn’t spend more than 60 seconds”.) If you figure out how, leave a comment below. Oh and by the way, this isn’t totally hacky – Microsoft has a KB on it. http://support.microsoft.com/kb/236014
Here’s the .reg key for regular ol notepad (*yawn*)
Windows Registry Editor Version 5.00
Previously I wrote about how to use reflection to take advantage of Windows Phone 8 tiles on Windows Phone 7. I recommended this for those who want to keep the same code for both version of Windows Phone instead of branching it and making one version for Windows Phone 7 and one for Windows Phone 8. I still recommend this if you aren’t taking advantage of any Windows Phone 8 specific features. This worked fine until today when Microsoft released the Windows Phone 7.8 SDK. 7.8 gives Windows Phone 7.x users the ability to get a variety of tile sizes, and for you, more code reuse. Now you will really get a lot more mileage out of your code since this same code will work for Windows Phone 7.1/7.8/8 if you follow this method.
If you followed the example in my earlier post (which you should) all holds true except one line, the line where you set the targeted version:
You will need to set the above new Version class to 7, 10, 8858 as shown above. This is the major, minor, and build # of Windows Phone 7.8.
You might be tempted to change this value in your WMAppManifest.xml but don’t!
We already set this (in my earlier post) and if you are reading Microsoft’s documentation on Windows Phone 7.8 SDK, it says to set it to the value we already have. Don’t be confused by the AppPlatformVersion of 7.1 . This stays put. If you do change this value you will get the following error when compiling:
Error The ‘AppPlatformVersion’ attribute is invalid – The value ’8.0′ is invalid according to its datatype ‘http://schemas.microsoft.com/windowsphone/2009/deployment:ST_AppPlatformVersion’ – The Enumeration constraint failed.
Again, if you see the above error it is because you changed the AppPlatformVersion from 7.1 to something else. Read Microsoft’s documentation carefully, it says to change AppPlatformVersion in the AppExtra attribute, not Deployment.
If you made the changes above along with the ones in my earlier post you will see that you can now use the same code base for all 3 versions of Windows Phone! You can create live tiles, one of each size with the content on the flip side you choose.
You can see this in action in my Windows Phone app, Space Weather. I am submitting a new version tomorrow with the said changes above.
I really hope NFC picks up here in the US. I just sat my phone down on the box it came in (not thinking) and it said someone is sharing a web site with me. I had no idea where this was coming from but I said yes to view it. Turns out Nokia had a card in the box that was NFC enabled and it took me to their website where it showed their apps. How awesome is that, my phone was near a piece of paper and it sent information to my phone. We need this on cereal boxes, soup cans, and dry goods!
Now that Windows Phone 8 is released the first thing you want to do as an app developer is update your app to Windows Phone 8, right? Wrong. My recommendation is to only update to your application to Windows Phone 8 if you need to take advantage of Windows Phone 8 features. Some of these you can do without upgrading the application at all.
Microsoft will automatically make those applications that are compatible with Windows Phone 8 available for those devices and Windows Phone 7.1 devices without making any changes at all. Space Weather got the nod to run on Windows Phone 8 even though I never updated the application at all, and that’s OK. That’s what I wanted. You see, if you upgrade your app to Windows Phone 8 SDK, you have to start maintaining 2 versions of the application where if you keep it on the 7.1 SDK and use reflection to get some Windows Phone 8 features you can maintain only 1. The only thing I wanted from Windows Phone 8 (for now) was the double-wide tile. Here’s how you can take a 7.1 application and use reflection to get 8.0 tiles and only support 1 version of the app.
Get the tools
Open your project
Once you have all the tools installed, open your project and build and test. Most likely it will without any issues. If not, use the Tim Gunn approach and “Make it work!” Be sure not to upgrade the project to 8.0. You can check the target phone version checking the properties of the project. The target version should be Windows Phone OS 7.1.
Save, backup, check-in, commit – whatever you need to do to get back to a working state.
Update the app manifest file
Open your app manifest file (in the properties folder in the solution explorer). Right click and choose ‘Open With…’ > Source Code (Text) Editor with Encoding. Now add the <AppExtra> element above the <App> element.
<a href="http://www.techtronic.us/technology/use-reflection-to-take-advantage-of-windows-phone-8-tiles-on-windows-phone-7/attachment/appextra-2/" rel="attachment wp-att-1051"><img class="wp-image-1051 aligncenter" title="appextra" src="http://www.techtronic.us/wp-content/uploads/2012/11/appextra1.png" alt="" width="599" height="90" /></a>
Add reflection code to update a Windows Phone 8 tile
If you already have code to update a Windows Phone 7 tile (which you should) all you have to do is add a check for the OS version and run the tile update based on the targeted OS version.
You will want to check the version at the class level:
Now you can use the IsTargetedVersion to decide which version of the Tile code you should run.
Here is the code that checks for the version and runs the Windows Phone 8 tile code:
Here is the code to update Windows Phone 7.1 tiles:
Build & Deploy
Now if you build and deploy to the different emulators, you will see that you have access to the new tile size on Windows Phone 8
..and your old code to update the live tile on Windows Phone 7 still works.
Be sure to update this code wherever you have it running. I actually had to update it in 2 places, once in my background task project that runs the code on a schedule, and once in main where it refreshes the tile when you launch the application.
(PS Sorry about screenshots to code, I’ll be updating my blog shortly so I can get properly formatted code inserts)
Microsoft launched a new campaign similar to their previous “Smoked By Windows Phone” today. Once again it features Ben the PC Guy who explains how Windows Phone is not only a better match for the things you do in your everyday life, but how it is easier and more useful than others. I particularly like the Lumia 920 video (and I am still waiting for my phone to be shipped since it is on back order) and how it shows the awesome camera in low light. I think these ads are also reminiscent of the “I’m a PC” campaign that was launched years ago for Windows. Here are 3 new videos that show you how Windows Phone is a better match.
Nokia Lumia 920: Sarah’s match is a Windows Phone
The Cook Family’s match: The Windows Phone 8X by HTC
Parents find their match with Kid’s Corner on Windows Phone
It was a sad day at the Mall of America today. I decided to return my Surface after 12 days of use. I spoke pretty highly of the Surface hours after buying it (and even listed quite a few reasons why I had to have the device) however after having the device for a little while there were some things I just couldn’t look past.
First things, first – the Surface is a great device. The hardware is of great quality, light, and you get great battery life. It was nice leaving my charger at home in the morning and not worrying about charging it. It was especially nice because the plug is a proprietary plug and there is almost no chance of borrowing one if you forget it. Part of the reason I give it negative marks overall.
The Touch Cover keyboard is actually pretty nice. It takes some getting use to but I feel like you build confidence as you go. I have this ramp up almost every time I go to work and back home since I use an ergonomic keyboard at home and either the laptop keyboard or a USB keyboard at work. Also the cover aspect of the keyboard is great too, though I had many iPad users point out that it was not magnetic and it would not stay closed. I’m sure how much utility that really has since the Touch Cover is one flat sturdy piece of whatever it is and stays closed just fine when I hold it. I think since the iPad covers fold up it makes more sense for it to be magnetized.
Anyway. So, if I like the hardware so much, why did I return it? Windows 8 itself is great. It gives me the flexibility to use Windows in the traditional way as well as offer me a way to drive it using touch. Windows 8 is fast, responsive, stable, and a joy to use. I have used it for some time (ever since the Developer Preview) on my main PC and continue to do so out of choice. I could always go back to Windows 7 but I like Windows 8 too much.
If I like the Surface hardware and I like Windows 8, why did I return the Surface?
Simply put Windows RT isn’t ready for prime time. Remember, Windows RT is not Windows 8. It is a “lite” version of Windows and while it looks like Windows 8 and feels like Windows 8, it is not Windows 8. Windows RT allows you to do pretty much everything you can do in Windows 8 except install your own software. You can only install applications from the Windows Store. I was OK with this when I first bought my Surface, but shortly after I realized that something was missing. Actually a lot of things missing. The app selection now pretty much sucks. I know it is a new platform but to limit the installation of all my familiar (x86) software and then give me an app store with only 5,000 apps was discouraging. I have a Hyper-v server and I can connect to virtual PCs, so this didn’t bother me that much in the beginning.
Confused yet? I say I love the hardware, love Windows 8, I can deal with the limited amount of apps so then why did I return it? Good question. Here are the reasons, in no particular order:
Windows RT is buggy
My network card would randomly disappear and it would never connect to my Wireless N 5 GHz at home on the first try after coming out of sleep. Meanwhile my other 5 devices connect just fine. Other examples of it being buggy range from some websites saying Flash was not detected or needed to be upgraded (even though Microsoft includes its version of Flash in Windows 8), to the Windows Store not being responsive, to the Xbox Music app is nowhere to be found. After the last app update it disappeared, could not be found on the Start screen, not on all Apps, and worst yet when I went to the Windows Store to try to install it, it said I already owned the app and gave me no way to reinstall it. Even a PC refresh didn’t fix it. Only resetting my Surface back to factory default fixed it. Microsoft needs a way to reinstall apps even if they are installed for this particular reason.
Not enough space
It comes with a 32 GB hard drive but you really only get about 15 GB after you count all the space Windows and the restore partitions take. This is still a decent amount of space for docs, but after I sync 5 of my OneNote notebooks, sync my 4 emails accounts, and install a handful of apps I only end up with about 9 GB of space left.
Not enterprise ready
Yes I know these are personal devices, however Android and Apple devices have the ability to side load line of business applications that their company develops and Windows RT (and even Windows Phone) cannot without using Intune. Intune is Microsoft’s cloud based device management system and without this you cannot install LOB applications on your Windows RT and Windows Phone 8 devices. This is a real kicker for those enterprises who already have SCCM 2012 and Exchange. Asking enterprises to introduce one more system into their environment can be just enough for them to make a recommendation against these devices. Licensing also plays a part. Right now it is said that Microsoft may offer licenses for a reduced cost for current SCCM customers however this is not etched in stone yet. I don’t think that most enterprises are going to buy licenses for employee purchased devices. There was some controversy about licensing with Microsoft Office Home & Student 2013 RT for commercial use but Microsoft confirmed that if you buy Office 2013 Professional that license covers Office RT as well.
I know that these are machines that are built for battery life but the performance of the OS is not the greatest. Launching apps (Windows Store and desktop) seemed to take a while to open, some games took a lot longer to open than I am willing to wait, and some games had very poor frame rates too. I feel like most of this will be addresses in updates and patches in the following months but I feel like this should have been ready at launch. Let’s hope Microsoft puts more time into optimizing the OS and drivers.
I knew when buying a Surface that there were only 5,000 apps and I thought that with the combination of remote desktop and my virtual machines at home I could carry out any task I needed to, and I pretty much can. However, it is the combination of not being able to install x86 software and the limited choice of apps in the app store that make the experience sub par. Take for instance SSH. I use PuTTY to connect to a few of my Linux servers to do administrative tasks. This is as simple as just downloading and running an executable on traditional Windows however I can’t because Surface is ARM based. So I searched the app store for an SSH app and… nothing. So now, just to do a simple task I have to connect to VPN, then remote into a virtual machine, then launch SSH and go from there. This example is repeated many times over while the Windows Store is in its infancy. I understand that once the app selection grows this will not be an issue, however these are things I need to do now.
The Surface is a great piece of hardware and overall the experience is OK but I don’t think that this makes up for many of the things that are missing or wrong with Windows RT. I really did give it a fair shot but after having it for almost 2 weeks I can’t say that I recommend these devices for geeks like me. I want more disk space, I want a dual core Intel processor, I want a higher screen resolution, I want more RAM, I want to be able to install line of business apps when my company offers them, and I just want the flexibility of a PC. That was probably one of the biggest things that I learned through this whole experience, is that I want the ability to install and configure anything I want. Yes I will probably never design and write an entire application on my tablet, but I want the flexibility to install Visual Studio for when I need to edit a few lines of code or even for debugging. The same with Photoshop, OpenVPN, Firefox, Chrome, Outlook, and any other piece of software I use on a daily basis. I don’t want to connect to my Virtual PC at home each time I need to do the simplest task and there are times where I don’t have connectivity at all (like now, sitting in the airport.) I start to question whether Windows RT is even worth the trouble for Microsoft. Intel’s new Clover Trail Atom processor is starting to show up in Windows 8 devices and they seem to be just as efficient as ARM processors however it is an x86 processor which makes essentially makes it compatible with all the software you install on Windows 7. After taking all of this into consideration, I packed it up and returned it to the Microsoft store and said so long Surface… I’ll see you when you are a little older, a little bigger, a little heavier, and a little more “Pro”.