<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkIERXszeCp7ImA9WhVUFUU.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573</id><updated>2012-05-21T02:08:24.580-04:00</updated><category term="estimating" /><category term="lean" /><category term="technology" /><category term="reston town center" /><category term="office" /><category term="ortho-rectification" /><category term="java" /><category term="contracts" /><category term="unit tests" /><category term="gis" /><category term="imagery" /><category term="owf" /><category term="ozone" /><category term="implementation" /><category term="government" /><category term="selenium" /><category term="conference" /><category term="terrorism" /><category term="experts" /><category term="networking" /><category term="software development" /><category term="pair programming" /><category term="cool" /><category term="divlet" /><category term="reston" /><category term="archive" /><category term="integration" /><category term="jobs" /><category term="ping pong" /><category term="agile" /><category term="Ruby" /><category term="planning" /><category term="link analysis" /><category term="software" /><category term="history" /><category term="search" /><category term="lmn" /><category term="automated testing" /><category term="team" /><category term="career" /><category term="project management" /><category term="testing" /><category term="orthorectification" /><category term="widget" /><category term="training" /><category term="partner" /><category term="social network" /><category term="Meta" /><title>Collision of Influences</title><subtitle type="html">The First Step to a Visionary Status: Seeing something and knowing it could be different or better</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://process.lmnsolutions.com/" /><author><name>Matt McKnight</name><uri>http://www.blogger.com/profile/16098483018096096360</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="14" src="https://support.google.com/enterprise/static/gsa.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/CollisionOfInfluences" /><feedburner:info uri="collisionofinfluences" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>CollisionOfInfluences</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;D0MMQHc7eip7ImA9WhZSEEQ.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-4091908809529840229</id><published>2011-03-25T19:20:00.004-04:00</published><updated>2011-03-25T19:24:41.902-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-25T19:24:41.902-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="automated testing" /><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><category scheme="http://www.blogger.com/atom/ns#" term="ozone" /><category scheme="http://www.blogger.com/atom/ns#" term="selenium" /><category scheme="http://www.blogger.com/atom/ns#" term="owf" /><title>Automated Testing with Selenium Training</title><content type="html">&lt;span class="Apple-style-span" style="font-size: large;"&gt;Automated Testing with Selenium Training&lt;/span&gt;&lt;br /&gt;
This month&amp;nbsp;we&amp;nbsp;have been teaching a class on Selenium IDE and Selenium Remote Control. It has been a pleasure to teach others what I know about Selenium. We hope to blog more on Selenium testing tips in the near future.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://seleniumhq.org/images/big-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://seleniumhq.org/images/big-logo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Within fast moving agile software development teams it becomes important to test user interfaces as they are being coded. Automated Testing techniques using Selenium allow for test replay of important features as development progresses.&lt;br /&gt;
Selenium IDE and Selenium Remote Control are important tools for any tester and even developer to use in ensuring software quality and consistency. This interactive hands-on workshop provides an understanding and advanced techniques in the use of Selenium with hands on practice. The practice exercises are tailored to various skill levels and type of application being tested, from simple forms to Ozone Widget Framework applications.&lt;br /&gt;
&lt;br /&gt;
Using presentations, guided configuration and automated test plans, the class teaches:&lt;br /&gt;
• Understand trade-offs of automated vs. manual testing.&lt;br /&gt;
• Record, edit and play back Selenium IDE tests against multiple types of web applications.&lt;br /&gt;
• Minimize test failure due to normal changes to code.&lt;br /&gt;
• Understanding of basic Selenium commands to get through common issues with web applications&lt;br /&gt;
• Move tests from IDE to Selenium RC.&lt;br /&gt;
• Use of Eclipse to run tests individually and as a group to generate test failure reports&lt;br /&gt;
• Understand the importance of making applications more testable to improve usability.&lt;br /&gt;
&lt;br /&gt;
Topics&lt;br /&gt;
• Overview of automated testing&lt;br /&gt;
• Selenium Suite Overview&lt;br /&gt;
• Selenium Limitations&lt;br /&gt;
• Selenium IDE&lt;br /&gt;
• HTML Locator strategy and false test failure.&lt;br /&gt;
• Firefox Firebug and reading HTML&lt;br /&gt;
• Selenium Remote Control setup&lt;br /&gt;
• Eclipse and jUnit (Don't Panic its just code.)&lt;br /&gt;
• Moving IDE tests to Selenium RC&lt;br /&gt;
• Dealing with security and certificates&lt;br /&gt;
• Selenium RC practice workshop. (Test a Ozone Widget Framework dashboard, simple web forms or your own application)&lt;br /&gt;
• Learn how to test in multiple browsers and generate metrics and reports.&lt;br /&gt;
• Discussion of setting up Selenium RC for continuous integration&lt;br /&gt;
&lt;br /&gt;
Bonus Features&lt;br /&gt;
• Sample Selenium RC code&lt;br /&gt;
• Scripts to run jUnit suite tests on multiple browsers and generate reports and metrics.&lt;br /&gt;
• List of web resources and blogs for reference.&lt;br /&gt;
• CSS locator cheat sheet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://www.lmnsolutions.com/" style="color: #940f04; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5360887225130038546" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; float: left; height: 59px; margin-bottom: 10px; margin-left: 0pt; margin-right: 10px; margin-top: 0pt; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; width: 143px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://www.lmnsolutions.com/" style="color: #940f04; text-decoration: none;"&gt;LMN Solutions&lt;/a&gt;&amp;nbsp;- Find out more about us.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 29px;"&gt;&lt;a href="mailto:info@lmnsolutions.com" style="color: #d23b07; text-decoration: none;"&gt;info@lmnsolutions.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-4091908809529840229?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/4091908809529840229/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=4091908809529840229" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4091908809529840229?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4091908809529840229?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/81_zILITjvE/automated-testing-with-selenium-class.html" title="Automated Testing with Selenium Training" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s72-c/logo.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2011/03/automated-testing-with-selenium-class.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4AR3gzfip7ImA9Wx9WEEw.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-4621852170391000738</id><published>2011-01-13T14:25:00.009-05:00</published><updated>2011-01-14T10:12:26.686-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-14T10:12:26.686-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="training" /><title>RubyKoans - the path to Ruby enlightenment</title><content type="html">&lt;span style="font-size:85%;"&gt;I'm attending the Advanced Ruby training course with several other LMN employees next week.  But, since I'm on a Java-based project, I felt a little rusty in my Ruby skills.  For anyone else in the same boat, I thought I'd share a fun Ruby learning resource I've been working through that's helped me come back up to speed - &lt;a href="http://rubykoans.com/"&gt;RubyKoans&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What's a "koan"?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Pronounced like "&lt;span style="font-weight: bold;"&gt;Ko-&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;An&lt;/span&gt;",  a koan is originally from Zen Buddhism - it's a saying or story to meditate on. "What is the sound of one hand clapping?" is probably the most famous example.  RubyKoans are similar -they're a collection of short Ruby code snippets used to illustrate various concepts of Ruby programming.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Getting Started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;It's easy to start - just install &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;, download the zip from the &lt;a href="http://rubykoans.com/"&gt;RubyKoans&lt;/a&gt; site, unzip it, open a command prompt there, and type : &lt;/span&gt;&lt;pre&gt;ruby path_to_enlightenment.rb&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;It's as simple as that!&lt;br /&gt;&lt;br /&gt;Here are the results from the first run -&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;C:\koans&gt;ruby path_to_enlightenment.rb&lt;br /&gt;AboutAsserts#test_assert_truth has damaged your karma.&lt;br /&gt;&lt;br /&gt;The Master says:&lt;br /&gt;You have not yet reached enlightenment.&lt;br /&gt;&lt;br /&gt;The answers you seek...&lt;br /&gt;Failed assertion, no message given.&lt;br /&gt;&lt;br /&gt;Please meditate on the following code:&lt;br /&gt;C:/koans/about_asserts.rb:10:in `test_assert_truth'&lt;br /&gt;&lt;br /&gt;mountains are merely mountains&lt;br /&gt;your path thus far [X_________________________________________________] 0/274&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What does this mean?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;The process of working through all the RubyKoans is a mix of &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;TDD&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Gamification"&gt;Gamification&lt;/a&gt;.  First, let's look at the output.&lt;br /&gt;&lt;br /&gt;The first section tells what test methods (if any) passed during the last run, and ends with the first method that caused a failure.  In this case there were no methods that passed, it failed on the first test - AboutAsserts#test_assert_truth&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.&lt;br /&gt;&lt;br /&gt;The sections starting with 'The Master says:' and 'your path thus far' give you status on how many tests you've passed and how many more you have to go.  The last line functions like a progress bar - it fills up as you complete tests.&lt;br /&gt;&lt;br /&gt;The lines after 'The answers you seek...' displays any error messages from the failed test.&lt;br /&gt;&lt;br /&gt;The section after 'Please meditate on the following code:' gives a stack trace showing the file and line number the test failed on. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;What do I do now?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;All the code is organized into files named 'about_&lt;span style="font-style: italic;"&gt;concept&lt;/span&gt;.rb'.    Seeing the output from the first run, you need to edit the 'about_asserts.rb' file on line 10, fix it, and then run 'ruby path_to_enlightenment.rb' again, read the output, and see what to fix next. &lt;br /&gt;&lt;br /&gt;Most of the tests are easy to fix - they're just fill in the blank...   yes, seriously, a '__' value is defined and you replace it with the correct code.   Occasionally, you'll need to write the contents of a method or define a class to pass the test.&lt;br /&gt;&lt;br /&gt;There are over 30 categories and almost 300 tests in the entire project (some of the tests are for JRuby or specific to Ruby version 1.8 or 1.9, so the specific count may vary).   The tests are short enough that you can run through several in a few minutes.  You could easily finish the entire path in a few days.  But, if you don't have a large block of time, you can do a few and, unlike most tutorials, you won't lose track of how far along you are - because all you have to do is run 'ruby path_to_enlightenment.rb' again to see where you last stopped.&lt;br /&gt;&lt;br /&gt;So, download &lt;a href="http://rubykoans.com/"&gt;RubyKoans&lt;/a&gt;, get enlightened, and see you at the Ruby training next week!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-4621852170391000738?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/4621852170391000738/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=4621852170391000738" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4621852170391000738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4621852170391000738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/69o_PHsh5Ac/rubykoans-path-to-ruby-enlightenment.html" title="RubyKoans - the path to Ruby enlightenment" /><author><name>Nathan</name><uri>http://www.blogger.com/profile/13847300300272772540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2011/01/rubykoans-path-to-ruby-enlightenment.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cDR38-eyp7ImA9Wx9XF08.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-4014329731079964208</id><published>2011-01-10T08:59:00.005-05:00</published><updated>2011-01-10T23:44:36.153-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-10T23:44:36.153-05:00</app:edited><title>5 Notes on Securing Intellectual Property Protection</title><content type="html">&lt;div&gt;With the rise of technology and online competitors, understanding intellectual property is crucial for any business owner.  According to the United States Patent and Trademark Office’s Small Business Education Campaign,  intellectual property based businesses and entrepreneurs drive more economic growth in the United States than any other single sector.  The importance of becoming familiar with the process of protecting intellectual property as well as the benefits of strong intellectual property protection is at an all time high.  There are several avenues one may seek when securing protection for their works making it is essential to anyone who seeks to protect their intellectual property to understand the basics of when to apply, what type of protection to apply for, where and how to apply.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF6600;"&gt;1. The Process of Securing a Patent is Favorable and Less Costly for Small Businesses.  &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A patent is a grant of a property right to the inventor that is issued by the United States Patent and Trademark Office.  The span of protection for a patent is 20 years from the application filing date.  Patents provide the inventor the right to exclude others from making, using, importing or selling his or her invention during the 20 year protection period.  Therefore, the owner (inventor) may license, market, produce, improve the property and make profit from the invention.  A United States patent only protects and provides exclusive rights in the United States.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The cost of filing a patent varies; however, small businesses are at a great advantage due to the more efficient pricing applied to small business entities.   For instance, for a provisional patent filing, the fee is $110.00 for small businesses compared to $220.00 .  This lower fee applies to all filings, but the price varies according to the type of patent application filed. Additionally, during the patent prosecution (filing) phase, it is fairly common to need to pay the USPTO additional fees.  When applying for patents, it’s in the inventor’s best interest to seek professional assistance with the process.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF6600;"&gt;2. Trademarks are Essential to Securing your Brand&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Trademarks protect words, names, symbols, sounds or colors that distinguish goods and services.  Unlike patents, trademarks protection lasts the entire time the trademark is in use.  Similar to patents, trademarks are filed with the United States Patent and Trademark Office.  After obtaining the trademark, the owner may use the mark to prevent others from using a similar mark.  Current fees for filing a trademark start at $275 per class.   The trademark filing process requires contact with the USPTO, therefore when applying for the trademark, seek professional guidance.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF6600;"&gt; 3. Copyright Protection is a Must in Protecting Works of Authorship&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Copyrights protect original works of authorship such as writings, music and works of art which are fixed in a tangible medium of expression.  Works are considered fixed whenever it is stored on a medium that can be perceived, reproduced, or otherwise communicated.  For instance, software code is considered fixed whenever it is stored on a disc; the disc is the medium which the software can be perceived, reproduced or otherwise communicated.  The moment the work is created and fixed in a tangible form, it is automatically protected under Copyright laws.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Copyrights can be registered with the US Copyright Office.  Copyright protection provides the owner with the authority to reproduce the work, create derivative works and sale, rent or license the work.  Copyright protection lasts the life of the author plus 70 years.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF6600;"&gt;4. Trade Secrets are a Less Costly, yet Effective Way of Protecting Intellectual Property.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Trade secrets are information that companies keep “secret” or internal to provide an advantage over competitors who do not know the secret.  Trade secrets may include formulas, patterns or compilations of information (i.e. chemical formula, recipes, patterns, lists of partners). Further, anything that is public knowledge in an industry may not be claimed as a trade secret.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Trade secrets may be established through contractual agreements which limit the parties to secrecy.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF6600;"&gt;5. Licensing Produces Benefits for Intellectual Property Owners to enjoy.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Licensing intellectual property allows for the owners to capitalize from the work.  When companies turn to licensing its intellectual property, it opens a new world of customers.  A licensing agreement allows the owner of the intellectual property rights to grant a license to use those rights in exchange for the agreed fee or royalty.  Copyrights, patents, and trademarks are each areas of intellectual property that can be licensed.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whenever seeking to license intellectual property, it is important to pair it with a non-disclosure agreement (NDA) to the potential licensees.  Since contract law governs license agreements, it is important note that any license agreement that is drafted under US law is only legally enforceable in United States courts.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are multiple areas one can take to secure intellectual property rights.  For more information please contact us &lt;a href="mailto:shanda.wilson@lmnsolutions.com"&gt;here&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-4014329731079964208?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/4014329731079964208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=4014329731079964208" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4014329731079964208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4014329731079964208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/_ni5gdT1fjQ/5-notes-on-securing-ip-protection.html" title="5 Notes on Securing Intellectual Property Protection" /><author><name>Shanda Wilson</name><uri>http://www.blogger.com/profile/17246836175203341591</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2011/01/5-notes-on-securing-ip-protection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UEQHw5cSp7ImA9Wx5REUg.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-1353673760165070900</id><published>2010-08-18T11:34:00.001-04:00</published><updated>2010-08-18T13:06:41.229-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-18T13:06:41.229-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="divlet" /><category scheme="http://www.blogger.com/atom/ns#" term="widget" /><title>Consider the Humble DIVlet</title><content type="html">A lot of our customers have a big interest in widgets. They are seen as a simpler approach to the many attempts at working with portals and portlets that limited the capabilities of web applications more than they expanded them. We have an interest in web widgets too. LMN Solutions has been building modular web applications for a long time, and using a widget approach to do this makes sense. &amp;nbsp;To be clear here, a rough definition of a widget is some portion of the page in a web application which is provided by a different web application. &amp;nbsp;For example, the home page of the LMN Solutions website contains a Twitter widget to display our latest Tweets. &amp;nbsp;The HTML content of that portion of the page is brought in a via a JavaScript snippet in our web page that downloads to your web browser. The browser initiates a separate request to the Twitter web application and renders the response into the page. Other examples are contextual ad widgets that examine the content of the rest of the page and find ads relevant to that content.&lt;br /&gt;
&lt;br /&gt;
Many of our competitors' interest and approach to widgets, however ,seems to often focus on defining complex frameworks by which to provide them. &amp;nbsp;Rather than take the widget provider's simple approach of creating a snippet of JavaScript that you drop into a DIV tag on your web page, our competitors obsess about providing frameworks by which the widgets interact, taking us back towards the bad old JSR-168 portlet days. There also are some more functional technologies here, like Microsoft Sharepoint, which allow Web Parts to be custom coded into that application framework. &amp;nbsp;What we don't see a great amount of support for, at the architectural level, is the simple approach that is so popular and useful on the real Internet.&lt;br /&gt;
&lt;br /&gt;
One possible cause of this is that the technology of bringing in some web content from another application just doesn't have a good name. A few years ago, when we were engaged in a campaign to defeat another painful attempt to foist a JSR-168 portlet container upon customers that didn't need or want it, we hit upon the name DIVlet for the concept of "just putting some JavaScript in a div tag" and registered divlet.com. Giving the approach a name seemed to provide a level of comfort with the customers that helped them see the simplicity of that strategy. We even helped build some personalized DIVlet containers that would let the users drag them around the page for organization and persist the state- just like iGoogle! The world then seemed to moving in the right direction. Of course, this never lasts. &amp;nbsp;There are efforts afoot to "standardize" on various widget frameworks, to legislate great additional complexity for little marginal benefit. &amp;nbsp;I would ask those involved to consider the humble DIVlet. &amp;nbsp;It just works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-1353673760165070900?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/1353673760165070900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=1353673760165070900" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/1353673760165070900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/1353673760165070900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/nFFmjn21xUY/consider-humble-divlet.html" title="Consider the Humble DIVlet" /><author><name>Matt McKnight</name><uri>http://www.blogger.com/profile/16098483018096096360</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="14" src="https://support.google.com/enterprise/static/gsa.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2010/08/consider-humble-divlet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cGQHs7eCp7ImA9WxFXE0g.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-8738307817890431229</id><published>2010-05-20T06:21:00.001-04:00</published><updated>2010-05-20T06:23:41.500-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-20T06:23:41.500-04:00</app:edited><title>Why I Work at LMN Solutions</title><content type="html">&lt;b&gt;Why I Work at LMN Solutions&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The reason I work here is because of the people. The management of the company are kind people and genuinely care about those who work for them. The owners actually work along side us and always take extra time to help us with any issue that comes up.&lt;br /&gt;
&lt;br /&gt;
Richard is employee number one after the three owners. He is always willing to help anyone who needs help with Ruby on Rails, Java or any number of things he knows. He knows how to teach others and is a very giving person.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aVs3t0JwLbs&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aVs3t0JwLbs&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Helen is one of our newest employees. She has been developing applications in Ruby on Rails and has been quick to learn new things. She has been able to convert some interesting raw ideas into a working application. She is always willing to tackle the next new thing that comes along. She has recruited about half of the company to run in the Army Ten Miler.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/A97RYblxPTo&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/A97RYblxPTo&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nathan has come into the company as a Java expert but has quickly learned Ruby on Rails and developed custom plug-in helpers for &lt;a href="http://lmnsolutions.com/lmn_palantir.html"&gt;Palantir&lt;/a&gt;. He has been great to work with. He has an ability to help others along in learning new technology. He is a &lt;a href="http://faq.javaranch.com/java/ActiveStaff#nathanpruett"&gt;JavaRanch Sheriff&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MZw1pN9NW2A&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/MZw1pN9NW2A&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
I could go on and on with the rest of us who work here, but we don't have videos of everyone yet. If you think you would like to get to know us better and come work with us check out our &lt;a href="http://jobs.lmnsolutions.com/jobs"&gt;jobs&lt;/a&gt; page. We have a number of new openings that require US Citizenship.&lt;br /&gt;
&lt;br /&gt;
The new jobs are located in the&amp;nbsp;convenient and lively Reston Town Center.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/S3NA0Vr36i0&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/S3NA0Vr36i0&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;a href="http://www.lmnsolutions.com/" style="color: #940f04; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5360887225130038546" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; float: left; height: 59px; margin-bottom: 10px; margin-left: 0pt; margin-right: 10px; margin-top: 0pt; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; width: 143px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.lmnsolutions.com/" style="color: #940f04; text-decoration: none;"&gt;LMN Solutions&lt;/a&gt;&amp;nbsp;- Find out more about us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-8738307817890431229?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/8738307817890431229/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=8738307817890431229" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/8738307817890431229?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/8738307817890431229?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/cBfR1LAEUrY/why-i-work-at-lmn-solutions.html" title="Why I Work at LMN Solutions" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s72-c/logo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2010/05/why-i-work-at-lmn-solutions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYCRnczeCp7ImA9WxBWEUg.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-3775463088892741248</id><published>2010-02-02T19:46:00.003-05:00</published><updated>2010-02-02T19:49:27.980-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-02T19:49:27.980-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cool" /><category scheme="http://www.blogger.com/atom/ns#" term="reston town center" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="office" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="reston" /><title>LMN Solutions Office Tour</title><content type="html">&lt;div style="text-align: left;"&gt;&lt;span style="font-size: large;"&gt;LMN Solutions Office Tour&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
At the LMN Solutions holiday party I was given a Flip UltraHD&amp;nbsp;camera. This is a video of the new LMN Solutions office in the Reston Town Center. I hope you enjoy seeing the place LMN calls home.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fHY6c4fjbW0&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fHY6c4fjbW0&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Take a look at this &lt;a href="http://jobmatchbox.com/wordpress/2010/01/13/a-casual-case-of-employer-branding/"&gt;blog&lt;/a&gt; post for a second opinion.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.lmnsolutions.com/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5360887225130038546" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" style="cursor: pointer; float: left; height: 59px; margin: 0pt 10px 10px 0pt; width: 143px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.lmnsolutions.com/"&gt;LMN Solutions&lt;/a&gt; - Find out more about us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-3775463088892741248?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/3775463088892741248/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=3775463088892741248" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/3775463088892741248?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/3775463088892741248?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/omWRwR49Kxs/lmn-solutions-office-tour.html" title="LMN Solutions Office Tour" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s72-c/logo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2010/02/lmn-solutions-office-tour.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMQ3w_eCp7ImA9WxBWEUg.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-1978766178774772662</id><published>2010-01-23T19:41:00.003-05:00</published><updated>2010-02-02T19:48:02.240-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-02T19:48:02.240-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="lmn" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="government" /><category scheme="http://www.blogger.com/atom/ns#" term="team" /><category scheme="http://www.blogger.com/atom/ns#" term="career" /><category scheme="http://www.blogger.com/atom/ns#" term="networking" /><title>LMN Solutions and Social Networking</title><content type="html">&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;span id="goog_1263574900497"&gt;&lt;/span&gt;&lt;span id="goog_1263574900498"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin: 0px;"&gt;&lt;span style="font-size: x-large;"&gt;LMN and Social Networking&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="margin: 0px;"&gt;&lt;div style="border: medium none;"&gt;&lt;a href="http://2.bp.blogspot.com/_rfq2-WT8fug/S1CxGpxpgcI/AAAAAAAABXQ/Ifn5OWduZ4g/s1600-h/socialNet.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_rfq2-WT8fug/S1CxGpxpgcI/AAAAAAAABXQ/Ifn5OWduZ4g/s200/socialNet.jpg" /&gt;&lt;/a&gt;A company is only as good as those working for it. We have a great team here at LMN Solutions and it starts at the top. The owners are L M and N. That is Wajeeha Naeem &lt;span style="color: #0783b6; font-family: Arial,sans-serif; font-size-adjust: none;"&gt;&lt;img alt="View Wajeeha Naeem's LinkedIn profile" border="0" height="15" src="http://www.linkedin.com/img/webpromo/btn_in_20x15.gif" style="vertical-align: middle;" width="20" /&gt;&lt;/span&gt;, Matt McKnight &lt;a href="http://www.linkedin.com/in/mattmcknight" style="text-decoration: none;"&gt;&lt;span style="color: #0783b6; font-family: Arial,sans-serif; font-size-adjust: none;"&gt;&lt;img alt="View Matt McKnight's LinkedIn profile" border="0" height="15" src="http://www.linkedin.com/img/webpromo/btn_in_20x15.gif" style="vertical-align: middle;" width="20" /&gt;&lt;/span&gt;&lt;/a&gt;. and David Lee &lt;a href="http://www.linkedin.com/in/djalee" style="text-decoration: none;"&gt;&lt;span style="color: #0783b6; font-family: Arial,sans-serif; font-size-adjust: none;"&gt;&lt;img alt="View David Lee's LinkedIn profile" border="0" height="15" src="http://www.linkedin.com/img/webpromo/btn_in_20x15.gif" style="vertical-align: middle;" width="20" /&gt;&lt;/span&gt;&lt;/a&gt;. They really care about doing quality work and finding team members with&amp;nbsp;the same&amp;nbsp;values. They always seem ready to talk and collaborate on new ideas. Each of them work hard to keep us happy. On top of this they keep involved with the real day to day work&amp;nbsp;the company focuses on by&amp;nbsp;designing and coding new&amp;nbsp;software systems.&lt;/div&gt;&lt;br /&gt;
I have not met an LMN employee I would not want to work with. Each of them is an expert in their field but yet humble enough to learn and expand. We learn from each other and have lots of fun completing our missions.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;We have found each other through old&amp;nbsp;fashioned&amp;nbsp;social networking. Most of us know each others work from successful work performed at other places.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;We are beginning a new phase in the company where we are&amp;nbsp;increasingly&amp;nbsp;finding each other with internet social networking tools. Tools like LinkedIn have been a great help in my career. I have been able to find great people to work with and for using it.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Come get to know our team on&amp;nbsp;&lt;a href="http://www.linkedin.com/companies/224915/LMN+Solutions"&gt;LinkedIn&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.facebook.com/group.php?gid=92926238713"&gt;Facebook&lt;/a&gt;, &lt;a href="http://twitter.com/lmnsolutions"&gt;Twitter&lt;/a&gt; and &lt;a href="http://lmnsolutions.com/leadership.html"&gt;LMN Solutions Leadership Team&lt;/a&gt;.&lt;br /&gt;
And come be part of the &lt;a href="http://jobs.lmnsolutions.com/jobs"&gt;team&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="margin: 0px;"&gt;&lt;a href="http://www.lmnsolutions.com/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5360887225130038546" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" style="cursor: pointer; float: left; height: 59px; margin: 0pt 10px 10px 0pt; width: 143px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;a href="http://www.lmnsolutions.com/"&gt;LMN Solutions&lt;/a&gt;&amp;nbsp;- Find out more about us.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;div class="separator" style="border: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://lmnsolutions.com/images/photos/DLee.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" mt="true" src="http://lmnsolutions.com/images/photos/DLee.jpg" /&gt;&lt;/a&gt;&lt;a href="http://lmnsolutions.com/images/photos/WNaeem.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" mt="true" src="http://lmnsolutions.com/images/photos/WNaeem.jpg" /&gt;&lt;/a&gt;&lt;a href="http://lmnsolutions.com/images/photos/MMcknight.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" mt="true" src="http://lmnsolutions.com/images/photos/MMcknight.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-1978766178774772662?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/1978766178774772662/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=1978766178774772662" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/1978766178774772662?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/1978766178774772662?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/pPp08keriWI/lmn-solutions-and-social-networking.html" title="LMN Solutions and Social Networking" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_rfq2-WT8fug/S1CxGpxpgcI/AAAAAAAABXQ/Ifn5OWduZ4g/s72-c/socialNet.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2010/01/lmn-solutions-and-social-networking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYAQnk_eSp7ImA9WxNQEEw.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-38484647360049484</id><published>2009-09-06T20:17:00.043-04:00</published><updated>2009-09-15T08:19:03.741-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-15T08:19:03.741-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="experts" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="integration" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="terrorism" /><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="gis" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="partner" /><category scheme="http://www.blogger.com/atom/ns#" term="link analysis" /><category scheme="http://www.blogger.com/atom/ns#" term="implementation" /><title>Palantir &amp; Human Effort</title><content type="html">&lt;span style="font-size:180%;"&gt;Palantir &amp;amp; Human Effort&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Palantir Government is a product w&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_rfq2-WT8fug/SqwIJD8gHhI/AAAAAAAABHc/SYoShR24Yao/s1600-h/graph.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 242px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5380684606571814418" alt="" src="http://3.bp.blogspot.com/_rfq2-WT8fug/SqwIJD8gHhI/AAAAAAAABHc/SYoShR24Yao/s400/graph.jpg" border="0" /&gt;&lt;/a&gt;e have been working with for some time here at LMN Solutions. Overall it is a great product full of features to aid in investigating events and people. Because of its power and many features it can be hard to learn and applied to situations where it does not fit.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Palantir Government has been used to investigate a &lt;a href="http://www.scribd.com/doc/13731776/Tracking-GhostNet-Investigating-a-Cyber-Espionage-Network"&gt;cyber attack&lt;/a&gt; and many other events. It has an visually stimulating interface. It is centered around three types of objects - documents, entities and events. Each of these are sub divided into other groupings like meetings, bombings, cleric, government officials and so on. Each of these objects can have hundreds of properties such as name, address, longitude, latitude, date, birth date and any other type of data you can think of. It is easy to get lost in the details.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;To make it possible there is a good amount of human effort involved to really make Palantir shine. The people using it and the IT folks supporting and loading it with data need to focus on learning how to make it work best for their particular group. Once you get the right data into it and then learn how to filter and search through data the linkages it can build are amazing. It is a "connect the dots" technology.&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rfq2-WT8fug/SqwIfHvHHgI/AAAAAAAABHk/PC6d3HKhWqY/s1600-h/map.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; width: 400px; float: right; height: 242px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5380684985546513922" alt="" src="http://2.bp.blogspot.com/_rfq2-WT8fug/SqwIfHvHHgI/AAAAAAAABHk/PC6d3HKhWqY/s400/map.jpg" border="0" /&gt;&lt;/a&gt; &lt;div&gt;But it requires patience and time to iterate through the learning process to get the data into the right form and loaded into the system. It takes an experienced staff to really think deep about the ontology needed and how the goal of your group fits into it. It takes an experienced administrators to manage the Oracle database and the other Palantir servers. Experienced personnel to convert data from other systems into rich objects that Palantir loves can also aid the process.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Sometimes it is necessary to remove data from the system or change the object structure or ontology to help the end user, the analyst, work faster. Sometimes too much data can muddy the picture and perhaps slow the system. It takes strong communication with the analyst to figure out what needs to be done. We recommend a collaborative effort. Get the IT folks supporting Palantir right down to the analysts desk.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the keys to a successful implementation of Palantir Government is to define the goal. You must not just start ingesting the entire contents of all of the data repositories you have access to. It takes a lot of thought and preparation. Then do not give up, keep trying to add focused data sets that will strengthen the links between events, people and documents. Much of it comes down to old fashioned investigation and slowly building the data to link things together. At times it can just be boring data entry and tagging of do&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rfq2-WT8fug/SqwHZB91aqI/AAAAAAAABHM/CbYaPeaUnRc/s1600-h/tagging.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 248px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5380683781406812834" alt="" src="http://4.bp.blogspot.com/_rfq2-WT8fug/SqwHZB91aqI/AAAAAAAABHM/CbYaPeaUnRc/s400/tagging.jpg" border="0" /&gt;&lt;/a&gt;cuments. At least Palantir makes taging of documents easy.&lt;br /&gt;&lt;br /&gt;Palantir Government makes finding linkages between people, places, events and documents easier but investigative work is never easy. It is vital to put in the time to learn the tools that will help find what you are looking for. Palantir has a excellent free training  game called &lt;a href="https://www.optradestop.com/"&gt;Operation Tradestop&lt;/a&gt;. It really helps you learn how the search tools work on data from actual events and people. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Palantir supports the use of custom helpers written in Java. They can be deployed right into the Palantir desktop. These are mini applications within Palantir that add additional functionality. With the use of helpers the tasks of analysts can be focused right to the tools they need without having to worry about all of the other features Palantir offers.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;LMN Solutions has built a series of Palantir Government Helpers that aid in focusing the tasks of data entry and making sure the analyst does not get lost in a sea of properties.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Jabber Helper - real time communication within the Palantir window. Send Palantir objects straight to a colleagues Palantir graph. Collaborate with colleagues that do not have Palantir&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tasking Helper with work flow coordination. Assign Palantir documents to others and manage tasking.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Link Builder Tool - drag and drop interface to quickly build linkages between objects.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;Overall Palantir Government is a useful tool, just be ready to put in the effort to narrow the focus of your task and spend the time needed to fully understand and learn the product. Palantir is not a panacea. One cannot just force all of the data and documents into in and expect it to magically determine the linkages between people, events, places and documents. If you can put the necessary time to see it through Palantir will yield results.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Come visit our booth at the Palantir Government Conference &lt;a href="http://www.palantirtech.com/govcon"&gt;GovCon4&lt;/a&gt; October 13, 2009&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.palantirtech.com/govcon"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 110px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5380348941415771266" alt="" src="http://4.bp.blogspot.com/_rfq2-WT8fug/SqrW2xy8bII/AAAAAAAABG8/nF_MXzdig54/s400/govcon4.jpg" border="0" /&gt;&lt;/a&gt; &lt;p align="left"&gt;&lt;a href="http://3.bp.blogspot.com/_rfq2-WT8fug/SqrVnAqqJWI/AAAAAAAABG0/UrojIE2lm-8/s1600-h/home-govcon-feature.jpg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lmnsolutions.com/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 143px; float: left; height: 59px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5360887225130038546" alt="" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.lmnsolutions.com/"&gt;LMN Solutions&lt;/a&gt; - Find out more about us. Need help with Palantir, &lt;a href="http://www.lmnsolutions.com/contactLMN.html"&gt;contact&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt; us.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-38484647360049484?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/38484647360049484/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=38484647360049484" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/38484647360049484?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/38484647360049484?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/JbvdYN69qsY/palantir-human-effort.html" title="Palantir &amp; Human Effort" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_rfq2-WT8fug/SqwIJD8gHhI/AAAAAAAABHc/SYoShR24Yao/s72-c/graph.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2009/09/palantir-human-effort.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMMQH07eCp7ImA9WxNTEEU.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-4210238722535661798</id><published>2009-08-12T09:41:00.000-04:00</published><updated>2009-08-12T09:41:21.300-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-12T09:41:21.300-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="project management" /><category scheme="http://www.blogger.com/atom/ns#" term="estimating" /><title>The Value of Estimating (Even With Software Projects)</title><content type="html">There is a trend in software process commentary to claim that plans and estimates aren't very useful, to admit that most of the plans we make are, in effect, guesses. There is some truth to this. In many cases, the scope of the work is unclear, the staff available to complete it is unclear, and the difficulty of creating the application is unclear.&amp;nbsp; On the other side of the fence, there are fixed budgets that have to be requested, there is the PMBOK which encourages you to build a Gantt chart including every task on the project with no uncertainty, and there are a lot of people out there that want to describe the software development process as something that is more like a manufacturing or construction project.&amp;nbsp; In reality, software development projects lack the predictability of those sorts of projects, because they involve invention of something new.&lt;br /&gt;
&lt;br /&gt;
However, it is absurd to say that estimation is impossible. For example, it is fairly easy to give an order of magnitude size estimate of a project based on other similar projects. Even if your own organization is not keeping track of it's historical project performance, industry standard tools such as &lt;a href="http://www.construx.com/estimate"&gt;Construx Estimate&lt;/a&gt; can be used to provide some rough guidelines based on their collection of data.&amp;nbsp; These are overall project estimates, which can be superior to the bottom up estimation that is often done in agile projects.&amp;nbsp; The estimation process by which each feature or story is individually estimated can problematically leave out costs and time associated with missed requirements, tasks that are not particular to a feature, and the overall drift of iterative processes by which the initial implementation of a feature is not final, but must be refined over time with a refactoring cost that is often not estimated.&amp;nbsp; Whole project estimation techniques avoid some of these oversights, and can even be tuned to avoid the error in the initial size estimate for the system.&lt;br /&gt;
&lt;br /&gt;
It is also possible to give estimates that demonstrate the uncertainty of the project by including a probability curve or range. The estimate also should not be static, but rather updated as new data comes in.&amp;nbsp; The Cone of Uncertainty is one common way to represent this process:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i3E7tAYvk0Y/SoLCLB-n07I/AAAAAAAAAR8/63rHIhBlgS0/s1600-h/ConeOfUncertainty" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_i3E7tAYvk0Y/SoLCLB-n07I/AAAAAAAAAR8/63rHIhBlgS0/s320/ConeOfUncertainty" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This particular manifestation of the cone represents a waterfall style process underlying the estimation accuracy, but we can imagine a similar cone being applied to agile methods. When work is done to begin the bottom up estimation process, there is more information available now to map that information to the estimate, and eventually we can switch over to the bottom up estimate when it starts to become more stable than the holistic estimate.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The key thing to remember here is that an estimate is not a commitment.&amp;nbsp; If you commit to a the 50% confidence estimate, there is a 50% chance you will miss the date.&amp;nbsp;&amp;nbsp; If you commit to a 90% estimate, the proposed timeline may be unacceptable to your customer, especially if you are willing to admit that there is some failure rate involved in software projects and there is a non-zero probability of not delivering at all.&amp;nbsp; Making a commitment to a 90% date also introduces the risk of &lt;a href="http://en.wikipedia.org/wiki/Parkinson%27s_law"&gt;Parkinson's Law&lt;/a&gt; coming into play. When someone writes out a Gantt chart that has the 90% confidence date for each individual task, seemingly magically, the work comes in very close to the deadline. Except for those few tasks that don't, the ones that weren't actually started in earnest until the deadline was right upon the developer, but were more complex than expected.&amp;nbsp; If those were on the critical path, all of sudden your whole project just got pushed out past the 90% confidence date, even if everything else is completed by the deadline.&amp;nbsp; This where &lt;a href="http://en.wikipedia.org/wiki/Critical_Chain_Project_Management"&gt;Critical Chain Project Management&lt;/a&gt; comes into play, but we'll save that topic for a future post.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-4210238722535661798?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/4210238722535661798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=4210238722535661798" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4210238722535661798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4210238722535661798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/34qZ8lhGi18/value-of-estimating-even-with-software.html" title="The Value of Estimating (Even With Software Projects)" /><author><name>Matt McKnight</name><uri>http://www.blogger.com/profile/16098483018096096360</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="14" src="https://support.google.com/enterprise/static/gsa.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i3E7tAYvk0Y/SoLCLB-n07I/AAAAAAAAAR8/63rHIhBlgS0/s72-c/ConeOfUncertainty" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2009/08/value-of-estimating-even-with-software.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ESHozfip7ImA9WxJaGU0.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-2220152950418297579</id><published>2009-08-10T07:15:00.004-04:00</published><updated>2009-08-10T08:03:29.486-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-10T08:03:29.486-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="automated testing" /><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><category scheme="http://www.blogger.com/atom/ns#" term="selenium" /><title>Selenium Remote Control</title><content type="html">&lt;span style="font-family:times new roman;font-size:180%;"&gt;Selenium Remote Control - Web Interface Testing&lt;/span&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2ULT6gL4H-w&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/2ULT6gL4H-w&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;When you watch this you might want to turn on closed captioning as the volume is very low. To see the actual text full screen mode is best.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Test Automation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;Selenium Remote Control has been an extremely helpful tool in increasing the velocity of our Agile Scrum team by shortening the time between development and testing.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;It is a tool that actually manipulates the browser like a real person would. This allows the javascript as well as the server side code and database to be tested as a whole.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;In conjunction with various Agile techniques the process of building automated GUI tests has opened communication between testers, developers, customers and management. Surprisingly it has been useful as a sort of management dashboard to give high level managers the assurance that development and testing is progressing. People seem to enjoy watching the application run automatically and seeing green and red bars pop onto a report in their web browser.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;With some integration with other products it seems to wean folks off of those tractability matrix reports also. Using ant, jUnit reports and annotations has allowed a loose mapping of a story to actual test results.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;LMN Solutions has experience in integrating tools to enable continuous integration, automated testing, unit testing to support the Agile process. This demo was built using Eclipse, jUnit, Selenium Remote Control and Selenium IDE. The application under test, LMN Jobs and LMN People was built with Ruby on Rails and jQuery. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;On other projects we have combined tools such as ant, Cruise Control, jUnit, Fitnesse, watir, Ruby on Rails and Java to enable continuous integration with functional testing and reporting.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lmnsolutions.com/"&gt;&lt;img style="MARGIN: 0pt 10px 10px 0pt; WIDTH: 143px; FLOAT: left; HEIGHT: 59px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5360887225130038546" border="0" alt="" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-2220152950418297579?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/2220152950418297579/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=2220152950418297579" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/2220152950418297579?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/2220152950418297579?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/7wVTxKe7kgU/selenium-remote-control.html" title="Selenium Remote Control" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s72-c/logo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2009/08/selenium-remote-control.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNQno9fip7ImA9WhVQEU4.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-4531076521924033372</id><published>2009-07-20T08:00:00.015-04:00</published><updated>2012-03-30T16:29:53.466-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-30T16:29:53.466-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="orthorectification" /><category scheme="http://www.blogger.com/atom/ns#" term="archive" /><category scheme="http://www.blogger.com/atom/ns#" term="gis" /><category scheme="http://www.blogger.com/atom/ns#" term="history" /><category scheme="http://www.blogger.com/atom/ns#" term="imagery" /><category scheme="http://www.blogger.com/atom/ns#" term="ortho-rectification" /><title>Orthorectification</title><content type="html">&lt;span style="font-size: 180%;"&gt;Orthorectification&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_rfq2-WT8fug/SmPUYOS6dYI/AAAAAAAABFY/42qSDLeprIE/s1600-h/ohio74-2.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5360361494120396162" src="http://4.bp.blogspot.com/_rfq2-WT8fug/SmPUYOS6dYI/AAAAAAAABFY/42qSDLeprIE/s320/ohio74-2.jpg" style="cursor: pointer; float: left; height: 290px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-size: 85%; font-style: italic;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="color: red;"&gt;Update: &lt;/span&gt;Co-authored paper published by Journal of Applied Remote Sensing: &lt;/span&gt;&lt;a href="http://bit.ly/abOrtho"&gt;&lt;span style="font-size: 130%;"&gt;Automated imagery orthorectification pilot&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Photo left: Raw Film image from USGS archives.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;Orthorectification, just a fancy word for processing images taken from the sky to make them geographicaly correct.&lt;br /&gt;
&lt;br /&gt;
If you have used Google Maps or Google Earth you are a consumer of orthorectified images. Or imagery as the industry calls it. If you ever notice an image of the ground that looks sort of distorted, flat or appears to be taken from an angle it could be a image that has not been orthorectified yet.&lt;br /&gt;
&lt;br /&gt;
To simplify it the output of perfect orthorectification should be an image in which you can point to each pixel and determine the true geo coordinate and elevation for that pixel. It tries to generate an image in which the ground of the image appears to be viewed from directly overhead (commonly called nadir). Of course anything sticking up above the ground will typically not appear correctly without a huge amount of additional processing.&lt;br /&gt;
&lt;br /&gt;
The purpose of doing all of the work necessary is to increase accuracy. When all of the imagery is accurate it is possible to then mosaic it all together so there are no seams between images. It is also possible to take imagery taken from different time periods and layer it on top of each other to watch for changes. It enables all sorts of time saving tasks in many industries such as oil, geological work, scientific, electrical transmission, military, civil engineering and more. In the EPA it has been used to discover where pollution is buried by comparing historical images with each other to detect change over time.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Simplified Process Overview&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The most accurate form of orthorectification involves sending surveyors in to the field to collect data points called Ground Control Points or GCP. Using GPS units they collect the longitude, latitude and elevation of points on the ground that are visible from overhead images. These are points such as road intersections or visible land marks. The problem is the cost of this option.&lt;br /&gt;
&lt;br /&gt;
Many resort to the next best solution which is to use existing orthorectified images from the past. These are called control imagery.&lt;br /&gt;
&lt;br /&gt;
The next step involves finding the ground control points from the survey or control images and matching them to the same landmarks in the raw images. This used to be a manual process. Someone had to locate these points and then correlate them together. There is now software that can find these points automatically and one can just accept what the software determines or perform a manual review of the points collected.&lt;br /&gt;
&lt;br /&gt;
One must collect 3 GCP per image otherwise the final warping process will produce some strange results. If you ever took trigonometry 3 points are needed to determine the three dimensions of space. With only 2 points one cannot determine the height the photo was taken from and the scale of the photo will be wrong. Most tools require about 8 or so points to be collected and they should be spread throughout the image.&lt;br /&gt;
&lt;br /&gt;
Two tools I have used for automatic GCP collection are PCI Geomatica and Erdas Imagine. I have also come across a module for ossim that does this also but I have not tested it yet. Other tools will perform orthorectification but require you to collect GCP manually.&lt;br /&gt;
&lt;br /&gt;
It appears that PCI Geomatica collects these points by analyzing the high contrast areas where roads cross or the edges of landmarks.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/4/45/Dem.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="219" src="http://upload.wikimedia.org/wikipedia/commons/4/45/Dem.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: 85%; font-style: italic;"&gt;Example of DEM from Wikipedia&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The next part involves a file that contains the elevation model for the area where the image was taken. Often it is a TIFF file that contains pixels of varied shades of grey. Each pixel represents an elevation value by its color and has a geo-coordinate assigned to it. This allows the software to process the image correctly. This is called a Digital Elevation Model or DEM. If the elevation model is not included the process is sometimes called rectification and not orthorectification.&lt;br /&gt;
&lt;br /&gt;
The next stage involves computing a math model called Rational&lt;br /&gt;
Polynominal Coefficients (RPCs) using the control image, the digital elevation model, raw image and the ground control points. Many times the camera model is included. This gives the software the distortion values that a camera lens causes.&lt;br /&gt;
&lt;br /&gt;
Now the software takes this math model and starts warping the image. It moves pixels around to make the image as correct as possible. In areas with lots of elevation changes like mountain ranges the finished product will eliminate areas where optical illusions will make a hill look like a depression.&lt;br /&gt;
&lt;br /&gt;
It has been proven that this entire process can be automated but with less accuracy than with an experienced operator. One of the issues is that each sensor or camera source has to be optimized. Each camera or satellite sensor has its own characteristics and the software has to be re-configured to optimize the results. Processing Ikonos images is going to be different from QuickBird. Aerial imagery from aircraft is even more complicated and has less standardization. This is not really a problem if someone has a large amount of imagery from a small handful of sensors.&lt;br /&gt;
&lt;br /&gt;
To see a visual example of orthorectification view this &lt;a href="http://www.satimagingcorp.com/images/Ikonos_Distortion.gif"&gt;image&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In a future post I can describe the details of the process used on historical aerial imagery.&lt;br /&gt;
&lt;br /&gt;
Resources&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.satimagingcorp.com/svc/orthorectification.html"&gt;http://www.satimagingcorp.com/svc/orthorectification.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.pcigeomatics.com/"&gt;PCI Geomatica&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.erdas.com/"&gt;ERDAS&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.ossim.org/"&gt;OSSIM&lt;/a&gt; - Open Source&lt;br /&gt;
&lt;span style="font-size: 85%;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://tinyurl.com/a-ortho"&gt;Automated imagery orthorectification pilot&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;a href="http://www.lmnsolutions.com/"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5360887225130038546" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" style="cursor: pointer; float: left; height: 59px; margin: 0pt 10px 10px 0pt; width: 143px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.lmnsolutions.com/"&gt;LMN Solutions&lt;/a&gt; - Find out more about us.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border-left: 10px solid #acacac; margin: 10px 10px 10px 10px; padding-left: 10px; text-align: left;"&gt;&lt;br /&gt;
&lt;span style="font-size: 14px; font-weight: bold; padding-bottom: 5px;"&gt;Automated imagery orthorectification pilot&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
J. Appl. Remote Sens. &lt;strong&gt;3&lt;/strong&gt;, 33552 (2009)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://link.aip.org/link/?JARSC4/3/33552/1"&gt;http://link.aip.org/link/?JARSC4/3/33552/1&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-4531076521924033372?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/4531076521924033372/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=4531076521924033372" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4531076521924033372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/4531076521924033372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/fRtd9tGuVik/orthorectification.html" title="Orthorectification" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_rfq2-WT8fug/SmPUYOS6dYI/AAAAAAAABFY/42qSDLeprIE/s72-c/ohio74-2.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2009/07/orthorectification.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04CRHs-fCp7ImA9WxJaGU0.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-7226471125531202689</id><published>2009-07-13T13:46:00.039-04:00</published><updated>2009-08-10T08:06:05.554-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-10T08:06:05.554-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="automated testing" /><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><title>The Agile Toolwright</title><content type="html">&lt;span style="font-size:180%;"&gt;The Ag&lt;a href="http://3.bp.blogspot.com/_rfq2-WT8fug/Slt0Kn8HmGI/AAAAAAAABEw/jmu1o7_WGKw/s1600-h/vw3.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 276px; FLOAT: left; HEIGHT: 320px" id="BLOGGER_PHOTO_ID_5358003907555989602" border="0" alt="" src="http://3.bp.blogspot.com/_rfq2-WT8fug/Slt0Kn8HmGI/AAAAAAAABEw/jmu1o7_WGKw/s320/vw3.jpg" /&gt;&lt;/a&gt;ile Toolwright&lt;/span&gt;&lt;br /&gt;As a child I remember going camping in our multi-colored VW pop top van with our extended family. No, my family was not part of the whole 60’s thing. It was the late 70’s anyway. My father repaired VW’s in his spare time to flip and this one had not been painted yet. As you will see from this story technical improvisation runs in the family.&lt;br /&gt;&lt;br /&gt;On the day we were leaving the van would not start. My dad diagnosed the problem to be the solenoid. (One of those key parts that makes an engine start.) Fortunately we had my Uncle Dwight with us. A man who collected things, all kinds of things, scrap metal, screws, bolts, thermostats, and various pieces of "junk".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;His collection was housed in a large shed with an estimated 25,000 cubic feet of storage. It was very organized and collected with a purpose. One portion of it held all of the tools he used to craft art, tools and fix things.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now Dwight did not just collect these parts he used them. He took them and combined them in ways never seen before. Most often they were used in an urgent manner to fix some major problem like broken well pumps. Dwight seemed to be everyone’s fix up man. If something was impossible to fix or you just did not have money for new parts he was the person to call. Other times he used them to weld fantastic looking sculptures or even tools to accomplish a task.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I went with him to his Red Ford F100 and he pulled up the back of the seat to reveal a carefully organized box of parts. Everything from springs, cables, rope, pulleys to a solenoid were there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A person with traits like Dwight is most helpful for a software development team. They become even more valuable on an Agile team. The Agile Toolwright is what I like to call them. A Wright is a maker of things as in shipwright. The Toolwright is sometimes called a jack of all trades or toolsmith. This idea and word is based on the term Toolsmith from James Bach. &lt;a href="http://www.satisfice.com/presentations/agileauto.pdf"&gt;http://www.satisfice.com/presentations/agileauto.pdf&lt;/a&gt; and &lt;a href="http://www.satisfice.com/blog/archives/15"&gt;http://www.satisfice.com/blog/archives/15&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Toolwright is able to aid the rest of the developers, testers and even the user representative on the agile team get things done faster and increase velocity. It is someone who has experience at all layers of the software stack and may have positions in most of the life cycle roles, from DBA, tester, developer, help desk, system administrator to help desk. They can quickly research all of the software tools at hand and combine them in strange ways to get a task done all focused around software quality.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Toolwright ends up building small tools or even an entire continuous integration / testing framework to help remove roadblocks in the way of the developers and testers. Some of the tools they may end up building or integrating together are continuous integration platforms integrated with unit testing, automated testing, code coverage and other extras. They help guide developers in making the application testable. Most of the time is spent helping testers with small applications to help them test faster. Sometimes they even help the users in building interim software to allow the development team to speed the time needed to build the feature correctly for the long term.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The person in this role may not contribute directly in the production code but they have the ability to find the gaps in the process that can be made more efficient. The whole process of developing in an agile fashion goes much better if you have a dedicated Toolwright. Perhaps you do not have a full blown Toolwright on your team but there is no reason it cannot be a shared role between all team members. Try to develop the skills needed and the attitude to help others on your team get their job done quicker.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_rfq2-WT8fug/Slt2jNP8XSI/AAAAAAAABE4/6PO8JhTUBYc/s1600-h/vw2.jpg"&gt;&lt;/a&gt;&lt;br /&gt;Well that solenoid was not a VW soleno&lt;a href="http://3.bp.blogspot.com/_rfq2-WT8fug/Slt3ll6n9FI/AAAAAAAABFA/yoJbT4riSDs/s1600-h/vw5.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 160px" id="BLOGGER_PHOTO_ID_5358007669404202066" border="0" alt="" src="http://3.bp.blogspot.com/_rfq2-WT8fug/Slt3ll6n9FI/AAAAAAAABFA/yoJbT4riSDs/s320/vw5.jpg" /&gt;&lt;/a&gt;id; it was a bit too large. Good thing VW engines are not that picky about organ transplants. A little duct tape and bailing wire solved that problem. Watch out, many Toolwrights are not opposed to duct tape solutions. In any case, the van started and got us home.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now for Dwight, being a toolwright of sorts was not his livelihood but he ended up as the community maintenance man, the ultimate handyman on an extreme budget. Often without cost helped neighbors repair their homes, appliances and cars.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I only hope I can do the same with software and code instead of scraps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lmnsolutions.com/"&gt;&lt;img style="MARGIN: 0pt 10px 10px 0pt; WIDTH: 143px; FLOAT: left; HEIGHT: 59px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5360887225130038546" border="0" alt="" src="http://1.bp.blogspot.com/_rfq2-WT8fug/SmWyhy7ONRI/AAAAAAAABFg/9jStS53ueQ4/s320/logo.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.lmnsolutions.com/"&gt;LMN Solutions&lt;/a&gt; - Find out more about us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-7226471125531202689?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/7226471125531202689/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=7226471125531202689" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/7226471125531202689?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/7226471125531202689?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/Olw0bMQYZKI/agile-toolwright.html" title="The Agile Toolwright" /><author><name>Brad Johnson</name><uri>https://profiles.google.com/112850850034393362128</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-cDHTkTAQfi4/AAAAAAAAAAI/AAAAAAAAAAA/8K7ozzhM2Ck/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_rfq2-WT8fug/Slt0Kn8HmGI/AAAAAAAABEw/jmu1o7_WGKw/s72-c/vw3.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2009/07/agile-toolwright.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cEQ34zfCp7ImA9WxJQFEk.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-7428084900720975630</id><published>2009-05-26T19:41:00.000-04:00</published><updated>2009-05-27T13:23:22.084-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-27T13:23:22.084-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="unit tests" /><category scheme="http://www.blogger.com/atom/ns#" term="ping pong" /><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="pair programming" /><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><title>The Power of Pair Programming</title><content type="html">&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VGmnJTBF1aE/Shyzqn4hR2I/AAAAAAAAE6w/5fVqbFn-jQw/s1600-h/3062193984_e363181d1d.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_VGmnJTBF1aE/Shyzqn4hR2I/AAAAAAAAE6w/5fVqbFn-jQw/s320/3062193984_e363181d1d.jpg" alt="" id="BLOGGER_PHOTO_ID_5340340802996488034" border="0" /&gt;&lt;/a&gt;I never wanted to sit with another developer and do my job.  I know what I am doing, and google can help me figure out anything I get stuck with, right?  This is my code, I know how it works, and I don't want other people messing it up.&lt;br /&gt;&lt;br /&gt;It wasn't till I started working with a second developer at my desk for a couple hours a day till I realized the true potential and power that pair programming can bring to a team.  We would lay out what we wanted to accomplish and it seemed like we always finished, never hitting road blocks or getting stuck debugging for long periods of time.  We would get in "the zone" and just crank out functionality.  We would knock out in two hours what could have taken me more than a day to do on my own.&lt;br /&gt;&lt;br /&gt;There are many ways to pair with another programmer.  Just sitting there while they write code and providing input as an observer.  Taking turns on the keyboard with one person driving and one observing, and switching periodically.  Playing ping pong, where one developer writes a failing unit test while the other follows with an implementation which causes that test to pass. There are even teams which have put together developer setups which include two keyboards and two mice such that either developer can take control at any given time without having to move over.&lt;br /&gt;&lt;br /&gt;Pair programming can bring a team together and spread the knowledge.   When a senior developer picks up an easy task, it becomes a great opportunity to pair with a new team member and use it as a teaching opportunity.  It is recommended to let the junior developer drive.  There is no better way to learn than doing, yet having the support of someone in the know right next to you provides a feeling of security that they can't mess it up.  When the next story is taken by someone which may not have the skills to solve it, this again becomes a great opportunity for learning, but also involves team communication to find the individual which may know more about the particular component. This can greatly reduce the "truck factor" of the team.&lt;br /&gt;&lt;br /&gt;While all the above are true, and can help justify why pair programming should be done,  I must say that from my experience the biggest gain from two people working together is the focus and ability that two people have to stay on task.  Working with another person typically does not allow me to be distracted.  People also know better than to interrupt when people are working together in front of a computer screen. You put those two things together and a pair can get in the zone and do amazing things.&lt;br /&gt;&lt;br /&gt;So pull up a chair and spend some time developing with a teammate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:78%;"&gt;Photo by by &lt;a href="http://www.flickr.com/photos/ntr23/" title="Link to ntr23's photostream" rel="dc:creator cc:attributionURL"&gt;&lt;b property="foaf:name"&gt;ntr23&lt;/b&gt;&lt;/a&gt; via flickr.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-7428084900720975630?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/7428084900720975630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=7428084900720975630" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/7428084900720975630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/7428084900720975630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/DIRNTOugd6g/power-of-pair-programming.html" title="The Power of Pair Programming" /><author><name>Mark Redding</name><uri>http://www.blogger.com/profile/16427004955600883227</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_VGmnJTBF1aE/Shyzqn4hR2I/AAAAAAAAE6w/5fVqbFn-jQw/s72-c/3062193984_e363181d1d.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2009/05/power-of-pair-programming.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYCQH46fyp7ImA9WxRSFEg.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-5201880942526278812</id><published>2008-08-18T09:21:00.001-04:00</published><updated>2008-09-15T00:32:41.017-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-15T00:32:41.017-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="contracts" /><category scheme="http://www.blogger.com/atom/ns#" term="estimating" /><category scheme="http://www.blogger.com/atom/ns#" term="planning" /><title>How much will it cost?</title><content type="html">The first thing they want is the estimate: How long will it take? How much will it cost?&amp;nbsp; These are not easy questions to answer- especially when no one knows exactly what the customers want to build. How can we give you an estimate when you don't know what you want?&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_i3E7tAYvk0Y/SM3lS3SFCeI/AAAAAAAAALk/ogwUco9BXLQ/s1600-h/wyoming.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_i3E7tAYvk0Y/SM3lS3SFCeI/AAAAAAAAALk/X8ZtPVQZ8rM/s320-R/wyoming.jpg" /&gt;&lt;/a&gt;We are on a project where they hired someone to figure it all out first. The analysis team spent a year, with numbers around one hundred people, learning about the customer, researching technologies, and spewing out documents- in the thousands of pages.&amp;nbsp; Then they came up with a schedule for someone else (eventually including us) to start delivering systems incrementally- and called it Agile (with a capital A): fixed-scope, fixed-schedule Scrum.&lt;br /&gt;
&lt;br /&gt;
Unsurprisingly, it didn't work.&amp;nbsp; The analysis team missed half of the requirements for the most important application.&amp;nbsp; Their technology selection process came up with numerous wrong answers. The first few incremental reviews were perceived as having come from a year of work. A battle began between the implementation and analysis contracts.&amp;nbsp; It got ugly.&lt;br /&gt;
&lt;br /&gt;
So they started over from a contracting perspective. Good-bye to fixed scope. Good-bye to fixed schedule.&amp;nbsp; A new dawn for "real Agile"?&amp;nbsp; Except that now the customer wanted a schedule- they wanted a price and a schedule for scope- scope that was not at all agreed upon.&lt;br /&gt;
&lt;br /&gt;
We had a modest proposal- if you want a fixed cost, fixed scope contract, make it short. Make it a month or a quarter.&amp;nbsp; Give the customer the option to cancel at any time. Use rolling wave planning.&amp;nbsp; Of course, the customer budgets work years in advance, and uncommitted funds often disappear.&amp;nbsp; So you have to write a contract that specifies these iterative and incremental development cycles for about the size of the team the customer can support.&amp;nbsp; Use a little bit of data to at least put you in the wide part of the cone of uncertainty.  Refine the estimates with each increment based on real evidence.&lt;br /&gt;
&lt;br /&gt;
Stay tuned to see how it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-5201880942526278812?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/5201880942526278812/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=5201880942526278812" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/5201880942526278812?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/5201880942526278812?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/_mJWI-cz6wA/how-much-will-it-cost.html" title="How much will it cost?" /><author><name>Matt McKnight</name><uri>http://www.blogger.com/profile/16098483018096096360</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="14" src="https://support.google.com/enterprise/static/gsa.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i3E7tAYvk0Y/SM3lS3SFCeI/AAAAAAAAALk/X8ZtPVQZ8rM/s72-Rc/wyoming.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2008/08/how-much-will-it-cost.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEGQ3kzcCp7ImA9WxdbFUw.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-6650387296519076119</id><published>2008-08-06T23:30:00.002-04:00</published><updated>2008-08-12T00:00:22.788-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-12T00:00:22.788-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lean" /><title>Are you creating value?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_i3E7tAYvk0Y/SKEKxpNhTQI/AAAAAAAAAJs/8Vc_6BXpCmo/s1600-h/toyota_way.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_i3E7tAYvk0Y/SKEKxpNhTQI/AAAAAAAAAJs/8Vc_6BXpCmo/s320/toyota_way.jpg" alt="" id="BLOGGER_PHOTO_ID_5233476089973656834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the Lean view of the world, the theory of business that emanates from the Toyota Production System, the focus is on delivering a continuous flow of value and avoiding waste.  Our business is formed around delivering value to customers.  When our team arrives on the scene at a project- often a project that is in trouble for one reason or another, the first thing we look for is the customer.  In order to provide value to the customer, one must understand what the customer values.&lt;br /&gt;&lt;br /&gt;How do we understand what the customer values?  The values must be communicated to us- but, still how, and by whom or what?  Too often, we show up on a project and there is a huge document that purports to represent the customer's needs.  In some cases, we are told to look at the existing systems they have and recreate them, with changes.  In other cases, we are told that some other project functionaries will be spending their time visiting with the customer, and the the people designing and building the system will not be dealing with the customer. What does the lean approach tell us to do?&lt;br /&gt;&lt;br /&gt;The Toyota Way recommends a simple thing- "Go and see for yourself to thoroughly undertand the situation."  Also known as going to &lt;i&gt;gemba &lt;/i&gt;(Japanese for "real place") or &lt;i&gt;genchi genbutsu&lt;/i&gt; (Japanese for "real thing"), this allows you to make accurate decisions based on real observations.  Rather than acting based on reports or hearsay, we should strive to create real human interactions with the people involved in the mission and understand what they are trying to accomplish.  This will help put the technology in the right place.&lt;br /&gt;&lt;br /&gt;Your job, your primary goal, is to help accomplish the mission of your customers.  If you do not deeply understand this mission, you can only act in a shallow fashion.  You will only be providing tools, and you will not be aware of whether or not you are providing value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-6650387296519076119?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/6650387296519076119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=6650387296519076119" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/6650387296519076119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/6650387296519076119?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/tYpFFNEv-1k/are-you-creating-value.html" title="Are you creating value?" /><author><name>Matt McKnight</name><uri>http://www.blogger.com/profile/16098483018096096360</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="14" src="https://support.google.com/enterprise/static/gsa.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_i3E7tAYvk0Y/SKEKxpNhTQI/AAAAAAAAAJs/8Vc_6BXpCmo/s72-c/toyota_way.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2008/08/are-you-creating-value.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BQHoyeip7ImA9WxdUGUs.&quot;"><id>tag:blogger.com,1999:blog-5015837562926983573.post-6808869693050399460</id><published>2008-08-05T14:29:00.002-04:00</published><updated>2008-08-05T16:42:31.492-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-05T16:42:31.492-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Meta" /><title>What is this about?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_i3E7tAYvk0Y/SJi7GzoFRwI/AAAAAAAAAJU/f0Gsm6saYCs/s1600-h/uphill.JPG"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_i3E7tAYvk0Y/SJi7GzoFRwI/AAAAAAAAAJU/f0Gsm6saYCs/s320/uphill.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5231136692802766594" /&gt;&lt;/a&gt;&lt;br /&gt;We work on a lot of projects. We see a lot of opportunities for improvement (aka problems). We provide a lot of solutions.  &lt;br /&gt;&lt;br /&gt;There are patterns to the kinds of things that go wrong on these projects.  There are root causes that need to be addressed.  There are things that we know really work, and we're trying our best to make them happen.&lt;br /&gt;&lt;br /&gt;That process would be far simpler if people already understood what we are trying to do.  Therefore, we are kicking off this effort to attempt to work out the specifics of the process and communicate it in an effective manner to the necessary individuals such that everyone's chances for success are improved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5015837562926983573-6808869693050399460?l=process.lmnsolutions.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://process.lmnsolutions.com/feeds/6808869693050399460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5015837562926983573&amp;postID=6808869693050399460" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/6808869693050399460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5015837562926983573/posts/default/6808869693050399460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CollisionOfInfluences/~3/zvZZ6kUQiL4/what-is-this-about.html" title="What is this about?" /><author><name>Matt McKnight</name><uri>http://www.blogger.com/profile/16098483018096096360</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="14" src="https://support.google.com/enterprise/static/gsa.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_i3E7tAYvk0Y/SJi7GzoFRwI/AAAAAAAAAJU/f0Gsm6saYCs/s72-c/uphill.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://process.lmnsolutions.com/2008/08/what-is-this-about.html</feedburner:origLink></entry></feed>

