Saturday, June 28, 2008

The Unofficial NBDN Survival Guide

Well, you're probably looking at this because you're thinking about taking the Nothin' but .NET course that is offered by JP Boodhoo. Maybe you've even signed up! Congratulations. This is hands-down the best .NET training out there. It's because of JP's passionate attitude, his fearless coding nature, and his real-world industry experience with .NET applications.

I attended the June 2008 class in Vancouver, where we tried to rename the course to ".NET Fever", unsuccessfully I might add. :) After making it all the way through, I have collected some thoughts to help you get an expectation for what's coming.

Before the course:
  1. Set aside some time the week/weekend before the course to prepare - watch the videos, and do the exercises - this is so important
  2. Make sure that you understand mock frameworks and unit testing - don't just read about them, make sure you use them - download them and play around a bit
  3. Plan to stay in the hotel where the course is being offered - there are early mornings and late nights - and usually both
  4. Plan to disconnect from work - it will be hard to check e-mail or take phone calls

During the course:

  1. Meet, talk to and pair program with everyone at some point or another
  2. Make sure that you get a turn or two at the keyboard, even if you're not the one in your pair who is "getting it" - this is important and is the best way to learn it and get value out of the course
  3. Ask your questions - all of them
  4. Don't give up - you will probably get lost on a subject or two, but just keep trying

After the course:

  1. (put your own list here)

This course will challenge you in new and exciting ways! You will surprise yourself at how much you will learn and grow in just this week. Some of it will be technical, some of it professional, and maybe even some of it personal.

You just took the proverbial red pill. Good luck!

Wednesday, March 12, 2008

Nothin' but .NET Vancouver

OK, I've been bugging JP Boodhoo for as long as I can remember to host a session of his famous Nothin' but .NET boot camp style workshops somewhere either close by or really interesting. I think I have the best of both worlds when I found out he is doing a Vancouver session in June. I'm booked in and plan to challenge him with questions as much as I'm sure he will challenge me with his answers.

If you're interested, and can get your company to foot the bill, it's definitely the best bang for your buck and I'm hoping it will take my craft to a new level. I believe what you put in is what you get out, so I'm going to be preparing before I go with some of the reading materials and experimenting with code before the workshop.

Register and join up with us, it's going to be great!

Tuesday, March 11, 2008

Identity 2.0 from Dick Hardt

This is a nice collection of the challenges we've faced with identity on the Internet and where we need to go. I worked in this problem space over last summer and after hearing this presentation, I can tell that Dick definitely knows what he's talking about.

http://www.youtube.com/watch?v=RrpajcAgR1E

Dick's blog, http://www.identity20.com/, talks about 2008 the year of OpenID. Interesting! He talks about OpenID as a chicken-and-egg problem, which it is, and with Google and Yahoo being a couple of new chickens in the coop, eggs will likely appear soon.

Friday, March 7, 2008

Critics as Customers

My most favourite technology-related topics are those that involve people moreso than computers. I have been thinking about this one for years, and I believe that I've finally come up with an answer to one of my most troubling issues.

For some time, I have been wondering how to deal with one problem customer. This person has been relentless in their relationship with me in being absolutely unable to be pleased. This person was not interested in my technical opinion, thought that they knew better, and in general took opportunities to publicly highlight minor oversights and drum up a similar reaction from their own employees.

This person came as part of a bigger package, where it was a customer I have been interested in keeping, however I was required to take the good with the bad so to speak. They were in an influential position, however the corporate structure allowed me no official recourse to deal with this person's issues officially.

I tried for months and months to explore new ways to have a happy customer. I asked friends, coworkers, family and I even asked my doctor. There was no hope in sight. It actually was a major contributing factor to my resignation from that position.

I have come to realize that there is a similar situation in other industries that maps very accordingly. Picture an actor participating in a movie, and that actor having a very dedicated critic. I thought of some qualities of critics.
  • Critics can always find something negative to say about their subject.
  • Critics, good critics, have an air of superior knowledge or understanding that "thou" can never attain.
  • Critics are not responsible to the subjects they criticize - they are typically a third party organization.
  • Critics have garnered the "public" attention and can influence people's success and popularity.

What are some qualities of those who have been subjected to such criticism? Think of actors who are subjected to pictures of themselves in National Enquirer magazines and the like.

Good subjects will:

  • Make light of their criticism, not taking it seriously. (Remember the Donald Trump/Rosie exchange that some say cost Rosie her spot on the View - way too serious reactions by the parties!)
  • Attempt to come clean truthfully about the criticism, not trying to deny it.
  • Take advantage of the added press, not trying to hide from it.
  • Recognize that there always will be critics and that they can never be pleased, rather than making a career out of pleasing those people.

How will you address your critics and work with them?

Tuesday, January 15, 2008

Should I send this email?

If you find yourself asking that question just before you press 'send', the answer is immediately and undoubtedly no. If you're second guessing how the tone of your message is going to come across, you're probably right about it not coming through properly.

These things are usually beaten into everyone's heads, and I don't like to regurgitate, however, I was caught in a situation today where someone said "well I don't know how I was expected to know [something]...". Which actually had nothing to do with email, but my email response to that person, which basically said, "everyone knows that", had me thinking... Should I send this email? Which is why we're here.

I hope that you find some of these other rules of thumb for email helpful. Please don't say you're not expected to know. :)
  • If your email is longer than three sentences, you should instead pick up the phone.
  • If you're sending to multiple people who don't really know each other, you should use the BCC field.
  • Keep yourself out of trouble by not forwarding or replying to all. Sometimes the original message wasn't meant for everyone.
  • On the flipside to the previous point, never send an email that you wouldn't want to be seen by your boss, your boss' boss, the entire corporation, posted on the Internet, etc.

I have to stress two more points.

  • Always assume that your network traffic is being monitored. Because, at work, it likely is. Depending on your situation, you could be held responsible for what you download and view, and also what you send.
  • Once something is digitized, there is more of a chance than not, much more, that whatever you are digitizing, a photo, a blog post, an email, whatever... Will be here forever. Once a search engine or backup/archive process picks up what you're puttin' down, it's going to be saved for a long time. And the rules may change some day as to how that information is used.

Think about it!

Tuesday, December 18, 2007

Bundling an ASP.NET web site and its content into one DLL

One of the design criteria of Project Melbourne is to have the entire editing framework contained within one DLL for ease of deployment into an existing ASP.NET web site. The reason for this is that when we want to install the framework into an existing web site, we don't want to have someone need to follow a long list of instructions on what files to copy where, dealing with name conflicts, specific file versions, etc.

There are some exceptions to that criteria, such as files used for licensing certain redistributed software, and also the database.

However, there is a relatively easy way to combine the ASCX User Controls, ASPX Pages, HTML files, images, etc. that exist in an ASP.NET Web Project into a DLL. This post will be expanded, with examples, however in the meantime, and so I don't lose these links, these pages were instrumental in achieving the design criteria.

Use XML in SQL Server 2005

If you haven't yet seen the built-in XML capabilities of SQL Server 2005, take a look at this document from Microsoft, it's a walk-through that will ease you into the concept.

First, install the AdventureWorks full sample database for SQL Server 2005 (AdventureWorksDB.msi): http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004

Then, the walkthrough document: http://download.microsoft.com/download/c/4/3/c4320e49-f8fb-44f0-b00f-d3cee272b5dc/sqlhol112%20-%20sql%20server%20-%20xml%20capabilities.doc

An Errata (some of the document may be from the SQL Server Yukon days):
  • Instead of SELECT * FROM sys.xml_namespaces on page 7, try sys.xml_schema_namespaces.
  • Instead of:

    SELECT TOP 10 Demographics.query('
    declare default element namespace=
    "http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey" /IndividualSurvey/YearlyIncome') FROM Sales.Individual

    ... try:


    SELECT TOP 10 Demographics.query('declare default element namespace
    "http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey";
    /IndividualSurvey/YearlyIncome')
    FROM Sales.Individual
  • (next)

Some notes:

Monday, December 10, 2007

Enabling SQL Service Broker in SQL Server 2005 Express

A piece of project Melbourne seems to crave the features provided by the SQL Service Broker and the SqlCacheDependency of .NET 2.0. It's the fact that we're using data that doesn't change all that often and we want to avoid going to the database each time to look it up.

Off we go, the first thing to do is to enable Service Broker in the database, since by default it is disabled. If you don't believe me, try this query that shows whether the broker is enabled or not in each of your databases:

USE master;
SELECT name, is_broker_enabled FROM sys.databases;

Then, the code to enable the Service Broker in your database is:

USE master;
ALTER DATABASE melbourne SET ENABLE_BROKER;

Now, after watching that little green dot chase its tail for about 5 minutes, not seemingly getting anywhere, I found this blog post, where the solution was in a comment - this query will not complete if other connections are open to the database! So be sure you have no other windows open in the Management Studio and that users are not connecting to this database.