<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3457950532690053467</id><updated>2011-12-21T08:44:05.931-05:00</updated><category term='Analytics'/><category term='Arcade'/><category term='Microsoft'/><category term='Pandora'/><category term='Microsoft .NET'/><category term='Amazon'/><category term='SQL Server'/><category term='Technorati'/><category term='AJAX'/><category term='Security'/><category term='Oracle'/><category term='Apple'/><category term='SOA'/><category term='Stakeholders'/><category term='Business Intelligence'/><category term='Confluence'/><category term='Programming'/><category term='Open-Source'/><category term='ASP.NET'/><category term='MIX07'/><category term='CIO'/><category term='Trends'/><category term='RSS'/><category term='Google Earth'/><category term='Blackberry'/><category term='Commercials'/><category term='CIBC'/><category term='Digibarn'/><category term='Video'/><category term='Information Technology'/><category term='Digg'/><category term='Facebook'/><category term='LiveEarth'/><category term='Internet'/><category term='Project Management'/><category term='IT Governance'/><category term='Test Driven Development'/><category term='QA'/><category term='Video Games'/><category term='Music'/><category term='Software Development'/><category term='SharePoint'/><category term='CAPTCHA'/><category term='Scratch'/><category term='YouTube'/><category term='Microsoft Project'/><category term='Humour'/><category term='Search'/><category term='Online Advertising'/><category term='Banking'/><category term='Web 2.0'/><category term='Google'/><category term='MIT'/><category term='Computers'/><category term='Learning Management Systems'/><category term='Agile'/><category term='Bugs'/><category term='Press'/><category term='Shoutwire'/><category term='Zoominfo'/><category term='Methodologies'/><category term='Wiki'/><category term='Television'/><category term='Brand'/><category term='Blog'/><category term='Zachman Framework'/><category term='Second Life'/><category term='Silverlight'/><category term='Media'/><category term='RIM'/><title type='text'>Chris Woodill</title><subtitle type='html'>Diary of an IT Innovator</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default?start-index=101&amp;max-results=100'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>142</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2503552902643537227</id><published>2010-11-23T15:10:00.001-05:00</published><updated>2010-11-23T15:10:15.153-05:00</updated><title type='text'>Bug in Microsoft Project 2010 – Resource Usage</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In Microsoft Project 2010, you can create a custom calendar to set your day as something different than the default 8 hours per day.&amp;#160; In this example, I changed the working time to 7.5 hours per day.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/TOwfnBTTZuI/AAAAAAAAARU/r-YRJb4IVLM/s1600-h/image%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TOwfnydHdQI/AAAAAAAAARY/Q5rczjF5stE/image_thumb%5B4%5D.png?imgmax=800" width="820" height="31" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So far, no problem.&amp;#160; However, look what happens when you view the Resource Usage Tab for the same task:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/TOwfoSxERjI/AAAAAAAAARc/k8hzjYO9pag/s1600-h/image%5B16%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TOwfpVNtcEI/AAAAAAAAARg/i4pg3mY7mwM/image_thumb%5B10%5D.png?imgmax=800" width="811" height="32" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s not what I want - I said 7.5 hours per day is the working time!&amp;#160;&amp;#160; It should be 7.5 hours per day, not 8 hours for the first 4 days and 5.5 hours for the fifth day.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2503552902643537227?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2503552902643537227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2503552902643537227' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2503552902643537227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2503552902643537227'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/11/bug-in-microsoft-project-2010-resource.html' title='Bug in Microsoft Project 2010 – Resource Usage'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_V5m6b8L54Jo/TOwfnydHdQI/AAAAAAAAARY/Q5rczjF5stE/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8115728250266930828</id><published>2010-11-01T20:56:00.001-05:00</published><updated>2010-11-01T20:56:15.263-05:00</updated><title type='text'>IT Manager Survey Results So Far…</title><content type='html'>&lt;p&gt;About 2 months ago, I started a survey on IT Management.&amp;#160; The following are the results so far after about 40 responses.&amp;#160; If you would like to participate in the survey, please feel free to do so by following this link: &lt;a title="https://www.surveymonkey.com/s/ITManagerSurveyWeb" href="https://www.surveymonkey.com/s/ITManagerSurveyWeb"&gt;https://www.surveymonkey.com/s/ITManagerSurveyWeb&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Here are the highlights so far…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9voIgzkVI/AAAAAAAAAQc/4DTm49dJLUs/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vouShiFI/AAAAAAAAAQg/0B7Ji9BVyNI/image_thumb%5B4%5D.png?imgmax=800" width="598" height="367" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/TM9vpDZkA9I/AAAAAAAAAQk/KL3qNUeQGSs/s1600-h/image%5B55%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vpmZd6aI/AAAAAAAAAQo/yFGtMQurDbs/image_thumb%5B37%5D.png?imgmax=800" width="612" height="372" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/TM9vpxWqkGI/AAAAAAAAAQs/395h5DRq_MY/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vqv_hIzI/AAAAAAAAAQw/4n-uStounmI/image_thumb%5B21%5D.png?imgmax=800" width="596" height="382" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/TM9vre4jtQI/AAAAAAAAAQ0/nLhLLPvz4Bw/s1600-h/image%5B38%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_V5m6b8L54Jo/TM9vsTnx-3I/AAAAAAAAAQ4/vyd0pzzXls4/image_thumb%5B26%5D.png?imgmax=800" width="594" height="375" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/TM9vsp7DrxI/AAAAAAAAAQ8/dZfyoeOMyYU/s1600-h/image%5B45%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vtMADcZI/AAAAAAAAARA/Tym9E6dDC3o/image_thumb%5B31%5D.png?imgmax=800" width="593" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vt1kU8GI/AAAAAAAAARE/d8FdraeXJSU/s1600-h/image%5B51%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vuV1e2GI/AAAAAAAAARI/jR0dtctRmX8/image_thumb%5B35%5D.png?imgmax=800" width="591" height="371" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/TM9vu12XurI/AAAAAAAAARM/mBDr79Ls4eo/s1600-h/image%5B60%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vvmUt29I/AAAAAAAAARQ/L725KkepNZc/image_thumb%5B40%5D.png?imgmax=800" width="603" height="396" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8115728250266930828?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8115728250266930828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8115728250266930828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8115728250266930828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8115728250266930828'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/11/it-manager-survey-results-so-far.html' title='IT Manager Survey Results So Far…'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_V5m6b8L54Jo/TM9vouShiFI/AAAAAAAAAQg/0B7Ji9BVyNI/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5671376466770585402</id><published>2010-09-20T11:42:00.001-05:00</published><updated>2010-09-20T11:42:00.280-05:00</updated><title type='text'>The US Customs Rules have not Kept Up with the Realities of Global Knowledge Work</title><content type='html'>&lt;p&gt;As a global consultant, I travel from time to time to the United States.&amp;#160; When you go through customs, you are questioned to ensure that you are not “working” full-time in the United States without a green card or visa.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The basic rules for &amp;quot;working&amp;quot; in the United States when you interact with airport customs seem to be as follows:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You are not allowed to be a &amp;quot;worker&amp;quot; without a visa or a green card&lt;/li&gt;    &lt;li&gt;To get either a visa or green card you have to be employable in the US for an extended period of time, e.g. permanently in the case of the green card and at least a year in the case of a visa&lt;/li&gt;    &lt;li&gt;Getting a NAFTA visa is based on a list of in demand occupations such as teacher, computer programmer or occupational therapist&lt;/li&gt;    &lt;li&gt;If you do the work in another country they will let you visit your customer in the united states on occasion.&amp;#160; There is no specific rule that is spelled out but in my experience if you go down for a couple days in a month you are ok but if you are going down too often or stay too long the customs officer will start suspecting you are doing &amp;quot;work&amp;quot; in the United States.&lt;/li&gt;    &lt;li&gt;You are allowed to go into the United States on business if you state that you are in “Sales”, e.g. to close a deal.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;So those are the basic rules, formulated decades ago before the Internet era.&amp;#160; The rules clearly show a very mid 20th century view of &amp;quot;work&amp;quot;:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;quot;Work&amp;quot; equals hours put in against a job requiring a very specific boxed in role.&amp;#160; The worst thing to tell a customs officer is that you are a &amp;quot;business analyst&amp;quot;, &amp;quot;trainer&amp;quot;, &amp;quot;strategist&amp;quot;, or &amp;quot;consultant&amp;quot;.&amp;#160;&amp;#160; &amp;quot;Work&amp;quot; equals a job that an average customs officer had heard of, e.g. farmer or secretary.&amp;#160; Try explaining what you do as an &amp;quot;Information architect&amp;quot; and you will be met with suspicion.&lt;/li&gt;    &lt;li&gt;&amp;quot;Goods&amp;quot; equals tangible imports like lumber, cars, etc.&amp;#160; What if your &amp;quot;good&amp;quot; is a company's online strategy that they just paid you 150k to develop?&amp;#160;&amp;#160;&amp;#160; What if your “good” is something that you can store on a USB key in your pocket?&amp;#160; &lt;/li&gt;    &lt;li&gt;&amp;quot;Labor market&amp;quot; is based on the notion that you have to be in the country in order to work.&amp;#160; It misses the point that I can do millions of dollars of knowledge work without any concept of borders.&amp;#160; &lt;/li&gt;    &lt;li&gt;“Work” means working on premises.&amp;#160; I can work just fine for a US company as long as I work for a Canadian company and ship goods into the United States.&amp;#160; However, if I want to spend 2 weeks deploying the “product” on site, then I’m going to get questioned.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If the goal is to prevent labor from competing with local “workers”, these types of restrictions don’t really provide much support in the digital global knowledge working realm.&amp;#160; Really, the rules basically are a restriction on face to face meetings but place no restriction on me being able to compete first hand with local resources from remote access points.&amp;#160; Instead, they just put a barrier to innovation and physical collaboration as a complement to existing means of digital collaboration.&amp;#160; It means that American companies with offices in other countries (Canada being a great example) need to obtain visas for employees who are jumping across the border for short term stays.&lt;/p&gt;  &lt;p&gt;Surely, in the 21st century, we should update this approach and recognize that INCREASING global knowledge workers ability to collaborate across borders is essential to higher productivity, better solutions, and a better economy.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Given that reality, I would propose a very easy to obtain, very low restriction visa that would enable short term deployments (say 2-4 weeks) across the border.&amp;#160;&amp;#160; The governments on both sides could charge a fee and use a Nexus type approach to clearing consultants for the usual security risks.&amp;#160; Once they have the pass, they could go down at any time to deploy solutions, meet with customers, and collaborate with stakeholders with the assumption that 80% of the work would still be done outside the country but that at crucial times there is a requirement for global knowledge workers to collaborate together.&amp;#160; If the United States wants to be the centre of global innovation, it should enable these global workers to actively choose the US as their physical meeting hub for planning sessions, deployments to data centers, training, and collaboration sessions.&amp;#160; This would create a high degree of network effect that would put it at a significant advantage over more restrictive countries such as China, Russia, Middle Eastern countries, etc.&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5671376466770585402?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5671376466770585402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5671376466770585402' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5671376466770585402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5671376466770585402'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/09/us-customs-rules-have-not-kept-up-with.html' title='The US Customs Rules have not Kept Up with the Realities of Global Knowledge Work'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-4254265783502106034</id><published>2010-09-20T10:57:00.001-05:00</published><updated>2010-09-20T10:58:59.127-05:00</updated><title type='text'>Zachman Framework Certification No Longer Valid?!</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.gartner.com/philip-allega/2010/09/01/john-zachman-is-dead-long-live-john-zachman/"&gt;Gartner is reporting&lt;/a&gt; that after almost 30 years of being the de facto Enterprise Architecture framework for government, aerospace, and other large scale enterprises the Zachman Framework has collapsed as John Zachman is retiring.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;At first glance, it appears that John A Zachman is closing up shop and about to retire, having severed his business partnerships, and appearances are that his son, John P Zachman, will take over the IP trademarks and, as alleged by a former business partner Stan Locke, seek to place the Zachman IP within a COTS package.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;A second, and more penetrating glance, into the actual lawsuit itself reveals alleged deceptive practices by the defendant, Stan Locke, and claims of serious and reprehensible actions that are alleged to damage the brand of Zachman.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The capitulation by the defendant in a surprising lawsuit, Stan Locke, will not resolve the concerns or Zachman brand ownership concerns as the damage has already occurred.&amp;#160; This, in turn, raises questions about how the Zachman brand will&amp;#160; regain control after relinquishing that control for so long.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;What does this mean for Enterprise Architects that have spent their time, energy and significant financial resources getting certified and becoming practitioners in the EA field?&amp;#160; Based on the current state, it is not clear how this will be sorted out.&lt;/p&gt;  &lt;p&gt;As of right now, certification programs have been suspended, John Zachman is exiting the business and the entire framework is now surrounded by legal troubles over who controls the brand, the IP, etc.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-4254265783502106034?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/4254265783502106034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=4254265783502106034' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4254265783502106034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4254265783502106034'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/09/zachman-framework-certification-no.html' title='Zachman Framework Certification No Longer Valid?!'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6255738138328616714</id><published>2010-09-08T08:12:00.001-05:00</published><updated>2010-09-08T08:12:41.235-05:00</updated><title type='text'>Copying Data from Project 2010 to Word is Actually Worse than 2007</title><content type='html'>&lt;p&gt;In Project 2007, copying data from Project to Word was quite painful, resulting in some funky formatting that was hard coded to whatever colors, fonts, etc. you had in your project file.&amp;#160; In addition, when you copied dates, the default format was 9/8/2010 12:00pm which unless your plan is VERY time sensitive is not typically want you want to show in a word document.&lt;/p&gt;  &lt;p&gt;So in Project 2010, the Microsoft team seems to have fixed some things but broken others in an effort to improve these problems in 2007.&lt;/p&gt;  &lt;p&gt;So take this dummy project plan I created:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/TIeLweOdnUI/AAAAAAAAAPU/W2Dp6Gb5VMo/s1600-h/ScreenHunter_02%20Sep.%2008%2008.57%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenHunter_02 Sep. 08 08.57" border="0" alt="ScreenHunter_02 Sep. 08 08.57" src="http://lh4.ggpht.com/_V5m6b8L54Jo/TIeLwn223HI/AAAAAAAAAPY/0Y_m5OiBS90/ScreenHunter_02%20Sep.%2008%2008.57_thumb%5B1%5D.jpg?imgmax=800" width="413" height="139" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I want to move this into Word so that I can include it in a Statement of Work, Project Charter, etc.&amp;#160; What I want is this data in a simple table – I don’t need GANTT charts or anything else…just a basic list of tasks and durations.&lt;/p&gt;  &lt;p&gt;So now if I copy this into Word, this is what I get:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/TIeLw4sUt-I/AAAAAAAAAPc/QrRFkLyJzFA/s1600-h/ScreenHunter_03%20Sep.%2008%2008.58%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenHunter_03 Sep. 08 08.58" border="0" alt="ScreenHunter_03 Sep. 08 08.58" src="http://lh3.ggpht.com/_V5m6b8L54Jo/TIeLxH7DJZI/AAAAAAAAAPg/Ju4fASjICb4/ScreenHunter_03%20Sep.%2008%2008.58_thumb%5B1%5D.jpg?imgmax=800" width="420" height="133" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Not a bad representation of the plan – certainly better than the output in Project 2007.&amp;#160;&amp;#160;&amp;#160; However, the biggest challenge here is the indenting – Task 1.1, 1.2, etc. are indented using 4 Spaces instead of a TAB, a proper Word paragraph indent, etc.&amp;#160; If you want to change the size of the indent in word, you’re now stuck with doing a search and replace for 4 spaces and either replacing them or converting them to TABs or Word paragraph indents.&lt;/p&gt;  &lt;p&gt;In Excel, there is a further problem – date formatting.&amp;#160; In Excel, the same plan looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/TIeLxlnHtTI/AAAAAAAAAPk/zLQ6k-FVu2Y/s1600-h/ScreenHunter_04%20Sep.%2008%2009.02%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenHunter_04 Sep. 08 09.02" border="0" alt="ScreenHunter_04 Sep. 08 09.02" src="http://lh4.ggpht.com/_V5m6b8L54Jo/TIeLyJhMyuI/AAAAAAAAAPo/Q2g6vsjqFYU/ScreenHunter_04%20Sep.%2008%2009.02_thumb%5B1%5D.jpg?imgmax=800" width="451" height="136" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Again, not bad and certainly an improvement over MS Project 2007.&amp;#160; However, let’s suppose that you want to change the date format to a simple date without the day in it, e.g. 8-Sept-10.&amp;#160;&amp;#160;&amp;#160; In order to convert the cell into a proper date, you have delete the &amp;quot;Wed &amp;quot; from the dates for each day of the week.&amp;#160; Then you can format your dates anyway you like in Excel.&amp;#160; In addition, you have the same problem with indents as Word – indents are handled with 4 Spaces instead of real indent marks, making them tough to remove.&lt;/p&gt;  &lt;p&gt;So from my perspective, while the formatting is prettier when copying data from MS Project 2010, its actually less useful and harder to convert to something I can manually format and change in Word or Excel myself.&amp;#160; This is ultimately what is needed – if you are copying and pasting into another document, you will want to use the parent documents fonts, indenting, date formatting, etc. and not Project’s default settings.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6255738138328616714?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6255738138328616714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6255738138328616714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6255738138328616714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6255738138328616714'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/09/copying-data-from-project-2010-to-word.html' title='Copying Data from Project 2010 to Word is Actually Worse than 2007'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/TIeLwn223HI/AAAAAAAAAPY/0Y_m5OiBS90/s72-c/ScreenHunter_02%20Sep.%2008%2008.57_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8380145216900328375</id><published>2010-08-01T18:08:00.003-05:00</published><updated>2010-08-01T18:13:20.849-05:00</updated><title type='text'>Another Apple IPOD Touch OS - A New Set of Weird Bugs</title><content type='html'>I have now upgraded my IPOD Touch to IOS 4.0 and already I have experienced some odd bugs:&lt;br /&gt;&lt;br /&gt;1. The default Wall Paper is a picture of rain hitting a glass window - not really a bug, but my first instinct was to assume that my IPOD had been dumped in water or had been exposed to humidity and it was warning me!&lt;br /&gt;&lt;br /&gt;2. The genius mix (which I have blogged about previously as a major source of bugs) seems to at least work, but the genius database makes some odd choices...it put Glenn Miller into my "Classic Rock" mix and Madonna into my "Indie Rock" mix for example.&lt;br /&gt;&lt;br /&gt;3. When you upgrade your OS, it backs up your existing media, wipes your OS and then restores your media through a sync.  I had 26 images on my IPOD from my vacation and the restored pictures are there but they are now super pixelated low resolution!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8380145216900328375?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8380145216900328375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8380145216900328375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8380145216900328375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8380145216900328375'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/08/another-apple-ipod-touch-os-new-set-of.html' title='Another Apple IPOD Touch OS - A New Set of Weird Bugs'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2297093021056821044</id><published>2010-02-13T12:05:00.001-05:00</published><updated>2010-02-13T12:05:47.601-05:00</updated><title type='text'>Zachman vs. TOGAF – Enterprise Architecting for Change</title><content type='html'>&lt;p&gt;In the past several years, I have been working with the &lt;a href="http://www.zachmaninternational.com/index.php/home-article/89#maincol"&gt;Zachman Framework&lt;/a&gt; for classifying and organizing architecture artefacts.&amp;#160; Zachman is quite popular as a framework in large enterprises such as governments, big banks, utilities, etc. because it is seen as a comprehensive way to manage the architecture process.&amp;#160; &lt;/p&gt;  &lt;p&gt;In the past year or so, I have been switching over to &lt;a href="http://www.opengroup.org/togaf/"&gt;TOGAF&lt;/a&gt; which is a competing EA framework.&amp;#160; In comparing the two frameworks, I have found it to be fundamentally more useful in my line of work for a simple reason – TOGAF is a process for managing architecture change, while Zachman is a taxonomy for capturing the current&amp;#160; state of an enterprise (exhaustively seems to be the goal).&lt;/p&gt;  &lt;p&gt;Roger Session’s wrote a good &lt;a href="http://msdn.microsoft.com/en-us/library/bb466232.aspx"&gt;article&lt;/a&gt; comparing various EA frameworks, and I agree with his conclusion – Zachman is really a taxonomy and TOGAF describes processes.&lt;/p&gt;  &lt;p&gt;The TOGAF process is described by the Architecture Development Method (ADM) :&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://www.opengroup.org/architecture/togaf8-doc/arch/Figures/adm.gif" /&gt;&lt;/p&gt;  &lt;p&gt;The ADM has some interesting features that make it more relevant to evolving enterprises:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The ADM is fundamentally iterative, both within a single cycle and through repeated iterations of the full cycle.&amp;#160; &lt;/li&gt;    &lt;li&gt;TOGAF provides a prescription for storing, classifying and managing architecture artefacts and solution building blocks at various levels of detail and maturity, promoting an incremental approach to enterprise architecture.&lt;/li&gt;    &lt;li&gt;Along with the ADM, TOGAF prescribes many tools for capturing requirements, defining/designing architectures and implementing governance practices.&amp;#160; &lt;/li&gt;    &lt;li&gt;The process is explicitly business and stakeholder focused – there is a recognition that architecture has to have a business purpose and not just be for its own sake.&lt;/li&gt;    &lt;li&gt;TOGAF explicitly allows borrowing from other frameworks, adapting and tailoring the framework to suit the needs of the business, etc.&amp;#160; So if you still want to use your Zachman Grid, you can continue to do so.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Zachman, in contrast, is about capturing state in a structured way.&amp;#160; It provides no guidance on HOW to do architecture design, HOW to introduce change or HOW to improve the architectural maturity of an organization.&amp;#160; It simply provides the model for storing architecture artefacts.&lt;/p&gt;  &lt;p&gt;Zachman also has no guidance for incorporating processes into an architecture state – there is no spot in the grid for defining change management processes, operations processes (e.g. ITIL), project management processes, etc.&amp;#160; TOGAF in contrast compliments these processes quite nicely:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/S3bb59gMKqI/AAAAAAAAAO4/SZLkGF1qDbA/s1600-h/image%5B10%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="297" alt="image" src="http://lh5.ggpht.com/_V5m6b8L54Jo/S3bb6omAdDI/AAAAAAAAAO8/G30zkW36cik/image_thumb%5B4%5D.png?imgmax=800" width="559" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In my work, I am finding TOGAF to be an effective framework for working with stakeholders through strategic planning and architecture work, especially for organizations who are actively transforming themselves.&amp;#160; It allows me to define a process for managing the architecture change in a structured manner through an iterative change cycle.&amp;#160; Stakeholders see a PROCESS that involves them through change and growth in their organization’s maturity.&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2297093021056821044?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2297093021056821044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2297093021056821044' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2297093021056821044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2297093021056821044'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2010/02/zachman-vs-togaf-enterprise.html' title='Zachman vs. TOGAF – Enterprise Architecting for Change'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_V5m6b8L54Jo/S3bb6omAdDI/AAAAAAAAAO8/G30zkW36cik/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1197629997326374784</id><published>2009-11-15T21:44:00.001-05:00</published><updated>2009-11-15T21:44:42.375-05:00</updated><title type='text'>My old URL is now obsolete</title><content type='html'>&lt;p&gt;Before Yahoo Mail became a big deal, it didn’t have its own URL (its currently mail.yahoo.com).&amp;#160; The URL was &lt;a href="http://www.yahoo.com/r/m1"&gt;www.yahoo.com/r/m1&lt;/a&gt;.&amp;#160; This URL hasn’t been promoted or used for about 10 years now but it still worked.&amp;#160; My brain’s automatic typing reflexes simply remember that URL as a habit.&lt;/p&gt;  &lt;p&gt;As of this week, it finally died!&amp;#160; Now when I without thinking type &lt;a href="http://www.yahoo.com/r/m1"&gt;www.yahoo.com/r/m1&lt;/a&gt; I get this error message:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/SwC8mGaariI/AAAAAAAAAOw/yLMARj357PM/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="156" alt="image" src="http://lh4.ggpht.com/_V5m6b8L54Jo/SwC8mYnqJOI/AAAAAAAAAO0/EriVRNOXBCU/image_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I guess it will take me a while to remember mail.yahoo.com as a replacement…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1197629997326374784?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1197629997326374784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1197629997326374784' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1197629997326374784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1197629997326374784'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/11/my-old-url-is-now-obsolete.html' title='My old URL is now obsolete'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/SwC8mYnqJOI/AAAAAAAAAO0/EriVRNOXBCU/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3223814584943318302</id><published>2009-07-14T07:14:00.001-05:00</published><updated>2009-07-15T21:42:20.096-05:00</updated><title type='text'>New Details on SharePoint 2010 from Microsoft</title><content type='html'>&lt;p&gt;&lt;a href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx"&gt;Microsoft has released a new site on SharePoint 2010.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the site, you will find information on SharePoint 2010 for developers and it professionals.&lt;/p&gt;  &lt;p&gt;There are some interesting announcements in video format here that are worth exploring.&amp;#160;&amp;#160; In the developer video, they show SharePoint integration into Visual Studio 2010.&amp;#160; There are a few new bits in here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Manifest editing tools in Visual Studio &lt;/li&gt;    &lt;li&gt;Solution Package Designer in Visual Studio &lt;/li&gt;    &lt;li&gt;New web part editor for Visual Studio &lt;/li&gt;    &lt;li&gt;LINQ will now support SharePoint lists.&amp;#160; &lt;/li&gt;    &lt;li&gt;Developer Dashboard will help by providing diagnostic information when developing web parts in SharePoint. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3223814584943318302?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3223814584943318302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3223814584943318302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3223814584943318302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3223814584943318302'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/07/new-details-on-sharepoint-2010-from.html' title='New Details on SharePoint 2010 from Microsoft'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5345872541026129655</id><published>2009-07-08T07:13:00.001-05:00</published><updated>2009-07-08T07:15:26.361-05:00</updated><title type='text'>Will Google Chrome OS Be Any Different than LINUX, BEOS, Network Computer, etc.?</title><content type='html'>&lt;p&gt;It was widely announced that &lt;a href="http://news.cnet.com/8301-17939_109-10281744-2.html?tag=newsLeadStoriesArea.1"&gt;Google will be releasing a new operating system&lt;/a&gt; called the Chrome OS that will be initially deployed to NetBooks but will hopefully compete with Windows on the desktop.&lt;/p&gt;  &lt;p&gt;Yawn…shades of 1995 when Java OS, Oracle OS, &lt;a href="http://en.wikipedia.org/wiki/Network_Computer"&gt;Network Computer&lt;/a&gt; etc. tried to do the same thing.&lt;/p&gt;  &lt;p&gt;If you want a OS replacement for Windows on your NetBook, you can get it today – its called LINUX!&amp;#160; Acer, Dell, etc. all have Net Books that will come with LINUX today.&amp;#160; And if you want to run Google’s browser, you can download it for free.&lt;/p&gt;  &lt;p&gt;Can you even call Chrome OS a new operating system when you’re just repackaging LINUX?&amp;#160; &lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt; and &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt; aren’t operating systems, so why is Chrome?&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;The operating systems that browsers run on were designed in an era where there was no Web,&amp;quot; the blog post said. &amp;quot;So today, we're announcing a new project that's a natural extension of Google Chrome--the Google Chrome Operating System. It's our attempt to rethink what operating systems should be.&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Huh?&amp;#160; Windows Vista, Windows XP, Mac OS, and LINUX were all designed with the web in mind.&amp;#160; &lt;/p&gt;  &lt;p&gt;COREL had the same vision in mind when they created COREL LINUX.&amp;#160; They had WordPerfect, CorelDraw, etc. (even at the time much more sophisticated applications than Google Spreadsheet is today) and they couldn’t sell any more office licenses because Microsoft had a lock on the desktop and was killing them in the office market.&amp;#160; So they made a big splash (and almost killed the company) investing heavily in desktop LINUX, the supposedly Windows killer.&amp;#160; &lt;/p&gt;  &lt;p&gt;BE Operating System was an entirely new OS developed in 1991.&amp;#160; Unlike the Chrome OS or Corel, it wasn’t a rehash of LINUX with a new set of apps thrown on top of it.&amp;#160; It was an entirely brand new operating system from the kernel upwards.&amp;#160; It had the same ambitious target – replace Windows with a better operating system.&amp;#160; It had a niche following originally as a replacement to the Apple Operating System (since the BE OS initially only ran on Power PC Chips and not Intel) and then as a Windows replacement.&amp;#160;&amp;#160; The company could not gain enough market share and eventually was bought out by Palm.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/SlSNTphtDUI/AAAAAAAAAOk/JPROC1wGOU8/s1600-h/BeOS_Desktop%5B3%5D.png"&gt;&lt;img title="BeOS_Desktop" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="300" alt="BeOS_Desktop" src="http://lh4.ggpht.com/_V5m6b8L54Jo/SlSNUL1n9RI/AAAAAAAAAOo/geMIyBEMO14/BeOS_Desktop_thumb%5B1%5D.png?imgmax=800" width="394" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The same reasons why these operating systems didn’t survive will cause major challenges for Google.&amp;#160; I found this &lt;a href="http://m.bobhuang.com/essays/nc.htm"&gt;table&lt;/a&gt; from Microsoft to challenge the proposition of the Network Computer:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="444" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;PC&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Network Computer&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Operating System&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Proprietary / Incompatible&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Mobile Support&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Excellent&lt;/td&gt;        &lt;td valign="top" width="176"&gt;None&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Applications&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&amp;gt; 100,000&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Limited / Incompatible&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Development Tools&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Choice&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Limited to Java&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Device Support&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Thousands&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Proprietary / Incompatible&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Device Model&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="176"&gt;None / Incompatible&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Manufacturers&lt;/td&gt;        &lt;td valign="top" width="133"&gt;2,500&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Few&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Networking&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Choice&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Requires high speed net&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Availability&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Now&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Limited&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Printer Support&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Thousands&lt;/td&gt;        &lt;td valign="top" width="176"&gt;None&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Scalability&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Excellent&lt;/td&gt;        &lt;td valign="top" width="176"&gt;Poor&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;With using LINUX, Google can solve some of these issues (scalability for example).&amp;#160; But even OS X for example has less third party support than Windows and far less partners and applications and it is fairly mature.&amp;#160; Google will have none of these advantages.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5345872541026129655?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5345872541026129655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5345872541026129655' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5345872541026129655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5345872541026129655'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/07/will-google-chrome-os-be-any-different.html' title='Will Google Chrome OS Be Any Different than LINUX, BEOS, Network Computer, etc.?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/SlSNUL1n9RI/AAAAAAAAAOo/geMIyBEMO14/s72-c/BeOS_Desktop_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-4179738856710797451</id><published>2009-07-05T14:22:00.001-05:00</published><updated>2009-07-05T14:22:02.785-05:00</updated><title type='text'>Challenges with Sharing Excel Workbooks in SharePoint</title><content type='html'>&lt;p&gt;In Excel 2007 (and 2003), you can share a workbook.&amp;#160; This allows users to simultaneously update the same file:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/SlD9WSd9l6I/AAAAAAAAAOc/8ND2QXDVhiA/s1600-h/ZA100986151033%5B2%5D.gif"&gt;&lt;img title="ZA100986151033" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="93" alt="ZA100986151033" src="http://lh4.ggpht.com/_V5m6b8L54Jo/SlD9WouN1hI/AAAAAAAAAOg/y0jHuMM5D6s/ZA100986151033_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This feature is used in many enterprises for collaboration, especially in departments such as Finance or Planning where there are lots of shared figures, budgets, plans, etc.&lt;/p&gt;  &lt;p&gt;There are some interesting features that allow for some rich collaboration scenarios simply within a single Excel file:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Each time that you save the shared workbook, you are prompted with the changes that other users have saved since the last time that you saved the shared workbook. If you want to keep the shared workbook open to monitor progress, Excel can update you with the changes automatically, at timed intervals that you specify, with or without saving the workbook yourself.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;When you save changes to a shared workbook, another person who is editing the workbook might have saved changes to the same cells. In this case, the changes conflict, and you are prompted with a conflict resolution dialog box so that you can choose which changes to keep&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When moving to SharePoint as a document management platform, this feature is no longer supported:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;More than one user cannot simultaneously make changes to a shared workbook that is stored on a Windows SharePoint Services 3.0 site. If you want to store your workbook on a Windows SharePoint Services 3.0 site, you should do so only after the collaboration effort through sharing is complete.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Document libraries by design only allow one person to edit a document at the same time.&amp;#160; In addition, they support check-in and out to provide locks on documents during the editing process.&amp;#160; When a user grabs a file for editing from SharePoint, they edit a file on their local machine and then when done it is saved back to the central document repository.&amp;#160; &lt;/p&gt;  &lt;p&gt;Excel Services allows for running of Excel files within the SharePoint server, but only in read only fashion.&amp;#160; Excel Services is great for read only dashboards, charts and graphs but isn’t a collaboration service.&lt;/p&gt;  &lt;p&gt;For more information on the different options for Excel collaboration, see &lt;a href="http://office.microsoft.com/en-us/excel/HA100898961033.aspx"&gt;Microsoft’s article on the subject&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-4179738856710797451?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/4179738856710797451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=4179738856710797451' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4179738856710797451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4179738856710797451'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/07/challenges-with-sharing-excel-workbooks.html' title='Challenges with Sharing Excel Workbooks in SharePoint'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/SlD9WouN1hI/AAAAAAAAAOg/y0jHuMM5D6s/s72-c/ZA100986151033_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2494527437832475698</id><published>2009-06-28T08:15:00.001-05:00</published><updated>2009-06-28T08:15:41.692-05:00</updated><title type='text'>Bad Search Synonyms</title><content type='html'>&lt;p&gt;I was on &lt;a href="http://www.theserverside.net"&gt;TheServerSide.NET&lt;/a&gt; which is one of the leading Microsoft .NET community sites and typed in “SharePoint”.&amp;#160; The result I got was this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/Skds9yw8JwI/AAAAAAAAAN8/6MtCpf050kk/s1600-h/ScreenHunter_01%20Jun.%2028%2009.11%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_01 Jun. 28 09.11" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="77" alt="ScreenHunter_01 Jun. 28 09.11" src="http://lh5.ggpht.com/_V5m6b8L54Jo/Skds-KHVO-I/AAAAAAAAAOA/o1G7RKab1Kc/ScreenHunter_01%20Jun.%2028%2009.11_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I thought that was kind of amusing, so I tried a few other Microsoft product names:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/Skds-P5e0mI/AAAAAAAAAOE/-IQcDDP0ONI/s1600-h/ScreenHunter_02%20Jun.%2028%2009.12%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_02 Jun. 28 09.12" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="78" alt="ScreenHunter_02 Jun. 28 09.12" src="http://lh4.ggpht.com/_V5m6b8L54Jo/Skds-Va7jqI/AAAAAAAAAOI/j5IF-sYZCf4/ScreenHunter_02%20Jun.%2028%2009.12_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/Skds-vvCn_I/AAAAAAAAAOM/iiFXg9ZCDWA/s1600-h/ScreenHunter_03%20Jun.%2028%2009.12%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_03 Jun. 28 09.12" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="76" alt="ScreenHunter_03 Jun. 28 09.12" src="http://lh6.ggpht.com/_V5m6b8L54Jo/Skds-uAwGRI/AAAAAAAAAOQ/jTuYzlVPu6w/ScreenHunter_03%20Jun.%2028%2009.12_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/Skds-5AWH5I/AAAAAAAAAOU/0dX5lQE0Idw/s1600-h/ScreenHunter_04%20Jun.%2028%2009.14%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_04 Jun. 28 09.14" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="72" alt="ScreenHunter_04 Jun. 28 09.14" src="http://lh6.ggpht.com/_V5m6b8L54Jo/Skds_VgdIyI/AAAAAAAAAOY/rjMnpLnLwkI/ScreenHunter_04%20Jun.%2028%2009.14_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2494527437832475698?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2494527437832475698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2494527437832475698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2494527437832475698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2494527437832475698'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/06/bad-search-synonyms.html' title='Bad Search Synonyms'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_V5m6b8L54Jo/Skds-KHVO-I/AAAAAAAAAOA/o1G7RKab1Kc/s72-c/ScreenHunter_01%20Jun.%2028%2009.11_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-677297378423863867</id><published>2009-06-17T21:45:00.001-05:00</published><updated>2009-06-17T21:46:36.498-05:00</updated><title type='text'>What We Know About SharePoint 2010</title><content type='html'>&lt;p&gt;Based on the various blog posts and articles, here is what we know from the publically available information on SharePoint 2010:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/05/07/announcing-sharepoint-server-2010-preliminary-system-requirements.aspx"&gt;SharePoint Server 2010 will be 64 bit only.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/04/14/microsoft-sharepoint-14-is-now-microsoft-sharepoint-2010.aspx"&gt;Windows SharePoint Services will still continue and there will be a new release of WSS along with SharePoint.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/05/07/announcing-sharepoint-server-2010-preliminary-system-requirements.aspx"&gt;Browser clients being targeted are XHTML 1.0 Browsers such as IE 7, IE 8 and Firefox 3.0.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/05/07/announcing-sharepoint-server-2010-preliminary-system-requirements.aspx"&gt;IE 6.0 will not be supported.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/04/14/microsoft-sharepoint-14-is-now-microsoft-sharepoint-2010.aspx"&gt;Visual Studio 2010 will be the targeted developer platform.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.zdnet.com/microsoft/?p=2761"&gt;Groove (the offline/online synchronization tool Microsoft bought when it acquired Groove Networks) is being renamed and repositioned with the upcoming release as “SharePoint Workspace Manager.”&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.zdnet.com/microsoft/?p=2761"&gt;SharePoint 2010 will feature a “Web-enabled Ribbon control” and support greater use of Silverlight controls&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.zdnet.com/microsoft/?p=2761"&gt;Migration should be smoother from 2007 to 2010 than 2003 to 2007.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.zdnet.com/microsoft/?p=2761"&gt;Microsoft’s new search engine FAST will be integrated into SharePoint as the enterprise search offering.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.sharepointproducts.com/archive/2009/05/12/microsoft-sharepoint-2010-news-from-teched-us-2009.aspx"&gt;Lists will now be able to map to database tables, improving performance.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.sharepointproducts.com/archive/2009/05/12/microsoft-sharepoint-2010-news-from-teched-us-2009.aspx"&gt;Improved developer support such as debugging from Visual Studio, easier development of Web Parts, and exploring of SharePoint objects through Server Explorer.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/02/19/sharepoint-tools-support-in-visual-studio.aspx"&gt;Visual Studio 2010 will come with a broad set of project and items templates. You’ll be able to use these to quickly create or update SharePoint elements such as list definitions, list instances, site definitions, workflows, event receivers, Business Data Catalog models, and content types.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/02/19/sharepoint-tools-support-in-visual-studio.aspx"&gt;In Visual Studio 2008, the supported workflow projects could be created only for lists and document libraries. In Visual Studio 2010, you’ll be able to create list and site level workflows as well as create aspx association and initiation forms. And, as you would expect, the new Visual Studio 2010 designers can be used to create Web Parts, application pages, and user controls for a SharePoint site.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://download.microsoft.com/download/C/0/9/C0965791-049B-4200-9008-F07A783026F6/VisualStudio2010_ProductOverview.pdf"&gt;Visual Studio 2010 will provide a feature and package designer for defining deployment packages.&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://windowsitpro.com/article/articleid/102113/sharepoint-2010-features-system-requirements-emerge.html"&gt;Faceted search will be supported that allows for filtering of search results based on SharePoint meta-data.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.atalasoft.com/cs/blogs/loufranco/archive/2009/05/18/cmis-in-sharepoint-2010.aspx"&gt;SharePoint will support&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services"&gt;CMIS&lt;/a&gt; standards.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is just a preliminary list – Microsoft will be publishing more information when the public beta is released this summer.&amp;#160;&amp;#160; Stay tuned as more details about the next release comes out.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-677297378423863867?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/677297378423863867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=677297378423863867' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/677297378423863867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/677297378423863867'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/06/what-we-know-about-sharepoint-2010.html' title='What We Know About SharePoint 2010'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-400557732434719503</id><published>2009-06-12T07:16:00.001-05:00</published><updated>2009-06-12T07:16:30.473-05:00</updated><title type='text'>How to Use Microsoft Project: Fixed Cost</title><content type='html'>&lt;p&gt;One of my colleagues ran into a major Project usability problem when he started filling in the cost column manually.&amp;#160; He actually did it by right clicking on a cell in the cost column and selecting “fill down” which he thought might like in excel just copy the formula.&amp;#160; In Project, this copies values and overrides the calculations normally done, e.g. cost = rate * number of hours.&lt;/p&gt;  &lt;p&gt;Here is what Project assumes when you type in a cost into the Cost Column:&lt;/p&gt;  &lt;p&gt;1. Normally, the cost column is calculated based on the rate (in this example $100 / hr) * the number of hours. &lt;/p&gt; &lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/SjJHE1v8DeI/AAAAAAAAANU/8be5_v1_VB8/s1600-h/ScreenHunter_01%20Jun.%2012%2008.03%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_01 Jun. 12 08.03" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="69" alt="ScreenHunter_01 Jun. 12 08.03" src="http://lh3.ggpht.com/_V5m6b8L54Jo/SjJHFD7IvjI/AAAAAAAAANY/QXraXq1Qsxo/ScreenHunter_01%20Jun.%2012%2008.03_thumb%5B1%5D.gif?imgmax=800" width="346" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;2. If I type in a number into the cost column, I can replace the calculated cost with a new cost – in this case, I have specified it to be $1200.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/SjJHFTatqfI/AAAAAAAAANc/Dytj2oQZq9M/s1600-h/ScreenHunter_02%20Jun.%2012%2008.05%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_02 Jun. 12 08.05" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="57" alt="ScreenHunter_02 Jun. 12 08.05" src="http://lh3.ggpht.com/_V5m6b8L54Jo/SjJHFvv-_iI/AAAAAAAAANg/qurTXTuS6gg/ScreenHunter_02%20Jun.%2012%2008.05_thumb%5B1%5D.gif?imgmax=800" width="348" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; 3. Project takes the cost I typed in and calculates the DIFFERENCE between takes the original calculated cost and what I typed in as a FIXED cost, e.g. in this case $400.&amp;#160; If you insert the Fixed Cost Column, you will see this value.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/SjJHF_7uWqI/AAAAAAAAANk/nrAT5uyOvI4/s1600-h/ScreenHunter_03%20Jun.%2012%2008.08%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_03 Jun. 12 08.08" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="48" alt="ScreenHunter_03 Jun. 12 08.08" src="http://lh3.ggpht.com/_V5m6b8L54Jo/SjJHGJKckUI/AAAAAAAAANo/KVT7OjmXG6E/ScreenHunter_03%20Jun.%2012%2008.08_thumb%5B1%5D.gif?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. If you do not understand what Project has done, it becomes really confusing as to how to get rid of the fixed cost.&amp;#160; Simply changing the duration or hours doesn’t remove the cost.&amp;#160; For example, if I change the duration to 2 days it doesn’t recalculate the cost to be $1600 – it keeps the $400 in fixed cost and makes the total cost $2000.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/SjJHGaF-M9I/AAAAAAAAANs/8N413Bst1T8/s1600-h/ScreenHunter_04%20Jun.%2012%2008.09%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_04 Jun. 12 08.09" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="50" alt="ScreenHunter_04 Jun. 12 08.09" src="http://lh4.ggpht.com/_V5m6b8L54Jo/SjJHGXh8VDI/AAAAAAAAANw/I0QioqJl1pU/ScreenHunter_04%20Jun.%2012%2008.09_thumb%5B1%5D.gif?imgmax=800" width="352" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. If you have added a fixed cost my mistake, the simple way to fix the problem is to set the fix cost to $0.00 manually.&amp;#160; This resets to the default behaviour and now your cost is calculated normally.&amp;#160; See below – now that I have changed the fixed cost to $0 I can easily change the duration and the cost is calculated correctly.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/SjJHGscwpEI/AAAAAAAAAN0/UnzSYXszY6g/s1600-h/ScreenHunter_05%20Jun.%2012%2008.11%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_05 Jun. 12 08.11" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="50" alt="ScreenHunter_05 Jun. 12 08.11" src="http://lh6.ggpht.com/_V5m6b8L54Jo/SjJHHAPbmRI/AAAAAAAAAN4/8rAtllfqDno/ScreenHunter_05%20Jun.%2012%2008.11_thumb%5B1%5D.gif?imgmax=800" width="348" border="0" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;I have been using Microsoft Project for ages and didn’t know this behaviour existed.&amp;#160;&amp;#160; I found this problem because one of my colleagues was not an experience Project user and started filling in values like in Excel.&amp;#160; However, this is nothing in Project that warns you or points you to the solution – it took me digging through help and google to figure it out.&lt;/p&gt;  &lt;p&gt;If you are new to Project, keep this simple lesson learned in mind – do not manually change the cost column.&amp;#160; Let Project always calculate it for you.&amp;#160; If you have a specific fixed cost for a task, then insert the Fixed Cost column and type it in there.&amp;#160; This will avoid a lot of confusion.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-400557732434719503?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/400557732434719503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=400557732434719503' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/400557732434719503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/400557732434719503'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/06/how-to-use-microsoft-project-fixed-cost.html' title='How to Use Microsoft Project: Fixed Cost'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_V5m6b8L54Jo/SjJHFD7IvjI/AAAAAAAAANY/QXraXq1Qsxo/s72-c/ScreenHunter_01%20Jun.%2012%2008.03_thumb%5B1%5D.gif?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3941678777511032027</id><published>2009-06-11T07:25:00.001-05:00</published><updated>2009-06-11T07:25:51.142-05:00</updated><title type='text'>Yet Another Facebook Bug</title><content type='html'>&lt;p&gt;I have &lt;a href="http://chriswoodill.blogspot.com/2007/10/with-15b-valuation-you-might-think.html"&gt;posted previously on bugs in Facebook&lt;/a&gt;, and I ran into another one just this morning.&lt;/p&gt;  &lt;p&gt;Facebook has a friend suggestion feature that lists people who you might know based on how close they are to your existing friends.&amp;#160; It’s a great way to find people but I found a bug in it.&amp;#160; It presents you a list of potential friends and for each one there is a little X that you can click to take the person off the list (e.g. it was a bad suggestion and you don’t know them).&amp;#160; Here is the bug: if Facebook runs out of further suggestion, only the text disappears and the picture stays behind.&amp;#160; &lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/SjD3zOEgMWI/AAAAAAAAANM/43Qj6b5oG5o/s1600-h/ScreenHunter_01%20Jun.%2011%2008.20%5B4%5D.gif"&gt;&lt;img title="ScreenHunter_01 Jun. 11 08.20" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="383" alt="ScreenHunter_01 Jun. 11 08.20" src="http://lh4.ggpht.com/_V5m6b8L54Jo/SjD3zVW6B9I/AAAAAAAAANQ/D9dv3uV68O8/ScreenHunter_01%20Jun.%2011%2008.20_thumb%5B2%5D.gif?imgmax=800" width="496" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you go back to the home and come back in, the whole lists resets and the problem goes away.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3941678777511032027?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3941678777511032027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3941678777511032027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3941678777511032027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3941678777511032027'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/06/yet-another-facebook-bug.html' title='Yet Another Facebook Bug'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/SjD3zVW6B9I/AAAAAAAAANQ/D9dv3uV68O8/s72-c/ScreenHunter_01%20Jun.%2011%2008.20_thumb%5B2%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8729588066305124834</id><published>2009-06-07T14:37:00.001-05:00</published><updated>2009-06-07T14:49:00.352-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Confluence'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>SharePoint vs. Confluence Comparison</title><content type='html'>&lt;p&gt;I was at a client site this week and they currently have &lt;a href="http://www.atlassian.com/confluence"&gt;Confluence&lt;/a&gt; and are moving to SharePoint 2007 and wanted to understand the differences between the two products.&amp;#160; I have personally implemented both products in different environments and like both of them.&amp;#160; Each as its strengths and weaknesses.&lt;/p&gt;  &lt;p&gt;Here is a side by side comparison:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="100%" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;Confluence&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;SharePoint 2007&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Company&lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;p&gt;Made by &lt;a href="http://www.atlassian.com"&gt;Atlassian&lt;/a&gt; in Australia.&amp;#160;&amp;#160; In my experience, Atlassian has wicked customer service, a great support network, etc.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;Made by Microsoft.&amp;#160; SharePoint is one of Microsoft’s most successful products and Microsoft has made a major commitment to the product.&amp;#160; Support in my experience is standard product support but doesn’t have the tender love and care you get from Atlassian staff.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Consulting Support&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Limited, but in some markets quite good.&amp;#160; Look for open-source experts as Atlassian has strong ties to the open source community.&amp;#160; The software itself is Java based.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Huge consulting market from small shops to major consulting companies such as Accenture.&amp;#160; One of the major pluses of the platform is the talent pool to help implement and configure it.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Price&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Free if you are a non-profit company and you ask them nicely.&amp;#160; Server license is available ranging from $800-12000 depending on number of users.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Pricing starts at about $5000 but for intranet cost is per named user at about $75-94 a user.&amp;#160; 200 users would cost about $20,000 vs. about $4,000 for confluence. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Search&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Good with confluence content and Microsoft documents.&amp;#160; No federated search model included.&amp;#160; Did you mean feature allows for synonym searches.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Enterprise level search engine with relevance ranking, synonyms, large scale searches (up to 500,000 documents easily and up to 50 million in theory), and federation model.&amp;#160; Out of the box search can index other web sites, file servers, etc. and plugins through third party products can index other systems such as OpenText, Oracle, SAP, etc.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Look and feel customization&lt;/td&gt;        &lt;td valign="top" width="133"&gt;If you’re changing the logo or basic colours you’re fine.&amp;#160; If you want to create a whole new interface, you will find it a challenge.&amp;#160; Confluence uses &lt;a href="http://www.opensymphony.com/sitemesh/"&gt;SiteMesh&lt;/a&gt; templates which are a set of XML/HTML files that need to be customized directly.&amp;#160;&amp;#160; In my direct experience (and I have done lots of HTML editing), wading through the library of templates is not a trivial undertaking.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;SharePoint supports customization at multiple levels through separation of layout, look and feel, and master pages.&amp;#160; SharePoint Designer is provided as a GUI based tool for creating new themes as well.&amp;#160; Template system is significantly simpler than Confluence in my experience to customize.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;WIKI&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Stronger than SharePoint in supporting WIKI mark-up.&amp;#160; Rich text editor is not bad but not as strong as SharePoint.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;WIKI template provided as a site template.&amp;#160; WIKI mark-up is limited to embedding links in text, but rich text editor make WIKI mark-up less needed in most cases.&amp;#160; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Security&lt;/td&gt;        &lt;td valign="top" width="133"&gt;LDAP based.&amp;#160; Authorization model is 100% stored in Confluence, so groups need to managed within the product.&amp;#160; Single Sign On is not provided.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;SharePoint is Active Directory based by default.&amp;#160;&amp;#160;&amp;#160; Single Sign On is provided with Windows using Internet Explorer – users already logged into Windows are automatically logged into SharePoint.&amp;#160; Groups in SharePoint can map to Active Directory groups which makes management somewhat easier than Confluence.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Web Parts&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Confluence supports a &lt;a href="http://www.atlassian.com/software/confluence/plugins/"&gt;plugin&lt;/a&gt; model and there are some available.&amp;#160; Product availability is small in comparison to the third party web part market for SharePoint.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Long list of web parts are supplied out of the box for SharePoint.&amp;#160; Massive third party market for Web Parts including integration with major vendors such Oracle, SAP, OpenText, etc.&amp;#160; Web Parts can be easily built in .NET if custom parts are required.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Document Management&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Version control, linking and embeddable.&amp;#160; However, there is no check-in/out, content types, workflow, etc.&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="133"&gt;Much stronger in SharePoint including features such as check-in/out, content types, meta-data, integration with Office 2007, workflow, authorization models, etc. that are typical of an enterprise document management system.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Integration with Office&lt;/td&gt;        &lt;td valign="top" width="133"&gt;No support.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Very strong integration as long as you’re on Office 2007.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Other Features&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Blogs, discussion forums, etc. are provided.&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Too many features to name, but SharePoint is an enterprise portal with dozens of additional features including: reporting integration, dashboards, dozens of web parts, workflow, forms server,&amp;#160; etc.&amp;#160; See this &lt;a href="http://office.microsoft.com/en-ca/sharepointtechnology/FX101758691033.aspx"&gt;link&lt;/a&gt; for a complete list of features.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Comparing the two products is a bit of an apples to orange comparison because the markets for each are quite different.&amp;#160; Confluence is primarily a collaboration tool for small to medium size enterprises.&amp;#160; SharePoint is an enterprise portal that includes collaboration but also dozens of other portal features.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;In my direct experience, SharePoint is more user friendly for end-users – creating pages, changing content, managing documents seems to be more intuitive than in Confluence.&amp;#160; If you’re a power WIKI user then its less of an issue but I handed it to an HR department and found they struggled with it.&amp;#160; SharePoint requires a lot of pre-configuration to get it right but if its set up right I find the adoption tends to be easier.&lt;/p&gt;  &lt;p&gt;If you really want a strong WIKI collaboration tool and don’t have much money then Confluence is a very good product.&amp;#160; The support you will get from Atlassian is awesome and they are constantly improving it.&amp;#160; However, if you’re looking at enterprise collaboration, document management, search, etc. then in my experience you may be looking at an upgrade to SharePoint in the long run as your user base becomes more sophisticated.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8729588066305124834?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8729588066305124834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8729588066305124834' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8729588066305124834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8729588066305124834'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/06/sharepoint-vs-confluence-comparison.html' title='SharePoint vs. Confluence Comparison'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6262142350111953808</id><published>2009-05-22T08:29:00.001-05:00</published><updated>2009-05-22T08:35:40.576-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>White House Data Feeds are Baby Steps</title><content type='html'>&lt;p&gt;The White House announced to great fan fare that it would be releasing data feeds of its public information collected by hundreds of agencies within the US government.&amp;#160; &lt;a href="http://www.data.gov"&gt;They have launched the first iteration of this service&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/Shaona4VXFI/AAAAAAAAAM4/BjOoe86nRWc/s1600-h/ScreenHunter_02%20May.%2022%2009.10%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_02 May. 22 09.10" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="197" alt="ScreenHunter_02 May. 22 09.10" src="http://lh5.ggpht.com/_V5m6b8L54Jo/ShaoohLc5tI/AAAAAAAAAM8/7EjDxc-v54M/ScreenHunter_02%20May.%2022%2009.10_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My interest in this feed is to use this data to build mash-ups, visualization applications, and web applications that use this data.&amp;#160; There are many such applications that use existing data feeds such as Amazon data, Google Maps data, Microsoft Live data, etc. in interesting ways.&amp;#160;&amp;#160; Amazon in particular has had an XML based REST API available for years (&lt;a href="http://www.amazon.ca/Mining-Amazon-Web-Services-Applications/dp/0782143075/ref=pd_rhf_p_t_1"&gt;in fact Amazon sells a book on how to use it&lt;/a&gt;)&amp;#160; For example, Frucall provides a mobile comparison application that uses a variety of publically available APIs to compare products across retailers and present them to your mobile device.&amp;#160; &lt;/p&gt;  &lt;p&gt;So with hundreds of data feeds, imagine the visualization, comparison, calculation and searching applications that could be built on US government data.&amp;#160; As well, imagine then directing these applications to mobile devices, XBOX 360, IPhones, Blackberries, etc.&amp;#160; in formats that work ideally for those platforms.&lt;/p&gt;  &lt;p&gt;Unfortunately, based on what has been launched, this vision is not really feasible.&amp;#160; Here is what I can see from what is currently available:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There are only about 50 data feeds.&amp;#160; Given the number of US agencies, this is a very small sample of the data available. &lt;/li&gt;    &lt;li&gt;The site provides data in a variety of formats such as XML, CSV, KML (google earth) and ESRI (GIS data).&amp;#160; The feed that would be useful for apps is the XML feed, as explained by their own site (“Better suited for consumption by automated applications capable of handling raw XML files”).&amp;#160; &lt;strong&gt;There are only 8 feeds in XML format available.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;The data is not a feed, they are files in most cases. If you &lt;a href="https://eipweb.uspto.gov/2009/PatentGrantBibICEXML/"&gt;click on the links&lt;/a&gt;, you get either a zip file containing some XML data or a site with some links to XML files. &lt;/li&gt;    &lt;li&gt;In some cases, the XML files are &lt;a href="http://earthquake.usgs.gov/eqcenter/catalogs/7day-M2.5.xml"&gt;RSS feeds&lt;/a&gt;.&amp;#160; While this might be great if you want content, the “data” is really just unstructured content. &lt;/li&gt;    &lt;li&gt;There are no APIs, no REST and each feed has a completely different format.&amp;#160; There is zero consistency even for things like unique identifiers, delivery format, or XML structure.&amp;#160; There are also generally no available XML schemas – you just get raw XML. &lt;/li&gt;    &lt;li&gt;Its not clear how data is published in a timely fashion.&amp;#160; In most cases, you get a directory of files but there is no information on how often they are published. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So while its great to see the information being public, the US government has a long way to go before they have a useful API that could be used for application development purposes.&amp;#160; Given that Googgle. Expedia, Amazon, etc. have had these APIs for many years, its a lot of fanfare and not a lot delivered for this service debut – dumping a bunch of files onto a directory was a victory in 1999, not in 2009.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6262142350111953808?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6262142350111953808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6262142350111953808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6262142350111953808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6262142350111953808'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/05/white-house-data-feeds-are-baby-steps.html' title='White House Data Feeds are Baby Steps'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_V5m6b8L54Jo/ShaoohLc5tI/AAAAAAAAAM8/7EjDxc-v54M/s72-c/ScreenHunter_02%20May.%2022%2009.10_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6603789179829078204</id><published>2009-05-13T14:59:00.001-05:00</published><updated>2009-05-13T14:59:02.188-05:00</updated><title type='text'>Billboard Gone Bad</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/Sgsme4nFxUI/AAAAAAAAAMw/OG5daF7MCVc/s1600-h/image%5B8%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="412" alt="image" src="http://lh4.ggpht.com/_V5m6b8L54Jo/SgsmhfxbTaI/AAAAAAAAAM0/jcmZjarsRIE/image_thumb%5B4%5D.png?imgmax=800" width="313" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I was downtown the other day and snapped this with my cell phone camera.&amp;#160; Apparently, this bill board needs Windows Activation!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6603789179829078204?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6603789179829078204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6603789179829078204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6603789179829078204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6603789179829078204'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/05/billboard-gone-bad.html' title='Billboard Gone Bad'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/SgsmhfxbTaI/AAAAAAAAAM0/jcmZjarsRIE/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8308883806906410614</id><published>2009-05-12T17:38:00.001-05:00</published><updated>2009-05-22T08:37:00.368-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>SharePoint is not a Database!</title><content type='html'>&lt;p&gt;As users of SharePoint start using lists they start taking advantage of a very intuitive and highly configurable information management tool.&amp;#160; Users who have been using Excel or Access in the past start seeing SharePoint as a kind of rapid application development platform for building structured data applications.&amp;#160; However, this is where SharePoint’s list architecture breaks down because simply:    &lt;br /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;&lt;font color="#0000ff" size="5"&gt;SharePoint is not a database!&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Part of the problem is that business users designing lists are not familiar with basic database concepts - they just want to store their information.&amp;#160; Part of the problem is false advertising by consultants and/or Microsoft that SharePoint is a miracle platform that can do anything - it does some things well but replacing your SQL server or even Access database isn't one of them.&amp;#160; The other problem is there is no really good way for surfacing bi-directionally data from a database into SharePoint – the business data catalogue works only in read only mode and does not allow for updates back to the underlying data store.&lt;/p&gt;  &lt;p&gt;Here are a list of some features that a database has that SharePoint does not support - the moment you need these features you will need a real database.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Primary And foreign keys&lt;/strong&gt;: one of the most basic concepts in a database is the enforcement of a unique identifier (either system generated or user supplied) that can identify a record and link across table in parent child relationships. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Transactions:&lt;/strong&gt; if two changes are required to go together and the second change fails you want the first change to be undone (rolled back). &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SQL language:&lt;/strong&gt; complex queries can me written in code using a standard language.&amp;#160; Queries can be saved and repurposed. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Stored procedures:&lt;/strong&gt; database programmers can write complex routines that can be called as reusable code blocks.&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Indexing and query optimization:&lt;/strong&gt; used to improve performance, indexing allows the database designer to pre-index specific fields that are frequently used in queries to improve performance.&amp;#160; In addition, most databases have optimization engines that based on what you are trying to fetch will optimize how the data is retrieved. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Large data and binary fields: &lt;/strong&gt;most modern databases allow you to store large binary files such as video files, large volumes of text, images, etc. in the database.&amp;#160; SharePoint can be made to store large files as documents but you only get one per record and a generic binary object.&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Access outside of SharePoint: &lt;/strong&gt;lists are accessible outside of SharePoint but only through XML or programming interfaces.&amp;#160; Lists are not great data stores to be used for line of business applications written independently of SharePoint because the integration is relatively poor in comparison to running a SQL query on a database. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Cascading deletes: &lt;/strong&gt;if a parent record is deleted, its children should also be deleted.&amp;#160; In most databases, this can be configured to happen automatically or else reject the delete of the parent until the children are deleted first.&amp;#160; This eliminates the risk of orphan child records. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These features are considered basic in databases – they have been around for decades and even the most primitive databases such as Access or FileMaker Pro have most of these features.&amp;#160; &lt;/p&gt;  &lt;p&gt;Lists are great for flat, changing content especially when attached to unstructured documents.&amp;#160; At least in the current version, lists are not substitutes for databases and shouldn’t be considered so.&amp;#160; If you need a database, then you are better off building a proper database and using SharePoint as a front-end for surfacing that data through reports, dashboards, etc. or as a host for data entry components such as InfoPath forms or custom build web parts.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8308883806906410614?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8308883806906410614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8308883806906410614' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8308883806906410614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8308883806906410614'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/05/sharepoint-is-not-database.html' title='SharePoint is not a Database!'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2098947001351087018</id><published>2009-05-05T21:11:00.001-05:00</published><updated>2009-05-07T21:14:24.543-05:00</updated><title type='text'>Hotspot Shield and Hulu No Longer Work Together</title><content type='html'>&lt;p&gt;Sites like Pandora and Hulu block IP addresses not originating from the United States.&amp;#160; The solution for the past 6 months or so has been to use Hotspot Shield which proxies your IP address behind an US address.&lt;/p&gt;  &lt;p&gt;As of today, this no longer works.&amp;#160; When you load up a video, you get the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/SgDxtj2PJzI/AAAAAAAAAMo/Z1Wz9GByGwA/s1600-h/ScreenHunter_01%20May.%2005%2022.07%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_01 May. 05 22.07" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="228" alt="ScreenHunter_01 May. 05 22.07" src="http://lh6.ggpht.com/_V5m6b8L54Jo/SgDxuCL5sPI/AAAAAAAAAMs/BcrHBPAOrdY/ScreenHunter_01%20May.%2005%2022.07_thumb%5B1%5D.gif?imgmax=800" width="572" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pandora still works thankfully…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE: There seems to be a solution to this problem – thanks to the &lt;a href="http://patricksoon.blogspot.com/2009/05/hulu-detecting-proxy-servers.html"&gt;comment&lt;/a&gt; below!&amp;#160; If you clean out your browser cache and then reconnect to hotspot shield it seems to work.&amp;#160; I suspect this is a temporary solution until Hulu starts blocking this new batch of servers.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When is the old world media going to get that the Internet is global and find a solution for all this rights territory nonsense?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2098947001351087018?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2098947001351087018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2098947001351087018' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2098947001351087018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2098947001351087018'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/05/hotspot-shield-and-hulu-no-longer-work.html' title='Hotspot Shield and Hulu No Longer Work Together'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_V5m6b8L54Jo/SgDxuCL5sPI/AAAAAAAAAMs/BcrHBPAOrdY/s72-c/ScreenHunter_01%20May.%2005%2022.07_thumb%5B1%5D.gif?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7851406714653241515</id><published>2009-05-01T07:05:00.001-05:00</published><updated>2009-05-22T08:36:42.445-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Why SharePoint Projects Fail</title><content type='html'>&lt;p&gt;Microsoft Office SharePoint Server 2007 (affectionately known in our circles as “MOSS”) is now at what should be at the peak of adoption.&amp;#160; The product has been on the market since 2007 and there is a new version coming in a year.&lt;/p&gt;  &lt;p&gt;Yet with many of our customers, we find that MOSS has been implemented but barely gets off the ground.&amp;#160; There a few reasons why this seems to be happening:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;MOSS is championed by IT and then too tightly controlled.&amp;#160; For example, we have customers who have installed MOSS but will only use it for out of the box collaboration – no custom code, no document management, no BI, etc.&amp;#160; If you want an out of the box team site, then that’s part of the “service” but otherwise you will have to wait. &lt;/li&gt;    &lt;li&gt;MOSS starts in a single department and then never makes it out.&amp;#160; A department picks MOSS for their needs but then there is not enough support or sponsorship in the organization to roll it out further. &lt;/li&gt;    &lt;li&gt;MOSS is implemented skunk works style on a single box.&amp;#160; The implementation is more successful than originally envisioned and what was a “proof of concept” starts getting treated like production.&amp;#160; This sets up the assumption that MOSS is “Rapid Development” and eventually the box falls over under strain. &lt;/li&gt;    &lt;li&gt;MOSS is implemented by IT but there has been no planning for adoption and training.&amp;#160;&amp;#160; MOSS sits there with a bunch of services – users simply don’t know how to use them and go on using other more reliable forms of collaboration such as email, file shares, etc.&amp;#160; &lt;/li&gt;    &lt;li&gt;The implementation gets mired in legal, HR, or branding issues as corporate citizens start to have the ability to create their own content.&amp;#160; Similar to the IT clamp down, the organization clamps down on the services that MOSS can provide such as blogs, wikis, My Sites, etc. because they do not have a good model for managing the risk of employees contributing their own content. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Why does this happen?&amp;#160; What is missing from most MOSS implementations?&amp;#160; In my experience, there are a few common causes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Too much involvement by IT, not enough involvement from business stakeholders. &lt;/li&gt;    &lt;li&gt;Too much focus on MOSS as a generic toolbox (document management, collaboration, search, etc.), not enough focus on MOSS as a way to automate or enable true business services. &lt;/li&gt;    &lt;li&gt;Poor infrastructure planning to enable scaling to the enterprise. &lt;/li&gt;    &lt;li&gt;Lack of training, adoption and change management. &lt;/li&gt;    &lt;li&gt;Lack of a killer app for the particular needs of the business &lt;/li&gt;    &lt;li&gt;Not enough support from executive champions &lt;/li&gt;    &lt;li&gt;No governance model to set expectations on how MOSS will be operated, changed and maintained. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you are an IT Director or department champion for SharePoint, I strongly encourage you to think about these issues BEFORE you start an implementation.&amp;#160; We see many cases where organizations start thinking about these issues after the first implementation has already failed and the organization has soured on the platform because there was not enough investment in managing the project and an eager IT department ready to roll out a service.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7851406714653241515?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7851406714653241515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7851406714653241515' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7851406714653241515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7851406714653241515'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/05/why-sharepoint-projects-fail.html' title='Why SharePoint Projects Fail'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7728695970109606879</id><published>2009-04-20T07:05:00.001-05:00</published><updated>2009-04-20T07:27:01.534-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAPTCHA'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Separating the Humans from the Robots</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="478" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="380"&gt;With a new Terminator movie coming out, I started thinking about the ways that on the Internet now we need to try and distinguish the humans from the robots.&amp;#160; There is already a “war” going on out there between humans and sophisticated robots for control of Facebook, Hotmail, Gmail and other web 2.0 services.&lt;/td&gt;        &lt;td valign="top" width="96"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" height="88" src="http://www.cyberpunkreview.com/images/Terminator3-09.jpg" width="66" align="right" /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;One of the more annoying “fronts” in this war is CAPTCHA (“Completely Automated Public Turing Test to Tell Computers and Humans Apart”).&amp;#160; This reverse Turing test is what is used on many sites to test to see if you are human and not some automated robot.&lt;/p&gt;  &lt;p&gt;The problem is that these tests are like antibiotics – the more they get used the more sophisticated the robots.&amp;#160; Early CAPTCHA tests were easily broken by bots so they have evolved into more and more sophisticated tests.&amp;#160; Now the number of hoops and the readability of these tests are so bad that human beings can barely pass them.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2298/2268237663_f7b8775f4a.jpg?v=0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img alt="6th Worst" src="http://farm3.static.flickr.com/2174/2268237733_cda4a1dbb3.jpg?v=0" /&gt;&lt;/p&gt;  &lt;p&gt;The challenge is how to make a test easily answerable by a human being but yet heuristically difficult enough to foil a software program.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://news.cnet.com/8301-17939_109-10222514-2.html?tag=newsEditorsPicksArea.0"&gt;Google is experimenting with new techniques&lt;/a&gt; to try and simplify the experience of verification – see below. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://i.i.com.com/cnwk.1d/i/bto/20090417/google_captcha.png" /&gt; &lt;/p&gt;  &lt;p&gt;Even using this technique, &lt;a href="http://blog.wired.com/business/2009/04/google-goes-cap.html"&gt;Google has to specifically pick the right images:&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;However, while the images will be randomly rotated, they will be carefully selected. First, Google will exclude images for which its own computers can readily identify the top, such as photographs showing landscapes with blue sky (easily detected), text (easily recognized) or portraits of people (there are many facial recognition applications on the market). Then, it will screen out images that humans find too difficult to orient (for example, abstract art, or overhead views, that don't have a readily identifiable top) by conducting a sort of opinion poll.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Google is relying not just on individual results but collective results.&amp;#160; The heuristic picture composed from millions of clicks is what will power the analytics so that Google can reliably detect bots instead of humans.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7728695970109606879?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7728695970109606879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7728695970109606879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7728695970109606879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7728695970109606879'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/04/separating-humans-from-robots.html' title='Separating the Humans from the Robots'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-4097153386327308993</id><published>2009-04-17T07:10:00.001-05:00</published><updated>2009-04-20T07:27:39.624-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Earth'/><category scheme='http://www.blogger.com/atom/ns#' term='LiveEarth'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Live Earth Bird’s Eye View</title><content type='html'>&lt;p&gt;One of the cooler features that sets Live Earth/Maps apart from Google Maps is the birds eye view.&amp;#160; &lt;/p&gt;  &lt;p&gt;Take a look at this building in Google Maps:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/SehxoPx4BNI/AAAAAAAAAMA/u5wzT_iQCug/s1600-h/ScreenHunter_02%20Apr.%2017%2008.02%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_02 Apr. 17 08.02" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="277" alt="ScreenHunter_02 Apr. 17 08.02" src="http://lh4.ggpht.com/_V5m6b8L54Jo/Sehxo1kAzaI/AAAAAAAAAME/U3Yx9siQKd4/ScreenHunter_02%20Apr.%2017%2008.02_thumb%5B1%5D.gif?imgmax=800" width="407" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now take a look at the Bird’s Eye view of the same building in Live Earth/Maps.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/SehxqK1xXRI/AAAAAAAAAMI/wJ76SG8UCng/s1600-h/ScreenHunter_06%20Apr.%2017%2008.03%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_06 Apr. 17 08.03" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="257" alt="ScreenHunter_06 Apr. 17 08.03" src="http://lh3.ggpht.com/_V5m6b8L54Jo/SehxqwnPE0I/AAAAAAAAAMM/ZxY5v7-ZUN0/ScreenHunter_06%20Apr.%2017%2008.03_thumb%5B1%5D.gif?imgmax=800" width="431" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/SehxsGPQoeI/AAAAAAAAAMQ/-d_SSfkeyzI/s1600-h/ScreenHunter_03%20Apr.%2017%2008.02%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_03 Apr. 17 08.02" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="202" alt="ScreenHunter_03 Apr. 17 08.02" src="http://lh3.ggpht.com/_V5m6b8L54Jo/SehxslpURSI/AAAAAAAAAMU/rdn24mUbNZE/ScreenHunter_03%20Apr.%2017%2008.02_thumb%5B1%5D.gif?imgmax=800" width="435" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/SehxuEKtE6I/AAAAAAAAAMY/Kw4oWteE1lg/s1600-h/ScreenHunter_04%20Apr.%2017%2008.02%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_04 Apr. 17 08.02" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="255" alt="ScreenHunter_04 Apr. 17 08.02" src="http://lh5.ggpht.com/_V5m6b8L54Jo/SehxvMrQMPI/AAAAAAAAAMc/J1mKhNIix1o/ScreenHunter_04%20Apr.%2017%2008.02_thumb%5B1%5D.gif?imgmax=800" width="440" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/SehxwihsecI/AAAAAAAAAMg/Y9ZSME50__0/s1600-h/ScreenHunter_05%20Apr.%2017%2008.02%5B3%5D.gif"&gt;&lt;img title="ScreenHunter_05 Apr. 17 08.02" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="274" alt="ScreenHunter_05 Apr. 17 08.02" src="http://lh5.ggpht.com/_V5m6b8L54Jo/SehxxR0XGOI/AAAAAAAAAMk/j6cLPyN_acQ/ScreenHunter_05%20Apr.%2017%2008.02_thumb%5B1%5D.gif?imgmax=800" width="412" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The four views are available if you hit the rotate button in the interface – these are actual photographs taken from different angles.&lt;/p&gt;  &lt;p&gt;The difference in understanding heights of buildings, features around buildings, etc. is significant – imagine if you’re doing some house hunting and you see a neighbourhood you like.&amp;#160; Wouldn’t you like to see the increased detail and vantage points that you get from this orthogonal view instead of just the top down view you get in Google maps?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-4097153386327308993?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/4097153386327308993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=4097153386327308993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4097153386327308993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4097153386327308993'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/04/live-earth-birds-eye-view.html' title='Live Earth Bird’s Eye View'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_V5m6b8L54Jo/Sehxo1kAzaI/AAAAAAAAAME/U3Yx9siQKd4/s72-c/ScreenHunter_02%20Apr.%2017%2008.02_thumb%5B1%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8870177481284518903</id><published>2009-03-28T10:43:00.001-05:00</published><updated>2009-04-20T07:28:10.985-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Adsense and Evil Java</title><content type='html'>&lt;p&gt;Adsense in general does a good job of targeting ads based on the content of your site.&amp;#160; I have adsense running on my blog and I find that it does a reasonable job of putting ads that are somehow connected to my content.&amp;#160; If I’m writing about Microsoft Project, the reader gets ads on Microsoft Project.&lt;/p&gt;  &lt;p&gt;Adsense seems to have one basic problem – it cannot distinguish between positive and negative content.&amp;#160; Here is some content that I found on a random site:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.velocityreviews.com/forums/t137912-java-is-evil-its-the-programming-language-of-satan--.html#"&gt;&lt;em&gt;Java&lt;/em&gt;&lt;/a&gt;&lt;em&gt; is EVIL, it's the work of the devil, made to collect your      &lt;br /&gt;souls and to turn you into brainless slaves of hell.       &lt;br /&gt;If you like Java, you will lose your soul to be damned       &lt;br /&gt;for eternal torment in hell.Demons and devils will feast on your soul       &lt;br /&gt;for all eternity.       &lt;br /&gt;So stop using it now to save your soul.       &lt;br /&gt;Or the holy inquisition will come for you and burn your flesh to save       &lt;br /&gt;your soul, because the devil must not collect more souls or nobody can       &lt;br /&gt;prevent Armageddon.       &lt;br /&gt;Java is evil, using it is BLASPHEMY , only heretics and       &lt;br /&gt;witches like Java.And heretics and witches shall BURN !       &lt;br /&gt;Java = programming language written by SATAN in Hell's Kitchen in 666 minutes ! ! !&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I of course didn’t write this and for the record, I have used Java for many many years and I don’t think I’m going to Hell.&amp;#160; I posted this to prove a point – Adsense will now show ads that promote java products.&amp;#160; This is a sample of what Adsense delivered on this site:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/Sc5GTUNawDI/AAAAAAAAAL4/sNGt05Z53z0/s1600-h/ScreenHunter_13%20Mar.%2028%2011.45%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_13 Mar. 28 11.45" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="185" alt="ScreenHunter_13 Mar. 28 11.45" src="http://lh5.ggpht.com/_V5m6b8L54Jo/Sc5GTrCsT-I/AAAAAAAAAL8/Z0XTaN7XAHc/ScreenHunter_13%20Mar.%2028%2011.45_thumb.gif?imgmax=800" width="252" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So the question is for advertisers – do you really want your company being linked to content such as this simply because it has a few key words in it?&amp;#160; Is there a way to heuristically analyze content to filter this out (or even better, target the negative content for example to anti-Java advertisers?)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8870177481284518903?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8870177481284518903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8870177481284518903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8870177481284518903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8870177481284518903'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/03/adsense-and-evil-java.html' title='Adsense and Evil Java'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_V5m6b8L54Jo/Sc5GTrCsT-I/AAAAAAAAAL8/Z0XTaN7XAHc/s72-c/ScreenHunter_13%20Mar.%2028%2011.45_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7480499790483101794</id><published>2009-03-28T10:28:00.001-05:00</published><updated>2009-03-28T10:34:40.447-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>How To Use Microsoft Project: Task Type</title><content type='html'>&lt;p&gt;One of the more confusing aspects of Microsoft Project is Task Type.&amp;#160; Task Type can be set to &amp;quot;Fixed Units&amp;quot;, &amp;quot;Fixed Work&amp;quot;, or &amp;quot;Fixed Duration&amp;quot; for each task.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to Set Task Type&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can set task type in a couple ways:&lt;/p&gt;  &lt;p&gt;1. If you select a task or tasks and go to task information (under project in the menu or right click and its there as well) you will find task type in the advanced tab.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/Sc5B_2se0XI/AAAAAAAAALo/gKfa5va36p0/s1600-h/ScreenHunter_11%20Mar.%2028%2010.46%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_11 Mar. 28 10.46" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="164" alt="ScreenHunter_11 Mar. 28 10.46" src="http://lh3.ggpht.com/_V5m6b8L54Jo/Sc5CALtkxsI/AAAAAAAAALs/0ajSs9fHYP8/ScreenHunter_11%20Mar.%2028%2010.46_thumb.gif?imgmax=800" width="252" border="0" /&gt;&lt;/a&gt;2. If you go to window and click Split when in the GANTT chart view, you get a Task Form at the bottom where you can set the Task Type.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/Sc5CAf15StI/AAAAAAAAALw/9o3Wiv2p_aQ/s1600-h/ScreenHunter_12%20Mar.%2028%2010.47%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_12 Mar. 28 10.47" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="71" alt="ScreenHunter_12 Mar. 28 10.47" src="http://lh4.ggpht.com/_V5m6b8L54Jo/Sc5CA1W608I/AAAAAAAAAL0/3Zs03qzGy_4/ScreenHunter_12%20Mar.%2028%2010.47_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160; If you select all your tasks, you can set the Task Information for every task to the same Task Type – this will lead to less confusion when you are adjusting your plan because all the task types will be consistently set.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Effort Driven&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There is also a check box (which is checked by default) that says that tasks are “Effort Driven”.&amp;#160; When this is checked, it is assumed that work stays constant even if you adjust the other two measures.&amp;#160; So for example, if you change a 40 hour task from 1 week duration to 2 weeks duration, project will keep the 40 hours of work but decrease the number of resources required to compensate (only 50% of a resource in this case).&lt;/p&gt;  &lt;p&gt;This may not be what you want and I find particularly with using Fixed Duration having this turned off is highly desirable because want to adjust the work, not the units.&amp;#160; For example, what I want is to tell project, “I want to schedule this task with 1 person for 2 weeks” and have it calculate work to be 80 hours.&amp;#160; If I adjust the schedule to be 3 weeks, I want the work to increase by 50%.&amp;#160; Similarly, if I am working in Fixed Duration and I double the resources, I want the duration to stay constant and for the work to double.&amp;#160; This will only happen if “Effort Driven” is turned off.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How Task Type Works&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Any task can be adjusted using three measures: Units, Duration or Work.&amp;#160; Because each measure is dependent on the other, at least one of the other two must be impacted.&amp;#160; By changing the task type, you are telling project which measure you are going to adjust and which measure should be automatically re-calculated.&amp;#160; Below is a &lt;a href="http://pubs.logicalexpressions.com/pub0009/LPMArticle.asp?ID=320"&gt;chart&lt;/a&gt; that shows how Project reacts based on the task type:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;Field that you change&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Field calculated if the task is Fixed Units&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Field calculated if the task is Fixed Work&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Field calculated if the task is Fixed Duration&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;Work&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Duration&lt;/b&gt; is recalculated&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Duration&lt;/b&gt; is recalculated&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Units&lt;/b&gt; are recalculated&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;Duration&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Work&lt;/b&gt; is recalculated&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Units&lt;/b&gt; are recalculated&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Work&lt;/b&gt; is recalculated&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;Units&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Duration&lt;/b&gt; is recalculated&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;b&gt;Duration&lt;/b&gt; is recalculated&lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;&lt;b&gt;Work&lt;/b&gt; is recalculated&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Basic Tips for Using Task Type Efficiently&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here are some basic tips to using Task Type efficiently and to avoid confusion:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Pick the task type that makes sense for you and use it consistently.&amp;#160; I tend to think in Duration with Effort Driven turned off first and what I want is to calculate the number of hours (and therefore cost) required to do the work.&amp;#160; Other PMs like thinking in work instead and want to adjust the schedule instead.&amp;#160; Pick an approach before you start and be consistent with it.&lt;/li&gt;    &lt;li&gt;You can switch the task type without impacting your plan.&amp;#160; Therefore, feel free to change the task type for the specific scenarios below.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Scenarios to use Specific Task Types&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Fixed Duration&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I used Fixed Duration when I have a good understanding of the schedule and the team and I want to calculate cost/effort.&amp;#160; A good example of this is doing a plan for requirements gathering interviews.&amp;#160; I know that I have 2 weeks of interviews, 1 week of documentation and 2 days of client review and I know that I need a Business Analyst and a Technical Architect in each one at 100%.&amp;#160; Fixed Duration works really well because I can adjust the schedule really easily and the work effort is calculated for me.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Another good use for Fixed Duration is % allocations for overhead resources.&amp;#160; Project Managers for example tend to be used on an overhead basis for the duration of the project on a fairly constant basis.&amp;#160; If the project takes longer you will need more project management.&amp;#160; It’s also easier to think of assigning a PM at 30% to a project for the entire duration than to say, “I need 85 hours of project management for this project).&amp;#160; With Fixed Duration, you can simply assign the PM for the entire duration and adjust the % allocation and the work effort is automatically calculated.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Fixed Work&lt;/font&gt;&lt;/strong&gt;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;A good use of Fixed Work is when you want to try and fit a fixed amount of hours into a fixed schedule.&amp;#160; By fixing the work, you can adjust the number of resources you need to impact the duration.&amp;#160; For example, let’s assume you have 1280 hours of work and you want to try and jam that work into a fixed 8 week period.&amp;#160; With Fixed Work turned on, you can set the allocation of resources to 400% in order fit the fixed amount of work into a duration you wish.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Fixed Units&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I generally find that using Fixed Units is my least desirable option simply because in most real world scenarios adjusting the number of resources required is the most flexible option.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;One scenario where Fixed Units might be appropriate is for department planning.&amp;#160; In a department, the number of fixed units is constant (the number of full time employees) and as a Director you want to know how much work your team can produce.&amp;#160; What tends to happen in these scenarios is the queue of work is constant and the duration flexes – you end up telling the poor person at the end of the priority list that their project won’t get done until next year.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;In this case, setting Fixed Units would allow you to lock in the resource pool based on the size of your department and then adjust the work to calculate the resulting schedule.&amp;#160; Based on the schedule, you would then be able to tell your stakeholders how many projects can be done in the coming year.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I hope that provides some guidance on how to use this key function in Microsoft Project – I have found even very senior Project Managers do not fundamentally understand how Duration, Effort and Units work together and how to model them in Microsoft Project.&amp;#160; If you understand the conceptual framework and the rules that Microsoft Project uses, you will find that there are less errors in your plan, less confusion and less tearing your hair out when you find Project adjusts your numbers in ways you didn’t intend.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7480499790483101794?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7480499790483101794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7480499790483101794' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7480499790483101794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7480499790483101794'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/03/how-to-use-microsoft-project-task-type.html' title='How To Use Microsoft Project: Task Type'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_V5m6b8L54Jo/Sc5CALtkxsI/AAAAAAAAALs/0ajSs9fHYP8/s72-c/ScreenHunter_11%20Mar.%2028%2010.46_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6979115569813431765</id><published>2009-03-22T21:16:00.001-05:00</published><updated>2009-03-22T21:16:13.605-05:00</updated><title type='text'>Check Out the New Live Writer</title><content type='html'>&lt;p&gt;As part of the latest Microsoft Instant Messenger update, there is a Live Writer tool now included as part of the Windows live toolset.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/Scbw57f2GOI/AAAAAAAAALY/2Y8Kx0AGWgc/s1600-h/ScreenHunter_10%20Mar.%2022%2022.09%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_10 Mar. 22 22.09" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="244" alt="ScreenHunter_10 Mar. 22 22.09" src="http://lh5.ggpht.com/_V5m6b8L54Jo/Scbw6gPwSAI/AAAAAAAAALc/Ac-Y_Fc9jbg/ScreenHunter_10%20Mar.%2022%2022.09_thumb.gif?imgmax=800" width="218" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It’s free and having now written a couple posts with it, I can attest that it’s quite good:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/Scbw69jPMMI/AAAAAAAAALg/rnm698Y1xmg/s1600-h/ScreenHunter_08%20Mar.%2022%2022.07%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_08 Mar. 22 22.07" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="109" alt="ScreenHunter_08 Mar. 22 22.07" src="http://lh5.ggpht.com/_V5m6b8L54Jo/Scbw7SZ942I/AAAAAAAAALk/X-FoZctdLhI/ScreenHunter_08%20Mar.%2022%2022.07_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It has a single interface for editing blog posts but can publish to multiple sources, e.g. Blogger, Wordpress, Typepad, etc.&lt;/li&gt;    &lt;li&gt;Editing using a real client is much easier than the Blogger HTML content editor.&amp;#160; I always found it frustrating to use it because it created some odd HTML choices and formatting mistakes.&lt;/li&gt;    &lt;li&gt;Spell check uses the word spell check and it highlights your spelling errors immediately.&lt;/li&gt;    &lt;li&gt;You can save a local draft so if you editing offline you can save your post and publish later.&lt;/li&gt;    &lt;li&gt;Images and videos are inserted locally and only published at the end.&amp;#160; This makes it faster to create your post, fiddle with the images, add or remove them, etc. because you don’t have to do the upload until your post is finalized.&lt;/li&gt;    &lt;li&gt;The tool has the ability to insert a windows live map.&amp;#160; &lt;/li&gt;    &lt;li&gt;There are a number of plugins available online for insert other types of objects such as flickr pictures, silverlight streaming applications, files, facebook photos, etc.&amp;#160; The plugins insert the appropriate HTML into your blog posts for each type.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This will definitely make my life easier as a blog writer…thanks Microsoft!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6979115569813431765?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6979115569813431765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6979115569813431765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6979115569813431765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6979115569813431765'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/03/check-out-new-live-writer.html' title='Check Out the New Live Writer'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_V5m6b8L54Jo/Scbw6gPwSAI/AAAAAAAAALc/Ac-Y_Fc9jbg/s72-c/ScreenHunter_10%20Mar.%2022%2022.09_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5636895676871307214</id><published>2009-03-22T21:05:00.001-05:00</published><updated>2009-03-22T21:05:22.651-05:00</updated><title type='text'>How to Use The Fill Handle in Excel</title><content type='html'>&lt;p&gt;One of the key features in Microsoft Excel is its ability to fill data based on existing values.&amp;#160; Excel is smart enough to extrapolate and auto-fill values based on your existing ones.&lt;/p&gt;  &lt;p&gt;Click on the black box in the corner of any cell and drag.&amp;#160; Excel will fill the cells automatically.&amp;#160; The fill handler works both horizontally and vertically.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_V5m6b8L54Jo/ScbuVM_MEwI/AAAAAAAAAKg/DGYZ82WptSY/s1600-h/ScreenHunter_01%20Mar.%2022%2021.36%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_01 Mar. 22 21.36" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="142" alt="ScreenHunter_01 Mar. 22 21.36" src="http://lh3.ggpht.com/_V5m6b8L54Jo/ScbuVat3a9I/AAAAAAAAAKk/We-mOZdmBl8/ScreenHunter_01%20Mar.%2022%2021.36_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here are some tips on how to use the fill handle for values:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Type in a month in either full form (e.g. January) or abbreviated form&amp;#160; (e.g. Jan) and drag and Excel will fill in the subsequent months.&lt;/li&gt;    &lt;li&gt;Type in a day of the week in either full name (e.g. Monday) or abbreviated form (e.g. Mon) and fill.&amp;#160; The filled cells will contain the correct days of the week in sequence.&lt;/li&gt;    &lt;li&gt;Type in any value into a cell (e.g. 1, 2, etc.) and when you fill in with the same value.&lt;/li&gt;    &lt;li&gt;Type in a sequence of values in cells, e.g. 1 in B2, 2 in B3, etc.&amp;#160; and select multiple cells and then drag the fill handler.&amp;#160; The cells will be filled in with the sequence.&amp;#160; This works just as well with intervals such as 2, 4, 6 etc. as well as 1,2,3.&lt;/li&gt;    &lt;li&gt;If you hold the control key when dragging the fill handle, you will see a plus (+) sign and the value selected will increment by 1 in each cell.&lt;/li&gt;    &lt;li&gt;If you right click on the fill handle, it pops up a dialogue where you can explicitly instruct excel how to fill the data.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Fill Handle can also be used to fill formulas.&amp;#160; Here is an example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_V5m6b8L54Jo/ScbuVXfcalI/AAAAAAAAAKo/1I5MXuRGWu8/s1600-h/ScreenHunter_02%20Mar.%2022%2021.51%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_02 Mar. 22 21.51" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="102" alt="ScreenHunter_02 Mar. 22 21.51" src="http://lh4.ggpht.com/_V5m6b8L54Jo/ScbuVuUDsJI/AAAAAAAAAKs/cBcbR--ZUNM/ScreenHunter_02%20Mar.%2022%2021.51_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The product in c2 is a formula =A2*b2 and the sum is a formula A2+b2.&amp;#160; Now let’s assume that you have a series of values and you want to have the same formula repeated:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/ScbuV-mM8LI/AAAAAAAAAKw/PeAAI_Yx7TY/s1600-h/ScreenHunter_03%20Mar.%2022%2021.53%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_03 Mar. 22 21.53" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="139" alt="ScreenHunter_03 Mar. 22 21.53" src="http://lh6.ggpht.com/_V5m6b8L54Jo/ScbuWGFz6JI/AAAAAAAAAK0/N0we3xhMX_w/ScreenHunter_03%20Mar.%2022%2021.53_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you select the cell with the existing formula you can use the fill handle to automatically fill down the right formula for the other rows.&amp;#160; It automatically figures out that as you move down rows it should adjust the formula so that A2 * b2 becomes A3 * B3, C4 * B4 and so on.&lt;/p&gt;  &lt;p&gt;There is also another way to fill in the cells.&amp;#160; If you select the cell you want to copy and then select a region and paste, it will fill the values in the same way.&amp;#160; It again automatically adjusts the formula so that it makes sense based on the new row that it now occupies.&amp;#160; This works both horizontally and vertically.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_V5m6b8L54Jo/ScbuWYulJYI/AAAAAAAAAK4/7XZBksAsCSc/s1600-h/ScreenHunter_04%20Mar.%2022%2021.57%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_04 Mar. 22 21.57" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="137" alt="ScreenHunter_04 Mar. 22 21.57" src="http://lh4.ggpht.com/_V5m6b8L54Jo/ScbuWhgjFJI/AAAAAAAAAK8/YRVFUZoEk7Q/ScreenHunter_04%20Mar.%2022%2021.57_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;One last tip on filling – there are cases where you will want the value in your formula to not change as it moves from row to row.&amp;#160; Take this example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/ScbuW6Ko1-I/AAAAAAAAALA/TXvGZIdG674/s1600-h/ScreenHunter_05%20Mar.%2022%2022.00%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_05 Mar. 22 22.00" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="103" alt="ScreenHunter_05 Mar. 22 22.00" src="http://lh4.ggpht.com/_V5m6b8L54Jo/ScbuW9tuehI/AAAAAAAAALE/W1sJL1x0iuk/ScreenHunter_05%20Mar.%2022%2022.00_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;In this case, if you simply do a standard fill in Excel this is the result:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/ScbuXA5DuEI/AAAAAAAAALI/6d_vFQtZuXQ/s1600-h/ScreenHunter_06%20Mar.%2022%2022.01%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_06 Mar. 22 22.01" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="115" alt="ScreenHunter_06 Mar. 22 22.01" src="http://lh6.ggpht.com/_V5m6b8L54Jo/ScbuXtql-aI/AAAAAAAAALM/1IBqOiKgn08/ScreenHunter_06%20Mar.%2022%2022.01_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;Why did this not work properly?&amp;#160; The reason is that Excel assumed that B1 * B3 should be B2 * B4 in the second row and B3 * B5 in the third row.&amp;#160; However, what we wanted is for the first number to stay constant and only the second row to change.&amp;#160; &lt;/p&gt;  &lt;p&gt;The solution to fixing constants is to name them.&amp;#160; Named values in Excel do not change when filling.&amp;#160; To name a cell, click on the cell and then in the left box type in a name for the cell.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_V5m6b8L54Jo/ScbuX6GcNWI/AAAAAAAAALQ/eqEZSKmfSmM/s1600-h/ScreenHunter_07%20Mar.%2022%2022.04%5B2%5D.gif"&gt;&lt;img title="ScreenHunter_07 Mar. 22 22.04" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="106" alt="ScreenHunter_07 Mar. 22 22.04" src="http://lh4.ggpht.com/_V5m6b8L54Jo/ScbuYmn3bpI/AAAAAAAAALU/iUGi2rgpSjo/ScreenHunter_07%20Mar.%2022%2022.04_thumb.gif?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then when you create the formula, use the name instead of the cell address, e.g. instead of B1 * B3 we will now set the formula to InterestRate * B3.&amp;#160; By using a named cell, Excel assumes these values are constants in formulas and doesn’t adjust them automatically. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5636895676871307214?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5636895676871307214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5636895676871307214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5636895676871307214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5636895676871307214'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/03/how-to-use-fill-handle-in-excel.html' title='How to Use The Fill Handle in Excel'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_V5m6b8L54Jo/ScbuVat3a9I/AAAAAAAAAKk/We-mOZdmBl8/s72-c/ScreenHunter_01%20Mar.%2022%2021.36_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7855014213037377406</id><published>2009-02-18T18:33:00.004-05:00</published><updated>2009-02-18T18:50:45.034-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Television'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Proposed ISP Tax Shows Canadian Content Producers Do Not Understand the Internet</title><content type='html'>&lt;p&gt;Decades ago in Canada, funds were created to encourage television production of Canadian Content. These programs were funded by the cable companies &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;and regulated&lt;/span&gt; by the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CRTC&lt;/span&gt;. These funds were created to share "Canadian Stories" in a sea of American television content that because of their inherent scale could be produced easier and cheaper.&lt;/p&gt;&lt;p&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CRTC&lt;/span&gt; is now entertaining a proposal to create a similar fund through taxation of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ISPs&lt;/span&gt; (and therefore all Internet subscribers) to fund Canadian television producers so they can continue to produce "Canadian Stories" created by Professional Content Creators. This proposal is supported by industry lobby groups such as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ACTRA&lt;/span&gt;, Society of Composers, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SOCAN&lt;/span&gt;, etc. &lt;/p&gt;&lt;p&gt;These folks want to tax every Internet subscriber (e.g. practically everyone in Canada) 3% of revenue (which of course means the price will go up by 3% to compensate) from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;ISPs&lt;/span&gt; that provide us Internet Access.&lt;br /&gt;This proposal shows a complete misunderstanding of the difference between a regulated, limited, and centralized Television Industrial Complex model and the Internet - a fundamentally distributed, decentralized and long tail model of content distribution. &lt;/p&gt;&lt;p&gt;Here are some fundamental differences that these lobbyists fail to acknowledge in their proposal: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the television age, the definition of "Content" was professional created, broadcast content. The assumption in this proposal is that Colin &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Mochrie&lt;/span&gt;, the CBC, and other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;CanCon&lt;/span&gt; stars own the culture and the MILLIONS of content creators on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Facebook&lt;/span&gt;, YouTube, etc. in Canada are not qualified to tell their own stories. &lt;/li&gt;&lt;li&gt;In the television age, the definition of "Content" is VIDEO content. On the Internet, there is no limitation and content can be everything from maps, images, videos, flash, applications, etc. Content can also be a mix from a wide variety of sources - how do you regulate content creation when it is mashed up collections from all over the world?&lt;/li&gt;&lt;li&gt;In the television age, there were major barriers to content creators because of the limited &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;shelf space&lt;/span&gt;. Canadians need a way to get on the air simply because they couldn't compete with American content producers. But on the Internet, this model makes no sense because anyone can put up a web site, the costs are cheap and the number of channels are unlimited. What is the barrier to making money on the Internet other that POPULARITY? There is a simple way for Canadians to support their own culture - visit the web site and support it through ad revenue like everyone else does on the Internet. &lt;/li&gt;&lt;li&gt;In the television age, exporting content to other countries was extremely limited because the distribution channels were controlled by cable channels in the country. The Internet has no such barriers - if Canadians want to share their stories they can gain an audience world wide without any restriction.- In the television age, there is no integration of "Application" and "Content". &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Monetization&lt;/span&gt; of content was through a single model - distribution broadcast supported through advertising. In the Internet, the two are mixed together and there are many &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;monetization&lt;/span&gt; models available. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;monetization&lt;/span&gt; mechanisms are also distributed, e.g. I can be creating "Canadian" content that is monetized through Google AdSense in the United States. The selling, re-packaging and syndication of content through dozens of channels is both an opportunity and a challenge for Canadian content producers to claim for themselves. But the solution isn't to bypass these channels and simply tax the consumer - this is just a return to the simplified television &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;monetization&lt;/span&gt; model.&lt;/li&gt;&lt;li&gt;In the television age, the justification for this fund was that in order to compete with American content producers there needed to be funds to create a level playing field and encourage the telling of "Canadian Stories" because the distribution channel for content was limited both in capacity (number of channels) and revenue potential (only the top 10-20 television shows make the money). However, the Internet market is completely the opposite - the market is a long-tail, unlimited distribution channel and there are lots of examples where relatively small content distributors are making money by targeting micro-niche audiences by keeping their costs relatively low and providing a highly valuable target audience for &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;advertisers&lt;/span&gt; or by providing content through subscription that funds the cost.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;CRTC&lt;/span&gt; is in the business of regulating traditional centralized content broadcasting and is therefore bought into the fundamental model assumptions of the television age. Canadian Television Producers who are in favour of this model seem to be wanting to keep their existing model and apply it to the Internet, because if they simply wanted to make money from content there are easier more direct Internet models available that do not require a tax on consumers. The Canadian Producers advocating for this proposal and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;CRTC&lt;/span&gt; if it accepts it simply are trying to implement the old television age model and apply to the new Internet content model so that these folks do not have to migrate to a new way of creating, distributing, monetizing content. In addition, the entire proposal continues to question the fundamental value of funding "Professional Content Producers" as the bastion of Canadian culture when there are potentially millions of Canadians who are creating "Canadian Stories" themselves on a daily basis through blogs, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Facebook&lt;/span&gt;, etc. Do we really need Gordon &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Lightfood&lt;/span&gt;, Colin &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Mochrie&lt;/span&gt;, the CBC, etc. to have a monopoly on culture creation when anyone in Canada can easily tell their own stories?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7855014213037377406?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7855014213037377406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7855014213037377406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7855014213037377406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7855014213037377406'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/02/proposed-isp-tax-shows-canadian-content.html' title='Proposed ISP Tax Shows Canadian Content Producers Do Not Understand the Internet'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7724497075742761952</id><published>2009-02-14T10:24:00.008-05:00</published><updated>2009-02-14T10:35:00.955-05:00</updated><title type='text'>Kincardine Cable TV Community Channel</title><content type='html'>I was up in Kincardine and had a major nostalgia moment. They still had the low resolution cable access announcements feed going - I haven't seen one of these in about 20 years!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_V5m6b8L54Jo/SZbixJu0f8I/AAAAAAAAAKE/3r3dFXpltMs/s1600-h/P1000595.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302674945329102786" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 225px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_V5m6b8L54Jo/SZbixJu0f8I/AAAAAAAAAKE/3r3dFXpltMs/s400/P1000595.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_V5m6b8L54Jo/SZbi4fJiSkI/AAAAAAAAAKM/ynM7I6N85i8/s1600-h/P1000596.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302675071337384514" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 225px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_V5m6b8L54Jo/SZbi4fJiSkI/AAAAAAAAAKM/ynM7I6N85i8/s400/P1000596.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_V5m6b8L54Jo/SZbi8qWINVI/AAAAAAAAAKU/qK6avSM4OfE/s1600-h/P1000597.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302675143062467922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 225px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_V5m6b8L54Jo/SZbi8qWINVI/AAAAAAAAAKU/qK6avSM4OfE/s400/P1000597.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I particularly love the last picture - low resolution announcement board has links to web sites in it....&lt;/p&gt;&lt;p&gt;For those who are young enough never to have seen one of these, here are some details:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The reason for the garish colours is back in the mid 80's, these systems were limited to about 4-16 colours depending on the system used. There are only so many look and feel options when your choice of colours is BRIGHT BLUE, BRIGHT RED, OBNOXIOUS GREEN, BLACK AND WHITE.&lt;/li&gt;&lt;li&gt;You'll notice that all the letters are capitalized. This was pretty common in early computer systems - the resolution was so low that trying to display lower case letters made them hard to read. &lt;/li&gt;&lt;li&gt;There was only one choice of font and it was always that big blocky font that you see here. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Maybe we should along with the rural broadband fund establish a government program to upgrade small towns cable access feeds so they can have access to those fancy TV guide scrolling ad versions we have in the big cities?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7724497075742761952?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7724497075742761952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7724497075742761952' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7724497075742761952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7724497075742761952'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/02/some-cities-still-have-cable-access.html' title='Kincardine Cable TV Community Channel'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V5m6b8L54Jo/SZbixJu0f8I/AAAAAAAAAKE/3r3dFXpltMs/s72-c/P1000595.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1854938366291867860</id><published>2009-01-15T21:05:00.003-05:00</published><updated>2009-05-29T17:00:58.336-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>Using Technology to Avoid Stealing Songs By Mistake</title><content type='html'>In 1960, The Chiffons published He's So Fine:   &lt;br /&gt;  &lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vpAcQrt8-SE&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vpAcQrt8-SE&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;br /&gt;  &lt;br /&gt;In 1970, George Harrison published the song My Sweet Lord:   &lt;br /&gt;  &lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wynYMJwEPH8&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wynYMJwEPH8&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;br /&gt;  &lt;br /&gt;In 1976, a lawsuit ended with Harrison having to pay over $500K in damages to the original song's publisher for subconsciously plagiarizing (ultimately, Harrison got the last laugh by ultimately buying the publisher).   &lt;br /&gt;  &lt;br /&gt;Just recently, &lt;a href="http://defamer.com/5103189/joe-satriani-sues-coldplay-for-ownership-of-years-most-annoying-melody"&gt;Joe Satriani has taken Coldplay to court &lt;/a&gt;for the same infringement for allegedly copying his original song If I could Fly.   &lt;br /&gt;  &lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UvB9Pj9Znsw&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UvB9Pj9Znsw&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;br /&gt;  &lt;br /&gt;So my question is, could there not be a technology solution to this problem? With online radio sites having matching algorithms based on wave analysis, chord progressions, etc. could there not be similar analysis done to create a checksum hash for every published song that if matched against a new song would be deemed too similar?   &lt;br /&gt;  &lt;br /&gt;It would be a lot easier than relying on someone's subconscious, just purely random coincidence or some judge's interpretation of what music is to award royalties.   &lt;br /&gt;  &lt;br /&gt;Or even better yet, we would go back to the days of Mozart, Bach and Vivaldi when musicians copied each other liberally and were able to advance their art without fear of reprisals from copyright lawyers.     &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1854938366291867860?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1854938366291867860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1854938366291867860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1854938366291867860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1854938366291867860'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/01/using-technology-to-avoid-stealing.html' title='Using Technology to Avoid Stealing Songs By Mistake'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5996084976193837000</id><published>2009-01-01T18:53:00.004-05:00</published><updated>2009-01-01T20:10:30.553-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Applying the Software Development Life Cycle in a Web 2.0 Context</title><content type='html'>For the past 20 years or so, the "Software Development Life Cycle" has been the process for defining, designing, constructing, and deploying applications. Various methodologies for building software have evolved over time, e.g. Waterfall methods, spiral method, rational unified process, extreme programming, etc. that prescribe different processes for development of software. However, all of them regardless of methodology have some common basic assumptions that I believe have now changed in a Web 2.0 world. These basic assumptions are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Software development involves engineering code artifacts that implement some sort of requirements specification. In waterfall methods, the requirements are defined up front. In more iterative or agile methods the requirements are iterated through cycles. But in all these methodologies, the primary purpose of developing software is custom developing software based on these requirements.&lt;/li&gt;&lt;li&gt;The "Application" is a deployable, atomic set of artifacts that can be deployed through a series of steps to a particular environment. The "Application" is used by a client that engages with the application. Traditionally, the user of the application does not get to change or redefine the application except through very rigidly defined configuration mechanisms.&lt;/li&gt;&lt;li&gt;Software development historically has required a large amount of testing in order to ensure that a) there are no bugs in the software and b) the software complies with requirements. Software is tested before it is released to users.&lt;/li&gt;&lt;li&gt;Software development is done by a team of experts that understand how the software works, how it can be modified and how to manage the overall development cycle. Software developers and end-users of the software do not really collaborate on building the software - end-users consume the software as it is released.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In the media, the old traditional form of Push media is being replaced by user generated content, collaboration, and Pull from users. The distinction between producers and consumers has been blurred so that online news hubs become more like &lt;a href="http://alistair.cockburn.us/Information+radiator"&gt;information radiators &lt;/a&gt;than centralized distribution points.&lt;/p&gt;&lt;p&gt;Software development, in my opinion, is going through a similar revolution to the mainstream media. It is happening in a slower fashion because the software "industrial complex" is still highly engaged in generating software through the traditional means and because it generally works especially for large enterprise applications. However, in certain spaces and where consumers of software are engaged, the traditional model of a software development team pushing out software that is consumed by a user is starting to break down. &lt;/p&gt;&lt;p&gt;In order to make my point, let me give you a few examples:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Software applications can be created via "Mash-ups" that allow end-users to combine existing application components into new applications. &lt;/li&gt;&lt;li&gt;Portal applications such as Microsoft SharePoint are blurring the distinction between application components and user modifiable objects. For example, a Document Library in SharePoint part of an application or is it a user object?&lt;/li&gt;&lt;li&gt;Cloud based services are now being released and combined in a variety of different methods. &lt;/li&gt;&lt;li&gt;Clients such as Microsoft Office 2007 are now sophisticated enough to serve as application development platforms in themselves. For example, a traditional "reporting application" can now be built quite easily using Excel 2007 pointing at a data warehouse.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In addition, users expectations have changed dramatically has Web 2.0 has encouraged them to collaborate, blog, share information and build their own customized spaces. When a 12 year old can over night create their own blog, organize a protest online, share pictures, integrate Google Maps, and add dozens of widgets to their personalized home page, the idea of waiting 3 months for the next software "release" by an ivory tower software team quaint at best and non-responsive at worst.&lt;/p&gt;&lt;p&gt;In the corporate world, IT departments are struggling with this challenge in application spaces that encourage collaboration and customization with end-users. Business users do not want to wait 3 months for a static report - they want a drill down BI tool that allows them to build their own "application" (whatever that now means). In the portal world, IT departments are struggling with how much control they provide their end-users to redefine the underlying structure of meta-data, document types, user profiles, etc. In the SharePoint world for example, its difficult to tell where the "application" stops and user generated content begins because the platform is designed to encourage modification and collaboration by office workers. &lt;/p&gt;&lt;p&gt;On the other hand, the risks and challenges that the software development life cycle has helped solve over the past 20 years have not disappeared because we have moved from a code centric, monolithic, and IT controlled software development cycle to a collaborative, distributed and user centric model:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How are changes "deployed" when an office user can simply make a change in production to a content type, a work flow, a user profile definition?&lt;/li&gt;&lt;li&gt;How are the impacts of changes "tested"? For example, I can change the layout of my blog, add widgets to it, etc. but can I really test those changes before they become visible to the world (in my blog software, I have the ability to "preview" which is sort of a test but not quite the same as a proper QA environment)?&lt;/li&gt;&lt;li&gt;How are application componentized when changes are done by potentially hundreds of users working collaboratively? What constitutes a "release"? For example, on Facebook, I create a Facebook Page that has a set of content, some groups, some events, etc. but there is no way to package these changes up into a deployable unit.&lt;/li&gt;&lt;li&gt;How are changes versioned and backed-up? I have this problem with my blog for example. If I make changes to my blog "application" through changing the layout, modifying the HTML, etc. there is no easy way for me to preserve these changes as a version. I cannot roll-back to a previous version either.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Software development methodologies have good answers to these challenges and over the past 20 years have matured to address these issues through test driven development, source code control, build management, project management, quality assurance, etc. &lt;/p&gt;&lt;p&gt;As an industry, we have a similar challenge to the mainstream media - how do we adapt these worth while processes so that we can continue to deliver high quality software to our customers while adapting to an environment where our users are going to be creating software with us in a highly collaborative manner? How do we recreate the software development life cycle for a Web 2.0 world?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5996084976193837000?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5996084976193837000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5996084976193837000' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5996084976193837000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5996084976193837000'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2009/01/applying-sdlc-in-web-20-context.html' title='Applying the Software Development Life Cycle in a Web 2.0 Context'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1583769166961079001</id><published>2008-12-30T19:55:00.004-05:00</published><updated>2008-12-30T21:34:04.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Information Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Key IT Challenges for 2009</title><content type='html'>Here are some of the key IT challenges I see for 2009 based on feedback from our customers, the media, and my own understanding of key technologies coming on the scene. In addition, these challenges reflect the broader economy which is going to go through a global recession in 2009, impacting IT budgets in a number of different ways (see my previous &lt;a href="http://chriswoodill.blogspot.com/2008/12/technology-trends-for-2009-for.html"&gt;post&lt;/a&gt; on this issue).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Challenge #1: Maximizing Existing IT Investments&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;In the past 2 years, there have been a significant amount of investments made in new technology platforms that were supposed to empower office workers to higher productivity and less dependance on IT.  Products like content management systems, portals, data warehouses, analytics, CRM, ERP, etc. all have become increasingly mainstream over the past couple years as the economy boomed and CIOs were looking to make long term investments.&lt;br /&gt;&lt;br /&gt;This year, in this time of restraint, I see a key challenge for all IT departments  in maximizing existing investments that were made over the past two years.  For example, how many companies have invested in SharePoint and are only using it to power their intranet?  I have many customers who are looking to see how can they can justify their SharePoint platform investment through more advanced applications.  For consultants, this is an opportunity to sell more vertically integrated, business centric solutions and move away from selling the latest technology and this will continue for at least another year.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Challenge #2: The Proliferation of Virtual Machines&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;The virtual machine as a server platform has really hit the IT mainstream.  Virtualization has been around for years but thanks to a very mature platform with VMWare ESX and an upcoming push from Microsoft Hyper-V, the use of virtual machines is &lt;a href="http://www.idc.com/getdoc.jsp?containerId=prUS20778407"&gt;expanding rapidly&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Virtual servers have started replacing physical ones, first with non-core systems such as development servers to now in some cases full production environments. &lt;br /&gt;&lt;br /&gt;One of the key challenges with Virtualization is that because it becomes so easy to spin up a new server, the number of servers proliferates, leading to VM sprawl.  Management of virtual servers doesn't easily map from the physical world especially when doing tasks such as asset management (how do you manage a virtual asset).  IT managers will spend a lot of time in 2009 coming to terms with these challenges.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Challenge #3: Web 2.0 Goes Mainstream&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;As technologies go mainstream, the language, terms and concepts that were reserved for leading edge technologists land in the hands of business managers, stakeholders and consumers.  Unfortunately, they get them typically without the deep technical or even conceptual understanding.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This happened a couple years ago with the concept of "Portals".  Everyone wanted a portal.  Portals went from being these esoteric technologies to jargon words in marketing magazines.  The same is happening now with concepts like "Blogs", "Wikis", "Web 2.0", etc.&lt;br /&gt;&lt;br /&gt;I'm now receiving RFPs from government agencies with requests to "use Web 2.0 technologies" with no rationale, purpose or objectives.  Some manager has now heard of Facebook and so now wants it on their web site.  As technology consultants, the challenge will be seperating the myth from the fact, selling the real effort it takes to use these technologies effectively and trying to guide stakeholders to realize relevance from what has now become a Fad.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Challenge #4: Storage&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Even a few years ago, it was a big deal to have a Storage Area Network (SAN).  SANs were reserved for large organizations with lots of data.  With the proliferation of media files, volumes of emails and documents, and no discipline when it comes to archiving in most organizations, managing the ever increasing demand for more storage is becoming a major headache.   With hard drives getting increasingly cheaper the perception that storage is nearly free is pervasive (I can go buy a terrabyte backup drive now at BestBuy for about $100).  Unfortunately, corporate storage is nowhere near as cheap when the requirement includes high performance, highly redundant and low power consuming.  For example, at my last organization we spent almost $50,000 implementing a SAN in order to gain faster I/O access for our core databases.  The SAN has 28 drives in it, is highly redundant, etc. but even with its several terrabytes of storage it will fill up rather quickly if not managed well.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Challenge #5: Search and Document Management&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;I mean search here in the broadest sense - finding stuff.  Go try and find a document on your corporate intranet.  Try and locate a file on your file server.  Try and understand the taxonomy or meta-data structure for your document repository (assuming your organization has even defined one).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creating documents is now so easy that they have proliferated.  In addition, there is typically in most organizations very poor meta-data strategies for indexing data and immature archiving strategies to remove old documents.  For example, at my last position we had a file server with about 4 terrabytes of documents.  We did a scan of the thousands of documents on that server and found that over 80% had not been touched in the past 2 years.  Even if they are not being accessed they act as an information clog when trying to find important documents. &lt;br /&gt;&lt;br /&gt;Document management used to require very expensive and proprietary software such as OpenText, Documentum, HummingBird, etc. and was reserved for companies such as law firms who had very regulated and structured document repository.  But with lower cost tools such as SharePoint you can quite easily now implement some decent meta-data taxonomies and start to catalogue, version control and archive documents in a methodical way. &lt;br /&gt;&lt;br /&gt;The biggest challenge isn't the technology - its getting commitment from the business to organize the thousands of old documents and migrate them into the new structure.  This is a massive effort and requires significant involvement from the business.  While there are some tools to help with this effort, the clean-up effort of document migration is still a continuing challenge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1583769166961079001?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1583769166961079001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1583769166961079001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1583769166961079001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1583769166961079001'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/12/key-it-challenges-for-2009.html' title='Key IT Challenges for 2009'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-371578702735544566</id><published>2008-12-28T14:24:00.005-05:00</published><updated>2008-12-28T20:57:05.549-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trends'/><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Online Trends for 2009</title><content type='html'>&lt;span style="color:#000000;"&gt;Here are some online trends to look out for in 2009.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;Advertising Takes a Beating&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;With the sluggishness of the US economy, advertising will decline significantly and online advertising in particular will be hit hard. Online advertising will still continue to grow but at a much slower pace.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 374px; CURSOR: hand; HEIGHT: 250px; TEXT-ALIGN: center" alt="" src="http://www.emarketer.com/images/chart_gifs/099001-100000/099567.gif" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This slowdown in growth will put pressure on web 2.0 applications with lots of content but lower conversion rates. Applications such as Facebook, Flickr, YouTube, etc. will need to focus more heavily on monetizing all those collaboration interactions that millions of people now do for free every day.&lt;/p&gt;&lt;p&gt;There will also be a continued emphasis on Cost Per Action instead of Cost Per Click to link advertised costs to conversion. As the cost of online advertising increases (for example the cost of buying keywords) there will be increased pressure on Google and other advertising platforms to show direct linkage between advertising and conversion to revenue. This is where online advertising as a channel has had an advantage over traditional media channels.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Internet TV is Finally a Reality&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;The "watch video on your computer" revolution started about 10 years ago, but until this year watching the equivalent of television via the Internet really wasn't possible. Instead, users have sacrificed the video quality that even low definition television provides for increased collaboration, crowd created content, etc. In addition, the selection for mainstream content has been limited online until the last year or so. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;In 2009, the compromise on quality and selection will fade away. Video sites such as YouTube, Facebook, etc. are all upgrading their video streaming so that the videos uploaded by users are streamed at much higher resolution. In addition, sites such as Hulu now stream hundreds of mainstream television programs in almost broadcast quality. While not able to yet compete with HDTV, video on the Internet will now be viable as a full-screen, sit in the living room type experience.&lt;/p&gt;&lt;p&gt;Part of the challenge has been the source video - consumer digital cameras tended to be lower resolution video than television.  However, the latest digital cameras produce very good video quality including my &lt;a href="http://www2.panasonic.com/consumer-electronics/shop/Cameras-Camcorders/Digital-Cameras/Lumix-Digital-Cameras/model.DMC-TZ5A_11002_7000000000000005702"&gt;Panasonic camera&lt;/a&gt; that can shoot HD video in wide screen format.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Web 2.0 will Become Mainstream&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;Don Tapscott's new book on the &lt;a href="http://www.amazon.ca/Grown-Up-Digital-Generation-Changing/dp/0071508635/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1230493272&amp;amp;sr=8-1"&gt;Net Generation&lt;/a&gt; points out that when technology becomes boring and we stop talking about it then the next level of innovation is possible. Web 2.0 will simply become The Internet as usual and we'll stop talking about it as this new found technology revolution (until we think of the next one of course). &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;Applications like YouTube, Facebook, etc. are now so mainstream that your mother uses them. Applications such as Facebook, MySpace, YouTube, etc. have all already demographically shifted to the mainstream from being in the hands of the power users, the young and the affluent. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Mobile Applications Will See Massive Growth&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;With the launch of the IPhone and its inevitable competitors, the phone now becomes a viable application platform. IPhone is as significant for mobile applications as IPod was for downloadable music. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Another mobile device seeing large sales is the &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B000FI73MA/afreward-20/"&gt;Amazon Kindle&lt;/a&gt;. It allows users to purchase books and view them in a mobile device. The idea of e-books has been around for over 10 years but it takes a device like the Kindle with its complete vertical integration to drive the adoption. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Geotagging and Live/Google Earth&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;As the amount of content increases, one of the simplest ways to filter content is through geography. In addition, with the maturity and increased use of mapping interfaces such as Live Earth, Google Earth, Google Maps, etc. both as destination sites and as mash-ups, geotagging of content, pictures, videos, and people will be a vital way of filtering content in 2009.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;One of the simplest examples is the integration of &lt;a href="http://www.blogger.com/www.panaramio.com"&gt;Panaramio&lt;/a&gt; with &lt;a href="http://www.blogger.com/maps.google.com"&gt;Google Maps&lt;/a&gt;. In Google Maps if you look up any address it will show you related photos from Panaramio, all geotagged on upload by location. &lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;Change of Strategy From The RIAA/MPAA&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;For the past several years, the global culture industry has been taking people to court over copyright infringement. Approximately &lt;a href="http://blog.wired.com/27bstroke6/2008/09/proving-file-sh.html"&gt;30,000&lt;/a&gt; people have been sued in the US for copyright infringement over the past 5 years. The impact on file sharing has been no real impact on file sharing but has made the RIAA &lt;a href="http://torrentfreak.com/riaa-worst-company-in-america-2007/"&gt;one of the most hated organizations worldwide&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;It appears that after 5 years of harassment law suits, the RIAA has decided to &lt;a href="http://blog.wired.com/27bstroke6/2008/12/riaa-qualifies.html"&gt;change its strategy and use a softer approach&lt;/a&gt;. In addition, new technology and business partnerships will allow the media conglomerates to start making money off their content no matter who uploads it. For example, Universal now stands to &lt;a href="http://news.cnet.com/8301-1023_3-10126439-93.html"&gt;make over $100 million &lt;/a&gt;in ad revenue through a deal inked with YouTube that uses search terms to identify user contributed music videos that map to Universal's artists. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Casual Entertainment Over Hard Core Gaming&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;The success of the Nintendo Wii (sold out again this Christmas!) as well as other casual games such as the Sims and Spore will continue to provide online entertainment for the masses. Collaboration, casual games and customization will continue to push the mainstream entertainment market. Games like RockStar, Wii Fit, etc. will continue to provide mainstream entertainment while leaving more hard core games to cater to the hard core 18-30 male demographic.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;See the above note as well on platforms like IPhone and Facebook - these are perfect jumping points for casual gaming as they cater to an audience that might play a game of solitaire but isn't going to be spending hours with Call of Duty.&lt;/p&gt;&lt;p&gt;The casual gaming market is still in &lt;a href="http://www.gamespot.com/news/6181920.html"&gt;massive growth mode &lt;/a&gt;and this will continue in 2009.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Difference, Story Telling and Community&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;This isn't a trend, but it will continue to be true in 2009 as it always has been: story telling, difference and community building continue to drive the content creation process.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The revolutionary part of the Internet is the ease at which these tools can be employed for someone to tell a story, create some innovative content and enable a community. The growth of blogs shows that everyone has something to say and the size of the audience it generates is how well it connects to its community of interest. Determining "success" depends on the objective - it may simply be distributing family pictures or it may be making your opinion heard by millions as Barak Obama did in 2008. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;The Key Challenge in 2009: Conversion&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;I have a friend who is very passionate about informing parents about Toy Recalls. She has an active blog, she uses Twitter and Facebook and she is able to get her message out to several hundred viewers a day. When we discussed her "success criteria", she seemed pleased that she had grown this community from zero but her next question was, "ok so now what?". This is I think the key question for all this collaboration activity going on - how do we convert the energy of all this discussion, file sharing, photo sharing, tagging, blogging, etc. into some sort of concrete action so that its simply not just hanging out (although that is not a bad goal in itself). &lt;/span&gt;&lt;/p&gt;&lt;p&gt;It's as if we have got people off the couch and started them talking again. So now the community is sharing, talking, collaborating. So now what happens? How do the tools available provide methods to convert this community to action?&lt;/p&gt;&lt;p&gt;This is the future growth opportunity for application platforms like Facebook and you can see the evolution of these tools going in this direction already - applications like the &lt;a href="http://www.facebook.com/apps/application.php?id=2318966938"&gt;Causes &lt;/a&gt;application for example are a first attempt to translate a community of action into a concrete action (in this case donating money to charity). &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-371578702735544566?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/371578702735544566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=371578702735544566' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/371578702735544566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/371578702735544566'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/12/online-trends-for-2009.html' title='Online Trends for 2009'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-9150423276621827041</id><published>2008-12-28T10:58:00.005-05:00</published><updated>2008-12-28T12:48:03.003-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CIO'/><category scheme='http://www.blogger.com/atom/ns#' term='Information Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Corporate IT Departments Trends for 2009</title><content type='html'>Corporate IT departments are, at the best of times, the internal consulting organization for their organizations and provide strategic technology services to help propel the overall success of the business. The role and objectives of the corporate IT department will change in 2009 as the economy continues to lag, technologies mature and organizations that saw "Web 2.0" as bleeding edge now start to adopt some of more mainstream applications of online technologies.&lt;br /&gt;&lt;br /&gt;Here are some of the key trends I see in 2009 for the corporate IT department. For consultants such as myself, this will have a major influence on how we can continue to provide high value to our internal IT partners by providing services and solutions that contribute to the value proposition for the corporate IT department in 2009.&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Corporate IT Departments Will Lag Behind in Upgrades&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;With budgets tightening, corporate IT departments will take the hit in upgrades for both hardware and software. IT departments will be asked to do more with less and those departments who may have planned on an Office 2007 upgrade, a SharePoint 2003 to 2007 conversion project, a .NET framework 1.1 to 2.0/3.0/3.5 upgrade project, server refreshes, etc. will be asked to defer them to save costs. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;Scrutiny on Capital and Cash Flow&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Typically, large scale expenditures can be amortized over a 3-5 year period. For example, if a Director IT needs to purchase $500K in new servers, they can typically budget these over a 3-5 year amortization period so they don't get hit with the entire cost in year one. However, from a cash flow perspective, the money still gets spent and in cases where cash is tight (e.g. credit crunches) these types of cash outlays will be dramatically curtailed. &lt;/p&gt;&lt;p&gt;As a result, this will lead to arrangements with providers where costs can be paid on a monthly basis, e.g. leases, software as a service, outsourcing, financing, fee for service, etc. where cash flows out of the organization in a more even way than a large capital expenditure.&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;Long Term Consulting Under Attack, Short Term Consulting Will Increase&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;As budgets tighten, the following tends to happen during the budget planning cycle: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Full time hires are deferred&lt;/li&gt;&lt;li&gt;High cost consultants are targeted&lt;/li&gt;&lt;li&gt;Projects have to show very quick ROI&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If you are a $200 / hr consultant that has been working on a project for 2 years and the project will continue for another 2 years, then expect that cost to be reviewed and for department managers to try and squeeze out consultants and replace them with cheaper internal resources.&lt;/p&gt;&lt;p&gt;However, because full-time hires become blocked, the only way to get new work done in the short term tends to be through direct consulting costs. In addition, because the business does not have long term visibility they will be hesitant to take on a full-time resource as a long term commitment. If the business stakeholder can justify the ROI in the short term, they will tend to outsource the work simply because the Corporate IT department cannot hire any full time resources to do the work. In addition, outsourcing the work as a fixed cost to a consulting firm is less risk and the cost is directly attached to the cost of the project, making it more tangible for a business stakeholder than a resource hire.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Incremental Optimization&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;For both revenue and profit, the goal for 2009 will be to optimize as much as possible. For example, technologies such as SEO, analytics, data mining, reporting, CRM (especially for those who already have an existing platform), channel management, marketing optimization, etc. will sell very well to organizations who have over the past 2-3 years have been growing their customer base but now need to focus on retention, optimization of marketing dollars and efficiency. Technologies that can help do this will continue to get the green light as they produce ROI faster than brand new initiatives and they are less risk for a CIO who is under budget pressure.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;Layoffs for Many, Indispensable Positions for a Few&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;In tough times, there are typically layoffs. Depending on the speed of action required, layoffs are many times done without proper planning and project/application coverage (the worst case is where you see companies having to hire back the people they just laid off on contract!). For those who are laid off, it means that they are now looking for a job. But for those who are left standing, they can find themselves now indespensable where there used to be three people who knew how to fix an application and now there is only one. In some cases, the one left is a consultant! &lt;/span&gt;&lt;/p&gt;&lt;p&gt;For those who are in this position, it provides leverage to those left behind. If you are the only developer who now has access to source code and can run a build, you were kept because they couldn't afford to dump you. If you can stretch to grab the work that was being done by other developers and demonstrate the flexibility and tenacity to help clean up the mess inevitably left behind by these changes then this will be looked at favourably by the company.&lt;/p&gt;&lt;p&gt;For consultants, there are opportunities to fill the gaps left behind in the rush to lay off staff through short term and long term consulting arrangements, especially if the consultant has had previous experience with the applications in the organization. There are also opportunities to pitch alternatives to lay-offs without adequate transition through outsourcing arrangements. A service company can provide flexibility in resource ramp-up or ramp down that is difficult for an internal department to manage especially in a time of crisis. In addition, a consulting company has the advantage of being able to work in stealth, allowing for a Corporate IT Director for example to quietly outsource key functions to an outsource provider while planning a lay off so as to avoid disruption and continue service levels.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Opportunity for Entrepreneurialism&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;There is an opportunity for IT departments to re-invigorate through a focus on entrepreneurialism. For those IT leaders who can show the business a clear plan to short term revenue, increased profit, etc. this will tend to get more attention than more themes such as scalability, efficiency, etc. Entrepreneurs focus on delivering high value services on a shoe-string budget - this is what is required in an economic down turn. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Business stakeholders will also be more apt to listen when they are also hungrier for more revenue. For example, many sales businesses will find their traditional sources of revenue tapped out and will be looking around for new revenue sources. If the Corporate IT Department has some creativity and can partner effectively, they can help provide some great new ideas for using Web 2.0 technologies, creating online campaigns, optimizing CRM data, using data mining techniques, etc. to squeeze more revenue out of existing channels or to open up new ones.&lt;/p&gt;&lt;p&gt;For consultants, this is the ONLY way to sell business in 2009 - either demonstrate how to squeeze more revenue/profit out of existing channels or show how a very small investment in a new channel can lead to large growth potential. Be prepared to take risks and be entrepreneurial with your customers in how they pay for your services, how much risk you take on, etc. and this will also be attractive to customers who are hesitant to spend money.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Focus on Business Solutions that Make Revenue or Profit, Not Technology&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;This is always the case with business stakeholders, but in times of restraint this will be even more pronounced: Corporate IT Departments who are focused on generating concrete business centric solutions that create revenue or profit opportunities will be prioritized. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;If you are a Corporate IT Department or one of its service providers and your focus is heavy technology buzzword projects like: SOA, Cloud Computing, Web 2.0, Architecture, Software Development Life Cycle, Enterprise Data Warehouse, ERP, etc. then you will be in trouble in 2009. For example, at one of the banks here in Canada for example, I know that their list of thirty major IT has been cut to less than ten for 2009. &lt;/p&gt;&lt;p&gt;Projects where existing horizontal technologies in place are now leveraged to create additional value will have significantly more priority. For example, we have many customers who have previously bought Microsoft SharePoint 2007 but aren't leveraging it effectively or maximizing its use. Incremental investments in adding verticalized and targeted applications on top of this already existing investment will show quicker pay off than investments in additional infrastructure technologies.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-9150423276621827041?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/9150423276621827041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=9150423276621827041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/9150423276621827041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/9150423276621827041'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/12/technology-trends-for-2009-for.html' title='Corporate IT Departments Trends for 2009'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8572241916621024565</id><published>2008-12-21T16:32:00.004-05:00</published><updated>2009-05-22T08:42:05.343-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Business Intelligence is More Than Just a Fancy Graph</title><content type='html'>&amp;quot;Business Intelligence&amp;quot; is a hot topic these days. There are companies that produce business intelligence products such as Microsoft, Business Objects, Dundas Charts, and so on that focus on visualization of data with the approach that by providing a simplified view of complex data it will enable key stakeholders to make decisions.  &lt;br /&gt;  &lt;br /&gt;A good example is Dundas Charts - the company produces an amazing set of widgets and controls for building dashboards, charts, and visualization of data.  &lt;br /&gt;  &lt;br /&gt;&lt;a href="http://www.dundas.com"&gt;&lt;img title="ScreenHunter_03 May. 22 09.39" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="310" alt="ScreenHunter_03 May. 22 09.39" src="http://lh6.ggpht.com/_V5m6b8L54Jo/Sharfw3gHUI/AAAAAAAAANE/Q3Xi3ydzsK8/ScreenHunter_03%20May.%2022%2009.39%5B4%5D.gif?imgmax=800" width="355" border="0" /&gt;&lt;/a&gt;   &lt;br /&gt;  &lt;br /&gt;The price is right too - you can buy these fancy BI controls for a license of about $1000.  &lt;br /&gt;  &lt;br /&gt;However, in my experience with Business Intelligence applications, I have come to the following basic conclusion:  &lt;br /&gt;  &lt;br /&gt;&lt;span style="color: #3366ff"&gt;&lt;strong&gt;Visualizing data is relatively easy.     &lt;br /&gt;Obtaining the data in an enterprise environment is hard.      &lt;br /&gt;Defining what the data means is even harder.&lt;/strong&gt;    &lt;br /&gt;&lt;/span&gt;  &lt;br /&gt;Let me give you an example. &lt;a href="http://www.health.gov.on.ca/transformation/wait_times/providers/wt_strategy.html"&gt;Wait Times&lt;/a&gt; are calculated in Ontario and presented to the public in order to show accountability for the funds being invested into improving access to surgeries.  &lt;br /&gt;  &lt;br /&gt;Here is what the data looks like:  &lt;br /&gt;  &lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_V5m6b8L54Jo/SU65FuI3C3I/AAAAAAAAAJI/B71lmvQTorQ/s1600-h/ScreenHunter_01+Dec.+21+16.44.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5282362920887847794" style="display: block; margin: 0px auto 10px; width: 400px; cursor: hand; height: 228px; text-align: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/SU65FuI3C3I/AAAAAAAAAJI/B71lmvQTorQ/s400/ScreenHunter_01+Dec.+21+16.44.gif" border="0" /&gt;&lt;/a&gt;  &lt;br /&gt;  &lt;br /&gt;As you can see, the indicators are quite simple. The data could have been visualized in a number of different ways such as a red-yellow-green style KPI, a guage, charts, etc. Implementing this would simply involve taking a control library like Dundas Charts and feeding it the above data to get a graphical representation. However, visualization is actually not that valuable - the average person does not need a graph to understand a basic set of numbers.   &lt;br /&gt;  &lt;br /&gt;Obtaining this particular set of data is hard. It requires the synthesis of raw data coming in through automated feeds from about 150 hospitals into a central database that is then scrubbed to match patient records and wait times records together. The cost of building this application to collect the data was millions of dollars - the cost of producing the PDF file containing the numbers is significantly less.  &lt;br /&gt;  &lt;br /&gt;Defining the original business rules, definitions and targets for how wait times data was to be collected was even harder. What does a &amp;quot;Wait&amp;quot; actually mean? There are in Ontario two different wait periods (called Wait One and Wait Two). Wait One is defined as the time it takes for you to get the appointment with the doctor who provide the diagnosis. Wait Two is defined as the time it takes between the point where the doctor provides the diagnosis and the point where you get the procedure. This is what the current Wait Times application tracks - Wait Two data. Different provinces have different definitions and track different wait intervals. In addition, you will notice that only certain types of procedures are represented. These were chosen through government priority - another period of business analysis that took several years to define, prioritize and fund. Similarly, the &amp;quot;targets&amp;quot; were defined through another complex process using clinical experts who invested significant time to analyze and provide recommendations on what was the clinically appropriate targets.  &lt;br /&gt;  &lt;br /&gt;&lt;span style="color: #3366ff"&gt;&lt;strong&gt;If you are looking at a report, a set of numbers, etc. you are looking at the tip of the iceberg - the amount of energy, work and thought that goes into defining the data and then obtaining it is enormous in comparison to building a fancy graph.&lt;/strong&gt;&lt;/span&gt; In the case of Wait Times, producing the report now is done by running automated processes. The cost of the underlying system to obtain the data cost millions of dollars and took years to implement.  &lt;br /&gt;  &lt;br /&gt;So the next time you look at a report, appreciate the amount of work that has gone into it. And as an IT professional, the value to the customer is in helping them to define the data and then obtain it from a variety of data sources. Produce the actual report is simple in comparison.    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8572241916621024565?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8572241916621024565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8572241916621024565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8572241916621024565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8572241916621024565'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/12/business-intelligence-is-more-than-just.html' title='Business Intelligence is More Than Just a Fancy Graph'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_V5m6b8L54Jo/Sharfw3gHUI/AAAAAAAAANE/Q3Xi3ydzsK8/s72-c/ScreenHunter_03%20May.%2022%2009.39%5B4%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2705820585970728242</id><published>2008-12-03T20:32:00.003-05:00</published><updated>2008-12-03T21:17:58.586-05:00</updated><title type='text'>Top 10 List of Bad Movie Computer Moments</title><content type='html'>I watched Eagle Eye over the weekend, and it was fun but just terrible in its use of the old boogie man plot device of the computer taking over the world.  In appreciation, here are some of my all time favourite bad computer movie moments.&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.imdb.com/title/tt1059786/"&gt;Eagle Eye&lt;/a&gt; (2008): an all powerfull, all seeing surveillance computer tries to take out the entire US government but can be defeated by poking it in the eye with an metal rod.&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.imdb.com/title/tt0113957/"&gt;The Net&lt;/a&gt; (1995): Sandra Bullock plays a notorious hacker who throughout the entire movie mispronounces the word MODEM (as if it rhymes with bottom) and uses a Macintosh and a drag and drop interface to hack computers!  If only it were that simple.&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.imdb.com/title/tt0107290/"&gt;Jurassic Park&lt;/a&gt; (1993): the computer that controls the park is apparently UNIX (identified by the super genius girl who apparently learned it in grade school).  She then proceeds to operate it using this 3D flying interface! &lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object width="420" height="339"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/x4tbis" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://www.dailymotion.com/swf/x4tbis" type="application/x-shockwave-flash" width="420" height="339" allowFullScreen="true" allowScriptAccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/swf/x4tbis"&gt;Jurassic Park - Unix System Scene&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;by &lt;a href="http://www.dailymotion.com/unixguru"&gt;unixguru&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;a href="http://www.imdb.com/title/tt0116629/"&gt;Independence Day&lt;/a&gt; (1996): Jeff Goldblum and Will Smith design a computer virus that can infect an ALIEN COMPUTER via TCP/IP using a MacBook!  Apparently alien invaders use the Internet but without the McAfee subscription.&lt;br /&gt;&lt;br /&gt;5. &lt;a href="http://www.imdb.com/title/tt0086567/"&gt;WarGames&lt;/a&gt; (1983): Matthew Broderick and Ally Sheedy hack into the government using a 300 baud modem (with accoustic coupler for visual impact).  The super computer is a room full of tape drives and flashing lights that is defeated by forcing it to play chess until it figures out the concept of a stalemate.  "The only way to win is not to play".&lt;br /&gt;&lt;br /&gt;6. &lt;a href="http://www.imdb.com/title/tt0117060/"&gt;Mission Impossible&lt;/a&gt; (1996): Standard computer animations like file uploads, logins, etc. are really boring to look at.  In Mission Impossible, a standard macbook was used but the OS was suped up with some fancy animations.  Why have a progress bar when you can have the screen whiz around and scream at you (even though its supposed to be top secret)?&lt;br /&gt;&lt;br /&gt;7. &lt;a href="http://www.imdb.com/title/tt0128853/"&gt;You've Got Mail&lt;/a&gt; (1998): Email clients are also very boring.  Who wants to watch someone reading email.  This movie is a great example of how special effects people take great liberty to make computer applications much more interesting with animations, sound, etc.&lt;br /&gt;&lt;br /&gt;8. &lt;a href="http://www.imdb.com/title/tt0076759/"&gt;Star Wars &lt;/a&gt;(1977): The computers in Star Wars are not bad actually, although the amount of blinking lights in the room that the Droids hang out in for most of the movie are a bit much.   The demo on how to destroy the the death star is quite primitive (they look a bit like the original asteroids video game) but at least looks somewhat plausible.&lt;br /&gt;&lt;br /&gt;9. &lt;a href="http://www.imdb.com/title/tt0113189/"&gt;Golden Eye &lt;/a&gt;(1995): Thanks to some product placement, all the computers are running OS 2/Warp.  If the Russians were running Windows, maybe they could have had a chance against 007.&lt;br /&gt;&lt;br /&gt;10.  &lt;a href="http://www.imdb.com/title/tt0244244/"&gt;Swordfish&lt;/a&gt; (2001): Hugh Jackman is a hacker who puts together viruses using some sort of 3D visualization software.  The one thing he does get right is the repeated swearing at his computer while he works.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gZ41SsEV40U&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gZ41SsEV40U&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2705820585970728242?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2705820585970728242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2705820585970728242' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2705820585970728242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2705820585970728242'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/12/top-10-list-of-bad-movie-computer.html' title='Top 10 List of Bad Movie Computer Moments'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1800691268311951688</id><published>2008-11-20T13:57:00.005-05:00</published><updated>2008-12-21T17:14:00.763-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Learning Management Systems'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Best Practices for Implementing a Learning Management System</title><content type='html'>I have just co-written a white paper that is now available through &lt;a href="http://www.brandon-hall.com/publications/lms_businessneeds/lms_businessneeds.shtml"&gt;Brandon Hall&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is the description of the paper - click the link if you would like to purchase it or stay tuned to my blog for further ideas and writings.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Imagine you've been given the job of researching and finding a suitable learning management system (LMS) for your company. Where do you start?&lt;br /&gt;&lt;br /&gt;Everyone knows that selecting the wrong LMS can have terrible financial repercussions and hurt the quality of your learning initiatives. What is often forgotten, though, is that selecting the RIGHT learning management system but implementing it poorly can be equally painful.&lt;br /&gt;&lt;br /&gt;This report, written by &lt;a href="http://www.brandon-hall.com/garywoodill/"&gt;Gary Woodill&lt;/a&gt;, Ed.D., director of Research and Analysis at Brandon Hall Research; David Fell, vice president of Business Development at Operitel Corporation; and Christopher Woodill, Vice President, Solutions and Strategy at Navantis Corporation, is the first in a four-part series on the process of implementing an enterprise LMS.&lt;br /&gt;&lt;br /&gt;A typical LMS can take months, if not a year or more, to implement and can cost hundreds of thousands of dollars. Getting it right is critical; getting it wrong can be a problem for both you and your business. Essentially, the process involves four stages:&lt;br /&gt;&lt;br /&gt;Stage 1: Planning and Evaluating Business Needs for an Enterprise LMS&lt;br /&gt;Stage 2: Purchasing an Enterprise LMS&lt;br /&gt;Stage 3: Implementing the Selected LMS&lt;br /&gt;Stage 4: Maintaining, Supporting, Operating, and Governing an LMS&lt;br /&gt;&lt;p&gt;This report focuses on Stage 1 and addresses the following:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Developing a business case for investing in a learning management system &lt;/li&gt;&lt;li&gt;Considering alternatives to an LMS &lt;/li&gt;&lt;li&gt;Articulating a vision and scope for the entire project, resulting in developing a “project charter” &lt;/li&gt;&lt;li&gt;Developing an implementation strategy and project management plan that includes presenting the business case, assessing the LMS's impact on the organization, and changing management strategy &lt;/li&gt;&lt;li&gt;Developing the communications and marketing plan for the project&lt;br /&gt;Identifying all stakeholders for an enterprise LMS &lt;/li&gt;&lt;li&gt;Conducting a requirements gathering exercise, including developing “use cases” for each business unit and group of stakeholders&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you have thoroughly carried out the above suggestions, then you are ready to prepare and send out an RFP, investigate products and vendors, and move toward purchasing a learning management system. It’s also important to note that getting this first stage right provides a firm foundation for success in all the later stages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1800691268311951688?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1800691268311951688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1800691268311951688' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1800691268311951688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1800691268311951688'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/11/best-practice-for-implementing-learning.html' title='Best Practices for Implementing a Learning Management System'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7632366918938359872</id><published>2008-11-19T20:07:00.003-05:00</published><updated>2008-11-19T20:41:52.058-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methodologies'/><category scheme='http://www.blogger.com/atom/ns#' term='Zachman Framework'/><title type='text'>Some thoughts on the Zachman Framework</title><content type='html'>&lt;div&gt;I have been doing some reading on the &lt;a href="http://www.zifa.com/"&gt;Zachman Framework &lt;/a&gt;in the context of some work we are doing with the government. The ZF is popular in government circles as an enterprise architecture framework and they routinely ask for experience using it within their RFPs, especially for roles such as technical architect or business analyst. Having had lots of work in the enterprise architecture space but none specifically using the Zachman Framework, I wanted to see for myself what it was about and understand how it could support my own needs in presenting strategic plans to a client. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 654px; CURSOR: hand; HEIGHT: 675px; TEXT-ALIGN: center" alt="" src="http://conferences.codegear.com/article/images/32216/3106figure1.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Having now read a few books and posts on the subject, here is my own reaction to it: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Written in 1987, it definately has that architectural ivory tower approach that assumes that if we could only document every explicit assumption in our enterprise we would have this perfectly functioning enterprises. Having worked in lots of different enterprises, I don't know any that actually lived up to this ideal and they functioned quite well despite not having every prescribed artifact nailed down.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I love the simplicity of the model: 6 roles and 6 interogatives. It's the simplicity that makes it "universal" - it's like saying any problem can be solved by combining asking questions and a planning/building life cycle. While I would say this is true, its also quite vague and doesn't provide a lot of specific techniques or approaches to enterprise architecture other than a method of organization. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;I like the approach in that its business centric and quite non-technical. I could quite easily explain the framework to a project manager, a business analyst and an industry stakeholder. You do not need an engineering degree to get the ideas here and the expertise is delegated to filling in the particular models. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;I really like the integrated approach that forces architects to really think about more than just code, servers, and technology. The framework puts a heavy emphasis on logistics, business cases, scheduling, business rules, and people. The "HOW" part of the framework is only 1/6 of the picture which I think is about right.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The concept of a normalized architecture, e.g. a unique spot for a piece of information is an interesting one but hard to accomplish in practical terms. In my experience, its definitely a good ideal - I have had too many cases where the requirements document, the data model and the network diagram are changed independently and they no longer match. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;One challenge with the organization of models in ZF is that they are very model focused instead of feature focused. In many cases, you want to organize your requirements, code, etc. by feature so that you can take it out - this seems inherently different to do in ZF because your feature is now spread out in 36 different buckets of artifacts. Trying to take a feature out or change it means finding it in your master universal schedule, your master universal network diagram, your master use cases, etc. (Ideally, you could automate the entire repository of requirements so you could slice and dice in multiple dimensions so that you could search your whole picture by "sliver")&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There is a certain religious zeal about this framework from some authors - the fundamentalist belief that if you can complete all the spots on the grid that you now have this nirvana requirements repository and we can all go home until the next change request. In real life of course, the nirvana never happens and you have to cut corners like crazy to get anything out the door. While this is a nice framework, in practice many medium to large organizations could not fill in every bucket down to every explicit assumption and maintain the repository with any execution speed. This is probably why this framework is popular amongst governments, large scale industries (aerospace for example) where you have years to gain value out of your architecture investment but not used by smaller or faster moving organizations.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There are some ways you can approach the ZF with an agile approach. &lt;a href="http://www.ddj.com/architect/184415821?cid=Ambysoft"&gt;Scott Ambler has a good article on this here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;In general, for a framework that evolved in the mid 80's, I was pleasantly suprised at how relevant it is in today's context. I could conceivably apply the same principles in some of the enterprise planning work I do today in very different technology contexts than what were around in 1987, e.g. portals, internet, rich client applications, data warehouses, etc. I could also see using it as a basis to analyze and document a very specific domain model instead of an entire enterprise. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7632366918938359872?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7632366918938359872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7632366918938359872' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7632366918938359872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7632366918938359872'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/11/some-thoughts-on-zachman-framework.html' title='Some thoughts on the Zachman Framework'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7510108333849250032</id><published>2008-09-19T21:51:00.002-05:00</published><updated>2008-09-19T21:58:29.969-05:00</updated><title type='text'>How Can You Vote for a VP Who Uses Yahoo Mail?!</title><content type='html'>Today, it was discovered that Sarah Palin's Yahoo account was hacked.  Various emails were discovered including government business.&lt;br /&gt;&lt;br /&gt;There has been speculation in the media that she was using Yahoo to conduct business so that she could avoid being under government freedom of information requests.&lt;br /&gt;&lt;br /&gt;http://news.yahoo.com/s/nf/20080918/tc_nf/61961&lt;br /&gt;http://wikileaks.org/wiki/Sarah_Palin_Yahoo_inbox_2008&lt;br /&gt;&lt;br /&gt;So my basic question is this: regardless of whether you want to vote for this woman because of her stance on abortion, moose hunting habits, etc. why would you EVER vote for some so security illiterate that she would use a yahoo mail account with a weak password for government business?  This is privacy 101 here - do we really want to trust this woman with the keys to nuclear codes, mission briefings, etc.?&lt;br /&gt;&lt;br /&gt;Someone should tell her it's probably not a good idea to store CIA documents on USB keys or leave unshredded documents in her garbage can while they're educating her on basic privacy management.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7510108333849250032?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7510108333849250032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7510108333849250032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7510108333849250032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7510108333849250032'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/09/how-can-you-vote-for-vp-who-uses-yahoo.html' title='How Can You Vote for a VP Who Uses Yahoo Mail?!'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1957462394505665982</id><published>2008-09-15T16:51:00.001-05:00</published><updated>2008-09-15T16:53:48.485-05:00</updated><title type='text'>Hug A Developer</title><content type='html'>I just love this video...&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AcGSagA" type="application/x-shockwave-flash" width="640" height="390" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1957462394505665982?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1957462394505665982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1957462394505665982' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1957462394505665982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1957462394505665982'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/09/hug-developer.html' title='Hug A Developer'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6968667014958365734</id><published>2008-08-25T20:38:00.008-05:00</published><updated>2008-08-25T20:42:51.332-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='CIBC'/><category scheme='http://www.blogger.com/atom/ns#' term='Banking'/><title type='text'>Good Example of How Tricky Security Is - Even for Banks</title><content type='html'>I signed up for online visa account access today at CIBC, and found a basic security flaw in their registration process.&lt;br /&gt;&lt;br /&gt;Here is their form:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5238634992238056498" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/SLNexRxH1DI/AAAAAAAAAJA/8HCi4H57w68/s400/ScreenHunter_01+Aug.+25+21.38.gif" border="0" /&gt;&lt;br /&gt;The flaw is the last question - the previous balance. The flaw is a simple one - if you call up VISA on the phone and give them the information above, the phone system provides your previous month's balance!&lt;br /&gt;&lt;br /&gt;It just goes to show that even a security conscious bank can make easy mistakes when it comes to security and the moral of the story is a simple lesson: make sure you analyze all your access channels for possible leakage of authenticating information before you demand it online.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6968667014958365734?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6968667014958365734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6968667014958365734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6968667014958365734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6968667014958365734'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/08/good-example-of-how-tricky-security-is.html' title='Good Example of How Tricky Security Is - Even for Banks'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_V5m6b8L54Jo/SLNexRxH1DI/AAAAAAAAAJA/8HCi4H57w68/s72-c/ScreenHunter_01+Aug.+25+21.38.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1151552233670770682</id><published>2008-08-25T07:46:00.008-05:00</published><updated>2008-08-25T16:30:53.585-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Earth'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Live Earth vs. Google Earth - Which One Is Better?</title><content type='html'>&lt;strong&gt;I decided to run a comparison between Google Earth and Live Earth. Here are some of my findings. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Google Earth runs only as a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;separate&lt;/span&gt; executable. Live Earth runs as an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ActiveX&lt;/span&gt; control within the live maps interface. Microsoft's approach is more integrated but it also means that you cannot run the application full-screen.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Google Earth seems to find locations better especially when they are vague. For example, I typed in "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;yonge&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;dundas&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;toronto&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ontario&lt;/span&gt;" and Google Earth found the intersection. Live Earth &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;couldnt&lt;/span&gt; find it and simply suggested businesses which weren't even at that location.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Google Earth's ability to handle misspelled words is much better as well. For example, I typed in "young street &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;toronto&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ontario&lt;/span&gt;" and it was still able to find &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Yonge&lt;/span&gt; Street as an exact match. Microsoft Live Earth could not find it.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Microsoft Live Earth splits the search box between businesses and locations. The search assumes that you will split the business name and location into the two boxes. For example, I typed in "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;eaton&lt;/span&gt; centre &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;toronto&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;ontario&lt;/span&gt;" into the business box and it asked me for a location. In Google Earth, typing in the same search query finds me the exact match.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The search box in Google Earth is on the left hand side. In Microsoft Live Earth the search box is at the top of the screen. This makes a big difference if you are using a wide screen monitor. Microsoft's map ends up being very wide. Google Earth's map ends up being nice and square.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Microsoft's satellite pictures seem to be more up to date and detailed. Looking at downtown Toronto, the Google Earth satellite picture shows certain buildings under construction which I know are now complete while the Microsoft picture shows them finished. See also the picture of Monarch Park below and you'll notice a significant difference in picture quality and resolution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;&lt;strong&gt;Microsoft Live Earth&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5238459054841859618" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_V5m6b8L54Jo/SLK-wX5HDiI/AAAAAAAAAIY/2AJZB1VebHQ/s400/ScreenHunter_02+Aug.+25+10.14.gif" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;Google Earth&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;img id="BLOGGER_PHOTO_ID_5238459336150738130" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/SLK_Av2X5NI/AAAAAAAAAIg/O7bCBX-I6KQ/s400/ScreenHunter_03+Aug.+25+10.14.gif" border="0" /&gt;&lt;br /&gt;Both Microsoft Live Earth and Google Earth have 3D modeled buildings. However, Microsoft Live Earth's are vastly superior both in number and in quality. Google Earth shows about 5-10 buildings in Toronto where Microsoft shows hundreds.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;&lt;strong&gt;Google Earth: Not Much of a City Scape&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;img id="BLOGGER_PHOTO_ID_5238459736472185298" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_V5m6b8L54Jo/SLK_YDKcadI/AAAAAAAAAIo/54HyOb5oOho/s400/ScreenHunter_01+Aug.+25+09.25.gif" border="0" /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;Live Earth: Now That's a Downtown!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;img id="BLOGGER_PHOTO_ID_5238460225547249266" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_V5m6b8L54Jo/SLK_0hHBpnI/AAAAAAAAAI4/P5u8NdByJzQ/s400/ScreenHunter_02+Aug.+25+09.29.gif" border="0" /&gt;&lt;br /&gt;&lt;p&gt;Both applications take up a large amount of RAM to run. Looking at Task Manager, Google Earth was taking up to 800 megabytes of RAM and Internet Explorer was taking up to 600 &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;megabytes&lt;/span&gt;. I assume this must be for caching of data.&lt;/p&gt;&lt;p&gt;For smaller towns, both applications seem to be equally poor. For example, searching for Port Hope, Ontario yields a poor grainy image in both cases likely because the high resolution satellite imagery is simply not available.&lt;/p&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;&lt;strong&gt;Google Earth&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;img id="BLOGGER_PHOTO_ID_5238459907784176210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/SLK_iBWZ8lI/AAAAAAAAAIw/DrLVsPU25mE/s400/ScreenHunter_01+Aug.+25+09.52.gif" border="0" /&gt;&lt;br /&gt;&lt;p&gt;Google Earth is much richer in terms of content overlays and more flexible in being able to turn them on and off. My personal favourite is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Panaromio&lt;/span&gt; overlay which &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;geo-maps&lt;/span&gt; personal photographs to locations from hundreds of thousands of users around the world.&lt;/p&gt;&lt;p&gt;Microsoft Live Earth has a feature called "Birds Eye" which does a map of photographs to the map taken from different angles. This feature is not available at all in Google Earth.&lt;/p&gt;&lt;p&gt;Microsoft Live Earth has very nice traffic reporting features. I was able to check the 401 highway in Toronto, see the busiest spots to avoid and also it provides construction updates as well. Google Earth does not have this feature at all.&lt;/p&gt;&lt;p&gt;Both applications provide directions. However, Google Earth has a feature that allows you to "play" the route. The camera will follow the route through the directions showing you in 3D how to drive to your destination.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1151552233670770682?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1151552233670770682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1151552233670770682' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1151552233670770682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1151552233670770682'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/08/live-earth-vs-google-earth-which-one-is.html' title='Live Earth vs. Google Earth - Which One Is Better?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V5m6b8L54Jo/SLK-wX5HDiI/AAAAAAAAAIY/2AJZB1VebHQ/s72-c/ScreenHunter_02+Aug.+25+10.14.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-365721828648594626</id><published>2008-05-20T19:02:00.004-05:00</published><updated>2008-05-20T19:50:00.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Breaking the Law of Triple Constraints</title><content type='html'>In classical project management methodology, there is a concept called the Law of Triple Constraints:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://iowabiz.typepad.com/my_weblog/images/2007/04/27/tripleconstraint_2.gif" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;The law states that as two of the constraints are changed, there must be an equal change &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;on t&lt;/span&gt;he third constraint while still maintaining the same level of quality.&lt;br /&gt;&lt;br /&gt;For example, if scope is increased and schedule decreased, this MUST have an impact on the number of resources required. If resources are decreased, this MUST have an impact on either scope decreasing or schedule increasing.&lt;br /&gt;&lt;br /&gt;However, in practice, this law is not really a law at all, or rather it is based on idealistic assumptions.&lt;br /&gt;&lt;br /&gt;These assumptions are as follows:&lt;br /&gt;&lt;br /&gt;1. The process for running the project has been 100% optimized.&lt;br /&gt;&lt;br /&gt;2. The process for running the project is 100% known and not subject to any possible innovation to improve the picture.&lt;br /&gt;&lt;br /&gt;3. Talent on the project is not changeable or all talent is the same.&lt;br /&gt;&lt;br /&gt;4. The amount of management is precisely what is required to manage the project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The reality is that in most projects these assumptions are simply not true. In addition, this model promotes a mechanistic, deterministic approach to managing projects that lacks an hope for innovation, efficiency or reduction in management.&lt;br /&gt;&lt;br /&gt;Here are ways you as a stakeholder or project manager can "break" the Law of Triple Constraints without sacrificing quality:&lt;br /&gt;&lt;br /&gt;1. Re-examine your estimates and make sure they are not overly padded. Some contingency is always required in order to handle unexpected events. However, on a $1 million project, the difference between 10% contingency and 30% contingency is $200K - is it really necessary?&lt;br /&gt;&lt;br /&gt;2. Challenge the team to be innovative about process, documentation, testing, builds, etc. There are better ways to doing any project - no team is 100% optimized. I've seen simple changes such as using automated unit testing that makes massive differences in effort and actually improves quality. Depending on the type of project, there is innovation to be had.&lt;br /&gt;&lt;br /&gt;3. Do you really need to build something or can it be bought?&lt;br /&gt;&lt;br /&gt;4. Be ruthless about gold-plating on all sides. Developers, stakeholders, creative directors, etc. all like to add changes, rounds of revisions, additional documents, new features, etc. and that extra 10-20% makes a difference over the course of a large project.&lt;br /&gt;&lt;br /&gt;5. Improve communication and lower documentation overhead. For every 300 page use case document you have to write, edit, review and then update make sure they are necessary &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;artifacts&lt;/span&gt; and they have value. I was on a project once where the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;wire frame&lt;/span&gt; document cost $100K to produce!&lt;br /&gt;&lt;br /&gt;6. Make sure you have the right talent for the job. For hard problems, you may think that having your junior flash developer be your technical architect will save you some money but in my experience the opposite is true - get the best talent you can possibly afford because they pay for themselves in much higher value than the additional cost in salary. For easy jobs, don't take your technical architect and make him your excel macro monkey - it will frustrate him/her and is a waste of their talent.&lt;br /&gt;&lt;br /&gt;7. Get Creative! On every project, there are ways to innovate. It may be in the implementation of a particular module. It may be that you re-examine the problem you're solving and come up with something more elegant than when you originally built your plan.&lt;br /&gt;&lt;br /&gt;8. Make your team &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;entrepreneurial&lt;/span&gt;. Encourage open communication, risk taking, fast decision making, and low document overhead. Have the right level of process and no more than necessary. Give everyone ownership in the project and let them understand the big picture.&lt;br /&gt;&lt;br /&gt;9. A simple tip: make sure your team members know deadlines! It sounds really dumb, but I have noticed a big difference in teams where they can see the entire plan and understand the context of deadlines than if a person is just handed a task piecemeal and told to complete it b&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;lind&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I've seen project plans that are bloated and I have seen some that are way too lean. Starting with bloat and cutting down I find is easier to manage than starting lean and trying to increase to handle the bare minimum requirements. Start with a robust, conservative and full process plan and then take a good look at it and see if there are some trimmings to be had.&lt;br /&gt;&lt;br /&gt;One final note - this is not a panacea and in my experience, you can achieve a savings of somewhere between 0-20%. Don't expect that you can cut your project timeline in half. However, on a $1 million dollar project that's still $100-200K and on a 6 month timeline that's still a month of time saved.&lt;br /&gt;&lt;br /&gt;As a project manager, you can choose what you do in terms of managing stakeholders' expectations. Typically, I use a conservative estimate to start and then I try to get innovative once I'm executing. If the risks of being creative and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;entrepreneurial&lt;/span&gt; pay off, then I look like a rock star with a project ahead of schedule, a happy team and satisfied customers.&lt;br /&gt;&lt;br /&gt;But if you are a project manager who simply adheres to a conservative approach and obeys the Law of Triple Constraints like dogma, then you will be missing opportunities to innovate!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-365721828648594626?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/365721828648594626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=365721828648594626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/365721828648594626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/365721828648594626'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2008/05/breaking-law-of-triple-constraints.html' title='Breaking the Law of Triple Constraints'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7397882974773827226</id><published>2007-10-31T07:48:00.000-05:00</published><updated>2007-10-31T08:03:58.782-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><title type='text'>With $15B in Valuation Can Facebook Now Afford Some Quality Assurance?</title><content type='html'>I find it amusing that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Facebook&lt;/span&gt; despite its high valuation and increased interest from Microsoft is still amateurish at times. One of the areas I find is in usability - there are some basic issues that any modern (or even 10 year old site) would handle better than &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;facebook&lt;/span&gt; but haven't been addressed as the site grows and scales.&lt;br /&gt;&lt;br /&gt;Here are a few examples!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Group Management&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One of the areas that is really week in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Facebook&lt;/span&gt; is group management. It seems that the whole assumption around being a group admin is that your group has about a dozen people.&lt;br /&gt;&lt;br /&gt;For example, here is a simple but telling bug - try to remove a member in your group. About 2 months ago, this feature didn't seem to work at all. It now works, but there is no way to search for members! So in our case we have 1900+ members, and if we want to remove or block a member we have to scroll through 70 pages worth of names!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sorting of Lists&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Another example is the basic way that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Facebook&lt;/span&gt; sorts lists. By default your friends list is sorted in alphabetical order by last name. If you do a search for Classmates, the sort order is the same - but this is not always what is needed. For example, I want to know recently updated Classmates because I've already scanned the list previously. There is no easy way to do this in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Facebook&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Paging of Lists&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Another basic usability issue - paging through lists doesn't actually page properly! If you click next, you'll see people who were on the previous page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Inviting People to Groups&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In groups, you can invite your friends to join. In previous "versions" of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Facebook&lt;/span&gt;, it would only show friends in the invite list who you hadn't previously invited. Now it seems to show all your friends but if you click on the friend who has been previously been invited, it pops up a warning and doesn't allow the action. How is an improvement?&lt;br /&gt;&lt;br /&gt;All of these are basic usability issues related to scale - what works for a friends list of 20-30 people doesn't scale as an interface if you have 2000 friends, group members, etc. But as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Facebook&lt;/span&gt; tries to be a "platform" it needs to be able to address these concerns - these are pretty basic and most applications whether Web 2.0 or traditional client server have basic functions for sorting, searching and filtering lists!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7397882974773827226?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7397882974773827226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7397882974773827226' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7397882974773827226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7397882974773827226'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/10/with-15b-valuation-you-might-think.html' title='With $15B in Valuation Can Facebook Now Afford Some Quality Assurance?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-4579060394502561050</id><published>2007-10-16T07:45:00.000-05:00</published><updated>2008-12-12T22:40:35.699-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Are AJAX enabled forms really worth the trouble?</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_V5m6b8L54Jo/RxSyswo2sLI/AAAAAAAAAFo/g6zXPOC8sVA/s1600-h/ScreenHunter_01+Oct.+16+08.45.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5121915158267343026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_V5m6b8L54Jo/RxSyswo2sLI/AAAAAAAAAFo/g6zXPOC8sVA/s400/ScreenHunter_01+Oct.+16+08.45.gif" border="0" /&gt;&lt;/a&gt; We have just launched our new &lt;a href="https://www.sickkidsfoundation.com/cards/"&gt;Tribute Application &lt;/a&gt;for creating customized cards for donations in honour or memory of someone you love.&lt;br /&gt;&lt;br /&gt;We used Microsoft .NET and the new AJAX library for development of our forms. Our developer teams became enthusiastic supporters of using AJAX styled controls for creating a sense of immediacy in the interface.&lt;br /&gt;&lt;br /&gt;However, what was interesting was the new set of bugs that cropped up simply because of now using AJAX controls. Here is an example: the above form has two controls for postal code and zip code and based on which state or province is picked, we flip between them so that you can have client side validation, proper field lengths, etc. Sounds simple enough, but we went through quite a bit of work and bug fixing to make this work.&lt;br /&gt;&lt;br /&gt;Here are a few bugs that we found in the process as examples:&lt;br /&gt;&lt;br /&gt;1. When you click the back button the right control isn't always displayed.&lt;br /&gt;2. We had styling/layout issues in Mozilla.&lt;br /&gt;3. When you picked a state and then switched to province the value would disappear.&lt;br /&gt;4. The switching of state was generally quite slow on some clients.&lt;br /&gt;&lt;br /&gt;In the "old days", the interface would have been really simple - a text box submitted to a server side script. Very few presentation layer bugs because there wasn't really anything going on in the presentation.&lt;br /&gt;&lt;br /&gt;So the question becomes - is it really worth it? For Yahoo Mail it might be, but for an average data entry form is it really that crucial?&lt;br /&gt;&lt;br /&gt;Now that we're planning phase 2 on our project, I would be much more cautious about going gung-ho on AJAX simply because it dramatically increases the testing/bug fixing time for what amounts to a simple user interface convenience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-4579060394502561050?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/4579060394502561050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=4579060394502561050' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4579060394502561050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4579060394502561050'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/10/is-ajax-enabled-forms-really-worth.html' title='Are AJAX enabled forms really worth the trouble?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V5m6b8L54Jo/RxSyswo2sLI/AAAAAAAAAFo/g6zXPOC8sVA/s72-c/ScreenHunter_01+Oct.+16+08.45.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-9170619403305282029</id><published>2007-09-21T07:13:00.000-05:00</published><updated>2007-09-21T07:14:06.709-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Software Development Metaphors</title><content type='html'>There are lots of discussions on Software Development "methodologies". They are codified sets of practices on how to do software development "correctly". When you get down to the root of each of these methodologies, the root of all of them is a metaphor. Before you adopt a methodology such as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XP&lt;/span&gt;, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Scrum&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;RUP&lt;/span&gt;, Software Factory, etc. you should really ask yourself what metaphor you believe your particular software development practices fit into and what metaphors fit your particular organization's culture. If you start there instead of at the "here is my fancy new toolbox of processes" then adoption will be higher.&lt;br /&gt;&lt;br /&gt;So here is a list of popular metaphors used to explain the practice of creating software...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#6633ff;"&gt;&lt;strong&gt;The Traditional Software Development Metaphors&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Software Development as Factory&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Heavy emphasis on frameworks (assembly line) and components (widgets)&lt;/li&gt;&lt;li&gt;Use in large scale development projects (hundreds of developers) or highly distributed projects (outsourced)&lt;/li&gt;&lt;li&gt;Highly centralized control of processes, tools, etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Development as Engineering&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Heavy focus on estimation techniques&lt;/li&gt;&lt;li&gt;Fixes made in planning are less expensive than after “construction” has started.&lt;/li&gt;&lt;li&gt;Highest project management priority is being “in control”.&lt;/li&gt;&lt;li&gt;Software development as a science, e.g. objective, measurable.&lt;/li&gt;&lt;li&gt;Belief that Software Development is an immature or imprecise version of engineering.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Development as Model/Architecture&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Architect as “GOD”&lt;/li&gt;&lt;li&gt;Code is simply implementation of a model&lt;/li&gt;&lt;li&gt;If the software &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;doesn&lt;/span&gt;’t work, either the model is wrong or the code &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;doesn&lt;/span&gt;’t implement the model properly.&lt;/li&gt;&lt;li&gt;Tooling can automatically generate application from the model.&lt;/li&gt;&lt;li&gt;Software models a business, a process, etc. in design. Goal of software is to accurately reflect real life processes.&lt;/li&gt;&lt;li&gt;Need specialized modeling languages, expertise, and tools&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Development as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Workflow&lt;/span&gt;/Process&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Projects as repeatable processes.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Workflow&lt;/span&gt; is defined up front, and people are compartmentalized.&lt;/li&gt;&lt;li&gt;Emphasis on distribution, encapsulation and hand-off.&lt;/li&gt;&lt;li&gt;Project managers are process champions – they make sure the rules are followed.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These metaphors have formed the bedrock of software development. They represent the traditional way of viewing software development as well as project management in general. They have enabled a whole toolbox of techniques, tools and templates for managing projects and software development. &lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;The Radical Software Development Metaphors&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;These metaphors have become in vogue thanks to various agile methodologies, reactions against the traditional view of software and frankly a lot of failures for the traditional metaphors to come to grips with the complexities of creating software.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Software Development as Craft/Voodoo/Martial Art&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Focus on simplicity, elegance, and craftsmanship&lt;/li&gt;&lt;li&gt;Toolbox approach&lt;/li&gt;&lt;li&gt;Apprentice / Master / Guru model&lt;/li&gt;&lt;li&gt;Software is highly dependent on people&lt;/li&gt;&lt;li&gt;Software “Design” provides guide to picking solutions&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Development as Game Playing&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Games are processes without the prescription&lt;/li&gt;&lt;li&gt;Games can be open or closed, cooperative or competitive&lt;/li&gt;&lt;li&gt;Rules of the game are enforced, but outcome is unknown&lt;/li&gt;&lt;li&gt;Games also include collaborative activities such as sports, playing music, dance, etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Development as Book Writing/Composition/Poetry&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Iteration, drafts, reviews, etc.&lt;/li&gt;&lt;li&gt;Focus on creativity within an established structure.&lt;/li&gt;&lt;li&gt;Objective is known, but product is not well defined.&lt;/li&gt;&lt;li&gt;Challenges in forcing creative process into rigid scope, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;time lines&lt;/span&gt; and budget are recognized. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Development as Learning/Experiment/Invention&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Modeling in software is about learning&lt;/li&gt;&lt;li&gt;Documentation, requirements gathering is a means to collective learning&lt;/li&gt;&lt;li&gt;Focus on establishment of common language&lt;/li&gt;&lt;li&gt;Prototyping, experiment, measuring as a way to learn&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Which one fits your culture, your organization needs, and your &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;skill set&lt;/span&gt;? If you're a start-up company, then the software factory metaphor might not be the best fit. However, if you're building printer drivers with third party &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;outsourcers&lt;/span&gt; in India, then perhaps it is the right model. &lt;/p&gt;&lt;p&gt;If you start with basic metaphors, the toolbox and methodologies such as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;RUP&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;XP&lt;/span&gt;, Scrum, Waterfall, etc. start to make more sense - they're expressions of the underlying metaphor. In addition, if you want to evangelize a new software development methodology (for example, those who are trying to evangelize the use of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;XP&lt;/span&gt; in a traditional &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;RUP&lt;/span&gt; organization) starting with a discussion around metaphors and basic understanding of software development might help the discussion, especially with non-technical users.&lt;/p&gt;&lt;p&gt;One last suggestion - this discussion is a great interview topic for Project Managers. If you want to hire an "Agile" PM, then start the interview with the list of metaphors and ask them which one they believe fits their style of working. If they pick one metaphor, then get them to explain how their PM toolbox (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;GANTT&lt;/span&gt; charts, risk matrices, status reports, etc.) fit into the metaphor. The traditional toolbox can be used in an agile context if the underlying metaphor is right - there are ways to use MS Project even if you believe that Software Development is more like writing a book then building a bridge.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-9170619403305282029?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/9170619403305282029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=9170619403305282029' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/9170619403305282029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/9170619403305282029'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/09/software-development-metaphors.html' title='Software Development Metaphors'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3374209877508224202</id><published>2007-08-27T19:44:00.001-05:00</published><updated>2007-08-27T19:44:32.278-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='Digibarn'/><title type='text'>The DigiBarn and Facebook - A Killer Way to Meet Old School Geeks?</title><content type='html'>&lt;a href="http://www.digibarn.com/collections/systems/trs80-model100/DSC03043.JPG"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 400px; CURSOR: hand" alt="" src="http://www.digibarn.com/collections/systems/trs80-model100/DSC03043.JPG" border="0" /&gt;&lt;/a&gt; The &lt;a href="http://www.digibarn.com/"&gt;Digibarn&lt;/a&gt; is a museum of old computers. They have a great virtual collection of every computer that I've ever owned and then some.&lt;br /&gt;&lt;br /&gt;Here is just a small sample of weird computer systems I've owned or used extensively over the years: &lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.digibarn.com/collections/systems/coleco-adam/index.html"&gt;Coleco Adam&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digibarn.com/collections/systems/ti99-4a-silver/index.html"&gt;TI 99/4a&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digibarn.com/collections/systems/trs80-model100/index.html"&gt;Model 100&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digibarn.com/collections/systems/ibm-pcjr/page_01.htm"&gt;PC JR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digibarn.com/collections/systems/commodore-pet2001/index.html"&gt;Commodore PET&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Facebook currently has lots of curious personality matching tests such as "Which Disney Princess Are You?", Celebrity matching applications and personality comparison tests. &lt;/p&gt;&lt;p&gt;So here is a killer app idea for meeting old school geeks - why not combine the power of the Digibarn with the social network for Facebook to create a profile based on computers you owned over the past 20 years? Imagine having a date with someone who also owned a TI 99/4A, just like you? Imagine the nostalgic conversations about GOSUB, sprites and tape drives you could have over dinner?&lt;/p&gt;&lt;p&gt;At least it would be better than that Zombie Facebook application floating around these days...&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3374209877508224202?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3374209877508224202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3374209877508224202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3374209877508224202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3374209877508224202'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/digibarn-and-facebook-killer-way-to.html' title='The DigiBarn and Facebook - A Killer Way to Meet Old School Geeks?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7963359390920797158</id><published>2007-08-23T07:01:00.000-05:00</published><updated>2008-12-12T22:40:35.907-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Governance'/><title type='text'>Take that First Step Toward Becoming a Legend (in IT Governance)!</title><content type='html'>&lt;div&gt;I received this spam from Oracle the other day and I nearly fell off my chair laughing about how marketing people can really get things wrong if they try to apply consumeristic jingoisms to IT related products:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_V5m6b8L54Jo/Rs13xwcCjlI/AAAAAAAAAFA/NQ6M-iE34cM/s1600-h/ScreenHunter_01+Aug.+23+08.01.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5101865649580445266" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_V5m6b8L54Jo/Rs13xwcCjlI/AAAAAAAAAFA/NQ6M-iE34cM/s400/ScreenHunter_01+Aug.+23+08.01.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do people in "IT Governance" (whatever that is supposed to mean these days) really need such a confidence boost that they need to be pandered to by suggestions that the systems, memos and processes they put in place will make them &lt;em&gt;"legends"&lt;/em&gt; and their companies &lt;em&gt;"Admired by your industry, as a leader in IT governance"&lt;/em&gt;?&lt;br /&gt;&lt;br /&gt;And as an executive, imagine if the first impression of your company's brand was a "leader in IT governance" or that the "company's legacy" was really good IT governance?&lt;br /&gt;&lt;br /&gt;I hope I never work for that company... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7963359390920797158?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7963359390920797158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7963359390920797158' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7963359390920797158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7963359390920797158'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/take-that-first-step-toward-becoming.html' title='Take that First Step Toward Becoming a Legend (in IT Governance)!'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V5m6b8L54Jo/Rs13xwcCjlI/AAAAAAAAAFA/NQ6M-iE34cM/s72-c/ScreenHunter_01+Aug.+23+08.01.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6079080931801805523</id><published>2007-08-21T21:59:00.000-05:00</published><updated>2007-08-21T22:24:05.035-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Best Logging Strategy using Microsoft Enterprise Library?</title><content type='html'>The &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480453.aspx"&gt;Microsoft Enterprise Library&lt;/a&gt; has a really good &lt;a href="http://msdn2.microsoft.com/en-us/library/ms998162.aspx"&gt;Logging Application Block&lt;/a&gt; that allows you to make your logging infrastructure configurable. By simply typing in the following code:&lt;br /&gt;&lt;br /&gt;Logger.Write("log this!");&lt;br /&gt;&lt;br /&gt;you can log to a destination configured in your config file.&lt;br /&gt;&lt;br /&gt;The Microsoft Enterprise Library out of the box provides the following destinations for logging messages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Email &lt;/li&gt;&lt;li&gt;File &lt;/li&gt;&lt;li&gt;Database &lt;/li&gt;&lt;li&gt;Message Queue &lt;/li&gt;&lt;li&gt;Text File &lt;/li&gt;&lt;li&gt;WMI Event &lt;/li&gt;&lt;li&gt;Custom location &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I took our web site and our main global error handler and did a dump routine of all exceptions to the log and it worked great. But the discussion in our team arose - where should we log? Here are some of our ideas as we debated the issue: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;The least error prone seems to be the flat file.   The custom location seems the worst option simply we would hope that our proprietary code is less tested in less real world scenarios than Microsoft's Enterprise Library components.&lt;/li&gt;&lt;li&gt;The idea of logging to the database is attractive from a reporting perspective, but everyone on the team felt like it was risky given that the most typical scenario for an error in the application itself was a database related error.  I suppose if we had the logging database seperate from our application database then this would reduce the risk, but we don't have the resources for such a move, so if our application were to kill the database it would take down any logging sources there as well.&lt;/li&gt;&lt;li&gt;Even with the flat file, it is possible that it will fail.  A simple scenario for it failing would that the file is read-only or the ASPNET process doesn't have permission to access the file.  So we need at least two logging mechanisms to provide redundancy.  The Enterprise Library allows for this - you can configure more than one listener for every log message being written.&lt;/li&gt;&lt;li&gt;Our second challenge with using flat files is that they no provide a notification mechanism like email.  So if there is an exception, the file has to be constantly monitored or periodically checked.  Therefore, combining an email message and a flat file backing store seemed like a decent combination.  If the email fails, then we may not know for a day or two but at least the error will be logged.  If the file fails, then at least we'll get the email.&lt;/li&gt;&lt;li&gt;The event log is not a bad option either and its generally easier to monitor as most monitoring tools already handle event log monitoring.  The one issue with using the event log that I have found is that if you use an event log source that doesn't exist the logging will fail without any notification to you.  Your error will simply disappear and won't be logged.  You can use any existing EventLog source or create a new one in the registry for your custom logging needs.  In addition, you have to make sure that the ASPNET account has permission to write to the event log.  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;That's where we are at so far - its not quite bullet-proof yet but its getting there.  If you have any further suggestions or thoughts, leave them as a comment!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6079080931801805523?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6079080931801805523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6079080931801805523' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6079080931801805523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6079080931801805523'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/best-logging-strategy-using-microsoft.html' title='Best Logging Strategy using Microsoft Enterprise Library?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6090120136194401692</id><published>2007-08-21T21:39:00.000-05:00</published><updated>2009-05-29T17:02:45.947-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video Games'/><category scheme='http://www.blogger.com/atom/ns#' term='Arcade'/><title type='text'>Arcade Game Prices are Finally Catching Up With Inflation</title><content type='html'>I've been playing arcade coin-op games since I was a little kid. When I started playing these games, they were 25 cents a throw. If you were good at them of course your quarter could go a long way. For example, there was a game called &lt;a href="http://en.wikipedia.org/wiki/Wonder_Boy_(video_game)"&gt;WonderBoy&lt;/a&gt; that I could play for about 45 minutes on one quarter.  &lt;br /&gt;  &lt;br /&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://upload.wikimedia.org/wikipedia/en/2/2d/Wonder_boy_platform.gif" /&gt;   &lt;br /&gt;  &lt;br /&gt;Somehow despite 20 years of inflation, the price of an arcade game was stuck at 25 cents. Eventually, the prices went up by multiple credits being required, especially for newer games. The current arcade games seem to cost on average $1-2 per contest.   &lt;br /&gt;  &lt;br /&gt;But if you went to the back of the arcade, you could still typically find an old &lt;a href="http://en.wikipedia.org/wiki/Galaga"&gt;Galaga&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Gyruss"&gt;Gyruss&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Pacman"&gt;Pacman&lt;/a&gt; sitting in the back still running for a quarter a throw.  &lt;br /&gt;  &lt;br /&gt;Well not so fast anymore - I was in one of the last arcades left in the city and these older games have now been replaced by emulators which allows the arcade owner to change the price and also house multiple video games in a single console. This makes sense - given the size in memory of any of these old video games, you could house hundreds of them on a single memory chip.  &lt;br /&gt;  &lt;br /&gt;So I had fun today playing the old favourites, but I'm a bit disappointed that it cost me 50 cents. I guess after 20 years of dwindling attendance and increasing costs, the prices have finally gone up.  &lt;br /&gt;  &lt;br /&gt;Thankfully, I have &lt;a href="http://mamedev.org/"&gt;MAME&lt;/a&gt; which allows me to play any old video game for free!    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6090120136194401692?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6090120136194401692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6090120136194401692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6090120136194401692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6090120136194401692'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/arcade-game-prices-are-finally-catching.html' title='Arcade Game Prices are Finally Catching Up With Inflation'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7912000647026201865</id><published>2007-08-17T07:35:00.000-05:00</published><updated>2007-08-17T07:43:51.884-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Is Google Analytics Having Trouble Keeping Up?</title><content type='html'>Since I started this blog, I have been using Google Analytics to measure traffic to the site.  In general, its a fabulous service and works really well, until recently.&lt;br /&gt;&lt;br /&gt;I've noticed that in the past month or so, Google Analytics seems to have trouble keeping up with the traffic.  I've noticed that the numbers reported are lower than expected and stay that way for 1-2 days and then as presumably the engine crawls through the right logs in queue, it catches up.&lt;br /&gt;&lt;br /&gt;One way to tell for sure whether you're having a similar problem is compare your Google Analytics numbers to your Ad Sense numbers.  Ad Sense seems to be more accurate and is updated in real time.  Google Analytics is queue based and so tends to need some time to catch up.  I've found in recent days that Ad Sense gives me a better indication of short term stats than Analytics.&lt;br /&gt;&lt;br /&gt;For my blog, this is not a huge problem.  But this is yet again a mark against the "software as a service" model - would you want to trust your corporate infrastructure to a queue in the cloud that can get bogged down because of an influx of unexpected growth?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7912000647026201865?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7912000647026201865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7912000647026201865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7912000647026201865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7912000647026201865'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/google-analytics-having-trouble-keeping.html' title='Is Google Analytics Having Trouble Keeping Up?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5114864224164484208</id><published>2007-08-13T23:58:00.000-05:00</published><updated>2008-12-12T22:40:36.098-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Online Advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Ad Words and Negative Content</title><content type='html'>The great site &lt;a href="http://www.blogger.com/www.worsethanfailure.com"&gt;Worse Than Failure&lt;/a&gt; had a &lt;a href="http://worsethanfailure.com/Articles/This-Juxtaposition-In.aspx"&gt;few images today of examples &lt;/a&gt;where legitimate ads were being shown side by side with negative content:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_V5m6b8L54Jo/RsE24z1nTwI/AAAAAAAAAE4/eKeI5K6yiWo/s1600-h/colgate.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5098416602775768834" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/RsE24z1nTwI/AAAAAAAAAE4/eKeI5K6yiWo/s400/colgate.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Having ad sense on my blog, I have noticed the same thing. I wrote a couple &lt;a href="http://chriswoodill.blogspot.com/2007/03/what-happened-with-nations-tax-software.html"&gt;posts&lt;/a&gt; on the failure of Canada's tax software, and if you go to this post the ads displayed are for tax software! &lt;br /&gt;&lt;br /&gt;Isn't this a pretty basic requirement for online advertising, e.g. don't put my ad for Levi's Jeans on a web page where the content is "I hate Levi's Jeans!"? Why after 10+ years of online advertising has the experts at Google and others figured out how to targets ads to the right content. In my example, the right ads would be those marketing to people reading about the failures of the tax system, e.g. tax lawyers, H&amp;amp;R block, etc. and not tax software providers.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://img.worsethanfailure.com/Images/200708/error"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5114864224164484208?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5114864224164484208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5114864224164484208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5114864224164484208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5114864224164484208'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/ad-words-and-negative-content.html' title='Ad Words and Negative Content'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_V5m6b8L54Jo/RsE24z1nTwI/AAAAAAAAAE4/eKeI5K6yiWo/s72-c/colgate.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7478220779228462441</id><published>2007-08-13T22:37:00.000-05:00</published><updated>2007-08-13T23:10:50.280-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Project Planning in an Agile Project</title><content type='html'>Tate &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Stuntz&lt;/span&gt; has an &lt;a href="http://www.techdarkside.com/?p=127"&gt;interesting post on his blog &lt;/a&gt;arguing that Project Plans are obsolete and hard to maintain when doing Agile projects. In my experience on agile projects, project planning and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Gantt&lt;/span&gt; chart making definitely has to change, but there are still ways I think you can make MS Project and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Gantt&lt;/span&gt; charts work for you in an agile context. Here are my recommendations based on my experience:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Learn to use MS Project efficiently (see my &lt;a href="http://chriswoodill.blogspot.com/2007/06/how-to-use-microsoft-project.html"&gt;previous post &lt;/a&gt;for recommendations). I've seen &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PM's&lt;/span&gt; take 2 weeks to build a project plan - if this is you then trying to work this way in a 2 week iteration cycle means you're not moving fast enough. You have to be at the point where you could re-boot your project plan in a matter of hours so that you can adjust quickly.&lt;/li&gt;&lt;li&gt;Use MS Project for planning and not for tracking. If you're working with short iteration cycles, you'll see improved tracking by simply management by walking around. In addition, measuring project velocity is more valuable than percentage complete since in an Agile project &lt;a href="http://chriswoodill.blogspot.com/2007/07/getting-to-finish-line-in-agile-project.html"&gt;the finish line is not always defined&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Use a project plan for iteration planning at a macro-level and not for iteration tracking within an iteration cycle. What I like doing is maintaining a project plan with a simple list of user stories in each 2 week iteration. That allows me to track dependencies between user stories pretty easily. At review time at the end of an iteration, we discuss the next iteration with our stakeholders and reset expectations by re-forecasting the plan (which takes no more than an hour of work). That gives stakeholders a good understanding of what we currently see as in and out of scope and when features may be coming up. This is highly valuable and I find is critical for buy in for stakeholders - if the response from the team is simply, "we can only see to the end of the next iteration cycle" this tends to make business users very nervous. &lt;/li&gt;&lt;li&gt;If you need pretty &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Gantt&lt;/span&gt; charts, one of my favourite methods is to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Visio&lt;/span&gt; - it provides pretty &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Gantt&lt;/span&gt; charts for presentations without the fuss of Project. &lt;/li&gt;&lt;li&gt;I tend to use the whole team as a big pool for planning iterations. This gets you out of the micro-detail of having to assign one user story to one person, another user story to another person and so on. If I have 4-5 developers on a team, that gives me 70 hours x 4-5 developers for a total iteration budget of 280-350 hours. I can then do a good estimate of each user story that includes planning, development and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;QA&lt;/span&gt; with the team. We simply add up a bunch of these stories into the budget and that becomes the iteration. The way to do this in MS Project is to take your steps and instead of assigning individuals assigned to each task and running them in parallel try simply taking a generic role of "developer" and assigning them at 500% to every task in sequence. You can then tell how much time you're going to spend across the entire team without having to fuss with all the micro-dependencies.&lt;/li&gt;&lt;li&gt;For preliminary planning, use low-tech &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Gantt&lt;/span&gt; chart tools such as whiteboards, post-it notes, etc. I can create a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Gantt&lt;/span&gt; chart without MS Project using a white board, some markers and post-it notes. This works great without the overhead of the tooling getting in the way. If you want to preserve it, simply take a digital photo of it and store the picture.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think if you follow some of these techniques as a Project Manager, you can still sleep at night without feeling completely out of control and yet move faster and leaner. In addition, you can use project planning to help sell the concept of Agile to stakeholders who aren't as comfortable with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;XP&lt;/span&gt; style of development and give them the comfort of a traditional project plan without locking yourself into the traditional bureaucratic approach to Project Management.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7478220779228462441?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7478220779228462441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7478220779228462441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7478220779228462441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7478220779228462441'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/project-planning-in-agile-project.html' title='Project Planning in an Agile Project'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6288250692358581354</id><published>2007-08-13T07:50:00.000-05:00</published><updated>2007-08-13T07:56:21.214-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Good CIO Level article on Silverlight</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CIO&lt;/span&gt; Magazine posted a &lt;a href="http://www.cio.com/article/128700/_Things_You_Should_Know_About_Microsoft_s_Silverlight_"&gt;good summary on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Silverlight&lt;/span&gt;&lt;/a&gt;.  We used the technology in a Proof of Concept to build a kiosk for our donor hall and from a user experience perspective it's a great &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;toolset&lt;/span&gt;.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;CIO&lt;/span&gt; is right to point that Version 1.1 is the version you want if you want to target the platform as it supports the .NET framework and includes support for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;LINQ&lt;/span&gt; and web services. &lt;br /&gt;&lt;br /&gt;Compared to Flash, the biggest advantage I see is that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;XAML&lt;/span&gt; is true 3D.  I remember building things like car &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;configurators&lt;/span&gt; for BMW and to try and get Flash to do fake 3D was a huge challenge.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Silverlight&lt;/span&gt; is real 3D which means that doing animations that include zooming, tiling, sliding, and using 3D models could lead to some very interesting interfaces.&lt;br /&gt;&lt;br /&gt;I'm interested to see how this platform evolves - I can see this tool becoming a real hit in the business applications space.  Think of all the VB.NET intermediate developers out there who struggle with creating a really nice interface to an otherwise functional application.  With a little bit of creative design and some nice tooling, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Silverlight&lt;/span&gt; could turn a boring non-user friendly database application into something much more intuitive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6288250692358581354?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6288250692358581354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6288250692358581354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6288250692358581354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6288250692358581354'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/good-cio-level-article-on-silverlight.html' title='Good CIO Level article on Silverlight'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6723258000389532017</id><published>2007-08-10T10:42:00.000-05:00</published><updated>2008-12-12T22:40:36.244-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Low Tech Approaches to Requirements - Part 3</title><content type='html'>For those who missed Parts 1 and 2, see the following previous posts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://chriswoodill.blogspot.com/2007/06/low-tech-approaches-to-requirements.html"&gt;Part 1&lt;/a&gt;: Different Techniques on using non-tech tools for requirements gathering&lt;/li&gt;&lt;li&gt;&lt;a href="http://chriswoodill.blogspot.com/2007/06/low-tech-approaches-to-requirements_07.html"&gt;Part 2&lt;/a&gt;: Using existing tech tools in simpler ways to speed up requirements gathering.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;One of my staff sent me this image today and I thought it was a great example of how to use low-tech approaches to conversations. He simply took a screen shot of a screen, threw it into MS Paint and then started making changes with the developer beside him. &lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5097100294083792610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_V5m6b8L54Jo/RryJtj1nTuI/AAAAAAAAAEo/_jsntBNFBoI/s400/image001.jpg" border="0" /&gt; &lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Between them in 5-10 minutes they had a "language" for what the marks on the screen mean:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Red lines through something mean to get rid of it&lt;/li&gt;&lt;li&gt;A box with text means to insert a new column&lt;/li&gt;&lt;li&gt;A line on a checkbox means that on checking it something will happen&lt;/li&gt;&lt;li&gt;etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So instead of using UML, fancy wireframes, or some bureacractic documentation process, try simply taking a screen capture and throwing it into Paint! &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6723258000389532017?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6723258000389532017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6723258000389532017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6723258000389532017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6723258000389532017'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/low-tech-approaches-to-requirements.html' title='Low Tech Approaches to Requirements - Part 3'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V5m6b8L54Jo/RryJtj1nTuI/AAAAAAAAAEo/_jsntBNFBoI/s72-c/image001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5532010607404503310</id><published>2007-08-08T20:49:00.000-05:00</published><updated>2007-08-08T21:42:07.269-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Managing Configuration Files and .NET</title><content type='html'>I've been using the .NET &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;config&lt;/span&gt; files lately, and its been rather frustrating lately because of the confusion that arises when running a bunch of different ways to access the same code.&lt;br /&gt;&lt;br /&gt;In my scenario, I have a class library called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;DBAccess&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;dll&lt;/span&gt; and I call it in the following ways:&lt;br /&gt;&lt;br /&gt;1. From a web site using the ASP.NET built in web server launched from VS 2005.&lt;br /&gt;2. From a web site running in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;IIS&lt;/span&gt;.&lt;br /&gt;3. From a forms application&lt;br /&gt;4. By running &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;TestDriven&lt;/span&gt;.NET using a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;seperate&lt;/span&gt; test assembly.&lt;br /&gt;5. From a windows service.&lt;br /&gt;&lt;br /&gt;In all these cases, I'm expecting to get configuration values through the main configuration file for connection string so that it can be used by Microsoft Enterprise Library.&lt;br /&gt;&lt;br /&gt;With so many options, .NET doesn't make it easy for you because of the differences in naming conventions on the default configuration file, e.g. in the case of a web app it expects a web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;config&lt;/span&gt;, a forms app expects an app.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;config&lt;/span&gt; and if you run the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;NUnit&lt;/span&gt; application it wants the assembly &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;config&lt;/span&gt; file, e.g. DBAccess.dll.config. Maintaining all these configuration files is a nightmare!&lt;br /&gt;&lt;br /&gt;So in sorting through this, I came up with a few basic strategies to combat this configuration file overload:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you add an App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Config&lt;/span&gt; file to your class library project, it will automatically translate this into Assembly.Dll.Config for you.  &lt;/li&gt;&lt;li&gt;For &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;NUnit&lt;/span&gt;, it expects a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;config&lt;/span&gt; file that is rooted to your test assembly.  It does not read any dependent assemblies &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;config&lt;/span&gt; files, app.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;config&lt;/span&gt;, web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;config&lt;/span&gt;, etc.  even if its the same directory of your assembly.  Alternatively, you can add configuration information directly into the app.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;config&lt;/span&gt; file of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;NUnit&lt;/span&gt; executable (either the GUI or the Console) but this isn't a very portable approach.&lt;/li&gt;&lt;li&gt;If you have an App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Config&lt;/span&gt; file and an assembly &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;config&lt;/span&gt; file, .NET will always read the App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Config&lt;/span&gt; file.  It does not by design read your assembly specific &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;config&lt;/span&gt; files.  There is &lt;a href="http://www.bearcanyon.com/dotnet/#AssemblySettings"&gt;some code floating around&lt;/a&gt; that can do this for you if you want to have more distributed configuration mechanisms that are attached to assemblies instead of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;executables&lt;/span&gt;.  This is one way to mitigate the problem of re-using an assembly across multiple projects where some are web projects and some are forms projects.&lt;/li&gt;&lt;li&gt;Another great alternative is to use proper build files instead of the default studio builds.  Either &lt;a href="http://msdn2.microsoft.com/en-us/library/0k6kkbsd.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;MSBuild&lt;/span&gt;&lt;/a&gt; or &lt;a href="http://nant.sourceforge.net/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;NANT&lt;/span&gt;&lt;/a&gt; will allow you the flexibility to store a single configuration file and rename it and then deploy it to the appropriate destination.  The tricky part would be that you may need a configuration file named Assembly.Dll.config for your unit tests if you've incorporated them into your build process and a final App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;config&lt;/span&gt; or Web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;config&lt;/span&gt; for running the executable.  &lt;/li&gt;&lt;li&gt;Another great idea that I have used before is to use the Microsoft Enterprise Library to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;specifiy&lt;/span&gt; an external configuration file.  This removes the naming problem with your configuration files in that you can have a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;seperate&lt;/span&gt; external file that represents the master configuration file and simply have Web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Config&lt;/span&gt;, App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;Config&lt;/span&gt;, Assembly.Dll.Config point to your external file.  This works quite nicely in my experience as long as you remember to add the external file to your project and to configure studio to always copy it into your build directory.&lt;/li&gt;&lt;li&gt;You can build your own configuration loader.  I have done this with custom defined configuration sections by having code in the custom section that contains a path to an external configuration file.  You can &lt;a href="http://geekswithblogs.net/akraus1/articles/64871.aspx"&gt;arbitrarily load up any configuration file in code &lt;/a&gt;and grab whatever sections out of it.  This is really useful for custom configuration sections where you want to provide code that saves and loads the configuration file with an arbitrary name.  One important note with this strategy - there are cases where the Enterprise Library does the configuration loading for you, e.g. the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;DatabaseFactory&lt;/span&gt; will load connection strings for you automatically.  In these cases, you cannot provide a configuration section or source as an object so you're stuck with the App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;Config&lt;/span&gt;, Web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Config&lt;/span&gt;, etc. as a starting point.&lt;/li&gt;&lt;li&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;ConfigurationManager&lt;/span&gt; in .NET allows you to &lt;a href="http://msdn2.microsoft.com/en-us/library/system.configuration.configurationmanager.openmachineconfiguration.aspx"&gt;open the Machine.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;config&lt;/span&gt; file&lt;/a&gt;.  You might want to peer into this file directory to look at global values instead of your local App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;config&lt;/span&gt; values.&lt;/li&gt;&lt;li&gt;You can use a complete different configuration framework - no is forcing you to use App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;config&lt;/span&gt; just because it's there (although most people do so).  For example, look at &lt;a href="http://nini.sourceforge.net/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;Nini&lt;/span&gt;&lt;/a&gt; as an option (although I haven't tried it yet!)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I hope that provides some ideas on how to manage configuration files in a way that will allow you to have more re-usable configuration schemes than a basic App.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;config&lt;/span&gt; or Web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;config&lt;/span&gt; file so that it can be used across multiple projects and different application contexts.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5532010607404503310?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5532010607404503310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5532010607404503310' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5532010607404503310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5532010607404503310'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/08/managing-configuration-files-and-net.html' title='Managing Configuration Files and .NET'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5731838955577731887</id><published>2007-07-24T21:45:00.001-05:00</published><updated>2007-07-24T22:07:24.382-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Driven Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Test Driven Development When Writing New Code</title><content type='html'>I have been doing TDD for several years now, and I can still not get around the recommendation to test first to the point where it breaks the code, write enough code to pass the test, and then go to the next test.  In my experience this tends to work with mature code bases where there is a chunk of existing code that is being changed.  However, I'm not sure this approach works for new applications that are being built from scratch.  In my experience, a less purist approach seems to work for me:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Write enough code to get something at least working minimally.  If you think of a use case, I'm not sure there is much point in writing gobs of test cases before you even have a primary path through the use case.  The XP methodology talks about an architectural or design spike, but in my experience there is also a coding spike.  For example, it might be the first iteration that instead of writing code + tests we just write as much code as we can to push through the primary path as widely as possible instead of trying to be exhaustive in our testing.&lt;br /&gt;&lt;li&gt;I use at least a basic unit test in NUnit as an entry point in all code debugging.  That enforces the practice of having tests but also provides a useful way to gain entry into the code without web pages, windows forms, or a global main method.  Using &lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt;, you can simply right-click a test and run it right in studio using the debugger, NUnit, NCover, etc. and I find this higly efficient when writing new code.&lt;br /&gt;&lt;li&gt;There does seem to be a drop off point where writing more and more tests provides less value, as in any testing effort.  I'm seen some overly puritanical approaches to TDD where it was insisted that every boundary condition was to be coded up as a unit test no matter how unlikely the scenario or risk.  In my experience there is a point where coding these scenarios is not worth the benefit of the test.  In addition, I have found that in some cases it is still easier and better to manually test something than to try and code it up as a test.&lt;br /&gt;&lt;li&gt;I definately like the idea of using build scripts and NUnit tests when making modifications to code.  However, In my experience the tests actually don't change as much as the underlying code.  In some cases there are new requirements but in many cases they are implementation changes.  As long as the existing tests are still green after the change, then no new tests are required.&lt;br /&gt;&lt;li&gt;There seems to be a trade-off between quick progress and the feeling of "being on a roll" and the pace of TDD which tends to be plodding but regular.  Again, I think a less purist approach is best - at some points you feel your creative juices flowing and you want to plow through 2-3 pages of code in one go without writing exhaustive unit tests for each little method.  Other times if you're being more cautious you want to test the living hell out of every line of code.  As a mature developer, you have to feel the right pattern depending on the code you're writing.&lt;br /&gt;&lt;li&gt;Lastly, I think its critical that at a minimum unit tests are written before code is checked into source control.  That way if you have continuous integration the unit tests will run on every build.  It seems also just a courtesy - you might have insight on why you left out some tests but your team mates might not.  So before checking in code make sure there are tests to go with it.  I find also that the unit tests are really a good description in code of the requirements so for new code its really helpful to have them as a guide.&lt;br /&gt;&lt;/Ul&gt;&lt;br /&gt;&lt;br /&gt;For code changes in a larger mature application, I like the traditional TDD process of making new tests so that they fail, writing code to fix the tests and then regression.  But for coding applications from scratch or starting a new major code project, I find a looser style tends to produce better results.  &lt;br /&gt;&lt;br /&gt;So with any agile technique, don't get to ideological about the approach - in my experience, TDD is best used as an approach and not a rigid perscription.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5731838955577731887?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5731838955577731887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5731838955577731887' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5731838955577731887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5731838955577731887'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/test-driven-development-when-writing.html' title='Test Driven Development When Writing New Code'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8825644675219136134</id><published>2007-07-24T21:44:00.001-05:00</published><updated>2007-07-24T21:44:43.619-05:00</updated><title type='text'>Example of Fat Code</title><content type='html'>Why exactly does the Google Toolbar need to be 47 megabytes?!  It's a tool bar for heaven's sake...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8825644675219136134?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8825644675219136134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8825644675219136134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8825644675219136134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8825644675219136134'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/example-of-fat-code.html' title='Example of Fat Code'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1787789492011192279</id><published>2007-07-23T07:41:00.000-05:00</published><updated>2007-07-23T07:52:43.826-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Agile Tools for .NET Part 2</title><content type='html'>This is a follow up to my previous post on &lt;a href="http://chriswoodill.blogspot.com/2007/07/agile-tools-for-net.html"&gt;Agile Tools for .NET&lt;/a&gt;.  I got to the office and I noticed a few more tools that I missed in my previous post.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.atlassian.com/confluence"&gt;Confluence&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Atlassian's professional WIKI solution, it works great with JIRA and provides a really nice WIKI solution.  For those who want to travel light with documentation, WIKI's provide a nice fit for technical documentation, build documentation, internal designs, etc. as they easily accomodate rapid changes, are completely web based and allow for automatic version tracking.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/datadictionary"&gt;Data Dictionary Creator&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the principles of Agile is make your code self-documenting.  What about making your database self-documenting?  You can do this in SQL 2005 in T-SQL by adding meta-data and descriptions to each field in your database.  The Data Dictionary Creator tool does the same thing through a nice GUI and allows for export and import of the documentation.  You can then document your database and store the meta-data in source safe for version control and safe keeping.  In addition, you can export the descriptions to an excel file for instant documentation!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wisdom-soft.com/products/screenhunter_free.htm"&gt;Wisdom Screen Hunter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Not really a development tool, but how many times have you been creating documents and wanted a quick screen capture?  Forget using the PrntScrn and fiddling in paint - use this tool.  Its free and allows you to capture any arbitrary rectangular area as well as any active window.  Simply hit F6 and off you go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1787789492011192279?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1787789492011192279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1787789492011192279' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1787789492011192279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1787789492011192279'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/agile-tools-for-net-part-2.html' title='Agile Tools for .NET Part 2'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5146476394691203234</id><published>2007-07-22T20:04:00.000-05:00</published><updated>2007-07-22T20:30:20.462-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Agile Tools for .NET</title><content type='html'>The following is a list of tools for doing agile based development with Microsoft .NET.  There are quite a few tools out there that will accelerate your use of continuous integration, test driven development, source control integration, etc.&lt;br /&gt;&lt;br /&gt;I have used all these tools - most I use on a daily basis.  They are highly recommend and most are either low cost or free.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.atlassian.com/jira"&gt;JIRA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Best tool for task management.  For more details see my &lt;a href="http://chriswoodill.blogspot.com/2007/04/best-tool-for-task-and-bug-tracking-is.html"&gt;review of JIRA from a previous post&lt;/a&gt;.  It's bugzilla on steroids and is much better and simpler than most windows based tools.  It's java based, but there is still no reason not to use it for .NET based development.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nunit.org"&gt;NUNIT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NUnit is an implementation of the XUNIT framework for .NET.  It allows you to create unit test classes that can be run by either a GUI or console application.  NUnit will also integrate into your build process so that on each build, you run through your automated tests to make sure they still pass.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://nant.sourceforge.net/"&gt;NANT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NANT is a port of the ANT build tool from Java.  NANT allows for build scripts based on simple XML files.  NANT can do things such as compile code, deploy assemblies, manage directories, start and stop processes, run executables, etc.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://ncover.org/site/"&gt;NCover&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NCover is a code coverage tool for .NET.  It will instrument your assemblies when they are built to analyze each line of code in your assembly and whether it was actually executed (exercised).  If you combine this with NUnit, you can then tell how much your unit tests actually go through every path of code.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jetbrains.com/profiler/"&gt;dotTrace&lt;/a&gt; or &lt;a href="http://www.red-gate.com/products/ants_profiler/index.htm"&gt;Ants Profiler&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Either tool will do, but personally I like Ants Profiler better and you can get it as a bundle with Ants Loader for cheaper.  Both tools do the same thing - they profile either memory or performance data for your executing code.  You can profile an ASP.NET web site, a Winform application or a Windows Service.  What you will get in the case of memory profiling is the ability to snapshot at any point of execution a picture of what is in memory.  This can help with objects not getting garbage collected properly or where you're running into memory issues.  For performance profiling, the tool will tell you the amount of time each line of code took to execute.  This can be useful for performance testing in that you can see the breakdown of time for a method to isolate the particular lines of code that are taking the longest.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;Cruise Control .NET&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cruise Control is a port of the java application of the same name.  It is a continuous integration server which will fire a build on every check into your source code repository.  It can run either a NANT script or an MSBuild script or simply tell Visual Studio 2005 to do a build.  It then stores the status of each build in a little intranet site that you can monitor and it can email you notifications as well.  This provides an automated way to integrate code and test to make sure it builds and passes all your unit tests.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mygenerationsoftware.com/portal/default.aspx"&gt;My Generation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My Generation is a code generator.  It ships with a number of templates for generating O/R mapping code for frameworks such as Gentle, NHibernate, DAAB, etc.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.testdriven.net/"&gt;TestDriven .NET&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is one of my favourite tools.  It allows you to integrate your unit testing right into studio.  Want to run one of your NUnit Tests?  Just right click on the test code and up comes a Run with option that you can then run with the debugger, NCover, NUnit, etc.  The one I use most is run with Debugger as it means you can step through the code hit by each of your unit tests.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ankhsvn.tigris.org/"&gt;ANKH&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ankh is a &lt;a href="http://subversion.tigris.org/"&gt;subversion&lt;/a&gt; add-in for Visual Studio 2005.  For those who are using subversion as your source code control system (and I would recommend subversion in general over Visual Source Safe) it allows you to update and commit code from the solution explorer window.  My only problem with this tool is that its quite slow especially if you have large projects, so you may find it easier to check in with external tools after a while.  But for those who are just getting used to subversion, its a great first step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5146476394691203234?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5146476394691203234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5146476394691203234' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5146476394691203234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5146476394691203234'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/agile-tools-for-net.html' title='Agile Tools for .NET'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3307461053467550469</id><published>2007-07-19T21:50:00.000-05:00</published><updated>2007-07-19T22:27:40.807-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Getting to the Finish Line in an Agile Project</title><content type='html'>&lt;a href="http://www1.istockphoto.com/file_thumbview_approve/253030/2/istockphoto_253030_are_we_there_yet.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px;" src="http://www1.istockphoto.com/file_thumbview_approve/253030/2/istockphoto_253030_are_we_there_yet.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;One of the great potentials of Agile software development is flexibility in changing requirements.  We currently use agile methodologies and have scheduled 2 week iterations.  We have show and tells with stakeholders every two weeks where we show them where things are at and gather new user stories, functionality changes and other feedback to plan for the next iteration.&lt;br /&gt;&lt;br /&gt;One of the challenges we have found with this approach is that the project quickly turns into perpetual development.  One of the advantages of a traditional waterfall model is a solid arc in development and a very specific deliverable - you have a good definition of when you're done.  In an environment where the requirements evolve, the time lines are fluid and the stakeholders are not that experienced at software projects we are finding that this means that the project never seems to end!  Every two week iteration, stakeholders simply pile on new requirements  and the launch date drifts away.&lt;br /&gt;&lt;br /&gt;In a consulting environment, this isn't such a bad thing if you're on a time and materials engagement - the client simply gets to spend their money as long as they want.  But in an internal development team, this poses a challenge because most stakeholders aren't really aware of how much money they are spending and they simply keep monopolizing the team.  In the meantime, there are other projects or priorities queueing up in the background. &lt;br /&gt;&lt;br /&gt;Based on what we have found works, here are some practical recommendations on how to combat this problem:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Establish clear business objectives and as many solid functional requirements as possible.  There is a happy medium between XP style iterative programming and a rigid waterfall model.  Try to put some acceptance criteria that can be measured so that the entire team has a common understanding of the target.&lt;/li&gt;&lt;li&gt;Remember the law of triple constraints - of cost, resources, and time changing any of these impacts the others.  Make sure that stakeholders are aware of the real cost (even if it is an internal cost) through an internal budgeting model.   In our organization, we have a shared cost model in IT but we can allocated the shared cost to any department we choose.  In cases where we see departments monopolizing our time we can allocate more cost to them.  This gives internal stakeholders an incentive to prioritize and conserve resources.&lt;/li&gt;&lt;li&gt;Make stakeholders compete with each other.  This is pure politics but it works.  The easiest way to stop a project is to simply tell another stakeholder that they're waiting in the queue behind someone else.  There will be a pretty quick meeting between stakeholders where one will start to put a lot of pressure on the other to get their project done quickly or to get out of line altogether.&lt;/li&gt;&lt;li&gt;Time box and resource constraint the project explicitly.  We do this quite a bit with reporting needs which seem to continually evolve ad nauseum.  When we start these types of projects, we establish a budget of 2-3 iterations and that's the budget.  The requirements can evolve but there continues to be pressure on the stakeholder to get it right the first time or else lose their window.&lt;/li&gt;&lt;li&gt;Always have a phased approach with Phase 2 and 3 already planned in Phase 1.  This gives the stakeholder the ability to still feel they're going to get a change at some point but perhaps can live with launching without it.  &lt;/li&gt;&lt;li&gt;Be vigilant and communicate often about what's currently in and out of scope.  I'm not sure whether stakeholders intentionally play dumb or whether people simply don't hear bad news but I've experienced several times the case where three meetings in a row we hear questions about a feature that we've already ruled out of scope and there is genuine surprise from the stakeholder that they're not getting a particular feature even if its been already discussed, documented, etc.  &lt;/li&gt;&lt;li&gt;Have really strong leaders in QA.  QA Leads, especially in the latter stages of projects, become crucial at communicating and organizing priorities.  A great QA Lead can manage stakeholders on a daily bug review meeting and can handle the constant re-negotiation of last minute feature requests, low priority bug fixes, etc. and keep the process moving towards launch.  If the project loses velocity during the stage it opens the door to ever increasing scope change.  If the project has high velocity then everyone on the team feels like they better prioritize because time is running out and the project is going to launch without them.  This helps crystallize priorities and puts good pressure on stakeholders to commit to the minimum work required to launch.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I've been in projects where we sat at 90% for 5 months because we kept stalling as we closed in on the finish line.  In addition, I've been on projects with internal teams where the stakeholders simply got used to having a software team at their disposal week after week and their was never any pressure to launch anything or to stop working.  &lt;/p&gt;As a project manager, your goal is to launch - 90% complete is really 0% complete especially if it's still just running in development or still buggy in test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3307461053467550469?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3307461053467550469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3307461053467550469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3307461053467550469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3307461053467550469'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/getting-to-finish-line-in-agile-project.html' title='Getting to the Finish Line in an Agile Project'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2886426464650878028</id><published>2007-07-18T17:32:00.000-05:00</published><updated>2008-12-12T22:40:36.518-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Second Life'/><title type='text'>Can You Trust Second Life Charity?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_V5m6b8L54Jo/Rp6aqiFXG2I/AAAAAAAAAEg/H19dWYCHyAg/s1600-h/secondlife_1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5088674684469713762" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/Rp6aqiFXG2I/AAAAAAAAAEg/H19dWYCHyAg/s400/secondlife_1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At the foundation, we are interested in Second Life. For those who are not familiar, Second Life is a virtual 3D world that allows for users to create custom content, communicate with others in a virtual world and buy and sell items in a virtual currency. What makes it unique is that the virtual currency can be converted into real cash, allow for the conversion between the virtual and the real.&lt;br /&gt;&lt;br /&gt;Commercial activities have evolved over the past year or so in Second Life to include things like &lt;a href="http://www.businessweek.com/magazine/content/06_18/b3982001.htm"&gt;virtual real estate, virtual products&lt;/a&gt;, etc. In the past little while, &lt;a href="http://www.onphilanthropy.com/site/News2?page=NewsArticle&amp;amp;id=6643"&gt;charities have started doing virtual fundraising &lt;/a&gt;by having virtual walkathons, virtual campaigns, etc. in Second Life. The virtual currency they raise they then convert to real dollars to help real people.&lt;br /&gt;&lt;br /&gt;So here is the basic question - how do you ensure a trusted conversion between the fantasy and the real? In the case where a Second Life user is buying a virtual good, then there is no real issue - they pay virtual money and instantly get a virtual hat, a virtual house, etc. But if you donate virtual money to a virtual charity, how do you know that its really going to the charity? This is true for commercial conversions as well, e.g. if you pay in virtual currency for a physical good, how do ensure that the vendor is legitimate?&lt;br /&gt;&lt;br /&gt;The number one objective for a fundraiser is raising money for their respective cause. But a very close number two is ensuring the maintenance of its brand, reputation and trust with its donors. Its critically important because its the only long term asset a fundraiser has at their disposal (in the same way as Nike, Sony, or Coca Cola).&lt;br /&gt;&lt;br /&gt;There are a couple potential ways you can verify that a charity asking for money is legitimate and sanctioned:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check the charities web site. For example, the American Cancer Society publicizes its &lt;a href="http://www.cancer.org/docroot/GI/content/GI_1_8_Second_Life_Relay.asp"&gt;Second Life Relay for Life&lt;/a&gt; and provides instructions on how to get involved.&lt;br /&gt;&lt;li&gt;Call the charity. If the person asking for money is legitimate, they'll be registered in some way as an event organizer.&lt;br /&gt;&lt;li&gt;Ask the person in Second Life basic questions like: do you have a contact I can talk to, how do I verify that you work for the charity, do you have a tax number, etc. The person should have a way to give you information that can be verified - at least that shows the person has some basic knowledge of the charity they are promoting.&lt;/li&gt;&lt;/ul&gt;There are some people in Second Life who may be asking for donations and legitimately giving the money to a charity. However, without some way to verify it I would suggest you're better off donating directly to the charity.&lt;br /&gt;&lt;br /&gt;If you cannot verify, I would not donate a single L$ as you have no way to ensure the money is actually going to charity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2886426464650878028?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2886426464650878028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2886426464650878028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2886426464650878028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2886426464650878028'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/can-you-trust-second-life-charity.html' title='Can You Trust Second Life Charity?'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_V5m6b8L54Jo/Rp6aqiFXG2I/AAAAAAAAAEg/H19dWYCHyAg/s72-c/secondlife_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2456735603338902915</id><published>2007-07-18T07:49:00.000-05:00</published><updated>2007-07-18T08:01:13.135-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><title type='text'>Creative use of Delegates in .NET</title><content type='html'>I normally don't use delegates, since I don't do a lot of events programming where they are commonly used.  But I was building a class library the other day and found a good use for them.&lt;br /&gt;&lt;br /&gt;Here is the scenario: I have a series of methods that allow for merging of records in our main CRM.  In order to connect to the CRM, there is a series of setup and tear down calls that have to be made such as connecting, logging in, etc.&lt;br /&gt;&lt;br /&gt;So I found myself creating a dozen methods that all looked something like this:&lt;br /&gt;&lt;br /&gt;public void mergeAddress(String masterID, String mergeID)&lt;br /&gt;{&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    bunch of set up code&lt;br /&gt;    meat of the method&lt;br /&gt;    bunch of tear down code&lt;br /&gt;  }&lt;br /&gt;  catch (Exception e)&lt;br /&gt;  {&lt;br /&gt;    throw new MergeException("Unexpected error in method mergeAddress", e);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I found myself copying and pasting this chunk of code over and over again, which is always a good sign that some refactoring is required.&lt;br /&gt;&lt;br /&gt;My solution was to use a delegate to represent the meat of the method in the middle.  Therefore, instead of having a bunch of methods that repeat the same code over and over again, I can now rewrite the method to look something like this:&lt;br /&gt;&lt;br /&gt;protected delegate void mergeDelegate(String MasterID, String MergeID);&lt;br /&gt;&lt;br /&gt;public void mergeByDelegate(del method, String MasterID, String MergeID)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;  {&lt;br /&gt;    bunch of set up code&lt;br /&gt;    del.invoke();&lt;br /&gt;    bunch of tear down code&lt;br /&gt;  }&lt;br /&gt;  catch (Exception e)&lt;br /&gt;  {&lt;br /&gt;    throw new MergeException("Unexpected error in method mergeAddress", e);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now the method becomes like a prototype - I can keep the set up and tear down in one place and simply sub in the method call in the middle.&lt;br /&gt;&lt;br /&gt;(FYI, You could do the same thing by splitting the method into three chunks, moving them into a class and sub-classing the method in the middle, but I think using a simple delegate is easier.)&lt;br /&gt;&lt;br /&gt;To implement the prototype now looks something like this:&lt;br /&gt;&lt;br /&gt;public void mergeAddress(String MasterID, String MergeID)&lt;br /&gt;{&lt;br /&gt;   mergeDelegate del = this.mergeAddress();&lt;br /&gt;   mergeByDelegate(del, MasterID, String MergeID);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void mergeAddress(String MasterID, String MergeID)&lt;br /&gt;{&lt;br /&gt;   meat of the method&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;All the set up and tear down code is now centralized into one method.  The part that changes in the middle can now vary in a variety of ways.&lt;br /&gt;&lt;br /&gt;Hope this helps everyone with another way of using delegates...I've always struggled to find a use for them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2456735603338902915?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2456735603338902915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2456735603338902915' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2456735603338902915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2456735603338902915'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/creative-use-of-delegates-in-net.html' title='Creative use of Delegates in .NET'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8341353487737452045</id><published>2007-07-10T07:25:00.000-05:00</published><updated>2007-07-10T07:31:30.843-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Low Tech Approaches to Powerpoint Presentations</title><content type='html'>Take a look at these videos as a low tech presentation format.  Think about how you can use these techniques for selling ideas, explaining technical concepts, brainstorming, etc.  For more ideas on low-tech requirements gathering, see my &lt;a href="http://chriswoodill.blogspot.com/2007/06/low-tech-approaches-to-requirements.html"&gt;previous post&lt;/a&gt; as well.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0klgLsSxGsU"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0klgLsSxGsU" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-dnL00TdmLY"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-dnL00TdmLY" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8341353487737452045?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8341353487737452045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8341353487737452045' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8341353487737452045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8341353487737452045'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/low-tech-approaches-to-powerpoint.html' title='Low Tech Approaches to Powerpoint Presentations'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-4421271672561783198</id><published>2007-07-07T07:37:00.000-05:00</published><updated>2007-07-07T07:44:03.273-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='LiveEarth'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>LiveEarth not in the top 10?!</title><content type='html'>Whoever organized LiveEarth really missed the blogosphere.  A few points of evidence:&lt;br /&gt;&lt;br /&gt;1. There are only 2049 blog posts on LiveEarth?&lt;br /&gt;2. LiveEarth as a search term isn't hitting the Technorati top 10.&lt;br /&gt;3. The LiveEarth facebook group only has 678 members.&lt;br /&gt;&lt;br /&gt;Whoever is responsible for creating Buzz on the blogsophere for LiveEarth is doing a poor job - Paris Hilton and the IPhone are doing much better than LiveEarth, a supposedly global change event.&lt;br /&gt;&lt;br /&gt;I'm going back to enjoying the music on the old fashion technology called the Television! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-4421271672561783198?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/4421271672561783198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=4421271672561783198' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4421271672561783198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4421271672561783198'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/liveearth-not-in-top-10.html' title='LiveEarth not in the top 10?!'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5360204226165290045</id><published>2007-07-07T07:24:00.000-05:00</published><updated>2007-07-07T07:33:48.050-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LiveEarth'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Problems with Live Earth Broadcast</title><content type='html'>Compared to the Live8 broadcast that AOL did, the LiveEarth broadcast is a disappointment.  The resolution of the video is significantly poorer and yet I'm finding that the stream is having a lot of problems handling the load.  There are a lot of blackouts, frequent rebuffering of content and there have already been complaints that the site only works in Internet Explorer.&lt;br /&gt;&lt;br /&gt;This could have been a fantastic showcase for Silverlight - with the quick download of the plugin Microsoft could have showcased its new technology including some fantastic video streaming. &lt;br /&gt;&lt;br /&gt;But instead we see choppy video, disconnected audio and very slow response rate on the interface.&lt;br /&gt;&lt;br /&gt;What a missed opportunity!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5360204226165290045?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5360204226165290045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5360204226165290045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5360204226165290045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5360204226165290045'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/problems-with-live-earth-broadcast.html' title='Problems with Live Earth Broadcast'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7671142466325217503</id><published>2007-07-06T08:11:00.000-05:00</published><updated>2007-07-06T08:34:59.046-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Creating a Single Sign-On Solution for .NET Part 2</title><content type='html'>For the past couple days I've been building my single sign-on solution based on my &lt;a href="http://chriswoodill.blogspot.com/2007/07/creating-single-sign-on-solution-for.html"&gt;previously posted design&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I built some simple web services that allow for login against a membership profile database using the supplied ASP.NET membership architecture. By registering the membership and logging in, we can provide a token that can be used to represent the logged in user. This token can then be distributed on the URL and passed to partner sites. The partner site can the validate the token and retrieve the membership information through a web service method.&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Caching;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Web.Services;&lt;br /&gt;using System.Web.Services.Protocols;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Web.Profile;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Security.Principal;&lt;br /&gt;&lt;br /&gt;namespace SingleSignOn.WebService&lt;br /&gt;{&lt;br /&gt;&lt;/summary&gt;&lt;br /&gt;[WebService(Namespace = "http://localhost/")]&lt;br /&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;[ToolboxItem(false)]&lt;br /&gt;public class MemberWebService : System.Web.Services.WebService&lt;br /&gt;{&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Logs in a user and provides back a token. Tokens can then be used to regrab the profile data.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;/// &lt;param name="userName"&gt;&lt;/param&gt;&lt;br /&gt;/// &lt;param name="password"&gt;&lt;/param&gt;&lt;br /&gt;/// &lt;returns&gt;&lt;/returns&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public string registerMember(string userName, string password)&lt;br /&gt;{&lt;br /&gt;if (Membership.ValidateUser(userName, password))&lt;br /&gt;{&lt;br /&gt;Guid token = Guid.NewGuid();&lt;br /&gt;HttpContext.Current.Cache.Insert(token.ToString(), userName, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20));&lt;br /&gt;return token.ToString();&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Validates a token and provides back a membership user in return. If the member isn't found then null is returned.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;/// &lt;param name="token"&gt;Token to validate.&lt;/param&gt;&lt;br /&gt;/// &lt;returns&gt;MembershipUser object for the mapped user. If token isn't found then null is returned.&lt;/returns&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public MembershipUser validateMember(string token)&lt;br /&gt;{&lt;br /&gt;string userName = (string) HttpContext.Current.Cache[token];&lt;br /&gt;MembershipUser member = Membership.GetUser(userName);&lt;br /&gt;return member;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Returns the current profile object.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;/// &lt;param name="token"&gt;Token to map to a currently logged in user.&lt;/param&gt;&lt;br /&gt;/// &lt;returns&gt;Array of name value pairs.&lt;/returns&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public object[][] getProfile(string token)&lt;br /&gt;{&lt;br /&gt;string userName = (string)HttpContext.Current.Cache[token];&lt;br /&gt;Hashtable profileHash = new Hashtable();&lt;br /&gt;ProfileBase profile = WebProfile.Create(userName, true);&lt;br /&gt;foreach (SettingsProperty property in WebProfile.Properties)&lt;br /&gt;{&lt;br /&gt;profileHash.Add(property.Name, profile[property.Name]);&lt;br /&gt;}&lt;br /&gt;return toJaggedArray(profileHash);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// This doesn't work. I have not yet found a way to update profiles properly in ASP.NET.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;/// &lt;param name="token"&gt;&lt;/param&gt;&lt;br /&gt;/// &lt;param name="propertyName"&gt;&lt;/param&gt;&lt;br /&gt;/// &lt;param name="value"&gt;&lt;/param&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public void updateProfileProperty(string token, string propertyName, string value)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;System.Diagnostics.Debug.Print(e.Message);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Invalidate the cache entry containing the token.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;/// &lt;param name="token"&gt;Token representing user&lt;/param&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public void logout(string token)&lt;br /&gt;{&lt;br /&gt;HttpContext.Current.Cache.Remove(token);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private object[][] toJaggedArray(Hashtable ht)&lt;br /&gt;{&lt;br /&gt;object[][] oo = new object[ht.Count][];&lt;br /&gt;int i = 0;&lt;br /&gt;foreach (object key in ht.Keys)&lt;br /&gt;{&lt;br /&gt;oo[i] = new object[] { key, ht[key] };&lt;br /&gt;i++;&lt;br /&gt;}&lt;br /&gt;return oo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private Hashtable toHashtable(object[][] oo)&lt;br /&gt;{&lt;br /&gt;Hashtable ht = new Hashtable(oo.Length);&lt;br /&gt;foreach (object[] pair in oo)&lt;br /&gt;{&lt;br /&gt;object key = pair[0];&lt;br /&gt;object value = pair[1];&lt;br /&gt;ht[key] = value;&lt;br /&gt;}&lt;br /&gt;return ht;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One small technical note - because web services don't support Hashtables, &lt;a href="http://www.markrichman.com/Collections.pdf"&gt;you need to convert these to a more basic array in order to return them&lt;/a&gt;. See the getProfile method as an example.&lt;br /&gt;&lt;br /&gt;There is one fundamental problem - trying to manage other people's profiles. It seems that the ASP.NET profile management is based on the assumption that you are reading and writing a current logged in user's profile context. However, in this case, we want to be able to proxy the profile data out to the world which means being able to read and write any user's profile data. There doesn't seem to be an easy way to do this in the current profile architecture. You can get a Profile object from the HttpContext, but this is the current logged in user. You can use the ProfileManager class to grab profile objects but it doesn't provide you access to individual properties of the profile. You can load up a profile object using the GetProfile method, but then there is no way to save the profile.&lt;br /&gt;&lt;br /&gt;So it seems that if I'm going to use a distributed global profile management system, I'm going to have to build my own. This isn't really a huge problem as the built in profile management system is fairly weak (see my &lt;a href="http://chriswoodill.blogspot.com/2007/03/aspnet-profiles-ready-for-prime-time.html"&gt;previous post on general problems with the ASP.NET profile&lt;/a&gt;) and building a basic profile management system to store name value pairs or serialized objects isn't that difficult.&lt;br /&gt;&lt;br /&gt;But the good news is the basic idea of proxying a token across a domain to store a logged in user seems to work in principle. The next challenge is figuring out the best way to secure it so that only valid partner sites can use the service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7671142466325217503?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7671142466325217503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7671142466325217503' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7671142466325217503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7671142466325217503'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/creating-single-sign-on-solution-for_06.html' title='Creating a Single Sign-On Solution for .NET Part 2'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-7958788768554132865</id><published>2007-07-04T10:35:00.000-05:00</published><updated>2008-12-12T22:40:36.740-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Creating a Single Sign-On Solution for .NET</title><content type='html'>We have a basic single sign-on requirement. We need to be able to allow users to login and pass that login to other distributed systems.&lt;br /&gt;&lt;br /&gt;Here are the basic requirements:&lt;br /&gt;&lt;br /&gt;1. We want to control the master user profile so that we can have access to the data and integrate it into our offline CRM systems.&lt;br /&gt;&lt;br /&gt;2. We have a number of partners who provide hosted applications for us that require authentication. We need to provide a mechanism to have a single sign-on for users that can then be passed to to these partners.&lt;br /&gt;&lt;br /&gt;3. The partners may have their own profile requirements that are independent of our needs. For example, let's assume we have a partner that provides community forums and saves the user's favourite forums in their profile. Only the partner cares about this information and centralizing it doesn't add any real value.&lt;br /&gt;&lt;br /&gt;4. The solution has to work in a distributed, multi-platform environment. The only access to and from the partners and us is through port 80 using either REST or Web Services calls.&lt;br /&gt;&lt;br /&gt;5. The domain may not be the same and therefore you cannot share cookies (see &lt;a href="http://www.codeproject.com/aspnet/aspnetsinglesignon.asp"&gt;http://www.codeproject.com/aspnet/aspnetsinglesignon.asp&lt;/a&gt; and &lt;a href="http://www.411asp.net/func/goto?id=5998410"&gt;www.411asp.net/func/goto?id=5998410&lt;/a&gt; for a solution based on the assumption that you can simply poke the cookie created by ASP.NET)&lt;br /&gt;&lt;br /&gt;6. There needs to be a way to transfer state from one server to another in cases where the user is logged in already. If user logs in Site A and then goes to Site B, they should appear to be still logged in.&lt;br /&gt;&lt;br /&gt;So here is the basic design:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_V5m6b8L54Jo/RovHrc0ohoI/AAAAAAAAAEY/sbk_xqrqNxk/s1600-h/Single-SignOn.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5083376153702991490" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_V5m6b8L54Jo/RovHrc0ohoI/AAAAAAAAAEY/sbk_xqrqNxk/s400/Single-SignOn.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. User logs in by calling a login web service method (see this &lt;a href="http://www.sitepoint.com/article/single-sign-web-service-asp-net"&gt;example&lt;/a&gt; for a web services method implementation of login). User is now authenticated on the main site.&lt;br /&gt;2. User links to partner site which passes a token representation of the state (we could use the SessionID itself in .NET as a token).&lt;br /&gt;3. The partner site receives the token and calls a ValidateToken web service method. This validates the passed in token and provides back the membership information for the current user.&lt;br /&gt;4. If the partner site collects user information, the site can call the Update web service method to update the master profile.&lt;br /&gt;5. If the user wants to link back from the partner site to the main site, the partner site provides a link back to the main site with the token embedded in the query string.&lt;br /&gt;6. The main site receives the token and calls a ValidateToken web service method. This validates the passed in token and provides back the membership information for the current user.&lt;br /&gt;&lt;br /&gt;This basic architecture should work with a couple basic caveats:&lt;br /&gt;&lt;br /&gt;1. State needs to be managed centrally with the usual challenges of managing session state in a load balanced environment.&lt;br /&gt;2. There needs to be some security around the token validation service to prevent malicious sites from getting access to the service. There are lots of solutions for this including putting the web services under VPN, including a site authentication mechanism in the web service method, filtering by IP, etc.&lt;br /&gt;3. Each link needs to be dynamically re-written to include the token. If there are lots of existing cross-over points then this could be a challenge.&lt;br /&gt;4. The parsing of the token needs to happen on every page request. In .NET this could be done using an HTTP Module as a central parsing code. Alternatively, you could have a redirect page that all pages link to first with the original target url embedded in a query parameter (this is how typical login pages work for example).&lt;br /&gt;5. There needs to be some mechanism for keeping the state alive so that it doesn't time out. This could again done using an HTTP Module that on every page request does a web service request to validate token to simply keep the state alive.&lt;br /&gt;6. The solution assumes that there is a single backing master profile that distributes profile information. A "peer to peer" type model could be developed but it would be more complicated. &lt;br /&gt;&lt;br /&gt;From a look and feel perspective, the solution doesn't require a single login or registration experience but it probably would make sense. Keep the login and registration forms on the main web site and have them redirect back to the partner site if the request is coming from the partner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-7958788768554132865?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/7958788768554132865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=7958788768554132865' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7958788768554132865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/7958788768554132865'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/creating-single-sign-on-solution-for.html' title='Creating a Single Sign-On Solution for .NET'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_V5m6b8L54Jo/RovHrc0ohoI/AAAAAAAAAEY/sbk_xqrqNxk/s72-c/Single-SignOn.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1814784521534413035</id><published>2007-07-04T08:22:00.000-05:00</published><updated>2007-07-04T10:22:40.289-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Implementing an Agile Change Control Process</title><content type='html'>&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;What is Change Control?&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.inacom.com/display.aspx?page=/newsletter/changecontrol.aspx"&gt;Change Control&lt;/a&gt; traditionally is a project management process for managing change. The typical method for managing change in a classic PMP project is a Change Control form that is filled out containing the scope of the change, impact to the project, etc. This is then approved and incorporated into the master project plan, charter, etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fdicoig.gov/reports05/05-022/05-022-508-CDR_image.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.fdicoig.gov/reports05/05-022/05-022-508-CDR_image.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition, Change Control processes are used by operations departments to manage the deployment and promotion of code from one environment to another. The Change Control Form provides the documentation for an operations team to deploy, operate and monitor the change.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#3366ff;"&gt;&lt;strong&gt;Change Control and Agile&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;This traditional view of Change Control is at odds with Agile methodologies for the following reasons:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Change is viewed as a non-typical event, e.g. the project was running smoothly until someone threw a change into the project. Agile projects by definition are based on the assumption that changes are typical events and aren't special.&lt;br /&gt;&lt;br /&gt;2. Change requests are simply Waterfall designs in miniature. Requirements for the change must be documented up front and analyzed. Stakeholders must approve of changes before they are made with the assumption that requirements, scope, risk, and design can be formally documented ahead of making a code change.&lt;br /&gt;&lt;br /&gt;3. Traditional Change Control processes are document heavy. The process is designed as much to capture and document change as it is to make effective decisions. Change control forms are kept around forever with dates and identifiers so that someone could find out who approved a change. In many cases, these are also printed out, resulting in very large binders of paper with signatures for every change.&lt;br /&gt;&lt;br /&gt;4. In an agile project, one of the objectives is to flatten the team and reduce hierarchies so that people can more effectively communicate. However, traditional change control processes require specialized knowledge, special powers of approval and a hierarchical command and control structure. Project Managers are usually the writers of change control forms, but then they must get approval from "Stakeholders" who will bless the change.&lt;br /&gt;&lt;br /&gt;Here is a good example of a traditional Change Control process - have a look at Bell South's &lt;a href="http://wholesale.att.com/reference_library/processes/ccp_live/assets/pdf/ccp06_05_07.pdf"&gt;Change Control Process Guide&lt;/a&gt;. At 120 pages, it is a great example of how bloated a large formal change control process can get when Project Managers are working in a bureaucratic environment. Just managing the process documentation alone takes a massive investment - just look at the 20 pages of version numbers of this document and you'll see that someone's full-time job must be simply keeping the guide up to date!&lt;br /&gt;&lt;br /&gt;Change Control isn't a bad thing - the original objectives behind formal Change Control are actually in line with the objectives of agile methodologies:&lt;br /&gt;&lt;br /&gt;1. Define change and anticipate change early instead of leaving it to the end.&lt;br /&gt;2. Providing a process for incorporating change during development of a project.&lt;br /&gt;3. Communicate scope, risks and impacts of a change.&lt;br /&gt;4. Provide the appropriate review and approval process to authorize a change.&lt;br /&gt;&lt;br /&gt;It isn't that change control is bad - it's that the evolution of formal project methodologies has led to very bureaucratic, documentation heavy processes. In addition, keep in mind that most of these processes were invented before the incorporation of digital collaboration tools such as email, Wikis, sharepoint, &lt;a href="http://www.blogger.com/www.atlassian.com/JIRA"&gt;JIRA&lt;/a&gt;, Word, etc. and so the typical change control process has artifacts from a non-digital era.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#3366ff;"&gt;Implementing an Agile Change Control Process&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Change Control can be used effectively in an Agile environment if it is sufficiently light weight, non-bureaucratic and collaborative. Here are my recommendations based on what I have seen work effectively on Agile and non-Agile projects:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;1. Use an agile methodology such as XP, Crystal, Scrum, etc. that has change management built into its fundamental process.&lt;/span&gt;&lt;/strong&gt; In &lt;a href="http://www.controlchaos.com/old-site/scrumwp.htm"&gt;Scrum&lt;/a&gt;, for example, all work is effectively a change and is logged as a "change request" in a work backlog. In &lt;a href="http://www.extremeprogramming.org/"&gt;XP&lt;/a&gt; the changes are logged as &lt;a href="http://www.extremeprogramming.org/rules/userstories.html"&gt;User Stories&lt;/a&gt;. Iterations allow for changes to happen on a regular basis - they're not special change events.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;2. Use a generic task tracking system such as &lt;/span&gt;&lt;/strong&gt;&lt;a href="http://www.atlassian.com/jira"&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;JIRA&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt; to log any change.&lt;/span&gt;&lt;/strong&gt; In JIRA, you don't need a separate "bug tracking" system that is different than your change tracking system. In addition, you can take a change all the way from requirements to deployment without re-entering information. You could do the same thing with low tech tools such as Excel or Word simply by having a work log that is updated regularly.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;3. If you have specific legal or regulatory reasons to track changes then try to understand the specific minimum requirements.&lt;/strong&gt;&lt;/span&gt; I've worked in a government environment for example where all changes needed to be documented so that they could be audited. But the level of detail that was incorporated into each Change Control form became ridiculous - an auditor probably doesn't really need to see a change in an individual SQL script, a deployment checklist that includes changing ODBC connection strings, etc.!&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;4. Eliminate as many approvals as possible.&lt;/strong&gt;&lt;/span&gt; We had a change control form that had 10 signatures on it - I was one of them! I used to get these forms across my desk documenting some change to an application that I had never even seen, had no idea how to measure the risk of the change and yet I was expected to "approve" it. Even worse, the signature had to be on paper so there was a constant stream of people running around with pieces of paper trying to find me to get my signature. Eliminate all this process and identify the minimum number of people who need to be involved in any change.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;5. If you're going to have a Change Control Form/Process, keep in as light as possible.&lt;/span&gt;&lt;/strong&gt; Your form should be no more than 2 pages and should be as automated as possible. We currently use JIRA to automate all our tickets. In previous environments, we've used Outlook forms. I've also seen this done use Word with Macros enabled to provide drop downs, automatic fill-in, etc. Keep your process light as well - if you need 2 hours of training to teach someone how to make a code change, then something is wrong!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;6. Keep Operations teams involved from day one.&lt;/span&gt;&lt;/strong&gt; One of the primary reasons why change control forms are deployed is because Operations teams get tired of having code dumped on them without documentation or involvement. The typical solution is to put in a gate keeping process to keep the developers from deploying something unsafe to production. This is a legitimate role, but change control processes typically provide artificial security - simply because a developer has filled in the proper form doesn't mean their code works as advertised. Instead, have an Operations Lead that is an integral part of the project from day one who will have a specific understanding of the project and create the right level of documentation, deployment guides, test cases, etc. and be testing these along the way. This is far more effective than a large form being written at the end of the cycle.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;7. Keep stakeholders involved throughout the project.&lt;/strong&gt;&lt;/span&gt; The reason why Change Control forms need to be so heavily documented is because the key stakeholders have not been involved all along the way. If stakeholders are seeing working software using Show and Tell techniques, then Change Control simply becomes regular involvement in the project.&lt;br /&gt;&lt;br /&gt;8. Use &lt;a href="http://www.agilemodeling.com/principles.htm"&gt;multiple models&lt;/a&gt; of communication. Instead of having a single Change Control Form that forces people to write in a specific way, allow for multiple models of communication that could include meetings, power point presentations, white boards, Visio diagrams, etc.&lt;br /&gt;&lt;br /&gt;Based on the above principles, here is my current favorite flavour of Change Control:&lt;br /&gt;&lt;br /&gt;1. We build our requirements using use case documents that living documents. We currently use Word because its dumb simple and stakeholders can easily open it and change it. We use power point for wire frames and Visio for almost everything else.&lt;br /&gt;&lt;br /&gt;2. Revisions of documents get stored in source code control for safe keeping and history. However, we're not dogmatic about it and in my experience the value of these minor revisions is usually not significant - most stakeholders want to see the current version. We keep them in our repository so that everything is stored together and document revisions are tied to code revisions.&lt;br /&gt;&lt;br /&gt;3. We have iterations every 2 weeks that include review meetings with the entire team including stakeholders. We do a show and tell of all working code and we use the meeting to prioritize and change. We typically do this by opening up documents on the spot, but sometimes we use pen and paper and transcribe the changes right after the meeting.&lt;br /&gt;&lt;br /&gt;4. We use JIRA for day to day tracking of tasks. We treat all changes, bugs, feature requests and tickets the same way. We have a very simple work flow that moves all tasks from open to resolved to closed. Our list of changes can be pulled directly from JIRA as a list of changes. The list of outstanding bugs can be also pulled at any time so we don't need a specific final bug review meeting - we will have been reviewing them on a daily basis.&lt;br /&gt;&lt;br /&gt;5. When we're getting close to deployment, we use white board based checklists to capture the minute details (e.g. make sure the ODBC driver is configured properly) that need to be done to move to production. We check these off by simply crossing them off or wiping them from the list. We have 15-20 minute &lt;a href="http://www.extremeprogramming.org/rules/standupmeeting.html"&gt;stand-up meetings &lt;/a&gt;that includes the Operations Lead so that we're communicating effectively with Operations and they know exactly where things are at as we move into production.&lt;br /&gt;&lt;br /&gt;6. Just before doing a deployment to production, I have a meeting with executive stakeholders with a very high level presentation in power point. It presents the current status, any risks that they need to understand, confidence in going, and high level operations plan. Executives typically don't care about whether the SQL is right - they want to know that the team has confidence that it can deploy safely, has followed the appropriate testing processes and that the team is on standby with a contingency plan in case things go wrong.&lt;br /&gt;&lt;br /&gt;There are lots of variations to this process and many different tool combinations. You can scale the process up or down depending on the size and formality of the project. In addition, if you're working in a specific regulatory context you may need to be producing more formal documents, approvals, audit trails, etc. My suggestion is always prioritize these below communication and if you need to do this for regulatory purposes then do so but keep the work as minimized as possible. Never substitute change control processes for good communication, team collaboration, stakeholder involvement, etc. In addition, remember that Change Control is a means and not an end - working software is the objective and should be focus for the team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1814784521534413035?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1814784521534413035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1814784521534413035' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1814784521534413035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1814784521534413035'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/07/implementing-agile-change-control.html' title='Implementing an Agile Change Control Process'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5736832247133677523</id><published>2007-06-24T11:37:00.000-05:00</published><updated>2007-06-24T13:02:21.906-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Communication of Software Risks</title><content type='html'>One of the interesting challenges in managing a project is estimating technical risk.&lt;br /&gt;&lt;br /&gt;Here is an example of a classic technology risk scenario:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The development team is building an online transaction system that sends orders from an e-commerce system to a warehouse. The e-commerce system is internal, the warehouse is external. The warehouse works on an AS400 system and no one on the team has ever worked with AS400 platforms before. There is a defined web services layer between the two systems which should hopefully hide the workings of the AS400 system behind the layer.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;This is a pretty typical high level description of requirements from a manager, a request for proposal, or an email.&lt;br /&gt;&lt;br /&gt;Most developers look at this and start analyzing all the things that could go wrong...there are dozens of risks just in this one paragraph.&lt;br /&gt;&lt;br /&gt;A project manager might realize that there are some risks involved and if the PM has a technical background might be starting to ask some risk based questions that show some understanding of the potential problems. The worst case scenario is a non-technical PM who thinks that this project is the equivalent of ordering pizza from Domino's - you simply call and expect the order delivered by the guaranteed delivery window.&lt;br /&gt;&lt;br /&gt;Let's assume that the entire team is on the ball, everyone's working together and the team comes together to review the project plan. A risk matrix gets created and the team comes up with the following risks:&lt;br /&gt;&lt;br /&gt;Risk: Web Service might not work&lt;br /&gt;Probability: Medium&lt;br /&gt;Impact: High&lt;br /&gt;&lt;br /&gt;Risk: AS400 might have performance problems&lt;br /&gt;Probability: Medium&lt;br /&gt;Impact: Medium&lt;br /&gt;&lt;br /&gt;Risk: Transactions might not work across the two distributed systems.&lt;br /&gt;Probably: High&lt;br /&gt;Impact: Low/Medium&lt;br /&gt;&lt;br /&gt;and so on....&lt;br /&gt;&lt;br /&gt;This is the critical point where there is a massive communication gap between what a typical PM thinks a risk impact is and what a developer think of a risk impact.&lt;br /&gt;&lt;br /&gt;A PM may think, "Well we have some risks so we should allocated some contingency in the budget. This is a high risk project, so we'll add in 30% contingency to our estimate and a month onto the time line."&lt;br /&gt;&lt;br /&gt;A Developer may think: "If this server cannot move data fast enough, we're dead in the water. It won't matter how much time or money you throw at it because short of hauling out the entire AS400 out the warehouse we're toast."&lt;br /&gt;&lt;br /&gt;Big difference in risk!&lt;br /&gt;&lt;br /&gt;I've seen projects where there were mature team members and did all the traditional risk analysis that is recommended on software projects. But the project still failed because there were fundamental differences in assumptions in what "High Risk" actually meant to cost, time line and project success.&lt;br /&gt;&lt;br /&gt;Here are some common reasons why there are differences in assumptions around risks.&lt;br /&gt;&lt;br /&gt;1. Team members don't all have the same assumptions on impact of a risk. For example, a task is estimated at 3 days but the impact of the risk is "High". So what does that mean to the estimate? Add 10%? Add 50%? What about 10X? In my experience, project managers in particular do not understand the sheer magnitude of software risks - they'll see a risk as "High" and put in contingency of an additional 30% and think they're good to go.&lt;br /&gt;&lt;br /&gt;A 10X risk impact is not unheard of - I've seen it myself on many projects. We had one project where one web service call was supposed to take 3 days and took 30 days because of technical complications.&lt;br /&gt;&lt;br /&gt;2. There are some risks that result in project failure because in some cases requirements are not variable. For example, financial data cannot be more or less correct - its either right or its wrong. So getting to 80% right isn't really valuable - if you cannot hit the 100% mark then your software project fails. So if you have a risk that the data isn't going to be right then it isn't so much that your project went over budget or took too long to deliver - its a total failure because it cannot meet the basic requirements. Same thing with external software dependencies - for example we had a case where we were integrating with a web services framework and there was a bug in one of the supplied web services from the vendor. It wasn't a matter of "let's just find a work around" - the project was effectively dead in the water until that bug was solved.&lt;br /&gt;&lt;br /&gt;Project managers tend to be solution oriented and optimistic, so while they like the idea of contingency, they tend to shy away from the concept that a risk might actually kill their project with no way to get around it.&lt;br /&gt;&lt;br /&gt;3. The "I don't know" estimate will get quantified too early on in the process or not be listened to at all. If your team is saying, "I don't know" as a project manager, what is your approach? Many PMs are forced into providing estimates too early by management, so they simply fudge the "I don't know" into a contingency or pad the estimate. They think that by taking the developer's estimate and doubling it they've been given themselves a massive breathing space to worry about the problem later.&lt;br /&gt;&lt;br /&gt;The cone of uncertainty on typical projects is a lot bigger than most PMs realize - &lt;a href="http://www.construx.com/Page.aspx?hid=1648"&gt;Steve McConnell's work on estimation &lt;/a&gt;pegs the variance at 1600%!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.construx.com/File.ashx?cid=1650"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.construx.com/File.ashx?cid=1650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If the team doesn't have a common understanding of how to quantify the impact of risks, then everyone can be communicating using a traditional risk process but the shared understanding of the impact of any risk will tend to be different.  &lt;br /&gt;&lt;br /&gt;Here are some recommendations for Project Managers for creating an improved risk communication culture:&lt;br /&gt;&lt;br /&gt;1. Vary the risk based on expected uncertainty level and the phase of the project.  For example, if you're in the planning phase the expected uncertainty level is high.  If someone on the team says, "Well we don't really know how that's going to work but we have a plan" that's probably OK.  If you hear the same thing in the middle of QA, then you should be very concerned and adjust accordingly.&lt;br /&gt;&lt;br /&gt;2. Have the team translated risks from labels ("High", "Medium", "Low") to numbers where possible.  In addition, don't assume that one set of labels means the same across the project.  For example, a "High Risk" HTML issue might be something very different than a "High Risk" web services integration issue or performance issue.&lt;br /&gt;&lt;br /&gt;3. Identify the requirements that are absolute and unmovable and pay particular attention to risks that are around them.  For example, in some cases performance is an absolute requirement (e.g. it must serve 30 pages per second) and sometimes it isn't (it must be "fast").  If your requirements are absolute then any risk that hits those requirements will not just cause a delay, an increase in cost, etc. - it will kill your project.&lt;br /&gt;&lt;br /&gt;4. Pay close attention to areas of the project where there is limited flexibility or options.  Compare the flexibility of a creative front end vs. a bought software system.  If someone doesn't like the the front-end, you can rebuild it, change it, etc.  It might cost more, create a time impact, etc. but you've got lots of flexibility for change.  If you buy Microsoft Content Management Server and it has a bug in it your options are pretty limited.&lt;br /&gt;&lt;br /&gt;5. "I don't know" must be a viable option in any discussion.  In addition, the response to "I don't know" should be to go find out - be careful about arbitrary padding of estimates simply to factor it into your plan.&lt;br /&gt;&lt;br /&gt;6. Pay close attention to body language, talent and historical experience.  Relationships matter in software teams and a team that has worked together before has the advantage that the PM starts to recognize the subtleties of individual communication styles and to understand how each person reacts to different questions or risks.  Is John an optimist or a pessimist?  When someone says, "I don't know" are they being cagey or honest?  Teams who have worked together start to intuitive find out these non-verbal cues.&lt;br /&gt;&lt;br /&gt;7. Review risks on a regular basis so that you can refine your strategies to mitigate them.  &lt;br /&gt;&lt;br /&gt;Hopefully that helps you in creating a more pro-active risk based approach and to be aware that just because people the team are calling somet "high risk" they may not actually mean the same thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5736832247133677523?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5736832247133677523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5736832247133677523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5736832247133677523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5736832247133677523'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/software-risk-development-and-pm.html' title='Communication of Software Risks'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1997603907700905134</id><published>2007-06-21T17:57:00.000-05:00</published><updated>2007-06-21T19:00:17.999-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Developer Weasel Words</title><content type='html'>As a development manager or project manager, you here a lot of weasel words and excuses from your staff or from external consultants who are trying to hose you into believing things are better than they are.  In many cases, developers use these phrases to even convince themselves that things are better than they are, resulting in chronic late delivery and poor quality. &lt;br /&gt;&lt;br /&gt;So beware the following phrases from your teams:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;It should work:&lt;/span&gt;&lt;/strong&gt; this usually means that it doesn't.  It also means that it was probably not tested properly as the result is current undetermined.  The word "should" should be taken out every developer's vocabulary - it either does or it doesn't.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;I just need:&lt;/span&gt;&lt;/strong&gt; beware of that word "just".  Its a belittling word meant to make things smaller than they are.  Just take the phrase "I just need to write this component" to be "I need to write this component" and already the magnitude of the work involved grows.  Developers tend to be chronic under-estimators and the use of the word "just" is a sign of that mentality.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Almost done:&lt;/span&gt;&lt;/strong&gt; this is also a weasel word.  When a developer tells you things are "almost done" ask for the specific tasks that are left over immediately.  In addition, keep in mind that projects do not progress linearly - the last 10% is always about 40-50% of the work of the total project.  I've seen projects that are chronically late be "almost done" for 3 months.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;It was tested:&lt;/span&gt;&lt;/strong&gt; this also usually means it that wasn't tested properly.  Ask for a test plan and the specific tests that were done.  If the developer cannot produce these with sufficient evidence that PROVES that it was tested, then it wasn't tested.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;It must be an environment/configuration/deployment problem:&lt;/span&gt;&lt;/strong&gt; this may be actually true, but it usually points to a larger stability problem.  If you cannot build and deploy reliably then why would you have confidence that the code works?  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;If things go smoothly:&lt;/span&gt;&lt;/strong&gt; this I hear a lot, e.g. if we don't hit any snags then we can be done by Friday.  Guess what - you're &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;likelihood&lt;/span&gt; of hitting a "snag" by next Friday is probably high and given the lack of risk based management, the team has probably got no mitigation or contingency strategy.  Then next week, you'll hear the next phrase in our list, "Yes, it could have been done if it weren't for that Snag we had".&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Yes, but, as in "Yes it can be done, but":&lt;/span&gt;&lt;/strong&gt; this means it cannot be done.  Tell your staff to just come clean and say, "No it cannot be done".  Another variant on this is, "Yes it could have been done, if it weren't for marketing, requirements, technical risk, etc."  This simply shows that your developers work in an idealistic world where things never go wrong.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;We'll make up the time at the end:&lt;/span&gt;&lt;/strong&gt; if you're already late by the end of requirements, you're likely going to be even later by the end if you simply keep going on the same track.  In my experience, teams don't dramatically faster as they hit their stride.  Even if there is some efficiency, its nowhere enough to make up for lost time.   &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;I've got it done, but I need to build a few more components for you to be able to see it:&lt;/span&gt;&lt;/strong&gt; then its not done!  Encourage show and tells, code reviews, unit tests, etc. so that code is visible as soon as possible.  Use slicing models so that you can see pieces of the application in weeks, not months.  In addition, code that isn't checked in should never be counted - that means that someone cannot build it sufficiently to share it.  It only counts if you can verify it.  &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Ideally&lt;/span&gt;, its not "done" unless there are sufficient unit tests, a build script, and a document that someone walking into the code repository could check out the project run a build and have all the unit tests pass.  Then the code is done - anything less is mythical.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;I've got it done - I just need to integrate it:&lt;/span&gt;&lt;/strong&gt; The word "Integrate" is a big weasel word.  Think of a web service that adds two numbers together.  The algorithm is one line of code.  But the integration work is huge.  In addition, integration usually means the first time that &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;disparate&lt;/span&gt; teams are bringing code together which is always cause for issues.  Don't under-estimate the integration, especially in today's world of distributing computing, web services, etc.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;It Worked on my Machine!:&lt;/span&gt;&lt;/strong&gt; programmers use this excuse to downplay a bug.  The reality is actually the opposite - it means that you have an intermittent bug which is by far the worst kind of bug to have in your application.   You want bugs to fail quickly and consistently - any variant such as "That's Weird", "That didn't happen yesterday", "That must be a data problem", etc.  is admitting you have a bug that cannot be easily duplicated.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;My recommendations to reduce the amount of excuse making from your team:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Encourage a culture of honesty and team work:&lt;/span&gt;&lt;/strong&gt;  You get these excuses when developers are hiding things, and sometimes this is because you've created a culture that encourages hiding because you don't want an honest answer.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Be ruthless with your quality and talent standards:&lt;/span&gt;&lt;/strong&gt; don't excuse poor talent, bad management or chronic late delivery.  If you create a culture where talent isn't rewarded the bar isn't kept high then you'll be excusing the team to continually strive for excellence.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Expect more than just code:&lt;/span&gt;&lt;/strong&gt; measure performance based on estimation, quality, delivery and team work as well as pure code quality.  If you have a developer who produces great code but cannot deliver on time then that's not a great developer.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Increase visibility and shrink delivery cycles:&lt;/span&gt;&lt;/strong&gt; if you have to show your work on a constant basis and deliver on 2 week iteration cycles, your excuses tend to go away.  You either deliver or you get found out pretty quickly.   Use show and tells, code reviews and continuous integration to see what people are doing on a constant basis.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Don't give half credit for 50% done - its either done or not done:&lt;/span&gt;&lt;/strong&gt;  If your tasks cannot be managed this way, then you should split up your tasks until you can work this way.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Establish what "Done" really means:&lt;/span&gt;&lt;/strong&gt; for example, at a minimum "Done" should mean checked into source code control and able to build into the current branch.  If you're doing Test Driven Development, it should also mean all tests run successfully.   If you have specific performance criteria, then its not "Done" until the performance tests pass.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Use counting techniques to measure wherever possible:&lt;/span&gt;&lt;/strong&gt;  this is a great suggestion from &lt;a href="http://www.amazon.ca/gp/product/0735605351/701-4827125-6225922?ie=UTF8&amp;tag=chriwood-20&amp;amp;linkCode=xm2&amp;creativeASIN=0735605351"&gt;McConnell's book on estimation&lt;/a&gt;.  The more you can count in units, the more accurate you estimation.  So if you can count the number of pages, web services, objects, databases, tables, stored procedures, tasks, etc. that are left to accomplish then you can measure them more easily than if its a big blob of work.  If your requirements aren't well defined enough to count objects, e.g. you don't know how many web pages you're building in your web site, then you're really not in a position to estimate your ship date.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Don't sucker, manipulate or bully your team:&lt;/span&gt;&lt;/strong&gt; If as a project manager, you resort to traditional management tactics such as playing games, being political, establishing a blame culture, or bullying your team you'll lose your credibility and simply encourage lying.  A tortured prisoner will tell you anything you want to hear - the same goes with development teams.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you have a project that operates in the open, has a culture of honesty and establishes a high performance bar, you'll find that peer pressure as well as some overall guidance will get risks, problems and bugs out in the open.  If when you discover these problems people work as a team to fix them instead of blaming each other then every problem solved becomes a victory and not a blame opportunity.  You'll get better answers and improved morale on the team as you set clearer performance expectations.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1997603907700905134?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1997603907700905134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1997603907700905134' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1997603907700905134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1997603907700905134'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/developer-weasel-words.html' title='Developer Weasel Words'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1208231125309099756</id><published>2007-06-18T20:13:00.001-05:00</published><updated>2007-06-18T21:23:25.508-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stakeholders'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>How to be an Effective Stakeholder - Part 2</title><content type='html'>&lt;span style="font-size:130%;color:#3366ff;"&gt;&lt;strong&gt;The Role of the Stakeholder&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://chriswoodill.blogspot.com/2007/06/how-to-be-effective-stake-holder-part-1.html"&gt;&lt;span style="font-size:78%;"&gt;Part 1 - Introduction&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Stakeholders who are effective on projects understand their valuable role. This post articulates what effective Stakeholders bring to the table.&lt;br /&gt;&lt;br /&gt;There are a few different types of Stakeholders:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Direct Customers:&lt;/span&gt;&lt;/strong&gt; if you're lucky, you get end-users as stakeholders. These are great to have because you know that these users represent actual end users who will use the application on a daily basis.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Domain Owners:&lt;/span&gt;&lt;/strong&gt; some stakeholders are involved in software projects because of their domain expertise. Software developers are good at building software, but they're usually not domain experts as well (although some will claim to be). So if you're building a financial application, its important to have someone on the project who knows the minute rules on accounting. Not only is it important to have general expertise, but it's equally important to have domain experts who know the specifics of the business. There are dozens if not hundreds of hidden business rules in any business and in many cases they are only learned through oral tradition. Domain owners provide this expertise.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Customer Group Representatives:&lt;/span&gt;&lt;/strong&gt; if you cannot get direct customers or if your user base is large, then you need to have Stakeholders who can represent the needs of the customer. Be careful about this in that it's important that the Stakeholder is an accurate voice for the customer and doesn't have their own agenda. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Business Representatives:&lt;/span&gt;&lt;/strong&gt; general Stakeholders that represent the actual business. If the business is selling soft drinks, then it's a good idea to have an understanding of how the actual business works and how your application will fit into and support the business of selling soft drinks. In any business, there are also specific experts who own global business areas such as marketing, security, privacy, branding, and customer service. These horizontal service areas are not specific to any vertical project but cross all projects being delivered. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Regardless of the type of Stakeholder, here is what I'm looking for them:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Decision Making:&lt;/span&gt;&lt;/strong&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Stakeholder's&lt;/span&gt; primary responsibility is to make a decision. Should we charge the credit card before we ship the product or after? Should the name field be 100 characters long? Should the colour of the button be purple or blue? There are hundreds of decisions that a software team must make and your role as a Stakeholder is to make the call when asked. &lt;/li&gt;&lt;li&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;Approvals:&lt;/strong&gt;&lt;/span&gt; similar to Decision Making, your job as a Stakeholder is to approve documents, decisions, milestones, etc. &lt;em&gt;When I was a Stakeholder on a project with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Accenture&lt;/span&gt;, they would send me test cases to review. I would simply reply with a single word, "Approved." &lt;/em&gt;Especially with external vendors, teams need a formal mechanism for sign-off before they can move forward.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Opinion and Feedback:&lt;/span&gt;&lt;/strong&gt; in building web sites in particular, there are lots of subjective decisions on what a web site should look like, how it feels, whether it represents the brand, etc. As a stakeholder, your primary job is to have an opinion that can be translated into actions, revisions and improvements. &lt;em&gt;An example of a poor opinion: I saw a graphic design present a screen design to the Creative Director. His opinion was, "I want exactly what you have, but just bigger and bolder!" &lt;/em&gt;How is someone supposed to action that opinion? A good opinion is, "I hate that text - its boring and its too long." It's just as subjective but at least you can action it.&lt;/li&gt;&lt;li&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;Solicitation of Feedback Amongst the Broader Community: &lt;/strong&gt;&lt;/span&gt;Most Stakeholders represent their department, a user community or a business unit. Key &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;deliverables&lt;/span&gt; should be brought back to this broader community for feedback. As a Stakeholder, your job is to help explain, sell the concepts being presented and capture feedback that can be actioned by the team. &lt;/li&gt;&lt;li&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;Be Supportive Externally and Demanding Internally: &lt;/strong&gt;&lt;/span&gt;Stakeholders should be evangelists for the team as it helps boost confidence for the team, helps provide buy-in from the great organization, etc. Internally, Stakeholders should be demanding like a good customer. Stakeholders should be keeping the bar high and making sure that the software team feels that they have to meet a high bar for quality and performance.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;What frustrates software teams to no end is when Stakeholders are not doing their job. Here are some examples of where Stakeholders drop the ball:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Showing up to Meetings Unprepared:&lt;/span&gt;&lt;/strong&gt; if you cannot bother to take 15 minutes to read through a technical document that someone spent 2 weeks writing, what does this say about your level of respect for the team?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Being Late with Approvals or Feedback:&lt;/span&gt;&lt;/strong&gt; when I manage projects, I put review and feedback periods in the project plan. Stakeholders have deadlines for turn around of feedback. Yet time and time again, I've had Stakeholders miss their deadlines with really lame excuses. If you miss your deadlines for reviewing a document, what kind of commitment can you expect for higher risk activities such as building new algorithms or leveraging the latest technologies?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Abusing the Team:&lt;/span&gt;&lt;/strong&gt; this symptom seems particularly bad with external teams being managed by internal Stakeholders. There must be something in management training that tells middle managers to treat external vendors abusively in order to squeeze them for another 5-10% in performance. Unfortunately for many smaller and less mature vendors, the practice works which only reinforces the practice. However, in my experience a mature software team won't take abuse and understand the difference between having high expectations and simple bullying.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Poor requirements:&lt;/span&gt;&lt;/strong&gt; if you're supposed to be a Domain Expert, then you need to be able to know your domain. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Ideally&lt;/span&gt;, your domain is well articulated through existing documents, manuals or practices. If you're supposed to be providing requirements to the software team, then these requirements should be well defined and articulated. &lt;em&gt;Here is an example of poor requirements: we were supposed to build an online store for a client, but no one had given any thought to basic requirements such as tax rules, catalogue structure, content requirements, fulfillment, inventory rules, etc. When we asked basic requirements such as, "What are you current inventory rules?" the answer we got back was, "Well, we don't really have any rules - what do you suggest?". &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Argh&lt;/span&gt;!&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Us and Them:&lt;/span&gt;&lt;/strong&gt; I would highly recommend for Stakeholders to embed themselves into the team as much as possible. The more that Stakeholders are part of the team, the better the communication. If you find yourself viewing yourself as the "customer" and not part of the team, figure out how to get yourself better integrated. Take the team for drinks, start coming to meetings, and support the team by doing your job. When Stakeholders build credibility with the delivery team, it means that when they actually need to put some pressure on them to deliver they'll have credibility to spend instead of simply crying wolf.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I've been on projects as a Stakeholder, a project manager, a technical architect and a sponsor. When the Stakeholder brings their value and integrates highly into the team, it makes a massive difference in the success of a project. If the Stakeholder is flying in and out, using politics and manipulation to get what they want, or being abusive in order to squeeze the team, it tends to put the entire project at risk. As a Stakeholder, I feel responsible for the entire success of the project and I'm not just there to provide input and walk away from the scene. In addition, I don't view software projects as ordering &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;McDonald's&lt;/span&gt; whereby you simply throw in your requirements and drive up to the pick-up window to get your order!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1208231125309099756?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1208231125309099756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1208231125309099756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1208231125309099756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1208231125309099756'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/how-to-be-effective-stakeholder-part-2.html' title='How to be an Effective Stakeholder - Part 2'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5450345251964455308</id><published>2007-06-17T14:23:00.000-05:00</published><updated>2007-06-17T14:28:45.965-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shoutwire'/><category scheme='http://www.blogger.com/atom/ns#' term='Digg'/><title type='text'>Problem with Shoutwire Tag</title><content type='html'>I've &lt;a href="http://chriswoodill.blogspot.com/2007/05/minor-bugs-in-major-web-sites.html"&gt;posted bugs previously&lt;/a&gt; relating to the little Digg and Shoutwire tags that allow you to vote.  The generated CSS tends to be quite buggy and these tags don't play nice together, e.g. having a Digg and a Shoutwire button next to each other is impossible.&lt;br /&gt;&lt;br /&gt;I discovered yesterday that having the Shoutwire Vote for Me tag breaks my blog template completely now.  I'm not sure why it does, but having the Shoutwire TAG means the rest of the page gets mangled with pictures not showing properly, ad words not showing up, etc.  Taking it out instantly restores the blog template to its proper format, so it must the generated HTML.  It fails in both IE 7 and Firefox.&lt;br /&gt;&lt;br /&gt;I've gone through my blog postings and stripped out all the Shoutwire buttons as a result.  You can still go to Shoutwire.com and if you see a posting of mine there you can vote for it on their main site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5450345251964455308?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5450345251964455308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5450345251964455308' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5450345251964455308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5450345251964455308'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/problem-with-shoutwire-tag.html' title='Problem with Shoutwire Tag'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3480857968580487332</id><published>2007-06-17T10:33:00.000-05:00</published><updated>2007-06-17T14:34:20.523-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>How to be an Effective "Stake Holder"</title><content type='html'>&lt;strong&gt;&lt;span style="font-size:180%;color:#3366ff;"&gt;Part 1- Introduction&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Every software project has "Stakeholders". There are other terms used for this role such as "Internal Customer", "Steering Committee Member", "Department Head", "Boss", "Sponsor", "Champion", etc. Sometimes stakeholders are formally identified (usually by assigning them to a project directly) but there are also lots of informal stakeholders as well.&lt;br /&gt;&lt;br /&gt;While the context for these articles is software development projects, in my experience being an effective Stakeholder is consistent across all projects and the same guidelines apply consistently for other projects as well, e.g. marketing projects, facilities projects, etc. As a Director of Information Technology, I play the role of Stakeholder on some projects and been on the delivery side on other projects. I've worked on projects that are internally delivered as well as worked as an external consultant. So I have seen the Stakeholder role from a number of different angles.&lt;br /&gt;&lt;br /&gt;This introductory post gives you an introduction to the role of the Stakeholder and what is expected from you if you have been assigned as one. In future posts, I'll provide some specific techniques, guidelines and suggestions for managing and influencing project teams for Stakeholders.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;Your Boss Comes to You with a New Project...&lt;/strong&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some really bad but unfortunately typical ways that Stakeholders get assigned:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Your boss has been assigned the role and doesn't want to do it. So he or she delegates it to you. You can continue to delegate down if you choose to do so. &lt;em&gt;I've actually had this happen to the point where the original stakeholder was the VP of Marketing and by the time the project had started a junior copy editor showed up saying, "I was told that I'm to represent marketing on this project"! &lt;/em&gt;&lt;/li&gt;&lt;li&gt;You're in a role of authority and someone on the project thinks you should be consulted. For example, you're the Director of Marketing and someone in HR decides that they want to change the web site to have job postings. You get roped in because you've issued the policy that no one changes the web site without your input. You're now a Stakeholder!&lt;/li&gt;&lt;li&gt;The project is half way through and someone realizes they need your input. This happens to Operations teams a lot - 80% of the way through development, someone on the team realizes that they need 10 more servers! As the person owning this non-budgeted purchase you're now a Stakeholder!&lt;/li&gt;&lt;li&gt;You're asked to join or are already part of a committee that regularly meets to discuss general issues. For example, many organizations have branding committees, privacy committees, project review committees, etc. Sometimes projects will make the entire committee a Stakeholder. &lt;em&gt;I had this experience once working on a project building a government web site - there was a permanent "web committee" with 7 members on it who had to meet on every issue and come to consensus on every change. The entire committee was a Stakeholder.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you find yourself getting labelled as a Stakeholder in any of these scenarios, beware! They are high risk and put increased risk on the project. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#3366ff;"&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Here are some recommendations on when to sign-up to be a Stakeholder.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Be empowered and qualified to be a stakeholder. The primary role of a Stakeholder is to make decisions and provide input. If the project is expecting a VP level Stakeholder and they get the VP's secretary, they're not getting a stakeholder who is qualified or empowered to make decisions.&lt;/li&gt;&lt;li&gt;Avoid Stakeholder proxies. Stakeholder proxies are people who show up to all the meetings, collect a lot of notes but then cannot make decisions on their own. If the answer to questions asked of you is typically, "Well I need to ask my boss whether we're allowed to do that" then tell your boss that the project really needs the boss to be the Stakeholder, not you.&lt;/li&gt;&lt;li&gt;Be prepared to commit a minimum of 2-3 hours a week to the project. If you cannot commit to the time, then having you in the loop just creates additional communications overhead for the project team.&lt;/li&gt;&lt;li&gt;If you are primary stakeholder or if you are providing extensive documentation, business expertise, or testing support then expect this time commitment to be considerably higher. For example, we had a project to deliver a new B2B order entry system. One of our stakeholders was the person who ran the B2B business. During requirements gathering, she was involved in the project about 20-30 hours a week. During development, she was involved about 10 hours a week to clarify requirements, approve changes, etc. During testing, she was involved 40-50 hours a week to help test key functionality, provide clarification on missing requirements, facilitate testing with other people in her department, etc.&lt;/li&gt;&lt;li&gt;Stakeholders should be established up front and given ample warning of expectations. You should know you're on a project from the beginning even if you won't be needed until further down the line. In addition, you should have a context for the entire project and not just be isolated to your area. &lt;/li&gt;&lt;li&gt;Beware of people randomly assigning you as a Stakeholder through conversations in the hall, informal emails, etc. It may come back at you if the project turns south.&lt;/li&gt;&lt;li&gt;The inverse of the above is don't assign yourself as a Stakeholder simply because you're in a position of power. Simply inserting yourself into a project is not an effective way to be a Stakeholder. In addition, don't take credit for projects where you just went to a single meeting - that's not being a Stakeholder!&lt;/li&gt;&lt;li&gt;If you work in a traditional departmental structure, switching to a project based model will require radical changes in how department heads interact with project teams. Many Directors assume that if a single resource of their department is on any project, they automatically get to have a say in every project decision. Even worse, some Directors simply reserve the right to sit on the sidelines and snipe at the project teams at any time at random. &lt;em&gt;You'll see this in emails coming from Directors that start with, "I noticed this project is trying to use MY resource (equipment, people, brains, etc.) and before I ALLOW YOU to do so, I must REVIEW AND APPROVE this project".&lt;/em&gt; Don't assume that just because you're a Director you're automatically a Stakeholder on every project!&lt;/li&gt;&lt;li&gt;Avoid projects where there are many Stakeholders, especially if there is no Stakeholder hierarchy or specific areas of ownership. &lt;em&gt;Here is a good sign of too many stakeholders - if there are more stakeholders than project team members! &lt;/em&gt;&lt;/li&gt;&lt;li&gt;Try to be on projects where you have a personal interest in their success. This creates investment, accountability and passion. Part of your role as a Stakeholder is to be a champion, so having a personal stake in the success of the project makes a huge difference for you and the project team. If your career is on the line because of a project, do you think you're going to be a great Stakeholder and do what it takes to be responsive? &lt;em&gt;Lesson to executives - make your Directors bonuses tied to project targets, goals and successes and not just the running of the department.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Depending on where you work, you will more or less control over the projects in which you are responsible. However, all this means is that the techniques you use are more or less political There are lots of ways to get on and off a project - some of them explicit and some of them implicit (More on this in future posts). In addition, if you have no choice but to be the Stakeholder for a project then there are things you can do to improve your contribution to the project and ensure a greater chance of success. &lt;/p&gt;&lt;p&gt;Stay tuned for future posts for more recommendations on how to be a better Stakeholder...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3480857968580487332?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3480857968580487332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3480857968580487332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3480857968580487332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3480857968580487332'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/how-to-be-effective-stake-holder-part-1.html' title='How to be an Effective &quot;Stake Holder&quot;'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5302695597494276667</id><published>2007-06-12T21:40:00.000-05:00</published><updated>2007-06-17T12:05:10.738-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Why Agile Software Projects are Good for Customers</title><content type='html'>We have two software projects that are going on at the Foundation. Project #1 is just finishing. It was not managed by me and it was done using a traditional waterfall death march type methodology. Project #2 is being managed by me and we're using a traditional &lt;a href="http://astore.amazon.ca/chriwood-20/detail/0131240714/701-5880578-8430765"&gt;Agile project management&lt;/a&gt; approach.&lt;br /&gt;&lt;br /&gt;Comparing the two projects really shows the different in the benefits and obligations of the customer in an agile project:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Project #1 is 100% over original estimate for no apparent reason. The customer gave up trying to even get a date from because they haven't seen any &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;deliverables&lt;/span&gt;, don't even really understand the scope of work and just want it done.&lt;/li&gt;&lt;li&gt;In Project #1, there was about 1 month just spent trying to define requirements. There were dozens of meetings trying to nail down field mappings with no code being written in the meantime (which starts to explain why the project is late). The right people were never in the room and the developers got different answers from different people.&lt;/li&gt;&lt;li&gt;In Project #1, despite the investment in time, the output in terms of requirements documentation and certainty of scope was quite poor. Despite the investment, the requirements still changed up until the last week before testing including major business rule corrections.&lt;/li&gt;&lt;li&gt;In Project #2, we've taken a traditional Agile PM approach. We include the customer in every meeting (usually once a week) and we are using a combination of use cases and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;wire frames&lt;/span&gt; to document requirements. This is the first time in the organization that the customers have seen either format so its a bit of a learning curve in terms of how to read them. But it took about an hour of reading through use cases before the customer fundamentally got the value of such a document. &lt;/li&gt;&lt;li&gt;In Project #2, I got my lead technical architect to start prototyping on day one. By week 2 of the project, we already have a prototype &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;writing&lt;/span&gt; in .NET using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SQL&lt;/span&gt; Server 2005. The data model is about 50% done. But before even the documentation is done we have a working model. &lt;/li&gt;&lt;li&gt;In Project #2 for project management we've taken an &lt;a href="http://www.extremeprogramming.org/rules/iterationplanning.html"&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;Iteration&lt;/span&gt; Cycle&lt;/a&gt; of 2 weeks as the basis for development. We have an architecture/planning/requirements spike for the first 2-3 weeks but have already started coding. Every Iteration has a plan to deliver a list of use case implementations and related wire frames as fully functional code. We have formal show and tell sessions at the end of each cycle.&lt;/li&gt;&lt;li&gt;In Project #2, we have a proper project plan with real estimation. Estimation is done at the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;wire frame&lt;/span&gt; and use case level and tasks are broken down to about 1-3 days in duration. In my experience anything more granular is a waste of time and anything more becomes unpredictable and subject to error. &lt;/li&gt;&lt;li&gt;In Project #2, we will be using Test Driven Development and Customer Testing all the way through the project as well as Continuous Integration. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The experience so far from a customer perspective has been really interesting so far:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Customer participation on Project #2 has been extremely high and involved. The customer role has been really well defined and our stakeholders have &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;been&lt;/span&gt; good at providing the right level of input. &lt;/li&gt;&lt;li&gt;There is a good trust relationship and a sense of team - it isn't a US vs. Them approach. We're not delivering software for a customer - we're all as a team delivering on a project. &lt;/li&gt;&lt;li&gt;Our ability to shift priorities and change the schedule is highly responsive. For example, our marketing department is working with the team to figure out the content for the application and its taking a lot more time than expected. So we've started on the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;back end&lt;/span&gt; logistics sections and left the front-end until the end in order to give the marketing folks the most &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;leeway&lt;/span&gt;. By having &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;check ins&lt;/span&gt; every two weeks we can easily adjust. &lt;/li&gt;&lt;li&gt;In addition, because the application is built in vertical slices instead of horizontal ones, we don't have to have 100% of one tier done before moving to the next one. We can simply move from front end to back and hook together some disconnected pieces as they come available.&lt;/li&gt;&lt;li&gt;The project is simply more fun and more of a team based approach. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Some recommendations to software project teams in treatment of their customers (whether internal or external) in an agile context:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Don't patronize your customer because they've never done software projects before. Don't treat them like idiots because they've never read use cases or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;UML&lt;/span&gt; diagrams or database models before. If you take an hour to introduce the concepts and travel light, you'll find that customers "get it" rather quickly and then see the value of these requirements tools.&lt;/li&gt;&lt;li&gt;Always remember that the customer is the end user and not a stakeholder representing an end user. For example, many Directors of Marketing act as the "customer" in web project teams. They're not. They're representing a customer. Everyone on the team needs to always focus on the end customer and stakeholders always have to be able to filter out their own biases and represent the end user successfully.&lt;/li&gt;&lt;li&gt;Customers will buy into an agile project management approach if it produces results - period. If you cannot deliver software on time or its poor quality, an Agile approach won't save you and will quickly degenerate. Shorter iteration cycles means there is no where to hide, so talent/experience and ability to deliver are critical early success factors.&lt;/li&gt;&lt;li&gt;Show and Tells are critical to the Agile Project. We use to have them once a week on Fridays. Make Show and Tells Fun! We use to dim the lights and use the projector and have popcorn and snacks. Even if its some boring application, hype it up and celebrate it. &lt;/li&gt;&lt;li&gt;Customers should be the leading evangelists as well - some customers have been taught to be the evil task masters and try to crush development teams because they think it gets the team to work harder. I can tell you from the other side of the team that it doesn't work - developers work less, produce poorer quality and &lt;a href="http://blogs.msdn.com/nickmalik/archive/2007/04/03/never-flip-the-bozo-bit-on-your-customer.aspx"&gt;flip the bozo bit&lt;/a&gt; on you in short order.&lt;/li&gt;&lt;li&gt;One of they values of an Agile project team is transparency and team work. Transparency is a double edged sword - customers have to be prepared to hear the bad news with the good and to help the team prioritize effectively. Good customers develop a relationship with the team that allows them to be trusted - its critical in order to encourage honest dialogue.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Overall, so far Project #2 is doing much better than Project #1. It has lots of risks and we may not be able to deliver all the functions asked for in the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;time line&lt;/span&gt;. But the requirements are well understood, communication is open and use cases are prioritized. We've already had conversations about what parts of the scope could drop if needed and contingency plans if we go late. Customers are in the loop at all times and a core member of the team. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5302695597494276667?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5302695597494276667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5302695597494276667' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5302695597494276667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5302695597494276667'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/why-agile-software-projects-are-good.html' title='Why Agile Software Projects are Good for Customers'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5973965259691199620</id><published>2007-06-12T21:31:00.000-05:00</published><updated>2007-06-17T12:19:17.730-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Agile Just Feels Natural</title><content type='html'>Have done agile development for most of my career, I find it interesting when I first introduce the concepts to new developers.  We're just starting to introduce it to people in my department, and we have got started with reading through the usual standard books by Ambler, Fowler, Beck, et al and I've start acting as the Agile PM on some key software projects.  &lt;br /&gt;&lt;br /&gt;What I find interesting is when I introduce it to developers, the universal reaction seems to be the following:&lt;br /&gt;&lt;br /&gt;1. What a breath of fresh air - this is how we should have doing software all along.&lt;br /&gt;2. I've already been using these techniques but didn't have a methodology to explain it and wasn't rewarded for it.  I find that developers who have been raised in the classical SDLC have secretly rebelled against it and agile methodologies simply validate the rebellion.&lt;br /&gt;3. The biggest flaw as most software developers experience with the traditional waterfall model (or worse the traditional death march just get it done by a fixed deadline approach) is that they now have some confidence in their work and ability to deliver against timelines.&lt;br /&gt;4. When I find developers revert back to their old bad habits, they almost always run back into trouble and then slap themselves in the head of going back to hiding their risks, not being iterative and letting projects slip into death marches.&lt;br /&gt;&lt;br /&gt;See my next post on why Agile is Great for Customers...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5973965259691199620?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5973965259691199620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5973965259691199620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5973965259691199620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5973965259691199620'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/agile-just-feels-natural.html' title='Agile Just Feels Natural'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2468180450560841866</id><published>2007-06-07T20:03:00.000-05:00</published><updated>2008-12-12T22:40:37.418-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>How to Use Microsoft Project Efficiently</title><content type='html'>&lt;p&gt;I've worked with a lot of project managers who don't really know how to use MS Project efficiently. I was trained well on MS Project because in the consulting business, you have to be able to build million dollar project plans in days for sales pitches.  Our PMO figured out a number of ways of using Microsoft Project more efficiently.&lt;br /&gt;&lt;br /&gt;Here are my recommendations:&lt;br /&gt;&lt;br /&gt;1. Get rid of the GANTT chart by dragging it to the right. Use the extra space for some additional columns.&lt;br /&gt;&lt;br /&gt;2. Go to Window and click on Split. This will bring up the Task Form dialogue box at the bottom. You will find that entering data in the task form is much more efficient and visible than any other method.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://2.bp.blogspot.com/_V5m6b8L54Jo/RmitNgHBNoI/AAAAAAAAAEI/kQbm1iPaxOM/s1600-h/ScreenHunter_02+Jun.+07+21.13.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5073495427702142594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/RmitNgHBNoI/AAAAAAAAAEI/kQbm1iPaxOM/s320/ScreenHunter_02+Jun.+07+21.13.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Go to Tools-&gt;Options and click on Schedule. Change the Default Task Type to Fixed Duration and click off the box marked "New Tasks are Effort Driven". The reason is that when you're estimating, you'll find in most cases its easier to think in duration and allocating a % of a persons time across that duration than thinking about person hours. For example, instead of thinking of a task taking 25 hours, its easier to think about a task taking 3 days at 100%. Its also easier to think about a task as taking 2 people x 3 days, especially if you're days are 7.5 hours (do you think of a task as taking 50% of a week or 18.75 hours?)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_V5m6b8L54Jo/RmitCgHBNnI/AAAAAAAAAEA/FL3YiKnlI18/s1600-h/ScreenHunter_01+Jun.+07+21.12.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5073495238723581554" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/RmitCgHBNnI/AAAAAAAAAEA/FL3YiKnlI18/s320/ScreenHunter_01+Jun.+07+21.12.gif" border="0" /&gt;&lt;p&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Don't put in any absolute dates in your plans. Make all your dates based on dependencies except for the basic project start date.&lt;br /&gt;&lt;br /&gt;5. For tasks that you want to go in parallel, use the SS predecessor type to make sure that multiple tasks start at the same time.&lt;br /&gt;&lt;br /&gt;6. Go to Format-&gt;Text Styles and click on Item to Change. Select Critical Path and change the colour to something obvious (I use &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;BOLD RED&lt;/strong&gt;&lt;/span&gt;). This will help you in making sure that every task has the appropriate predecessor set - if it doesn't, you'll notice that the critical path stops half way through your project plan. It should highlight tasks from the beginning to the very end of your project.&lt;br /&gt;&lt;br /&gt;7. Lets assume you have a project plan that is way past your target timeline and you want to now parallel your effort by adding more people. Many project managers will start creating streams of tasks in parallel with complex dependencies. But here is a simpler way if all you want to know is how many people you need to complete the work on time - simply take your tasks, change them to fixed work and increase the percentage to 400%, 500%, etc. until you get your timeline in the ball park. If its 500%, that means you need 5 full time developers to get the work done.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTE: the one draw back to this approach is that it doesn't tell you when each task will be done. But in my experience, this is not that useful as development projects tend to have 50 tasks that can largely be done at any time over a longer period and you simply spread the load across a pool of developers until the work is done. If there are specific tasks that are dependent, then set them up as a seperate stream. But if its simply a pool of tasks that need to get done this technique is much faster and simpler to manage.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;8. Don't allocate overhead resources to tasks (e.g. your PM, your TA, your QA lead, your stakeholders, etc.) unless you have very specific requirements. In most cases, you can estimate an overhead resource at a % allocation across an entire project phase. For example, I'll allocate a PM at 30% for the duration of the project, a TA for 20%, etc. This again is a bit of a cheat - if you want to plan that a PM is going to be busy at 100% on Wednesday and 20% on Thursday and 40% on Friday, then this technique fails. In my experience, this is not the way overhead resources work and in the end having your project plan reflect this micro-detail is not worth the work to maintain it.&lt;br /&gt;&lt;br /&gt;9. Here are a few ways to calculate contingency: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Click on Insert Column and pick Cost1.  Right click on it and select customize field.  Then click on Formula and type in Cost*1.10.  This will calculate contingency at 10%.  If you want 25% contingency then use Cost1*1.25.  Make sure that Calculation for Task and Summary Rows has Rollup selected and Sum.&lt;br /&gt;&lt;br /&gt;NOTE: There is a bug in Project 2003 where it sometimes does recalculate fields properly.  If you notice this, then go to Tools-&gt;Options-&gt;Calculation and click Calculate Now.  This will recalculate the field.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_V5m6b8L54Jo/Rmix9gHBNpI/AAAAAAAAAEQ/0oj2r0-Li4c/s1600-h/ScreenHunter_03+Jun.+07+21.33.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_V5m6b8L54Jo/Rmix9gHBNpI/AAAAAAAAAEQ/0oj2r0-Li4c/s320/ScreenHunter_03+Jun.+07+21.33.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5073500650382374546" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a task called Contingency and set a price for it.  This is good for setting an arbitrary contingency amount.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a task called Contingency and assign a resource called Contingency at sufficient hours to drive up the price.  The advantage of this approach over the one above is that it means your total hours assigned also has contingency built it and your hourly rate stays consistent with what it would be without the contingency assigned.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a task called Schedule Contingency and set the duration to an amount of time with no resources attached.  Bury the task where you think the schedule risk is going to occur - I usually put it into the QA phase of the project as this is the mostly likely area where you'll need the contingency.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;10. Save often.  I've had too many cases where Project crashes and there is no automatic recovery.  In addition, there is only one level of Undo in Project 2003 (this is fixed in 2007) so if you make some significant changes its tough to revert them.&lt;br /&gt;&lt;br /&gt;11. Use the keyboard as much as possible.  Learn keyboard shortcuts.  Don't drag things around when you can copy and paste.  Don't use your mouse to indent when you can click on Alt-Shift-Right Arrow.  Typing in predecessors manually instead of clicking on the link task button in the toolbar generally is faster.&lt;br /&gt;&lt;br /&gt;Hopefully, that will help speed up your MS Project work dramatically.  If you work this way, you'll find that planning with MS Project is feasible.  If you're doing it the traditional way by dragging grantt bars around you'll find a major speed improvement working this way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2468180450560841866?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2468180450560841866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2468180450560841866' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2468180450560841866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2468180450560841866'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/how-to-use-microsoft-project.html' title='How to Use Microsoft Project Efficiently'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_V5m6b8L54Jo/RmitNgHBNoI/AAAAAAAAAEI/kQbm1iPaxOM/s72-c/ScreenHunter_02+Jun.+07+21.13.gif' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1643324639529995157</id><published>2007-06-07T07:23:00.000-05:00</published><updated>2007-06-17T12:05:42.902-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Low Tech Approaches to Requirements Gathering - Part 2</title><content type='html'>For those who missed &lt;a href="http://chriswoodill.blogspot.com/2007/06/low-tech-approaches-to-requirements.html"&gt;Part 1&lt;/a&gt;, I wrote on how to use low tech tools such as paper, Post-IT Notes, whiteboards, etc. to gather requirements.&lt;br /&gt;&lt;br /&gt;In this post, I'll describe how to better use tools such as Office, Project, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Visio&lt;/span&gt;, etc. to gather requirements.&lt;br /&gt;&lt;br /&gt;Here are my recommendations about approaching tools such as these in an agile context:&lt;br /&gt;&lt;br /&gt;1. Use "Just Enough" tools. Don't use Rational Rose for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;UML&lt;/span&gt; diagramming if &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Visio&lt;/span&gt; will do quite nicely.&lt;br /&gt;&lt;br /&gt;2. Buy the absolutely best tools for the job. In theory, you can write .NET applications using Notepad and command lines tools and save a few bucks on licenses. But the productivity will be poor and learning curve will be worse. Don't allow your organization to scrimp on tool costs - in my experience if its the right tool for job, paying the $500-1000 for a particular tool is worth the cost.&lt;br /&gt;&lt;br /&gt;3. Invest in tools that are standardized. If you're working in Java, use Eclipse. If you're working in .NET, using Visual Studio. If you're an Oracle &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;DBA&lt;/span&gt;, get Toad in your office. If you want a source control tool, get &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;VSS&lt;/span&gt;, Subversion or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CVS&lt;/span&gt; and not &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Seapine&lt;/span&gt;. That way when you go hiring for new developers, they've probably used your tools before.&lt;br /&gt;&lt;br /&gt;4. Get really good at using the tools. It sounds like a basic suggestion, but I don't know how many project managers I've worked with don't really understand Microsoft Project. If you set up project in particular ways such as exposing the dependency columns, splitting the window to have the resource allocation on the bottom instead on the side, getting rid of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;GANTT&lt;/span&gt; chart altogether, etc. productivity goes up considerably. Same thing with Word - the first thing I do with any document sent to me is look at how many Styles are being used and typically I find hundreds of them. Whomever wrote the document didn't understand how styles work, why they improve productivity, etc.&lt;br /&gt;&lt;br /&gt;5. Buy tools that are easy to learn. Again, another dumb suggestion but I look for tools that a junior developer or programmer can understand. In many cases, this means buying more tools as the simplest ones can be single purpose. I've rarely come across a monster tool that works as a really good Swiss Army Knife for all occasions. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;profiler&lt;/span&gt; I use though is stupid simple - its from &lt;a href="http://www.blogger.com/www.red-gate.com"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;RedGate&lt;/span&gt;&lt;/a&gt; and you load it up, point it at your project and start profiling in about 30 seconds. Its dumb simple to learn and cheap as well.&lt;br /&gt;&lt;br /&gt;6. Have everyone have access to all the tools and have everyone knowledgeable about them. For example, I've worked in organization where only the Senior Project Managers were "allowed" to have Microsoft Project. If you weren't a Senior PM, then you had to either use Excel or find a Senior Project Manager to help you build a project plan. Technical resources should be able to open up a project plan as well - if you want your team to be accountable for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;deliverables&lt;/span&gt;, telling them that they're not important enough to see the plan sends the wrong message!&lt;br /&gt;&lt;br /&gt;7. Automate work as much as possible. Use Continuous Integration, Test Driven Development, build scripts, O/R mapping layers, code generators, documentation generators, etc. where appropriate to automate drudgery work. Invest in time sheet systems, collaboration spaces, source code control systems, etc. where appropriate instead of tracking things manually.&lt;br /&gt;&lt;br /&gt;8. Remember that every document, artifact and tool costs money to buy and to maintain. Every software license has maintenance costs. Every document takes up space on a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;file server&lt;/span&gt;. Artifacts have to be managed, secured, backed-up, etc. So &lt;a href="http://www.agilemodeling.com/principles.htm#TravelLight"&gt;travel light &lt;/a&gt;as product just enough documentation. Use just enough tools to do the job which also usually means use the ones that are the most productive. Remember that emails are documents as well - if you're finding that you're getting hundreds of emails a day, figure out how to get your team to be more concise, more action oriented and spend the majority of their time producing &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;deliverables&lt;/span&gt; instead of documents!&lt;br /&gt;&lt;br /&gt;9. Get the fastest computers you can afford. Get two monitors minimum for every developer. Get a good video card. If you have to wait 20 minutes to do a build, trying to do agile development is going to be tough. If paying an extra $500-1000 will cut that build time to 5 minutes then I would pay the money as it will result in massive productivity improvements on a daily basis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1643324639529995157?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1643324639529995157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1643324639529995157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1643324639529995157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1643324639529995157'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/low-tech-approaches-to-requirements_07.html' title='Low Tech Approaches to Requirements Gathering - Part 2'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3416974144336546674</id><published>2007-06-05T18:30:00.000-05:00</published><updated>2007-06-05T19:53:37.111-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Low Tech Approaches to Requirements Gathering: Part 1</title><content type='html'>&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;a href="http://blogs.conchango.com/Admin/ImageGallery/blogs.conchango.com/Howard.vanRooijen/post-it.gif"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://blogs.conchango.com/Admin/ImageGallery/blogs.conchango.com/Howard.vanRooijen/post-it.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the tenents of &lt;a href="http://agilemanifesto.org/"&gt;agile development&lt;/a&gt; is &lt;em&gt;&lt;a href="http://www.agilemodeling.com/essays/agileDocumentation.htm"&gt;just enough documentation&lt;/a&gt;&lt;/em&gt;. I would recommend adding another suggestion: just enough tooling.&lt;br /&gt;&lt;br /&gt;The boss comes to you and says, we need a project plan for this large software project. Budget is about $1 million and I need it done in 6 months. Figure out what is required, how many resources you need and what kind of scope can be delivered.&lt;br /&gt;&lt;br /&gt;So how many of you have already reached for Microsoft Project?&lt;br /&gt;&lt;br /&gt;Forget it for now - come back to it after you've tried some more low tech approaches. Here are some suggestions in order of really low to medium tech approach:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;1. Talking:&lt;/span&gt;&lt;/strong&gt; before you start visualizing, diagraming, or white boarding, start talking! Some people talk and diagram at the same time (I do) but I've been to too many meetings where an architect gets up to the front of the room and the team sits there for 30 minutes waiting for the person to finish his fancy whiteboard picture.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;2. Piece of paper:&lt;/span&gt;&lt;/strong&gt; I love white boards, but they're hard to carry to a bar, a coffee shop, an airplane, etc. So keep a sketchpad, a napkin, etc. and use it as your white board.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.agilemodeling.com/artifacts/useCaseDiagram.htm"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.agilemodeling.com/images/models/whiteBoardSketchVeryClean.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;3. White board:&lt;/span&gt;&lt;/strong&gt; the number one tool for an agile PM. If you want to record your white board, take a digital picture of it!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Note: Make your white boards portable. Get the white boards that are on wheels or make them small enough that you can move them from desk to desk. We used to have our release checklist on white boards and it worked great - we could leave it up permanently (without the PLO in a meeting room) and then we would erase things off the board as they got done. This also stops the need for dedicated planning rooms - simply bring the tools with you.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bigvisiblecharts.com/blog/2004/03/"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.bigvisiblecharts.com/images/whiteboard.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;4. Big sheets of paper and Post-IT Notes:&lt;/span&gt;&lt;/strong&gt; Ever done a web site map with a big sheet of paper, some markers and post-it notes? Try it and you'll never go back to using Visio to do site maps again.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note: If you want to be really advanced, use coloured Post-IT Notes. Get Red, Yellow, Green and you can use them to connote priority, level of difficulty, etc.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;5. Paper templates:&lt;/span&gt;&lt;/strong&gt; if you find yourself redrawing, create some templates in word and then print them off. For example, don't draw yourself a calendar each time - simply print off one in outlook and then start writing on it.&lt;br /&gt;&lt;br /&gt;All of these techniques mean no use of a computer (except for create a couple templates). You can use these techniques in any environment that has access to an Office Depot.&lt;br /&gt;&lt;br /&gt;Low tech approaches to planning, requirements gathering, design, etc. have some specific benefits:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;1. No license costs:&lt;/span&gt;&lt;/strong&gt; while this isn't such an issue with Project, if your development tool standard is Rational Rose, Together Soft or some other expensive IDE where every user must fork out thousands to build a UML diagram, a project plan or a document then using lower tech approaches will have dramatic cost savings.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;2. Encourage collaboration:&lt;/span&gt;&lt;/strong&gt; if you get people to talk, to collaborate and to physically draw, use construction paper, or write the collaboration happens naturally.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;3. Take away bias:&lt;/span&gt;&lt;/strong&gt; If you're a technical architect, you think in objects. If you're a database designer, you think in tables, stored procedures, queries, etc. If you're a project manager, you think in gantt charts, dependencies and resources. So which toolset do you want to work with together? Post-it notes makes everything give up their biases and focus on real requirements.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;4. Speed:&lt;/span&gt;&lt;/strong&gt; How fast are you really with Project, Visio, Word, etc. I'm a power-user on all these tools but I still find whiteboards are faster.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jkarlsson.com/blog/2006/07/"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.jkarlsson.com/blog/wp-content/wb2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;5. Freedom to reboot:&lt;/span&gt;&lt;/strong&gt; People get attached to their work. In addition, if you've spent the past 2 hours making sure the lines all connect properly to the boxes in Visio or making sure that you've leveled your resources in Project you really don't want to relive that experience in the same afternoon. But whiteboards are really easy to reboot and people don't get as attached to Post-IT notes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;6. Multiple models:&lt;/span&gt; &lt;/strong&gt;If you use computer based tools, its more difficult to use multiple models. You need Visio for your wireframes, you need Word for some documents, you need Project for your gantt, etc. The amount of tools required to support a multiple-model approach. Alternatively, you get sucked into the idea of using one BIG GRANDIOSE TOOL - enter in the Rational Rose, MDL, Case Tools, Heavy IDEs, etc. that try to be all things to all people and cost a fortune in the process.&lt;br /&gt;&lt;br /&gt;One of the challenges with low-tech approaches is how to translate them into digital, cleaned-up format for posterity. Here are some basic suggestions:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;1. Don't bother:&lt;/span&gt;&lt;/strong&gt; every document requires upkeep, so don't bother capturing every design decision in a fancy document unless its really necessary. Low-tech documentation is more about the process of thinking through drawing then creating fancy documents. Keep the top 10% of what comes out and dump the rest.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;2. Take a picture:&lt;/span&gt; &lt;/strong&gt;take a picture of your white board - you've now got documentation! Put it on your WIKI, store in Word documents with notes, etc. and you're good to go.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;3. Data-entry:&lt;/span&gt; &lt;/strong&gt;sometimes you want to capture the notes, diagrams, etc. in a digital file so it can be further manipulated. So at the end of the meeting, take the 20 minutes it requires in most cases to data-enter it using the right tool. Better yet, get your junior or admin assistant to do it for you - why have a $100K technical architect creating circles in Visio when a $40K secretary could do it for you?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note: this is probably an out-sourcing opportunity as well. Do some white boarding, take a picture and then send it overnight to diagrammed in India. Walk in the next morning with your fancy new diagram complete with colour coding and code stubs created!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Once you've done some design work in a low-tech manner, then use a computer based tool if you need it. See tomorrow for part 2 where I discuss how to use the computer in a low tech way and also how to use the existing tools more efficiently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3416974144336546674?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3416974144336546674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3416974144336546674' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3416974144336546674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3416974144336546674'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/low-tech-approaches-to-requirements.html' title='Low Tech Approaches to Requirements Gathering: Part 1'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-1874538363188414206</id><published>2007-06-04T21:15:00.000-05:00</published><updated>2007-06-17T12:05:56.244-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><title type='text'>I'm Somehow Ranked 6 for the Google Phrase "Buy Books"</title><content type='html'>I have an Amazon affiliate store (see the link to the right).  It has a few books in it, but not much more.  I have never received a sale through this link.&lt;br /&gt;&lt;br /&gt;Yet my friend Jordan pointed out today that if you search on "Buy Books" the link to my store shows up as ranked number 6 in Google's list!&lt;br /&gt;&lt;br /&gt;How is this possible?  What does this really say about Google's ability to filter results?  Is it simply because I'm a random Amazon store?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-1874538363188414206?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/1874538363188414206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=1874538363188414206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1874538363188414206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/1874538363188414206'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/im-somehow-ranked-6-for-google-phrase.html' title='I&apos;m Somehow Ranked 6 for the Google Phrase &quot;Buy Books&quot;'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-6632053161589554167</id><published>2007-06-03T14:00:00.000-05:00</published><updated>2007-06-17T12:06:09.449-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>Check out Funny or Die</title><content type='html'>Check out the new site from Will Farrell, &lt;a href="http://www.funnyordie.com"&gt;Funny or Die&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object id="myFlash" type="application/x-shockwave-flash" width="464" height="380" wmode="transparent" data="http://www.funnyordie.com/v1/flvideo/fodplayer.swf?channel=0|99|0&amp;ratename='IMMORTAL'&amp;rating=5&amp;ratedby=847&amp;canrate=&amp;VID=74&amp;file=http://funnyordie.vo.llnwd.net/o16/74.flv&amp;autoStart=false"&gt;&lt;param name="movie" value="http://www.funnyordie.com/v1/flvideo/fodplayer.swf?channel=0|99|0&amp;ratename='IMMORTAL'&amp;rating=5&amp;ratedby=847&amp;canrate=&amp;VID=74&amp;file=http://funnyordie.vo.llnwd.net/o16/74.flv&amp;autoStart=false" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="swliveconnect" value="true" /&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.funnyordie.com/v1/flvideo/fodplayer.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" scale="noScale" salign="TL" bgcolor="#000000" flashvars="channel=0|99|0&amp;ratename='IMMORTAL'&amp;rating=5&amp;ratedby=847&amp;canrate=&amp;VID=74&amp;file=http://funnyordie.vo.llnwd.net/o16/74.flv&amp;autoStart=false" allowfullscreen="true" height="380" width="464"&gt;&lt;/embed&gt;&lt;a href="http://www.funnyordie.com/v1/view_video.php?viewkey=3efbc24c7d2583be6925"&gt;The Landlord&lt;/a&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;While YouTube has volume, the sheer amount of it means that it suffers from mediocrity.  If you search for something specific you'll find some content that is good, but just browing for entertainment is pretty limited given the sheer amount of garbage content.&lt;br /&gt;&lt;br /&gt;Funny or Die has some distinct advantages that give it benefits of YouTube and traditional broadcast television:&lt;br /&gt;&lt;br /&gt;1. Star Power - lots of videos from Will Farrell, Jimmy Fallon, etc.  &lt;br /&gt;2. Original Content - YouTube has lots of content that is just copies of other media e.g. videos, music, etc.  &lt;br /&gt;3. Cutting Edge Humour - this sight makes Saturday Night Live look pedestrian by comparison.&lt;br /&gt;4. Some selective choosing - the site has a rating setting of "Immortal" which basically means that Will Farrell put it up and so no one can rate above him.  This isn't a bad thing - this means that there is some real selective editing on this site and its driven through a particular perspective.  This makes it different than a generic search engine.&lt;br /&gt;&lt;br /&gt;Check it out - some great content worth viewing...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-6632053161589554167?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/6632053161589554167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=6632053161589554167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6632053161589554167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/6632053161589554167'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/06/check-out-funny-or-die.html' title='Check out Funny or Die'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-2654951847482959562</id><published>2007-05-28T07:34:00.000-05:00</published><updated>2007-06-17T12:19:31.658-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><category scheme='http://www.blogger.com/atom/ns#' term='Pandora'/><title type='text'>Pandora's IP Blocking for Canadians isn't 100% Effective</title><content type='html'>As has been posted widely, Pandora was shut down in Canada due to license restrictions.  &lt;br /&gt;&lt;br /&gt;But Pandora's IP blocking mechanism isn't 100% - I just tried from my office computere here in Toronto and I could access it without any problems.  I'm not sure what their criteria is for blocking but I'm just happy I can get through and still access the service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-2654951847482959562?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/2654951847482959562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=2654951847482959562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2654951847482959562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/2654951847482959562'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/pandora-back-up-in-canada.html' title='Pandora&apos;s IP Blocking for Canadians isn&apos;t 100% Effective'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8924046385158051267</id><published>2007-05-27T20:31:00.001-05:00</published><updated>2007-06-17T12:06:26.271-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Commercials'/><title type='text'>The Best Old Computer Commercials</title><content type='html'>Here are some great old computer commercials.&lt;br /&gt;&lt;br /&gt;One thing that is noting is how amazing sexist they are - Dad always is the one who buys the computer and the Son is always the recipient because he has poor grades.  The most Mom ever uses a computer for is to put in a recipe or two and sister is almost never seen.  The worst case is the last ADAM commercial below where the sister helps brother get a computer so that she can get a Cabbage Patch Kid - heaven forbid she might want to play Donkey Kong herself!&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/PUEI7mm8M7Q" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;William Shatner got as fat as bloatware!&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/J2jRuh1bAxw" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Apparently, only boys played with computers in the 80's!&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/HRzNsbulGqc" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Computers don't lie - they're honest...huh?&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/GL4hyATkQ74" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Balmer still sounds like that 20 years later...and when did Reversi become a feature?!&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/gYUjFsucIr8" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;I had this computer myself - for the price it was actually a great computer, but it got smoked thanks to poor marketing and support from TI by Commodore in the mid-80s.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/_PysRX8DQp0" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;I had this computer as well. This was one of the last generation of personal computers before the PC takeover in the mid-80s which accounts for its everything but the kitchen sink approach. It had video games, a super speed tape drive, a daisy wheel printer, a build in word processor, etc. It was an odd computer, and it didn't sell very well. But I had one for about 2-3 years and it worked quite nicely for my needs when I was in junior high school.&lt;br /&gt;&lt;br /&gt;Another strange note on the ADAM: the version of BASIC was a complete rip-off of Apple II BASIC. I noticed the syntax similarities when I was over at a friends place and then went to the library and borrowed all the Apple II BASIC programming books I could find and had a blast!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8924046385158051267?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8924046385158051267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8924046385158051267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8924046385158051267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8924046385158051267'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/best-old-computer-commercials.html' title='The Best Old Computer Commercials'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-3490965927665325616</id><published>2007-05-27T19:40:00.000-05:00</published><updated>2007-05-27T20:03:44.007-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><title type='text'>New Feature Request for Facebook - Add Support for Maiden Names</title><content type='html'>I've been on Facebook for a few months now and am always searching up old colleagues, highschool mates, etc.&lt;br /&gt;&lt;br /&gt;But I've found one general problem - searching for people who have changed their last names.&lt;br /&gt;&lt;br /&gt;What about supporting searching by maiden names.  For those people looking for people they knew when they were much younger, that would help immensely.  I've had several people I couldn't track down because they married and changed their name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-3490965927665325616?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/3490965927665325616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=3490965927665325616' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3490965927665325616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/3490965927665325616'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/new-feature-request-for-facebook-add.html' title='New Feature Request for Facebook - Add Support for Maiden Names'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8091535955362211832</id><published>2007-05-27T19:36:00.000-05:00</published><updated>2007-06-17T12:06:41.872-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QA'/><category scheme='http://www.blogger.com/atom/ns#' term='RIM'/><category scheme='http://www.blogger.com/atom/ns#' term='Blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Bug of the Week: Blackberry Bug</title><content type='html'>&lt;a href="http://www.plazmic.com/images/products/brickbreaker.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://www.plazmic.com/images/products/brickbreaker.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For those who have Blackerries, Brickerbreaker is the Breakout clone that comes with the Blackberry OS.&lt;br /&gt;&lt;br /&gt;In the latest version, I have found a mystery bug - for some reason every once in a while, the ball hits the top of the screen and instead of bouncing downwards, it instantly moves to the bottom corner of the screen and starts going upwards!  Its not that common, but given enough play testing you would definately experience it.  &lt;br /&gt;&lt;br /&gt;The strange thing is that I cannot figure out the pattern as to why it happens - it doesn't seem to be any particular spot, ball position, level, etc. that causes the bug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8091535955362211832?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8091535955362211832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8091535955362211832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8091535955362211832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8091535955362211832'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/bug-of-week-blackberry-bug.html' title='Bug of the Week: Blackberry Bug'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-8872324092678188596</id><published>2007-05-21T18:58:00.000-05:00</published><updated>2007-06-17T12:06:55.682-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><title type='text'>Web 2.0 Bug of the Day - Facebook Bugs</title><content type='html'>I found a couple Facebook bugs today...&lt;br /&gt;&lt;br /&gt;1. If you click on "My Friends Posted Items" it should give you an RSS feed.  However, instead it prompts you to save a PHP file with the XML inside.  MIME type isn't right I'm assuming?&lt;br /&gt;&lt;br /&gt;2. The paging in Facebook isn't quite right.  For example, if I do a search for classmates from my highschool (Woodlands School, Mississauga, Ontario, 1991 Graduation Year) I get a list of 23 people.  If you go to page 2, you get 2 people repeated from the previous page.&lt;br /&gt;&lt;br /&gt;3. Facebook security check routinely now returns an image that is unreadable.  Sometimes you have to hit the refresh 4-5 times to get it to come up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-8872324092678188596?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/8872324092678188596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=8872324092678188596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8872324092678188596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/8872324092678188596'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/web-20-bug-of-day-facebook-bugs.html' title='Web 2.0 Bug of the Day - Facebook Bugs'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-5541510893392799735</id><published>2007-05-21T18:45:00.000-05:00</published><updated>2007-06-17T12:07:12.201-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zoominfo'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>New People Search Engine - Zoom Info</title><content type='html'>I'm always interested in networking sites, especially those with good people search engines. Since I've been on the Internet a very long time (pre-WWW was even invented) I have a very long trail of posts, press articles, and teenage writings from years and years ago.&lt;br /&gt;&lt;br /&gt;As I've written before, finding people is not difficult if they have contributed to facebook, MySpace, etc. and there will definitely be a problem in 10 years where people want to remove their facebook pages after they have grown out of their teenage years. See my &lt;a href="http://chriswoodill.blogspot.com/2007/03/removing-your-history.html"&gt;article on this previously&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For those who are in my generation (I'm 33 years old), many never were as adventurous and so finding people becomes a big more difficult, but not impossible. Almost everyone has some kind of Internet presence. Its a matter of digging in the right places to track it down.&lt;br /&gt;&lt;br /&gt;A new tool called &lt;a href="http://www.zoominfo.com"&gt;ZoomInfo&lt;/a&gt; helps in this regard. Type in any name and it will find many old press references for that name. What's smart about it is that it seems to be good at parsing out references to relationships between people, companies and other colleagues. It also seems to be able to collate references together into a profile, e.g. it can recognize the same press article in multiple places and summarize them together. &lt;br /&gt;&lt;br /&gt;If you look up yourself and find your own profile, you can claim your profile either by verifying against your credit card. They don't charge the card, they just use it to authenticate your name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-5541510893392799735?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/5541510893392799735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=5541510893392799735' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5541510893392799735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/5541510893392799735'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/new-people-search-engine-zoom-info.html' title='New People Search Engine - Zoom Info'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3457950532690053467.post-4942255815754585199</id><published>2007-05-21T18:41:00.000-05:00</published><updated>2007-05-21T18:45:36.195-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Press'/><category scheme='http://www.blogger.com/atom/ns#' term='Media'/><title type='text'>My Opinions in the Press - 2000 and Today</title><content type='html'>I found this &lt;a href="http://itmanagement.earthweb.com/cio/article.php/622251"&gt;article&lt;/a&gt; today from 2000 that I did press for when I worked for Chapters Online (the equivalent of Borders/Amazon here in Canada).&lt;br /&gt;&lt;br /&gt;I just landed in the press again for a project we did at the Foundation with Microsoft using their new Expression Blend product.  In working with Microsoft, I also did some press with them to show our support and extend our partnership with them.  You can see the &lt;a href="http://www.theglobeandmail.com/servlet/story/RTGAM.20070510.wgtinsider10/BNStory/GlobeTQ/"&gt;resulting article in the Globe and Mail here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3457950532690053467-4942255815754585199?l=chriswoodill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chriswoodill.blogspot.com/feeds/4942255815754585199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3457950532690053467&amp;postID=4942255815754585199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4942255815754585199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3457950532690053467/posts/default/4942255815754585199'/><link rel='alternate' type='text/html' href='http://chriswoodill.blogspot.com/2007/05/my-opinions-in-press-2000-and-today.html' title='My Opinions in the Press - 2000 and Today'/><author><name>Christopher Woodill</name><uri>http://www.blogger.com/profile/12714918778037978122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:tot
