<?xml version="1.0" encoding="utf-8"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><ttl>60</ttl><title>Philosophical Musings on Technology</title><link>http://blog.loganpoelman.com</link><lastBuildDate>Wed, 30 May 2012 16:00:19 GMT</lastBuildDate><pubDate>Wed, 30 May 2012 16:00:19 GMT</pubDate><language>en</language><copyright>Copyright 2010 Poelman &amp;amp; Associates, Inc. Rebroadcast, reuse, commercial use, all prohibited. All rights reserved. For entertainment purposes only.</copyright><itunes:subtitle>Computer Software Architecture</itunes:subtitle><itunes:author /><itunes:summary /><description /><itunes:owner><itunes:name /><itunes:email>logan@loganpoelman.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:category text="Arts" /><item><title>Does your Org have an SDLC Coach?</title><link>http://blog.loganpoelman.com/2011/08/18/does-your-org-have-an-sdlc-coach.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>Call them a coach, a mentor or even a SDLC therapist, but either way you need one.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Their role is to help improve the process and improve how people do their roles in the process.&lt;/div&gt;&lt;div&gt;In my private lexicon, I define these roles in the following unscientific way:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Coach - on the sidelines and helping to call the plays. Swaps in the right people at different times&lt;/li&gt;&lt;li&gt;Mentor - works in a one on one capacity with resources. May do as well as help others to do, in a hands on way.&lt;/li&gt;&lt;li&gt;Therapist - somebody that sits with a resource and a/or a team and does sort of talk therapy. Things like a Sprint Retrospective are talk therapy sorts of activities.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I think you may not understand the value of a person or several persons (larger organizations)playing this role brings.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thing they can do:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Identify misunderstandings in the team members understand of the SDLC and their role&lt;/li&gt;&lt;li&gt;Identify wasted efforts in the SDLC by seeing the day to day activities and asking resources for things they see as wasted effort&lt;/li&gt;&lt;li&gt;Help resources to better manage their tasks and the quality of their work. Reduce the stress and unhappiness of a resource by being a cheerleader (maybe that's a fourth role)&lt;/li&gt;&lt;li&gt;Help identify training needs for people on &amp;nbsp;the team by seeing how the better performers do versus the lower performers doing the same tasks/activities.&lt;/li&gt;&lt;li&gt;Help refine and optimize tthe SDLC &amp;nbsp;as the org changes, project changes, team changes. As a team becomes better at a SDLC like Scrum, they no longer need "crutches" that they might have needed to begin with. They may need more sophisticated tools than they could initial handle&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Now the big question:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE DO I GET ONE OF THESE MENTOR-COACH-THERAPISTS?&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I'll save that for another post &lt;img src="http://blog.loganpoelman.com/emoticons/wink.png" border="0" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2011/08/18/does-your-org-have-an-sdlc-coach.aspx#Comments</comments><guid isPermaLink="false">7b2d6456-042e-4601-9ad7-4a7d8d19e06a</guid><pubDate>Thu, 18 Aug 2011 14:15:55 GMT</pubDate></item><item><title>Do you smell that? It's your requirements. They stink.</title><link>http://blog.loganpoelman.com/2011/07/12/do-you-smell-that-its-your-requirements-they-stink.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>Why do they stink?
&lt;div&gt;But we are an agile shop!&lt;/div&gt;
&lt;div&gt;We use all the latest tools!&lt;/div&gt;
&lt;div&gt;Are you sure they stink?&lt;/div&gt;
&lt;div&gt;YES&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;If you are using words to document your&amp;nbsp;requirements&amp;nbsp;I can almost guarantee you they stink.&amp;nbsp;The English language (and most other written textual languages) are filled with delightful ambiguity.&lt;/div&gt;
&lt;div&gt;Ex: "One morning I shot an elephant in my pajamas. How he got in my pajamas I'll never know" - Groucho Marx.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Words are the enemy.&lt;/div&gt;
&lt;div&gt;Compound&amp;nbsp;sentences and run on sentences and &amp;nbsp;conjunctions and punctuation and etc.&amp;nbsp;are the enemy. (that is meant to be illustrative &lt;img src="http://blog.loganpoelman.com/emoticons/wink.png" border="0"&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;The fact that&amp;nbsp;English&amp;nbsp;is basically one dimensional. You read from&amp;nbsp;right&amp;nbsp;to left and wrap around. It very hard to refer backwards in&amp;nbsp;English&amp;nbsp;to a previous&amp;nbsp;sentence&amp;nbsp;or phrase. You could draw arrows but then that's not&amp;nbsp;English&amp;nbsp;- that's power point!&lt;/div&gt;
&lt;div&gt;Doing requirements in PPT is even WORSE!&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Requirements actually only need a few kinds of sentences to be chock full of meaning.&lt;/div&gt;
&lt;div&gt;They are:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;X is a type of Y&lt;/li&gt;
    &lt;li&gt;X consists of B number of Z&lt;/li&gt;
    &lt;li&gt;X is associated with C number of Qs&lt;/li&gt;
    &lt;li&gt;X can do the following actions&lt;/li&gt;
    &lt;li&gt;X can only be in one of the following states {a,b,c, ...}&lt;/li&gt;
    &lt;li&gt;X transitions from state A to state B by action F&lt;/li&gt;
    &lt;li&gt;&amp;lt;and a few others&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
But your BAs and Product Management folks use words like "leverage","collaborate with","utilize","influences","is related to", "bucket","group","syndicate", ...&lt;/div&gt;
&lt;div&gt;ALL of those words designed to NOT convey meaning without the READER implying the context for the meaning!&amp;nbsp;("kicking the can down the alley" in terms of clarity)&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Then you try bulleted lists, numbered lists. That helps a little with hierarchical things but it gets pretty ugly.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;&lt;div&gt;An English has all those&amp;nbsp;contradictory&amp;nbsp;rules and meanings and context sensitive meanings and ...&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;Instead, I have found the use of a small subset of UML to be AMAZING at reducing the fluff, BS and "I thought I knew", "are we done?" types of situations.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;YES THIS IS FULLY AGILE, Too!&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Use these techniques in collaboration sessions between folks on the team to tease out the requirements in real time, on whiteboards, then take pics with your Android Phone, an actual digital camera, your Xoom tablet or even your iPhone / iPad / iDevice. (Or get one of these thingies&amp;nbsp;&lt;/b&gt;&lt;a href="http://www.acmimio.com/images/productimages/Xi_brochure.pdf"&gt;http://www.acmimio.com/images/productimages/Xi_brochure.pdf&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;Below &amp;nbsp;is a simple model in UML&amp;nbsp;that would take a page or more of words to describe and then probably not nearly as clearly.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;A &lt;b&gt;Person &lt;/b&gt;(entities/classes are in boxes)&lt;i&gt; Is Composed Of&lt;/i&gt; (sub box of an entity of the lines drawn between):&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;A Person Has A DOB That Is Of Type Date&lt;/li&gt;
    &lt;li&gt;...&lt;/li&gt;
    &lt;li&gt;A Person Has&amp;nbsp;0 or 1 (Current) Legal Name //you might be born and not given a legal name until later&lt;/li&gt;
    &lt;li&gt;A Person Has&amp;nbsp;0 or Many (Previous) Legal Name&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
LegalName (entity) Is Composed Of:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;First Name that&amp;nbsp;Is Of Type&amp;nbsp;string&lt;/li&gt;
    &lt;li&gt;Last that Is Of Type String&lt;/li&gt;
    &lt;li&gt;A Title that&amp;nbsp;Is Of Type&amp;nbsp;Person Title That&lt;b&gt; Is&lt;/b&gt; 0,1 or 2 of the following instances {Dr. Miss, Mr., Mrs. Rev.} (instances of a class are underlined)&lt;/li&gt;
    &lt;li&gt;A&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="http://images.quickblogcast.com/1/4/7/1/5/161348-151741/PersonClassModel.jpg?a=65" style="border: 0px  solid;"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;This the state chart (state model) for a person in the admission process for a university.&lt;/div&gt;
&lt;div&gt;Each rounded box is a state.&lt;/div&gt;
&lt;div&gt;Each arrow between is what action causes the transition between states.&lt;/div&gt;
&lt;div&gt;A Student (Class) starts in the Lead state&lt;/div&gt;
&lt;div&gt;A Student is then called by a recruiter and becomes Contacted.&lt;/div&gt;
&lt;div&gt;A Student Submits and Application (Application Submitted) and becomes an Applicant&lt;/div&gt;
&lt;div&gt;A Students Application Is Accepted and they become Accepted or A students Application is Rejected and they become Rejected.&lt;/div&gt;
&lt;div&gt;A Student that is Rejected can Reapply and become an Applicant again&lt;/div&gt;
&lt;div&gt;.... &amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="http://images.quickblogcast.com/1/4/7/1/5/161348-151741/StudentStateModel.jpg?a=60" style="border: 0px  solid;"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;That is just a sampling of what well written requirements in UMl can do to provide clarity.&lt;/div&gt;
&lt;div&gt;Also, because UML forces you to write simple, unambiguous statements, it helps identify questions and identify the answers to questions that you thought you knew.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Finally, though these diagrams were created in Sparx Enterprise Architect, you can do all of this on napkins, post it notes or whiteboards (that's actually how I usually start to avoid getting distracted by the tools.)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Contact us if you'd like to teach your teams to write requirements that don't stink.&lt;/div&gt;
&lt;div&gt;Simon Logan Technology Partners&lt;/div&gt;
&lt;div&gt;917 __ 783 __ 7477&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>C#</category><category>building great software</category><category>Development Management</category><comments>http://blog.loganpoelman.com/2011/07/12/do-you-smell-that-its-your-requirements-they-stink.aspx#Comments</comments><guid isPermaLink="false">cca1eb35-de2f-4ed2-b0ea-6be94bf0c6d7</guid><pubDate>Tue, 12 Jul 2011 18:28:54 GMT</pubDate></item><item><title>You need a Business Domain Model. But, We don't have a Business Domain Model! (oh, yes you do ...)</title><link>http://blog.loganpoelman.com/2011/03/29/we-dont-have-a-business-domain-model-oh-yes-you-do-.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>Software implements the business domain model of whatever its used for. BY DEFINITION.&lt;div&gt;It may do it poorly or incoherently or&amp;nbsp;inconsistently&amp;nbsp;or incompletely or wrongly but it DOES implement it.&lt;/div&gt;&lt;div&gt;So you HAVE a model, its in the source code.&lt;/div&gt;&lt;div&gt;Its HARD to visualize it, though.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You NEED a Business Domain Model (BDM) in a way that you can easily reference it, update it, argue about it, ... but if its only in the code, how can you discuss it with the User? BAs? PM? ScrumMasters? Testers?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;What happens when the BD (Business Domain) you build software for changes SO MUCH it no longer aligns with the BDM as implemented in the software? How would you know? (Hint: your customers will complain about your software, ask for changes or buy somebody else's product)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;First, I define a BDM as an unambiguous (as much as possible) description of the things, behaviors, rules, constraints, changes over time, workflows, events and goals of any business WITHOUT any detail that involves software or computers (ex: banking has existed for 1000's of years before computers - model that stuff and you have the BDM. Education is the same.)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Often times an industry changes gradually over time but changes so much that the BDM is NOT really what it used to be. Example snail mail and email are similar but NOT the same BD by a long shot. Video rental store and Video Download are different BDs though they seem similar.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So,&amp;nbsp;every time&amp;nbsp;you migrate a system or create a new version you are discovering the same info about the BDM but NEVER creating it in a way that is easily reusable or viewable.&lt;b&gt;&lt;i&gt; Instead, you embed the info in the&amp;nbsp;coed&amp;nbsp;in the software.&lt;/i&gt;&lt;/b&gt; AGAIN and AGAIN and AGAIN. Inefficient and error prone. Tribal knowledge is often trapped in the heads of a few. Its hard to bring on new folks and ramp them up because the know acquisition curve is too steep. &lt;b&gt;&lt;font class="Apple-style-span" color="#ff0000"&gt;SOUND FAMILIAR?&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Worst of all, you can't tell if new customers actually &amp;nbsp;fit your existing business domains serviced, well or are so different the software is gonna irritate the heck out of them..&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#ff0000"&gt;&lt;b&gt;Software's embedded BDM misalignment with a customers real BD is the source of cost, risk,&amp;nbsp;aggravation, delay, customer&amp;nbsp;dissatisfaction&amp;nbsp;and frustration.&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Does BDM fix that ? Not everything but it does reduce a lot of it.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;BDM uses UML and other unambiguous mechanisms for detailing thing, relationships, change over time, important events, etc. A word document that contains words / sentences is NOT&amp;nbsp;unambiguous, so it AIN'T A BDM artifact!&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Will you do Business Domain Modeling on the next project? NO.&amp;nbsp;&lt;/div&gt;&lt;div&gt;But I did warn you &lt;img src="http://blog.loganpoelman.com/emoticons/wink.png" border="0" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2011/03/29/we-dont-have-a-business-domain-model-oh-yes-you-do-.aspx#Comments</comments><guid isPermaLink="false">3ed354bf-8dad-4ede-bce8-13038680f01c</guid><pubDate>Tue, 29 Mar 2011 13:43:00 GMT</pubDate></item><item><title>"To Sharepoint or not to Sharepoint (2010)?", that is the question or " time to drink the koolaid"</title><link>http://blog.loganpoelman.com/2011/02/23/to-sharepoint-or-not-to-sharepoint-2010-that-is-the-question.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>I have been leading project recently that is building both new products and migrating existing products (ASP.NET 2.x based) to Sharepoint 2010. But what surprises me is how many people in the effort, mostly at a management level, don't understand what that even means.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;They think, "Ah, we make our stuff run in Sharepoint. Thats cool." Basically the "poke our web app thru an IFrame in SP and you're 'built on SP'" mindset. Problem is, thats not what their customers think when they say "Built on Sharepoint:."&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SP is a bit like its own operating system (on top of another OS.) Its a framework and a toolset. Whats the difference? Your code calls a toolset. In a framework - IT CALLS YOU!&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;A framework, like sharepoint (or LifeRay / WebSphere Portal / Plumtree / SAP Portal / ...), defines the behaviors/properties/features you need to implement. In exchange, it gives you a LOT in return. Think of it like taking all the&amp;nbsp;common&amp;nbsp;stuff you write in 5 applications, extract it into a single place (the portal) and you just write the stuff thats new/different. less work but that means less control for you.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Why should customers care? because they can buy stuff from other companies than you and it will integrate with your stuff with little or no effort. Also, the customer can create stuff in the portal, like workflow, and integrate it with your stuff with little effort.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Your dev team needs to use the facilities Sharepoint&amp;nbsp;offers&amp;nbsp;&lt;b&gt;BEFORE they just go build their own.&lt;/b&gt; Sometime that means bending/warping things to follow the Sharepoint view of the world. But if you don't your stuff won't fit in nicely and "play well with others."&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So, if you are going to 'Sharepoint Enable', &lt;b&gt;you need to "drink the koolaid," &lt;/b&gt;because its likely your customers&amp;nbsp;already&amp;nbsp;have (Microsoft markets these stuff heavily) or you risk looking like a Sharepoint Enabled Wannabe.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>technology change</category><category>C#</category><category>building great software</category><category>Software Development</category><comments>http://blog.loganpoelman.com/2011/02/23/to-sharepoint-or-not-to-sharepoint-2010-that-is-the-question.aspx#Comments</comments><guid isPermaLink="false">5aa4d227-007d-4139-bcd5-8d4dec9ed49b</guid><pubDate>Wed, 23 Feb 2011 15:56:00 GMT</pubDate></item><item><title>Agile Project Crimping AKA Agile Shanghai</title><link>http://blog.loganpoelman.com/2011/02/02/agile-project-crimping-aka-agile-shanghai.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;I'm coining a phrase - "Agile Project Crimping" - stealing the best people from a project in flight to do a different project, under the guise of "Were Agile, right?" Syn. Agile Shanghai.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;So many orgs think that people are stateless. That you can swap them between projects without any impact.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;It seems&amp;nbsp;especially&amp;nbsp;to happen to orgs new to Agile / Scrum. A new Scrum project is cooking along and everything is working great. Tremendous productivity, like they've never seen before.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;But theres this other project thats in trouble or just starting up.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;So, what do they do?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;STEAL FROM PETER TO PAY PAUL.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;They quite nearly knock the smartest folks over the head, stuff them in a gunny sack and shanghai them onto the new project.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;It works once or twice, sometimes but never in the long run and rarely in short run.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;It has the following impacts:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;Velocity of existing project is now unreliable because you tampered with the team&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;negatively affect team cohesion (assuming they liked the folks shanghaied)&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;loss of tribal&amp;nbsp;knowledge&amp;nbsp;- the ones they steal are usually the best and brightest&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px; "&gt;the original project is now likely to have a vacuum filled with with a newbie that needs to ramp up&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;Newbies consume oxygen and precious people time to ramp up&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;People you pull off the project get fatigued&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;You are building a hero culture&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" face="'lucida grande', tahoma, verdana, arial, sans-serif" size="1"&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;A sign that you don't truly grok agile concepts&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;b&gt;Don't do it.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;Don't be a Agile Crimp!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;Don't do the ole' "Agile Shanghai."&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 10px; line-height: 13px; "&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2011/02/02/agile-project-crimping-aka-agile-shanghai.aspx#Comments</comments><guid isPermaLink="false">08d1fff1-c31d-4f11-ad44-9b6035287d6a</guid><pubDate>Wed, 02 Feb 2011 21:34:00 GMT</pubDate></item><item><title>So much of what you think is true ... isn't. Why understanding the history of computing is important.</title><link>http://blog.loganpoelman.com/2010/12/02/so-much-of-what-you-think-is-true--isnt-why-understanding-the-history-of-computing-is-important.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>Who invented the light bulb? Wrong.&lt;div&gt;Who invented the telephone? Wrong&lt;/div&gt;&lt;div&gt;Who invented the airplane? Wrong&lt;/div&gt;&lt;div&gt;Who invented the cotton gin? Right. How did he get right? Wrong.&lt;/div&gt;&lt;div&gt;Who invented the MP3 player? Wrong&lt;/div&gt;&lt;div&gt;Who invented the home video game? Wrong&amp;nbsp;&lt;a href="http://classicgames.about.com/od/classicvideogames101/p/MagnavoxOdyssey.htm"&gt;http://classicgames.about.com/od/classicvideogames101/p/MagnavoxOdyssey.htm&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Who invented Pong? Wrong.&lt;/div&gt;&lt;div&gt;Who invented the mouse?&lt;/div&gt;&lt;div&gt;Who invented hypertext?&lt;/div&gt;&lt;div&gt;Who invented the world wide web?&lt;/div&gt;&lt;div&gt;The first web browser?&amp;nbsp;&lt;/div&gt;&lt;div&gt;The first browser with images?&lt;/div&gt;&lt;div&gt;Steve Jobs created the MacIntosh computer? The Apple I computer?&amp;nbsp;&lt;/div&gt;&lt;div&gt;Microsoft is evil? Well, not always. WWWViola and prior art.&lt;/div&gt;&lt;div&gt;Who invented the microprocessor?&lt;/div&gt;&lt;div&gt;The digital camera?&lt;/div&gt;&lt;div&gt;Why is a CD 700mb in size?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2010/12/02/so-much-of-what-you-think-is-true--isnt-why-understanding-the-history-of-computing-is-important.aspx#Comments</comments><guid isPermaLink="false">f968daa9-e988-4b77-8ea0-d642a3dc9365</guid><pubDate>Fri, 03 Dec 2010 01:54:00 GMT</pubDate></item><item><title>Why I use the term "suck" in blog posts?</title><link>http://blog.loganpoelman.com/2010/12/02/why-i-use-the-term-suck-in-blog-posts.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>Colleagues&amp;nbsp;have suggested gentler, less "declasse'" terminology, might be better.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I could use the terms: "bad","ineffective","unusable","bug ridden","insufficient","poorly conceived",&lt;/div&gt;&lt;div&gt;"inefficient","inconsistent","bug rich","pile of detritus","abomination","affront to all that is good and true",...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I use "suck" because it has a certain level of emotion attached to it, without being profane &lt;img src="http://blog.loganpoelman.com/emoticons/wink.png" border="0" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To me "suck" has both frustration and hope&amp;nbsp;attached&amp;nbsp;to it.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Software (or anything else) that I attach the adjective "suck" to tends to have the following qualities:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;grossly missing the mark (the DESPAIR factor)&lt;/li&gt;&lt;li&gt;we thought it would be&amp;nbsp;significantly&amp;nbsp;better.&lt;/li&gt;&lt;li&gt;we seem to have tried to do better&lt;/li&gt;&lt;li&gt;we aren't proud of what we've built&lt;/li&gt;&lt;li&gt;our competitors "seem" to being doing it much better then we&lt;/li&gt;&lt;li&gt;we&amp;nbsp;believe&amp;nbsp;we could do MUCH better (the HOPE factor)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;So there term "suck" carries with it&amp;nbsp;despair&amp;nbsp;and hope, effort and yet missing the mark, willingness to admit our shortcomings.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I struggle to find a more palatable term that carries that emotion and message.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Significantly&amp;nbsp;missing the expectations of customers, management, the team and the industry"&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;just doesn't resonant the same as:&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "our stuff really sucks."&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2010/12/02/why-i-use-the-term-suck-in-blog-posts.aspx#Comments</comments><guid isPermaLink="false">c8f6d468-1d74-4e14-b7fc-a46036e5a58b</guid><pubDate>Thu, 02 Dec 2010 16:17:00 GMT</pubDate></item><item><title>The hidden cost of software development tools or "if we have so many tools, why aren't we more productive?"</title><link>http://blog.loganpoelman.com/2010/12/02/the-hidden-cost-of-software-development-tools-or-if-we-have-so-many-tools-why-arent-we-more-productive.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 15px; border-collapse: collapse; "&gt;&lt;b&gt;The obvious:&amp;nbsp;&lt;/b&gt;tools have a license cost.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Not so obvious:&lt;/b&gt;&amp;nbsp;The average/below average guys love evaluating new tools and adding them to the process (they seem to feel like they are accomplishing something.)&lt;br clear="all"&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The smartest developers don't usually like new tools.&lt;/div&gt;&lt;div&gt;(they tend to build their own using scripting/GREP/LEX/YACC/SED/&lt;wbr&gt;AWK/PowerShell/Bash/Pipes/&lt;wbr&gt;Notepad/SQL/Black Magic)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Managers often love tools because they live in la la land where software is just a&amp;nbsp;manufacturing&amp;nbsp;process&amp;nbsp;(not a creative thinking / invention process).&lt;/div&gt;&lt;div&gt;Thus, if you are digging a big hole, you need a big shovel.&amp;nbsp;Digging a foundation for a skyscaper, you need a steam shovel (a bigger shovel).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Tools have a learning curve, a risk, a burden and slow you down before they speed you up.&lt;/div&gt;&lt;div&gt;Too many tools can KILL a project.&lt;/div&gt;&lt;div&gt;Microsoft Project is not a tool - it is a wormhole into an alternative universe &lt;img src="http://blog.loganpoelman.com/emoticons/wink.png" border="0" /&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Analogy:&lt;/b&gt;&amp;nbsp;if you were a carpenter and worked building houses, how many tools would you have in your tool box? In your pickup truck?&lt;/div&gt;&lt;div&gt;You'd limit it to the tools that you could carry.&lt;/div&gt;&lt;div&gt;You limit it to the tools that worked well and didn't break.&lt;/div&gt;&lt;div&gt;You throw out old/broken/unneeded/obsolete tools&amp;nbsp;occasionally.&lt;/div&gt;&lt;div&gt;You balance the time needed to learn to use a&amp;nbsp;&lt;b&gt;laser guided robonailer&amp;nbsp;&lt;/b&gt;and the productivity you'd get back AND the risk of burning a hole thru your foot with the laser.&lt;/div&gt;&lt;div&gt;You wouldn't spend days in the store looking at tools.&lt;/div&gt;&lt;div&gt;You ask other carpenters what they used.&lt;/div&gt;&lt;div&gt;You'd watch other carpenters and the tools they used.&lt;/div&gt;&lt;div&gt;(note: inference by analogy is dangerous but useful in this case.)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You need to think that way with the tools you introduce to your SDLC.&lt;/div&gt;&lt;div&gt;Answer these questions:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="margin-left: 15px; "&gt;Costs - initial, long term, getting OFF the tool&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;Learning curve?&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;What tools do I get rid of?&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;Real benefits of the tool (not what the vendor says?)&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;Risks of using this tool?&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;Cost of evaluating the tool?&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;What if I just use nothing?&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;Vendor longevity - are they going to be out of business or absorbed by somebody - see: Java and Oracle&lt;/li&gt;&lt;li style="margin-left: 15px; "&gt;Will the team actually use the tool?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Good rule of thumb:&amp;nbsp;&lt;/b&gt;Let the developer decided what tools they want to use. Don't force tools on them.&lt;/div&gt;&lt;div&gt;I once did a eval on a agile backlog/features management tool.&lt;/div&gt;&lt;div&gt;We had Rally, Mingle, Jira/Greenhopper and a few others.&lt;/div&gt;&lt;div&gt;Rally seemed the most mature.&lt;/div&gt;&lt;div&gt;Mingle the slickest looking.&lt;/div&gt;&lt;div&gt;Jira the most ugly.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Developers tried each and chose Jira.&lt;/div&gt;&lt;div&gt;It worked the best for their workflow (and looked the worst).&lt;/div&gt;&lt;div&gt;They adopted it and used it.&lt;/div&gt;&lt;div&gt;Bonus: its licensing was also the cheapest.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;We liked Greenhopper, the developers didn't - thought it was useless cutesiness.&lt;/div&gt;&lt;div&gt;It didn't get used.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Important to note: it also supported&amp;nbsp;customization&amp;nbsp;and the reporting needed by management.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;We coupled it with old fashion whiteboards (low learning curve, robust, scalable, low TCO) and daily scrums.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Had the managers just made the decision we'd&amp;nbsp;likely&amp;nbsp;have&amp;nbsp;chosen&amp;nbsp;Mingle (coolest looking and most expensive, yet powerful.)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;They selected and they used it, faithfully.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/span&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2010/12/02/the-hidden-cost-of-software-development-tools-or-if-we-have-so-many-tools-why-arent-we-more-productive.aspx#Comments</comments><guid isPermaLink="false">eca4e73b-62c6-44a7-bcaa-6ab50a025fc8</guid><pubDate>Thu, 02 Dec 2010 16:11:00 GMT</pubDate></item><item><title>Why is your organization delivering software that sucks?</title><link>http://blog.loganpoelman.com/2010/12/01/why-is-your-organization-delivering-software-that-sucks.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;div&gt;How do you define "crap?"&lt;/div&gt;&lt;div&gt;How do your customers define "crap?"&lt;/div&gt;&lt;div&gt;What are you testing?&lt;/div&gt;&lt;div&gt;When are you testing?&lt;/div&gt;&lt;div&gt;Why are you testing?&lt;/div&gt;&lt;div&gt;Who is doing the testing?&lt;/div&gt;&lt;div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;What are you measuring?&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;When are you measuring?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;How do you interpret what the measurements are telling you?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thats a few questions to start with. Many organizations I have worked with measure NOTHING until the product ships and customer reports the bugs. Thats analogous to designing and building a car and measuring NOTHING until a customer buys the car, drives it off the lot and the wheels fall off.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Other organization measure things but don't know what to do with the measurements. So, they have data but can't act on it. They feel really good that they have data and its presented in power point &lt;img src="http://blog.loganpoelman.com/emoticons/wink.png" border="0" /&gt; But the value of the measurements is zero.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Start simple - only measure things that you can interpret and act on.&lt;/div&gt;&lt;div&gt;Examples of a few things to measure:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;eLOC - effective lines of code in methods and in class&lt;/li&gt;&lt;li&gt;CC - cyclomatic complexity&lt;/li&gt;&lt;li&gt;parameters in a method signature - how many things get handed into a method&lt;/li&gt;&lt;li&gt;ratio of comments to LOC written&lt;/li&gt;&lt;li&gt;number of places that call a method (afferent coupling)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;How do I use these?&lt;/div&gt;&lt;div&gt;None of them, in of of themselves tell you something is good or bad. They tell you where to do further research.&lt;/div&gt;&lt;div&gt;As a single measure they are good but not great indicators of trouble.&lt;/div&gt;&lt;div&gt;Examples&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;CC&amp;gt;20 - usually means the methods pretty complex.&lt;/li&gt;&lt;li&gt;Method eLOC &amp;gt; 70 - thats a lot of code in a method to get bug free and mantain&lt;/li&gt;&lt;li&gt;method parameters &amp;gt; 6 - why so many things getting handed in? Oten indicates a not very OO design&lt;/li&gt;&lt;li&gt;afferent coupling &amp;gt; 15 - lots of things in the code depend on this thing being bug free - better write good unit tests against this method, especially. Maybe the code is too coupled to this, take a look at the design.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;But look at the code over all and get a distribution to see if you have only a few high CC or eLOC methods or is the whole code base like this? the answer will tell you what you need to do next - fix the code or fix the team.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Use them combined together to find real trouble spots.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Methods&amp;nbsp;with high CC, high afferent coupling and &lt;b&gt;LOW e:LOC &lt;/b&gt;may indicate poorly coded but really important methods.&lt;/li&gt;&lt;li&gt;High eLOC with low CC usually means code that just doing copies from one field to another - take a look at your design, how OO is it?&amp;nbsp;&lt;/li&gt;&lt;li&gt;High CC and low ratio of comments is usually a bad sign. A complicated algo that nobody documented. Remember - &lt;b&gt;commenting is more than documenting, its a mental check that the coder thought through the problem. As complexity of an algorithm goes up,&amp;nbsp;likelihood&amp;nbsp;of bugs goes up exponentially NOT&amp;nbsp;linearly.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Track the trend over time:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Watch how CC distribution changes from week to week to week. Watch for "knees" in the curve. This is the start of trouble. Catch it early.&lt;/li&gt;&lt;li&gt;Watch eLOC - over time the amount of new code added should DECREASE at some point. Even shrink due to refactoring that removes redundant code and builds tighter code. If you are seeing it, you should ask why.&lt;/li&gt;&lt;li&gt;Watch the size of the UNIT TESTS - a unit test that is &amp;gt;60 LOC is just as likely to have bugs as the actual product code. Buggy unit tests are a false sense of security.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Create a workflow process for metrics and manage the process as part of your SDLC:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Design -&amp;gt; Code -&amp;gt; Measure -&amp;gt; Interpret Metrics-&amp;gt; Review Designs/Code identified in metrics --&amp;gt; Recommend Changes based on Reviews -&amp;gt;&amp;nbsp;Implement&amp;nbsp;Recommendations&amp;nbsp;-&amp;gt; VERIFY recommendation were implemented&lt;/li&gt;&lt;li&gt;Treat these refactorings like real requirements - backlog them, estimate impact,, schedule, execute&amp;nbsp;&lt;/li&gt;&lt;li&gt;Measure the efficacy of your process&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Tips:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Dont measure everything&lt;/li&gt;&lt;li&gt;Don't measure what you can't act on - just adds noise&lt;/li&gt;&lt;li&gt;A few consistent measurements repeated and tracked a better than a "firehose" of metrics&lt;/li&gt;&lt;li&gt;Use tools&lt;/li&gt;&lt;li&gt;Metrics data will create a data warehouse cube of data - think of it like that ahead of time - excel isn't enough of a tool to handle it&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2010/12/01/why-is-your-organization-delivering-software-that-sucks.aspx#Comments</comments><guid isPermaLink="false">0ec34ebf-1eca-49cb-be38-fce7455a2bce</guid><pubDate>Wed, 01 Dec 2010 16:50:00 GMT</pubDate></item><item><title>Proximity triggered phone app loading/unloading in Meat Space (physicalworld)</title><link>http://blog.loganpoelman.com/2010/12/01/proximity-triggered-phone-app-loadingunloading-in-the-real-world.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;h3 class="UIIntentionalStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="font-size: 13px; color: rgb(51, 51, 51); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; "&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span" style="font-size: 12px; "&gt;Since the portable handheld computing and communications device (AKA the phone) is becoming the defacto ubiquitous interface to the world, we need apps that are installed /deinstalled automatically based on proximity to a physical location.&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class="UIIntentionalStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="font-size: 13px; color: rgb(51, 51, 51); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; "&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span" style="font-size: 12px; "&gt;&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class="UIIntentionalStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="font-size: 13px; color: rgb(51, 51, 51); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; "&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span" style="font-size: 12px; "&gt;So, you walk into Target store and the store's apps auto load. When u leave they unload. Like when you visit a web site it loads in your browser. Instead, when you visit a physical URL AKA a store / house / park / beach / zoo / gravesite / grand canyon the appropriate, sandboxed, context aware app loads.&lt;/font&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span" style="font-size: 12px; "&gt;&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span" style="font-size: 12px; "&gt;If this hasn't been patented yet, i claim patent pending on the idea.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span" style="font-size: 12px; "&gt;&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;Think how cool it would be if you wandered up to somebodies grave site marker and your phone started showing a film clip of their life? or an&amp;nbsp;interactive&amp;nbsp;app that you could see different details about them? or like a new version of the hall of presidents, a virtual, simulated, AI based avatar of them you could nteract with, as tho they weren't dead? Cool and &amp;nbsp;creepy, all at the same time.&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;If it was a retail store, you could give store navigation, special offers, research tools, gift suggestions, ... yeah, that might just be annoying but then again.&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;At the museum or zoo ... you get the idea.&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;Or how about in schools / universities. You enter a classroom and BANG the apps for that class period install.&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;So, who wants to build this with me (meaning who wants to fund it?)&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;font class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);"&gt;Contact me and lets get it going!&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; color: rgb(51, 51, 51); font-size: 16px; "&gt;&lt;span class="UIStory_Message"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><comments>http://blog.loganpoelman.com/2010/12/01/proximity-triggered-phone-app-loadingunloading-in-the-real-world.aspx#Comments</comments><guid isPermaLink="false">ea3e3a42-0556-44f8-9413-2eb408836f08</guid><pubDate>Wed, 01 Dec 2010 15:04:00 GMT</pubDate></item><item><title>Are you testing in the Dark? Getiing Whitebox and Blackbox worlds talking. Code Coverage Analysis ( CCA )</title><link>http://blog.loganpoelman.com/2010/05/04/are-you-testing-in-the-dark-getiing-whitebox-and-blockbox-worlds-talking-code-coverage-analysis.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;Testing in the dark&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;
&lt;div&gt;So you have a QA group. They test everything that you ship to customers. They even have some automation in their testing. They use Test Director or WinRunner or WebLoad or ... but customers are still complaining about defects. They don't want to take your next release because your releases are so riddled with defects, even when upgrades are FREE!&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;
&lt;div&gt;You have 5000 test cases written by Business Analysts or testers or managers or customers or ?&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;You have even automated your regression testing!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;But you are still testing in the darkness, poking around in a dimly lit cave with a sharp stick.&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Blackbox vs. Whitebox vs. Graybox&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;Simple definitions first:&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Blackbox &lt;/strong&gt;- you write the tests without knowing the internal code or data structures but just based on what you think the application should do. Test are written at a user goal level.&lt;br /&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Advantage &lt;/strong&gt;- tests reflect user goals. You don't test things the way you think the code should work because you don't have that. bias. &lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Disadvantage &lt;/strong&gt;-  you don't know how much of the underlying functionality actually get executed. Your test cases may be highly redundant and add little value with each added use case.  &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Whitebox &lt;/strong&gt;- you know the internals of the code, so you can write tests that stress things in a more systematic / targeted way.
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Advantage - &lt;span style="font-weight: normal; "&gt;You can beat on the parts that are most likely to fail or if they fail, will cause the most trouble. Things like developer unit tests are generally of this type. You also have a better insight for what parts of the application get tested , &lt;em&gt;notice I said better not perfect or even accurate.&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Disadvantage &lt;span style="font-weight: normal; "&gt;- takes developer level knowledge. Take discipline to write tests that aren't designed to easily pass but instead designed to see if the code can be broken (see Test Driven Development debate onm what to test / not test.) Not a full "vertical slice" of the app many times.&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;Greybox &lt;span style="font-weight: normal; "&gt;- A combo of both. Insight from the whitebox but user goal driven oriented tests.&lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;
        &lt;div style="display: inline !important; "&gt;&lt;span&gt;Advantage&lt;/span&gt;&lt;span style="font-weight: normal; "&gt; - better quality of tests&lt;/span&gt;&lt;/div&gt;
        &lt;/strong&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;
        &lt;div style="display: inline !important; "&gt;&lt;span&gt;Disadvantage&lt;/span&gt;&lt;span style="font-weight: normal; "&gt; - Who writes them?&lt;/span&gt;&lt;/div&gt;
        &lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
Whats needed is a way for QA testers to write blackbox insightful types of tests.&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Feedback and communication&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;Feedback and communication are essential to any adaptive process, to learning, to getting along well with the other kids in the sandbox and to software development, as well. Test Driven Development, Continuous Integration and XP/Scrum SDLC all understand and leverage the benefits of rapid, low latency feedback cycles. Ex:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;&lt;span style="font-weight: normal; "&gt;Change your code&lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;&lt;span style="font-weight: normal; "&gt;Check it in&lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;&lt;span style="font-weight: normal; "&gt;CruiseControl builds it and runs J/NUnit against it&lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;&lt;span style="font-weight: normal; "&gt;Your unit tests fail&lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;&lt;span style="font-weight: normal; "&gt;It sends you an email saying “you broke the build.” &lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;
    &lt;div style="display: inline !important; "&gt;&lt;span style="font-weight: normal; "&gt;So, you quickly fix it before your team mates find out and make you buy the donuts for tomorrow. &lt;/span&gt;&lt;/div&gt;
    &lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;QA and Development need that same feedback about what is getting tested and in a larger sense than just individual developer unit tests. This is where code coverage analysis (CCA) tools like: Code Validator, Purify, … can help. &lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;If you run your unit test suit on your build server with a code coverage tool, you can have a baseline and track test coverage, over time, how much new code gets added and how much gets tested, even at the unit level. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;This is GREAT feedback to Development Managers for when/where to intervene and make sure that developers are putting in the needed unit test writing effort.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;This is GREAT feedback to the QA Manager about what to do in the QA testing efforts.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span&gt;Example CCA Reporting:&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;img alt="" src="http://images.quickblogcast.com/1/4/7/1/5/161348-151741/CoverageSummary1.jpg?a=30" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; " /&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div style="text-align: center; "&gt;&lt;em&gt;&lt;span style="font-weight: normal; "&gt;This is a CCA report on a project I worked on recently developing a MIDI hardware/software device. This shows the overall testing coverage in terms of number of files, lines of code, lines tested. (the tool is Code Validator from &lt;a href="http://www.softwareverify.com"&gt;www.softwareverify.com&lt;/a&gt; one of several good tools out there.)&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;Even better than the aggregate statistics, this tool can tell you the &lt;/span&gt;&lt;span&gt;specific files&lt;/span&gt;&lt;span style="font-weight: normal; "&gt; that were/weren't tested and by how much.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;img alt="" src="http://images.quickblogcast.com/1/4/7/1/5/161348-151741/CoverageSummaryFiles.jpg?a=26" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; " /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div style="text-align: center; "&gt;&lt;span style="font-weight: normal; "&gt;&lt;em&gt;This shows individual files and testing coverage amount.&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; display: inline !important; "&gt;&lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; "&gt;Whats a&lt;/span&gt; really nice &lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; "&gt;blackbox to whitebox transition feature of these tools, is the ability to click the file name listed and &lt;/span&gt;see the code along with info on what parts did/did not get executed.&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;img alt="" src="http://images.quickblogcast.com/1/4/7/1/5/161348-151741/CoverageSummaryFilesMidiNoteMsg1.jpg?a=24" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; " /&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;img alt="" src="http://images.quickblogcast.com/1/4/7/1/5/161348-151741/CoverageSummaryFilesMidiNoteMsg2.jpg?a=21" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; " /&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div style="text-align: center; "&gt;&lt;span style="font-weight: normal; "&gt;&lt;em&gt;This show what code was executed (pale yellow) and what wasn't (pink) in any of the tests!&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;The ability to see what areas you are NOT covered in your testing allows you, with the help of the developers, generally to fashion either new QA tests that will execute that code path or add to the unit test(s) or both.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;You can see what parts of the app you are never even testing before you ship your product!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;Too Much Code Coverage&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;Yes, there is too much of a good thing.&lt;/span&gt;&lt;span&gt; When you first do CCA on an existing project you may be "shocked, shocked!" at how little testing you are actually doing.&lt;/span&gt;&lt;span style="font-weight: normal; "&gt; This can be depressing and also trigger over reaction on the part of management. Pronouncements like "We must have 100% code coverage of all our tests!" are often heard in reaction to the first CCA reports.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;But 100% isn't always whats needed (rarely and arguably impossible for most software).&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;In fact, sometimes, you are just going to live with &lt;/span&gt;&lt;span&gt;NOT testing parts/paths of your code&lt;/span&gt;&lt;span style="font-weight: normal; "&gt;. Why? You can test every code path. It rapidly become TOO expensive, but different types of software in different market segments define "too much" differently.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;But by baselining it and seeing what you have first, then adding tests and seeing the extra effort, then getting a coverage report after adding tests, you can make decisions about what level of testing you need/can afford.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;Joining Code Coverage with Defect Reporting&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;An even more targeted approach is to take defects reported by customers, identifying how the developers fixed them and then running your test fixtures against the UNFIXED CODE to see if you tested the area with a defect in it. Depending on the answer, you will act differently.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;If you tested it and the defect got through anyway, you need to change the test/add tests. If you didn't test that area, you need to add some tests.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;Make changes and then run tests on the FIXED CODE and check the coverage to ensure that you test the area with the defect/fixed code, this time.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Code coverage analysis can help you to communicate between the blackbox and whitebox testing worlds in a targeted and actionable way. It can help add some science to the art of testing. Its time to come in out of the darkness.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;em&gt;&lt;span style="font-weight: normal; "&gt;"You can either light a candle or curse the darkness" - Ancient Chinese Proverb&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;span style="font-size: 14px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>Development Management</category><category>Code Coverage Analysis</category><comments>http://blog.loganpoelman.com/2010/05/04/are-you-testing-in-the-dark-getiing-whitebox-and-blockbox-worlds-talking-code-coverage-analysis.aspx#Comments</comments><guid isPermaLink="false">13da4613-8cd1-414c-9e17-13ad6ca40e54</guid><pubDate>Wed, 05 May 2010 02:05:00 GMT</pubDate></item><item><title>You can't manage what you can't measure. Lies, Damn Lies and Code Quality Metrics. White box management.</title><link>http://blog.loganpoelman.com/2010/04/27/you-cant-manage-what-you-cant-measure-lies-damn-lies-and-code-quality-metrics-white-box-management.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;div&gt;&lt;strong&gt;&lt;span style="font-size: 14px; "&gt;Black Box Software Development Management&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;Imagine you are managing a group designing building heart lung machines for a medical equipment manufacturer. Wouldn't you:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
    &lt;li&gt;define the features of the device&lt;/li&gt;
    &lt;li&gt;understand how it would be used, under what conditions, by what kind of users&lt;/li&gt;
    &lt;li&gt;design all the parts&lt;/li&gt;
    &lt;li&gt;review the designs&lt;/li&gt;
    &lt;li&gt;build a prototype&lt;/li&gt;
    &lt;li&gt;test the prototype&lt;/li&gt;
    &lt;li&gt;productize the prototype&lt;/li&gt;
    &lt;li&gt;ramp up the manufacturing process&lt;/li&gt;
    &lt;li&gt;build the parts (or outsource the manufacturing)&lt;/li&gt;
    &lt;li&gt;then MEASURE THE PARTS before assembling the whole unit?&lt;/li&gt;
    &lt;li&gt;assemble the unit and test its functioning?&lt;/li&gt;
    &lt;li&gt;stress test it?&lt;/li&gt;
    &lt;li&gt;Continuously improve the product&lt;/li&gt;
    &lt;li&gt;Continuously check that parts and the whole unit were being manufactured to specs and tolerances?&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;Are you doing the same with your software or are you instead doing &lt;strong&gt;"black box" software development management&lt;/strong&gt;? &lt;/div&gt;
&lt;div&gt;Where you &lt;strong&gt;&lt;em&gt;aren't&lt;/em&gt;&lt;/strong&gt;::&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;reviewing the designs - collaborative design and design reviews&lt;/li&gt;
    &lt;li&gt;testing the individual parts - unit tests&lt;/li&gt;
    &lt;li&gt;measuring the tolerances of the components - &lt;strong&gt;reviewing the unit tests, running metrics on the code base&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;testing the load capacity of the parts - stress testing the protoypes and the code &lt;strong&gt;AS ITS BEING DEVELOPED.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-size: 14px; "&gt;Code Metrics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;Code metrics are great if you realize they are like a combination "&lt;strong&gt;metal detector"/"x ray machine"&lt;/strong&gt; for code quality. They are tools that can help you detect things -&lt;strong&gt; they CAN'T TELL YOU HOW GOOD YOU CODE REALLY IS!&lt;/strong&gt; They give you statistics. Statistics, as Mark Twain put it, "there are lies, damn lies and statistics."&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;The code metrics I find helpful include:&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 10px; "&gt; (see &lt;/span&gt;&lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; "&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#MetricsOnApplication" style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 10px; "&gt;http://www.ndepend.com/Metrics.aspx#MetricsOnApplication&lt;/span&gt;&lt;/a&gt;&lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 10px; "&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Cyclomatic Complexity (McCabe)&lt;/li&gt;
    &lt;li&gt;DIT (Depth of Inheritance Tree)&lt;/li&gt;
    &lt;li&gt;NOC (Number of Children)&lt;/li&gt;
    &lt;li&gt;eLOC (effective Lines of Code)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;The way I believe you get the best value is by using them to find the overall trend in the code and find the outliers. Then, taking a look at the actual code that is in the set of outliers.&lt;strong&gt; DON'T BELIEVE THE TOOLS!&lt;/strong&gt; Sometimes, the best way to implement something gives you bad code metrics! You need to &lt;strong&gt;review that code&lt;/strong&gt; and make a judgement (or have your architects do it.)&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Don't share the metrics with your offshore group / outsourcer / internal coders. Yes, I said &lt;strong&gt;DON'T share&lt;/strong&gt;. Why? You don't want them to code to the metrics! They should code to the best implementation / design patterns / solution. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Use the tools to focus your code quality management efforts.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Measure it and you can manage it.&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;In a later blog I'll take about how to leverage those metrics, specifically.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 14px; "&gt;Code Coverage Analysis (CCA)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-size: 12px; "&gt;So you have a QA department. But what exactly are they testing. Do you know what lines of code in your codebase get executed at all? Time to implement some code coverage analysis. Tools will let you monitor what lines get executed by what tests. Integrate that with your automated testing and continuous integration and you might have some idea of what you actually HAVEN'T tested when you ship.&lt;/span&gt;&lt;/div&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-size: 10px; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-size: 14px; "&gt;Continuous Performance, Stress and Security Testing&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;Like continuous integration avoids "big bang" integration issues, these avoid "big bang" scalability, stress and security issues.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Start testing how the product scales &lt;strong&gt;as soon as the product can run at all.&lt;/strong&gt; Don't wait. Start early. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Collect data over time. Watch the performance over time. It should slow down slowly. Then watch for when the performance drops precipitously. Back up and see what changes you just made. Its so much easier/cheaper to fix now then finding out you can't scale / handle stress / security issues 2 months from now (or 9 months from now, for that matter.) &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;strong&gt;&lt;span style="font-size: 16px; "&gt;So, stop managing in the dark. Come in to the light! &lt;/span&gt;&lt;/strong&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>Software Quality</category><category>Code Metrics</category><category>Continuous Performance Testing</category><comments>http://blog.loganpoelman.com/2010/04/27/you-cant-manage-what-you-cant-measure-lies-damn-lies-and-code-quality-metrics-white-box-management.aspx#Comments</comments><guid isPermaLink="false">cf34b3a4-39d4-4051-8b6e-8403b0d72aae</guid><pubDate>Wed, 28 Apr 2010 02:50:00 GMT</pubDate></item><item><title>Information Security, Home Invasion, Fox guarding the Chicken Coop, Who took all the nice pens out of the supply cabinet?</title><link>http://blog.loganpoelman.com/2010/04/12/information-security-home-invasion-fox-guarding-the-chicken-coop-who-took-all-the-nice-pens-out-of-the-supply-cabinet.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; "&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;PODCAST is &lt;a href="http://media.podcastingmanager.com/1/4/7/1/5/161348-151741/Media/Info%20Securityand%20Home%20Invasion.mp3" style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;here&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;span style="font-family: arial, verdana, sans-serif; font-size: 10px; "&gt;
&lt;p style="margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;"A Bank of America worker who installed malicious software on his employer’s ATMs was able to siphon at least $200,000 from the hacked machines before he was caught, according to a plea agreement he entered with prosecutors last week.&lt;/p&gt;
&lt;p style="margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Rodney Reed Caverly, 37, was a member of the bank’s IT staff when he installed the malware, which instructed the machines to dispense free cash without creating a record of the transaction. The Charlotte, North Carolina, man &lt;a href="http://www.wired.com/threatlevel/2010/04/bank-of-america-hack/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #007ca5; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;made fraudulent withdrawals over a seven-month period&lt;/a&gt; ending in October 2009, according to prosecutors, who’ve charged him with one count of computer fraud." -  &lt;a href="http://www.wired.com/threatlevel/2010/04/atm-hack/#ixzz0kzJLm3Fp" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #007ca5; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;http://www.wired.com/threatlevel/2010/04/atm-hack/#ixzz0kzJLm3Fp&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; font-family: arial, verdana, sans-serif; font-size: 10px; "&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;"Oh my Lord, they've hacked our bank's website! Harold, hide the silverware!"&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;When a corporation's website gets hacked, its a bit like a home invasion - its scary, its sensational, its fodder for the media, its exciting ... and its relatively low on the damage threshold, easy to detect, and a major distraction. But while everybody is worrying about the frontdoor hacks, that consultant you hired to migrate your database servers is installing rootkits and quietly siphoning off information without making much noise, at all.&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;When somebody steals through the front door we should be concerned but its the stuff leaving through the read door or loading dock, that often is more damaging / valuable / critical.&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;br /&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Corporate Espionage Does Happen&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;Remember who invented the telephone? It was Alexander Graham Bell, right? &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;strong&gt;" &lt;span style="font-weight: normal; line-height: 19px; font-family: sans-serif; font-size: small; "&gt;On 14 February 1876, Gray filed a &lt;a href="http://en.wikipedia.org/wiki/Patent_caveat" title="Patent caveat" style="text-decoration: none; color: #002bb8; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; "&gt;patent caveat&lt;/a&gt; for a telephone on the very same day in 1876 as did Bell's lawyer. The &lt;a href="http://en.wikipedia.org/wiki/Water_microphone" title="Water microphone" style="text-decoration: none; color: #002bb8; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; "&gt;water transmitter&lt;/a&gt;described in Gray's caveat was strikingly similar to the experimental telephone transmitter tested by Bell on March 10, 1876, a fact which raised questions about whether Bell (who knew of Gray) was inspired by Gray's design or vice versa. Although Bell did not use Gray's water transmitter in later telephones, evidence suggests that Bell's lawyers may have obtained an unfair advantage over Gray.&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; line-height: normal; font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; "&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-weight: normal; line-height: normal; font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; "&gt;&lt;strong&gt;...&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style="line-height: 19px; font-family: sans-serif; font-size: 13px; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="line-height: 19px; font-family: sans-serif; font-size: 13px; "&gt;&lt;strong&gt;Ten years after Bell's patent was issued, patent examiner Zenas Wilber admitted in a sworn affidavit that he had taken a $100 bribe from Bell, had taken a "loan" from Bell's patent attorney, and showed Bell the drawings in Gray's caveat.&lt;/strong&gt;&lt;sup id="cite_ref-24" class="reference" style="line-height: 1em; font-weight: normal; font-style: normal; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Elisha_Gray_and_Alexander_Bell_telephone_controversy#cite_note-24" style="text-decoration: none; color: #002bb8; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; white-space: nowrap; "&gt;&lt;span&gt;[&lt;/span&gt;25&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;sup id="cite_ref-ID_25-0" class="reference" style="line-height: 1em; font-weight: normal; font-style: normal; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Elisha_Gray_and_Alexander_Bell_telephone_controversy#cite_note-ID-25" style="text-decoration: none; color: #002bb8; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; white-space: nowrap; "&gt;&lt;span&gt;[&lt;/span&gt;26&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; Bell responded with his own sworn affidavit that he had never paid any money to Wilber and Wilber did not show the drawings or any part of Gray's caveat to Bell.&lt;sup id="cite_ref-26" class="reference" style="line-height: 1em; font-weight: normal; font-style: normal; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Elisha_Gray_and_Alexander_Bell_telephone_controversy#cite_note-26" style="text-decoration: none; color: #002bb8; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; white-space: nowrap; "&gt;&lt;span&gt;[&lt;/span&gt;27&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; Bell testified that he visited Wilber before the patent was granted and asked Wilber what part of his application conflicted with Gray's caveat. Wilber told Bell that the conflict was with his use of variable resistance to cause undulating current and pointed to those words in Bell's application. Wilber suggested that Bell make several amendments to his application that eliminated the conflict and Bell complied.&lt;sup id="cite_ref-27" class="reference" style="line-height: 1em; font-weight: normal; font-style: normal; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Elisha_Gray_and_Alexander_Bell_telephone_controversy#cite_note-27" style="text-decoration: none; color: #002bb8; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; white-space: nowrap; "&gt;&lt;span&gt;[&lt;/span&gt;28&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; Examiner Wilber then approved Bell's patent which was issued on March 3, 1876. &lt;span style="line-height: normal; font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; "&gt;&lt;strong&gt;&lt;span style="font-weight: normal; line-height: normal; font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; "&gt;&lt;strong&gt;" -  &lt;span style="font-weight: normal; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Elisha_Gray_and_Alexander_Bell_telephone_controversy"&gt;Elisha_Gray_and_Alexander_Bell_telephone_controversy&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;Did Bell steal the idea? Its still debatable. But, in one of the most influential products in the history of man, there is the possibility. Lots of smaller espionage incidents probably still occur but are a harder to detect.&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Fox and Chickens and the Chicken Coop&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;If you bring in an outside consulting group to help with security or ANYTHING for that matter that could lead to a compromise, monitor what they are doing. Pair them with a buddy from inside your organization. Sounds expensive but saves lots of cash, in the long run.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;If you hire somebody, you should do the same. There is a reason that in the movie "Red October," two guys had keys to launch the missiles and it took both turning their keys at the same time to do it - its much harder if you need help, to steal or compromise something valuable. Yet, you have DBAs who have complete, unfettered, unjournaled access to the servers. You don't let developers near the production servers because your afraid they'll do something stupid. Yet, you let DBAs and infrastructure folks "alone in the vault."&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;strong&gt;We have Police Departments and Building Codes for a Reason&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;I once had to help the CFO of a company save his 700 MB of  "all my data for the last 6 years" in his outlook file, on a machine that wouldn't boot anymore with a hard drive that made a suspicious "rattling noise" when I removed it from the machine. I was able to get it to boot, one last time and quickly get a copy of all the data I could to another machine. It never successfully booted, ever again. The data was neither backed up nor encrypted. This was a company with 5000+ employees and yet the CFO was in charge of backing up and securing his data (Being his own Police and Building Inspector, I guess.) &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Loss of data is sometimes just as damaging as theft of data. Do you have the executive management machines automatically backed up? Encrypted? Journaled? What about their admin's machines? (they often contain just as sensitive as documents as the CxO.) &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;BTW, have you carefully vetted the CxO's admin? If I were a hacker and wanted access to the most sensitive stuff, thats the job I'd want. Below the radar and yet open access. The admin could easily install a hardware logger, capture some stuff, remove the keylogger and nobody would suspect a thing.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I once worked for CxO that was so paranoid, he wouldn't let the IT guys work on his laptop without being present. He was paranoid of key loggers (and just paranoid in general, I think.) So, he watched over their sholders while they worked on his machine. He didn't however, encrypt his hard drive, so somebody could have stolen the laptop and gotten his data or removed the HD, installed in a different machine, booted, installed a keylogger, and returned the HD to his machine, if they wanted badly enough.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;strong&gt;Why did he rob banks? 'cause thats where the money is!&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;Corporate Information Espionage is on the rise. Think you are immmune? &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;A little HYPOTHETICAL cautionary tale. Lets say you are a medical device manufacturer. You build things that get implanted in the body or devices that scan the body, you pick. Your company spent 20 man years developing the hardware and  10 man years developing the software, for it. I am your competitor. I hire somebody to steal your software. I know have removed months of time off my development cycle and you'll never know because the code will be sanitized and tweaked and hidden inside my device. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Would you even know?&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Are you using an offsite firm or offste developers to design / write code? How do you know its not leaving by the back door of India / Ukraine / Buenos Aires / Cedar Rapids / Manhattan? I once worked on a project setting up an offshore "clean room" development organization, in India, for a Wall Street firm. Developers had only a screen, keyboard and mouse. They had no internet access (only a VPN to a segmented corporate network.) They had no email, flashdrive, CD burners, floppy drives, etc. All machines were racked in a locked cage only we had access to. Servers were virtualized to prevent leakage. No phones allowed, no cameras, no laptops, no purses, ... We segmented the teams up so that no team had complete access to all the source code, designs or data. Its hard but it can be done, when warranted.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Lock the doors and leave the back window open?&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;When I lived in Chicago in Hyde Park, we had a nice brownstone with a 3" thick oak front door, we had bars on the basement windows, we had a security system, we had a 6' high stockade fence, we had really noisy wood floors on the first floor and yet we still were burglarized. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I bought the house and the security system didn't work, I didn't know that.. Didn't get around to replacing it. Then, one night, I left the rear window off the deck open. Somewhere around 1am, somebody came into the neighbors yard, climbed up on their deck, hopped over my fence to my deck and crawled in the window. They only visited the kitchen, pantry and dining room and made off with several thousand in stuff (five brand new pairs of shoes, in the boxes, on the kitchen island. Oh, my Kenneth Coles!)&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;They stole credit cards, phones, purses and used them to try and buy gas, for other people for cash, BTW, immediately after robbing us. The police had the records and recordings. Yet, nothing was ever recovered and nobody ever arrested.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;The whole incident scared the wits out me and my family. &lt;/div&gt;
&lt;div&gt;But, I was reminded of one several things:&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;Criminals are patient&lt;/li&gt;
        &lt;li&gt;Criminals are clever&lt;/li&gt;
        &lt;li&gt;The weakest link defines the real security of a system&lt;/li&gt;
        &lt;li&gt;Detection is to late, deterrence is important, too. (should of had a big dog.)&lt;/li&gt;
        &lt;li&gt;Your neighbors weak security can affect your vulnerability, too.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;So, what does this have to do with info security?&lt;/div&gt;
&lt;div&gt;Make sure you:&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;Audit the system (bought a house with a broken security system)&lt;/li&gt;
        &lt;li&gt;Don't leave things of value within easy reach (like 5 boxes of brand new shoes)&lt;/li&gt;
        &lt;li&gt;Assume you have been penetrated and consistently audit your systems&lt;/li&gt;
        &lt;li&gt;As you improve your security systems, criminals will improve their attacks!&lt;/li&gt;
        &lt;li&gt;Criminals go for the easiest target (they came into my neighbors backyard but robbed me)&lt;/li&gt;
        &lt;li&gt;Trust but verify (Should have checked the security system when I bought the place, should have checked all the windows before going to bed)&lt;/li&gt;
        &lt;li&gt;Don't assume the guy before you knew what he was doing (I was told the house had a security system - I assumed that meant it worked)&lt;/li&gt;
    &lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;I once worked in a company that was so paranoid that I could NOT have a thumb drive or a CD burner on my computer!! I could though, insert a 8 gig flash drive into the PCMCIA slot. So much for leaving the back window wide open while watching the front door like a hawk. ( I of course never put any sensitive data on the flashdrive.) But, at that same institution, we did NOT encrypt the data on laptop hard drives. So, If someone's laptop were to get stolen, its and easy task to remove the hard drive and put it on a different PC, boot from a different HD and viola, I have access to all your data.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;br style="outline-style: none; outline-width: initial; outline-color: initial; " /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;Let say I know of a HYPOTHETICAL Wall Street firm that had all their trade data and trade requests flowing over a messaging bus that was developed internally and had NO ACCESS SECURITY or Journaling OF ACCESS to it. All you needed to know how to do was write socket level code (in Java, C, C#, PERL, VB, ...) and know what the TCP Address / Ports were and you could have tapped into any data you wanted in the firm. They also did NOT have a separated / segmented desktop and production networks so any consultant or employee that could get onto the network could have tapped into this message bus and either listened, set traded or modified the trade flow, if they were smart enough.&lt;/div&gt;
&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Do you know where your children are? Do you know whats running on your servers?&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;When I grew up there was TV campaign "&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;Do you know where your children are?&lt;span style="font-weight: normal; "&gt;" to remind parents that kids out late, unattended, get into trouble. I was doing a application review a while back and was reminded of that message.&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-weight: normal; "&gt;We were looking at the traffic between tiers in a Data Center application and low and behold, we found a strange protocol "eMule" &lt;a href="http://en.wikipedia.org/wiki/Emule"&gt;http://en.wikipedia.org/wiki/Emule&lt;/a&gt; I think it was. Just a few packets here and there, not a flood of traffic but it was strange. It was most disturbing because it was on the PRODUCTION DATABASE SERVER! Which, was behind 2 firewalls and 2 DMZs! EMule is a P2P file sharing protocol used mostly for MP3 piracy but you could always package up customer data in a file that looks like an MP3 and ship it out through this protocol. Who would ever suspect? Take the data on the end of a "Brittany Spears" tune like "Toxic" and who would ever find it, even if they detected the file sharing? Hmm, clever, very clever.&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-weight: normal; "&gt;Do you know whats running on your production servers?&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span style="font-weight: normal; "&gt;How about when you deploy them to the cloud?&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Desperate housewives - People Cheat&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;When I taught at NYU I was shocked, shocked! that students might try and cheat in my classes! &lt;strong&gt;&lt;em&gt;In my classes! &lt;span style="font-weight: normal; "&gt;(somebody else's, that I could understand but mine?&lt;/span&gt;)&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;Mind you, these were Computer Science MS and PhD level students, not 1st semester freshman!&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I had heard of a scandal where students were using language translators (basically a computer with lots of memory) to store course info and then read it back during a test. Thats not what happened to me. I had several not so impressive incidents.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;In one case, students just submitted another students source code as their own. After, of course, doing a search and replace of some of the words in the source code, Ah, how clever! But they didn't change the STRUCTURE of the code, including blank lines, indentation, loops, etc. So, it was easily detectable using some pattern matching software. Yet, when confronted, the students initially admitted it and then later tried to recant the cheating! All with the source code files displayed in front of them showing the structural identicalities (is that even a word?)!&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;When, they flunked my course and were put on probation. But, eventually graduated and are now in the IT work force. Hopefully they have mended their ways. But, what if they haven't and they work for you?&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;The second incident, which was far more, ... hmm "amusing" doesn't quite cut it ... "interesting" ... "confounding" maybe ... incident involved outsourcing. I actually had a student post on Sun's website for somebody to write his homework, in exchange for a fee. He put it out for bid! (Obviously he will end up running some Fortune 100 company someday) The Sun webmaster contacted me and pointed it out. The student didn't do anything to disguise that it was homework for my class, even listing the class title and website. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;We were NOT able to reverse engineer the identity of the poster, though. I speculate that it was actually a prank being played on me by some cheeky students. &lt;em&gt;Touché élèves intelligents..&lt;/em&gt; (I'd like to think it was that vs. somebody actually being that brazen / desperate.)&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;But these are the people that might someday work for you.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;strong&gt;
&lt;div&gt;&lt;strong&gt;Continuous Security Testing&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;In the agile community, the concept of &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;&lt;span style="font-weight: normal; "&gt;continuous integration testing&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal; "&gt; is pretty standard. Tools like CruiseControl make sure that you code builds every couple hours. It helps detect code that is diverging in the code base and avoids the "big bang" integration nightmare that was commonplace in the past.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;But what about security? Should we wait till the last minute to see how secure and application's design and implementation is? Sadly, almost every organization does. Instead, we should set up &lt;/span&gt;automated security testing&lt;span style="font-weight: normal; "&gt; WHILE we are building the application. That way, we detect the issues early, fix them when its cheapest and reduce nasty surprises AFTER deployment to production.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/blockquote&gt;&lt;strong&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Can your competitors read your code right from the server, over the internet?&lt;/strong&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-weight: normal; "&gt;Many new languages like Java, C# (or any JVM / CLR languages) can be reverse compiled, revealing readable source code from your compiled code. &lt;a href="http://www.javascriptobfuscator.com/"&gt;JavaScript &lt;/a&gt;can just be read (stolen), as is in the browser. Are your teams using &lt;a href="http://en.wikipedia.org/wiki/Obfuscated_code"&gt;obfuscation &lt;/a&gt;and &lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;minification&lt;/a&gt; routines before deploying the source code to production build processes?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/blockquote&gt;&lt;strong&gt;
&lt;div&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
What to do? What to do?&lt;/strong&gt;&lt;br /&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Calm down, "Chicken Little", the sky isn't falling, just yet. Here are a few starters:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Categorize the value of what you have and what its loss would impact. Focus on the most valuable and easiest to reuse, first. Including:
    &lt;ul&gt;
        &lt;li&gt;Customer Private Data&lt;/li&gt;
        &lt;li&gt;Customer Behavioral Data&lt;/li&gt;
        &lt;li&gt;Corporate Financial Data (great for beating the stock market if you can get it.)&lt;/li&gt;
        &lt;li&gt;Software / Firmware / Hardware Source Code and Compiled Code&lt;/li&gt;
        &lt;li&gt;Designs (CAD, Word Docs, Scans, ...)&lt;/li&gt;
        &lt;li&gt;Supplier pricing, Customer pricing (helpful in negotiating if you are a competitor.)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Sort things by highest impact&lt;/li&gt;
    &lt;li&gt;Figure out how easily attacked those things are&lt;/li&gt;
    &lt;li&gt;Figure out how you might detect an attack on those things. Could you detect it?&lt;/li&gt;
    &lt;li&gt;Check if your security systems (IPS, IDS, Logging) are even working (like my broken security system.)&lt;/li&gt;
    &lt;li&gt;Get a real vulnerability assessment (get two, from two different firms, compare the results.)&lt;/li&gt;
    &lt;li&gt;Vet your staff. Make sure that outside consultants don't get the master keys and don't get left all alone to wander around, getting it trouble. Monitor and journal what they do. Forensic evidence is often extremely valuable and knowing its being collected acts as a deterrent.&lt;/li&gt;
    &lt;li&gt;Virtualize OS images. Prevents rootkit installs in most cases.&lt;/li&gt;
    &lt;li&gt;Collect Forensic Evidence fore later - journal accesses, updates to systems software, data changes, etc.&lt;/li&gt;
    &lt;li&gt;Journal their accesses. Let them know (deterrence is always helpful)&lt;/li&gt;
    &lt;li&gt;Don't depend on &lt;a href="http://en.wikipedia.org/wiki/Security_through_obscurity"&gt;security through obscurity&lt;/a&gt;. &lt;/li&gt;
    &lt;li&gt;Don't roll you own encryption algorithms, SSO, tamper proofing.&lt;/li&gt;
    &lt;li&gt;Consider rotating people to different parts of the business. &lt;/li&gt;
    &lt;li&gt;Set up some "honey pots" to detect if things are getting pilfered. This can include embedding traceable words or phrases or patterns in source code that can be searched for / scanned for later. &lt;/li&gt;
    &lt;li&gt;Do lots more, than just these things.&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Lather, Rinse, Repeat. &lt;/em&gt;You should do this several times a year or what ever makes sense to you business.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>Security</category><category>Hacking</category><comments>http://blog.loganpoelman.com/2010/04/12/information-security-home-invasion-fox-guarding-the-chicken-coop-who-took-all-the-nice-pens-out-of-the-supply-cabinet.aspx#Comments</comments><guid isPermaLink="false">2e67bb49-84a2-4c4e-b132-85d7572c7b63</guid><pubDate>Mon, 12 Apr 2010 14:16:00 GMT</pubDate><itunes:author /><itunes:subtitle>Information Security, Home Invasion, Fox guarding the Chicken Coop, Who took all the nice pens out of the supply cabinet?</itunes:subtitle><itunes:summary /><itunes:explicit>no</itunes:explicit><itunes:block>no</itunes:block><itunes:duration>00:18:36</itunes:duration><itunes:keywords /><enclosure url="http://media.podcastingmanager.com/1/4/7/1/5/161348-151741/Media/Info%20Securityand%20Home%20Invasion.mp3?ref=rss" length="17816528" type="audio/mpeg" /></item><item><title>I've been using an iPad since 2003!</title><link>http://blog.loganpoelman.com/2010/04/03/ive-been-using-an-ipad-since-2003.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>OK, not THE &lt;strong&gt;iPad &lt;/strong&gt;but various tablets including one that in many ways is remarkably like the iPad.
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;As far back as 2003/4 I used the &lt;strong&gt;Gateway Tablet PC&lt;/strong&gt; (thanks to Tim Snyder the CTO at for funding that experiment.).&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="http://www.hardwarecentral.com/graphics/screenshots/1043959968500gtab342.jpg" /&gt;&lt;img alt="" src="http://www.smallbusinesscomputing.com/img/2003/gateway_tablet2.jpg" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I used it to do shared whiteboard stuff over WebEx to 4 countries at the same time (US, France, India, Denmark) at one point &lt;img alt="" src="http://blog.loganpoelman.com/emoticons/smile.png" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; " /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Good &lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Small size&lt;/li&gt;
    &lt;li&gt;Cool for demos, presentations&lt;/li&gt;
    &lt;li&gt;Presenting doc / stand&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;Bad&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Battery life - 2 hours&lt;/li&gt;
    &lt;li&gt;Lose the pen and your are screwed - I forgot it on day on a 2 hour train ride to a client - it was hard to use without the pen&lt;/li&gt;
    &lt;li&gt;No attached keyboard (you could use a USB keyboard, which I always carried with after forgetting the pen, incident.)&lt;/li&gt;
    &lt;li&gt;Small memory / slow processor&lt;/li&gt;
    &lt;li&gt;Applications not designed for the form of the device&lt;/li&gt;
    &lt;li&gt;Heavy&lt;/li&gt;
    &lt;li&gt;Cost - $2800 in 2004!&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I also have been using the &lt;strong&gt;Logitech IO Pen&lt;/strong&gt;  (Anoto, Pulse, ...) since 2004. This device writes on regular paper with a special map of dots in the paper to allows the pen to record what you write.&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img src="http://t0.gstatic.com/images?q=tbn:r8GwthmhiYWOUM:http://www.cesweb.org/shared_files/innovations/innovations_2003/1645/mainphoto1645.jpg" alt="See full size image" /&gt; &lt;img alt="" src="http://reviews.cnet.com/sc/31607565-2-200-0.gif" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;It also has intelligence that allows software to provide for areas that if you mark them with a checkmark it will trigger the software to run an app. It supports ICR and handwriting conversion to text, ... great for capturing writing / drawings without a big, bulky copputer. Let "threatening" in a meaning. Prevents getting distracted and surfing the web in a meeting. Its designed to write on and does that well. Downside - had to plug pen into USB cradle to get the images out, custom paper needed, only one color images. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Good&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Price $150&lt;/li&gt;
    &lt;li&gt;Light&lt;/li&gt;
    &lt;li&gt;Easy to use&lt;/li&gt;
    &lt;li&gt;High res - 300 dpi - equiv of a 3300 x 2400 pixel screen&lt;/li&gt;
    &lt;li&gt;non-intrusive - nobody knows its recording things like typing on a PC does&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;Bad&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Battery life - 3-4 hours&lt;/li&gt;
    &lt;li&gt;docking cradle needed&lt;/li&gt;
    &lt;li&gt;one color, no ability to erare&lt;/li&gt;
    &lt;li&gt;no display - paper doesn't show things only records as input device&lt;/li&gt;
    &lt;li&gt;handwriting recognition is bad input and prone to errors.&lt;/li&gt;
    &lt;li&gt;hand cramping&lt;/li&gt;
    &lt;li&gt;no really good apps&lt;/li&gt;
    &lt;li&gt;lose the pen and your out $150!&lt;/li&gt;
    &lt;li&gt;proprietary paper&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I've had a &lt;strong&gt;Toshiba m205 Tablet&lt;/strong&gt; since 2004. I used it to teach classes at NYU. Using the pen to write on power point in real time, highlighting things, drawing diagrams, manipulating things. &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="http://www.pencomputing.com/images/toshiba_m205.jpg" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I used it in JAD sessions with a team developing software design. Used it to draw UML diagrams, etc.&lt;/div&gt;
&lt;div&gt;Used it as a regular laptop with its keyboard to write code, word docs, etc. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;On a plane, to watch DVDs, I would spin the screen around so it was facing up, but not snapped down covering the keyboard but tiled for viewing. Avoided the fatigue of holding it and the impossible angle that a cramped seat forces you to have it at.&lt;/div&gt;
&lt;div&gt;Used the pen for &lt;strong&gt;retouching photographs&lt;/strong&gt; on the screen (not terribly good for that, BTW, not easy to see what you are drawing on.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I used it to &lt;strong&gt;READ BOOKs&lt;/strong&gt; and &lt;strong&gt;highlight them!&lt;/strong&gt; Yes, using PDF / Word editor and PDF or word based books this worked GREAT! Or using a special printer driver that would create a file for OneNote. Then I could use OneNote to read and highlight / write comments in the margins. Years before the kindle / nook / eReaders / iPad.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Good&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;pen was great for driving power point like it was a whiteboard you could write on&lt;/li&gt;
    &lt;li&gt;supported erasing by using the "eraser" end of the pen&lt;/li&gt;
    &lt;li&gt;Pen - Great for drawing diagrams but bad for entering text &lt;/li&gt;
    &lt;li&gt;Reading books (better res would have been nice)&lt;/li&gt;
    &lt;li&gt;Attached keyboard because handwriting as input sucks - keyboard is faster / more accurate / more natural (yes).&lt;/li&gt;
    &lt;li&gt;Memory - max 4 GB (that was big back then)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Bad features&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;lose the pen your out of luck (so I carried an extra.)&lt;/li&gt;
    &lt;li&gt;a pen is not a great general purpose input device. if it had  mutitouch, it would have been better for more different things, but this was 2004.&lt;/li&gt;
    &lt;li&gt;weighed too much (6 lbs)&lt;/li&gt;
    &lt;li&gt;battery life was 2.5 hrs.&lt;/li&gt;
    &lt;li&gt;screen real estate was 1024 x 768 and 11" diagonal (similar to a iPad)&lt;/li&gt;
    &lt;li&gt;few apps that were design for that form of device&lt;/li&gt;
    &lt;li&gt;cost $3000 in 2005!&lt;/li&gt;
    &lt;li&gt;cost of applications&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;em&gt;Apps weren't designed for that form factor and thus were often clumsy to use.&lt;/em&gt;&lt;/div&gt;
&lt;div&gt;The way you use a mouse versus a pen (vs. multitouch vs. voice) require different UI designs for best functionality.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;As with many ideas, they make better sense in your head then in your hands&lt;/strong&gt;. &lt;/div&gt;
&lt;div&gt;The &lt;strong&gt;pen &lt;/strong&gt;as an input device excels at certain tasks and fails at others. &lt;/div&gt;
&lt;div&gt;The &lt;strong&gt;mouse &lt;/strong&gt;excels at certain tasks and fails at others. &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Keyboard &lt;/strong&gt;input - yada yada yada.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Voice &lt;/strong&gt;input  - yada yada yada.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Multitouch&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;input - yada yada yada. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;so what do you do? support all? of focus on certain types of problems and optimize for them? &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Thought experiment - ever play piano? A piano is a great input device for certain things -&lt;strong&gt; you can enter data and time relationships between that data, in real time,&lt;/strong&gt; along with the dimension of velocity (how hard/fast) you enter press the key(s). Why not use a piano to enter text in a word processor? You could map the alpha bet to the keyboard. You enter whole words by pressing multiple keys simultaneously, like playing a chord on the piano. How hard you hit a key could determine the font size or bolding or italics.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;This idea is not new, back when the mouse was conceived, the 5 key chording "keyset"  was also created at SRI by Englbart. &lt;/div&gt;
&lt;div&gt;&lt;img src="http://www.cedmagic.com/history/first-computer-mouse.jpg" alt="Douglas Engelbart Mouse" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;You could even consider Morse Code and the Telegraph key as a input device! &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img src="http://t1.gstatic.com/images?q=tbn:gFqF0pZf_UdvkM:http://www.qsl.net/sp9hzx/Federal_Telegraph_Key.jpg" alt="See full size image" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;What differentiates what works and what doesn't? Many times its the efficiency vs. effort to learn curve. Sometimes its ease of use in the intended environment (think voice control underwater vs. a keyboard, or touch interface vs. a mouse on an oil drilling platform, ...)&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;So, what does all this have to do with "the price of tea in China?" or the iPad? &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Apple has reinvented the past to define the future. &lt;/div&gt;
&lt;div&gt;They understand what works and when and why.&lt;/div&gt;
&lt;div&gt;Things that apple gets:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;Looks cool&lt;/li&gt;
    &lt;li&gt;Branded as "cool"&lt;/li&gt;
    &lt;li&gt;Initial price is low&lt;/li&gt;
    &lt;li&gt;&lt;/li&gt;
    &lt;li&gt;Lightweight&lt;/li&gt;
    &lt;li&gt;Long bat life&lt;/li&gt;
    &lt;li&gt;Tailor the apps for the device&lt;/li&gt;
    &lt;li&gt;Fewer features that work better is superior to "swiss army knife" approach.&lt;/li&gt;
    &lt;li&gt;Focus on a few uses of the device and do them well&lt;/li&gt;
    &lt;li&gt;Lower cost for software - a buck or two at the iStore&lt;/li&gt;
    &lt;li&gt;Software that doesn't have "featuritis "&lt;/li&gt;
    &lt;li&gt;Multitasking eats processor cycles - limit it to single tasking to start with&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Will Apple change the game with the iPad? YES&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;
&lt;div&gt;
&lt;div&gt;"&lt;span style="line-height: 22px; font-family: 'lucida grande', 'lucida sans unicode', arial, verdana, sans-serif; font-size: 16px; color: #888888; "&gt;All of the built-in apps on iPad were designed from the ground up to take advantage of the large Multi-Touch screen and advanced capabilities of iPad. And they work in any orientation. So you can do things with these apps that you can’t do on any other device.&lt;span style="line-height: normal; font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; color: #000000; "&gt;" - Apple Website 2010&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style="line-height: normal; font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; color: #000000; "&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;They did with the MP3 player, with the cell Phone, ...&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I believe that Apple is good at "&lt;strong&gt;misdirection&lt;/strong&gt;." You think the iPhone is a phone, but its really a portable computing device that is more powerful than my Toshiba Tablet from 2005! You run more apps than you do talking on it, I'm betting. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;The iPad is a purpose focused device for reading web pages, books, watching video ... until it gets used for lots of other things, too. You'll need a bunch of them for the house, not just one big powerful one. Its cloud computing savvy. More stuff run in the cloud means less needed in your laptop. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;So watch as Apple changes the game and the competitors scramble to copy the hardware approach of the iPad while missing the real energy behind the iPad - cheap software that developers will fund and Apple will profit off of (look at the MP3 player vs. the MP3s, the phone vs. the apps vs. the monthly plan. &lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Apple is, after all, in the business of selling you HARDWARE under the guise of selling you a lifestyle&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Its &lt;/strong&gt;hard to pirate hardware, easy to pirate software, can you pirate a lifestyle? ... hmmm&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Steve Jobs has failed often when he tried the super advanced tech approach - Lisa Computer, Next Computer, ... but succeeded with the stripped down version that then grew back into the super-duper version - Mac, OS X, ...&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Welcome to the future,  Apple style.&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>Tablet Computing</category><category>Gestural Interfaces</category><category>iPad</category><comments>http://blog.loganpoelman.com/2010/04/03/ive-been-using-an-ipad-since-2003.aspx#Comments</comments><guid isPermaLink="false">b86f6027-364b-4dd2-9a0b-154a8e6a8434</guid><pubDate>Sat, 03 Apr 2010 17:02:00 GMT</pubDate></item><item><title>Standing on the Shoulders of Giants, Apple didn't invent much of what you think they did (neither did Microsoft, Xerox PARC)</title><link>http://blog.loganpoelman.com/2010/03/25/standing-on-the-shoulders-of-giants-apple-didnt-invent-much-of-what-you-think-they-did-neither-did-microsoft-xerox-parc.aspx?ref=rss</link><dc:creator>Logan Poelman</dc:creator><description>&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; color: rgb(128, 128, 128); "&gt;&lt;h3 class="GenericStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="font-size: 13px !important; color: rgb(51, 51, 51); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; overflow-x: hidden; overflow-y: hidden; "&gt;Douglas Engelbart, et al., at the Stanford Research Institute invented the first mouse prototype in &lt;strong&gt;1963&lt;/strong&gt;.&lt;/h3&gt;&lt;h3 class="GenericStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="font-size: 13px !important; color: rgb(51, 51, 51); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; overflow-x: hidden; overflow-y: hidden; "&gt;They demoed a &lt;strong&gt;windowing system&lt;/strong&gt; in 1968.&amp;nbsp;&lt;/h3&gt;&lt;h3 class="GenericStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="font-size: 13px !important; color: rgb(51, 51, 51); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; overflow-x: hidden; overflow-y: hidden; "&gt;All funded through DARPA / NASA / Army via Gov Grants.&lt;/h3&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Watch history&amp;nbsp;&lt;a href="http://www.1968demo.org/web.html"&gt;http://www.1968demo.org/web.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/span&gt;&lt;BR&gt;&lt;BR&gt;Copyright 2008-2011 Logan Poelman - Poelman &amp; Associates, Inc.</description><category>History of Computing</category><comments>http://blog.loganpoelman.com/2010/03/25/standing-on-the-shoulders-of-giants-apple-didnt-invent-much-of-what-you-think-they-did-neither-did-microsoft-xerox-parc.aspx#Comments</comments><guid isPermaLink="false">17a8b7a0-3d2d-49c4-90b8-3f81cd306636</guid><pubDate>Thu, 25 Mar 2010 21:00:00 GMT</pubDate></item></channel></rss>
