# Tuesday, 22 January 2013

This past weekend, I rebuilt my laptop. I decided to reformat my hard drive so I could get a clean start from all the mess left behind installing and uninstalling software. I like to do this about once a year to keep my PC fresh.

I spent a little time preparing for this radical move because I wanted it to go smoothly and I did not want to lose any data.

The first thing I did was to make sure I had a Windows install disc and a valid license key. I have an MSDN subscription, so for me this meant downloading the ISO, burning a DVD and retrieving a license key from MSDN. For you, this might mean digging out the original install disc that came with your PC or buying a copy of Windows. However you obtain your Windows disc, do yourself a favor and pop the disc into the drive on your computer and verify that it can be read. If this is your only computer, it may be tough to get a new disc after you start the rebuilding process.

The next step before starting the rebuild is to take an inventory of the current state of your computer.

  1. Make a list of the files on your hard drive that you want to save.
  2. Document the settings of your favourite apps.
  3. Make a list of the applications you want to keep.

Files to Save

If you already have a comprehensive backup strategy for your computer, you can skip this step. But my experience is that most people lack such a strategy.

You won't get another chance at this, so make sure you find all those critical files that you don't want to lose. Look through Windows Explorer and make a list of the folders to back up and any files in odd folders. Open your favourite application and check the "Recent File" list. Most of my really important documents are in Dropbox, so they are automatically synced to other computers, so I don't need to explicitly back these up. My list looked like the following:

  • My Videos
  • My Music
  • My documents
  • C:\Install
  • C:\Development
  • C:\Utilities
  • search for *.PST files (1.5GB)

I do a pretty good job of keeping my work in some clearly-defined folders. But, Outlook has a tendency to create PST files wherever it wants without asking me, so those tend to be in cryptic locations. Before I began my rebuild, I copied these folders to an external hard drive.

Document Settings

I always have trouble remembering server names and other account settings for the e-mail accounts in Microsoft Outlook, so I write these down before I begin wiping my computer clean. It's a good idea to check out the settings and preferences of all your favourite applications and document anything that you might have trouble remembering. Sometimes these settings are saved to a file that can be easily backed up. Are there any passwords that your computer is caching for you? You will need to re-type these after your rebuild, so make sure you can remember them all. If you are the type to save web page bookmarks, open the bookmarks folder and save this file.

Apps to Install

I always make a list of apps to re-install. The list consists only of apps that I am currently using. Over the last 12 months, I've installed a lot of crapware and this is a chance to rid myself of these programs in one fell swoop. Look at your Start Menu and Taskbar; Check out the services that Start automatically; and take a look through Windows Explorer. List the programs that you use frequently. Do you have the install bits? Is it time to download a fresh copy?

My list looked like the one below

  • PowerIso
  • Visual Studio (2008, 10, 12)
  • Office 2010
  • SQL Server 2008R2, 2012
  • Filezilla
  • Spotify
  • Browsers (Chrome, Firefox, Opera)
  • Tweetdeck
  • Dropbox
  • Fiddler
  • Pluralsight Offline Player
  • Camtasia Studio
  • Live Writer
  • Tweetdeck

I use other applications, but I could wait until I need them before installing them.

Some of these apps (e.g., MS Office) have large installation files that are only updated every few years. I will generally keep a copy of these installation files on an external hard drive. Others are smaller and updated frequently and it is generally better to download the latest version when you are ready to install the app. A few years ago, I purchased and downloaded some video editing software from an online vendor. When I lost the installation files, the vendor would not allow me to download a second copy. It is for this reason that I now save such files in an "Install" folder.


When you are done installing Windows, it becomes a simple thing to copy back your files to the original location and to re-install your applications. I almost always get an immediate performance both from rebuilding my laptop; and a little planning can reduce the stress of this project.

Tuesday, 22 January 2013 15:11:00 (GMT Standard Time, UTC+00:00)
# Monday, 21 January 2013
Monday, 21 January 2013 21:46:28 (GMT Standard Time, UTC+00:00)
# Saturday, 19 January 2013

CodeMash 2013 is in the books. A record 1500 people attended this conference and many (including me) left with their brains and bellies full.

This community event has swelled to 1500 attendees - almost the size of many commercial conferences that charge many times the $280 price tag. It also attracts many of the same speakers as these larger and more expensive events.

As a result, you get to hear great presentations from top technical people; and a chance to interact with these speakers, asking technical questions of industry experts and finding out how they are applying technology on their projects.

Attendees had their choice of about 200 presentations on a wide range of topics. Presentations covered development platforms, such as .NET, Java, Ruby, JavaScript, and Scala; as well as development concepts such as Testing, Agile methodologies, Application Lifecycle Management, and User Experience.

CodeMash also included an area for open spaces. In these sessions, the attendees picked a topic and discussed it as a group, rather than listening to a lecturer. I found these to be better suited to my learning style because I could ask specific questions of the most knowledgeable people and draw on the experiences of more than one person in the session.

In addition, CodeMash offered a few things I did not take advantage of:

  • Coding Dojos allowed users to get hands-on experience practicing their coding skills by solving defined algorithms.
  • KidzMash was a mini-conference aimed at teaching software to children. (The waterpark makes this an ideal conference to bring your family to)
  • At the Thursday evening Jam Session, musicians could bring their instrument and play together.
  • Carl Franklin and Richard Campbell recorded an episode of their popular .NET Rocks podcast in front of a live audience.
  • Customer obligations kept me from much of the "Pre-Compiler" sessions. These are half-day sessions that either dive in-depth to a topic or provide attendees a chance to try out a set of technologies and skills as they learn them. In particular, I would have like to attend the speaker workshop, because I'm hoping to organize something similar in Michigan.

Here are a few things I learned at CodeMash

  • I learned a new technique for redirecting old links when migrating a web site. This is important for Search Engine Optimization.
  • I learned the difference between JavaScript and CoffeeScript.
  • I learned the strengths and weaknesses of Backbone.js and Knockout.js. (Backbone is better at interacting with server data; Knockout is better at automatically updating visual elements in response to model changes)
  • I saw examples of how to build robotics using Arduino and Netduino microcontrollers.
  • I learned the advantages of using KendoUI controls and learned the basics of adding them to a web site.

CodeMash takes place at the Kalahari Conference Center in Sandusky, OH - a venue most famous for housing "America's Largest Indoor Waterpark". Conference activities always keep me occupied during the hours that the water park is open; fortunately, the CodeMash organizers negotiated one evening when the park re-opened for a few hours for the conference attendees.

This was my 6th consecutive year attending CodeMash (of the 7 total). For the second consecutive year, I was honored to be selected to speak at CodeMash. My presentation was titled "How I Learned to Stop Worrying and Love jQuery" and focused on how jQuery made client-side JavaScript coding much easier.


Saturday, 19 January 2013 20:12:09 (GMT Standard Time, UTC+00:00)
# Wednesday, 16 January 2013
Wednesday, 16 January 2013 04:57:00 (GMT Standard Time, UTC+00:00)
# Tuesday, 08 January 2013
Tuesday, 08 January 2013 04:51:00 (GMT Standard Time, UTC+00:00)
# Tuesday, 01 January 2013
Tuesday, 01 January 2013 04:46:00 (GMT Standard Time, UTC+00:00)
# Friday, 28 December 2012

Wouldn't it be great if you could get everything you ever wanted, everything you ever dreamed of, simply by wishing for it really hard? According to Rhonda Byrne, you can.

In her bestselling book "The Secret", Ms. Byrne and a few similar-thinking people advise that the path to success is to visualize what you want. Rhonda asserts that our thoughts are energy and this energy is emitted out of our brains and across the universe. The "Secret" of the title is that "like attracts like". In other words, whatever you think about and wish for will come true, whether you think positive thoughts or negative thoughts. Our mind sends out impulses of energy and attracts back to us whatever we are thinking. If we think about our debt, for example, more bills will arrive in the mail; however, if we shift our thinking and visualize money coming in, checks will appear in our mailbox in place of those bills. The universe will simply read our thoughts and transform itself accordingly.

She compares the universe to the story of the magic genie that comes out of the magic lamp proclaiming "Your wish is my command". The universe, she insists, is much like this genie; ready to grant our every wish as long as we wish it hard enough. Byrne offers no explanation why this should occur and urges the reader not to question how, but instead focus on positive thoughts, which, she insists, are the powerful force that will change your life.

If I sound skeptical, it's not because I reject all of Ms. Byrne's ideas. I believe in the power of a positive mental attitude; I believe that the secret to happiness is the belief that we can change our life for the better; I believe that optimism can contribute to a healthy life; and I have observed that we tend to attack our goals more effectively when we are enthusiastic about them.

But I also have learned that positive thinking is generally not sufficient for success. We also need a plan to achieve our goals. And often we need to work hard to execute that plan. Plans and hard work are not part of Ms. Byrne's Secret. For her and her followers, it's all about visualizing that new car or an awesome life partner or a cure for your disease. Wish it really hard and you will mysteriously get it.

Byrne does not cite any studies or indeed provide any real evidence of her theories, but she does quote a lot of people with impressive titles like "Philosopher", "Metaphysicist", and "Visionary". She also provides a handful of anecdotes to support her ideas. However, most of the people in these anecdotes are either unnamed or are the same visionaries and philosophers who contributed to her book.

If you've already seen the film of the same name, you won't need to read the book - it's basically a transcript of the movie. The difference is that the book adds credibility because it is printed on paper the color of aged parchment and the movie provides credibility by allowing you to see that many of Ms. Byrne’s supporters look and act like television evangelists. Both the book and the movie have lots of calligraphy, so you know they are serious.

If you want to take the first step toward change, I recommend you include positive thinking as part of your strategy. But if you are serious about changing your life and achieving your goals, I suggest you look for a self-help book that is closer to the opposite edge of the fantasy-reality continuum.

Friday, 28 December 2012 16:53:05 (GMT Standard Time, UTC+00:00)
# Monday, 24 December 2012
Monday, 24 December 2012 15:50:00 (GMT Standard Time, UTC+00:00)
# Sunday, 23 December 2012


Active Directory Federation Services (ADFS) is a service that provides a common interface for authentication. ADFS can automatically authenticate against Active Directory without the need for any code.

In this scenario, the web site is known as a Relying Party of ADFS because it relies on ADFS for authentication; Active Directory is known as a Claims Provider, because it the source of Claims – assertions about a user that it has authenticated; and ADFS is known as a Secure Token Service (STS), because it provides to the Relying Party a token contain identity information and claims about the authenticated user.

In order for a web site to use ADFS, you must perform some configuration in both ADFS and in IIS. 

IIS Configuration

Launch the IIS Manager on the computer on which you plan to host the web site. Right-click the web sites node and select New | Web Site. Provide a name, location, and other basic information to create the web site.

Right-click the newly-created web site and select Properties to appropriately adjust the web site properties.

On the ASP.NET tab, set the ASP.NET version to a value starting with “4.0”, as shown in Figure 1

Figure 1

At the “Directory Security” tab, click the [Server Certificate] button to associate an SSL certificate with this web site. During development, this can be a self-issued certificate; but, for Production, you will need to purchase a certificate from a Trusted Authority, such as VeriSign. The Directory Security tab is shown in Figure 2.

Figure 2

Click the [Edit] button in the “Authentication and access control” section of the Directory Security tab. On the Secure Communications popup, check the “Require secure channel (SSL)” check box, as shown in Figure 3.

Figure 3

ADFS Configuration

Use the ADFS 2.0 Management Console to manage the Active Directory Federation service (ADFS), as shown in Figure 4

Figure 4

Configure AD as a Claims Provider

In the ADFS 2.0 MMC Snap-In, expand the tree to select the AD FS 2.0\Trust Relationships\Claims Provider Trusts node. Active Directory should display under the Provider Trusts node. Select Active Directory to allow it to provide authentication and claims for relying parties

Configure Your App as a Relying Party

In the ADFS 2.0 MMC Snap-In, expand the tree to select the AD FS 2.0\Trust Relationships\Relying Party Trusts node. Right-click the Relying Party Trusts node and select “Add Relying Party Trust” from the context menu. The Add Relying Party Trust Wizard displays with the “Welcome” page active as shown in Figure 5. Click Next to advance to the next page.

Figure 5

The “Select Data Source” page displays as shown in Figure 6. Select the “Enter data about the party manually” radio button and click [Next].
Figure 6

The “Specify Display Name” page displays as shown in Figure 7. At the “Display name” textbox, enter a name to identify the relying party. This is the name you will see in the list of Relying Parties. Generally, the HOST name works here. Optionally, you can also enter some notes about this relying party. Click the [Next] button to advance to the next page of the wizard.

Figure 7

The “Choose Profile” page displays as shown in Figure 8. Select the “AD FS 2.0 profile” radio button and Click the [Next] button to advance to the next page of the wizard.
Figure 8

The “Configure Certificate” page displays as shown in Figure 9. If you wish to encrypt the token returned to the relying party, you will need to add a certificate at this point. Click the [Browse] button to select a certificate. This certificate should be the same one used to secure the web site. Click the [Next] button to advance to the next page of the wizard.

Figure 9

The “Configure URL” page displays as shown in Figure 10. Check the “Enable support for the WS-Federation Passive protocol” checkbox and enter the URL of the relying party web site. This tells ADFS to look for requests specifically from this URL. Click the [Next] button to advance to the next page of the wizard.

Figure 10

The “Configure Identifiers” page displays as shown in Figure 11. Enter the relying party web site URL in the “Relying Party trust identifier” textbox and click the [Add] button to add it to the list below. Click the [Next] button to advance to the next page of the wizard.
Figure 11

The “Issuance Authorization Rules” page displays, as shown in Figure 12. Select the “Permit all users to access this relying party” radio button. Click the [Next] button to advance to the next page of the wizard.
Figure 12

The “Ready to Add Trust” page displays as shown in Figure 13. Review all information on this page and Click the [Next] button to advance to the next page of the wizard.
Figure 13

The “Finish” page displays as shown in Figure 14. If you check the “Open the Edit Claims Rule dialog” checkbox, you can start adding Claim Rules as soon as you close the wizard; however, you can always go back later and add Claim Rules. Click the [Close] button to finish and close the wizard.
Figure 14


In this article, we described the steps to perform in IIS and in ADFS to add Active Directory as a Claims Provider and your web application as a Relying Party

Sunday, 23 December 2012 21:45:00 (GMT Standard Time, UTC+00:00)
# Wednesday, 19 December 2012

An Annual Review may be a key point in your career path. Depending on the company for which you work, this may be the only official feedback you receive during the year. Raises and promotions are often dependent on your annual review scores. Some companies emphasize an annual review more than others, but it's a good idea to devote some energy to them as an employee.

The first important thing to know about your annual review is that you should start thinking about it very early in the year - preferably right after your last annual review. Set explicit, measurable goals for yourself over the coming year. Once your goals are established, formulate a plan to achieve those goals. Be as specific as possible. Include skills you want to learn, certifications you want to earn, and roles you want to fill. Review these goals periodically over the following months. Revise them, if necessary and record what you are doing to accomplish them.

Keep your manager or managers aware of what you are doing throughout the year. If you are speaking at a conference, let them know. If you receive an e-mail from a customer, praising your work, forward it to your boss. He should know what you are doing and how you are doing and this tends to create a favourable impression that can only help at review time.

Record all your accomplishments. I keep a spreadsheet with a tab for Projects I've worked on, Candidate I’ve interviewed, Presentations I've given, and other categories of contributions I've made to the company. For you, this record might be a Word document or a text file or a spiral notebook. The point is that you should not rely on anyone else to remember what you did throughout the year. It's tempting to believe that your manager will remember these things, but I can tell you from experience that managers have a lot to keep track of and they will often forget what you accomplished a few months ago. Add to that the non-zero chance that your manager may leave the company or get transferred to another role and you can see why it's important that you take responsibility for remembering all that you  did during the year.

When it comes time for your review, review your accomplishments and compare them to your goals set at the beginning of the year. Give yourself an honest evaluation of your performance during the past 12 months. This accomplishes two things:

  1. It will prepare you for what your Annual Review will likely be.
  2. It will help you to articulate to your manager how well you did during the past year.

It's important to remind your manager of your accomplishments at this time. As mentioned before, there is a good chance he has forgotten some of them and providing positive data points only makes his job easier.

Finally, almost every annual review process includes some qualitative feedback. Listen carefully to this feedback, even if some of it is negative. Don’t be discouraged if you don’t get the promotion you wanted or if you were evaluated lower than you  expected. But make sure you understand why. Insist on an explanation if you don’t understand a score in a particular area. Look at the negative points as areas that you can improve next year. Use these points to help define your goals for the coming year.

A well-done annual review is an important part of an organization and of an individual's career path. If done correctly, the employee has at least as much involvement in a review as his manager does.

Wednesday, 19 December 2012 15:45:00 (GMT Standard Time, UTC+00:00)