Last week, I was doubly fortunate. First, because I had the opportunity to attend my second Tech Ed. Although I attend a lot of conferences, the large, commercial conferences tend to be out of my price range. But more importantly, I was fortunate to be invited to speak at Tech Ed this year. This was by far the largest in-person event at which I have ever spoken and it was a great experience!
I arrived in New Orleans Saturday night and had dinner with Richard Campbell and Tibi Covaci - two of the smartest people I know.
Saturday morning, I woke up early and took a bus with a bunch of volunteers to a New Orleans neighborhood still recovering from the devastation of Hurricane Katrina 8 years ago. Tech Ed partnered with several local charities to invite a busload of attendees to help build houses in this neighborhood. You can read more about the event here.
A morning pounding nails left me exhausted but a hot bath later I was ready to attend the INETA Meet and Greet - a chance for those in the developer community to connect with one another. It was also a great chance for me to catch up with others on the INETA Board of Directors, an amazing group of people who put a lot of effort into making the developer community better.
My presentation was scheduled for Monday afternoon, so I spent most of the morning preparing for it. The topic was "Effective Data Visualization" - a talk I have given many times in the past. I was nervous but the presentation went well and the 70 minutes flew by. Over 200 people attended the session and several people approached me afterward to tell me how much they enjoyed the talk and what they learned. Microsoft Evangelist Brady Gaster was kind enough to sit in my session and provide some valuable feedback on my presentation skills. You can watch a recording of my presentation here.
At Tech Ed last year in New Orleans, I won "Speaker Idol" - a competition among those who have never presented at Tech Ed before. Carl Franklin and Richard Campbell of .NET Rocks fame host the contest in which each contestant must deliver a 5-minute presentation, followed by critiquing by a panel of 4 judges. A heat takes place each day during lunch and the finals are held on the last day of Tech Ed. As last year's Speaker Idol champion, I was asked to be a judge this year. The quality of the competition was amazing this year and I was excited to see Jeff Fritz - whom I met at last year's Speaker Idol - finish as runner-up this year. The champion was Jessica Devita, who gave an excellent presentation on Office 365 Migrations. I had a blast judging this event and I'm grateful I was asked to do so.
One advantage this conference has is the number of people on the Microsoft product teams who attend and make themselves available. One section of the trade show floor is designated "Ask the Experts" where Microsoft employees and industry experts make themselves available to answer questions of attendees. I took advantage of this opportunity, getting answers to my question about how to configure startup options for Lync (the menu is hidden until you click the 'Gear' icon); and my question about how to configure DNS to point to my Azure Web Site without prefacing the URL with "www" (I need to add the URL to the "MANAGE DOMAINS" list in the Azure portal).
On Wednesday, I volunteered to work one of the Ask the Experts area and I answered a number of questions about Visual Studio.
Tech Ed features over 700 sessions, which can be a bit overwhelming. I managed to catch a few of these - some in person and some via recordings. My notes are at the end of this article. I'll likely be watching some more videos during the coming weeks. They are available at http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013#fbid=-b30gJBZH1s
Even without Tech Ed, a few days in New Orleans is a pleasant experience. The hotel (Loews) was great; I explored the French Quarter in the evenings; Thanks to Becky Isserman, I experienced my first Beignet (at Cafe du Monde); I attended a number of parties thrown by sponsors; I had dinner with many old and new friends, including Mihai Tataran, Mark Minasi, Brent Stineman, Dustin Campbell, Chris Woodruff, and too many others to list here; I ate too much excellent spicy food; and I walked so much that my feet ached by the time I left.
The only downside was that I had to leave a day early to attend my son's high school graduation, so I missed the closing party at the Louisiana Super Dome that featured a concert by Tina Turner.
All in all, Tech Ed was an amazing experience and I hope to be invited to speak again next year.
Session Notes
KEYNOTE
by Brad Anderson
video
Key Changes to Azure
BizTalk in cloud
Billing prorated by the minute
Web sites now support SSL
Brownfield Development: Taming Legacy Code with Better Unit Testing and Microsoft Fakes
by Peter Provost and Joshua Weber
http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/DEV-B331#fbid=i3RgnF-27j2
Legacy Code=Any code without tests
Risk of change outweighs value of new features
Start writing tests
Pick something you know; then another thing you know
What test
Code you will change
Code that affects what you change
Test to understand code
Do not test
Irrelevant edge cases
Unrelated working code
Recommended:
Working Effectively with Legacy Code by Michael Feathers
Large methods are painful
Do too much
Need to understand it all to make a change
Solution
Refactor into smaller methods
Single Responsibilty
Use SENSOR variables
private Object SENSOR;
this.SENSOR = somevariable;
Shim/Seam:
Change what a method does
Requires a scope with using()
Visual Studio Tips and Tricks
by Dustin Campbell and Scott Cate
video
Solution Explorer
Expand class: View members
Right-click class or method: Scope to: Used By
Filter pending changes
Common metaphor
Back arrow
CTRL - Last cursor position
CTRL SHIFT - Reverse direction
View | Code Definition
Always shows definition in a window without navigating away
CTRL ,
Navigate To
Global Search
CTRL SHIFT V
cycles through items on clipboard ring
SHIFT ALT F11
Prompt which nested function to step into
Building Modern, HTML5-Based Business Apps on Windows Azure with Microsoft Visual Studio LightSwitch
by Beth Massi
video
Rapid Application Development for data-based apps
Handles CRUD for you
Single Page app
"Responsive Design": Layout changes as screen size changes
1. Start
2. Describe your data
3. Create screens for common tasks
Customize screens
Define custom queries
Design or Die: The Challenge to the Microsoft Developer Ecosystem
by Billy Hollis
video
Software landscape is changing
Customers expect apps to work on different devices
Layering information in a single panel is now possible
You don't have to be as good as professional designers; You have to be better than you are now
Need basic understanding of composition and a process
Data Grids tend not to be good for touch
If we expand size of cells to touch, less data on screen
OK to have incomplete metaphors; Mind fills in the details
Gutenberg Principle
In left-to-right reading cultures, people tend to scan rectangular surfaces from top-left to bottom-right.
Fitt's Law
Big buttons are easier to find and use
Hollis: If buttons are too large, insulting to user (Fisher-Price principle)
Hick's Law
Too many options confuse / slow down users
People like wide open spaces
Screen real estate is no longer as valuable as it once was. Easy to swap screens.
Recommended books
Universal Principles of Design
Designing with the Mind in Mind
Keys for Design Process
Create multiple design. Compete for best one.
Collaborate
Iterate
Starts with paper (tools constrain your brain to what you know how to make the tool do)
Observe users in the field
Present multiple prototypes
Focuses users on differences between options, rather than nitpicking limitations of a design
TypeScript: Scaling Up JavaScript
Jonathan Turner
video
JavaScript Designed to
Client
Server
work on any OS
(so does Typescript output)
JavaScript code works in TypeScript
Compatibility: Can call into 3rd party javascript libraries from Typescript
Type system
Statically typed
Better Intellisense
Type-checking only at design-time (removed at compile-time)
http://www.typescriptlang.org/
"Play" link: Write Typescript: See compiled JavaScript