<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Utah Open Source Planet</title>
	<link rel="self" href="http://planet.utos.org/atom.xml"/>
	<link href="http://planet.utos.org/"/>
	<id>http://planet.utos.org/atom.xml</id>
	<updated>2010-07-30T20:21:12+00:00</updated>
	<generator uri="http://planet.utos.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">Selenium, Nagios and Magento– together at last!</title>
		<link href="http://www.ryanbyrd.net/techramble/2010/07/29/selenium-nagios-and-magento-together-at-last/"/>
		<id>http://www.ryanbyrd.net/techramble/?p=273</id>
		<updated>2010-07-29T16:51:26+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Now that I have a server running selenium tests against a magento-powered ecommerce site and logging those tests to a file, we need to integrate with nagios. First, I installed openSSH on that windows server (via &lt;a href=&quot;http://www.itefix.no/i2/copssh&quot; target=&quot;_blank&quot;&gt;copssh&lt;/a&gt;), and copied over the nagios user public key to authorized_keys. Then I wrote this nagios script:&lt;/p&gt;
&lt;pre class=&quot;php php&quot;&gt;#! /usr/bin/php -q
&lt;span&gt;&amp;lt;?php&lt;/span&gt;
&lt;a href=&quot;http://www.php.net/ini_set&quot;&gt;&lt;span&gt;ini_set&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;'max_execution_time'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;'55'&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/ini_set&quot;&gt;&lt;span&gt;ini_set&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;'display_errors'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;false&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;&amp;quot;STATUS_OK&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;       &lt;span&gt;0&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;&amp;quot;STATUS_WARNING&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;  &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;&amp;quot;STATUS_CRITICAL&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;2&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;&amp;quot;STATUS_UNKNOWN&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;  &lt;span&gt;3&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span&gt;$execCommand&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;'ssh WINDOWS_SERVER_IP_GOES_HERE -l nagiosremote &amp;quot;tail -n 1 selenium.txt&amp;quot;'&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/exec&quot;&gt;&lt;span&gt;exec&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$execCommand&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$id&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$date&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$time&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$avg&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$std&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/split&quot;&gt;&lt;span&gt;split&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;','&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/strpos&quot;&gt;&lt;span&gt;strpos&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;||&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/strpos&quot;&gt;&lt;span&gt;strpos&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;'ERROR'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;!==&lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;ERROR: $status $FLAG&lt;span&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
        &lt;a href=&quot;http://www.php.net/exit&quot;&gt;&lt;span&gt;exit&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; STATUS_CRITICAL &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;else&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;OK: time $time, status $status, avg $avg, std $std, FLAG $FLAG, flagCnt $flagCnt, statCnt $statCnt&lt;span&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
        &lt;a href=&quot;http://www.php.net/exit&quot;&gt;&lt;span&gt;exit&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; STATUS_OK &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Then I defined a check_command, a host, a host_group and a service in nagios and we&amp;#8217;re in business!&lt;/p&gt;</content>
		<author>
			<name>Ryan Byrd</name>
			<uri>http://www.ryanbyrd.net/techramble</uri>
		</author>
		<source>
			<title type="html">Ryan Byrd's Tech Ramblings</title>
			<subtitle type="html">The Second Best Blog in Utah</subtitle>
			<link rel="self" href="http://www.ryanbyrd.net/techramble/feed/"/>
			<id>http://www.ryanbyrd.net/techramble/feed/</id>
			<updated>2010-07-29T17:21:26+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Final week to submit papers for UTOSC 2010!</title>
		<link href="http://blog.utos.org/2010/07/28/final-week-to-submit-papers-for-utosc-2010/"/>
		<id>http://blog.utos.org/?p=1192</id>
		<updated>2010-07-29T03:18:56+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://utos.org/wp-content/themes/mimbo/images/utos-logo.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;This Monday marked the beginning of the final week to submit papers for the &lt;a href=&quot;http://2010.utosc.com&quot;&gt;2010 Utah Open Source Conference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you miss this final chance to submit a paper you may well miss out on your opportunity to present!&lt;/p&gt;
&lt;p&gt;In addition to being a presenter there are several other opportunities to contribute to the Utah Open Source Conference, such as volunteering your time or conducting a BoF get together.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href=&quot;http://blog.utos.org&quot;&gt;http://blog.utos.org&lt;/a&gt; and &lt;a href=&quot;http://2010.utosc.com&quot;&gt;http://2010.utosc.com&lt;/a&gt; for all the latest opportunities to help out this year!&lt;/p&gt;</content>
		<author>
			<name>Utah Open Source</name>
			<uri>http://blog.utos.org</uri>
		</author>
		<source>
			<title type="html">Utah Open Source Blog</title>
			<subtitle type="html">By, for and about Utah Open Source</subtitle>
			<link rel="self" href="http://blog.utos.org/feed/"/>
			<id>http://blog.utos.org/feed/</id>
			<updated>2010-07-29T03:20:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Lest we forget</title>
		<link href="http://undertakingyou.com/general/lest-we-forget/"/>
		<id>http://undertakingyou.com/?p=328</id>
		<updated>2010-07-28T22:48:50+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;I have not worked with a Windows Vista computer in some time. I forgot how bad it sucked. Now, let us qualify sucking. I have never used a computer that has a respectable hardware stat-sheet, and been so dog slow in all of my life.&lt;/p&gt;
&lt;p&gt;Case and point: Today I am using a Toshiba Laptop that has a Intel Pentium Dual-Core 1.6 GHz processor and 2 GB of ram. Now while these two figures alone do not give us a perfect picture of expected performance any machine with these components should be just fine.&lt;/p&gt;
&lt;p&gt;I clicked the start orb, then on control panel. Ten minutes later the control panel came up. Ten minutes. I sat there waiting for just the control panel. I then selected &amp;#8216;Network and sharing&amp;#8217;, another 3 minutes. After it finally opens all looks fine there, I now need to add a printer. Go back to Control Panel. After 7 minutes of just sitting there with that blue donut whirling it finally did something. Yes folks, a flash of a blue screen and the computer restarted.&lt;/p&gt;
&lt;p&gt;I wish that I could take this computer and do one of two things, install something else, like my favorite free operating system, or downgrade to Windows XP or upgrade to Windows 7. But alas, it is not my computer. It is the personal computer of a co-worker who needs access to certain things on our network. I won&amp;#8217;t go into the pain of this running windows Vista Home Premium and that connecting even to drives in our active directory is a hack at best. That will be a post for another day.&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Remembering in KRL: Using Entity Variables with Forms</title>
		<link href="http://www.windley.com/archives/2010/07/remembering_in_krl.shtml"/>
		<id>http://www.windley.com/archives/2010/07/remembering_in_krl.shtml</id>
		<updated>2010-07-28T21:33:53+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://photos.windley.com/albums/me/0612_15_014.thumb.jpg&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;
Dan asked a question in the Kynetx Developer Exchange about &lt;a href=&quot;http://devex.kynetx.com/questions/511/remembering-user-entered-variables&quot;&gt;remembering user entered data in KRL&lt;/a&gt;.  I gave him a brief outline of the solution but thought an example would be nice.  This blog post is the detailed answer to how to gather, remember, and use user-supplied data.  
&lt;/p&gt;

&lt;p&gt;
The basic idea is to store the data in an entity variable.  Trails (a type of &lt;a href=&quot;http://docs.kynetx.com/krl/report-on-krl/expressions/#Persistent_Variables&quot;&gt;persistent variable&lt;/a&gt;) are the most appropriate type of entity variable to use.  The ruleset pattern has four rules: initialize, send the form, process the form, use the data.  The actual ruleset has five because I added one to delete the user data since it makes testing much more convenient.  I'll go over each rule in order.  
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;Forget:&lt;/b&gt;  The first rule just clears the entity variable &lt;code&gt;ent:name&lt;/code&gt; when you visit a particular web page.  You could, of course, do this under user control with a form submission or something, but this is easy enough and suits my purpose for testing.  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
rule clear_name is active {
   select when web pageview &quot;www.foobar.com&quot; 
   noop();
   always {
      clear ent:name;
      last
   }
 }
&lt;/pre&gt;

&lt;p&gt;
Note that if the rule is selected (the page URL matches) then the entity variable is cleared and this is the last rule executed in this ruleset.  
&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Initialize:&lt;/b&gt;
I like initializing the area of the page I'm going to write or modify and then do the modification in later rules since I can have different rules do different things to the area as needed.  So the initialization rule just puts up an empty notification box with a div named &lt;code&gt;#my_div&lt;/code&gt; that we'll use in late rules.  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
rule initialize is active {
  select when pageview &quot;.*&quot;
   pre {   
    blank_div = &amp;lt;&amp;lt;
&amp;lt;div id=&quot;my_div&quot;&amp;gt;
&amp;lt;/div&amp;gt;
    &amp;gt;&amp;gt;;
  }
  notify(&quot;Hello Example&quot;, blank_div)
      with sticky=true;
}
&lt;/pre&gt;

&lt;p&gt;
Note: for all the rules in this ruleset that are selected by web pageviews, I've made the URL pattern as general as possible (&lt;code&gt;.*&lt;/code&gt;).  In a real ruleset, these would likely be much more restricted.  
&lt;/p&gt;



&lt;p&gt;
&lt;b&gt;Send the Form:&lt;/b&gt; This rule puts the form into the div we initialized in the last rule if the entity variable &lt;code&gt;ent:name&lt;/code&gt; is empty (we could probably add a primitive test that makes this easier).  The rule also sets a watcher on that form.  If this rule fires (i.e. the rule is selected &lt;em&gt;and&lt;/em&gt; the action premise is true) then this will be the last rule executed in this ruleset.
&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;
rule set_form is active {
  select when pageview &quot;.*&quot;
  pre {   
    a_form = &amp;lt;&amp;lt;
&amp;lt;form id=&quot;my_form&quot; onsubmit=&quot;return false&quot;&amp;gt;
&amp;lt;input type=&quot;text&quot; name=&quot;first&quot;/&amp;gt;
&amp;lt;input type=&quot;text&quot; name=&quot;last&quot;/&amp;gt;
&amp;lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&amp;gt;
&amp;lt;/form&amp;gt;
    &amp;gt;&amp;gt;;
  }
  if(not seen &quot;.*&quot; in ent:name)  then {
    append(&quot;#my_div&quot;, a_form);
    watch(&quot;#my_form&quot;, &quot;submit&quot;);
  }
  fired {
     last;
  }
}
&lt;/pre&gt;

&lt;p&gt;
When this rule fires, you get a notification box that looks like this:
&lt;/p&gt;
&lt;img src=&quot;http://photos.windley.com/gallery/d/12375-1/hello+world+form.png&quot; border=&quot;0&quot; hspace=&quot;3&quot; vspace=&quot;3&quot; align=&quot;center&quot; title=&quot;Hello World form&quot; alt=&quot;&quot; /&gt;


&lt;p&gt;
&lt;b&gt;Process the form:&lt;/b&gt; We need a rule to process the form.  This rule is selected when the form is submitted. The rule doesn't have an action (i.e. the action is &lt;code&gt;noop();&lt;/code&gt;).  All the real work is done in the postlude where we store the name in the entity variable &lt;code&gt;ent:name&lt;/code&gt; and then raise an explicit event that will cause another rule to be selected.  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
rule respond_submit is active {
  select when web submit &quot;#my_form&quot;
  pre {
     first = page:param(&quot;first&quot;);
     last = page:param(&quot;last&quot;);
  }
  noop();
  fired {
     mark ent:name with first + &quot; &quot; + last;
     raise explicit event got_name
  }
} 
&lt;/pre&gt;


&lt;p&gt;
&lt;b&gt;Use the data:&lt;/b&gt; The final rule uses the data in the entity variable to put the user's name in the div we placed in the initialization rule.  This rule has two selection conditions.  It can be selected on a pageview like the other rules or when an explicit event named &lt;code&gt;got_name&lt;/code&gt; is raised.  Remember that the previous rule raises that event when it's done.  The action replaces the contents of the div having the ID &lt;code&gt;my_div&lt;/code&gt; with a hello message that includes the name.  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
rule replace_with_name is active {
   select when explicit got_name 
            or web pageview &quot;.*&quot; 
   pre {
     name = current ent:name;
   }
   replace_inner(&quot;#my_div&quot;, &quot;Hello #{name}&quot;);
}
&lt;/pre&gt;

&lt;p&gt;
When this rule fires, the notification box looks like this:
&lt;/p&gt;
&lt;img src=&quot;http://photos.windley.com/gallery/d/12377-1/hello+world+notification.png&quot; border=&quot;0&quot; hspace=&quot;3&quot; vspace=&quot;3&quot; align=&quot;center&quot; title=&quot;hello box&quot; alt=&quot;hello box&quot; /&gt;

&lt;p&gt;
Whenever this ruleset is selected in the future the user will not see the form but simply see this box because the system remembers the name in the entity variable and has no need to ask for it again.  If the data gets cleared, then the user is prompted to enter it again.
&lt;/p&gt;

&lt;p&gt;
This ruleset also shows the use of explicit events.  If we don't raise the explicit event &lt;code&gt;got_name&lt;/code&gt; in the rule that stores the name, nothing will replace the contents of the notification box and show the user that the form submission is successful.  We could have done it in that rule, but then we'd have two rules replacing the contents with a message and if the message changed we'd have to make sure we changed it in two places.  This technique allows us to have one rule responsible for putting the hello message in the div.  We just fire it under two different circumstances.  
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Update:&lt;/b&gt; Here's a video that shows this ruleset in action:
&lt;/p&gt;


&lt;p&gt;Tags: 
&lt;a href=&quot;http://www.windley.com/tags/pds&quot; rel=&quot;tag, nofollow&quot;&gt;
pds&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/kynetx&quot; rel=&quot;tag, nofollow&quot;&gt;
kynetx&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/krl&quot; rel=&quot;tag, nofollow&quot;&gt;
krl&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/krl+examples&quot; rel=&quot;tag, nofollow&quot;&gt;
krl+examples&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Phil Windley</name>
			<uri>http://www.windley.com/</uri>
		</author>
		<source>
			<title type="html">Phil Windley's Technometria</title>
			<subtitle type="html">Organizations Get the IT They Deserve</subtitle>
			<link rel="self" href="http://www.windley.com/rss.xml"/>
			<id>http://www.windley.com/rss.xml</id>
			<updated>2010-07-28T23:40:12+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Quick Selenium RC Runner Script (updated)</title>
		<link href="http://www.ryanbyrd.net/techramble/2010/07/27/quick-selenium-rc-runner-script/"/>
		<id>http://www.ryanbyrd.net/techramble/?p=265</id>
		<updated>2010-07-27T22:31:10+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;pre class=&quot;php php&quot;&gt;&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'BADWEIGHT'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'GOODWEIGHT'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'BADMULTIPLIER'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'BADTIMEOUT'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'SLOWDEVIATIONS'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;span&gt;$filename&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;'C:\Program Files\ICW\home\nagiosremote\selenium.txt'&lt;/span&gt;;
&amp;nbsp;
&lt;span&gt;$execCommand&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;phpunit.bat selenium.php&amp;quot;&lt;/span&gt;;
&lt;span&gt;$trial&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;
&lt;span&gt;function&lt;/span&gt; logToFile&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$somecontent&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;a href=&quot;http://www.php.net/global&quot;&gt;&lt;span&gt;global&lt;/span&gt;&lt;/a&gt; &lt;span&gt;$filename&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/is_writable&quot;&gt;&lt;span&gt;is_writable&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$filename&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;$handle&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/fopen&quot;&gt;&lt;span&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$filename&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;'a'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
		&lt;span&gt;&amp;#123;&lt;/span&gt;
			 &lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span&gt;&amp;quot;Cannot open file ($filename)&amp;quot;&lt;/span&gt;;
			 &lt;a href=&quot;http://www.php.net/exit&quot;&gt;&lt;span&gt;exit&lt;/span&gt;&lt;/a&gt;;
		&lt;span&gt;&amp;#125;&lt;/span&gt;
		&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/fwrite&quot;&gt;&lt;span&gt;fwrite&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$handle&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;$somecontent&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;===&lt;/span&gt; &lt;span&gt;FALSE&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
		&lt;span&gt;&amp;#123;&lt;/span&gt;
			&lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span&gt;&amp;quot;Cannot write to file ($filename)&amp;quot;&lt;/span&gt;;
			&lt;a href=&quot;http://www.php.net/exit&quot;&gt;&lt;span&gt;exit&lt;/span&gt;&lt;/a&gt;;
		&lt;span&gt;&amp;#125;&lt;/span&gt;
		&lt;a href=&quot;http://www.php.net/fclose&quot;&gt;&lt;span&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$handle&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;else&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span&gt;&amp;quot;The file $filename is not writable&amp;quot;&lt;/span&gt;;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;function&lt;/span&gt; sd_square&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;$mean&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt; &lt;span&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/pow&quot;&gt;&lt;span&gt;pow&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$x&lt;/span&gt; &lt;span&gt;-&lt;/span&gt; &lt;span&gt;$mean&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;; &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;function&lt;/span&gt; sd&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$array&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
   &lt;span&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/sqrt&quot;&gt;&lt;span&gt;sqrt&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_sum&quot;&gt;&lt;span&gt;array_sum&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_map&quot;&gt;&lt;span&gt;array_map&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;sd_square&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;$array&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_fill&quot;&gt;&lt;span&gt;array_fill&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$array&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_sum&quot;&gt;&lt;span&gt;array_sum&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$array&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;/&lt;/span&gt; &lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$array&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;/&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$array&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;function&lt;/span&gt; getStats&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$trials&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$trials&lt;/span&gt; &lt;span&gt;as&lt;/span&gt; &lt;span&gt;$trial&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$sum&lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt;$trial&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'time'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;
		&lt;span&gt;$timeArray&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$trial&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'time'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;$counter&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$trials&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;?&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$trials&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;;
	&lt;span&gt;$average&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/sprintf&quot;&gt;&lt;span&gt;sprintf&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;%.2f&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$sum&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$trials&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$trials&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$stdDev&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/sprintf&quot;&gt;&lt;span&gt;sprintf&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;%.2f&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;sd&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$timeArray&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;else&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$stdDev&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0.00&lt;/span&gt;;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$average&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$stdDev&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;function&lt;/span&gt; stripOutliers&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$times&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;$noOutlierArray&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$avg&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$stDev&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;getStats&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$times&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$times&lt;/span&gt; &lt;span&gt;as&lt;/span&gt; &lt;span&gt;$lineItem&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$lineItem&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'time'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$avg&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;$stDev&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
		&lt;span&gt;&amp;#123;&lt;/span&gt;
			&lt;span&gt;$noOutlierArray&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'time'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$lineItem&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'time'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;
		&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;return&lt;/span&gt; &lt;span&gt;$noOutlierArray&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;
&lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;
&lt;span&gt;while&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;a href=&quot;http://www.php.net/exec&quot;&gt;&lt;span&gt;exec&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$execCommand&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;$time&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/intval&quot;&gt;&lt;span&gt;intval&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/substr&quot;&gt;&lt;span&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;; &lt;span&gt;//parse seconds&lt;/span&gt;
	&lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$hud&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/split&quot;&gt;&lt;span&gt;split&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;' '&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;; &lt;span&gt;//parse status&lt;/span&gt;
	&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;a href=&quot;http://www.php.net/implode&quot;&gt;&lt;span&gt;implode&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$output&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
		&lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;BADWEIGHT;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;else&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;-=&lt;/span&gt;GOODWEIGHT;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;$resultArray&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;$trial&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'time'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$time&lt;/span&gt;;
	&lt;span&gt;$resultArray&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;$trial&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;'status'&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;;
&amp;nbsp;
	&lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$avg&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$stDev&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;getStats&lt;span&gt;&amp;#40;&lt;/span&gt;stripOutliers&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$resultArray&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$time&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$avg&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;SLOWDEVIATIONS&lt;span&gt;*&lt;/span&gt;&lt;span&gt;$stDev&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;?&lt;span&gt;&amp;quot;SLOW&amp;quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;'WARNING! Bad Status '&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;'SLOW'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;BADWEIGHT;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;else&lt;/span&gt;
	&lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;-=&lt;/span&gt;GOODWEIGHT;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;BADWEIGHT&lt;span&gt;*&lt;/span&gt;BADMULTIPLIER&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;'ERROR! TOO MANY SLOW TRANSACTIONS'&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$statCnt&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;BADWEIGHT&lt;span&gt;*&lt;/span&gt;BADMULTIPLIER&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;'ERROR! TOO MANY TRANSACTION FAILURES'&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;'ERROR! TOO MANY TRANSACTION FAILURES'&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;;&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;'ERROR! TOO MANY SLOW TRANSACTIONS'&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;;&lt;span&gt;$flagCnt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;;&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;$lineItem&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;${trial},&amp;quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'d/m/Y H:i:s'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;&amp;quot;,$time sec,$status,Avg:$avg,StdDev:$stDev,$FLAG,$flagCnt,$statCnt&lt;span&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
	&lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$lineItem&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	logToFile&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$lineItem&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$FLAG&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;||&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$status&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt;'OK'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/sleep&quot;&gt;&lt;span&gt;sleep&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;BADTIMEOUT&lt;span&gt;&amp;#41;&lt;/span&gt;;
	&lt;span&gt;$trial&lt;/span&gt;++;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;which will produce a text file like this:&lt;/p&gt;
&lt;pre class=&quot;bash bash&quot;&gt;C:\xampp\php&lt;span&gt;&amp;gt;&lt;/span&gt;php runTests.php
0,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:06:01,&lt;span&gt;34&lt;/span&gt; sec,OK,Avg:&lt;span&gt;34.00&lt;/span&gt;,StdDev:0,OK,0,0
&lt;span&gt;1&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:06:&lt;span&gt;20&lt;/span&gt;,&lt;span&gt;19&lt;/span&gt; sec,OK,Avg:&lt;span&gt;26.50&lt;/span&gt;,StdDev:&lt;span&gt;10.61&lt;/span&gt;,OK,0,0
&lt;span&gt;2&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:06:&lt;span&gt;39&lt;/span&gt;,&lt;span&gt;19&lt;/span&gt; sec,OK,Avg:&lt;span&gt;19.00&lt;/span&gt;,StdDev:&lt;span&gt;0.00&lt;/span&gt;,OK,0,0
&lt;span&gt;3&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:06:&lt;span&gt;58&lt;/span&gt;,&lt;span&gt;18&lt;/span&gt; sec,OK,Avg:&lt;span&gt;18.67&lt;/span&gt;,StdDev:&lt;span&gt;0.58&lt;/span&gt;,OK,0,0
&lt;span&gt;4&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:07:&lt;span&gt;17&lt;/span&gt;,&lt;span&gt;18&lt;/span&gt; sec,OK,Avg:&lt;span&gt;18.50&lt;/span&gt;,StdDev:&lt;span&gt;0.58&lt;/span&gt;,OK,0,0
&lt;span&gt;5&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:07:&lt;span&gt;36&lt;/span&gt;,&lt;span&gt;19&lt;/span&gt; sec,OK,Avg:&lt;span&gt;18.60&lt;/span&gt;,StdDev:&lt;span&gt;0.55&lt;/span&gt;,OK,0,0
&lt;span&gt;6&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:07:&lt;span&gt;55&lt;/span&gt;,&lt;span&gt;18&lt;/span&gt; sec,OK,Avg:&lt;span&gt;18.50&lt;/span&gt;,StdDev:&lt;span&gt;0.55&lt;/span&gt;,OK,0,0
&lt;span&gt;7&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:08:&lt;span&gt;14&lt;/span&gt;,&lt;span&gt;18&lt;/span&gt; sec,OK,Avg:&lt;span&gt;18.43&lt;/span&gt;,StdDev:&lt;span&gt;0.53&lt;/span&gt;,OK,0,0
&lt;span&gt;8&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:08:&lt;span&gt;38&lt;/span&gt;,&lt;span&gt;24&lt;/span&gt; sec,OK,Avg:&lt;span&gt;19.12&lt;/span&gt;,StdDev:&lt;span&gt;2.03&lt;/span&gt;,SLOW,&lt;span&gt;10&lt;/span&gt;,0
&lt;span&gt;9&lt;/span&gt;,&lt;span&gt;29&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;07&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2010&lt;/span&gt; &lt;span&gt;12&lt;/span&gt;:09:&lt;span&gt;12&lt;/span&gt;,&lt;span&gt;24&lt;/span&gt; sec,OK,Avg:&lt;span&gt;19.67&lt;/span&gt;,StdDev:&lt;span&gt;2.50&lt;/span&gt;,OK,&lt;span&gt;9&lt;/span&gt;,0&lt;/pre&gt;</content>
		<author>
			<name>Ryan Byrd</name>
			<uri>http://www.ryanbyrd.net/techramble</uri>
		</author>
		<source>
			<title type="html">Ryan Byrd's Tech Ramblings</title>
			<subtitle type="html">The Second Best Blog in Utah</subtitle>
			<link rel="self" href="http://www.ryanbyrd.net/techramble/feed/"/>
			<id>http://www.ryanbyrd.net/techramble/feed/</id>
			<updated>2010-07-29T17:21:26+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">UTOSC 2010: Call for Papers ends Sunday, August 1</title>
		<link href="http://sexysexypenguins.com/2010/07/26/utosc-2010-call-for-papers-ends-sunday-august-1/"/>
		<id>http://sexysexypenguins.com/?p=737</id>
		<updated>2010-07-27T04:42:37+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://herlo.fedorapeople.org/art/clintsavage.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;Just a quick reminder to all of you out there who might be considering submitting a paper for the &lt;a href=&quot;http://utosc.com&quot;&gt;Utah Open Source Conference&lt;/a&gt; coming up this October 7-9.  The &lt;a href=&quot;http://utosc.com/speaker/papers/&quot;&gt;call for papers&lt;/a&gt; is coming to a close on August 1 so hurry up and get it submitted :)  I&amp;#8217;m planning on submitting a paper for &lt;a href=&quot;http://fosslc.org/drupal/freeseer&quot;&gt;FreeSeer&lt;/a&gt; and will likely also present on the State of UTOS at the conference.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Herlo&lt;/p&gt;</content>
		<author>
			<name>Clint Savage</name>
			<uri>http://sexysexypenguins.com</uri>
		</author>
		<source>
			<title type="html">Sexy Sexy Penguins » Tech</title>
			<subtitle type="html">I love the smell of &quot;Free Software&quot; in the morning</subtitle>
			<link rel="self" href="http://sexysexypenguins.com/category/tech/feed/"/>
			<id>http://sexysexypenguins.com/category/tech/feed/</id>
			<updated>2010-07-27T07:41:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Summer Of Pie: Sour Cream Lemon</title>
		<link href="http://www.zmonkey.org/blog/node/208"/>
		<id>http://www.zmonkey.org/208 at http://www.zmonkey.org/blog</id>
		<updated>2010-07-27T04:00:03+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://www.zmonkey.org/~tensai/hackergotchi.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;&lt;img src=&quot;http://www.zmonkey.org/blog/files/208/lemonpie_t.jpg&quot; align=&quot;right&quot; /&gt;You might have been wondering where all the pies went. Don't fear as they are not gone for good. The memory card with all the pictures on it went on vacation to the coast (it took my wife and kids too), and with everybody gone I didn't feel up to eating an entire pie by myself. But now that they've returned, I'm back in full swing.&lt;/p&gt;
&lt;p&gt;Just before they left I made this delicious pie. It was one of the pies listed on Shari's menu and it sounded intriguing, since sour cream isn't typically a dessert food. The recipe is fuzzy since it's been a while. Essentially what I made was a lemon curd with the addition of sour cream. I took the curd off the heat too soon and it didn't set up enough. Gun shy about curdling it I suppose.&lt;/p&gt;
&lt;p&gt;The flavor was over-the-top lemony. Using fresh lemons helped there, I'm sure. It could have used a good bit more sugar though, as it was quite sour as well. The kids were not quite as thrilled by this one; the oldest even turned down a second piece. Just not in line with their sweet teeth, but I did enjoy it and my wife loved it. To each his own.&lt;img src=&quot;http://www.zmonkey.org/zmonkey.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.zmonkey.org/blog/node/208&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Corey Edwards</name>
			<uri>http://www.zmonkey.org/blog</uri>
		</author>
		<source>
			<title type="html">zmonkey.org - Those crazy monkeys</title>
			<subtitle type="html">We're the kind of monkeys that don't throw feces ... very often</subtitle>
			<link rel="self" href="http://www.zmonkey.org/blog/node/feed"/>
			<id>http://www.zmonkey.org/blog/node/feed</id>
			<updated>2010-07-27T04:40:11+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Changing the News with Kynetx: Utah Company WILL Revolutionize Internet Use</title>
		<link href="http://www.windley.com/archives/2010/07/changing_the_news_with_kynetx_utah_company_will_revolutionize_internet_use.shtml"/>
		<id>http://www.windley.com/archives/2010/07/changing_the_news_with_kynetx_utah_company_will_revolutionize_internet_use.shtml</id>
		<updated>2010-07-26T19:08:25+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://photos.windley.com/albums/me/0612_15_014.thumb.jpg&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;!-- title: 
Changing the News with Kynetx: Utah Company WILL Revolutionize Internet Use
--&gt;
&lt;!-- category: newsletter --&gt;
&lt;!-- keywords: 
kynetx, press
--&gt;
&lt;p&gt;
Yesterday Tom Harvey of the Salt Lake Tribune had a great article on Kynetx in the Money section (see &lt;a href=&quot;http://www.sltrib.com/sltrib/money/49923735-79/kynetx-company-platform-users.html.csp&quot;&gt;Utah company looks to revolutionize Internet use&lt;/a&gt;).  I loved the article, but what I loved even more was what Casey Holgado (&lt;a href=&quot;http://twitter.com/caseyholgado&quot;&gt;@caseyholgado&lt;/a&gt;), one of our summer interns, did with it.  Here's the headline for the online article as it appeared:
&lt;/p&gt;
&lt;img src=&quot;http://photos.windley.com/gallery/d/12359-1/SLTrib+before.png&quot; width=&quot;420px&quot; border=&quot;0&quot; hspace=&quot;3&quot; vspace=&quot;3&quot; align=&quot;center&quot; title=&quot;SLTrib article before the application of Kynetx&quot; alt=&quot;SLTrib article before the application of Kynetx&quot; /&gt;


&lt;p&gt;
Casey wrote a quick Kynetx app that changed the headline to read like this:
&lt;/p&gt;

&lt;img src=&quot;http://photos.windley.com/gallery/d/12362-1/SLTrib+after.png&quot; width=&quot;420px&quot; border=&quot;0&quot; hspace=&quot;3&quot; vspace=&quot;3&quot; align=&quot;center&quot; title=&quot;SLTrib article after the application of Kynetx&quot; alt=&quot;SLTrib article after the application of Kynetx&quot; /&gt;

&lt;p&gt;
This to me embodies the spirit of Kynetx: &quot;the Web, your way.&quot;  We didn't change the text on the server, of course, only the headline for people who have the app installed in their browser.  But that's the point: if you want this headline to read our way, then you install the app.  Everyone else gets the default view.  Welcome to Kynetx, where the user is in control.  
&lt;/p&gt;
&lt;p&gt;Tags: 
&lt;a href=&quot;http://www.windley.com/tags/kynetx&quot; rel=&quot;tag, nofollow&quot;&gt;
kynetx&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/press&quot; rel=&quot;tag, nofollow&quot;&gt;
press&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Phil Windley</name>
			<uri>http://www.windley.com/</uri>
		</author>
		<source>
			<title type="html">Phil Windley's Technometria</title>
			<subtitle type="html">Organizations Get the IT They Deserve</subtitle>
			<link rel="self" href="http://www.windley.com/rss.xml"/>
			<id>http://www.windley.com/rss.xml</id>
			<updated>2010-07-28T23:40:12+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Photos from Bountiful Fireworks</title>
		<link href="http://undertakingyou.com/personal/photos-from-bountiful-fireworks/"/>
		<id>http://undertakingyou.com/?p=319</id>
		<updated>2010-07-24T17:19:27+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Below are some photos that I took with my Canon Digital Rebel XTi prior to and during the fireworks on the 23rd.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3313.jpg&quot;&gt;&lt;img class=&quot;alignnone size-large wp-image-320&quot; title=&quot;Temple at Sunset&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3313-1024x682.jpg&quot; alt=&quot;Temple at Sunset&quot; width=&quot;717&quot; height=&quot;477&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3314.jpg&quot;&gt;&lt;img class=&quot;alignnone size-large wp-image-321&quot; title=&quot;Sunset over Bountiful&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3314-1024x682.jpg&quot; alt=&quot;Sunset over Bountiful&quot; width=&quot;717&quot; height=&quot;477&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3316.jpg&quot;&gt;&lt;img class=&quot;alignnone size-large wp-image-322&quot; title=&quot;Flag and Sunset&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3316-1024x682.jpg&quot; alt=&quot;Flag and Sunset&quot; width=&quot;717&quot; height=&quot;477&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3316.jpg&quot;&gt;&lt;a href=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3345.jpg&quot;&gt;&lt;img class=&quot;alignnone size-large wp-image-323&quot; title=&quot;Fireworks&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/IMG_3345-1024x682.jpg&quot; alt=&quot;Fireworks&quot; width=&quot;717&quot; height=&quot;477&quot; /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The other photos all ended up blurry because it was dark. But these were pretty good.&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">FISL, Day 2</title>
		<link href="http://www.jaredsmith.net/2010/07/24/fisl-day-2/"/>
		<id>http://www.jaredsmith.net/?p=131</id>
		<updated>2010-07-24T15:41:31+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://jsmith.fedorapeople.org/Images/Jared_Smith.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Day two of my trip to FISL (Friday) started out with me waking up a bit late and scrambling to get ready on time.  Rafael kindly picked several of us up at the hotel and drove us to the conference.  I spent the morning talking with people both in the Fedora booth and in several of the other booths around the show.  I also spent some time in a press interview with Linux Magazine.  For lunch, we ate at the buffet and I got to experience the famous banana sushi first hand.
&lt;a href=&quot;http://www.jaredsmith.net/2010/07/24/fisl-day-2/dscn0737/&quot; title=&quot;Fedora Banner&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/DSCN0737-e1279989012967-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;Fedora Banner&quot; title=&quot;Fedora Banner&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.jaredsmith.net/2010/07/24/fisl-day-2/dscn0744_1/&quot; title=&quot;Dennis Gilmore&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/DSCN0744_1-e1279987186543-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;Dennis Gilmore&quot; title=&quot;Dennis Gilmore&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
In the afternoon, I cheered Dennis Gilmore on as he gave a presentation on RPM packaging in Portuguese.  He doesn&amp;#8217;t speak much Portuguese (yet!), but he was brave enough to translate his talk into Portuguese and read it as best he could.  After Dennis did his talk, I ran over to the large presentation room for my presentation.  I talked about how Red Hat and Fedora work together, how Fedora makes a good upstream for RHEL, and how Fedora works with upstream communities.  Several hundred people attended the presentation, and I thought it was well received.  &lt;/p&gt;
&lt;p&gt;After the presentation, I ran into a Brazilian friend of mine doing VoIP work here in Brazil.  We chatted for an hour or so about various topics including Fedora, VoIP, and cultural differences between Portuguese-speaking and Spanish-speaking countries in Latin American.  After another stint at helping out in the booth, we all ran back to the conference hall for a great presentation on SELinux from Douglas and Marcelo from Red Hat.  By the time their presentation was done, it was 9:00pm and we were all hungry.  Luckily, some of the Fedora folks had organized a pizza party, so we weren&amp;#8217;t hungry for long!&lt;/p&gt;</content>
		<author>
			<name>Jared Smith</name>
			<uri>http://www.jaredsmith.net</uri>
		</author>
		<source>
			<title type="html">Jared Smith</title>
			<subtitle type="html">Thoughts of a Traveling Geek</subtitle>
			<link rel="self" href="http://www.jaredsmith.name/feed/"/>
			<id>http://www.jaredsmith.name/feed/</id>
			<updated>2010-07-24T15:41:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">FISL, Day 1</title>
		<link href="http://www.jaredsmith.net/2010/07/23/fisl-day-1/"/>
		<id>http://www.jaredsmith.net/?p=124</id>
		<updated>2010-07-24T00:55:55+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://jsmith.fedorapeople.org/Images/Jared_Smith.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Day one of the FISL conference (at least for me, as I arrived on Thursday) was mostly spent in airplanes.  My flights took me from Dulles to Orlando to São Paulo to Porto Alegre.  (Nothing is better than having a flight attendant wake you up at 3:00am to feed you and airline dinner, right?)  When I landed in Porto Alegre, Leo and Rafael were kind enough to pick me up and drive me to the FISL conference.  I was impressed with the size of the conference and the variety of the booths.&lt;/p&gt;
&lt;div id=&quot;attachment_127&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/IMG_3934.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-127&quot; title=&quot;The Fedora booth at FISL&quot; src=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/IMG_3934-300x200.jpg&quot; alt=&quot;Fedora booth&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The Fedora booth at FISL&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;I have to admit &amp;#8212; I was a bit stunned when I saw the Fedora booth.  It looked absolutely gorgeous!  I had no idea when I walked in whether we were sharing Red Hat&amp;#8217;s booth or would have our own; little did I know that we&amp;#8217;d have the best looking booth at the show.  The location of the booth was perfect &amp;#8212; we were right on the corner where people would pass by on their way to the big lecture hall.&lt;/p&gt;
&lt;p&gt;After shaking hands with the Fedora ambassadors and volunteers and saying hello to the folks in the Red Hat booth, I gave a quick impromptu speech (in Spanish, by request) to the crowd that had gathered around our booth, and then sat back and watched as Toshio gave a great talk on packaging RPMs for Fedora, with a lot of additional explanation in Portuguese from Rafael and Leo.  (We had several other presentations right there in the booth as well over the course of the day.)  At that point, we had about fifty people gathered around the booth, so we handed out media and stickers and helped answer questions.&lt;/p&gt;
&lt;div id=&quot;attachment_128&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/IMG_4022.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-128&quot; title=&quot;FISL booth&quot; src=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/IMG_4022-300x200.jpg&quot; alt=&quot;Fedora booth at FISL&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Crowd around the Fedora booth&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;After the show wound down for the day, we went to dinner at a traditional Brazilian churrascaria. The food was delicious &amp;#8212; I ate too much food, and forgot how much I like the Brazilian soft drink called Guaraná. It was the perfect way to end the day.  On the way back to the hotel, I got to see a bit of the city of Porto Alegre.&lt;/p&gt;</content>
		<author>
			<name>Jared Smith</name>
			<uri>http://www.jaredsmith.net</uri>
		</author>
		<source>
			<title type="html">Jared Smith</title>
			<subtitle type="html">Thoughts of a Traveling Geek</subtitle>
			<link rel="self" href="http://www.jaredsmith.name/feed/"/>
			<id>http://www.jaredsmith.name/feed/</id>
			<updated>2010-07-24T15:41:31+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html"></title>
		<link href="http://illumra.blogspot.com/2010/07/energy-harvesting-bandwagon-continues.html"/>
		<id>tag:blogger.com,1999:blog-7901868747601268497.post-8909076311976379190</id>
		<updated>2010-07-23T16:36:56+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 The energy harvesting bandwagon continues.  It's good to see so many new applications for harvesting the energy in the world around us and saving just a few more batteries from the landfill.  &lt;a href=&quot;http://www.energyharvestingjournal.com/articles/vibration-harvesting-batteries-00002460.asp&quot;&gt;These replacements for AA and AAA batteries from Epson&lt;/a&gt; caught my attention.  Mechanical energy harvesting at it's simplest.  Just give your remote control a good shake before you press the buttons...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7901868747601268497-8909076311976379190?l=illumra.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jeremy</name>
			<email>noreply@blogger.com</email>
			<uri>http://illumra.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Illumra Green Systems</title>
			<link rel="self" href="http://illumra.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7901868747601268497</id>
			<updated>2010-07-27T23:20:40+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Alfresco: Max Version Policy</title>
		<link href="http://feeds.ottleys.net/~r/jaredottley/~3/C0dTyCwY9aY/alfresco-max-version-policy"/>
		<id>http://jared.ottleys.net/?p=352</id>
		<updated>2010-07-23T06:56:13+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;As part of a POC for a customer I was asked to write an extension that allowed them to control the total number of versions allowed per versioned content. (Download links at bottom of page)&lt;/p&gt;
&lt;p&gt;Alfresco has a strong versioning story, that gives you the ability to version any content stored in the repository, no matter what the file type.  Versions are full files and not diffs of the files.  Alfresco gives you the ability to have both major and minor versions of content.  Versions can be created/updated by checkout/checkin, by rule, through any interface or through script/APIs.&lt;/p&gt;
&lt;p&gt;Alfresco also provides the ability to apply behaviors / policies to content/metadata within the repository.  You can think of these as event listeners, that allow you to take custom actions based on what is happening within the repository.  &lt;a href=&quot;http://ecmarchitect.com/&quot;&gt;Jeff Potts&lt;/a&gt; has written an excellent &lt;a href=&quot;http://ecmarchitect.com/images/articles/alfresco-behavior/behavior-article.pdf&quot;&gt;tutorial on creating behaviors&lt;/a&gt;, with examples for both Java and javascript. (Other resources include: )&lt;/p&gt;
&lt;p&gt;There are 4 versioning policies that we can work with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;beforeCreateVersion&lt;/li&gt;
&lt;li&gt;afterCreateVersion&lt;/li&gt;
&lt;li&gt;onCreateVersion&lt;/li&gt;
&lt;li&gt;calculateVersionLabel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(For an &lt;a href=&quot;http://blogs.alfresco.com/wp/pmonks/2009/11/03/version-baselining/&quot;&gt;example of a calculateVersionLabel policy&lt;/a&gt; look at this post and the accompanying code by &lt;a href=&quot;http://blogs.alfresco.com/wp/pmonks/&quot;&gt;Peter&lt;/a&gt; &lt;a href=&quot;http://twitter.com/pmonks&quot;&gt;Monks&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;For this policy we are going to use onCreateVersion:  when a version is created we want to remove any version that puts us past the max version value.&lt;/p&gt;
&lt;p&gt;You start by implementing the &lt;a href=&quot;http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/version/VersionServicePolicies.OnCreateVersionPolicy.html&quot;&gt;policy interface&lt;/a&gt; for the policy you want to apply.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;public class MaxVersionPolicy implements OnCreateVersionPolicy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Adding the method implemented by the interface&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;public void onCreateVersion(
				QName classRef,
				NodeRef versionableNode,
				Map versionProperties,
				PolicyScope nodeDetails)&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We also need to &lt;a href=&quot;http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/policy/PolicyComponent.html&quot;&gt;bind&lt;/a&gt; the &lt;a href=&quot;http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/policy/JavaBehaviour.html&quot;&gt;behavior&lt;/a&gt; to the policy and we need to do this when the class is loaded by the springframework.  We wrap this registration in an init() method&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;	public void init() {
		this.onCreateVersion = new JavaBehaviour(this, &quot;onCreateVersion&quot;,
				NotificationFrequency.TRANSACTION_COMMIT);

		this.policyComponent.bindClassBehaviour(QName.createQName(
				NamespaceService.ALFRESCO_URI, &quot;onCreateVersion&quot;),
				MaxVersionPolicy.class, this.onCreateVersion);
	}&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The init method is then called when spring loads the bean&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;		&amp;lt;bean id=&quot;maxVersion&quot;
                      class=&quot;org.alfresco.extension.versioning.MaxVersionPolicy&quot;
                      init-method=&quot;init&quot;&amp;gt;
			&amp;lt;property name=&quot;policyComponent&quot;&amp;gt;
				&amp;lt;ref bean=&quot;policyComponent&quot; /&amp;gt;
			&amp;lt;/property&amp;gt;
			&amp;lt;property name=&quot;versionService&quot;&amp;gt;
				&amp;lt;ref bean=&quot;versionService&quot; /&amp;gt;
			&amp;lt;/property&amp;gt;
			&amp;lt;!-- The max number of versions per versioned node --&amp;gt;
			&amp;lt;property name=&quot;maxVersions&quot;&amp;gt;
				&amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;
			&amp;lt;/property&amp;gt;
		&amp;lt;/bean&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now to the meat of the policy, enforcing the removal of versions.&lt;/p&gt;
&lt;p&gt;First we we have our maxVersion property.  This is set in the springbean (see above) and read when the bean is loaded.  (You can overwrite the default value by copying the maxversionpolicy-context.xml file into the extensions directory and changing the value of the maxVersion property)&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;	public void setMaxVersions(int maxVersions) {
		this.maxVersions = maxVersions;
	}&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Next we want to remove any version that puts us over the max&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt; 	@Override
	public void onCreateVersion(QName classRef, NodeRef nodeRef,
			Map versionProperties, PolicyScope nodeDetails) {

		VersionHistory versionHistory = versionService
				.getVersionHistory(nodeRef);

		// If the current number of versions in the VersionHistory is greater
		// than the maxVersions limit, remove the root/least recent version
		if (versionHistory.getAllVersions().size() &amp;gt; maxVersions) {
			logger.debug(&quot;Removing Version: &quot;
					+ versionHistory.getRootVersion().getVersionLabel());
			versionService.deleteVersion(nodeRef, versionHistory
					.getRootVersion());
		}
	}&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We first get the &lt;a href=&quot;http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/cmr/version/VersionHistory.html&quot;&gt;versionHistory&lt;/a&gt; for the node and check it against the maxVersion property. If we have more versions than the limit we delete the &lt;a href=&quot;http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/cmr/version/VersionService.html&quot;&gt;least recent&lt;/a&gt; &lt;a href=&quot;http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/cmr/version/Version.html&quot;&gt;version&lt;/a&gt; from the version history.&lt;/p&gt;
&lt;div id=&quot;attachment_363&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img class=&quot;size-full wp-image-363&quot; src=&quot;http://jared.ottleys.net/files/2010/07/Screen-shot-2010-07-23-at-12.45.06-AM1.png&quot; alt=&quot;10 Version Limt&quot; width=&quot;793&quot; height=&quot;292&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Notice: 10 total versions; least recent version is 1.1; no pagination!&lt;/p&gt;&lt;/div&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Why are you using an if statement, instead of looping through all of the versions.  I have a few (many) more versions over the limit I want to impose?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; A while statement would be more efficient in removing everything above the limit, but the versionHistory object isn&amp;#8217;t being updated with each delete in a loop (I tried) until the policy has completely run.  Luckily, as you will find as you implement custom behaviors, they get called a lot!  So while a single update will result in a single version added, you will actually see that the behavior is called multiple times for that one action (In testing I saw the behavior being called a minimum of 7 times).  While you might not clear out every version over the limit with a single update, you will see a good many of them removed.  If you want to bring every down to the limit you could create a &amp;#8220;cleaner&amp;#8221; extension that could go in and remove all of the versions over the limit (this would be a very intensive/costly operation depending on the amount of content in your repository and the size of your version history  &amp;#8211;  There several different strategies for this).  You could then use this extension to enforce that limit.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Does this affect all versioned content in the repository?  What if I only want it to work on some content?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Yes, by default this policy is being applied to all versioned content, but you could add in checks to look for a specific aspect, parent space name, property, etc. before passing through the delete code.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Compliance regulations/laws don&amp;#8217;t allow me to delete the versions, but require me keep them for X years. How can I archive versions?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; There are probably several different ways to handle this.  One way could be to use Alfresco&amp;#8217;s &lt;a href=&quot;http://wiki.alfresco.com/wiki/Content_Store_Selector&quot;&gt;content store selector&lt;/a&gt;.  The content store selector allows you to configure multiple underlying filesystem locations for your content.  To the end user all of the content appears to come from the same location, while the content itself lives in different disc systems. The idea would be to set up a secondary store that would act as the archive.  When your trigger is reached, be it a property (status [property or aspect], date, etc.), a version number/count, etc. have the policy move the content to the archive space structure (The archive will need to have the cm:storeSelector aspect set to mark it to use the secondary store). Because we are working from the least recent version, the 1.0 version of the content, it becomes the first version in the archive, each subsequent version, is added as a version for the content, version numbers are then maintained in the archive. I would also add an aspect to the original node that contains a pointer/aspect to the archived version, for reference. Then delete the least recent version of the original versioned node.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Google Code Project: &lt;a href=&quot;http://code.google.com/p/alfresco-maxversion-policy/&quot;&gt;http://code.google.com/p/alfresco-maxversion-policy/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Download &lt;a href=&quot;http://code.google.com/p/alfresco-maxversion-policy/downloads/detail?name=alfresco-maxversion-policy.amp&quot;&gt;Alfresco Max Version Policy AMP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tested on Alfresco (Enterprise) 3.2 &amp;#8211; 3.3.1&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/jaredottley/~4/C0dTyCwY9aY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jared Ottley</name>
			<uri>http://jared.ottleys.net</uri>
		</author>
		<source>
			<title type="html">Jared Ottley</title>
			<subtitle type="html">Technology | Fatherhood | Insanity</subtitle>
			<link rel="self" href="http://jared.ottleys.net/feed"/>
			<id>http://jared.ottleys.net/feed</id>
			<updated>2010-07-27T05:20:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">jQuery: Novice to Ninja</title>
		<link href="http://blog.utahcon.com/books/jquery-novice-to-ninja"/>
		<id>http://blog.utahcon.com/?p=537</id>
		<updated>2010-07-22T23:55:25+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://s3.amazonaws.com/twitter_production/profile_images/54578886/me_bigger.jpg&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780980576856&quot;&gt;&lt;img class=&quot;alignleft&quot; title=&quot;jQuery: Novice to Ninja&quot; src=&quot;http://covers.oreilly.com/images/9780980576856/cat.gif&quot; alt=&quot;&quot; width=&quot;180&quot; height=&quot;232&quot; /&gt;&lt;/a&gt; I was recently given the opportunity to fly to Florida and hire people to clean up oil from the BP spill. Given that I had some long flights (I live in Salt Lake City, UT) I picked up a Nook from Barnes and Noble and had on my computer a copy of jQuery: Novice to Ninja. What better way to spend my flight time than reading a jQuery book! So I dug in.&lt;/p&gt;
&lt;p&gt;I have been using jQuery both professionally and personally for about a year now but this book still brought a lot to the table.&lt;/p&gt;
&lt;p&gt;Earle Castedine and Craig Sharkie have a great sense of humor, and obviously know their way around jQuery, CSS, HTML and the likes. The book uses some real world examples of creating image galleries and user interfaces. They break down the jQuery code to it's basic forms, and then explain why things work the way they do. They don't get too deep into Javascript except to note that jQuery is nothing more than a fancy framework on top of Javascript and uses Javascript for everything! I thought it particularly neat when they would show the &quot;hard&quot; way to do things, then the better way to do them, and then finally a plugin that made all the work you had just done seem useless, but it isn't useless because you now understand how the plugin works better than if you had just slapped it in place in the beginning.&lt;/p&gt;
&lt;p&gt;The book is quite deep about animations, AJAX actions, DOM manipulation and the sort. Even if you know Javascript and you have been using jQuery there is something in here that will make you go &quot;ah ha!&quot;.&lt;/p&gt;
&lt;p&gt;To the folks over at SitePoint (an O'reilly company) good work!&lt;/p&gt;</content>
		<author>
			<name>Adam Barrett</name>
			<uri>http://blog.utahcon.com</uri>
		</author>
		<source>
			<title type="html">Utahcon.com</title>
			<link rel="self" href="http://blog.utahcon.com/feed"/>
			<id>http://blog.utahcon.com/feed</id>
			<updated>2010-07-23T00:00:34+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">How Different Groups Spend Their Day - Interactive Graphic - NYTimes.com</title>
		<link href="http://kaelbot.blogspot.com/2010/07/how-different-groups-spend-their-day.html"/>
		<id>tag:blogger.com,1999:blog-4877234600441129506.post-4662894652792117479</id>
		<updated>2010-07-22T22:23:00+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 This graph is neat-o&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.nytimes.com/interactive/2009/07/31/business/20080801-metrics-graphic.html&quot;&gt;How Different Groups Spend Their Day - Interactive Graphic - NYTimes.com&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4877234600441129506-4662894652792117479?l=kaelbot.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Kael</name>
			<email>noreply@blogger.com</email>
			<uri>http://kaelbot.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Kaelbot Central</title>
			<subtitle type="html">Obey The Otter</subtitle>
			<link rel="self" href="http://kaelbot.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-4877234600441129506</id>
			<updated>2010-07-22T22:40:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">How to get a fast response from me</title>
		<link href="http://shane.willowrise.com/archives/how-to-get-a-fast-response-from-me/"/>
		<id>http://shane.willowrise.com/?p=401</id>
		<updated>2010-07-22T17:58:59+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;I&amp;#8217;m swamped with work.  I can&amp;#8217;t yet talk much about the work I&amp;#8217;ve been doing until we go public, but it&amp;#8217;s a cool project, although its coolness may not be immediately obvious at first. &lt;img src=&quot;http://shane.willowrise.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Meanwhile, I have been rather slow to answer some emails.  Here is what you need to do to get a fast email response from me: present me a viable option that allows someone other than me to do the work.  For example, if you want one of my open source projects changed, the best thing to suggest is that you will do the work and all I have to do is review a patch.  (Ideally, include the unified diff in the email so I can review instantly.)&lt;/p&gt;</content>
		<author>
			<name>Shane Hathaway</name>
			<uri>http://shane.willowrise.com</uri>
		</author>
		<source>
			<title type="html">Picklebytes</title>
			<subtitle type="html">Tech Notes from Shane Hathaway</subtitle>
			<link rel="self" href="http://shane.willowrise.com/feed/rss2"/>
			<id>http://shane.willowrise.com/feed/rss2</id>
			<updated>2010-07-22T18:00:26+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">AV Security Suite Malware Removal: Panda said I was clean, ComboFix disagreed</title>
		<link href="http://larsrasmussen.blogspot.com/2010/07/av-security-suite-malware-removal-panda.html"/>
		<id>tag:blogger.com,1999:blog-20014007.post-8476807312984466735</id>
		<updated>2010-07-21T23:44:52+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;&amp;quot;There's this security software that keeps popping up and I can't use my computer.&amp;quot;&lt;/p&gt;  &lt;p&gt;Say goodbye to several hours of your life should you decide to help.&lt;/p&gt;  &lt;p&gt;But I've got this &lt;a href=&quot;http://www.maximumpc.com/article/howtos/ultimate_malware_removal_guide_purge_your_pc_junk_files&quot;&gt;great malware removal guide from Maximum PC&lt;/a&gt;, and I've been doing tech support since the mid-1990s - no problem right?&lt;/p&gt;  &lt;p&gt;Oh, the pain. I'm going to try mitigate others' potential suffering by sharing what helped me.&lt;/p&gt;  &lt;p&gt;The &lt;a href=&quot;http://www.maximumpc.com/article/howtos/ultimate_malware_removal_guide_purge_your_pc_junk_files&quot;&gt;Maximum PC Guide for removing malware&lt;/a&gt; contains some great comprehensive steps. Here are a few things that can be done to supplement the guide.&lt;/p&gt;  &lt;p&gt;Booting the operating system that has the problem can slow you down at first.&lt;/p&gt;  &lt;p&gt;1. Erase a spare USB Key and use &lt;a href=&quot;http://unetbootin.sourceforge.net/&quot;&gt;UNetbootin&lt;/a&gt; to create a &lt;a href=&quot;http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk10/kav_rescue_10.iso&quot;&gt;bootable Kaspersky Rescue Disk&lt;/a&gt;. Use this tool to remove some of the less resilient threats.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_i9HjVXB62LY/TES0lMh7wOI/AAAAAAAAAQo/k7CfZT56Vnk/s1600-h/AV_Security_Suite_038-50pct-resample%5B4%5D.png&quot;&gt;&lt;img title=&quot;AV_Security_Suite_038-50pct-resample&quot; border=&quot;0&quot; alt=&quot;AV_Security_Suite_038-50pct-resample&quot; src=&quot;http://lh6.ggpht.com/_i9HjVXB62LY/TES0liDjvwI/AAAAAAAAAQs/ZhRIlHPb51Q/AV_Security_Suite_038-50pct-resample_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;244&quot; height=&quot;146&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Boot in safe mode and run the following from a CMD prompt to delete Temp &amp;amp; &amp;quot;Temporary Internet Files&amp;quot;&amp;#160; directories for all user Profiles(assumes XP install w/profiles on C: drive ):&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;C:\&amp;gt; for /f &amp;quot;usebackq&amp;quot; %a in (`dir /b /a &amp;quot;c:\documents and settings&amp;quot;`) do rd /s /q &amp;quot;c:\documents and settings\%a\Local Settings\Temp&amp;quot;&lt;br /&gt;&lt;br /&gt;C:\&amp;gt; for /f &amp;quot;usebackq&amp;quot; %a in (`dir /b /a &amp;quot;c:\documents and settings&amp;quot;`) do rd /s /q &amp;quot;c:\documents and settings\%a\Local Settings\Temporary Internet Files&amp;quot;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;3. Defrag. Auslogics has a &lt;a href=&quot;http://www.auslogics.com/en/software/disk-defrag/&quot;&gt;good free defragmenter&lt;/a&gt;, or you can use the built-in defragmenter.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;4. &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx&quot;&gt;Autoruns&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx&quot;&gt;&lt;img title=&quot;0006&quot; border=&quot;0&quot; alt=&quot;0006&quot; src=&quot;http://lh6.ggpht.com/_i9HjVXB62LY/TES0l9seoaI/AAAAAAAAAQw/_V0CuOki-5M/0006%5B3%5D.png?imgmax=800&quot; width=&quot;109&quot; height=&quot;89&quot; /&gt;&lt;/a&gt; from Mark Russinovich and Bryce Cogswell(Don't use this unless you feel very familiar with windows services) - Click the Options menu, Check the Boxes for &amp;quot;Hide Microsoft and Windows Entries&amp;quot; and &amp;quot;Verify Code Signatures&amp;quot; as shown in this screenshot: &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a href=&quot;http://lh3.ggpht.com/_i9HjVXB62LY/TES0mLLK5zI/AAAAAAAAAQ0/sC_5CS7RWsI/s1600-h/0007%5B7%5D.png&quot;&gt;&lt;img title=&quot;0007&quot; border=&quot;0&quot; alt=&quot;0007&quot; src=&quot;http://lh4.ggpht.com/_i9HjVXB62LY/TES0nOb_PoI/AAAAAAAAAQ4/g0U4tVkpDaM/0007_thumb%5B5%5D.png?imgmax=800&quot; width=&quot;644&quot; height=&quot;135&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Push the Escape key, then hit F5 to refresh in Autoruns.&amp;#160; Now inspect the list and right-click the odd looking entries. You can choose to &amp;quot;Delete&amp;quot; the offender or &amp;quot;Jump To...&amp;quot; to open up a Window with the startup location referencing the item - usually in the registry.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;5. Run CCleaner. Cut Deep - but remember to be nice - some users like their Internet History kept intact, and I like to keep my Start &amp;gt;&amp;gt; Run history while troubleshooting.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;6. At this point you can go ahead and step through the Maximum PC guide. What follows is the snag I ran into in removing a piece of malware called AV Security Suite and how to get around that snag thanks to some specific posts from chaslang at MajorGeeks and other posts from &lt;a href=&quot;http://www.bleepingcomputer.com/virus-removal/remove-av-security-suite&quot;&gt;BleepingComputer&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;After running &lt;a href=&quot;http://www.superantispyware.com/downloadfile.html?productid=SUPERANTISPYWAREFREE&quot;&gt;SuperAntiSpyware&lt;/a&gt; and Malwarebytes &lt;a href=&quot;http://www.download.com/Malwarebytes-Anti-Malware/3000-8022_4-10804572.html?part=dl-10804572&amp;amp;subj=dl&amp;amp;tag=button&quot;&gt;Anti-Malware&lt;/a&gt;, and subsequently running &lt;a href=&quot;http://www.pandasecurity.com/activescan/index/&quot;&gt;Panda's Activescan 2.0&lt;/a&gt;, it looked like the machine was clean. I then started &lt;a href=&quot;http://www.combofix.org/&quot;&gt;ComboFix&lt;/a&gt; and received the following error, but ran ComboFix anyway:&lt;a href=&quot;http://lh5.ggpht.com/_i9HjVXB62LY/TES0ne1PQwI/AAAAAAAAAQ8/0u1Nxl0FNF8/s1600-h/0002%5B4%5D.png&quot;&gt;&lt;img title=&quot;0002&quot; border=&quot;0&quot; alt=&quot;0002&quot; src=&quot;http://lh5.ggpht.com/_i9HjVXB62LY/TES0nuiWYPI/AAAAAAAAARA/3kjD9MjhkVs/0002_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;408&quot; height=&quot;200&quot; /&gt;&lt;/a&gt; Panda FAIL. AV Security Suite was supposed to be gone. Panda said the box was clean! Why, Panda, why? The ComboFix log displayed the following AV Security Suite GUID:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;AE716D16-40FE-4cb9-8FD2-2975088F55B2&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Googling that GUID resulted in a &lt;a href=&quot;http://forums.majorgeeks.com/showpost.php?s=3267c1d818674a91ca0f821aa6cc0b76&amp;amp;p=1507844&amp;amp;postcount=3&quot;&gt;lifesaver post&lt;/a&gt; by chaslang, which stated there was a Browser Helper Object(BHO) that sill needed to be deleted. I skipped the first suggestion in chaslang's post to run MGTOOLS\analyse.exe, but followed his other instructions.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;HijackThis found the offender. &lt;br /&gt;  &lt;br /&gt;&lt;a href=&quot;http://lh5.ggpht.com/_i9HjVXB62LY/TES0oGAM_4I/AAAAAAAAARE/vCHecuiPz10/s1600-h/0004%5B4%5D.png&quot;&gt;&lt;img title=&quot;0004&quot; border=&quot;0&quot; alt=&quot;0004&quot; src=&quot;http://lh5.ggpht.com/_i9HjVXB62LY/TES0oiXmK1I/AAAAAAAAARI/PfLOeeAHqvY/0004_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;609&quot; height=&quot;182&quot; /&gt;&lt;/a&gt; I was able to click Fix and afterward &lt;a href=&quot;http://forums.majorgeeks.com/showpost.php?s=3267c1d818674a91ca0f821aa6cc0b76&amp;amp;p=1507844&amp;amp;postcount=3&quot;&gt;run ComboFix according to chaslang’s instructions&lt;/a&gt; without ComboFix detecting the AV Security Suite. Chaslang, I owe you... something. Thank you!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When rebuilding or updating a home machine connected to the internet, I strongly suggest using the automated, toolbar-free installers created by &lt;a href=&quot;http://ninite.com/&quot;&gt;http://ninite.com/&lt;/a&gt; Makes it easy to install Microsoft Security Essentials, Flash, FireFox, Foxit Reader, Auslogics Disk Defrag, and several other apps.&lt;a href=&quot;http://lh3.ggpht.com/_i9HjVXB62LY/TES0o6SveyI/AAAAAAAAARM/1Ebe1jLZkMY/s1600-h/0008%5B7%5D.png&quot;&gt;&lt;img title=&quot;0008&quot; border=&quot;0&quot; alt=&quot;0008&quot; src=&quot;http://lh4.ggpht.com/_i9HjVXB62LY/TES0paampaI/AAAAAAAAARQ/agJ5BAGaXdw/0008_thumb%5B5%5D.png?imgmax=800&quot; width=&quot;644&quot; height=&quot;280&quot; /&gt;&lt;/a&gt; Ninite will save you a lot of time.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Another troubleshooting suggestion is to boot Windows off a CD or USB key(&lt;a href=&quot;http://winbuilder.net/&quot;&gt;WinBuilder&lt;/a&gt; and &lt;a href=&quot;http://www.boot-land.net/forums/index.php?showtopic=8195&quot;&gt;Boot Land&lt;/a&gt; can help you create a bootable version of windows, but these are deep waters that will take some time to navigate for first-timers) and thereby work on the infected system in a safer environment.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/20014007-8476807312984466735?l=larsrasmussen.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Lars Rasmussen</name>
			<email>noreply@blogger.com</email>
			<uri>http://larsrasmussen.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Lars Rasmussen (Lars-UT)</title>
			<link rel="self" href="http://larsrasmussen.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-20014007</id>
			<updated>2010-07-22T05:00:54+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Testing Magento Sites with Selenium</title>
		<link href="http://www.ryanbyrd.net/techramble/2010/07/21/testing-magento-sites-with-selenium/"/>
		<id>http://www.ryanbyrd.net/techramble/?p=259</id>
		<updated>2010-07-21T19:08:29+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;So you installed the Selenium IDE firefox plugin and you recorded a check-out transaction of your Magento-powered ecommerce site. Then you save as a php file and fire up your Selenium RC server and run the script. It gets to the checkout page and &amp;#8230; Nothing. What&amp;#8217;s wrong?&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s wrong is that you&amp;#8217;ve submitted too quickly. You need to do some checking with xpath ids for the &amp;#8220;updating totals&amp;#8221; div before you can click submit. Here&amp;#8217;s a working Selenium Magento script for your reference:&lt;/p&gt;
&lt;pre class=&quot;php php&quot;&gt;&lt;span&gt;require_once&lt;/span&gt; &lt;span&gt;'PHPUnit/Extensions/SeleniumTestCase.php'&lt;/span&gt;;
&amp;nbsp;
&lt;span&gt;class&lt;/span&gt; Example &lt;span&gt;extends&lt;/span&gt; PHPUnit_Extensions_SeleniumTestCase
&lt;span&gt;&amp;#123;&lt;/span&gt;
 &lt;span&gt;function&lt;/span&gt; setUp&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
 &lt;span&gt;&amp;#123;&lt;/span&gt;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;setBrowser&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;*chrome&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;setBrowserUrl&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;http://www.example.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
 &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
 &lt;span&gt;public&lt;/span&gt; &lt;span&gt;function&lt;/span&gt; testMyTestCase&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
 &lt;span&gt;&amp;#123;&lt;/span&gt;
   &lt;span&gt;//$this-&amp;gt;maxRunningTime= 30; //(this is a special function I implemented)&lt;/span&gt;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;open&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//ul[@id='nav']/li[1]/ul/li[1]/a/span&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;waitForPageToLoad&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;30000&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//img[@alt='ADD TO CART']&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;waitForPageToLoad&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;30000&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//div[2]/div[1]/ul/li/a/img&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;waitForPageToLoad&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;30000&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:email&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;test@example.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:firstname&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;test&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:lastname&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;test&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:telephone&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;8015551212&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:street1&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;100 Main Street&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:city&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;Salt Lake City&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:region_id&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;label=Utah&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;billing:postcode&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;84116&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//*[@id=&lt;span&gt;\&amp;quot;&lt;/span&gt;billing:street1&lt;span&gt;\&amp;quot;&lt;/span&gt;]&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$second&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;; ; &lt;span&gt;$second&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
       &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$second&lt;/span&gt; &lt;span&gt;&amp;gt;=&lt;/span&gt; &lt;span&gt;7&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;break&lt;/span&gt;;
       try &lt;span&gt;&amp;#123;&lt;/span&gt;
           &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;isElementPresent&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//span[@id='billing-please-wait' and contains(@style,'display: none')]&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;break&lt;/span&gt;;
       &lt;span&gt;&amp;#125;&lt;/span&gt; catch &lt;span&gt;&amp;#40;&lt;/span&gt;Exception &lt;span&gt;$e&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;
       &lt;a href=&quot;http://www.php.net/sleep&quot;&gt;&lt;span&gt;sleep&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$second&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;; ; &lt;span&gt;$second&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
       &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$second&lt;/span&gt; &lt;span&gt;&amp;gt;=&lt;/span&gt; &lt;span&gt;7&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;break&lt;/span&gt;;
       try &lt;span&gt;&amp;#123;&lt;/span&gt;
           &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;isElementPresent&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//span[@id='billing-please-wait' and contains(@style,'display: none')]&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;break&lt;/span&gt;;
       &lt;span&gt;&amp;#125;&lt;/span&gt; catch &lt;span&gt;&amp;#40;&lt;/span&gt;Exception &lt;span&gt;$e&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;
       &lt;a href=&quot;http://www.php.net/sleep&quot;&gt;&lt;span&gt;sleep&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;merchant_cc_number&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;511111111111111&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;advice-validate-cc-number-merchant_cc_number&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;merchant_cc_number&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;4111111111111111&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;merchant_expiration&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;label=01 - January&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;merchant_expiration_yr&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;label=2016&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;merchant_cc_cid&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;quot;432&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//*[@id=&lt;span&gt;\&amp;quot;&lt;/span&gt;submit-order-button&lt;span&gt;\&amp;quot;&lt;/span&gt;]&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;a href=&quot;http://www.php.net/sleep&quot;&gt;&lt;span&gt;sleep&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;click&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;//*[@id=&lt;span&gt;\&amp;quot;&lt;/span&gt;submit-order-button&lt;span&gt;\&amp;quot;&lt;/span&gt;]&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;waitForPageToLoad&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;30000&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;waitForPageToLoad&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   try &lt;span&gt;&amp;#123;&lt;/span&gt;
       &lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;assertTrue&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;isTextPresent&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;Thank you for your purchase!&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;&amp;#125;&lt;/span&gt; catch &lt;span&gt;&amp;#40;&lt;/span&gt;PHPUnit_Framework_AssertionFailedError &lt;span&gt;$e&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
       &lt;a href=&quot;http://www.php.net/array_push&quot;&gt;&lt;span&gt;array_push&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;$this&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;verificationErrors&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;$e&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;toString&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
   &lt;span&gt;&amp;#125;&lt;/span&gt;
 &lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Here is the &lt;a href=&quot;http://www.ryanbyrd.net/techramble/2009/10/07/automated-qa-testing-with-selenium/&quot; target=&quot;_blank&quot;&gt;Selenium timeout/maxRunningTime modification code&lt;/a&gt; explained.&lt;/p&gt;</content>
		<author>
			<name>Ryan Byrd</name>
			<uri>http://www.ryanbyrd.net/techramble</uri>
		</author>
		<source>
			<title type="html">Ryan Byrd's Tech Ramblings</title>
			<subtitle type="html">The Second Best Blog in Utah</subtitle>
			<link rel="self" href="http://www.ryanbyrd.net/techramble/feed/"/>
			<id>http://www.ryanbyrd.net/techramble/feed/</id>
			<updated>2010-07-29T17:21:26+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Utah Sunsets</title>
		<link href="http://feedproxy.google.com/~r/Mecworks/~3/DVnjsLgT1jY/"/>
		<id>http://blog.mecworks.com/?p=572</id>
		<updated>2010-07-21T15:47:46+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;I made two photographs on my way back from Salt Lake City last night.  I was leaving a friend&amp;#8217;s house after dropping off some items for the &lt;a href=&quot;http://www.sllug.org&quot; target=&quot;_new&quot;&gt;SLLUG&lt;/a&gt; meeting tomorrow night.  While descending the avenues, I passed by &lt;a href=&quot;http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;t=h&amp;amp;msa=0&amp;amp;msid=108287756920310081046.00048be77c3bb8165985e&amp;amp;ll=40.77825,-111.885763&amp;amp;spn=0.006004,0.008572&amp;amp;z=17&quot; target=&quot;_new&quot;&gt;Memory Grove near 9th Avenue&lt;/a&gt; where I stopped for an amazing sunset.&lt;/p&gt;



&lt;p&gt;Here are several.  The first two are the pictures I made last night and were made on my &lt;a href=&quot;http://www.kenrockwell.com/nikon/d300.htm&quot; target=&quot;_new&quot;&gt;Nikon D300&lt;/a&gt; camera.  The first is looking out at Antelope Island to the West with my &lt;a href=&quot;http://www.kenrockwell.com/nikon/24-70mm.htm&quot; target=&quot;_new&quot;&gt;Nikon AF-S 24-70mm f/2.8 G ED lens&lt;/a&gt; and the second is a view of the Utah state capital and the sunset taken with my &lt;a href=&quot;http://www.kenrockwell.com/nikon/105fe.htm&quot; target=&quot;_new&quot;&gt;Nikon 10.5mm f/2.8 DX Fisheye&lt;/a&gt;.  (All images Copyright &amp;copy; Marc Christensen, All rights reserved.)&lt;/p&gt;

&lt;p&gt;&lt;center&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mecworks/4814016143/in/set-72157624397430568/lightbox/&quot; title=&quot;Sunset at the Capital by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4100/4814016143_d507d3c37c.jpg&quot; width=&quot;500&quot; height=&quot;233&quot; alt=&quot;Sunset at the Capital&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/mecworks/4813995053/in/set-72157624397430568/lightbox/&quot; title=&quot;Salt Lake City: Capital at Sunset by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4140/4813995053_34b534ed71.jpg&quot; width=&quot;500&quot; height=&quot;267&quot; alt=&quot;Salt Lake City: Capital at Sunset&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;span id=&quot;more-572&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve taken several over the years, here are some more of my favorite Utah sunset photos I&amp;#8217;ve made.  Click on the images to see larger versions:&lt;/p&gt;

&lt;p&gt;&lt;center&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mecworks/4690665767/in/set-72157624397430568/lightbox/&quot; title=&quot;Utah Lake sunset by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4019/4690665767_9b265a6f47.jpg&quot; width=&quot;500&quot; height=&quot;500&quot; alt=&quot;Utah Lake sunset&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mecworks/4530668331/in/set-72157624397430568/lightbox/&quot; title=&quot;Pelicans on Utah Lake at Sunset by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4063/4530668331_5d07664409.jpg&quot; width=&quot;500&quot; height=&quot;251&quot; alt=&quot;Pelicans on Utah Lake at Sunset&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mecworks/4264728477/in/set-72157624397430568/lightbox/&quot; title=&quot;Sunset from Garden Park by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4051/4264728477_2d04aa7514.jpg&quot; width=&quot;500&quot; height=&quot;285&quot; alt=&quot;Sunset from Garden Park&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mecworks/3628112234/in/set-72157624397430568/lightbox/&quot; title=&quot;Rain over Saratoga Springs by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3351/3628112234_4f48bac54e.jpg&quot; width=&quot;500&quot; height=&quot;312&quot; alt=&quot;Rain over Saratoga Springs&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mecworks/2217085612/in/set-72157624397430568/lightbox/&quot; title=&quot;Little Cottenwood by Mecworks, on Flickr&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2066/2217085612_5da938c782.jpg&quot; width=&quot;375&quot; height=&quot;500&quot; alt=&quot;Little Cottenwood&quot; /&gt;&lt;/a&gt;
&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;I love Utah. &lt;/p&gt;

&lt;p&gt;(All images Copyright &amp;copy; Marc Christensen, All rights reserved.)
&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;

&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://blog.mecworks.com/articles/2004/11/11/nikon-d70-canon-20d-or-wait-for-the-nikon-d200/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Nikon D70, Canon 20D or wait for the Nikon D200?&quot;&gt;Nikon D70, Canon 20D or wait for the Nikon D200?&lt;/a&gt;&lt;small&gt;&amp;gt;&amp;gt;&amp;gt; UPDATE Oct. 28, 2005: Check out the new leaked...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.mecworks.com/articles/2006/06/20/walking-tour-of-downtown-salt-lake-city/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Walking tour of downtown Salt Lake City&quot;&gt;Walking tour of downtown Salt Lake City&lt;/a&gt;&lt;small&gt;Went with some friends: Melody, Jason and Natalie on a...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.mecworks.com/articles/2010/06/24/modeling-work-with-michelle/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Modeling work with Michelle&quot;&gt;Modeling work with Michelle&lt;/a&gt;&lt;small&gt;Michelle 2, originally uploaded by Mecworks. Spent an evening in...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?i=DVnjsLgT1jY:zgl5-tYoQyE:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?i=DVnjsLgT1jY:zgl5-tYoQyE:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:-BTjWOF_DHI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?i=DVnjsLgT1jY:zgl5-tYoQyE:-BTjWOF_DHI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mecworks?a=DVnjsLgT1jY:zgl5-tYoQyE:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mecworks?i=DVnjsLgT1jY:zgl5-tYoQyE:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Mecworks/~4/DVnjsLgT1jY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Marc Christensen</name>
			<uri>http://blog.mecworks.com</uri>
		</author>
		<source>
			<title type="html">Mecworks</title>
			<subtitle type="html">Technology, Linux, Photography, Science, Cycling, Outdoor Activities and other interests.</subtitle>
			<link rel="self" href="http://blog.mecworks.com/feed"/>
			<id>http://blog.mecworks.com/feed</id>
			<updated>2010-07-30T14:21:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Theory: In each chat there are two conversations</title>
		<link href="http://undertakingyou.com/general/theory-in-each-chat-there-are-two-conversations/"/>
		<id>http://undertakingyou.com/?p=315</id>
		<updated>2010-07-21T14:30:14+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;So I have this theory that in each chat session that we have with someone there are always two conversations going. Maybe always is a bit broad. Lets say, all of mine, and my guess is most of yours. I find that it is because of this phenomena that most effective communication can break down in a chat. Largely due to confusion on what the context is of a specific piece of the communication.&lt;/p&gt;
&lt;p&gt;Lets look at a completely hypothetical example:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A: Hey, hows it going? Haven&amp;#8217;t chatted in a while.&lt;br /&gt;
A: Wanted to ask you if you still had that car.&lt;br /&gt;
B: Hey, hows it going? Yeah, it has been a while.&lt;br /&gt;
B: What are you up to?&lt;br /&gt;
B: Yeah I have the car, Why?&lt;br /&gt;
A: I am fine, just up to the usual, Work.&lt;br /&gt;
A: boss is really on my nerves.&lt;br /&gt;
A: Was wanting to know if you wanted to sell the car.&lt;br /&gt;
B: Oh man that sucks! I hate my boss. Work is the pits.&lt;br /&gt;
B: I wish I could quit my job.&lt;br /&gt;
A: Oh man I know. Work is awful.&lt;br /&gt;
B: So you like the car? I need the money, I could sell it.&lt;br /&gt;
A: I hate it, it is always on my nerves.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It is at this point that confusion comes in. By looking right at the chat it looks like person A hates the car and it is always on his nerves. We can look at the two conversations seperatly and see that each is a logical, straightforward conversation.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A: Hey, hows it going? Haven&amp;#8217;t chatted in a while.&lt;br /&gt;
B: Hey, hows it going? Yeah, it has been a while.&lt;br /&gt;
B: What are you up to?&lt;br /&gt;
A: I am fine, just up to the usual, Work.&lt;br /&gt;
A: boss is really on my nerves.&lt;br /&gt;
B: Oh man that sucks! I hate my boss. Work is the pits.&lt;br /&gt;
B: I wish I could quit my job.&lt;br /&gt;
A: Oh man I know. Work is awful.&lt;br /&gt;
A: I hate it, it is always on my nerves.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;A: Wanted to ask you if you still had that car.&lt;br /&gt;
B: Yeah I have the car, Why?&lt;br /&gt;
A: Was wanting to know if you wanted to sell the car.&lt;br /&gt;
B: So you like the car? I need the money, I could sell it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Each is a self contained conversation.&lt;/p&gt;
&lt;p&gt;Has anyone else noticed this in their own chats? It seems that I am not totally alone in my findings, there is a &lt;a title=&quot;Two Conversations One Chat&quot; href=&quot;http://bit.ly/d7oZtB&quot; target=&quot;_blank&quot;&gt;facebook group about it&lt;/a&gt;. It seems too the only way to not have it happen is to wait what seems like an obscenely long time for each question to be asked and answered back.&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">JOYBOND | Other &quot;Tama-chan whole.&quot;</title>
		<link href="http://kaelbot.blogspot.com/2010/07/joybond-other-tama-chan-whole.html"/>
		<id>tag:blogger.com,1999:blog-4877234600441129506.post-8255637036431633373</id>
		<updated>2010-07-20T21:24:00+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;a href=&quot;http://joybond.co.jp/product_img/c00-a-01.jpg&quot;&gt;&lt;img src=&quot;http://joybond.co.jp/product_img/c00-a-01.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Be sure and check out the translated version of this page.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://joybond.co.jp/product/00/c00-a-01.php&quot;&gt;JOYBOND | Other &amp;quot;Tama-chan whole.&amp;quot;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4877234600441129506-8255637036431633373?l=kaelbot.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Kael</name>
			<email>noreply@blogger.com</email>
			<uri>http://kaelbot.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Kaelbot Central</title>
			<subtitle type="html">Obey The Otter</subtitle>
			<link rel="self" href="http://kaelbot.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-4877234600441129506</id>
			<updated>2010-07-22T22:40:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">UTOSC 2010 Call for papers extended through August 1st!</title>
		<link href="http://blog.utos.org/2010/07/20/utosc-2010-call-for-papers-extended-through-august-1st/"/>
		<id>http://blog.utos.org/?p=1179</id>
		<updated>2010-07-20T17:09:59+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://utos.org/wp-content/themes/mimbo/images/utos-logo.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Time goes by quickly, so quickly in fact that top priorities get set to the side and suddenly become missed opportunities. Fortunately submitting a proposal for a presentation at the &lt;a href=&quot;http://2010.utosc.com&quot;&gt;2010 Utah Open Source Conference&lt;/a&gt; doesn&amp;#8217;t have to be one of them!&lt;/p&gt;
&lt;p&gt;The deadline for paper submission has been extended until August 1st, 2010, just in time to sit down inside a nice cool coffee shop, sip some of the great local roast and think about what to share with the community.&lt;/p&gt;
&lt;p&gt;Really it only takes a minute or two to place a submission and you might find it so easy and fun that you submit more then one.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t worry about not having a full presentation prepared, all that needs to be submitted by the deadline is the proposal, a basic outline of what would be presented to the community at the conference. The next step is easy: sit back, relax and wait to hear if your proposal was selected by vote for the conference. Once selected the entire presentation(s) should be laid out and created.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t have anything to talk about? That&amp;#8217;s not what I&amp;#8217;ve heard!&lt;/p&gt;
&lt;p&gt;Topics can be as wide ranging as are the members of the Utah Open Source community at large (and that is pretty gosh darn diverse!) and should include a variety of experience levels. While one presenter may submit a presentation on &lt;a href=&quot;http://2009.utosc.com/presentation/79/&quot;&gt;Building a Better Community Through Statistics&lt;/a&gt; another (and an excellent presentation I attended in 2009,) might be &lt;a href=&quot;http://2009.utosc.com/presentation/23/&quot;&gt;Advanced GIMP: The Digital Diet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So don&amp;#8217;t be afraid to submit a proposal to talk about your favorite open source program(s) that just does silly things or maybe does nothing at all!&lt;/p&gt;
&lt;p&gt;Has anyone ever submitted a presentation on an open source pet rock? No? Hhmm&amp;#8230;&lt;/p&gt;
&lt;p&gt;All ideas are welcome, but please remember to keep with the 2010 theme: its better when its free*.&lt;/p&gt;
&lt;p&gt;Being free is so easy that my open source pet rock was free!&lt;/p&gt;
&lt;p&gt;Interested? Want more details? Visit the Utah Open Source Conference website at &lt;a href=&quot;http://2010.utosc.com&quot;&gt;http://2010.utosc.com&lt;/a&gt; and when your ready to submit your proposal simply create an account and visit &lt;a href=&quot;http://2010.utosc.com/speaker/papers&quot;&gt;http://2010.utosc.com/speaker/papers/&lt;/a&gt; to submit your paper.&lt;/p&gt;
&lt;p&gt;You could put it off again, but then you will have to pay to attend and where&amp;#8217;s the fun in that?&lt;/p&gt;</content>
		<author>
			<name>Utah Open Source</name>
			<uri>http://blog.utos.org</uri>
		</author>
		<source>
			<title type="html">Utah Open Source Blog</title>
			<subtitle type="html">By, for and about Utah Open Source</subtitle>
			<link rel="self" href="http://blog.utos.org/feed/"/>
			<id>http://blog.utos.org/feed/</id>
			<updated>2010-07-29T03:20:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Android App Review: Setting Profiles</title>
		<link href="http://undertakingyou.com/general/android-app-review-setting-profiles/"/>
		<id>http://undertakingyou.com/?p=307</id>
		<updated>2010-07-20T14:30:17+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Introducing a &amp;#8216;new&amp;#8217; blog segment where I put my thoughts on some of the best, or worst, of the android apps that I have tried. Today on the docket,&lt;a title=&quot;Setting Profiles&quot; href=&quot;http://www.probeez.com/?cat=3&quot; target=&quot;_blank&quot;&gt; Setting Profiles.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We all are on the go, we move everywhere. That is why we have a mobile phone. But I find that I have a handful of places that I am at more often than others. At these various spots I have different services or settings that I use on my phone. At home and work I want to be connected to the WIFI. At low battery state on the phone I want to shut everything off to conserve battery. When at a funeral service, or Sunday while at church I want the phone completely silent. Conversely, when not at home, I don&amp;#8217;t want WIFI on depleting my battery needlessly. Or when not at church I want to hear my phone. What is a real pain in the butt is to set these things at each new location every time.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignright size-medium wp-image-308&quot; title=&quot;Locations Screenshot&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/screenshot_5-168x300.png&quot; alt=&quot;Locations Screenshot&quot; width=&quot;168&quot; height=&quot;300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In steps Setting Profiles. There are other apps that also change phone settings based upon certain phone criteria, but I found them cost prohibitive. Settings Profiles only cost $3.95 and is so similar in feature set for my needs it is a no-brainer to save the money.&lt;/p&gt;
&lt;p&gt;With Setting Profiles there are some things that very first must be done after installing the app. First, set up some Locations.When you go to add a new location it gives you a couple options, I always chose Lat/Lon which then gives you a map. You simply select where, the distance in radius that you must be from this point, and then a name. Viola, you have set a location. The really cool thing, you don&amp;#8217;t have to be at the location, you just have to select ANY point on the map.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignleft size-medium wp-image-311&quot; title=&quot;Create Profiles Screenshot&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/screenshot_6-168x300.png&quot; alt=&quot;Create Profiles Screenshot&quot; width=&quot;168&quot; height=&quot;300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Next is to set profiles. When setting a profile you will then select what things should be on/off. Just go down the list and turn things on and off as needed.&lt;/p&gt;
&lt;p&gt;Last step, is to set up a rule saying that if you are in location A turn on setting B. Once your location criteria is met Setting Profiles will change your phone settings. Once you no longer meet the location criteria, Setting Profiles will change your settings back to how they were before.&lt;/p&gt;
&lt;p&gt;But what if you want something to happen and it is not dependent upon location. Never fear! There are many criteria choicesthat you have. Battery State, Calendar appointment title, Missed call, Blue Tooth device connected, on even just a specific scheduled time to name a few. Do you want your phone to automatically silent from 8:00 PM to 8:00 AM so you don&amp;#8217;t get disturbing calls in the night? No problem, this can do that.&lt;/p&gt;
&lt;p&gt;What if you don&amp;#8217;t want it to change phone settings? You do have the option of Running a program or Notifying you also.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignright size-medium wp-image-312&quot; title=&quot;Widget Screenshot&quot; src=&quot;http://undertakingyou.com/wp-content/uploads/2010/07/screenshot_2-168x300.png&quot; alt=&quot;Widget Screenshot&quot; width=&quot;168&quot; height=&quot;300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last points to highlight. You also can select multiple profiles at a time. It simply applies them in order. If your first rule turns on WIFI and the second one disables it, WIFI will be off. Another neat feature is the widget which allows you to quickly use aprofile, disable a profile, or use a profile on a timer. Very convenient for that meeting to be an hour. Time the profile setting with the widget for one hour and automagically your phone settings change when you are done. The widget also shows you the order that the profiles are applied in so that you can more easily refine your rule-set.&lt;/p&gt;
&lt;p&gt;What I like: I like the convenience of just knowing that my phone settings will change when they are supposed to without me thinking about it. Very convenient to know that stuff is just magically working for me. Also, the UI is actually quite simple to use and very intuitive.&lt;/p&gt;
&lt;p&gt;My wish list: It seems that the GPS location rules are stuck at 1/2 mile. I can&amp;#8217;t get a 1/4 mile to work at all. I wish that all the granular options worked for this. Also, on the Calendar Items condition my only option is that for 12 hours prior to the calender item I can have some action happen. Really? 12 hours? With all our that this app can do we only get the &amp;#8216;choice&amp;#8217; of 12 hours? I want to see options for 12 hours,  1 hour, 30 minutes, and 5 minutes at LEAST. With a more finite time interval I could set it so that when I had a funeral, or had a family arrangement or meeting of some kind it could auto silence my phone. 12 hours is just rediculous. I would also like to see a cell phone tower location option for CDMA phones. Maybe there is a technology limitation there, not sure. But it would still be nice.&lt;/p&gt;
&lt;p&gt;All in all: I would still recommend this app to people. Not just as a cheaper alternative than Locale, but as a great option for criteria based phone settings changes. The price point is such that it really is a good value, and really, my gripes are minor. Also, the app is still under active development, which means that improvements should continue to happen (should being the operative word).&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Laptop to an AP</title>
		<link href="http://undertakingyou.com/general/laptop-to-an-ap/"/>
		<id>http://undertakingyou.com/?p=277</id>
		<updated>2010-07-19T14:30:20+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;So, the other day I was at a location that has a wired internet connection but no wireless and no switch. I didn&amp;#8217;t have switch and wireless with me and so, I decided to take on the task of making my laptop a wireless access point with WPA2 security. The guide that I followed the most is &lt;a title=&quot;Wireless AP Howto&quot; href=&quot;http://www.robert-heyward.com/rjh/?page_id=12&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;, and much thanks to the author, although I did find that I had to do more to get it to work than the guide provided.&lt;/p&gt;
&lt;p&gt;Very first you will need to have installed the following packages:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;wireless-tools&lt;br /&gt;
iw&lt;br /&gt;
linux kernel 2.6.30 or later (I am using 2.6.31-21 ubuntu generic)&lt;br /&gt;
hostapd&lt;br /&gt;
dhcp-server&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;My hardware: Macbook Pro 3,1 running Ubuntu Linux (9.10 Karmic). This laptop has a wireless card that uses the atheros ath9k driver.&lt;/p&gt;
&lt;p&gt;The rest of this article assumes that you already have a good working WIFI card, my point is not to troubleshoot why your wifi card doesn&amp;#8217;t work. Also I assume that you know how to set up a DHCP server, know how to edit files, etc.&lt;/p&gt;
&lt;p&gt;First, after making sure that my wireless card would even do it I set the static IP on my wirless card.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ifconfig wlan0 192.168.10.1 netmask 255.255.255.0&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Next, I set up DHCP on the wireless interface only with my dhcpd.conf looking like this.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;subnet 192.168.10.0 netmask 255.255.255.0 {&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;range 192.168.10.10 192.168.10.49;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;option routers 192.168.10.1;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;option ip-forwarding off;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;option subnet-mask 255.255.255.0;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;option broadcast-address 192.168.10.255;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;option domain-name-servers 4.2.2.2, 4.2.2.1;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;}&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;Then I set up my hastapd.conf file thusly.&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;div&gt;interface=wlan0&lt;/div&gt;
&lt;div&gt;driver=nl80211&lt;/div&gt;
&lt;div&gt;ssid=YourSSID&lt;/div&gt;
&lt;div&gt;channel=6&lt;/div&gt;
&lt;div&gt;hw_mode=g&lt;/div&gt;
&lt;div&gt;auth_algs=1&lt;/div&gt;
&lt;div&gt;wpa=3&lt;/div&gt;
&lt;div&gt;wpa_passphrase=12345678 (Change this, obviously)&lt;/div&gt;
&lt;div&gt;wpa_key_mgmt=WPA-PSK&lt;/div&gt;
&lt;div&gt;wpa_pairwise=TKIP CCMP&lt;/div&gt;
&lt;div&gt;rsn_pairwise=CCMP&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;Lastly, run the thing.&lt;/div&gt;
&lt;blockquote&gt;
&lt;div&gt;#hostapd -d hostapd.conf&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;Some other caveats. I did have to change some iptables stuff to allow routing through the eth0 interface and allow access to the DHCP server through port 67. My rule set looked like this:&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;div&gt;-A POSTROUTING -o eth0 -j MASQUERADE&lt;/div&gt;
&lt;div&gt;-A INPUT -p tcp -m tcp &amp;#8211;dport 67 -j ACCEPT&lt;/div&gt;
&lt;div&gt;-A INPUT -p udp -m udp &amp;#8211;dport 67 -j ACCEPT&lt;/div&gt;
&lt;div&gt;-A FORWARD -i wlan0 -j ACCEPT&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;Otherwise, that was all there really was to it. My brother-in-law could connect to the web through my laptop and I could use it with the wired. The world was right as rain.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">FUDCon Santiago, Day 2</title>
		<link href="http://www.jaredsmith.net/2010/07/17/fudcon-santiago-day-2/"/>
		<id>http://www.jaredsmith.net/?p=119</id>
		<updated>2010-07-17T17:27:08+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://jsmith.fedorapeople.org/Images/Jared_Smith.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Day number two of FUDCon Santiago started with a quick breakfast at the hotel, and then we walked over to Universidad Central.  Along the way, several folks stopped to take pictures &amp;#8212; I think we even lost a couple of the Brazilians along the way.  Some of the pictures have been posted to &lt;a title=&quot;Flickr&quot; href=&quot;http://www.flickr.com/groups/fudcon_scl_2010/pool/&quot; target=&quot;_blank&quot;&gt;Flickr&lt;/a&gt;.  Along the way, we ran into several phone booths that were advertising  (the ever-nebulous concept of) cloud computing. In this case, they were simply providing some disk space if you signed up for their internet access, and we joked that maybe they should advertise it as &amp;#8220;fog computing&amp;#8221; instead.  It was a bit of a wake up call, however, for just how quickly things are advancing in the area.&lt;/p&gt;
&lt;p&gt;The first talk I attended was a talk by &lt;a title=&quot;User:Gomix&quot; href=&quot;https://fedoraproject.org/wiki/User:Gomix&quot;&gt;Guillermo  Gómez S.&lt;/a&gt; (gomix) on RPM packaging.  He did a great job of explaining the basics, and then getting into a few of the trickier subjects.  After the talk, we talked to a couple of developers that were interested in having their software packaged for Fedora, and Guillermo invited them to attend his afternoon session where they actually packaged up some software.&lt;/p&gt;
&lt;p&gt;I then jumped on IRC to participate in the &lt;a title=&quot;Fedora Board&quot; href=&quot;https://fedoraproject.org/wiki/Board&quot; target=&quot;_blank&quot;&gt;Fedora Board Meeting&lt;/a&gt;. Máirín Duffy has written a very good writeup of the meeting &lt;a href=&quot;http://mairin.wordpress.com/&quot;&gt;on her blog&lt;/a&gt;.  We experimented a bit with this meeting by making it totally open, and it went fairly well, but was a bit confusing at time when there were three or four conversations happening at once.  We&amp;#8217;ll keep exploring the best way to provide openness and transparency, while maintaining order as well.&lt;/p&gt;
&lt;p&gt;After the board meeting, I bounced around from talk to talk and spent a lot of time listening to people here.  There were several good talks on virtualization and high availability.  I also spent more time conversing with the attendees and answering questions.&lt;/p&gt;
&lt;p&gt;After the show wrapped up for the day, we held an impromptu round table discussion with the FUDCon organizers and the Fedora Ambassadors that were here.  It was a good chance to discuss the things that went well, that didn&amp;#8217;t go so well, and many other topics.  The discussion was very animated and there were many different topics discussed, and I&amp;#8217;m not sure I can do it all justice in this blog post, but I&amp;#8217;m going to try to enumerate some of the topics discussed.&lt;/p&gt;
&lt;p&gt;The first topic we discussed was communication among the ambassadors, especially between countries.  It was generally agreed that the ambassadors aren&amp;#8217;t communicating well with ambassadors from other LATAM countries, and we talked about ways we can improve the discussion between the different countries.  We also talked about better ways of announcing events such as FUDCon, so that we get the word out to all the different Linux-based communities in the region.  The general consensus was that wikis are great for documentation, but they don&amp;#8217;t do a good job of letting people know of upcoming events, and that there needs to be more work done to reach out to users and developers in other ways.&lt;/p&gt;
&lt;p&gt;The next topic was one of lack of organization within the LATAM open source community.  We talked about the fact that this is a collaborative community, and that there needs to be more self-organization and collaboration between the disparate communities.  At this point, it was suggested that ambassadors try to push technical discussions from their own local mailing lists or country-based mailing lists to regional lists that cover all the countries of Latin America, so that there are more opportunities for people to get the answers they need and also the mentorship they need to become future leaders.  At this point, the conversation degraded a bit as people started to argue all the small details about whether to setup mail relays or encourage people gently to move to regional-based lists or to just shut down the smaller lists to encourage people to move to regional lists.  Rodrigo Padula noted that the tools are already there to solve the problem &amp;#8212; we just need to communicate!  I shared a bit of my experience, and tried to get people back on talking about the principles and not getting bogged down in the details.&lt;/p&gt;
&lt;p&gt;The next discussion revolved around events such as FUDCon.  Guillermo noted that we&amp;#8217;re pretty good at throwing events and inviting our friends to the party, but that we need to do more than that.  He emphasized the fact that events are fun (like a party!), but we really need to focus on ensuring that we&amp;#8217;re inviting people to become contributors.  He said that there are several places people can get started in contributing &amp;#8212; documentation, translation, packaging, infrastructure, marketing, design, and so on.  We need to focus better on turning attendees into the folks that are going to be giving presentation in the next event.  In short, events are the perfect location to invite people to &lt;strong&gt;work&lt;/strong&gt; in Fedora.&lt;/p&gt;
&lt;p&gt;The discussion then turned to ambassadors and the mentorship process, and whether or not the mentorship process is working as well as it should.  Various ideas were tossed about, and I recommended that people make their suggestions to FAMSCo and the Fedora Board if they wanted to change things.  (Several people suggested that we might need at least one or two more mentors here in LATAM.)  From there, the conversation turned to the details of being a mentor (are you a coach or a filter?) and whether or not the 30-day probationary period for ambassadors is working or not.  (Apparently it&amp;#8217;s not in Brazil.)&lt;/p&gt;
&lt;p&gt;To wrap things up, I thanked all the ambassadors and organizers for their hard work and effort to make this FUDCon a success, and encouraged them to look for opportunities during the rest of FUDCon and over the coming months to help new users understand that they&amp;#8217;re going to have more fun if they are active participants in the community.  I shared what I thought were the four most important things on my radar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;improved communication&lt;/li&gt;
&lt;li&gt;making sure we start planning &lt;strong&gt;now &lt;/strong&gt;for the next FUDCon in LATAM&lt;/li&gt;
&lt;li&gt;making sure we include ambassadors and active contributors from many different countries, and not just send the same few people to each event&lt;/li&gt;
&lt;li&gt;suggestion that we do a barcamp for at least a half-day in the next FUDCon in LATAM, so that people can see how it works and learn to do it better&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By the time the round table wrapped up, it was late and I was exhausted, but people wanted to go out to eat, so I tagged along.  To make a long story short, we found a good restaurant and spent the next several hours eating and talking.  By the time we got back to the hotel, I was ready to crash, so I put off writing this blog entry until this morning.&lt;/p&gt;</content>
		<author>
			<name>Jared Smith</name>
			<uri>http://www.jaredsmith.net</uri>
		</author>
		<source>
			<title type="html">Jared Smith</title>
			<subtitle type="html">Thoughts of a Traveling Geek</subtitle>
			<link rel="self" href="http://www.jaredsmith.name/feed/"/>
			<id>http://www.jaredsmith.name/feed/</id>
			<updated>2010-07-24T15:41:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Samsung Galaxy S (Vibrant on T-Mobile): First Day</title>
		<link href="http://blog.utahcon.com/uncategorized/samsung-galaxy-s-vibrant-on-t-mobile-first-day"/>
		<id>http://blog.utahcon.com/?p=532</id>
		<updated>2010-07-17T03:01:36+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://s3.amazonaws.com/twitter_production/profile_images/54578886/me_bigger.jpg&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;So technically yesterday was my first with the new phone, but it was late in the evening and I decided instead of try and formulate a review I would just get it setup and then use it for a day.&lt;/p&gt;
&lt;p&gt;The phone is a dream! The 1GHz processor screams, and makes light work of heavy graphics and surfing. I am unfortunately stuck in an Edge network (Panama City, Florida) and so things are quite as snappy as they could be if I were back in SLC. All that aside things happen much faster still than they did with my old G1.&lt;/p&gt;
&lt;p&gt;The Super AMOLED screen is dynamite! This is the best display I have ever seen on a phone (still haven't seen a Retina display). The images are crisp and the colors are deep and rich. It is truly an amazing screen.&lt;/p&gt;
&lt;p&gt;The internal memory is a big treat too. I have currently 14GB free with 1.4GB free on the external memory card. This is quite welcome as I was able to move all things from my phone over and keep going as if I never moved.&lt;/p&gt;
&lt;p&gt;Running Android 2.1 is nice, but I had that on my G1, so nothing new there. I have seen and heard rumors that 2.2 is coming for the Galaxy phones, but we will have to wait and see. Rooting the phone was a cinch and I won't look back. I can't wait to find a good mod for the phone (hopefully Cyanogenmod).&lt;/p&gt;
&lt;p&gt;The best thing I can report about the phone is the work that Samsung put into battery life. Android phones have been notorious battery monsters. The G1 on a good day would go 5 hours without a charge. These days are gone, and I brought proof. Today I charged my phone to 100% capacity, then I took the phone off the charger for the whole day. With the exception of 1 reboot (which fubbed the numbers to be shorter) here are the results:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.utahcon.com/wp-content/uploads/2010/07/screenshot_1.png&quot;&gt;&lt;img class=&quot;alignleft size-full wp-image-533&quot; title=&quot;screenshot_1&quot; src=&quot;http://blog.utahcon.com/wp-content/uploads/2010/07/screenshot_1.png&quot; alt=&quot;&quot; width=&quot;288&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see from the screen shot I went over 11 hours and 27 minutes off the plug. This is just amazing! It wasn't until the last hour or so that I noticed any real problems, like the camera not allowing pictures with such low battery.&lt;/p&gt;
&lt;p&gt;The biggest draw back I have seen in the phone is that some features are turned off when on the phone or doing various tasks. For example you can't take a picture while talking on the phone... I don't know why.&lt;/p&gt;
&lt;p&gt;The 5MP camera is nice, and quick to respond, would be nice to see a large MP but that is ok too.&lt;/p&gt;
&lt;p&gt;Overall I think the Vibrant is a clear winner in the best Android phone category. Good work Samsung and kudos to Tmobile for picking it up.&lt;/p&gt;</content>
		<author>
			<name>Adam Barrett</name>
			<uri>http://blog.utahcon.com</uri>
		</author>
		<source>
			<title type="html">Utahcon.com</title>
			<link rel="self" href="http://blog.utahcon.com/feed"/>
			<id>http://blog.utahcon.com/feed</id>
			<updated>2010-07-23T00:00:34+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">FUDCon Santiago, Day 1</title>
		<link href="http://www.jaredsmith.net/2010/07/16/fudcon-santiago-day-1/"/>
		<id>http://www.jaredsmith.net/?p=116</id>
		<updated>2010-07-16T17:32:58+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://jsmith.fedorapeople.org/Images/Jared_Smith.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Things are well under way here in Santiago, Chile at the FUDCon conference.  Yesterday morning, my flight was delayed getting into Santiago, so when I landed I made a mad dash through immigrations and customs.  Antonio was kind enough to pick me up at the airport and drive me directly to the conference.  There is a nice new road from the airport to downtown, so it didn&amp;#8217;t take very long to get to Universidad Central where the FUDCon conference is being held.  When I arrived, the attendees were waiting for me to kick off the show.  (I had secretly hoped they would start without me, but I didn&amp;#8217;t get my wish.)&lt;/p&gt;
&lt;p&gt;My plan was to give a quick introduction in (broken) Spanish, and then give a quick presentation in English.  As it turned out, I ended up giving both the introduction and presentation in rusty Spanish, and even did a short question and answer session in Spanish as well.  Little by little my brain is recalling words and phrases that I haven&amp;#8217;t used in fourteen years.&lt;/p&gt;
&lt;p&gt;After my presentation, I spent a few minutes meeting the other FUDCon organizers and staff, and then had some photos taken for the press here in Chile.  (I&amp;#8217;m not sure how well the pictures turned out, as I had just been on an airplane for almost ten hours!)  I also had a telephone interview with a local journalist, which was a bit difficult because I found myself lacking in technical terms in Spanish.  Luckily, I had Alexis and Loreto from the Universidad Central to help me better explain some of the more technical details in better Spanish.&lt;/p&gt;
&lt;p&gt;After a quick lunch, I listened to a few of the other talks before being pulled out for more interviews and photos. It was very interesting to listen to the questions from the journalists, and see how they started to catch on to the &amp;#8220;open source way&amp;#8221;.  Alexis also shared with them more statistics about software piracy here in Chile (and Latin America in general), and how free and open source software is a natural way to help solve that problem.&lt;/p&gt;
&lt;p&gt;After the conference wound down for the night, we returned to the hotel to drop off our bags and then went out for some dinner.  We ended up eating at a restaurant with some great Peruvian food.  After a long and exciting day, I slept like a rock.&lt;/p&gt;</content>
		<author>
			<name>Jared Smith</name>
			<uri>http://www.jaredsmith.net</uri>
		</author>
		<source>
			<title type="html">Jared Smith</title>
			<subtitle type="html">Thoughts of a Traveling Geek</subtitle>
			<link rel="self" href="http://www.jaredsmith.name/feed/"/>
			<id>http://www.jaredsmith.name/feed/</id>
			<updated>2010-07-24T15:41:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Car Update</title>
		<link href="http://undertakingyou.com/personal/car-update/"/>
		<id>http://undertakingyou.com/?p=297</id>
		<updated>2010-07-16T14:30:55+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;For those that had been interested I have traded my 1964 Bug. The kid that has it seems like he will treat it really well and I am glad that he got it. As I was getting it ready for him I drove it one more time and just thought about how fun of a car it really was to drive and have. All the looks that I got and people wanting to know about that classic car.&lt;/p&gt;
&lt;p&gt;But I digress. I traded it for his 1988 Chevy pickup. I am currently getting the title but then I am going to put that up for sale. If it doesn&amp;#8217;t go fairly quick I will take it down to Carmax and see what they do.&lt;/p&gt;
&lt;p&gt;So two questions, first does anybody want a pickup truck? If so message me or comment and I can get you the info. Second, does anyone have experience selling a car to car max? Good or bad I am curious to hear it.&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PHP Fundamentals</title>
		<link href="http://uphpu.org/2010/07/15/php-fundamentals/"/>
		<id>http://uphpu.org/?p=712</id>
		<updated>2010-07-16T00:06:19+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;For our July meeting, Justin Carmony will continue his PHP Fundamentals series. Come join us for valuable training, good times, and of course, the killer after party.&lt;/p&gt;</content>
		<author>
			<name>Utah PHP User Group</name>
			<uri>http://uphpu.org</uri>
		</author>
		<source>
			<title type="html">Utah PHP Users Group</title>
			<subtitle type="html">PHP application development and support</subtitle>
			<link rel="self" href="http://uphpu.org/feed/"/>
			<id>http://uphpu.org/feed/</id>
			<updated>2010-07-16T00:21:00+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Using ANTLR and PerlXS to Generate a Parser</title>
		<link href="http://www.windley.com/archives/2010/07/using_antlr_and_perlxs_to_generate_a_parser.shtml"/>
		<id>http://www.windley.com/archives/2010/07/using_antlr_and_perlxs_to_generate_a_parser.shtml</id>
		<updated>2010-07-15T19:10:10+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://photos.windley.com/albums/me/0612_15_014.thumb.jpg&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;!-- title: 
Using ANTLR and PerlXS to Generate a Parser
--&gt;
&lt;!-- category: newsletter --&gt;
&lt;!-- keywords: 
perl, perlxs, antlr, parsing, kynetx, krl
--&gt;
&lt;a href=&quot;http://www.flickr.com/photos/orinrobertjohn/114430092/sizes/s/&quot;&gt;&lt;img width=&quot;150px&quot; src=&quot;http://farm1.static.flickr.com/51/114430092_209052dce4_m.jpg&quot; border=&quot;0&quot; hspace=&quot;3&quot; vspace=&quot;3&quot; align=&quot;right&quot; title=&quot;&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;

&lt;p&gt;
As I &lt;a href=&quot;http://www.windley.com/archives/2010/07/parsing_for_a_cloudbased_programming_language.shtml&quot;&gt;mentioned
earlier&lt;/a&gt;, we're anticipating changing out the current
Parse::RecDescent based parser in the Kynetx platform with one that
will perform better.  We've been going down the
path of using &lt;a href=&quot;http://www.antlr.org/&quot;&gt;ANTLR&lt;/a&gt;, a modern
parser generator that supports multiple target languages.  That
flexibility was one of the key thing that got us interested in
ANTLR.  We might want to generate Ruby or Javascript KRL generators
at some point.  
&lt;/p&gt;

&lt;p&gt;
But of course right now we want to generate a Perl parser since
that's what the underlying Kynetx Event Service (KES) is written in
(it's an Apache module).  ANTLR &lt;em&gt;doesn't&lt;/em&gt; support Perl.
That's probably just as well however since we're after as much speed
as possible.  We could generate Java (the target best supported by
ANTLR) but adding Java servers into the current operational mix
doesn't excite me.  
&lt;/p&gt;

&lt;p&gt;
The obvious course is to generate C and then use &lt;a href=&quot;http://perldoc.perl.org/perlxstut.html&quot;&gt;PerlXS&lt;/a&gt; to integrate
the resulting parser into the Perl-based KES engine.  To explore the
feasibility of that, I decided to play around with ANTLR generated C
parsers and PerlXS to see how they'd work.  What follows is an
intermediate report of what I found.  
&lt;/p&gt;

&lt;p&gt;
I started with a SimpleCalc example that is part of the &lt;a href=&quot;http://www.antlr.org/wiki/display/ANTLR3/Five+minute+introduction+to+ANTLR+3&quot;&gt;five
minute introduction to ANTLR&lt;/a&gt;. The grammar file is unchanged from
that example: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
grammar SimpleCalc;

options
{
    language=C;
    output=AST;
    ASTLabelType=pANTLR3_BASE_TREE;

}

tokens {
	PLUS 	= '+' ;
	MINUS	= '-' ;
	MULT	= '*' ;
	DIV	= '/' ;
}


/* PARSER RULES */
expr	: term ( ( PLUS | MINUS )^  term )*;
term	: factor ( ( MULT | DIV )^ factor )* ;
factor	: NUMBER ;


/* LEXER RULES */
NUMBER	: (DIGIT)+ ;
WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ 	
     { $channel = HIDDEN; } ;
fragment DIGIT	: '0'..'9' ;
&lt;/pre&gt;

&lt;p&gt;
The only difference is that I've told it to generate an AST and
annotated the grammar (with ^) to tell it which tokens are tree
nodes.  
&lt;/p&gt;

&lt;p&gt;
I used &lt;tt&gt;h2xs&lt;/tt&gt; to generate the
boilerplate xs files:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
h2xs -A -n SC
&lt;/pre&gt;

&lt;p&gt;
This creates a directory called SC and a punch of files for PerlXS. 
That's where I put all the generated files from ANTLR.  
If you look at the C version in the ANTLR introduction, you'll see an
&lt;code&gt;@members&lt;/code&gt; declaration that contains some C code that
exercises the parser. 
That's what I modified to put into the PerlXS file:
&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;
#include &quot;EXTERN.h&quot;
#include &quot;perl.h&quot;
#include &quot;XSUB.h&quot;
#include &quot;SimpleCalcLexer.h&quot;
#include &quot;SimpleCalcParser.h&quot;

#include &quot;ppport.h&quot;

MODULE = SC		PACKAGE = SC		

char *
showtree(in)
         char * in
    CODE:

    pANTLR3_INPUT_STREAM           input;
    pSimpleCalcLexer               lex;
    pANTLR3_COMMON_TOKEN_STREAM    tokens;
    pSimpleCalcParser              parser;
    SimpleCalcParser_expr_return     langAST;

    char * output;

    input = antlr3NewAsciiStringInPlaceStream 
            (in,
            (ANTLR3_UINT32) strlen(in), 
            NULL); 
    lex    = SimpleCalcLexerNew(input);
    tokens = antlr3CommonTokenStreamSourceNew
               (ANTLR3_SIZE_HINT, 
		TOKENSOURCE(lex));
    parser = SimpleCalcParserNew(tokens);

    langAST = parser-&gt;expr(parser);

    output = langAST.tree-&gt;toStringTree(langAST.tree)-&gt;chars;

    // Must manually clean up
    //
    parser -&gt;free(parser);
    tokens -&gt;free(tokens);
    lex    -&gt;free(lex);

    RETVAL = output;

    OUTPUT: 
      RETVAL
&lt;/pre&gt;

&lt;p&gt;
This defines a function called &lt;tt&gt;showtree&lt;/tt&gt; that will be called
from Perl.  The file also includes the &lt;tt&gt;.h&lt;/tt&gt; files that ANTLR generated and uses the
input string inplace instead of reading a file as the example did.
The return value (denoted by the special identifier &lt;tt&gt;RETVAL&lt;/tt&gt;)
is just a string representation of the parse tree.  
&lt;/p&gt;

&lt;p&gt;
The &lt;tt&gt;Makefile.PL&lt;/tt&gt; file for PerlXS is pretty standard:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
use 5.010000;
use ExtUtils::MakeMaker;
WriteMakefile(
    NAME              =&gt; 'SC',
    VERSION_FROM      =&gt; 'lib/SC.pm', 
    PREREQ_PM         =&gt; {}, 
    ($] &gt;= 5.005 ?     
      (ABSTRACT_FROM  =&gt; 'lib/SC.pm', 
       AUTHOR         =&gt; 'Web-san ') : ()),
    LIBS              =&gt; ['-lantlr3c'], 
    DEFINE            =&gt; '', 
    INC               =&gt; '-I.', 
    # link all the C files too
    OBJECT            =&gt; '$(O_FILES)',
);
&lt;/pre&gt;

&lt;p&gt;
You'll notice I link the ANTLR library in here. Since the xs file
references a string output, I created a &lt;tt&gt;typemap&lt;/tt&gt; file to map
that for PerlXS:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
TYPEMAP
char * T_PV
&lt;/pre&gt;


&lt;p&gt;  
Now, we compile the xs files in the standard way:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
perl Makefile.PL
make
&lt;/pre&gt;

&lt;p&gt;
The Perl file is pretty simple as well:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
#!/usr/bin/perl -w

use ExtUtils::testlib;   # adds blib/* directories to @INC
use SC;
print SC::showtree(&quot;3 + 4 * 5&quot;), &quot;\n&quot;;
&lt;/pre&gt;

&lt;p&gt;
Executing this program prints a prefix representation of the
arithmetic expression passed into the &lt;tt&gt;showtree&lt;/tt&gt; function.  
&lt;/p&gt;

&lt;p&gt;
Of course, this isn't what we want for our system.  We want a full
fledged AST back that we can manipulate in Perl.  I spent a little
time on &lt;tt&gt;typemap&lt;/tt&gt;s and have reached the conclusion that the right
method is to use an ANTLR generated treeparser (a parser for the AST)
to walk the tree and create a tree that is more like what we are used
to in the KES engine and use &lt;tt&gt;typemap&lt;/tt&gt; to turn that into Perl.
&lt;/p&gt;


&lt;p&gt;
So, it would appear that using ANTLR to generate a C-based parser and
then using PerlXS to wrap that for use in Perl is feasible.  As we
figure out the AST output, I'll write more.   
&lt;/p&gt;








&lt;p&gt;Tags: 
&lt;a href=&quot;http://www.windley.com/tags/perl&quot; rel=&quot;tag, nofollow&quot;&gt;
perl&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/perlxs&quot; rel=&quot;tag, nofollow&quot;&gt;
perlxs&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/antlr&quot; rel=&quot;tag, nofollow&quot;&gt;
antlr&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/parsing&quot; rel=&quot;tag, nofollow&quot;&gt;
parsing&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/kynetx&quot; rel=&quot;tag, nofollow&quot;&gt;
kynetx&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/krl&quot; rel=&quot;tag, nofollow&quot;&gt;
krl&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Phil Windley</name>
			<uri>http://www.windley.com/</uri>
		</author>
		<source>
			<title type="html">Phil Windley's Technometria</title>
			<subtitle type="html">Organizations Get the IT They Deserve</subtitle>
			<link rel="self" href="http://www.windley.com/rss.xml"/>
			<id>http://www.windley.com/rss.xml</id>
			<updated>2010-07-28T23:40:12+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Last day to submit paper for UTOSC 2010</title>
		<link href="http://blog.utos.org/2010/07/15/last-day-to-submit-paper-for-utosc-2010/"/>
		<id>http://blog.utos.org/?p=1167</id>
		<updated>2010-07-15T18:32:16+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://utos.org/wp-content/themes/mimbo/images/utos-logo.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Today is the last day to &lt;a href=&quot;http://utosc.com/speaker/papers/&quot;&gt;submit a paper&lt;/a&gt; for the &lt;a href=&quot;http://utosc.com&quot;&gt;Utah Open Source Conference 2010&lt;/a&gt;.&lt;br /&gt;
Delivering a paper is a GREAT way for you to give back to the community and also for you to network and get to meet new people.&lt;/p&gt;
&lt;p&gt;You don&amp;#8217;t have to have a doctorate to present, so post your idea today!  More info below&lt;/p&gt;
&lt;p&gt;mj/v&lt;/p&gt;
&lt;p&gt;ps. submitting a proposal for a presentation doesn&amp;#8217;t have to be a painful reminder of a college paper or a dissertation, write your ideas in english, spanish, chinese pinyin, or uuencode!&lt;br /&gt;
The Utah Open Source Foundation announced a call for papers for the&lt;br /&gt;
2010 conference scheduled Oct 7 &amp;#8211; 9 in Salt Lake City, Utah. July 15th&lt;br /&gt;
is the last day to  submit proposal for review is July 15th and we&lt;br /&gt;
look forward to hearing your suggestions for papers.&lt;/p&gt;
&lt;p&gt;All papers related to open source and open standards technology are&lt;br /&gt;
welcome including presentations on software best practices, workshops,&lt;br /&gt;
panel discussions, etc.  Topics can range in sophistication from&lt;br /&gt;
beginner level classes to advanced training.  We also make space&lt;br /&gt;
available for local user groups to meet and find new members,&lt;br /&gt;
participate in Birds of a Feather sessions and educational&lt;br /&gt;
minicourses.&lt;/p&gt;
&lt;p&gt;With open source adoption showing brisk growth in the Mountain West,&lt;br /&gt;
UTOSC expects another record-breaking year of attendance, making this&lt;br /&gt;
conference a great place to discover, explore and learn new&lt;br /&gt;
technologies and software.&lt;/p&gt;
&lt;p&gt;Please visit &lt;a href=&quot;http://utosc.com/&quot; target=&quot;_blank&quot;&gt;http://utosc.com/&lt;/a&gt; for more details.&lt;/p&gt;</content>
		<author>
			<name>Utah Open Source</name>
			<uri>http://blog.utos.org</uri>
		</author>
		<source>
			<title type="html">Utah Open Source Blog</title>
			<subtitle type="html">By, for and about Utah Open Source</subtitle>
			<link rel="self" href="http://blog.utos.org/feed/"/>
			<id>http://blog.utos.org/feed/</id>
			<updated>2010-07-29T03:20:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Android 2.2</title>
		<link href="http://undertakingyou.com/general/android-2-2/"/>
		<id>http://undertakingyou.com/?p=290</id>
		<updated>2010-07-15T14:30:34+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;I recently installed Android 2.2 on my phone. Gotta thank the guys at cyanogenmod for the awesome ROM that they put out. Of all the ROMs I have tried they are by far the most polished and nice. Plus the ease of using ROMManager is a no brainer. So my thoughts on Android 2.2.&lt;/p&gt;
&lt;p&gt;There are some great improvements. First, I thought that I would like having 360 degree screen rotation more. But the reality is that I move my phone two ways. After using everything for a bit I find the rotation to be more of a &amp;#8216;see I can do this&amp;#8217; thing rather than a useful feature. But still, see I can do this!&lt;/p&gt;
&lt;p&gt;More notable for me is the improvements in both the Gmail app, and the Calendar app. Two things in the Gmail app. The support for the color labels now. If you haven&amp;#8217;t used this it does provide a great &amp;#8216;at a glance&amp;#8217; showing of what is going on with your labels. Also the app UI is improved, with some buttons added for fast account switching for those of us with multiple gmail accounts, and more handy next and forward buttons. Also, just found the option now to &amp;#8216;select text&amp;#8217;. When selected you can highlight message text and when done it will auto copy to the clipboard.&lt;/p&gt;
&lt;p&gt;The calendar app has a much needed improvement of being able to sync with multiple gmail accounts. I can&amp;#8217;t even say how frustrating this was. I had so many people that signed up for a new gmail account, and when we added their work gmail account they couldn&amp;#8217;t have the work calendar.&lt;/p&gt;
&lt;p&gt;Other improvements seem to mostly be UI improvements with things like the Talk application. Changes in the &amp;#8216;Car Home&amp;#8217; UI. Call log now has groupings so if you miss 80 calls from your boss in a row you just see one entry with a &amp;#8216;(80)&amp;#8217; next to it. This will of course show all 80 once you expand them. Contacts now also has a quick dial button at the full list so that you can call directly rather than long pressing or going into the contact. The &amp;#8216;Messaging&amp;#8217; app has added contacts pictures in the view messages pane and, has changed the font on the date and time stamp so you can actually read it without your microscope. Camera UI has also improved giving quick access to features such as flash, white balance, GPS location, etc. Also who can forget flash support with the betas from Adobe. Lastly, the market app has some cleaning up making it easier to leave feedback, and a dedicated tab to view comments.&lt;/p&gt;
&lt;p&gt;Although I haven&amp;#8217;t noticed any great speed changes all in all it is very worth the upgrade.&lt;/p&gt;
&lt;p&gt;Some things I would still love to see in Android. Universal Copy and Paste. I mean, come on. I can copy a SMS text but not a talk chat? Why not just be able to highlight any text and copy it, paste it, etc. While the &amp;#8216;select text&amp;#8217; option in gmail is a step in the right direction I don&amp;#8217;t think it is enough. It would also be nice to see universal screen rotation. Some apps just won&amp;#8217;t rotate unless I pull out the keyboard. Also, a native buzz app would be cool. Until then I will have to keep using Seesmic. Last but not least some improvements to the google voice app. Specifically ability to record calls that are initiated from the phone running the app, and multi-select for bulk actions on things like deleting and archiving.&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Travel delays and broken feeds</title>
		<link href="http://www.jaredsmith.net/2010/07/14/travel-delays-and-broken-feeds/"/>
		<id>http://www.jaredsmith.net/?p=113</id>
		<updated>2010-07-14T15:09:10+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://jsmith.fedorapeople.org/Images/Jared_Smith.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;Due to the weather in the Atlanta area yesterday, my flight (connecting through Atlanta) to FUDCon Chile was cancelled yesterday.  This means I&amp;#8217;ll be arriving at FUDCon Santiago a day later than planned &amp;#8212; I arrive early Thursday morning instead of Wednesday  &lt;img src=&quot;http://www.jaredsmith.net/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:-(&quot; class=&quot;wp-smiley&quot; /&gt;   Hopefully this won&amp;#8217;t cause too much disruption.  Unfortunately, it will give me one less day meet people and help with arrangements for the conference.&lt;/p&gt;
&lt;p&gt;In other news, I&amp;#8217;ve hacked on the WordPress 3.0 code used to power this blog, and we&amp;#8217;ll see if it fixes the &amp;#8220;truncated posts in RSS feeds&amp;#8221; bug I&amp;#8217;ve been having. This post should work as a test to see if my changes have worked.  With any luck, this&amp;#8217;ll fix the problem and I can spend less time working on the code and more time blogging!&lt;/p&gt;</content>
		<author>
			<name>Jared Smith</name>
			<uri>http://www.jaredsmith.net</uri>
		</author>
		<source>
			<title type="html">Jared Smith</title>
			<subtitle type="html">Thoughts of a Traveling Geek</subtitle>
			<link rel="self" href="http://www.jaredsmith.name/feed/"/>
			<id>http://www.jaredsmith.name/feed/</id>
			<updated>2010-07-24T15:41:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Geek Squad Experience</title>
		<link href="http://undertakingyou.com/general/geek-squad-experience/"/>
		<id>http://undertakingyou.com/?p=287</id>
		<updated>2010-07-14T14:30:07+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;I think we have all seen the little Volkswagon Bugs plastered with their oval logo. Or their vans, all decked out in black, white, and orange. If you have ever been to BestBuy you can&amp;#8217;t even purchase a DVD player without the offer of a Geek Squad &amp;#8216;Double Agent&amp;#8217; to come and install the item. They offer in home diagnosis of computer problems and can do computer repairs.&lt;/p&gt;
&lt;p&gt;I have heard of others having poor experiences with Geek Squad. My brother Ryan had a computer gone for 12 weeks. Each day a new excuse as to why it wasn&amp;#8217;t done. The other day one of the computers at our floral show was on the fritz. In fact, two were. I went to look at the computers but was only able to dedicate a limited time to my diagnosis. Not being able to complete the repair the choice was made to call Geek Squad. They needed to have the computer fixed and it made sense to have someone come over that was a &amp;#8216;computer expert&amp;#8217; and would make &amp;#8216;house calls&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Geek Squad arrived and went to work addressing the problems. First, was a computer that was being plagued by pop-ups. Whenever I went to diagnose the problem no pop-ups happened and I didn&amp;#8217;t see anything out of the ordinary in the processes list. Geek Squad looked at the computer and said that the hard drive had bad sectors and the computer needed to be replaced. Well, that may be true, but bad sectors don&amp;#8217;t cause pop-ups. They found the first thing wrong and the first suggestion was to replace the computer. Not even just replace the hard drive, the whole computer needed to be new.&lt;/p&gt;
&lt;p&gt;They then spent a few hours looking at the next computer. This computer needs to use the modem, and what was happening was that the modem would work for a short time, and then stop working. When you would try to make a call, it would say the telephony service had an error, and restarting the telephony service didn&amp;#8217;t help. Geek Squad still hasn&amp;#8217;t figured it out. I am waiting for them to say that we need a new computer or it will take 12 weeks in their shop.&lt;/p&gt;
&lt;p&gt;The point is they never did address the problems that we asked them to. It seems they just want to &amp;#8216;up-sell&amp;#8217; the consumer. In addition their diagnosis cost was enough that I would have expected more. Has anyone had a good Geek Squad experience?&lt;/p&gt;</content>
		<author>
			<name>Will Smith</name>
			<uri>http://undertakingyou.com</uri>
		</author>
		<source>
			<title type="html">undertakingyou</title>
			<subtitle type="html">explorations in open source software and ideas</subtitle>
			<link rel="self" href="http://undertakingyou.com/feed/"/>
			<id>http://undertakingyou.com/feed/</id>
			<updated>2010-07-28T23:00:47+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Parsing for a Cloud-Based Programming Language</title>
		<link href="http://www.windley.com/archives/2010/07/parsing_for_a_cloudbased_programming_language.shtml"/>
		<id>http://www.windley.com/archives/2010/07/parsing_for_a_cloudbased_programming_language.shtml</id>
		<updated>2010-07-13T22:25:03+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://photos.windley.com/albums/me/0612_15_014.thumb.jpg&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;!-- title: 
Parsing for a Cloud-Based Programming Language
--&gt;
&lt;!-- category: newsletter --&gt;
&lt;!-- keywords: 
krl, kynetx, parsing
--&gt;
&lt;a href=&quot;http://www.kynetx.com&quot;&gt;&lt;/a&gt;&lt;img width=&quot;150px&quot; src=&quot;http://www.windley.com/images/kynetx_logo_small.png&quot; border=&quot;0&quot; hspace=&quot;3&quot; vspace=&quot;3&quot; align=&quot;right&quot; title=&quot;Kynetx&quot; alt=&quot;Kynetx&quot; /&gt;
&lt;p&gt;
If you follow my blog, you're probably all too aware that Kynetx provides a cloud-based execution engine for a programming language called the &lt;a href=&quot;http://docs.kynetx.com/krl/report-on-krl/&quot;&gt;Kynetx Rule Language&lt;/a&gt;, or KRL.  The execution engine is a &lt;a href=&quot;http://www.windley.com/archives/2010/06/a_big_programmable_event_loop_in_the_cloud.shtml&quot;&gt;big, programmable event-loop in the cloud&lt;/a&gt; and KRL is the language that is used to program it.  As with any language, the first step in executing it is to parse it into an abstract syntax tree.  
&lt;/p&gt;

&lt;p&gt;
The KRL parser has had it's ups and downs.  A while ago, I reported on &lt;a href=&quot;http://www.windley.com/archives/2008/09/parsing_with_perl.shtml&quot;&gt;changing out the HOP parser for Damian Conway's RecDescent&lt;/a&gt; (note that the system is written in Perl).  The KRL parser is also what promted me, a long time ago, to &lt;a href=&quot;http://www.windley.com/archives/2008/01/perl_testing.shtml&quot;&gt;write a large set of tests for the engine code, including the parser&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
When you're building a parser for a language to be compiled on the developer's machine, performance is an issue to be sure, but you are saved from problems you encounter when the parser is the first step in a service that needs to run quick.  The most important of these is to make sure you cache the abstract syntax tree so that you only have to parse things when they change.  
&lt;/p&gt;

&lt;p&gt;
Whenever there's a cache miss the KRL parsing process basically works like this:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Retrieve the KRL source for the ruleset from the rule repository.&lt;/li&gt;

&lt;li&gt;Parse the ruleset&lt;/li&gt;

&lt;li&gt;Optimize the ruleset&lt;/li&gt; 

&lt;li&gt;Compile &lt;a href=&quot;http://www.windley.com/archives/2010/04/programming_the_internet_reactive_systems_events_and_krl.shtml&quot;&gt;event expressions into state machines&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;Cache the result&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The optimization does things like perform dependency analysis on variables to move them outside loops and so on.  
&lt;/p&gt;

&lt;p&gt;
The caching presents it's own problems.  Flushing a single ruleset from the cache when it changes is a simple enough procedure.  But when the abstract syntax tree (AST) changes, they all need to be flushed.  My preference is to do this in an emergent way so that we're not dependent on a step in the code deployment process that might get forgotten or messed up.  So, when a ruleset is optimized, an AST version number is placed in the AST.  When the engine retrieves a ruleset from the cache, it checks the AST version number against the current number and if it's old, automatically flushes the ruleset and proceeds with the process given above to recreate the AST.
&lt;/p&gt;

&lt;p&gt;
So far, so good.  When I make a change to the parser that would change the format of the AST, I update the version number and when the code is deployed, the rulesets will automatically flush and get regenerated.  This is, unfortunately, where my intuition failed me.  
&lt;/p&gt;

&lt;p&gt;
You can imagine that the engine is a number of individual servers behind a load balancer.  When multiple requests come in they are given to various server to process.  Like most people, I've been conditioned by the physical world to expect guassian distributions around an average, but intuition developed around guassian distributions often leads to poor decisions in the world of computers where distributions are much more likely to follow a &lt;a href=&quot;http://en.wikipedia.org/wiki/Power_law&quot;&gt;power curve&lt;/a&gt;.  
&lt;/p&gt;

&lt;p&gt;
Here's what happened the last time I made a change to the AST.  We deployed code and immediately the system stopped responding to requests.  On further examination, we discovered that the machines we all busy parsing--the same ruleset.  Because there are some rulesets that are much more likely to be executed than others, the first requests seen by the new code were, for the most part, all for the same ruleset and every machine was busy parsing.  Worse, the requests started to stack up cause the machines to thrash.  Everything stopped working.  
&lt;/p&gt;

&lt;p&gt;
The answer to this problem has two parts:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The parser needs to be faster--especially for large rulesets.  In the short term we'll do some point imporvements to the existing Perl-based parser.  In the long term we'll replace it with a C-based parser.  &lt;/li&gt;

&lt;li&gt;The rule retieval process detailed above needs to use semaphores so that only one parsing task for any given ruleset is launched at one time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
We've put the short term fixes and the semaphore in place and things are looking pretty good so far.  We're partly down this road already and the fact that we have good specifications of what the parser has to do and tests to check it out thoroughly, I'm not worried about the change.  
&lt;/p&gt;

&lt;p&gt;
I used the cache as an interprocess commmunication system to create the semaphores.  It's not strickly speaking atomic, but it's close enough and was dirt simple to implement.  
&lt;/p&gt;














&lt;p&gt;Tags: 
&lt;a href=&quot;http://www.windley.com/tags/krl&quot; rel=&quot;tag, nofollow&quot;&gt;
krl&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/kynetx&quot; rel=&quot;tag, nofollow&quot;&gt;
kynetx&lt;/a&gt;
&lt;a href=&quot;http://www.windley.com/tags/parsing&quot; rel=&quot;tag, nofollow&quot;&gt;
parsing&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Phil Windley</name>
			<uri>http://www.windley.com/</uri>
		</author>
		<source>
			<title type="html">Phil Windley's Technometria</title>
			<subtitle type="html">Organizations Get the IT They Deserve</subtitle>
			<link rel="self" href="http://www.windley.com/rss.xml"/>
			<id>http://www.windley.com/rss.xml</id>
			<updated>2010-07-28T23:40:12+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Monthly presentations now at Code Greene in Salt Lake</title>
		<link href="http://uphpu.org/2010/07/13/monthly-presentations-now-at-code-greene-in-salt-lake/"/>
		<id>http://uphpu.org/?p=702</id>
		<updated>2010-07-13T18:34:16+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;As you&amp;#8217;ve probably recently heard, our great and fearless leader Victor &amp;#8216;mindjuju&amp;#8217; Villa has made some changes, and our previous venue will no longer be available, on top of which he has passed his UPHPU baton to me.&lt;/p&gt;
&lt;p&gt;While it is definitely not a requirement that the meetings be held at the place of employment of the current president, that tradition will continue for the foreseeable future, as he new &lt;a href=&quot;http://uphpu.org/events&quot;&gt;meeting location&lt;/a&gt; is my place of employment. We&amp;#8217;re the one with the big green stripe on the front window and door. Note that you can get to us via southbound State Street at 350 S onto Exchange Place, or via westbound 400 South at about 30 E, onto Cactus Street. Many of you may be familiar with XMission, and we&amp;#8217;re right across the back alley from them. Also important to note is that parking on the street at meters is free after 6pm, and parking in the garage across the street will cost $5 for the evening, and we will be unable to validate. We will continue to meet at seven o&amp;#8217;clock on the evening of the third Thursday of each month.&lt;/p&gt;
&lt;p&gt;There is an Applebee&amp;#8217;s at the Gateway, a short free Trax ride away from our meeting location, so I anticipate we&amp;#8217;ll head over there en masse after the presentation for the after-party. They also validate an hour of parking I think if anyone wanted to drive over there rather than come back to get a car.&lt;/p&gt;
&lt;p&gt;If we find that the downtown location is for whatever reason undesirable, we can switch things up. Since I live in Draper, I would be happy to do the after party at the Draper Applebee&amp;#8217;s if people would prefer, but I suspect our friends from the North might not like driving down there just for a different Applebee&amp;#8217;s, but I could be wrong. &lt;/p&gt;</content>
		<author>
			<name>Utah PHP User Group</name>
			<uri>http://uphpu.org</uri>
		</author>
		<source>
			<title type="html">Utah PHP Users Group</title>
			<subtitle type="html">PHP application development and support</subtitle>
			<link rel="self" href="http://uphpu.org/feed/"/>
			<id>http://uphpu.org/feed/</id>
			<updated>2010-07-16T00:21:00+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">First day on the job</title>
		<link href="http://www.jaredsmith.net/2010/07/12/first-day-on-the-job/"/>
		<id>http://www.jaredsmith.net/?p=105</id>
		<updated>2010-07-13T03:26:56+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://jsmith.fedorapeople.org/Images/Jared_Smith.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;div id=&quot;attachment_109&quot; class=&quot;wp-caption alignright&quot;&gt;&lt;a href=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/T510.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-109&quot; title=&quot;T510&quot; src=&quot;http://www.jaredsmith.net/wp-content/uploads/2010/07/T510-300x245.jpg&quot; alt=&quot;My Lenovo T510 laptop&quot; width=&quot;300&quot; height=&quot;245&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;My T510 laptop&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;As many of you may well know, today was my first day as a new employee of Red Hat and as the new Fedora Project Leader.  I spent the day today in &amp;#8220;new hire orientation&amp;#8221; meetings at Raleigh, which were interesting.  I was impressed by how much time Red Hat took to make sure the new recruits understood the open source way, and where Fedora fits in the mix of things. Some of the highlights for me were Max Spevack explaining open source communities and their importance, and Michael Tiemann (one of my favorite speakers to listen to) giving an excellent presentation on how open source can be a transforming tool for information technology departments.  We also spent time filling out paperwork and making sure we had all our ducks in a row, and ended the day with an ice-cream social.  I&amp;#8217;ll be in new hire orientation tomorrow as well, and then head directly to FUDCon Santiago tomorrow evening. Paul Frields has graciously agreed to help me get up to speed in my new role, which I especially appreciate since I&amp;#8217;ll spend the next two weeks on the road.&lt;/p&gt;
&lt;p&gt;This evening I also was able to start getting Fedora installed on my new laptop.  I opted for a Lenovo T510, mostly because it had been years since I&amp;#8217;d used a new ThinkPad, and I wanted to try something that was likely to be a bit outside of the mainstream.  (I have this weird habit of finding the oddball hardware bugs in Fedora.  Some people go out of their way to make sure their hardware is going to be compatible.  As for me, I throw Fedora on weird hardware and see what breaks.  Call me crazy&amp;#8230;)  This laptop is a bit bigger than most people would want to carry around, but I&amp;#8217;m happy with it.&lt;/p&gt;
&lt;p&gt;Paul Frields was kind enough to take a first stab at getting the laptop setup while I was still in my meetings.  Apparently there&amp;#8217;s an issue with the new VT-d feature (&lt;strong&gt;Virtualization Technology for Directed I/O)&lt;/strong&gt; of the Intel chipsets, as Paul had to disable it in the BIOS to keep anaconda from crashing with what appeared to be memory-corruption issues. Once we got that tracked down and disabled in the BIOS, I threw Fedora on the machine and it&amp;#8217;s been running great ever since.  So far, everything has worked great.  I was a little worried about how well this new wirless chip would be supported, but it&amp;#8217;s working very well.  I was even able to setup a quick ad-hoc wireless network for Paul to be able to connect his laptop through mine.  Suspend/resume worked out of the box, as did the Nouveau driver.  There&amp;#8217;s a bit of funkiness with the reporting of the second battery, but I&amp;#8217;ll do some more troubleshooting on that over the next few days and file a bug.&lt;/p&gt;
&lt;p&gt;The day ended with an excellent sushi dinner (thanks Paul!), and now I&amp;#8217;m back at the hotel getting more software installed on the laptop and working on presentations for FUDCon Chile and FISL.  All in all, I can&amp;#8217;t complain about my first day on the job!&lt;/p&gt;</content>
		<author>
			<name>Jared Smith</name>
			<uri>http://www.jaredsmith.net</uri>
		</author>
		<source>
			<title type="html">Jared Smith</title>
			<subtitle type="html">Thoughts of a Traveling Geek</subtitle>
			<link rel="self" href="http://www.jaredsmith.name/feed/"/>
			<id>http://www.jaredsmith.name/feed/</id>
			<updated>2010-07-24T15:41:31+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">black raspberry bounty</title>
		<link href="http://kaelbot.blogspot.com/2010/07/black-raspberry-bounty.html"/>
		<id>tag:blogger.com,1999:blog-4877234600441129506.post-1935827275604620537</id>
		<updated>2010-07-11T16:47:00+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;a href=&quot;http://lh6.ggpht.com/_yplfPuKoyB8/TDn1tb3n1DI/AAAAAAAADuM/1k4VIWh4A7c/IMAG0016.jpg&quot;&gt;&lt;img src=&quot;http://lh6.ggpht.com/_yplfPuKoyB8/TDn1tb3n1DI/AAAAAAAADuM/1k4VIWh4A7c/s400/IMAG0016.jpg&quot; /&gt;&lt;/a&gt;&lt;p&gt;year 2 for the berries, and they are rocking.  this am we got 37 more for a total of 98 so far.&lt;/p&gt;&lt;div&gt;Published with Blogger-droid v1.4.5&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4877234600441129506-1935827275604620537?l=kaelbot.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Kael</name>
			<email>noreply@blogger.com</email>
			<uri>http://kaelbot.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Kaelbot Central</title>
			<subtitle type="html">Obey The Otter</subtitle>
			<link rel="self" href="http://kaelbot.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-4877234600441129506</id>
			<updated>2010-07-22T22:40:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Install Adobe Reader 9.3.2 on Ubuntu 10.04 LTS “Lucid Lynx”</title>
		<link href="http://feedproxy.google.com/~r/UbuntuTutorials/~3/M5NtfqqhCIc/"/>
		<id>http://ubuntu-tutorials.com/?p=1943</id>
		<updated>2010-07-11T15:44:42+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://2008.utosc.com/static/user_photos/zelut.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 &lt;p&gt;The topic of installing Adobe products in Ubuntu has both been loved and hated by reader since the first time I outlined it. Some very much appreciate the clear steps outlining installation of the PDF reader application. Others despise the idea of proprietary software intermingling with their otherwise open source desktop. However you feel about Adobe Reader, love it or hate it, it is a popular application and in many cases required by users for work or otherwise. With each new Ubuntu release I outline how to install and update your Adobe Reader installation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Repository Requirements (Optional)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Canonical, the parent company behind Ubuntu, has provided a repository to distribute Adobe Reader and similar applications. The method of installing Ubuntu by way of a repository is more automated than a direct download from the Adobe website. I&amp;#8217;ll outline either version, but keep in mind that I prefer (and suggest!) the first. Configuring the partner repository is a requirement for the first option.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Canonical Partner Repository &amp;#8211; Option 1&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Installation of Adobe Reader 9 requires the activation of the Canonical Partner repository. You can add the Partner repository by following the steps outlined below.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Navigate to System &amp;gt; Administration &amp;gt; Software Sources&lt;/li&gt;&lt;li&gt;Select “Third Party” or “Other Software”&lt;/li&gt;&lt;li&gt;Select “Add” and enter: deb http://archive.canonical.com/ lucid partner&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;You should now be able to install the latest version of Adobe Reader on Ubuntu 10.04 LTS by using the following command, or clicking the embedded link:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo aptitude install &lt;a title=&quot;Adobe Reader Package&quot; href=&quot;apt://acroread&quot;&gt;acroread&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ol&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Direct Download: Adobe.com &amp;#8211; Option 2&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The alternate installation solution is to download Adobe Reader directly from the Adobe website. As a disclaimer, I should warn you that this method will not receive automatic updates and it is left to the user to download and install any future releases of this application.&lt;/p&gt;&lt;p&gt;If you understand these requirements, continue to install Adobe Reader using the following steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Visit this page: &lt;a href=&quot;http://get.adobe.com/reader/otherversions/&quot;&gt;http://get.adobe.com/reader/otherversions/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Select &amp;#8220;Linux &amp;#8211; x86 (.deb)&amp;#8221; from the drop-down menu&lt;/li&gt;&lt;li&gt;Select your preferred language&lt;/li&gt;&lt;li&gt;Download the package&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Depending on your browser you may be prompted to open the package with the package installer, or it will simply save it to disk. If it saves to disk, you&amp;#8217;ll simply need to double-click the archive for the installation to begin.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Most of my dealings with PDF files is managed by Evince, the default GNOME pdf reader. Occasionally however I need the Adobe-specific application. As with many of the readers here, I prefer the free software solution where possible, but sometimes it just isn&amp;#8217;t possible. Love it or hate it, Adobe Reader is sometimes part of our lives.&lt;/p&gt;&lt;p&gt;Again, I would suggest the first solution toward installing Adobe Reader as it will automatically manage security updates for you. The packages are provided directly from Canonical, Ubuntu&amp;#8217;s parent company, and managed by Ubuntu staff. I trust these packages just as much (if not more) than the direct-from-adobe packages available in the secondary solution.&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;January 14, 2010 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2010/01/14/install-adobe-pdf-reader-9-on-ubuntu-9-10-karmic-koala/&quot; title=&quot;Install Adobe PDF Reader 9 on Ubuntu 9.10 &amp;#8220;Karmic Koala&amp;#8221;&quot;&gt;Install Adobe PDF Reader 9 on Ubuntu 9.10 &amp;#8220;Karmic Koala&amp;#8221; (9)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;June 23, 2008 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2008/06/23/install-adobe-acrobat-reader-812-on-ubuntu-804/&quot; title=&quot;Install Adobe Acrobat Reader 8.1.2 on Ubuntu 8.04&quot;&gt;Install Adobe Acrobat Reader 8.1.2 on Ubuntu 8.04 (74)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;May 6, 2010 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2010/05/06/ubuntu-10-04-lucid-blank-screen-at-startup-workaround/&quot; title=&quot;Ubuntu 10.04 &amp;#8220;Lucid&amp;#8221; Blank Screen at Startup : Workaround&quot;&gt;Ubuntu 10.04 &amp;#8220;Lucid&amp;#8221; Blank Screen at Startup : Workaround (57)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;May 4, 2010 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2010/05/04/upgraded-to-ubuntu-10-04-lucid-lynx/&quot; title=&quot;Upgraded to Ubuntu 10.04 &amp;#8220;Lucid Lynx&amp;#8221;&quot;&gt;Upgraded to Ubuntu 10.04 &amp;#8220;Lucid Lynx&amp;#8221; (7)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;January 15, 2010 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2010/01/15/ubuntu-10-04-lucid-lynx-alpha-2-released/&quot; title=&quot;Ubuntu 10.04 &amp;#8220;Lucid Lynx&amp;#8221; Alpha 2 Released&quot;&gt;Ubuntu 10.04 &amp;#8220;Lucid Lynx&amp;#8221; Alpha 2 Released (2)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;September 19, 2009 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2009/09/19/lucid-lynx-ubuntu-10-04-codename-announced/&quot; title=&quot;Lucid Lynx? Ubuntu 10.04 Codename Announced&quot;&gt;Lucid Lynx? Ubuntu 10.04 Codename Announced (4)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;July 3, 2008 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2008/07/03/printi-directly-to-pdf-in-ubuntu-804/&quot; title=&quot;Print Directly To PDF in Ubuntu 8.04&quot;&gt;Print Directly To PDF in Ubuntu 8.04 (18)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;June 25, 2008 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2008/06/25/install-adobe-acrobat-plugins-for-firefox/&quot; title=&quot;Install Adobe Acrobat Plugins For Firefox&quot;&gt;Install Adobe Acrobat Plugins For Firefox (8)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;January 29, 2008 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2008/01/29/medibuntu-the-only-3rd-party-repo-i-use/&quot; title=&quot;Medibuntu : The Only 3rd Party Repo I Use&quot;&gt;Medibuntu : The Only 3rd Party Repo I Use (11)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;December 26, 2007 &amp;#8212; &lt;a href=&quot;http://ubuntu-tutorials.com/2007/12/26/manually-install-adobe-flash-temporary-flashplugin-nonfree-fix/&quot; title=&quot;Manually install Adobe Flash / Temporary flashplugin-nonfree fix&quot;&gt;Manually install Adobe Flash / Temporary flashplugin-nonfree fix (18)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/-nbjyfgiHCxGB1vP3vYT3bf_9dQ/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/-nbjyfgiHCxGB1vP3vYT3bf_9dQ/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/-nbjyfgiHCxGB1vP3vYT3bf_9dQ/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/-nbjyfgiHCxGB1vP3vYT3bf_9dQ/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/UbuntuTutorials?a=M5NtfqqhCIc:KUAwDU2Xmrs:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UbuntuTutorials?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/UbuntuTutorials?a=M5NtfqqhCIc:KUAwDU2Xmrs:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UbuntuTutorials?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/UbuntuTutorials?a=M5NtfqqhCIc:KUAwDU2Xmrs:YwkR-u9nhCs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UbuntuTutorials?d=YwkR-u9nhCs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UbuntuTutorials/~4/M5NtfqqhCIc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Christer Edwards</name>
			<uri>http://ubuntu-tutorials.com</uri>
		</author>
		<source>
			<title type="html">Ubuntu Tutorials</title>
			<subtitle type="html">Enhancing your Ubuntu experience!</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/UbuntuTutorials"/>
			<id>http://feeds.feedburner.com/UbuntuTutorials</id>
			<updated>2010-07-26T14:43:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Google map with Utah Repeaters</title>
		<link href="http://allmybrain.com/2010/07/10/google-map-with-utah-repeaters/"/>
		<id>http://allmybrain.com/?p=374</id>
		<updated>2010-07-10T17:08:15+00:00</updated>
		<content type="html">
                    &lt;img src=&quot;http://planet.utos.org/images/heads/default.png&quot;  alt=&quot;&quot; style=&quot;float: right;&quot;&gt;
 I thought it would be helpful to visualize where all the radio repeaters are in my area. I found a lack of map information available for this sort of thing but I found readily available CSV data with the information. Google Fusion Tables to the rescue! I tried to embed the map in this post [...]</content>
		<author>
			<name>Dennis Muhlestein</name>
			<uri>http://allmybrain.com</uri>
		</author>
		<source>
			<title type="html">All My Brain</title>
			<subtitle type="html">Where stuff from my brain lands</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/AllMyBrain?format=xml"/>
			<id>http://feeds.feedburner.com/AllMyBrain?format=xml</id>
			<updated>2010-07-30T20:00:59+00:00</updated>
		</source>
	</entry>

</feed>
