# Monday, 07 November 2011
Monday, 07 November 2011 16:24:00 (GMT Standard Time, UTC+00:00)
# Saturday, 05 November 2011

This morning, I returned from the DevConnections conference in Las Vegas. DevConnections is actually many conferences held simultaneously at the same venue. I signed up for the a pre-conference HTML5/CSS workshop and for the ASP.NET Connections conference, although I did take in some talks from the Visual Studio Connections track.

This was my first time at a large conference like this, unless you count the FoxPro DevCon conferences I attended 20 years ago. I learned a great deal and was able to connect with a lot of the thought leaders in the industry. I attended Keynotes, sessions, open space, vendor Expo, and the aforementioned workshop.

My trip was enhanced by speaking with some of the smartest people in the software industry. I had a chance to meet and talk with a number of people whose writings and other work had helped and influenced my work over the years, including Mark Minasi, Julie Lehrman, Scott Hunter, and Stephen Walther. I also got to know much better some people I had met in the past. I really enjoyed the time I spent with Suzanna Moran, Paul Litwin, and Joe Guadagno. Of course, I also reconnected with old friends like Jim Holmes, Brian Prince, Seth Juarez, and Kevin Griffin. I met and interacted with many others and I hope they are not offended that I didn’t list them here.

   

I’m still  trying to process everything I learned and I’ve already committed to deliver an HTML5 presentation at Sogeti. In the meantime, here are the notes I took at some of the sessions I attended:


HTML5 & CSS3 Bootcamp for ASP.NET Developers
Todd Anglin, Microsoft
I thought I had a pretty good idea what HTML5 was, but Todd Anglin dove deeper into areas that I barely understood. He packed a ton of information into this 6-hour workshop.
He covered a lot of the new semantic markup tags and attributes;

He spent quite a bit of time talking about JavaScript APIs to access the new features of HTML5. Then he covered CSS3, which eliminates the need for much code and complex CSS in order to achieve some stunning visual effects.

Keynote: Evolving To The Cloud
Steve Fox, Microsoft
Theme = Data, Services, UX
Steve jumped around a lot in this presentation.  He described in general terms the power of the cloud; then invited others on stage to demo these concepts.
Scale up: Task Parallel Library
Scale Out: Job Scheduling algorithm to distribute workload across multiple nodes
"The Internet of Things": Communication between .NET Micro Framework code deployed onto a small device with sensors, communicating with Azure, which can process and analyze that information.

New features in VS11
-new sharepoint item templeate (Silverlight web part; List)
-Auto publish to SharePoint
-Color picker
-HTML: Auto-update end tag when begin tag is changed
-Support for CSS3 styles

Office 365
-Admin portal to manage user security
-SharePoint online

Windows 8: A Reliable Windows, Equipped with Charm — or, Rather, Charms
Mark Minasi
Mark pretended to be a visitor from the future, reviewing the impact of Windows 8. (His most scary future revelation was that in April 2014, Microsoft extende support of Windows XP for the next 5 years).

After decades of Win32, those apps simply don't work. WinRT.
Windows Server 8
-Server 8 will give the ability to turn the GUI on or off.
-Server Manager is Powershell under the hood. Doesn't emit Powershell but does emit XML, so you can configure one server like another.
-2300 Powershell commandlets
-NIC Teaming. Works with cheap NICs.
-DNSSEC. Speedier configuration in Win8. Secure DNS or AD.
-DHCP knows about clustering.
-IPAM (IP Address Manager) keeps track of static addresses
-DirectAccess. Much faster setup configuration.
-DCPROMO replaced by Powershell commands
-Domain Controllers work better as VMs
-Active Directory Users and Computers (ADUC) retires.
-Dynamic Access Control steps up (claims-based auth)
--e.g., Only those users with title="Doctor" can access files tagged with "MRI".
--Can add 'and' and 'or' rules
-Active Directory will manage keys. No need for Key Managment Server (KMS)
-Disk deduping. Eliminate duplicate files, even across network.
-Less RAM required because Win8 dedupes RAM.
-CHCKDSK is less intrusive. Runs in background to find problem areas; Doesn't always require unmounting a drive to fix problems.
-Hyper-V
--Host can support 2TB of RAM
--Each VM can ahve 512GB of RAM

Windows 8
-Start menu => Start screen
-Minimum resolution=1024x768 (recommend 1366x768)
-Asynchronous commands
-Charms. Related to contracts. Allows apps to communicate with one another.
-Hyper-V on Windows 8 desktop
-Wi-Fi Direct. Connect 2 PCs.
-Windows To Go. Save Win8 on a USB drive & boot from it.
-Reset. Installs Windows. Leaves apps & data.
-Refresh. Resets everything to factory settings.

Delivering Breakthrough Insight with SQL Server 2012
Kamal Hathi, Microsoft

Power View
-BI Tool
-multiple axes (e.g., size of data points in scatter diagram)
-Use gestures to sort
-Image recognition to determin search / filter criteria
-Graph animates to show trend over time

Visual Studio
-New project
--Multi-dimensional
--SSIS
--SSRS
Performance
-Filter 2 billion rows in less than 1 second

Top 20 NuGet Packages that a Web Developer Should Know
Scott Hanselman
install-package <packagename>
ELMAH. "TIVO for ASP.NET errors"
 http://www.hanselman.com/blog/ELMAHAndExceptionDrivenDevelopmentFTW.aspx
NewtonSoft
HTML5Setup. Video, audio and font setup. Updates web.config
Entity Framework
modernizr
Running your own nuget server
-Copy packages into a shared folder. Change Visual Studio settings to add that folder
install-package nuget.server
  Creates a service that acts as a nuget server

Bigger, Faster, Stronger: Optimizing ASP.NET 4 and 4.5 Applications
Mads Kristensen
whyslow.com
gzip compression
<Cache ... cacheControlCustom="public" />
  Allows proxy servers to cache.
Image Optimizer. VS extension. Adds menu item; Tools | Optimize images.

WebMatrix 2: Love the Web Again
Scott Hunter
Starter site
@Recaptha()
Uncomment in web.config to enable Twitter, Facebook

Umbraco

New in WebMatrix 2
-Intellisense
-Full support for HTML5
Scripts.Add("jquery.validate.js");
Validation.RequireFields("firstname", "lastname");
Validation.Add("age", Validator.Integer);

Developer Preview: Deep Inside the Microsoft Stack of Love
Scott Hanselman

Markup mode
-click on server controls to see dialog box
-HTML5 support. Intellisense and new attributes of controls that emit HTML5

Validation.

C# Design Patterns
Seth Juarez

Decorator pattern
  Extend without extending
  i.e., Extend without subclassing
  Power of decorator pattern is that you  can chain decorators

Proxy pattern
  ctor
   if (_foo == null) {_foo = new Foo();}

Bridge pattern
  Bridge vs Decorator:
   Bridge does not implement interface
    Cannot chain
    Bridge allows you to inject functionality

Entity Framework Validation
Julie Lehrman

[MaxLength(50)]
[MinLength(2)]
[RegularExpression("...")]
[CustomValidation(typeof(xxx),"rule")]

IValidateableObject

ValidateEntity
Not called explicitl.
Called automatically on savechanges()
Can override

Keynote: The Future of Software: NUI: A New Genre of UX
Tim Huckaby

Mostly videos of cool things being done with .NET
Windows 8: Metro vs Desktop. 2 modes exist side-by-side but don't communicate.
Windows Build architecture diagram showed .NET as a tiny square. Misleading. .NET is a major player in Windows 8.
Virtual objects interacting with other virtual objects
Virtual objects interacting with real-world objects
Hardware allows you to manipulate software by thinking.

Functional Programming in C#
Oliver Sturm

Currying (Haskel Curry)
Convert a function w/ multiple params into a chain of 1-param functions. Each fn returns a fn.

Composition
Create a new function to combine 2 functions

Function Construction
Creating functions out of existing functions
e.g., composition


DevConnections 2011 Photos

Saturday, 05 November 2011 21:24:10 (GMT Standard Time, UTC+00:00)
# Monday, 31 October 2011
Monday, 31 October 2011 16:22:00 (GMT Standard Time, UTC+00:00)
# Friday, 28 October 2011
 #
 

We arrived at the pub ready to celebrate.

"Where's Leon?"
"I thought you brought him?"
"He must be back at the conference site?"
"Did anyone call him?"
"I think his cell phone is out of charge."
"I'll get him on Twitter"
"I'll drive back and get him."

The bad news is that we left our keynote speaker back at the conference venue.

The good news is that was about the only thing that went wrong at GANG10.

Almost a hundred people showed up to take in the tenth anniversary celebration of the Great Lakes Area .NET User Group (GANG). Those who gave up their Saturday got to hear six excellent speakers giving six great presentations.Most of these speakers were those who had built GANG in the early days to the model it is today. The lineup was impressive, as you can see below

Speaker Topic
Leon Gersing You
Bill Wagner Async Programming: Past, Present and Future
Josh Holmes HTML5 for Mobile
Richard Hale Shaw Programming in the Zone: Learning to Monitor and Manage Your Mental State and Discipline
Darrell Hawley A Tale of Project Management
Godfrey Nolan Executable Requirements or BDD for .NET

In addition to great technical content, no one left hungry. A continental breakfast was followed up by a barbecue lunch from Lockhart's of Royal Oak, which was followed up by afternoon cider, donuts and apples from Franklin's Cider Mill.

There were also some fun videos showing off the history of GANG. One video featured old photos of GANG meetings, officers, speakers, and members; the next showed technology leaders from around the world wishing GANG a happy birthday; and the final video was a series of video clips of GANG presentations from the past couple years.

As at all GANG meetings, there was plenty of opportunity to network with and learn from other bright developers in the area who were attending.

Before heading home, we gave away thousands of dollars in prizes.

My friend Jim even agreed to videotape every presentation. Watch this site to learn when these videos are edited and published.

 

Feedback was universally positive. An online survey e-mailed to attendees a few days after the event returned the following comments:

"Thanks for organizing it!"
"I wished we didn't have to rush through the last speaker."
"It was a great event, different from a user group and not the typical single track. Enjoyed it a lot and would love to see one more often."
"Very much enjoyed all presentation. Actually liked focus of event on "non coding/super technical" topics."
"Enjoyed networking with new people, getting some new project ideas, and learning about some new techniques."
"Great Event"
"really good event:
"It was a great event and i learned new good work technique. Special thanks to LEON GERSING.:
"LEON GERSING's topic was very inspiring to my career and life!"
"GREAT event. Can't wait for GANG 20. Thanks!:
"I wasn't just satisfied. This was an awesome event! Thanks to David Giard for putting together this fabulous event."
"Had a great time. Thanks for letting me participate!"
"Very nice job!"
"I was hoping for more technical speeches, overall very interesting discussions and the presenters were very knowledgeable."
"ty"
"Many thanks to all those who made this event such a success."

  

I had a blast at GANG10 and I was thrilled to see that everyone else seemed to be enjoying themselves.

And Leon eventually made it to the pub, where we were able to celebrate a successful celebration.


Photos from GANG10

Friday, 28 October 2011 17:56:00 (GMT Daylight Time, UTC+01:00)
# Monday, 24 October 2011
Monday, 24 October 2011 05:10:07 (GMT Daylight Time, UTC+01:00)
# Thursday, 20 October 2011

I've been a technical consultant for a long time. I've been actively involved in the Development Community for almost as long.

For those who aren't familiar with the phrase, the "Developer Community" refers to a loose-coupled network of software developers who communicate at user groups, technical conferences, and via various social media channels. Some people are only involved enough to show up and listen to presentations or to take part in the conversations initiated by others. Other people are actively leading these conversations: They are blogging; speaking at conferences and user groups; taking leadership roles in community organizations; and organizing educational events, such as code camps and give camps.

I fall into the latter category.  I run a user group, maintain an active blog, speak wherever I'm welcome and often initiate conversations with strangers at conferences. I've been on the planning committee of a bunch of events and I led the planning of the recent GANG10 conference.

All these activities take a lot of time - time that could be spent billing customers or other tasks directly related to my day job.

So why bother? Why spend all this time and effort? Does my consulting career suffer because of my community involvement?

I have a lot of reasons for participating in the Development Community, but I won’t hide the fact that my own enjoyment is one of them. I'm involved in the community because I enjoy it. It's a lot of work, but I get gratification from helping others to learn and from showing off what I've learned. I also have made a number of friends in this community of bright people and I love the social interactions it brings me.

But is enjoyment or helping others enough of a reason? Is altruism sufficient motivation for community involvement? Can a consultant actually boost his career by spending time in the community?

I have found several tangible benefits of community involvement. Here are a rewards I reap from my community involvement.

It helps one’s reputation. If people see me active in the community or hear me speak, they are more likely to remember my name. If I’m doing a good job in public, that provides credibility. I've been on a number of projects where the customer knew about me in advance because of a talk I gave or a blog post I had written or because of my involvement with user groups.

Education. I can only learn so much on my own. Interacting with smart people is a great way to transfer knowledge. Not only can others teach me the nuts and bolts of a technology they've spent time with; but they can show me how they have applied that in a real-world situation. There is simply not enough time to gain real-world knowledge in every technology. Learning from the trials and errors of others is a way around that limit.

Knowing who the experts are. Every day, I encounter new challenges. Sometimes I can conquer these challenges on my own; but sometimes I need help from someone who has been there before. Recently, I needed help on a security issue. I reached out through Twitter and a developer in Columbus, OH volunteered to help me out for a few hours. I was in my car the next morning happy to make the 3-hour drive in exchange for his help. If I have a network of experts in a variety of topics, this exponentially expands the amount of knowledge that I have available for my customer.

Exposure to new technologies. New software is released every day and this can be overwhelming. Having a chance to hear what tools others outside your organization are using is invaluable in managing this flood of information. Interacting with people outside your job exposes you to those working on other projects, products, industries, and technologies.

Finding new work. As you interact with the community, you hear about companies looking for work and about consultants looking for help. Each of these is an opportunity for more billable work. I’m seldom actively selling, but I always have my ears open for opportunities.

Recruiting. It's much easier to recruit consultants if they know you and your organization. Community involvement is a great way to get that exposure. The flip side is that you meet many quality people who are looking for work through networking at user groups and conferences. These events give you a chance to get to know them in an informal setting and form an opinion about their intelligence, skill set and personality. I’ve found this better than a formal interview process. Involvement in the community typically means a passion and dedication, which are qualities you probably seek in your employees.

For me, participation in the community and my consulting career go hand-in-hand. One helps and complements the other. In the foreseeable future, I will continue to devote time and energy toward both.


Note: I am grateful to the following people, who contributed ideas to this article. I know most of them through the developer community.

  • Matt Ruma
  • Brent Stineman
  • Keith Elder
  • Elizabeth Naramore
  • Susan Anspaugh-Yount
  • Seth Petry-Johnson
  • Samidip Basu
  • Rick Schummer
Thursday, 20 October 2011 12:33:00 (GMT Daylight Time, UTC+01:00)
# Monday, 17 October 2011
Monday, 17 October 2011 22:50:00 (GMT Daylight Time, UTC+01:00)
# Monday, 10 October 2011
Monday, 10 October 2011 23:12:00 (GMT Daylight Time, UTC+01:00)
# Sunday, 09 October 2011

I have a busy month coming up. Here are my confirmed speaking dates the next 5 weeks.

On Oct 12, I will be the host of a panel discussing "The Impact of Windows 8" at the Ann Arbor .NET Developers Group  in ann arbor, MI. Link

On Oct 29, I will present "Real World Lessons with Windows Workflow Foundation" at the Ann Arbor Day of .NET in ann arbor, MI. Link

On Nov 5, I will present "Data Visualization: The Ideas of Edward Tufte" at 1DevDay Detroit in Detroit, MI. Link

On Nov 17, I will present "Data Visualization: The Ideas of Edward Tufte" at the Detroit Area FoxPro Users Group  in Southfield, MI. Link

Sunday, 09 October 2011 05:05:30 (GMT Daylight Time, UTC+01:00)
# Wednesday, 05 October 2011

Last weekend, the Great Lakes Area .NET User Group (GANG) celebrated its 10th birthday with an all-day technical event in Southfield, MI. In addition to great speakers, great presentations, and great food, I created three videos to commemorate the last ten years. These videos are below. Enjoy.

Photos
 
Happy Birthday GANG!
 
GANG Presentation highlights
Wednesday, 05 October 2011 19:18:08 (GMT Daylight Time, UTC+01:00)