# Saturday, January 19, 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, January 19, 2013 8:12:09 PM (GMT Standard Time, UTC+00:00)
# Wednesday, January 16, 2013
Wednesday, January 16, 2013 4:57:00 AM (GMT Standard Time, UTC+00:00)
# Tuesday, January 8, 2013
Tuesday, January 8, 2013 4:51:00 AM (GMT Standard Time, UTC+00:00)
# Tuesday, January 1, 2013
Tuesday, January 1, 2013 4:46:00 AM (GMT Standard Time, UTC+00:00)
# Friday, December 28, 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, December 28, 2012 4:53:05 PM (GMT Standard Time, UTC+00:00)
# Monday, December 24, 2012
Monday, December 24, 2012 3:50:00 PM (GMT Standard Time, UTC+00:00)
# Sunday, December 23, 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, December 23, 2012 9:45:00 PM (GMT Standard Time, UTC+00:00)
# Wednesday, December 19, 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, December 19, 2012 3:45:00 PM (GMT Standard Time, UTC+00:00)
# Tuesday, December 18, 2012

Today, I tried to add a new Outlook contact and was blocked when I attempted to add an e-mail address to the contact. After typing in the address, I received the following cryptic error message: "An Outlook Address Book entry cannot be used as an e-mail address in a contact".

The problem arose because I had the same e-mail address in my "Suggested Contacts" folder.

To view your Suggested Contacts, select "Contacts" from the Navigation pane or press the CTRL+3 shortcut key combination. This view is shown in Figure 1.

Figure 1

Suggested contacts are populated automatically when you type an address into an e-mail's "To" or "CC" text box. They are used to quickly fill in these textboxes if you send to that same addressee again.

For me, this was hard to find because I use Outlook to manage multiple e-mail accounts and each account has its own list of Suggested Contacts and the Suggested Contact list and the Contacts list to which I was adding were not even associated with the same e-mail account.

I deleted the e-mail address from the Suggested Contact list and I was able to update the contact without error.

Tuesday, December 18, 2012 9:12:47 PM (GMT Standard Time, UTC+00:00)
# Monday, December 17, 2012
Monday, December 17, 2012 3:13:00 PM (GMT Standard Time, UTC+00:00)