<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Oliver O&#039;Mahony&#039;s Blog</title>
	<atom:link href="http://skud15.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://skud15.wordpress.com</link>
	<description>A Flex Blog from Ireland. Blogging about software, projects and what I learn.</description>
	<lastBuildDate>Tue, 24 May 2011 13:46:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='skud15.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/db600475469677c008eb19de2fc21a5b?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Oliver O&#039;Mahony&#039;s Blog</title>
		<link>http://skud15.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://skud15.wordpress.com/osd.xml" title="Oliver O&#039;Mahony&#039;s Blog" />
	<atom:link rel='hub' href='http://skud15.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Nant and copyright symbol ©</title>
		<link>http://skud15.wordpress.com/2011/05/24/nant-and-copyright-symbol-%c2%a9/</link>
		<comments>http://skud15.wordpress.com/2011/05/24/nant-and-copyright-symbol-%c2%a9/#comments</comments>
		<pubDate>Tue, 24 May 2011 13:41:51 +0000</pubDate>
		<dc:creator>Oliver O'Mahony</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://skud15.wordpress.com/?p=65</guid>
		<description><![CDATA[Trying to generate a copyright symbol so I could automatically create an AssembyInfo.cs file, rather than (c), I was having some difficulty. However, I did discover this solution: &#60;?xml version="1.0"?&#62; &#60;project name="Assembly Version Info Generator" default="buildVersionInfo" basedir="."&#62; &#60;target name="buildVersionInfo"&#62; &#60;script language="C#" prefix="test" &#62; &#60;code&#62; &#60;![CDATA[ [Function("test-func")] public static string Testfunc( ) { return "\u00a9"; } [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=65&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Trying to generate a copyright symbol so I could automatically create an AssembyInfo.cs file, rather than (c), I was having some difficulty. However, I did discover this solution:<br />
<code></p>
<pre>&lt;?xml version="1.0"?&gt;
   &lt;project name="Assembly Version Info Generator" default="buildVersionInfo" basedir="."&gt;
	&lt;target name="buildVersionInfo"&gt;

	&lt;script language="C#" prefix="test" &gt;
          &lt;code&gt;
            &lt;![CDATA[
              [Function("test-func")]
              public static string Testfunc(  ) {
                  return "\u00a9";
              }
            ]]&gt;
          &lt;/code&gt;
	&lt;/script&gt;

      &lt;echo message='${test::test-func()}'/&gt;

	&lt;asminfo output=".\Properties\AssemblyInfo.cs" language="CSharp"&gt;
	 &lt;imports&gt;
	  &lt;import namespace="System.Reflection" /&gt;
	  &lt;import namespace="System.Runtime.InteropServices" /&gt;
	 &lt;/imports&gt;
	 &lt;attributes&gt;
	  &lt;attribute type="AssemblyTitleAttribute" value="AssemblyName" /&gt;
	  &lt;attribute type="AssemblyVersionAttribute" value="1.0.0.0" /&gt;
	  &lt;attribute type="AssemblyCopyrightAttribute" value="Copyright ${test::test-func()} Your company 2011" /&gt;
	  &lt;attribute type="AssemblyProductAttribute" value="Product Name" /&gt;
	  &lt;attribute type="ComVisibleAttribute" value="false" /&gt;
	 &lt;/attributes&gt;
	&lt;/asminfo&gt;
   &lt;/target&gt;
&lt;/project&gt;</pre>
<p></code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skud15.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skud15.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skud15.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skud15.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skud15.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skud15.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skud15.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skud15.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=65&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skud15.wordpress.com/2011/05/24/nant-and-copyright-symbol-%c2%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00140c3fa8698946872b706dc13e74a6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oliveromahony</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Metrics and a Proposed .Net Framework</title>
		<link>http://skud15.wordpress.com/2011/03/08/software-metrics-and-a-proposed-net-framework/</link>
		<comments>http://skud15.wordpress.com/2011/03/08/software-metrics-and-a-proposed-net-framework/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 12:49:30 +0000</pubDate>
		<dc:creator>Oliver O'Mahony</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://skud15.wordpress.com/?p=58</guid>
		<description><![CDATA[The Need for Software Metrics Software metrics provide you with the ability to identify potentially problematic areas of code. Using measures you can quickly review code at a high-level and identify potential quality and maintainability issues. Once identified code can be refactored to make improvements. Definition of Software Metrics: Good metrics should facilitate the development of models that are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=58&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="ContainerDiv">
<div id="MainDiv">
<div id="PageContentDiv">
<h1>The Need for Software <strong>Metrics</strong></h1>
<p>Software metrics provide you with the ability to identify potentially problematic areas of code. Using measures you can quickly review code at a high-level and identify potential quality and maintainability issues. Once identified code can be refactored to make improvements.</p>
<p><em>Definition of Software Metrics:</em><br />
Good metrics should facilitate the development of models that are capable of predicting process or product parameters, not just describing them. Thus ideal metrics should be :</p>
<ul>
<li>simple, precisely definable—so that it is clear how the metric can be evaluated;</li>
<li>objective, to the greatest extent possible;</li>
<li>easily obtainable (i.e., at reasonable cost);</li>
<li>valid—the metric should measure what it is intended to measure; and</li>
<li>robust—relatively insensitive to (intuitively) insignificant changes in the process or product</li>
<li>should map to overall strategy of the business / department</li>
</ul>
<p>It has been observed that the <em>fundamental qualities required of any technical system</em> are:</p>
<ul>
<li>functionality—correctness, reliability, etc.;</li>
<li>performance—response time, throughput, speed, etc.; and</li>
<li>economy—cost effectiveness<br />
(Mill 1988)</li>
</ul>
<h1>A Proposed Metrics Framework</h1>
<p>Metrics should consist of :</p>
<ul>
<li>quality</li>
<li>maintainability</li>
<li>private</li>
</ul>
<p><em>Metrics marked bold should be made public to management</em><br />
<em>Other metrics are those to help development team internally</em></p>
<h3>Quality <strong>Metrics</strong></h3>
<table cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td><span style="color:#ff0000;"><strong>Metric</strong></span></td>
<td><span style="color:#ff0000;"><strong>Purpose</strong></span></td>
<td><span style="color:#ff0000;"><strong>Agreed Measure</strong></span></td>
<td><span style="color:#ff0000;"><strong>Collection method / tool</strong></span></td>
<td><span style="color:#ff0000;"><strong>Metric Classifications</strong></span></td>
</tr>
<tr>
<td><strong>Bugs per line of code</strong></td>
<td>Overall Software Quality</td>
<td>An agreed percentage</td>
<td>Bugtracking software</td>
<td>functionality, economy</td>
</tr>
<tr>
<td><strong>Program Load Time</strong></td>
<td>Performance of overall application</td>
<td>A measure in seconds</td>
<td>Output of integration testing or test harness testing</td>
<td>functionality, performance</td>
</tr>
<tr>
<td><strong>Cycle time for main operation</strong></td>
<td>Performance of individual components</td>
<td>to be defined on component by component basis, a measure in seconds</td>
<td>Output of integration testing or test harness testing</td>
<td>performance</td>
</tr>
<tr>
<td><strong>FxCop Violations</strong></td>
<td>Using agreed FxCop rule set</td>
<td>A maximum amount of violations per component</td>
<td>FxCop</td>
<td>functionality</td>
</tr>
<tr>
<td><strong>Code Coverage</strong></td>
<td>% of paths through the code that our tests cover</td>
<td>A minimum percentage figure</td>
<td>NCover</td>
<td>functionality</td>
</tr>
<tr>
<td>Symbol Coverage</td>
<td>To measure the sequence points executed throughout a components testing</td>
<td>A minimum percentage figure</td>
<td>NCover</td>
<td>functionality</td>
</tr>
<tr>
<td>Branch Coverage</td>
<td>Measures the number of executed basic blocks in the control flow graphs of all methods</td>
<td>A minimum percentage figure</td>
<td>NCover</td>
<td>functionality</td>
</tr>
<tr>
<td>Method Coverage</td>
<td>Measures the number of methods being hit &#8211; helps identify what methods do not get hit</td>
<td>A minimum percentage figure</td>
<td>NCover</td>
<td>functionality</td>
</tr>
</tbody>
</table>
<p><em>Note: Symbol Coverage might be a more useful metric than code coverage to management &#8211; because this determines path in your code that your customers hit in the application flow</em></p>
<h3>Maintainability <strong>Metrics</strong></h3>
<p>Metrics that should be used to measure how easily maintainable a codebase is. This facilitates consistency across projects.</p>
<table cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td><strong><span style="color:#ff0000;">Metric</span></strong></td>
<td><strong><span style="color:#ff0000;">Purpose</span></strong></td>
<td><strong><span style="color:#ff0000;">Agreed Measure</span></strong></td>
<td><strong><span style="color:#ff0000;">Collection method / tool</span></strong></td>
<td><strong><span style="color:#ff0000;">Metric Classification</span></strong></td>
</tr>
<tr>
<td><strong>StyleCop Violations</strong></td>
<td>How much the component adheres to the coding standards</td>
<td>A minimum amount of violations</td>
<td>StyleCop</td>
<td>functionality, economy</td>
</tr>
<tr>
<td><strong>Average Cyclomatic Complexity Figure</strong></td>
<td>A figure that determines a higher cyclomatic complexity implies badly written code. If average is high this is not an ideal scenario</td>
<td>A figure x</td>
<td>NCover</td>
<td>functionality, economy</td>
</tr>
<tr>
<td>Highest Cyclomatic Complexity Figure</td>
<td>A figure that determines a higher cyclomatic complexity implies badly written code</td>
<td>A figure x</td>
<td>NCover</td>
<td>functionality, economy</td>
</tr>
</tbody>
</table>
<p><em>Guidelines for cyclomatic complexity: 1-6 do not flag for complexity (although it could get questioned for other reasons), 7-9 is questionable, and any method over 10 is assumed to be bad.</em></p>
<h3>Private <strong>Metrics</strong></h3>
<p>Internal development indicators but should not be used as critical driving measures.</p>
<table cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td><span style="color:#ff0000;"><strong>Metric</strong></span></td>
<td><span style="color:#ff0000;"><strong>Purpose</strong></span></td>
<td><span style="color:#ff0000;"><strong>Agreed Measure</strong></span></td>
<td><span style="color:#ff0000;"><strong>Collection method / tool</strong></span></td>
<td><span style="color:#ff0000;"><strong>Metric Classification</strong></span></td>
</tr>
<tr>
<td>Number of lines of code of codebase</td>
<td>Useful with other metrics</td>
<td>A figure x</td>
<td>NCover</td>
<td>functionality</td>
</tr>
<tr>
<td>Binary File Size</td>
<td>Conscious of the fact that increased file size impacts the installer</td>
<td>A figure x in megabytes</td>
<td>Manual or log output from build</td>
<td>functionality, performance</td>
</tr>
<tr>
<td>Number of Files</td>
<td>A reduced number of files may improve the maintainability of a project</td>
<td>A figure x</td>
<td>NCover</td>
<td>functionality</td>
</tr>
<tr>
<td>Number of classes and interfaces</td>
<td>Total classes / interfaces in each project and overall. A reduced number of classes / interfaces may improve the maintainability of a project</td>
<td>A figure x</td>
<td>NCover</td>
<td>functionality</td>
</tr>
<tr>
<td>Failing Tests</td>
<td>No amount of failing tests per component.</td>
<td>0</td>
<td>Test report</td>
<td>functionality</td>
</tr>
<tr>
<td>Clones</td>
<td>Track the amount of duplicate code within a project</td>
<td>A figure x</td>
<td>Clone detective</td>
<td>functionality</td>
</tr>
</tbody>
</table>
<p>clones</p>
<h2>Other Possible <strong>Metrics</strong></h2>
<p>Metrics that could be gathered if they were agreed to add value.</p>
<ul>
<li>Comment Density &#8211; How much and how well code is commented</li>
<li>Member functions – Total count for project and overall, average and maximum for projects.</li>
<li>Statements per member – Average and maximum values for projects and overall.</li>
<li>Members per class – Average and maximum values for projects and overall</li>
<li>Halstead complexity (some metrics can be used in code reviews)</li>
<li>Number of classes and interfaces</li>
<li>Software Package Metrics : Martin (NDepend)</li>
<li>Lack of Cohesion of Method (NDepend)</li>
<li>Association Between Classes (NDepend)</li>
<li>Coupling (NDepend)</li>
<li>Relational Cohesion (NDepend)</li>
<li>Instability (NDepend)</li>
</ul>
<h2>7 Deadly Sins of Performance Measurement and How to Avoid Them<br />
(Hammer 2007)</h2>
<p>1 <strong>Vanity</strong>: Avoid using measures just to make yourself look good<br />
2 <strong>Provincialism</strong>: Do not let organizational boundaries and concerns dictate performance metrics &#8211; avoid measuring narrowly<br />
3 <strong>Narcissism</strong>: Do not measure from one&#8217;s own point of view, rather the customer&#8217;s perspective.<br />
4 <strong>Laziness</strong>: Do not assume one knows what is important without giving it adequate thought or effort.<br />
5 <strong>Pettiness</strong>: Do not measure only a small component of what matters<br />
6 <strong>Inanity</strong>: Avoid implementing metrics without giving any thought to the consequences on human behavior and enterprise performance<br />
7 <strong>Frivolity</strong>: Implement measurement if you are serious about it in the first place.</p>
<h2>Definitions or Glossary</h2>
<ul>
<li><strong>Cyclomatic Complexity</strong>: is a measure of the inherent complexity of a method. A method’s complexity is measured by the number of linearly independent paths from the start of the method to an exit point. The number of linearly independent paths through a method is generally smaller than the total number of paths, although every possible path can be formed by combining several linearly independent paths.<br />
In general, the more complex a method is, the harder it is to test or maintain, and the more likely it is to contain bugs or implementation errors. The cyclomatic complexity value is the maximum number of test cases needed to get 100% branch coverage, and the minimum number of test cases needed to exercise every path through a method, so it provides a good way to tell how well-tested a method is. Generally, methods with a cyclomatic complexity of 15 or higher are too complex, and should be refactored if possible (note that methods with switch statements usually have a higher-than-normal cyclomatic complexity).</li>
</ul>
<ul>
<li><strong>Symbol Coverage</strong>: Symbol coverage measures how many sequence points have been executed. A sequence point is the thing that Visual Studio highlights when you step through code in the debugger.</li>
</ul>
<ul>
<li><strong>Method Coverage</strong>: Method or function coverage measures how many methods have been executed. The method could exit partway through, or it could throw a NotImplementedException as soon as it’s called, but it will still count as executed for this metric.</li>
</ul>
<ul>
<li><strong>Branch Coverage</strong>: Branch coverage measures the number of executed basic blocks in the control flow graphs of all methods. Essentially, each method is analyzed and broken into sections that have a linear execution by starting new sections at the start and end of every conditional statement (such as an if or a switch statement), at statements that could exit a method, and around try-catch-finally blocks.</li>
</ul>
<h1>Conclusion</h1>
<p>Every company is different and people need to do what best suits their company. Each company will have their own challenges and priorities. I have placed this online as what we have examined in our company. It is very early days and our metrics should evolve over time but I think it gives a guide to practices and measures on a lot of development projects.</p>
<h2>Links</h2>
<p><a title="Software Metrics December 1988 Everald E. Mill" href="http://www.sei.cmu.edu/reports/88cm012.pdf" target="_blank">Software Metrics December 1988 Everald E. Mill</a><br />
<a title="NCover metrics" href="http://docs.ncover.com/best-practices/code-quality-metrics/" target="_blank">NCover metrics</a><br />
<a title="7 Deadly Sins of Performance Measurement and How to Avoid Them MIT Sloan Management Review Vol.48 No.3 Spring 2007" href="http://mldc.whs.mil/download/documents/Readings/7%20Deadly%20Sins%20of%20Performance%20Measurement.pdf" target="_blank">7 Deadly Sins of Performance Measurement and How to Avoid Them MIT Sloan Management Review Vol.48 No.3 Spring 2007</a></p>
</div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skud15.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skud15.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skud15.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skud15.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skud15.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skud15.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skud15.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skud15.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=58&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skud15.wordpress.com/2011/03/08/software-metrics-and-a-proposed-net-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00140c3fa8698946872b706dc13e74a6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oliveromahony</media:title>
		</media:content>
	</item>
		<item>
		<title>Can programmers really program?</title>
		<link>http://skud15.wordpress.com/2009/12/04/can-programmers-really-program/</link>
		<comments>http://skud15.wordpress.com/2009/12/04/can-programmers-really-program/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 01:35:56 +0000</pubDate>
		<dc:creator>Oliver O'Mahony</dc:creator>
				<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://skud15.wordpress.com/?p=44</guid>
		<description><![CDATA[What I find interesting is from my experience, in my undergraduate and masters courses - was that a high percentage of graduates would not be able to do the fizzbuzz problem<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=44&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Following the <a href="http://www.codinghorror.com/blog/archives/000781.html" target="_blank">coding horror article on FizzBuzz</a> about programmers not being able to program, really struck a cord with me. That article and a few interview questions I have gotten in the past year, have really inspired this whole series of problems and thinking like a developer.</p>
<p>In this post, I will talk about FizzBuzz and the concept of asking questions that graduate developers should know. According to the coding horror article 199/200 programmers can not program out of college. This statistic seems high and has since been <a href="http://www.joelonsoftware.com/items/2005/01/27.html">revisited</a> to explain how he came up with the figures. What I find interesting is from my experience, in my undergraduate and masters courses &#8211; was that a high percentage of graduates would not be able to do the fizzbuzz problem. This is why graduate screening &#8211; problem solving is essential. Microsoft and Google are notorious for asking their candidates to solve problems never seen before by them.</p>
<p>Another observation I had was, the best programmers did not over analyze their solutions. I believe a lot of people can write code, but it is very difficult to master. A great developer is worth a lot to any company. I must admit I have been guilty of over analyzing my solutions. As I strive to become a good developer I learn quicker, better ways to do things.</p>
<p>Without a further ado my fizzbuzz solution!</p>
<p><span style="color:#008000;">/**</span></p>
<p><span style="color:#008000;">* The Problem:<br />
* Write a program that prints out the numbers 1 to 100.<br />
* But for multiples of three print &#8220;Fizz&#8221;, instead of the number<br />
* and for multiples of five print &#8220;Buzz&#8221;.<br />
* For numbers which are multiples of both three and five print &#8220;FizzBuzz&#8221;<br />
*<br />
* Expected output:<br />
* 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz<br />
* 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz<br />
* 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz<br />
* 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz<br />
* 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz<br />
* 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz<br />
* 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz<br />
*/</span></p>
<pre>
<div id="_mcePaste">public static void fizzBuzz() {</div>
<div id="_mcePaste">for(int i = 1; i &lt; 101; i++) {</div>
<div id="_mcePaste">if (i % 3== 0 || i % 5 == 0) {</div>
<div id="_mcePaste">if (i % 3 == 0)</div>
<div id="_mcePaste">System.out.print("Fizz");</div>
<div id="_mcePaste">if (i % 5 == 0)</div>
<div id="_mcePaste">System.out.print("Buzz");</div>
<div id="_mcePaste">} else</div>
<div id="_mcePaste">System.out.print(i);</div>
<div id="_mcePaste">System.out.print(" ");</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
</pre>
<p>Guess that means I can program <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skud15.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skud15.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skud15.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skud15.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skud15.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skud15.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skud15.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skud15.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=44&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skud15.wordpress.com/2009/12/04/can-programmers-really-program/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00140c3fa8698946872b706dc13e74a6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oliveromahony</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Array Based Stack to find a Palindrome!</title>
		<link>http://skud15.wordpress.com/2009/11/20/java-array-based-stack-palindrome/</link>
		<comments>http://skud15.wordpress.com/2009/11/20/java-array-based-stack-palindrome/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 00:12:44 +0000</pubDate>
		<dc:creator>Oliver O'Mahony</dc:creator>
				<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[data structure]]></category>
		<category><![CDATA[Data Structures and Algorithms in Java]]></category>
		<category><![CDATA[graduate]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[interviews]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[kieran herley]]></category>
		<category><![CDATA[Michael T. Goodrich]]></category>
		<category><![CDATA[palindrome]]></category>
		<category><![CDATA[recruitment]]></category>
		<category><![CDATA[Roberto Tamassia]]></category>
		<category><![CDATA[stack]]></category>

		<guid isPermaLink="false">http://skud15.wordpress.com/?p=35</guid>
		<description><![CDATA[Microsoft and other companies often request you to complete some algorithms in their interviewing process. Today I completed an attempt at an ArrayBasedStack palindrome.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=35&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>How many buzz words can you fit in a title?</p>
<p>Microsoft and other companies often request you to complete some algorithms in their interviewing process. Today I completed an attempt at an ArrayBasedStack to be able to find a palindrome. Something I must admit I have not touched since early college! This is going to be the first of some interview questions I got. Plus it is about time I wrote another blog post.</p>
<p>Using the excellent: <a href="http://ww0.java4.datastructures.net/" target="_blank">Data Structures and Algorithms in Java</a> by G&amp;T to define my <a href="http://ww0.java4.datastructures.net/source/ch04/Java/Stack-Stack.html" target="_blank">stack</a> I created an <a href="http://ww0.java4.datastructures.net/source/ch04/Java/ArrayStack-ArrayStack.html" target="_blank">array based stack</a> similar to what they have posted. Each developer has their own style. I prefer using return size() == 0 rather than their (top &lt; 0), but that is my preference.</p>
<p>Just remember a few things</p>
<p><em>A <strong>palindrome</strong> is a word, phrase, <a title="Palindromic number" href="http://en.wikipedia.org/wiki/Palindromic_number">number</a> or other sequence of units that can be read the same way in either direction (the adjustment of punctuation and spaces between words is generally permitted) &#8211; from wiki</em></p>
<p>Trim whitespace and lowercase the characters.</p>
<p>Stacks work on last in, first out principle. What? Well this comes in handy for the algorithm. LIFO gives you a reverse effect.</p>
<p>So &#8211; here it is, the algorithm. Hope it will help you with your stack based palindromes.</p>
<pre><span style="color:#000000;">private boolean isPalindrome(String str) {</span></pre>
<pre style="text-align:justify;padding-left:30px;"><span style="color:#000000;"> Stack&lt;Character&gt; stack = new ArrayBasedStack</span>&lt;Character&gt;<span style="color:#000000;">(str.length());
 str = str.toLowerCase().trim();</span> <span style="color:#008000;">//format the data</span>
 while(stack.size()&lt;(str.length()/2)) {
 <span style="color:#008000;"> //When the stack is less than half the length
  //(even numbers great, odd numbers ignore the middle!</span>
<pre style="padding-left:30px;">stack.push(str.charAt(stack.size()));
<span style="color:#008000;">//push the character at the position indexed by the size of the stack</span></pre>
</pre>
<pre style="padding-left:30px;"> }</pre>
<pre style="padding-left:30px;"> while(stack.size()&gt;0) { <span style="color:#008000;">//lets go back</span>
</pre>
<pre style="padding-left:60px;">if(stack.top() == str.charAt(str.length() - stack.size())) {
<span style="color:#008000;">//again use the stack size
//to index the position, minus the length
//so this counts down every time something is popped from the stack.
//You are checking the top of the stack is equal to the character
//in 2nd half of the word. since characters go in first, the characters,
//abba would have b on top and a on the bottom when hitting this loop -
//the first two characters - they are the same as the last two. Get it now? </span>
<pre style="padding-left:30px;">stack.pop(); <span style="color:#008000;">//remove <strong>palindromic</strong> characters</span></pre>
</pre>
<pre style="padding-left:60px;">} else {</pre>
<pre style="padding-left:90px;">return false; <span style="color:#008000;">//it is not a palindrome -
//you don't want to keep going and be inefficient if it is wasting time!</span></pre>
<pre style="padding-left:60px;">}</pre>
<pre style="padding-left:30px;"> }</pre>
<pre style="padding-left:30px;"> return true; <span style="color:#008000;">// if it gets here there can only be on conclusion.</span></pre>
<p style="text-align:justify;">}</p>
<p>Hope this helps and you learn my thinking behind this. Good luck with the interviews.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skud15.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skud15.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skud15.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skud15.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skud15.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skud15.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skud15.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skud15.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=35&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skud15.wordpress.com/2009/11/20/java-array-based-stack-palindrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00140c3fa8698946872b706dc13e74a6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oliveromahony</media:title>
		</media:content>
	</item>
		<item>
		<title>EnergyBoss</title>
		<link>http://skud15.wordpress.com/2009/06/26/energyboss/</link>
		<comments>http://skud15.wordpress.com/2009/06/26/energyboss/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 14:01:51 +0000</pubDate>
		<dc:creator>Oliver O'Mahony</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://skud15.wordpress.com/?p=6</guid>
		<description><![CDATA[Energyboss uses cutting edge technology to display a history of your energy use and room light, heat and humidity using easy to read graphs. To see home performance, save money, and live a greener life, EnergyBoss is the solution.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=6&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Why?</strong></p>
<p>Energboss was my college project for the <a href="http://girtab2.ucc.ie/index.php/bis/mbs-bis/">MBS BIS</a> course for 2009 in <a href="http://www.ucc.ie/">University College Cork</a>. Here is a picture of the team on the open day with our mentor Sean Murphy:<br />
<img src="http://gallery.me.com/johnroche/100031/100_0108/web.jpg?ver=12434216830001" alt="Team EnergyBoss" /></p>
<p>Our logo:</p>
<p><img class="alignnone size-full wp-image-25" title="energyboss" src="http://skud15.files.wordpress.com/2009/06/energyboss.gif?w=500" alt="energyboss"   /></p>
<p><strong>Product Description</strong></p>
<p>Energyboss is a home energy-saving product for the times we live in. Position the tiny sensor devices in your key living areas, and connect sensors to your electricity and gas supplies. The process is quick, anyone can do it, and its suitable for old and new homes. Energyboss uses cutting edge technology to display a history of your energy use and room light, heat and humidity using easy to read graphs. To see home performance, save money, and live a greener life, EnergyBoss is the solution.</p>
<p><strong>The Hardware</strong></p>
<p>It consisted of taking real time sensor data from wireless sensors, that formed a wireless sensor network. We used <a href="http://www.xbow.com/Products/productdetails.aspx?sid=252">telosb</a> motes which looked like this:<br />
<img src="http://www.xbow.com/Products/..%5CProducts/Product_images/Wireless_images/Telos_SM.jpg" alt="Telosb" /></p>
<p><strong>How it worked</strong></p>
<p>Essentially how it worked was one wireless sensor (called a mote) plugged to your PC (base) and one in the room (gathering sensor information and broadcasting the data to the base). The live information would be taken in to an application and stored in a database. A number of calculations can be deduced from the sensor readings. There is a correlation between cost and temperature etc. Other factors like sudden loss of temperature can insinuate problems with insulation or windows etc. The average rating for your house can be calculated with Gas and Electricity readings, which is directly compared to your energy performance (or benchmarked against similar houses in your area). This is a far better rating system than the <a href="http://www.sei.ie/Your_Building/BER/">BER</a> rating offered in Ireland currently as it is real-time, more accurate and helps the individual improve reduce their energy expenses. Even then, energy expenses can often be estimated in Ireland and households can get hit with massive, unexpected charges by utility companies. This product uses ZigBee which could tap into some smart meters in the future, providing accurate information to the bill payer.</p>
<p><strong>The Initial Concept</strong></p>
<p>What I was striving for was something similar to <a href="http://www.adobe.com/devnet/flex/samples/dashboard/dashboard.html">this</a>.</p>
<p>I came up with some mock screen shots, with mock data in them.<br />
Tab1:<br />
<img class="alignnone size-medium wp-image-21" title="tab1" src="http://skud15.files.wordpress.com/2009/06/tab1.jpg?w=300&#038;h=137" alt="tab1" width="300" height="137" /></p>
<p>Tab1: consisted on a house floor plan. This broke down room by room (image map from <a href="http://code.google.com/p/flexlib/">flexlib</a>) where a sensor could be placed, and a report could be viewed next to it. Sample reports/graphs included the default interactive flex pie chart and some <a href="http://www.degrafa.org/source/DataRenderer/DegrafaDataRenderer.html">mini degrafa bar renderers</a> to give a flavor of what could be done. I wanted to go forward with the houseplan, maybe something along the lines of <a href="http://www.floorplanner.com">floorplanner</a> or eventually what <a href="http://www.bizjournals.com/sanjose/stories/2009/04/13/story4.html">adobe</a> did, monitoring their HQ in 3d. Somewhat overkill for a simple masters project but where things are heading.</p>
<p>Tab2:<br />
<img class="alignnone size-medium wp-image-13" title="tab2" src="http://skud15.files.wordpress.com/2009/06/tab2.jpg?w=300&#038;h=159" alt="tab2" width="300" height="159" /><br />
Tab 2: basically outlined some simple historical reports using flex charting. This would need to plug into a database in the long run, <a href="http://www.sqlite.org/">SQLite</a> was the choice as it is &#8220;a <a href="http://www.sqlite.org/selfcontained.html">self-contained</a>,  <a href="http://www.sqlite.org/serverless.html">serverless</a>, <a href="http://www.sqlite.org/zeroconf.html">zero-configuration</a>, <a href="http://www.sqlite.org/transactional.html">transactional</a> SQL database engine.&#8221; Ideal if the application needed to/could be ported Adobe Air.</p>
<p><strong>The Software</strong></p>
<p>The motes had <a href="http://www.tinyos.net/">TinyOS</a> installed on them (Embedded C) in the <a href="http://www.tinyos.net/tinyos-1.x/doc/">-1.x flavor</a>.</p>
<p><a href="http://www.xbow.com/">Crossbow Technology</a> provided the mote and an install CD with a driver that changes the USB to serial port communication. I needed to run the net.tinyos.sf.SerialForwarder application outlined in <a href="http://www.tinyos.net/tinyos-1.x/doc/tutorial/lesson6.html">lesson 6</a> to run the oscilloscope application in tinyos, and save me learning huge amounts of Embedded C in a limited time frame. All I needed was basic sensor data like light, temperature and humidity that came through the serial forwarder packet information (packet structure outlined in lesson 6).<br />
What the basic oscilloscope program looks like:<br />
<img class="alignnone size-full wp-image-22" title="oscope" src="http://skud15.files.wordpress.com/2009/06/oscope.png?w=500" alt="oscope"   /></p>
<p>My re-engineered Flex version (with real-time sensor data) &#8211; more on this later<br />
<img class="alignnone size-medium wp-image-15" title="data" src="http://skud15.files.wordpress.com/2009/06/data.jpg?w=300&#038;h=226" alt="data" width="300" height="226" /></p>
<p>The mig class can generate the appropriate Java from your embedded C. Since this was already done it was a case of using the existing Java classes and knowing the particular format of the Oscope Message (outlined in lesson 6 of tinyos doc).</p>
<p><strong>Java</strong></p>
<p>From there I needed to manipulate the raw data. First I identified the appropriate channels, finding the correct data associated with it. It was a case then of plugging particular data into some equations in order to get the correct figure, e.g. temperature = -39.60 + 0.01*SOt, where SOt is a particular sensor reading.</p>
<p>The tinyos based motes spoke to Java and a Tomcat server running <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/">BlazeDS</a>, which in turn ended up speaking to my Flex/Air front-end.  Or should I say Java listened to the comm port using the <a href="http://java.sun.com/products/javacomm/">java comm api</a>, which in turn ran on BlazeDS. My idea for running it in a Flex/Air front-end proved somewhat troublesome, but more on that later.</p>
<p><strong>BlazeDS data push</strong></p>
<p>Using this link <a href="http://www.scribd.com/doc/3836539/Server-Push-data-push-in-Flex-using-Blaze-DS-and-Java">here</a> I set about creating the Energyboss application. Instead of the random number generator I replaced it with a thread that gathered information from the comm port/sensor. The sensor data was calculated then sent across the wire. Then in the format of<br />
e.g. &#8220;temp: &#8221; +temperatureValue<br />
I populated an ArrayCollection on the Java side and sent it to Flex.</p>
<p><strong>Handling the Data on the Flex Side</strong></p>
<p>I created a producer/consumer definition (publish/subscribe paradigm) which had a messaging buffer/queue for receiving directly from the server-side (the instructions in the presentation in the last section). This information was partitioned to its appropriate bindable ArrayCollection which was auto-updated through Flex as normal. I was able to split the strings above by looking for the &#8216;: &#8216; character in order to allocate to the appropriate ArrayCollection on the flex side! I had a single ArrayCollection solely taking in data from Java. This allowed me to filter out the data into it&#8217;s appropriate ArrayCollection (e.g. temp, humidity or light), giving me more flexibility with a series of individual ArrayCollections. Each had a timestamp also, which was added at the time of the Flex client receiving the information. I know I could have added them all to a single ArrayCollection or had different end-points but I wanted to keep the information separate for a number of reasons.</p>
<p><strong>The Finished Application</strong></p>
<p><img class="alignnone size-full wp-image-18" title="screen1older" src="http://skud15.files.wordpress.com/2009/06/screen1older.jpg?w=500" alt="screen1older"   /></p>
<p>The left box uses a degrafa dial, which lost it&#8217;s style somewhere (ran out of time to find out the issue). This gave a nice indication of your energy rating that is better than the BER already mentioned. The right box indicates the temperature and weather outside.  This allows you to combat your energy usage and adjust it accordingly. In future this feature can help build a profile of your area and your historical readings, to provide a series of recommendations from your past usage. The bottom (in this screen shot is way too small, but in the final had a larger graph with better scales) graphs indicate real-time sensor data. So you can track how your dwelling is doing and adjust accordingly.</p>
<p>Screen2:</p>
<p><img class="alignnone size-full wp-image-19" title="screen2" src="http://skud15.files.wordpress.com/2009/06/screen2.jpg?w=500" alt="screen2"   /></p>
<p>This screen shot highlights a historical chart for your usage for the past 12 months. This allows a user to see their performance for the same period last year, and eventually similar weather conditions could be compared also. This chart drills down to every day of every month, and even every hour of every day! It does take a year to get more accurate readings, but sample data can be placed in here until a big enough data set or sample or your history can be obtained. Entering bills for the last 12 months is also an alternative option.</p>
<p>From feedback we received, we wanted to highlight this product is actually paying for itself! The user gets an estimated costing highlighted to them in this screen.</p>
<p>The remaining component was the floor plan and associated chart in each room. It broke down on a room-by-room basis the sensor data. Using the <a href="http://srirangan.net/?tag=multichart">multichart </a>component to display in the graph the user would prefer.</p>
<p><img class="alignnone size-full wp-image-20" title="screen3" src="http://skud15.files.wordpress.com/2009/06/screen3.jpg?w=500" alt="screen3"   /></p>
<p>Finally, the reporting section. This lets the user customize a particular chart and data they want in that report. This section used the Flex charting components but had massive room for improvements! Charting in itself is boring, but I could offer the chance to store and reuse particular charts, even provide a dynamic dashboard where the user could dock these charts!</p>
<p><strong>Issues with the Project</strong></p>
<ul>
<li>Even at the time of writing this, Tinyos-1.x is well out of date. For the sake of simplicity, or so I thought, I did not upgrade to 2.x version. This was Crossbow&#8217;s fault for providing out of date environment at such a large premium.</li>
<li>Tomcat with BlazeDS ran on Java 1.5 <a href="http://opensource.adobe.com/wiki/display/blazeds/Release+Notes">minimum</a>. Since Crossbow provided me with a 1.4 version of Java I had to reconfigure all the environment etc, which wasted a lot of development time.</li>
<li>Java comm api has been discontinued for Windows. I found an older version somewhere in Google land.</li>
<li>Flex or Air do not natively support comm port communication. An issue that does not look like it is going to be addressed anytime soon.</li>
</ul>
<p>1500 words later I hope you enjoyed my Masters project. It was fun developing it! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Feel free to contact me with any quries you have on this. I will not provide the source code, mainly because I do not have access to the senors anymore, but if you wish to know how any of it worked I will try to help!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skud15.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skud15.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skud15.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skud15.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skud15.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skud15.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skud15.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skud15.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skud15.wordpress.com&amp;blog=8123615&amp;post=6&amp;subd=skud15&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skud15.wordpress.com/2009/06/26/energyboss/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00140c3fa8698946872b706dc13e74a6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oliveromahony</media:title>
		</media:content>

		<media:content url="http://gallery.me.com/johnroche/100031/100_0108/web.jpg?ver=12434216830001" medium="image">
			<media:title type="html">Team EnergyBoss</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/energyboss.gif" medium="image">
			<media:title type="html">energyboss</media:title>
		</media:content>

		<media:content url="http://www.xbow.com/Products/..%5CProducts/Product_images/Wireless_images/Telos_SM.jpg" medium="image">
			<media:title type="html">Telosb</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/tab1.jpg?w=300" medium="image">
			<media:title type="html">tab1</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/tab2.jpg?w=300" medium="image">
			<media:title type="html">tab2</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/oscope.png" medium="image">
			<media:title type="html">oscope</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/data.jpg?w=300" medium="image">
			<media:title type="html">data</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/screen1older.jpg" medium="image">
			<media:title type="html">screen1older</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/screen2.jpg" medium="image">
			<media:title type="html">screen2</media:title>
		</media:content>

		<media:content url="http://skud15.files.wordpress.com/2009/06/screen3.jpg" medium="image">
			<media:title type="html">screen3</media:title>
		</media:content>
	</item>
	</channel>
</rss>
