Archive for category Technology
DAUG Kick Off
Posted by Jayson in Technology, Windows Azure on 2011-05-11
Tomorrow, May 12th, I will be presenting at the Microsoft DTC office in Colorado as part of our kick off event for the new user group Denver Azure User Group or DAUG (“dog”) for short.
I can’t remember the last time I presented in front of a big crowd so this should be quite interesting. I do know I’m very excited to do it especially because I’ll be talking about Windows Azure, a technology that I have grown pretty close to over the last year.
Today, I’ll be working on the presentation itself. Though I’ll be the primary presenter, principal consultant Seth Crichton will be presenting the “business” part of the kick off. I’ll be covering the high level, technical topics.
So far, at least 20 people are attending.
To learn more about this, visit http://www.denverazure.com/events
Windows Phone 7 Review – Part I
Posted by Jayson in Technology on 2011-03-07
I’ll be posting some reviews of the Windows Phone 7 (WP7) over the next few days. They’ll be primarily geared towards how the experience compares to Android-based phones. I recently just went with WP7, pretty much right at the last minute…where I went to the store thinking I would get an Android. Several reasons to this, but outside the context of these posts.
First, a little background. My first smartphone was an unlocked HTC Tornado (branded iMate SP5). I went through Windows Mobile 6.0 and 6.5 on that phone. Two years ago, I went with the HTC Dream (branded T-Mobile G1). This was a huge change. This meant migrations from Hotmail to Gmail, etc. I’m at it again. Instead of upgrading the G1 to a Samsung Galaxy S 4G running Android 2.2, I instead went with the HTC HD7 running Windows Phone 7.
This first review will mostly be subjective. I plan to get into more technical details in later reviews…but I want to keep this post short and just give my first impression from the last 24+ hours of using it. These are my impressions:
- Plain and simply, this phone, overall, is beautiful. The phone does not feature a Super AMOLED screen, like the Galaxy does, but instead uses an S-LCD TFT LCD. Everything is crisp and the colors are amazingly vibrant. The blacks are very deep and the white is flawless. This makes for very easy reading of text when contrasted together…which is what you’ll find when reading emails and such. Glyphs and vectors look super smooth and have never noticed and pixelation. Finally, this screen is huge. It is 4.3 inches, which makes the phone pretty big, too. But is it? I’m a little asian guy so my hands aren’t huge and I’ll be the first to admit that I was a little worried about this…but in all honesty, the size of the phone is just right. I think we’ve all been stuck in smaller form factors that a bigger phone like the HD7 was a shock.
- I would consider this phone more of a “horizontal” phone where it’s focus is providing featured tasks no matter which apps are servicing those features. A prime example is the People feature. It aggregates updates from social sites such as Windows Live, Facebook (and soon to be Twitter) all in one location. The task is that you want to see updates. You don’t necessarily care where the update is coming from, you just want to see them. Android phones are more “vertical”. They provide an enormous application base and each application just does it’s own thing. Sure there are integration and aggregation points in Android, but I feel that WP7 is more geared towards getting things done. Those commercials you see on TV…this is what they’re talking about.
- Coming out of idle (i.e. turning the screen on) presents you with a nice screen that shows you a nice summary. Date, time, upcoming calendar events, battery life, signal strength are cleanly displayed. The background is something you can pick. There wasn’t much to choose from the default set of pics but the one I chose pleases the eyes nicely. The most important thing I like about it is the upcoming events, which I’ll talk more about later.
- I love that the speakers are on the LCD side. On the G1, the speakers were on the back, which means I always had to turn the phone over to do speakerphone.
- The buttons on the sides of the phones are not that desireable. I find it hard to turn the phone on. It seems the button is just a tad bit hard to push, so I pretty much have to get an opposing leverage to push it. Turning it off is more of a pain than turning it on, though. When the phone is off, the phone is obviously not active and I can hold it in many more places, include the screen. However, when it’s on, i have to make sure i grab the edges so I don’t accidentally touch the screen. I will say that there are natural places of where to grasp this phone from so I think this will just be a learning process. And remember, my hands aren’t huge. I think the volume buttons on the right are too flush. It looks nicer when it’s flush but sometimes, I second guess if I’m actually pushing the buttons when i want to turn it up.
- Navigating through the phone, and especially working through apps takes some symbol recognition. It’s fair to say that WP7 wants users to recognize symbols on the phones as buttons and getting used to that rather than supplementing the buttons with actual text. Thus, there’s some learning curve here. But, the cool thing is that each set of buttons are actually accompanied by text, they’re just hidden. There’s a special button that slides the buttons up that reveals the text for each button.
- Integration with other services such as Facebook, Outlook, Hotmail, Yahoo, etc is awesome on this phone. I read a review of how hard it was to integrate with Outlook. Completely not true. It probably took me 2 minutes to do the integration, and a majority of that was simply launching Outlook to look at the Account Settings to get the server information and then typing those into the phone. The sync (for 7 days worth) took about 30s. Once integrated with Gmail and Outlook, it aggregates all the calendar items into one calendar. Very nice. I don’t have to look at 3 calendars. All contacts are also integrated, so I don’t even need to once again migrate from Gmail to Hotmail. I believe there is an algorithm for duplicate matching, too. I happen to have some of the same contacts in both Hotmail and Gmail and I don’t think I’ve seen a single dupe in my contacts (except for contacts where I only had an email and no first/last name).
- Okay maybe I will talk about why I went with WP7 at the last minute. I think the mobile world is simple when it comes to the players in the market. Either the player will succumb or it will succeed. Obviously, the Android market is HAWT! Apps coming out of the ears and incredible features being delivered at astounding rates. Microsoft has been in this market for a very long time and they simply keep failing to stay abreast. But, they’re still alive. So the simplicity that I was talking about is specifically talking about my thought that either Microsoft will survive this market or it won’t. It’s really that simple. I believe that it will…so for now, I’m going to put my eggs in that basket. They have a lot of catching up to do, which is what this item is going to talk about: Maps.
Bing Maps has come a loooooooooong way and I think it has surpassed Google maps. Sure, it play catch up and implemented all the features the Google Maps has…so what. It’s there now. Google Maps can take the credit, that’s fine. But the maps in Bing are also beautiful. But hey, I use both so I’m not a Google Maps hater or anything. But here’s the downside. WP7 offers mapping capabilities using Bing Maps. And it feels great, especially with zooming and swiping around the map. However, WP7 DOES NOT offer an integrated solution for Navigation. This, in my opinion, will turn A LOT of people off. Including myself. But like I said, I firmly believe in Microsoft’s abilities here which indirectly means that I while they’re playing catch up, they will implement the same navigation features that Google Maps for Android does. Without this feature, Wp7 will die.
Now, WP7 does include NavTech mapping with the phone as a 3rd party app…but are you kididng me?! Why should I subscribe to a navigation service when it is free ‘on the other side’?? Nobody will pay for that…and the ones that do are the ones that are desparate for a mapping application.
But here’s the deal with this. When Android first came out, it did not have navigation (btw, by Navigation, I mean turn-by-turn navigation). That feature came later. And when it wasn’t there, everyone was okay simply pulling up the map, seeing where you were, and making your own route. That in itself was a powerful feature… so the problem for WP7 is that, even though it offers that very same thing, Android has set the bar pretty damn high. - The On-Screen keyboard is soooo easy. It beats the physical slideout keyboard on the G1. It’s just that simple. Now, it does not offer the Swype capabilities that Android 2.2+ does. This is kind of unfortunate but it should not be a deal breaker. I’m hoping though that Microsoft will offer something like it…it is pretty awesome watching my wife swype with her Galaxy.
- Finally, I’ll just end with this. There currently is no voice texting. I want that feature. I think one day it will save my life..yes, I’m known to text in the car…but dont hate. I actually do not do it a lot…but there are just times that I do. I want this feature and I think Microsoft is on it’s way. It’s voice recognition is really good. By that, I mean that when doing voice commands like “Call Amy”… and it finds multiple numbers for Amy (i.e. Mobile, Home, etc)… in my G1, it would prompt you with a list of the numbers and having you touch it. With Wp7, if the same thing happened, it would return a voice that asks which number to call, so you just reply back with “Mobile”, for example. In other words, it’s almost like you’re conversing with the phone. Of course, I can also say “Call Amy Mobile”.
Visio 2010 and the Missing ORM Shapes
Posted by Jayson in Technology on 2010-08-26
If you’re looking for ORM (Object Role Modeling) shapes in Visio 2010, you won’t find them. This Microsoft KB verifies this.
But, you can still download them, here. The shapes in this download includes Express-G, ORM, Jackson and ROOM.
I wonder why Microsoft went through the effort of removing them.
How to Validate a Facebook Canvas Page
Posted by Jayson in Technology on 2010-08-25
Facebook has good documentation on how to authenticate a request to your canvas page. You can find that documentation here.
However, if you’re developing your page in ASP.NET (WebForms or MVC), there’s a few things in the documentation that may throw you off. The remainder of this post assumes you’re developing a Facebook application in ASP.NET MVC and your Facebook application is set as iFrame (for authentication).
When your application is set as iFrame, the Facebook parameters are contained in the request parameters (and not in cookies as you may be lead to believe from the use of the keyword in the documentation). The purpose of validating a canvas page, is to ensure that the request IS coming from Facebook. Therefore, Facebook has computed a hash value (called a signature) with all the (Facebook) parameters + your application’s secret key. So, in order to verify, you just have to perform the same computation and compare your computed signature with Facebook’s. This works because only you and Facebook should know your application’s secret key.
Here’s a snippet of code that you can use to perform that verification:
public static bool IsRequestValid(string applicationSecretKey, HttpRequestBase request) { bool valid = false; string originalSignature = request.Params["fb_sig"]; if (!string.IsNullOrWhiteSpace(originalSignature)) { // Step 1: Generate an input string // i - Order all "facebook" parameters alphabetically // ii - Remove the preceeding 'fb_sig_' characters // iii - Concantenate them all string input = string.Join("", from p in request.Params.Cast<string>() where p.StartsWith("fb_sig_") orderby p ascending select p.Remove(0, 7) + "=" + request.Params[p]); // Step 2: Append the application's secret key input += applicationSecretKey; // Step 3: Compute a signature // i - Compute an MD5 hash with the generated string // ii - Convert the hash into hexadecimal and concantenate them var data = HashAlgorithm.Create("MD5").ComputeHash(Encoding.ASCII.GetBytes(input)); string computedSignature = string.Join("", from d in data select d.ToString("x2")); // Step 4: Compare with the orignal signature if (computedSignature == originalSignature) { valid = true; } } return valid; }
This uses LINQ quite heavily and also uses String.Join in favor of String.Concat or StringBuilder because of the reported performance advantage the Join method has over the other ones.
Happy Coding!
MCPD Achieved!
Posted by Jayson in Technology on 2010-08-19
Well, it’s been a long time coming but I finally passed the 70-554 upgrade exam. This exam is the UPGRADE: MCSD Microsoft .NET Skills to MCPD Enterprise Application Developer. The last time that I attempted this, 1+ years ago, I failed it with a score of around mid-600’s where the passing score is 700. Today was a different story.
The exam is broken up into two sections. Here were my scores:
- 766 on TS: Microsoft .NET Framework 2.0 – Distributed Application Development (aka 70-529)
- 809 on PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework (aka 70-549)
So, I believe it just takes the lesser of the two, so I passed it with a 766 score!
Now, I get to relax a little bit after having spent a majority of the last 3 days (actually since Monday) reading two MS Press books:
- 70-529 Microsoft .NET Framework 2.0 Distributed Application Development
- 70-549 Designing and Developing Enterprise Applications Using the Microsoft .NET Framework
Here are some raw notes regarding some of the questions in the exam that I took right after getting back to my desk:
- 2 policy files?
- axd benefits?
- assert.inconclusive?
- sign, signandencrypt (several questions on message encryption)
- routing, passwordoption.includeaddress or includebody
- ws-addressing or ws-message
- networkcredentials used if usernametoken error
- lots of “evaluate” questions
- logging questions: event log vs db vs text vs axd
- wse attachment, use .Save(bytes) or use SoapContext?
- gacutil vs regasm vs copying if component/assembly can’t be found error
- question about performance spike with an asp.net counter for # of restarts, caused by unknown and disable recycling or caused by config recycling
- use sql server for session state vs moving the business logic to asmx on a “logical design review” question
- is trace filter enabled under wse config section or system.diagnostics?
Since, I’ll most likely be attempting the upgrade path to the MCPD .NET Framework 3.5, I need to hammer these topics that gave me the hardest time.