<?xml version="1.0" encoding="utf-16"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.0">
  <channel>
    <generator>Graffiti CMS Beta 1</generator>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;Earlier I &lt;a target="_blank" _tesavedurl="http://webgambit.com/blog/synchronizing-google-calendar-and-outlook-via-plaxo/" href="http://webgambit.com/blog/synchronizing-google-calendar-and-outlook-via-plaxo/"&gt;blogged&lt;/a&gt; about how to sync my Outlook and Google calendar using &lt;a target="_blank" _tesavedurl="http://www.plaxo.com" href="http://www.plaxo.com"&gt;Plaxo&lt;/a&gt;.&amp;nbsp; This has worked very well for me but now Google has released their own tool to do the same thing.&lt;/p&gt;
&lt;p&gt;&lt;a _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/GooglereleasesCalendarSync_9B90/calendar_89955a_en.gif_2.png" href="http://webgambit.com/files/media/image/WindowsLiveWriter/GooglereleasesCalendarSync_9B90/calendar_89955a_en.gif_2.png"&gt;&lt;img width="498" height="530" border="0" _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/GooglereleasesCalendarSync_9B90/calendar_89955a_en.gif_thumb.png" src="http://webgambit.com/files/media/image/WindowsLiveWriter/GooglereleasesCalendarSync_9B90/calendar_89955a_en.gif_thumb.png" alt="calendar_89955a_en.gif" style="border: 0px none ;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the interesting features that this tool allows is the ability to do 1-way synchronization.&amp;nbsp; You can get more information on how to set it up &lt;a target="_blank" _tesavedurl="http://www.google.com/support/calendar/bin/answer.py?answer=89955" href="http://www.google.com/support/calendar/bin/answer.py?answer=89955"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For now I'm going to continue to use my Plaxo setup since it already meets my needs.&amp;nbsp; But if you're interested in a solution for Google and Outlook calendar synchronization that doesn't require opening a Plaxo account, then Google Calendar Sync will be worth downloading.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/google-releases-calendar-sync/</guid>
      <link>http://webgambit.com/blog/google-releases-calendar-sync/</link>
      <pubDate>Fri, 07 Mar 2008 17:04:00 GMT</pubDate>
      <pubDateParsed>2008-03-07T17:04:00</pubDateParsed>
      <title>Google releases Calendar Sync</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;Most consulting engagements usually end with a hand-off of the project's deliverables to the client's resources during the last few days of the consultant being in contact with the client.&amp;nbsp; This is often referred to as the "knowledge transfer" and can involve walking the client through the finished code artifacts and any documentation around it.&lt;/p&gt; &lt;p&gt;Most consultants dread this part of the process as it often requires mounds of documentation and tons of meetings with seemingly little accomplished.&amp;nbsp; Even after the process is completed, many consultants will still get a follow up call from the client six months later when the developer who was supposed to take over their project has left for greener pastures.&lt;/p&gt; &lt;p&gt;There are many reasons why consultant-developed software often follows this pattern.&amp;nbsp; Firstly, most clients are plagued with the inability to identify a suitable maintenance resource in a timely manner.&amp;nbsp; Often this important task is put off until the last minute thus reducing the quality of resources that can be found to take over the project.&amp;nbsp; Also if the client's resource is tasked with learning the code base in a very short time, they often don't get enough information and are overwhelmed when they are expected to deliver a round of enhancements soon after the consultant leaves. &lt;/p&gt; &lt;p&gt;To increase the chances of a successful hand off, the client resource should be identified soon after the project enters its testing phase to ensure that they have sufficient time to get up to speed.&amp;nbsp; Also it can help to let the hand-off resource take a crack at some of the lower priority bugs that inevitably creep up so that they get familiar with the code.&amp;nbsp; Having them get their hands dirty when the consultant is still around to support them can be extremely valuable to the client.&lt;/p&gt; &lt;p&gt;Consultants should also make every effort to develop a maintainable solution that can easily be transitioned.&amp;nbsp; A complex custom application framework, a cutting edge technology, or an unfamiliar platform can all reduce the client's chances of successfully maintaining their shiny new application.&amp;nbsp; While it can be appealing to try a new technology or build a new skill set, such decisions often create unnecessary risks for the client and their resources. &lt;/p&gt; &lt;p&gt;So does this mean that consultants should simplify their architectures to &lt;a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=d88f7539-10d8-4697-8c6e-1badb08bb3f5" target="_blank"&gt;Typed DataSets&lt;/a&gt; and drag-and-drop &lt;a href="http://aspnet.4guysfromrolla.com/articles/031506-1.aspx" target="_blank"&gt;GridViews&lt;/a&gt;?&amp;nbsp; Not necessarily.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Even with the most non-technical clients, a consultant should take the time to explain the important architectural decisions in ways where the risks and rewards are absolutely clear to the client. If a technical decision is made that reduces development time but requires a specialized resource, then the risks and reward of such a decision should be clearly communicated to the client before it's too late to turn back.&amp;nbsp; Projects often fail because of technical decisions that were made up front later on became extremely costly to support and were ultimately irreversible without re-writing large parts of the application.&lt;/p&gt; &lt;p&gt;Finally, consultants should beware of clients that expect to just pay an invoice and get some working software with very little personal involvement in the project.&amp;nbsp; No matter how much they may profess that they "just want something that works" they will have always opinions on how it should work. So a consultant is better off setting their expectations of the client's involvement as early as possible. This will ensure both a healthy development cycle for the project and help transition it to a capable maintenance resource that can support any future needs.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/mastering-the-hand-off/</guid>
      <link>http://webgambit.com/blog/mastering-the-hand-off/</link>
      <pubDate>Tue, 12 Feb 2008 14:10:14 GMT</pubDate>
      <pubDateParsed>2008-02-12T14:10:14</pubDateParsed>
      <title>Mastering the Hand-off</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;I recently had a chance to attend Headspring System's Agile/Extreme Programming &lt;a target="_blank" _tesavedurl="http://www.headspringsystems.com/training/" href="http://www.headspringsystems.com/training/"&gt;boot camp&lt;/a&gt; for Advanced .NET developers led by &lt;a _tesavedurl="http://codebetter.com/blogs/jeffrey.palermo/" href="http://codebetter.com/blogs/jeffrey.palermo/"&gt;Jeffrey Palermo&lt;/a&gt; in Austin, TX.&amp;nbsp; I had wanted to learn the proper techniques to approach agile development on the .NET platform from an expert and when I found out about this course, I eagerly signed up.&lt;/p&gt;
&lt;p&gt;The three day course covered best practices in regards to Agile design and process while incorporating multiple deep dives into Jeffrey's tools of choice when doing development.&amp;nbsp; The exercises followed a format of first explaining how a normal development process becomes more agile and then having the hands on experience of implementing that process with different tools and concepts.&amp;nbsp; Jeffrey explained how simple things like source control can become more agile through regular branching and merging and he demonstrated how to do this with &lt;a target="_blank" _tesavedurl="http://tortoisesvn.net/" href="http://tortoisesvn.net/"&gt;TortoiseSVN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While a lot of software development training is often presented very academically, Headspring's was very hands-on and really pushed everyone to pick up the processes and tools very quickly, just as you would in the real world.&lt;/p&gt;
&lt;p&gt;On day one, upon entering the classroom we were told to check out a &lt;a target="_blank" _tesavedurl="http://subversion.tigris.org/" href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; repository hosted on Google Code that would house the code for the application that we would be extending over the next few days.&amp;nbsp; This application was a Work Order management system designed using &lt;a target="_blank" _tesavedurl="http://domainlanguage.com/ddd/index.html" href="http://domainlanguage.com/ddd/index.html"&gt;Domain-Driven Design&lt;/a&gt; and built using a &lt;a target="_blank" _tesavedurl="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx" href="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx"&gt;Model-View-Presenter&lt;/a&gt; implementation with &lt;a target="_blank" _tesavedurl="http://www.nhibernate.org/" href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt; serving as the &lt;a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Object-relational_mapping" href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;ORM&lt;/a&gt; between our entities and the database.&amp;nbsp; The application also had a suite of both automated Unit Tests and Integration Tests which were regularly run as part of it's &lt;a target="_blank" _tesavedurl="http://nant.sourceforge.net/" href="http://nant.sourceforge.net/"&gt;NAnt&lt;/a&gt;-based automated build script.&amp;nbsp; If you're curious to see the system, download the Visual Studio 2008 solution &lt;a target="_blank" _tesavedurl="http://code.google.com/p/headspringtraining20080130/source/checkout" href="http://code.google.com/p/headspringtraining20080130/source/checkout"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Over the next two days, we extended and refactored this Work Order system to support new features and workflows by first writing &lt;a target="_blank" _tesavedurl="http://www.nunit.org/" href="http://www.nunit.org/"&gt;NUnit&lt;/a&gt; tests and then designing interfaces around the problem domain. By focusing our whiteboarding sessions on separating the concerns into smaller pieces that each group could begin implementing, the whole class of fifteen students was able to work as a team to successfully build and test the new features in a just a few hours.&amp;nbsp; Along the way we touched on many concepts like &lt;a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Inversion_of_control" href="http://en.wikipedia.org/wiki/Inversion_of_control"&gt;Inversion of Control&lt;/a&gt; by using &lt;a target="_blank" _tesavedurl="http://structuremap.sourceforge.net/" href="http://structuremap.sourceforge.net/"&gt;StructureMap&lt;/a&gt; and reliable, targeted &lt;a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Refactoring" href="http://en.wikipedia.org/wiki/Refactoring"&gt;Refactoring&lt;/a&gt; by using &lt;a target="_blank" _tesavedurl="http://www.jetbrains.com/resharper/" href="http://www.jetbrains.com/resharper/"&gt;Resharper&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, we ended the class with a review of all of the concepts and tools that were used during the exercises and we identified some of the design patterns that were implemented by the final solution.&lt;/p&gt;
&lt;p&gt;I really appreciated that Jeffrey tailored the exercises as per the class's feedback.&amp;nbsp; Many of the attendees wanted to see more detail on NHibernate so Jeffrey dedicated a lot of time to going over some best practices around NHibernate mappings and he demonstrated ways to optimize the queries produced by it.&lt;/p&gt;
&lt;p&gt;There was a obviously a lot more to this course than I could possibly cover in a single blog post. If all of this content sounds interesting to you, I would highly suggest signing up for one of Headspring's &lt;a target="_blank" _tesavedurl="http://codebetter.com/blogs/jeffrey.palermo/archive/2008/01/25/january-headspring-training-sold-out-opening-two-more-dates.aspx" href="http://codebetter.com/blogs/jeffrey.palermo/archive/2008/01/25/january-headspring-training-sold-out-opening-two-more-dates.aspx"&gt;upcoming sessions&lt;/a&gt; if you are looking for some practical guidance to help you hit the ground running with Agile development.&lt;/p&gt;
&lt;p&gt;One final note: If you are considering taking this course, I would recommend familiarizing yourself somewhat with the following tools beforehand: &lt;a target="_blank" _tesavedurl="http://tortoisesvn.net/" href="http://tortoisesvn.net/"&gt;TortoiseSVN&lt;/a&gt;, &lt;a target="_blank" _tesavedurl="http://www.nunit.org" href="http://www.nunit.org"&gt;NUnit&lt;/a&gt;, and &lt;a target="_blank" _tesavedurl="http://www.jetbrains.com/resharper/" href="http://www.jetbrains.com/resharper/"&gt;Resharper&lt;/a&gt;.&amp;nbsp; Also, I would recommend having at least a basic understanding of &lt;a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Test-driven_development" href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt;, &lt;a target="_blank" _tesavedurl="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx" href="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx"&gt;Model-View-Presenter&lt;/a&gt;, and &lt;a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Inversion_of_control" href="http://en.wikipedia.org/wiki/Inversion_of_control"&gt;Inversion of Control&lt;/a&gt;. The course moves very quickly and you will have an easier time keeping up if you at least have some working knowledge of these tools and concepts prior to attending the course.&lt;/p&gt;
&lt;p&gt;Thanks again to both Jeffrey Palermo and &lt;a _tesavedurl="http://lostechies.com/blogs/jimmy_bogard/" href="http://lostechies.com/blogs/jimmy_bogard/"&gt;Jimmy Bogard&lt;/a&gt; for a great training experience and chance to inundate them with questions as I am known to do!&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/thoughts-on-headspring-s-agile-xp-boot-camp/</guid>
      <link>http://webgambit.com/blog/thoughts-on-headspring-s-agile-xp-boot-camp/</link>
      <pubDate>Sat, 02 Feb 2008 18:05:00 GMT</pubDate>
      <pubDateParsed>2008-02-02T18:05:00</pubDateParsed>
      <title>Thoughts on Headspring's Agile/XP boot camp</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;I've been an avid user of &lt;a _tesavedurl="http://calendar.google.com" href="http://calendar.google.com"&gt;Google Calendar&lt;/a&gt; since its inception.&amp;nbsp; It's been a great tool for personal organization and helps my wife and I to keep track of social engagements, personal events, vacations, and errands. We both have access to each other's calendars and can assign events to each other with ease.&lt;/p&gt;
&lt;p&gt;&lt;a _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/google-calendar_4.png" href="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/google-calendar_4.png"&gt;&lt;img width="486" height="273" border="0" _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/google-calendar_thumb_1.png" src="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/google-calendar_thumb_1.png" alt="google-calendar" style="border: 0px none ;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before I got my &lt;a _tesavedurl="http://reviews.cnet.com/smartphones/at-t-tilt/4505-6452_7-32638455.html" href="http://reviews.cnet.com/smartphones/at-t-tilt/4505-6452_7-32638455.html"&gt;AT&amp;amp;T Tilt&lt;/a&gt;, I had a phone with no Internet data plan. Luckily, I was able to configure Google Calendar to send me an SMS message as a reminder for any events in my calendar.&amp;nbsp; This has worked out great.&lt;/p&gt;
&lt;p&gt;Now fast forward to 6 months ago when I started working for &lt;a _tesavedurl="http://telligent.com" href="http://telligent.com"&gt;Telligent&lt;/a&gt;.&amp;nbsp; Like many other companies, Telligent uses &lt;a _tesavedurl="http://www.microsoft.com/exchange/default.mspx" href="http://www.microsoft.com/exchange/default.mspx"&gt;Exchange Server/Outlook&lt;/a&gt; for resource and employee scheduling.&amp;nbsp; All of my work-related meeting requests, appointments, and tasks go through Outlook.&amp;nbsp; Accessing this information outside the office requires an Internet connection so having an connected mobile phone is helpful to keep up on the road.&lt;/p&gt;
&lt;p&gt;My Tilt allowed me to access my Outlook calendar wherever I was, but this created an issue of trying to keep my Outlook calendar at work and my personal calendar on Google synchronized.&amp;nbsp; If I ever had a personal errand or appointment during a weekday saved in Google calendar it would not show up as blocked off in my Outlook calendar and a coworker could unknowingly invite me to a meeting in that slot not knowing that I was busy.&amp;nbsp; So I did a lot of searching and initially found some very &lt;a _tesavedurl="http://internetducttape.com/2006/08/11/the-holy-grail-of-synchronization-how-to-synchronize-microsoft-outlook-multiple-locations-google-calendar-gmail-ipod-and-mobile-phone-with-funambol-scheduleworld/" href="http://internetducttape.com/2006/08/11/the-holy-grail-of-synchronization-how-to-synchronize-microsoft-outlook-multiple-locations-google-calendar-gmail-ipod-and-mobile-phone-with-funambol-scheduleworld/"&gt;complex solutions&lt;/a&gt; to this problem.&amp;nbsp; None of them worked consistently and often required me to install third party utilities from somewhat untrustworthy sources.&amp;nbsp; Or they required me to spend money to get &lt;a _tesavedurl="http://www.syncmycal.com/compare_versions.htm" href="http://www.syncmycal.com/compare_versions.htm"&gt;automatic calendar synchronization&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Being the stingy person that I am, I looked for a better, free solution and found it in &lt;a _tesavedurl="http://www.plaxo.com/" href="http://www.plaxo.com/"&gt;Plaxo&lt;/a&gt;.&amp;nbsp; Plaxo has been around for a while as a contacts synchronization service and has recently &lt;a _tesavedurl="http://www.news.com/8301-10784_3-9755200-7.html" href="http://www.news.com/8301-10784_3-9755200-7.html"&gt;dabbled in the Social Networking space&lt;/a&gt;. But one of the key features that Plaxo offers is calendar synchronization between Google, Outlook and a number of other sources.&amp;nbsp; In order to keep outlook/exchange synched up, you have to download a small plug-in for Outlook that you can get via the Sync Wizard on the Plaxo site.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/plaxo-sync_2.png" href="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/plaxo-sync_2.png"&gt;&lt;img width="486" height="285" border="0" _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/plaxo-sync_thumb.png" src="http://webgambit.com/files/media/image/WindowsLiveWriter/SynchronizingGoogleCalendarandOutlookvia_8F91/plaxo-sync_thumb.png" alt="plaxo-sync" style="border: 0px none ;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Once you have everything installed and configured properly, all that is required is to leave Outlook running (as I typically do on my work machine) and it will periodically sync with Plaxo to keep things up to date.&lt;/p&gt;
&lt;p&gt;I've been using Plaxo sync for the past few days and it works great.&amp;nbsp; If you've been looking for a solid method for keeping Google Calendar and Outlook synchronized, this is definitely the way to go.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/synchronizing-google-calendar-and-outlook-via-plaxo/</guid>
      <link>http://webgambit.com/blog/synchronizing-google-calendar-and-outlook-via-plaxo/</link>
      <pubDate>Mon, 07 Jan 2008 16:12:00 GMT</pubDate>
      <pubDateParsed>2008-01-07T16:12:00</pubDateParsed>
      <title>Synchronizing Google Calendar and Outlook via Plaxo</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;This post is definitely a departure from my usual style, but since many of us software geeks also happen to be fantasy geeks I thought I would share the recent news that Tor books has &lt;a _tesavedurl="http://www.dragonmount.com/News/?p=326" href="http://www.dragonmount.com/News/?p=326"&gt;announced&lt;/a&gt; a new author for the &lt;a _tesavedurl="http://en.wikipedia.org/wiki/The_Wheel_of_Time" href="http://en.wikipedia.org/wiki/The_Wheel_of_Time"&gt;Wheel of Time series&lt;/a&gt; of fantasy books.&lt;/p&gt;
&lt;p&gt;Ever since Robert Jordan's &lt;a _tesavedurl="http://www.dragonmount.com/RobertJordan/?p=90" href="http://www.dragonmount.com/RobertJordan/?p=90"&gt;passing&lt;/a&gt; last September, the fantasy world has been mourning the loss of one of its greatest authors.&amp;nbsp; I myself felt the loss pretty hard since I have been reading RJ's books for over 10 years and it was the first major fantasy series that I started reading.&amp;nbsp; I've always been an avid reader of fiction but WoT really introduced me to a different type of genre.&amp;nbsp; I even converted two college roommates into RJ fans back in my third year of college.&amp;nbsp; These were guys who had never read a book over 300 pages unless they were required to.&amp;nbsp; To see them voluntarily put down multiple 1,000 page fantasy books definitely speaks volumes of Jordan's amazing storytelling ability.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The greatest tragedy for Robert Jordan was never completing his epic series.&amp;nbsp; While working on his 10th and final book, he passed away due to complications with amyloidosis.&lt;/p&gt;
&lt;p&gt;The new author, Brandon Sanderson, is a younger author and longtime fan of Robert Jordan.&amp;nbsp; He's also an avid blogger and he posted a great &lt;a _tesavedurl="http://www.brandonsanderson.com/blog/550/EUOLogy-Goodbye-Mr.-Jordan" href="http://www.brandonsanderson.com/blog/550/EUOLogy-Goodbye-Mr.-Jordan"&gt;personal eulogy&lt;/a&gt; to Robert Jordan recently.&amp;nbsp; Sanderson also recently gave an interview to the &lt;a _tesavedurl="http://www.dragonmount.com" href="http://www.dragonmount.com"&gt;DragonMount&lt;/a&gt; fan website upon receiving the news that he was chosen to be the successor to Robert Jordan.&amp;nbsp; Here are a couple of my favorite parts of this interview.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;In what ways do you think you'll have to shift your writing style to match Robert Jordan's? Will you be trying to write in his &amp;quot;voice&amp;quot;, or will you approach the novel with your own?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To attempt an exact copy of his style would, I think, be the wrong move. If I did it poorly, it would feel like an awkward parody. Yet, at the same time, there are some very important reasons people love these books. Depth of setting, detailed descriptions, and complex and lengthy characterizations are all hallmarks of Mr. Jordan's style.&lt;/p&gt;
&lt;p&gt;So, I think it will need to be a balance. I intend to be more detailed in my descriptions and linger a little bit longer on side characters than I do in my own work. However, I am not Robert Jordan, and the fans know that. Every author is different, and I think that my style will indeed influence how the text and ideas are presented.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are there any particular aspects of the book that you think will be especially challenging for you?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first is the depth of the setting. Though I've read these books several times, there is just SO MUCH to wrap your head around...I'm certainly glad for the Internet and the resources fans have created. I suspect you'll find me on Dragonmount occasionally asking for someone to look up an obscure fact or name for me!&lt;/p&gt;
&lt;p&gt;The other item of particular challenge is the worry that I'll disappoint the fans. I am confident in my writing, but. . .wow. This is like being the final man at bat in the last inning of the World Series--I'm the guy who has to step up and either strike out get a hit to win. All of my training, practice, and studies are coming to a head.&lt;/p&gt;
&lt;p&gt;I don't want to be the guy who ruined &lt;em&gt;The Wheel of Time&lt;/em&gt;. I'll work very hard to make sure that doesn't happen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Read the rest of the interview &lt;a _tesavedurl="http://www.dragonmount.com/Books/Memory_of_Light/brandon_interview_01.php" href="http://www.dragonmount.com/Books/Memory_of_Light/brandon_interview_01.php"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I'm very excited at this news and I'm eagerly awaiting the final book, entitled &lt;em&gt;A Memory of Light&lt;/em&gt;, which will be hitting store shelves in Fall 2009.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/wheel-of-time-gets-a-new-author/</guid>
      <link>http://webgambit.com/blog/wheel-of-time-gets-a-new-author/</link>
      <pubDate>Wed, 12 Dec 2007 03:20:00 GMT</pubDate>
      <pubDateParsed>2007-12-12T03:20:00</pubDateParsed>
      <title>Wheel of Time gets a new author</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;Themes in &lt;a _tesavedurl="http://graffiticms.com" href="http://graffiticms.com"&gt;Graffiti&lt;/a&gt; are very easy to write or convert from existing themes or templates.&amp;nbsp; The theme on this site is derived from based on the &lt;a _tesavedurl="http://mikelococo.com/projects/wucoco/" href="http://mikelococo.com/projects/wucoco/"&gt;WuCoco&lt;/a&gt; theme for &lt;a _tesavedurl="http://www.wordpress.org" href="http://www.wordpress.org"&gt;Wordpress&lt;/a&gt;.&amp;nbsp; I chose this theme because I liked the look of it and it was also very well organized into sections for the layout of the blog.&amp;nbsp; These sections were very easy to convert into Graffiti views.&lt;/p&gt;
&lt;p&gt;Here is a list of the .php files included in the &lt;a _tesavedurl="http://mikelococo.com/files/2006/wucoco-2col.png" href="http://mikelococo.com/files/2006/wucoco-2col.png" target="_blank"&gt;2-column version&lt;/a&gt; of the WuCoco theme.&lt;/p&gt;
&lt;p&gt;&lt;a _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/WucocoFiles_1.png" href="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/WucocoFiles_1.png"&gt;&lt;img width="350" height="367" border="0" style="border-width: 0px;" alt="WucocoFiles" _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/WucocoFiles_thumb_1.png" src="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/WucocoFiles_thumb_1.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Once this theme was converted for Graffiti, it had the following listing of Graffiti view files.&amp;nbsp; The difference in number of files is based on the number of required views in Graffiti to accomplish the look of the theme in addition to some customizations.&amp;nbsp; You could use more or less views to convert more of the original theme if you like.&lt;/p&gt;
&lt;p&gt;&lt;a _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/altair-files.png" href="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/altair-files.png"&gt;&lt;img width="352" height="227" border="0" style="border-width: 0px;" alt="altair-files" _tesavedurl="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/altair-files_thumb.png" src="http://webgambit.com/files/media/image/WindowsLiveWriter/ConvertingaWordpressthemetoGrafffiti_10F6B/altair-files_thumb.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Graffiti uses &lt;strong&gt;.view&lt;/strong&gt; files to denote sections or views of the markup for the site.&amp;nbsp; In addition to some standard views that Graffiti recognizes, one can define custom views and then open them from other views using this chalk method.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$macros.LoadThemeView(filename)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The benefit of this method of theme layout becomes clear as you begin the process of building the theme.&amp;nbsp; It becomes obvious where your markup is coming from and you have immediate and seamless control over your each page's HTML output.&lt;/p&gt;
&lt;p&gt;So lets begin.&amp;nbsp; First we'll start by examining the Wucoco theme's &lt;strong&gt;index.php&lt;/strong&gt; file to see how we can separate it into Graffiti views.&lt;/p&gt;
&lt;div&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;?php get_header(); ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;page_container&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php get_sidebar(); ?&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Other than the page_container div, there appears to be very limited markup in these first few lines.&amp;nbsp; Where are the &lt;strong&gt;&amp;lt;head&amp;gt;,&lt;/strong&gt; &lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;,&lt;/strong&gt; and &lt;strong&gt;&amp;lt;title&amp;gt;&lt;/strong&gt; tags?&amp;nbsp; Let's dig a little deeper.&lt;/div&gt;
&lt;div&gt;The first line in this snippet makes a call to another PHP file to obtain the header markup by calling &lt;strong&gt;get_header()&lt;/strong&gt;.&amp;nbsp; So lets go to the header file and see what this file exposes.&lt;/div&gt;
&lt;p&gt;Here are the first few lines of the &lt;strong&gt;header.php &lt;/strong&gt;file.&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;!DOCTYPE html PUBLIC &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;html xmlns=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;head profile=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://gmpg.org/xfn/11&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;meta http-equiv=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt; content=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;lt;?php bloginfo('html_type'); ?&amp;gt;; charset=&amp;lt;?php bloginfo('charset'); ?&amp;gt;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;&amp;lt;?php bloginfo(&lt;span style="color: rgb(0, 96, 128);"&gt;'name'&lt;/span&gt;); ?&amp;gt; &amp;lt;?php &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( is_single() ) { ?&amp;gt; &amp;amp;raquo; Blog Archive &amp;lt;?php } ?&amp;gt; &amp;lt;?php wp_title(); ?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;  &amp;lt;style type=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; media=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;screen&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &lt;br /&gt;    @import url(&amp;lt;?php bloginfo(&lt;span style="color: rgb(0, 96, 128);"&gt;'stylesheet_directory'&lt;/span&gt;); ?&amp;gt;/style-core.css);&lt;br /&gt;    @import url(&amp;lt;?php bloginfo(&lt;span style="color: rgb(0, 96, 128);"&gt;'stylesheet_directory'&lt;/span&gt;); ?&amp;gt;/style.css);&lt;br /&gt;    &amp;lt;?php &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (eregi(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;MSIE&amp;quot;&lt;/span&gt;,getenv(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;HTTP_USER_AGENT&amp;quot;&lt;/span&gt;)) || eregi(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Internet Explorer&amp;quot;&lt;/span&gt;,getenv(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;HTTP_USER_AGENT&amp;quot;&lt;/span&gt;))) { ?&amp;gt;&lt;br /&gt;     @import url(&amp;lt;?php bloginfo(&lt;span style="color: rgb(0, 96, 128);"&gt;'stylesheet_directory'&lt;/span&gt;); ?&amp;gt;/style-ie.css);&lt;br /&gt;    &amp;lt;?php } ?&amp;gt;&lt;br /&gt;    &amp;lt;/style&amp;gt;&lt;br /&gt;    &amp;lt;?php wp_head(); ?&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now we're getting somewhere.&amp;nbsp; The &lt;strong&gt;index.php&lt;/strong&gt; file calls the &lt;strong&gt;header.php&lt;/strong&gt; which eventually returns the initial HTML markup needed to build the page.&amp;nbsp; Sounds easy enough.&amp;nbsp; So let's try converting that code over to Graffiti Chalk.&lt;/p&gt;
&lt;p&gt;I've decided that I don't like hiding the important tags for defining an XHTML document in an obscure header file and I would rather expose them up front in my initial view.&amp;nbsp; Here's how I would define the first few lines of my Graffiti theme's &lt;strong&gt;layout.view&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;!DOCTYPE html PUBLIC &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;html xmlns=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        $macros.Head()&lt;br /&gt;        $macros.LoadThemeView(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;header.view&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;So far I've got my initial HTML tags defined with a few &lt;a _tesavedurl="http://docs.graffiticms.com/designers/chalk/" href="http://docs.graffiticms.com/designers/chalk/"&gt;Chalk&lt;/a&gt; methods to build the inside of the &amp;lt;head&amp;gt; tag.&amp;nbsp; &lt;br /&gt;
The first macro call to &lt;strong&gt;Head()&lt;/strong&gt; is used to render some of the custom fields that you can set in Graffiti for any custom Javascript, RSD, RSSAutodiscovery, GraffitiJavaScript, and MetaTags.&amp;nbsp; This is absolutely necessary to ensure that your page will get all the necessary Graffiti markup and script in addition to some of custom fields you can set in Graffiti's control panel.&lt;/p&gt;
&lt;p&gt;The second macro call to &lt;strong&gt;LoadThemeView()&lt;/strong&gt; actually loads my custom header view that I defined in another file, &lt;strong&gt;header.view&lt;/strong&gt;.&amp;nbsp; Here are the first few lines of that file.&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;title&amp;gt;$title - $data.Site.TagLine&amp;lt;/title&amp;gt;&lt;br /&gt;       $macros.Style(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;style.css&amp;quot;&lt;/span&gt;,&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;screen&amp;quot;&lt;/span&gt;)&lt;br /&gt;       $macros.Style(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;style-core.css&amp;quot;&lt;/span&gt;,&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;screen&amp;quot;&lt;/span&gt;)&lt;br /&gt;       &amp;lt;!--[&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; lte IE 7]&amp;gt;&lt;br /&gt;       $macros.Style(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;style-ie.css&amp;quot;&lt;/span&gt;,&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;screen&amp;quot;&lt;/span&gt;)&lt;br /&gt;       &amp;lt;![endif]--&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The above code allows me to pull in the CSS stylesheets defined by the original theme as well as the site's title and tagline.&amp;nbsp; The theme also requires some custom javascript that can below this code in a &amp;lt;script&amp;gt; tag.&amp;nbsp; For the purposes of this tutorial, I have omitted that code.&lt;/p&gt;
&lt;p&gt;At this point, we have defined enough views to load the markup for the &amp;lt;head&amp;gt; tag portion of our Graffiti theme.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So let's move on to defining the views necessary for the &lt;strong&gt;&amp;lt;body&amp;gt;&lt;/strong&gt; portion of the theme. Let's go back to Wucoco's &lt;strong&gt;index.php&lt;/strong&gt; file.&amp;nbsp;&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;?php get_header(); ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;page_container&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php get_sidebar(); ?&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We took care of the header, but its not clear where the &lt;strong&gt;&amp;lt;body&amp;gt;&lt;/strong&gt; tag is defined yet.&amp;nbsp; So let's look a little further down the &lt;strong&gt;header.php&lt;/strong&gt; file.&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;      &amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;nav&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;       &amp;lt;?php &lt;span style="color: rgb(0, 128, 0);"&gt;/* CUSTOMIZE HEADER LINKS HERE */&lt;/span&gt; ?&amp;gt;&lt;br /&gt;           |&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;lt;?php echo get_settings('home'); ?&amp;gt;&amp;quot;&lt;/span&gt;&amp;gt;home&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;|&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;       &amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;link 1&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;|&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;       &amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;link 2&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;|&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;       &amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;link 3&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;|&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;       &amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;link 4&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;|&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;       &amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;link 5&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;|&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;       &amp;lt;?php &lt;span style="color: rgb(0, 128, 0);"&gt;/* END HEADER LINKS */&lt;/span&gt; ?&amp;gt;&lt;br /&gt;      &amp;lt;/div&amp;gt;&lt;br /&gt;      &amp;lt;?php &lt;span style="color: rgb(0, 128, 0);"&gt;/* UNCOMMENT THE LINE BELOW IF YOU WISH TO SEE YOUR BLOG'S TITLE IN THE HEADER */&lt;/span&gt; ?&amp;gt;&lt;br /&gt;      &amp;lt;!-- &amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;blogtitle&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;h1&amp;gt;&amp;lt;?php echo get_bloginfo ( &lt;span style="color: rgb(0, 96, 128);"&gt;'name'&lt;/span&gt; );  ?&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;      &amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;searchform&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;?php include (TEMPLATEPATH . &lt;span style="color: rgb(0, 96, 128);"&gt;'/searchform.php'&lt;/span&gt;); ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now it is clear that the opening tag of &lt;strong&gt;&amp;lt;body&amp;gt;&lt;/strong&gt; actually exists in the header view.&amp;nbsp; Why do this?&amp;nbsp; Well this theme utilizes a &amp;quot;header&amp;quot; div at the top of the site for an image, navigation links, and search. In order to ensure that all this markup is rendered first, the theme author decided to put all this markup inside his header view.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I chose to re-organize things a bit for better readability, so I went ahead and moved the &lt;strong&gt;&amp;lt;body&amp;gt;&lt;/strong&gt; tag into my &lt;strong&gt;layout.view&lt;/strong&gt; and the rest of the markup into a separate view for Graffiti which I called &lt;strong&gt;page_header.view&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;nav&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;ul id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;nav&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        $macros.NavBar()&lt;br /&gt;        &amp;lt;li &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;rss&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;$urls.Rss&amp;quot;&lt;/span&gt;&amp;gt;RSS&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;      &amp;lt;/ul&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;blogtitle&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;h1&amp;gt;&amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;$urls.Home&amp;quot;&lt;/span&gt; title=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;$data.Site.Title&amp;quot;&lt;/span&gt;&amp;gt;$data.Site.Title&amp;lt;/a&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;h3&amp;gt;$data.Site.TagLine&amp;lt;/h3&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;searchform&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;form action=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;$urls.Search&amp;quot;&lt;/span&gt; name=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;searchform&amp;quot;&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;searchform&amp;quot;&lt;/span&gt; method=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;get&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;      &amp;lt;div&amp;gt;&lt;br /&gt;        &amp;lt;input alt=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;search this site&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;search-box&amp;quot;&lt;/span&gt; type=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Search...&amp;quot;&lt;/span&gt; name=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;q&amp;quot;&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;q&amp;quot;&lt;/span&gt; onblur=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;if (this.value == '') {this.value = 'Search...';}&amp;quot;&lt;/span&gt; onfocus=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;if (this.value == 'Search...') {this.value = '';}&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;        &amp;lt;input type=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;searchsubmit&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Search&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;      &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;/form&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;As you can see, I adjusted my markup a little bit to play nicer with Graffiti.&amp;nbsp; I started by converting the static link list into an &lt;a _tesavedurl="http://www.w3schools.com/tags/tag_ul.asp" href="http://www.w3schools.com/tags/tag_ul.asp"&gt;Unordered List&lt;/a&gt; that works with the &lt;strong&gt;NavBar()&lt;/strong&gt; macro. I then added some markup to put in my site's &lt;strong&gt;tagline&lt;/strong&gt; in addition to its &lt;strong&gt;title&lt;/strong&gt; into the top header div.&lt;/p&gt;
&lt;p&gt;Finally, I customized the &lt;strong&gt;searchform&lt;/strong&gt; to work with Graffiti.&amp;nbsp; There was an opportunity to convert this form into it's own view, as the Wucoco theme did, but since I'm only keeping search in the page's header I deemed another view unnecessary.&lt;/p&gt;
&lt;p&gt;Now let's go back to my Graffiti &lt;strong&gt;layout.view &lt;/strong&gt;file to see how things look.&lt;/p&gt;
&lt;div style="overflow: auto;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&amp;lt;!DOCTYPE html PUBLIC &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;html xmlns=&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        $macros.Head()&lt;br /&gt;        $macros.LoadThemeView(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;header.view&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        $macros.LoadThemeView(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;page_header.view&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Clean and simple.&amp;nbsp; Now we've got the &amp;lt;head&amp;gt; and the &amp;lt;body&amp;gt; tags as well as the beginning markup for the page.&amp;nbsp; Converting the rest of the theme is pretty straight forward from this point on by following the same steps as above for the &lt;strong&gt;sidebar&lt;/strong&gt; and &lt;strong&gt;footer &lt;/strong&gt;elements of the theme.&lt;/p&gt;
&lt;p&gt;My completed altair theme is available &lt;a _tesavedurl="http://webgambit.com/altair" href="http://webgambit.com/altair"&gt;here&lt;/a&gt;.&amp;nbsp; It is licensed under the GPL (as was the Wucoco theme) and you are free to modify it as you will as long as you reference both themes in the comments.&amp;nbsp; This theme is for development and personal usage only.&amp;nbsp; I can't officially provide support for it, but if you have any issues that you can't figure out feel free to leave a comment.&lt;/p&gt;
&lt;p&gt;For further reading and information on how to write themes for Graffiti, go to &lt;a title="http://docs.graffiticms.com" _tesavedurl="http://docs.graffiticms.com" href="http://docs.graffiticms.com"&gt;http://docs.graffiticms.com&lt;/a&gt;.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/converting-a-wordpress-theme-to-grafffiti/</guid>
      <link>http://webgambit.com/blog/converting-a-wordpress-theme-to-grafffiti/</link>
      <pubDate>Sat, 08 Dec 2007 16:53:00 GMT</pubDate>
      <pubDateParsed>2007-12-08T16:53:00</pubDateParsed>
      <title>Converting a Wordpress theme to Grafffiti</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;As Rob &lt;a _tesavedurl="http://weblogs.asp.net/rhoward/archive/2007/12/05/announcing-telligent-graffiti-cms-beta-1.aspx" href="http://weblogs.asp.net/rhoward/archive/2007/12/05/announcing-telligent-graffiti-cms-beta-1.aspx"&gt;announced&lt;/a&gt;, Telligent's Graffiti product is now in public beta!&amp;nbsp; Download the necessary bits &lt;a _tesavedurl="http://graffiticms.com/graffiti-beta1.zip" href="http://graffiticms.com/graffiti-beta1.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've been running Graffiti both internally and externally for a while now and I can attest to its excellent usability as it really makes it very simple to get content out there.&amp;nbsp;&amp;nbsp; Graffiti supports both Microsoft Access and SQL Server so you have some flexibility in terms of how you want to run it.&amp;nbsp; We are still investigating other databases as well, with a focus on databases that support an easy XCOPY deployment model.&lt;/p&gt;
&lt;p&gt;This site is running on SQL Server 2005 and I used an in-development migration tool written by &lt;a _tesavedurl="http://ndepth.net" href="http://ndepth.net"&gt;Jayme Davis&lt;/a&gt; to migrate my posts over from Community Server 2007.&amp;nbsp; Jayme has actually released this tool in an unsupported fashion.&amp;nbsp; Check the comments on his &lt;a _tesavedurl="http://ndepth.net/blog/graffiti-beta-is-launched/" href="http://ndepth.net/blog/graffiti-beta-is-launched/"&gt;post&lt;/a&gt; for the download link.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;One of the great things about Graffiti is that it is really easy to create custom themes for it.&amp;nbsp; Anyone familiar with theming PHP-based blog packages like &lt;a _tesavedurl="http://wordpress.org" href="http://wordpress.org"&gt;Wordpress&lt;/a&gt; will feel right at home with Graffiti's theming structure.&amp;nbsp; No existing .NET experience is necessary.&lt;/p&gt;
&lt;p&gt;Look for an upcoming post with my release of this site's theme shortly with some explanations of the how I leveraged Graffiti's theme engine to do the layout.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/graffiti-beta-1/</guid>
      <link>http://webgambit.com/blog/graffiti-beta-1/</link>
      <pubDate>Thu, 06 Dec 2007 16:47:00 GMT</pubDate>
      <pubDateParsed>2007-12-06T16:47:00</pubDateParsed>
      <title>Graffiti Beta 1 released</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;&lt;img width="544" height="416" alt="" _tesavedurl="http://webgambit.com/files/media/Seinfeld_s9e6.jpg" src="http://webgambit.com/files/media/Seinfeld_s9e6.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;This post has been a long time coming, but I've joined the &lt;a _tesavedurl="http://richmercer.com/blog/sites-powered-by-graffiti-are-appearing-everywhere/" href="http://richmercer.com/blog/sites-powered-by-graffiti-are-appearing-everywhere/"&gt;latest Telligenti Club&lt;/a&gt; and relaunched my blog on Telligent's new &lt;a _tesavedurl="http://docs.graffiticms.com/" href="http://docs.graffiticms.com/"&gt;Graffiti&lt;/a&gt; platform.&amp;nbsp; Graffiti is our new site application for Content Made Simple.&amp;nbsp; It is a very lightweight, easy to design and develop site application built from the ground up to address a different market segment than our flagship application, &lt;a _tesavedurl="http://communityserver.org" href="http://communityserver.org"&gt;Community Server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can read more about Graffiti &lt;a _tesavedurl="http://simpable.com/software/graffiti-cms-faq/" href="http://simpable.com/software/graffiti-cms-faq/"&gt;here&lt;/a&gt;.&amp;nbsp; If you are interested in participating in our private &lt;a _tesavedurl="http://graffiticms.com/" href="http://graffiticms.com/"&gt;beta&lt;/a&gt;, fill out this form and you will receive a link to download the install.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a _tesavedurl="http://ndepth.net/" href="http://ndepth.net/"&gt;Jayme Davis&lt;/a&gt;, &lt;a _tesavedurl="http://richmercer.com/" href="http://richmercer.com/"&gt;Rich Mercer&lt;/a&gt;, and &lt;a _tesavedurl="http://simpable.com/" href="http://simpable.com/"&gt;Scott Watermasysk&lt;/a&gt; for helping me get everything up and running.&amp;nbsp; I'm really excited to use Graffiti and it's definitely brought a lot of fun back to blogging that I haven't felt since my Wordpress days.&lt;/p&gt;
&lt;p&gt;A lot has happened in the .NET space since my last blog post&amp;nbsp; and I have been getting more involved in the .NET community as of late. I will be posting a lot more often from here on out so expect to see a lot of new content in the next few weeks.&amp;nbsp; Stay tuned!&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/we-are-back/</guid>
      <link>http://webgambit.com/blog/we-are-back/</link>
      <pubDate>Tue, 04 Dec 2007 13:40:00 GMT</pubDate>
      <pubDateParsed>2007-12-04T13:40:00</pubDateParsed>
      <title>And we're back!</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;Fred George, noted Agile Developer and thought leader, had a great &lt;a href="http://processpeoplepods.blogspot.com/2007/08/ideal-development-skills-for-pods.html" target="_blank"&gt;post&lt;/a&gt; where he described his ideal&amp;nbsp;ratios of developer skill levels when building an Agile development team.&lt;/p&gt; &lt;p&gt;One of the foundations of his theory is that the number of Apprentice or Junior level developers should remain small on any given team.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;...&lt;em&gt;bring on apprentices only at the rate they can be productive to the team; otherwise, be courageous and defer the staffing, ignoring what your spreadsheets are telling you.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I can certainly identify with Fred's warnings here as I've had the unfortunate experience of working in a shop which&amp;nbsp;built upside down teams with one skilled senior developer managing 5-7 fresh college graduates underneath them.&amp;nbsp; The net effect was a very buggy system, poor productivity, and continuous &lt;a href="http://www.amazon.com/Death-March-Developers-Surviving-Impossible/dp/0130146595" target="_blank"&gt;death marches&lt;/a&gt; between releases.&lt;/p&gt; &lt;p&gt;As many&amp;nbsp;&lt;a href="http://codecraft.info/" target="_blank"&gt;others&lt;/a&gt; have said before, programming is a skilled&amp;nbsp;craft, and thus must be treated as one.&amp;nbsp; While it's true that almost anyone can learn to hack together some&amp;nbsp;working code, true mastery of the craft requires learning under existing masters.&amp;nbsp; And for a master, training even one apprentice requires a significant time investment that can often come at the cost of productivity.&lt;/p&gt; &lt;p&gt;In my current role at Telligent, I've had the good fortune of working with a very talented Junior Developer and I've enjoyed helping him go from being a good programmer to being a great developer.&amp;nbsp; However, it's been quite clear to me that having more Juniors on my team would quickly overwhelm me and begin to adversely affect my team's productivity. I would probably be spending more time on mentoring them and less time on knocking things out of my own task list.&lt;/p&gt; &lt;p&gt;Even the brightest Juniors will not be aware of all the tools, resources, and practices that are at their disposal as compared to a more experienced developer.&amp;nbsp; In summary, Fred George said it best:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;...start your projects with few, if any, Apprentices, and stage them into the project at the rate you can productively absorb them.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I highly advise that you read the rest of Fred George's posts in his series on &lt;a href="http://processpeoplepods.blogspot.com/2007/07/masters-journeymen-and-apprentices-part.html" target="_blank"&gt;Masters, Journeymen, and Apprentices&lt;/a&gt;.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/building-a-balanced-team/</guid>
      <link>http://webgambit.com/blog/building-a-balanced-team/</link>
      <pubDate>Fri, 10 Aug 2007 04:04:09 GMT</pubDate>
      <pubDateParsed>2007-08-10T04:04:09</pubDateParsed>
      <title>Building a Balanced Team</title>
    </item>
    <item>
      <author>Karthik Hariharan</author>
      <category domain="http://webgambit.com/blog/">Blog</category>
      <description>&lt;p&gt;I spoke with a friend the other day who came to the startling realization that they had become&amp;nbsp;overpaid.&amp;nbsp; Most people would define being overpaid as receiving a salary above the current market standard for your responsibilities and skill set.&amp;nbsp; Taking a moniker from a &lt;a href="http://www.overpaidpayables.com/index.html" mce_href="http://www.overpaidpayables.com/index.html" target="_blank"&gt;company&lt;/a&gt; which shares an office in my building, I have decided to call such an individual an&amp;nbsp;&lt;b&gt;Overpaid Payable&lt;/b&gt;.&lt;/p&gt; &lt;p&gt;An &lt;b&gt;Overpaid Payable&lt;/b&gt; is a resource whose cost to an&amp;nbsp;organization exceeds&amp;nbsp;the value that the&amp;nbsp;resource provides&amp;nbsp;back to&amp;nbsp;the organization.&amp;nbsp; In the current market for software developers, the danger of becoming an Overpaid Payable has become &lt;a href="http://forums.construx.com/blogs/stevemcc/archive/2007/05/31/software-developer-compensation-2007.aspx" mce_href="http://forums.construx.com/blogs/stevemcc/archive/2007/05/31/software-developer-compensation-2007.aspx" target="_blank"&gt;greater than ever&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;There are many signs&amp;nbsp;that&amp;nbsp;you are being overpaid.&amp;nbsp; Here are some:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You have been in the same company with no increased responsibility for&amp;nbsp;3 years or more despite receiving regular salary increases.&lt;/li&gt; &lt;li&gt;Your job very often requires long, inefficient and wasteful hours but you are paid handsomely to compensate for the poor planning that keeps you at work late nights and weekends.&lt;/li&gt; &lt;li&gt;You see high turnover in your company and often see across-the-board increases handed out&amp;nbsp;soon after&amp;nbsp;a few indispensable resources decide to leave the company.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So what's wrong with being an Overpaid Payable?&amp;nbsp; Being overpaid leaves you &lt;b&gt;vulnerable&lt;/b&gt;.&amp;nbsp; It can give you a false sense of security as you build up your lifestyle around your current salary.&amp;nbsp; If you can't guarantee this same salary in another, very&amp;nbsp;similar&amp;nbsp;job, then you will have difficulty planning for the future.&amp;nbsp; Nothing is certain, and if your company is &lt;a href="http://www.hanselman.com/blog/TheNextStepCheckFreeToAcquireCorillianFor245m.aspx" mce_href="http://www.hanselman.com/blog/TheNextStepCheckFreeToAcquireCorillianFor245m.aspx" target="_blank"&gt;bought out&lt;/a&gt; or goes through cost cutting layoffs, it is the overpaid employees who are&amp;nbsp;usually the first to go.&amp;nbsp; Additionally if you ever really dislike your job, your choices are more limited.&lt;/p&gt; &lt;p&gt;If you're reading this and thinking that you are overpaid and are now stuck, all is not lost.&amp;nbsp; There are many ways to fix this situation.&amp;nbsp; The most obvious one is to&amp;nbsp;just leave your current job to take whatever you can get on the open market.&amp;nbsp; However, this may not be&amp;nbsp;realistic depending on your financial responsibilities, so I would advise finding a way to increase your value while staying in your current organization.&amp;nbsp;&amp;nbsp;Here are a few ways that I have seen work.&lt;/p&gt; &lt;p&gt;Learn more about the industry you support to gain new responsibilities.&amp;nbsp; If you write financial software, take the existing financial knowledge you've acquired and improve upon it.&amp;nbsp; You may find yourself managing a team of new hires with lots of technical knowledge but no industry knowledge.&lt;/p&gt; &lt;p&gt;Build and market your expertise around a product or technology through peer groups.&amp;nbsp; Being recognized as an expert in your field bestows many benefits, including competitive and repeatable&amp;nbsp;salaries.&lt;/p&gt; &lt;p&gt;Use your existing knowledge to add value to other functions of your business including sales, services, and support.&amp;nbsp; Your existing knowledge can provide a lot to these other areas in many surprising ways.&lt;/p&gt; &lt;p&gt;In summary, the best way to avoid becoming an Overpaid Payable is to constantly grow your responsibilities and skills to match your salary.&amp;nbsp; Always monitor your yearly salary increases to see if they come with increased responsibilities and skills.&amp;nbsp; Undoubtedly, you will have slower years and faster years, but if you monitor your career diligently, you'll never need to worry about becoming overpaid.&lt;/p&gt;</description>
      <guid isPermaLink="true">http://webgambit.com/blog/are-you-an-overpaid-payable/</guid>
      <link>http://webgambit.com/blog/are-you-an-overpaid-payable/</link>
      <pubDate>Sun, 05 Aug 2007 07:39:00 GMT</pubDate>
      <pubDateParsed>2007-08-05T07:39:00</pubDateParsed>
      <title>Are you an Overpaid Payable?</title>
    </item>
    <link>http://webgambit.com/blog/</link>
    <title>Blog</title>
    <language>en-US</language>
  </channel>
</rss>