I attended my first Tech Ed conference in Orlando this week. I was fortunate to have the opportunity to work for INETA at the conference. In exchange, INETA covered my admission and expenses which would have been prohibitively expensive if I had to pay them myself.

My INETA work involved the following:

  • Working at the Community Leadership Summit the day before Tech Ed
  • Staffing a booth on the Expo floor
  • Volunteering at Birds-of-A-Feather sessions
  • Meetings throughout the week to talk about board business
  • Preparing a sponsor prospectus for the INETA Champs program

This was a small price to pay and I enjoyed most of these tasks. I got to meet some of the other board members in person for the first time and I had a chance to spread the word about user groups to a broad audience.

I gave a presentation at the Community Leadership Summit on attracting volunteers to a user group.

Two of my Birds-of-a-Feather topics were accepted at this conference, so I served as a moderator for these. The topics were "Getting Involved in my Local Developer Community: How is it a Win-Win? " and "Is Windows Azure a Contender for my Next Application?" Attendance wasn't particularly high at these sessions (possibly due to the 530PM and 830AM time slots) but the attendees participated in an active exchange. One exciting aspect of these sessions is that they were streamed live online and INETA volunteers monitored a Twitter hashtag to accept comments and questions from beyond Tech Ed.

Attending Tech Ed gave me the opportunity to spend some time with some members of the Visual Studio team and ask them some questions about the testing tools in VS Ultimate. I've been struggling with some aspects of this for my current project and I now have a better understanding of the capabilities and limitations of these tools.

I was invited to a Q&A with Microsoft VP Jason Zander in which we heard about some directions Microsoft is taking in the future. Unfortunately, I signed a non-disclosure agreement, so I can say nothing about this event except that I'm very excited about this future.

I competed in the Speaker Idol contest, hosted by Carl Franklin and Richard Campbell. Because I won, I now have an invitation to speak at next year's competition.

Of course, I also recorded 5 interviews that I plan to publish on Technology and Friends over the next few weeks.

The busy schedule above left some time to attend sessions. My favourite sessions were Web Sites on Windows Azure
and Building HTTP Services with ASP.NET Web API. I saw some exciting new technologies in these sessions that I can use in my work soon.

Of course, there were many hallway conversations and a chance to meet technologists from all over the world, which is always an opportunity to learn.

My notes on the sessions are below:

Web Sites on Windows Azure

Presenter: Bill Staples

10 free web sites

Supports Classic ASP, .NET 2.0,

Usage info on dashboard

App Gallery: Create blog in WordPress on Azure

WebMatrix 2 (in beta)

Install & download WordPress site

Publish automatically syncs with Azure (no configuration needed)

Publish via

  • FTP
  • Web Deploy
  • Git
  • TFS

Essential Tips for the Windows Azure Startup

Presenter: Michele Leroux Bustamante

  • Avoid web.config for
    • Settings that vary between staging, production
    • Use Web.config transformations
  • Caching
    • Co-located caching (% on each VM)
    • Shared caching (on one VM)
    • Same API
  • Queuing
    • Service bus queues
      • unlimited lifetime
      • 5GB max storage
      • Duplicate detection
      • Guarantee order
    • Storage queues
      • 7 day expiration
      • 100TB max storage
  • Diagnostics
    • Trace.TraceWarning
    • Listeners in webrole
  • Monitor from Outside
    • Monitoring Service
  • noSQL Kool-Aid

If the learning curve for noSQL is great, only use it for "obvious" data (e.g., profile, location data).

  • Enable Social Logins. Simplify signup
  • Don't ask users for too much info
  • Estimate costs
    • Calculate projected costs and revenue based on expected usage in advance
    • What is break-even point?

Beyond Master-Detail: Interaction and Navigation Patterns for Modern User Experience

Presenter: Billy Hollis

List

Hicks Law: Too many choices slow down user

Add 'FIND' capability

Launchpad

Make important buttons bigger

Combinations

Different patterns at different parts of the app

Wizard

Lots of new users

Complex but rarely use

Spreadsheet

Flexible Sort

Allow drag/drop columns

Context switchers

Toolbars & Ribbons

Usually action-oriented

Ribbon designed for en-users (not devs)

Most users don't like toolbars

Galery

Visual array of items

Multi-select

Dashboard

Visualization & navigation

Queue

Next item on top. No naviagation.

Don't use confirmation'

Underused.

Can increase productivity dramatically

Configurator

See changes as you select them

Timeline

Vertical or horizontal layout

Metaphor

Interface resembles something familiar in the real world

May be cute the first time, but gets old over time

Map

Items laid out in real world

Use lat-long

May use geocoding to get lat-long from address.

Viewport

Semantic zoom: Change view as you zoom in & out

For multiple levels of detail

Book recommendation: Mobile Design Pattern Gallery by Theresa Neil

Building HTTP Services with ASP.NET Web API

Presenter: Daniel Roth

VS 2012

MVC app

Scaffolding to create CRUD methods around entity

GetById

If not found, throw httpException (not found/404)

Post

Create new entity

Return HttpResponse

Url pointing to new entity page

ASP.NET Roadmap: One ASP.NET – Web Forms, MVC, Web API, and more

Presenter: Scott Hunter

In release mode, all js files are combined and minified

Put validation on model. Enforced in client script.

Migrations

  1. Inherit from DbMigration
  2. Up() method
  1. Update columns in db

HTML 5 emitted

e.g.,

Page.cshtml

Page.mobile.cshtml <-- Displayed when Page is requested on mobile devices

Signal R

  1. Inherit from Hub
  2. Send() method
    1. Clients.addMessage

Real-time communication with server

Design for Non-Designers

Presenter: Jennifer Smith

Good design makes a product useful, usable

Dieter Rams:

Good design

  1. is innovative
  2. Makes a product useful
  3. Is aesthetic
  4. Makes a product understnadable
  5. Is unobtrusive

Putting things in boxes is not good design

Keep UI focused

Before starting

My ___ app will be the best at _________

Talk through app using low-fidelity prototype

Recommended design tools

Illustrator

SketchFlow (Expression Blend)

Use rule of thirds (Divide into thirds, horizontally and vertically)

Golden Region

Viewers look at apps, pages, pictures, etc via Fibonacci (spiral in)

"Dead center is dead wrong"

White space is OK.

Fonts

Use sans serif fonts

Counter size = space inside 'e' or 'p'. Larger is better