I finally have push notifications working in Space Weather App from Windows Azure. Notifications for all 4 platforms work using one service bus. This simplifies my architecture and support since all of my infrastructure and services already live in Azure. No more costly 3rd party services.
Today I launched Space Weather App for Android, Apple iOS, and Windows. This means it will run on Android phones & tablets, iPhones, iPads, iPods, and Windows phones & tablets. You can check it out here http://www.spaceweatherapp.com/
Sometimes when debugging a web site you are working on, you want to clear out cookies for a single site however you don’t want to clear out all of your cookies. Some cookies you want to leave there, like your cookies that are set by Gmail/Facebook/Twitter/Outlook.com for 2 factor authentication or many other reasons. Up until now I have cleared them all out each time I need to clear cookies for a single web site I am working on. Here’s how you can clear cookies for a single domain and keep those time saving cookies.
- Hit F12
- Click on Network
- Click Clear Cookies for domain
- Click the Chrome menu Chrome menu on the browser toolbar.
- Select Settings.
- Click Show advanced settings.
- In the “Privacy” section, click the Content settings button.
- In the “Cookies” section, you can change the following cookies settings:
- To delete a specific cookie, hover over the site that issued the cookie with your mouse, then click the X that appears on the right corner.
- Click the menu button and choose Options
- Select the Privacy panel.
- Set Firefox will: to Use custom settings for history.
- Click Show Cookies…. The Cookies window will appear.
- In the Search: field, type the name of the site whose cookies you want to remove. The cookies that match your search will be displayed.
- Select the cookie(s) in the list to remove and click Remove Cookie.
- Choose Safari > Preferences, and then click Privacy.
- Click Details.
- Select one website that stores cookies, and then click Remove
- When you finish removing websites, click Done.
A little off topic but I just wanted to share some pictures and a video of our trip to Banff. We flew in to Edmonton, drove to Banff, Lake Louise, and stayed on Canmore. We go to see quite a bit the few days we were there. After a long weekend, we flew back to the States out of Calgary, Alberta.
This is a collection of videos from my phone that I captured while in Banff, Alberta – Canada. Everything was taken using my Lumia 1020 Windows Phone.
ASP.NET Web API is a simple way to create a pretty nice and robust API. I have a need for a simple API and ASP.NET fit the bill. I created an API for my Space Weather application for all of my clients to connect to. The API is pretty simple, it just feeds the clients objects in JSON for them to parse and bind to the UI. After rebuilding my Azure virtual machine, I decided to add some caching to the results. Since Web API doesn’t include an easy way to cache output like MVC did I had to find a solution. For me, the best (an easiest) solution was OutputCaching. It’s super simple to set up.
Get the NuGet Package
Grab Filip W’s CacheOutput library. I am using WebAPI 2. I used package manager to get it:
This handles 90% of it.
Add the Attribute
The rest is just decorating your controllers just like you would for MVC.
[CacheOutput(ClientTimeSpan = 600, ServerTimeSpan = 600)]
In my example, I am telling it to cache the results for both client and server-side for 600 sec (10 min). There isn’t a whole lot of science behind choosing 10 minutes, and I could have written some fancy code to figure out when my scheduled job ran last but I wanted to keep it simple.
So, did it really work? Let’s fire up Fiddler and find out. Hit your web endpoint, and take a look:
HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8
Date: Thu, 14 Aug 2014 04:02:53 GMT
Sure enough, you can see the client is told to cache for a max of 600 and you can see the ETag letting you know that the server is caching.
So why do I choose to cache my output? Simple. I have a micro virtual machine on Azure and I didn’t want each and every web request to retrieve results from my database creating lots of churn and processing resulting in more disk activity and slower results. Before going and implementing this I suggest you first evaluate your needs. My needs are to return slow changing results to mobile clients as fast as possible without creating a lot of churn on the server. I don’t want my customers to wait for results, especially if the result is the same. My results change 4 times an hour and so caching this is the right thing to do in my scenario. With that being said, I think this NuGet package help me meet this goal.
(Hanselman recommends Cache.Cow, although I like the simplicity and familiarity of decorating my Web API controllers with attributes using CacheOutput.)
I have a Windows 8.1 application that is a wrapper around a web site. I have 3 versions of the site that the user can switch between with a control I built. The control sets the iframe source to the respective site. It seems like a recent Windows update broke this (not sure if it was 05/2014 or 06/2014). Here is how I set the iframe’s source:
window.location.href = "https://example.com";
APPHOST9624: The app can‘t use script to load the https://www.example.com/ url because the url launches another app. Only direct user interaction can launch another app.
I have even tried adding the site to the ApplicationContentUriRules in the manifest but it didn’t fix it.
Truth be told, the user is not interacting with the app on this specific event, the control is in a settings flyout and is invoked when the selection changes. BUT, technically it is not launching another app (if I take the error message as is). I’m not launching a new window with that location, I am setting the current window to a new location. It works when the app loads for the first time but not when I hook into an event that is driving from a selection control item changed event. It still works if I target Windows 8.0. I am hoping this is a bug and it will be reversed, otherwise I will have to come up with another solution for changing sites.
Is anyone else setting an iframe source this way in a Windows 8.1 app? Is there a better way to do this?
Usually I post about tech things in my life but this one is a little different. It doesn’t involve any technology at all, well maybe low tech if you count the Visio diagram! Here is our first garden that we planted in our back yard. It is not a vegetable garden, but a flowing garden that will hopefully produce some flowers over the next few years. We got a bit of a late start but hopefully the perennials grow some deep roots before the cold Minnesota winter comes. Here is a diagram with all the plants we used.
I’ll try to post some photos after it grows a little bit more.
Nokia posted the video of my Windows Phone design consultation with Microsoft in San Francisco. Since then I have implemented almost all of the changes to improve the design and UX, and released Space Weather 4. You can see the entire post from Nokia or just check out the video below!
Get Space Weather for Windows Phone.
After a few weeks of working on an updated version of Space Weather I have finally released 4.0. This update is the product of a redesign from Microsoft and Nokia. A few months ago I won a trip to San Francisco where I met a Senior UX and Design consultant from Microsoft who helped me redesign my application. The result was a great new UI and a lot of work added to the backlog.
The last few weeks I had quite a few decisions on my hands. It is one thing to mock up a great looking UI, and it is another to actually implement the UI and bind data to it while still pleasing all of my existing customers. So little by little I started making some of the changes and creating small prototypes and compiling them into a bigger functional application. At first I thought that there wasn’t a way to present all of the data that previous versions had. I even wrested with the idea of turning this update into its own application, a second “lite” app (thanks for talking me out of it Peter) but then I found a way to logically break up all of the information I was presenting. It sounds simple and makes a lot of sense when looking at it now but when I first started re-writing Space Weather 4.0 it was a little overwhelming.
So i broke it down into 5 main parts or pivot. Some pivots have more information that the user can drill into if they choose to.
In this pivot I show the likelihood of seeing an aurora based on the Kp index. The Kp index is on a 10 point scale (0-9) and is updated regularly. The ellipse will move based on the Kp index and will also change colors. 0 is gray, 1-3 is green, 4 is yellow, 5-7 is red, and 8-9 is purple. If it even turns purple we are in for a show!
I also display the most current space weather information. For most people this pivot is all you need to see to get a glimpse of current space weather conditions and if it is likely to see an aurora (Northern Lights).
I used the Flickr API to display images that match the search term “aurora borealis” and filter the results based on images that can be used commercially. The Flickr API was pretty easy to use and there is a NuGet package for this.
In the alerts pivot, I show the active alert count in the pivot header and the alert details on the main page. You can drill into one of the Alert item details to read more about it. Again, on this pivot item’s main page I used the same Flickr API mentioned above but grab a different image.
The forecast section shows the forecast for the next 24 hours. There are different categories for each of the predictions. The image I use in the background is from the Solar Dynamics Observatory (SDO).
This pivot shows space weather over the last 24 hours. It shows the same categories that the forecast shows however this is past activity. The image shown here is the past Kp index.
This is the last section but contains the most information. The Explore pivot is a hub where you can get more information if you like. It contains many images, movies, RSS feeds, and even real-time generated charts for you to explore. Each section is a gallery of media where you can find web cam images, the current solar wind, and even movies of the sun.
After getting my pivots organized and the data wired up I decided to focus on my Live Tiles. Prior to this updates my Live Tiles were live, but not alive. What I mean by this is that the feature was enabled but it showed an image that was hard to make out and didn’t really give the user any valuable information or a sense that it was alive. I decided to surface the Kp index to my Live Tiles, using the same look and feel from the main pivot. I also update the counter based on how many active alerts there are. As an added bonus, if you are using Windows Phone 8.1 they support transparency!
There are a few things I intentionally left out of this release. One is the lockscreen image. I wanted to be sure that I did this feature some justice instead of just cobbling in a few random images like I was doing before. I also left out the current status of each type of space weather reading/storm. I haven’t found an elegant way to do this yet but I have some ideas.
A huge takeaway that I discovered after redesigning my application was to separate your business logic from your UI. Luckily when I wrote my application I followed the Model View ViewModel (MVVM) pattern, so ripping out the UI and starting all over was relatively easy. I reused 100% of my business logic for this update and only added new properties where I needed to. Space Weather is almost 16,000 lines of code and I wanted to be sure I could reuse as much as possible. Space Weather 4.0 looks drastically different than previous versions however since I followed the MVVM pattern almost all of the code behind the UI is the same. I highly recommend following a pattern like this in case one day you decide to give your own app a face lift.
Overall the experience with Nokia and Microsoft was a welcomed one. Dave Crawford pointed out that my design (or lack thereof) was really needing to be simplified and focused. My application is information dense and he helped my break it apart by redesigning my layout into pivots. This helped me organize related content and display it in a more consumable manner, which meant a better overall user experience for my customers. Taking a mock up and advice from him really helped transform my application into the one it should be. I wish I could work with him on refining some of the rough edges it still has however his advice and time was much appreciated and will continue to influence my future applications at home and at work.
You can download Space Weather here:
You can see it in action below:
You can read more about the release here: