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)
- Web Deploy
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
- Co-located caching (% on each VM)
- Shared caching (on one VM)
- Same API
- Service bus queues
- unlimited lifetime
- 5GB max storage
- Duplicate detection
- Guarantee order
- Storage queues
- 7 day expiration
- 100TB max storage
- 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
Hicks Law: Too many choices slow down user
Add 'FIND' capability
Make important buttons bigger
Different patterns at different parts of the app
Lots of new users
Complex but rarely use
Allow drag/drop columns
Toolbars & Ribbons
Ribbon designed for en-users (not devs)
Most users don't like toolbars
Visual array of items
Visualization & navigation
Next item on top. No naviagation.
Don't use confirmation'
Can increase productivity dramatically
See changes as you select them
Vertical or horizontal layout
Interface resembles something familiar in the real world
May be cute the first time, but gets old over time
Items laid out in real world
May use geocoding to get lat-long from address.
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
Scaffolding to create CRUD methods around entity
If not found, throw httpException (not found/404)
Create new entity
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.
- Inherit from DbMigration
- Up() method
- Update columns in db
HTML 5 emitted
Page.mobile.cshtml <-- Displayed when Page is requested on mobile devices
- Inherit from Hub
- Send() method
Real-time communication with server
Design for Non-Designers
Presenter: Jennifer Smith
Good design makes a product useful, usable
- is innovative
- Makes a product useful
- Is aesthetic
- Makes a product understnadable
- Is unobtrusive
Putting things in boxes is not good design
Keep UI focused
My ___ app will be the best at _________
Talk through app using low-fidelity prototype
Recommended design tools
SketchFlow (Expression Blend)
Use rule of thirds (Divide into thirds, horizontally and vertically)
Viewers look at apps, pages, pictures, etc via Fibonacci (spiral in)
"Dead center is dead wrong"
White space is OK.
Use sans serif fonts
Counter size = space inside 'e' or 'p'. Larger is better