Friday, May 17, 2013

Coming Soon: Jeremy on Pluralsight

I am happy to announce that I've been commissioned to produce a course for Pluralsight (

If you're not familiar with Pluralsight, be sure to check it out.  They offer high-quality video training by experts in the field.  There's a 10-day free trial so you can get a taste for what it's like.  And they have a number of free courses, including "Teaching Kids Programming with C#" by Lynn Langit and Llewellyn Falco.

My first experience with Pluralsight was when I needed to get up to speed on ASP.NET MVC (way back in the version 1 days).  Their course gave me exactly what I was looking for: I came away with a good understanding of the technology and its capabilities.  It turned out that my particular scenario fit the technology perfectly, and I went on to create a mobile-friendly web application with ASP.NET MVC.

That was several years ago.  Since then, the catalog has been constantly expanding.  There's lots of good stuff to check out.

And don't worry, I'll be sure to announce when my first course is available.

Happy Coding!

Wednesday, May 8, 2013

Screencast: C# Properties

A couple of weeks ago, I talked a bit about properties: Explained: Properties in .NET.  Since this sample has a lot of clicking and navigating, it's a good candidate for a screencast.

So, if you'd like to see how to navigate around in ILDASM (and also see Visual Studio code snippets in action), you can check out the video posted on YouTube:

Happy Coding!

Monday, May 6, 2013

Prism for Windows Runtime (formerly Kona)

Kona, the guidance package from Microsoft Patterns & Practices for writing Windows App Store LOB apps (previously mentioned here: Application Guidance Update: Kona and Prism), has a new name: Prism for Windows Runtime.

Here are some relevant links.

Download from CodePlex:

A "Getting Started" article from Brian Noyes:

As a reminder, Prism for Windows Runtime and Prism 4 (for WPF and Silverlight) are different packages with different capabilities. As mentioned in previous article, this is primarily due to the differences in the underlying platforms and what makes sense in each environment.

If you build Line of Business applications, and you're moving into the Windows App Store world, it's worth checking out.

Happy Coding!

Sunday, May 5, 2013

Book Review: Don't Make Me Think

I'm still powering through my Reading List for this year.  I recently finished Don't Make Me Think: A Common Sense Approach to Web Usability by Steve Krug (Amazon Link).  The second edition of this book (the one I read) was published in 2006 and is in its 13th printing, so it's been around a while.  But it has stood up to the test of time.

Krug is a usability consultant -- his job is to set up user testing of web sites and report the findings.  This book helps you do the bulk of this work yourself.  As Krug would say, it isn't a replacement for a usability professional, but most of us won't spend the money on one.  This book shows that you don't need to be a professional to get useful results out of user testing.

This is a purposefully short book (under 200 pages with lots of diagrams and pictures).  So, I won't go into too many details.  But I'll point out one or two things that I found particularly useful.

Usable Web Sites
Don't Make Me Think focuses on how to create usable web sites (note: web sites, not web applications).  With that said, you can get a lot just from the chapter titles.  Here are the first 7 chapters:
  • Don't make me think! - Krug's First Law of Usability
  • How we really use the Web - Scanning, satisficing, and mudding through
  • Billboard Design 101 - Designing pages for scanning, not reading
  • Animal, vegetable, or mineral? - Why users like mindless choices
  • Omit needless words - The art of not writing for the Web
  • Street signs and Breadcrumbs
  • The first step in recovery is admitting that the Home Page is beyond your control
This book is purposefully short and has plenty of real-world examples of web pages, how the companies have improved the pages over time, and how Krug would continue that improvement.  This is not a "let's laugh at bad web pages" book; which is good.  A lot of us know what not to do.  Where we need help is in doing it right.

Krug's Laws of Usability
In addition to the chapter titles, we get Krug's Laws:
  • Don't make me think!
  • It doesn't matter how many times I have to click, as long as each click is a mindless, unambiguous choice.
  • Get rid of half of the words on each page, then get rid of half of what's left.
These seem pretty basic.  But I have to admit that this is not the way that I've approached web design (which I'll be the first to admit isn't the greatest).

Krug bases these laws on how people actually use the web.  People don't stop to read every word on a page.  They usually go to a site for a specific purpose (such as to find the address of a store location).  They don't care about the "fluff".  They don't really care about the welcome message.  They are scanning the home page looking for a link that looks like it's "close enough."

If we keep this in mind, the laws make perfect sense.  We want information on our web site to be clearly available and for links to be as obvious as possible.

Usability as Common Courtesy
Chapter 10 talks about the Reservoir of Good Will.  This reservoir can be diminished when the user has trouble finding information, or it can be refilled by easily giving him just what he is looking for.  If the reservoir is depleted, then the user simply abandons the site.

I never thought about usability in this fashion before.  But I've noticed in the last week or so that this is exactly how I use web sites.  For example, I was looking for the hours of the local e-waste drop off location (I knew where the location was, just not when they were open).

I did a couple of web searches but didn't find what I was looking for.  Then I went to my municipality's web site and still had a bit of difficulty finding what I was looking for.  I finally stumbled across the listing of the drop-off locations, but I didn't see any hours listed.  I ended up loading up the car and heading over there only to see a "Closed Mondays" sign on the gate (and guess what day it was?).  I went back to the site later and found the hours buried in a block of text (9 am - 3 pm Tuesday through Saturday).

Krug gives a list of things that can diminish the reservoir, including hiding information that I really want or asking for information that you don't really need (do you really need my phone number to sign me up for an email newsletter?).

Conversely, there are a number of things that help to refill the reservoir such as tell me what I want to know and save me steps wherever you can.

Wrap Up
I would recommend Don't Make Me Think to anyone with a web site.  It will make you stop and think about how people actually use your site.  The examples focus on e-commerce sites (simply for consistency), but the principles apply to whatever web site you may have.  Keep the user in mind, and don't make him think.

Happy Coding!

Thursday, May 2, 2013

May 2013 Speaking Engagements

I've got two speaking engagements currently scheduled for May.  If you're in the area, be sure to stop by.

Wednesday, May 8, 2013
vNext OC
Newport Beach, CA
Topic: IEnumerable, ISaveable, IDontGetIt: Understanding .NET Interfaces

When we use abstraction judiciously, we end up with extensible, maintainable, and testable code.  And interfaces are an important way that we can add abstraction to our code.  As with most of my presentations, we focus on applying these concepts in our code, both by using existing interfaces from the .NET framework and by creating our own interfaces.  Along the way, we find that interfaces aren't that complicated and give us some tangible benefits.

Tuesday, May 28, 2013
San Diego .NET User Group
San Diego, CA
Topic: Dependency Injection: A Practical Introduction

I have a great time presenting on Dependency Injection -- mostly because I can see the light bulbs go on as we go through the samples.  DI seems like an advanced topic, but the concepts are pretty straight forward.    There are tons of techniques, patterns, and tools.  This session covers the basics and will give you a desire to learn more.

Happy Coding!