<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-56293275216301513</id><updated>2024-12-13T02:39:38.515-05:00</updated><category term="Release It"/><category term="Ship It"/><category term="Prefactoring"/><category term="Java"/><category term="VIrtual Box"/><category term="Classloader"/><category term="Spring Security"/><category term="3D"/><category term="Amica"/><category term="Android"/><category term="Apple"/><category term="Avatar"/><category term="Blogger"/><category term="Books"/><category term="Flash"/><category term="Google"/><category term="Google App Engine"/><category term="Google Apps"/><category term="KeePass"/><category term="Pragmatic Bookshelf"/><category term="RESTful"/><category term="Revo"/><category term="SQ3R"/><category term="Security Now"/><category term="Spring"/><category term="Terracotta"/><category term="Twitter"/><category term="XBMC"/><category term="Xubuntu"/><category term="audible.com"/><category term="drm"/><category term="linux"/><category term="ubuntu"/><title type='text'>Quick Tech Notes</title><subtitle type='html'>Quick blurbs about my daily struggle with technology.  You&#39;ll likely to find ramblings about Linux, Java, home networks and Cloud computing.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>148</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-5641643272434941216</id><published>2010-08-05T12:32:00.000-04:00</published><updated>2010-08-05T12:32:03.147-04:00</updated><title type='text'>Atlassian Stack: FishEye (auto start)</title><content type='html'>Today&#39;s ticket is to rig up FishEye so that it starts at boot time.&amp;nbsp; I scoured the FishEye docs and googled but came up empty.&amp;nbsp; There is a Mac OS X solution and one for an older version of FishEye and CentOS.&amp;nbsp; Nothing for Karmic Koala.&amp;nbsp; My solution?&amp;nbsp; Emulate what was done for Jira.&amp;nbsp; I copied /etc/init/jira.conf and created /etc/init/fisheye.conf.&amp;nbsp; My resulting file looks like this:&lt;br /&gt;
&lt;pre&gt;# fisheye

description     &quot;Atlassian FishEye - Source control viewer&quot;

start on runlevel [2345]
stop on runlevel [!2345]

kill timeout 30

env RUN_AS_USER=fisheye
env BASEDIR=/opt/fisheye

script
    LOGFILE=$BASEDIR/fisheye.out.`date +%Y-%m-%d`.log
    exec su - $RUN_AS_USER -c &quot;$BASEDIR/bin/start.sh&quot; &amp;gt;&amp;gt; $LOGFILE 2&amp;gt;&amp;amp;1
end script

&lt;/pre&gt;&lt;br /&gt;
The solution does not appear to be perfect, however.&amp;nbsp; If I issue &lt;b&gt;&lt;i&gt;sudo service jira stop&lt;/i&gt;&lt;/b&gt;, I get this: &lt;i&gt;jira stop/waiting&lt;/i&gt;.&amp;nbsp; If I issue &lt;b&gt;&lt;i&gt;sudo service fisheye stop&lt;/i&gt;&lt;/b&gt;, I get this:&amp;nbsp; &lt;i&gt;stop: Unknown instance&lt;/i&gt;.&amp;nbsp; Not good. I don&#39;t want to just kill the process when I shutdown the box.&amp;nbsp; Who knows what type of data corruption will occur?&amp;nbsp; I need to figure out what is wrong with my script and fix it.&amp;nbsp; One difference is that the other Atlassian pieces bundle their own copy of Tomcat and that is what we invoke in the start scripts.&amp;nbsp; FishEye uses something else.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
I googled about Upstart and decided that I won&#39;t ever fully understand how it works.&amp;nbsp; So, I&#39;ve decide to make two upstart scripts.&amp;nbsp; One that controls starting up FishEye and boot time (fisheye-start.conf) and one that controls shutting down FishEye during shutdown (fisheye-stop.conf).&amp;nbsp; Perhaps not the most elegant solution but it appears to work.&amp;nbsp; All I&#39;m doing is calling start.sh in one and stop.sh in the other.&amp;nbsp; Nothing fancy.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/5641643272434941216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/08/atlassian-stack-fisheye-auto-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5641643272434941216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5641643272434941216'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/08/atlassian-stack-fisheye-auto-start.html' title='Atlassian Stack: FishEye (auto start)'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-8580552711859100240</id><published>2010-08-05T10:04:00.000-04:00</published><updated>2010-08-05T10:04:34.023-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Spring Security"/><title type='text'>How Do I Use Spring Security To Secure Spring MVC and Spring BlazeDS In The Same Application?</title><content type='html'>Context: I have a single web application that is based on Spring 3. &amp;nbsp;It serves up RESTful resources using the new Spring MVC annotations and it works fine. &amp;nbsp;After some head scratching and research, I finally figured out the configuration required to lock down the Spring MVC calls with Digest Authentication via Spring Security 3. &amp;nbsp;I then wanted the ability to provide access to the same set of services to our Flex clients using AMF so I added Spring BlazeDS Integration to the mix. &amp;nbsp;Remoting a service via Spring is almost trivial. &amp;nbsp;Add an annotation or two and you are good to go. &amp;nbsp;Adding security to the mix is almost as easy. &amp;nbsp;If you follow the directions on how to lock down your AMF channels, it&#39;ll work fine. &amp;nbsp;The problem I ran into is that set of security filters set up by the Spring BlazeDS Integration directions interfere with the set of filters needed by Spring MVC. &amp;nbsp;The solution? &amp;nbsp;Watch things in the debugger in a working environment, reverse engineer the required filters for Spring BlazeDS and then specify them by hand in your Spring Security set up. &amp;nbsp;Spring Security uses a chain of filters to apply authentication logic to servlets. &amp;nbsp;Spring MVC and Spring BlazeDS get their own instance of DispatcherServlet in the application. &amp;nbsp;You then apply the required filters to the appropriate servlet. &amp;nbsp;My solution was to break up the Spring Security beans into three files:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;common-security-context.xml&lt;/b&gt; - holds beans that are common to both Spring MVC and Flex authentication&lt;/li&gt;
&lt;li&gt;&lt;b&gt;mvc-security-context.xml&lt;/b&gt; - holds the beans specific to authentication of the RESTful API&lt;/li&gt;
&lt;li&gt;&lt;b&gt;flex-security-context.xml&lt;/b&gt; - holds the beans specific to authentication of the BlazeDS calls&lt;/li&gt;
&lt;/ul&gt;What you should end up with is the ability to invoke the service in two ways: one as a RESTful resource and one as a Flex Remote Object. &amp;nbsp;In each case, providing the same set of credentials should authenticate you. &amp;nbsp;In summary, relying on the Spring Security namespace to set up your security environment does not work if you are combining Flex and Digest authentication: you need to set things up by hand.&lt;br /&gt;
&lt;br /&gt;
Here are my versions of the files in question. &amp;nbsp;I hope that it saves you some time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2519166/spring-flex/web.xml&quot;&gt;web.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2519166/spring-flex/common-security-context.xml&quot;&gt;common-security-context.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2519166/spring-flex/mvc-security-context.xml&quot;&gt;mvc-security-context.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2519166/spring-flex/flex-security-context.xml&quot;&gt;flex-security-context.xml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&amp;nbsp;&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/8580552711859100240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/08/how-do-i-use-spring-security-to-secure.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8580552711859100240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8580552711859100240'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/08/how-do-i-use-spring-security-to-secure.html' title='How Do I Use Spring Security To Secure Spring MVC and Spring BlazeDS In The Same Application?'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-5625204989445063131</id><published>2010-08-02T13:04:00.000-04:00</published><updated>2010-08-02T13:04:52.401-04:00</updated><title type='text'>Atlassian Stack: FishEye</title><content type='html'>Today&#39;s mission: install FishEye, the source control repository analysis tool.  Quoting the online docs: &quot;FishEye unlocks Subversion, Git, Perforce, Clearcase, CVS, and Mercurial with real-time notifications of code changes plus web-based reporting, visualisation, search and code sharing.&quot;  I&#39;ll be installing 2.3.5 Standalone edition.  &lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;create a new user account and group named fisheye&lt;/li&gt;
&lt;li&gt;add the fisheye account to the subversion group -- it needs read only access to the Subversion repository&amp;nbsp;&lt;/li&gt;
&lt;li&gt;extract the fisheye zip into /opt&lt;/li&gt;
&lt;li&gt;make a softlink from the new installation directory to /opt/fisheye&lt;/li&gt;
&lt;li&gt;change ownership of the installation directory over to fisheye:fisheye.&lt;/li&gt;
&lt;li&gt;mkdir /opt/fisheye-home&lt;/li&gt;
&lt;li&gt;change ownership over to the fisheye account&lt;/li&gt;
&lt;li&gt;export FISHEYE_INST in /etc/environment so that it points to /opt/fisheye-home&lt;/li&gt;
&lt;li&gt;copy /opt/fisheye/config.xml to /opt/fisheye-home&lt;/li&gt;
&lt;li&gt;logged out and then back into the account to make sure that the environment variable was set correctly&lt;/li&gt;
&lt;li&gt;as the fisheye account, start fisheye: sudo -u fisheye /opt/fisheye/bin/run.sh&lt;/li&gt;
&lt;li&gt;connect to http://localhost:8060/ and run through the wizard&lt;/li&gt;
&lt;li&gt;had to do something odd, in order to get the server id I had to start with the &quot;obtain evaluation license&quot; option and then back out and do the &quot;enter existing license option&quot;&lt;/li&gt;
&lt;li&gt;Added the Subversion repository by specifying svn://localhost/opt/svn&lt;/li&gt;
&lt;/ol&gt;The initial installation is done. &amp;nbsp;Next step, integrate it with the rest of the stack.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/5625204989445063131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/08/atlassian-stack-fisheye.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5625204989445063131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5625204989445063131'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/08/atlassian-stack-fisheye.html' title='Atlassian Stack: FishEye'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-3334308869388974061</id><published>2010-07-30T15:14:00.000-04:00</published><updated>2010-07-30T15:14:48.376-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="RESTful"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Security"/><title type='text'>Spring Security 3 and Digest Authentication</title><content type='html'>This was a tough one so I thought I&#39;d take a few moments and share what I found. &amp;nbsp;Context: I&#39;m using Spring 3 as the basis for a set of RESTful services. &amp;nbsp;The new MVC enhancements makes supporting a RESTful API pretty simple. &amp;nbsp;What I wanted to do what to lock down the API a bit and turned to Spring Security 3 to make that happen. &amp;nbsp;Not wanting to enable HTTPS, at least not yet, I turned to Digest Authentication which provides a reasonable authentication mechanism without having to hassle with digital certificates. &amp;nbsp;Getting Spring Security enabled and, at least initially, authenticating with Basic Authentication was a breeze. &amp;nbsp;Once I tried to enable Digests Authentication, things got weird.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Luckily, I was able to locate two resources that steered me down the correct path. &amp;nbsp;One is the book, &lt;a href=&quot;https://www.packtpub.com/spring-security-3/book&quot;&gt;Spring Security 3&lt;/a&gt;&amp;nbsp;and another was an article on DZone titled &quot;&lt;a href=&quot;http://java.dzone.com/articles/using-spring-security-enforce&quot;&gt;Using Spring Security to Enforce Authentication and Authorization on Spring Remoting Services Invoked From a Java SE Client&lt;/a&gt;&quot;. &amp;nbsp; The upshot is that you cannot rely on the simple namespace configuration that is almost always talked about in the Spring Security 3 literature. &amp;nbsp;It assumes a JSP type of environment with form login screens et al. &amp;nbsp;In my case, I&#39;m using just enough of the web stack to allow for HTTP based manipulation of the server-side resource -- no gui. &amp;nbsp;This means you have to configure things by hand so it&#39;ll suit your needs. &amp;nbsp; Here is the &lt;a href=&quot;http://dl.dropbox.com/u/2519166/security-context.xml&quot;&gt;Spring context file I used&lt;/a&gt; to enable Digest Authentication for my RESTful services.&lt;br /&gt;
&lt;br /&gt;
Since this was a prototype, I&#39;m relying on the in-memory credential store but you should be able to wire up some more suitable for a production environment. &amp;nbsp;What I wanted to do was to authenticate at the web layer but authorize at the services layer. &amp;nbsp;The authentication is handled by the Digest Authentication pieces and the authorization is handled by annotations in service interfaces. &amp;nbsp;For example:&lt;br /&gt;
&lt;pre&gt;public interface EchoPort
{
    @PreAuthorize( &quot;hasRole( &#39;ROLE_ADMIN&#39; )&quot; )
    EchoResponse echoMessage( final EchoRequest request ) throws EchoError;
}
&lt;/pre&gt;&lt;br /&gt;
I used &lt;a href=&quot;http://hc.apache.org/httpcomponents-client/&quot;&gt;Apache HttpClient 4.0.1&lt;/a&gt; for testing and was pleasantly surprised to find that it handled both Basic and Digest authentication for me. &amp;nbsp;All I had to do was to provide the credentials prior to making the call the HttpClient handled the rest.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;theClient.getCredentialsProvider().setCredentials( AuthScope.ANY, new UsernamePasswordCredentials( defaultUserName, defaultPassword ) );
&lt;/pre&gt;&lt;br /&gt;
I hope this saves you a bit of time.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/3334308869388974061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/spring-security-3-and-digest.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/3334308869388974061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/3334308869388974061'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/spring-security-3-and-digest.html' title='Spring Security 3 and Digest Authentication'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-4014015961485181043</id><published>2010-07-29T13:44:00.000-04:00</published><updated>2010-07-29T13:44:13.821-04:00</updated><title type='text'>Atlassian Stack: Confluence (integration)</title><content type='html'>Today&#39;s goal is to integrate Confluence with Jira and Crowd. &amp;nbsp;In the Jira admin doc I found a section on integrating Jira and Confluence. &amp;nbsp;I&#39;ll run through that. &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;configured quick search to point back to the Jira URL&lt;/li&gt;
&lt;li&gt;configured track back, had to also go into Jira&lt;/li&gt;
&lt;li&gt;user Confluence gadgets in Jira (I those to use trusted applications instead of oauth). I had to configure trusted application on both the Jira and Confluence sides. &amp;nbsp;After reading the instructions, it became clear that adding gadgets would be a pain -- you have to add them individually. &amp;nbsp;I&#39;ve decided to add gadgets only when/if I decide they might be useful. &amp;nbsp;Enabled the atlassian-gadgest-shared plugin in Confluence&lt;/li&gt;
&lt;li&gt;enable Jira linker plugin by entering the download URL of the plugin into the Confluence plugin manager screen&lt;/li&gt;
&lt;li&gt;after a bit of searching I found the Confluence section that describes how to integrate Confluence into Crowd. I did not build a new directory. &amp;nbsp;I just reused the one I made for Jira instead. &amp;nbsp;I made the required confluence groups and made one of the users a member of both groups. &amp;nbsp;copied the jar files and edited the configuration files as instructed. restarted confluence. &amp;nbsp;Logged in with a crowd user and enabled External user management so that you have to manage users via Crowd.&lt;/li&gt;
&lt;li&gt;add the &quot;userful extendsions&quot; described in the instructions. &amp;nbsp;Of the 3 suggested, I could only install the Jira Confluence portlet because the other two wanted me to authenticate for access to accounts I don&#39;t have. &amp;nbsp;Oh, we..&lt;/li&gt;
&lt;/ul&gt;Not as a clean integration as I would&#39;ve liked. Much of it appears to be plugin driven, which have to install yourself.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/4014015961485181043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-confluence-integration.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/4014015961485181043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/4014015961485181043'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-confluence-integration.html' title='Atlassian Stack: Confluence (integration)'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-1473755348464526148</id><published>2010-07-28T12:36:00.000-04:00</published><updated>2010-07-28T12:36:10.115-04:00</updated><title type='text'>Atlassian Stack: Confluence (auto-start)</title><content type='html'>I had to search on &quot;confluence auto start&quot; to find the page that describes how to auto start Confluence under Linux. &amp;nbsp;Like the other products, the note from Daniel Harvey describing how to configure things for Karmic are the steps you want to follow. &amp;nbsp;Make sure to make adjustments based on the link so that Crowd starts before Jira or Confluence. &amp;nbsp;For me, that meant a trip back into the crowd.conf file. &amp;nbsp;I rebooted the machine and verified that Confluence had started for me. &amp;nbsp;Easy as pie.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/1473755348464526148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-confluence-auto-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/1473755348464526148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/1473755348464526148'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-confluence-auto-start.html' title='Atlassian Stack: Confluence (auto-start)'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-5852935031438386562</id><published>2010-07-27T13:17:00.000-04:00</published><updated>2010-07-27T13:17:43.982-04:00</updated><title type='text'>Atlassian Stack: Confluence</title><content type='html'>GreenHopper says that I have to install Confluence so that is what I&#39;ll be doing today. &amp;nbsp;Dragging the Confluence card over from To DO to In Progress gets me started. &amp;nbsp;I&#39;ll be following the Confluence installation guide using the standalone directions.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;download and extract the standalone version into /opt&lt;/li&gt;
&lt;li&gt;make a soft link to the new directory so I can get to it via /opt/confluence&lt;/li&gt;
&lt;li&gt;the docs says that for Debian based Linux you might need to grab some X11 libraries. &amp;nbsp;Just to be safe, I&#39;ll follow their advice and install them: sudo&amp;nbsp;apt-get install libice-dev libsm-dev libx11-dev libxext-dev libxp-dev libxt-dev libxtst-dev. Installation failed because I already have the libs installed (I&#39;m running the desktop version of Ubuntu so the X11 stuff is already available).&lt;/li&gt;
&lt;li&gt;created a confluence user and group&lt;/li&gt;
&lt;li&gt;created a directory to hold the Confluence data: mkdir /opt/confluence-home&lt;/li&gt;
&lt;li&gt;changed the owner ship of that directory and the confluence installation directory to be owned by the confluence account&lt;/li&gt;
&lt;li&gt;edited the confluence-init.properties to point to /opt/confluence-home&lt;/li&gt;
&lt;li&gt;Jira is running on ports 8005 and 8080 which is Confluence&#39;s default port, so I have to edit the server.xml file to use a new port. &amp;nbsp;I&#39;ll go with 8000 and 8090. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;next, I&#39;ve got to wire up Confluence to our mysql instance&lt;/li&gt;
&lt;li&gt;I chose not to modify the MySQL instance to specify InnoDb for fear of corrupting the existing databases.&lt;/li&gt;
&lt;li&gt;using Webmin, I created an new MySQL user named confluenceuser and gave it full privs.&lt;/li&gt;
&lt;li&gt;using Webmin, created a new database named confluence making sure to select UTF-8 as the character set and utf8_bin as the collation order.&lt;/li&gt;
&lt;li&gt;start up Confluence, connect to http://localhost:8090/ and run through the wizards&lt;/li&gt;
&lt;li&gt;I elected to start with an example site instead of an empty one&lt;/li&gt;
&lt;/ol&gt;Everything went off without a hitch. &amp;nbsp;I did realize, however, that a task needs to be added to have Confluence auto-start at boot time. &amp;nbsp;The question is, what is the best way to add that story in Greenhopper? &amp;nbsp;Specifically, how can I make the task dependent? &amp;nbsp;I decided to go into the &quot;install Confluence&quot; story and make a sub-task. &amp;nbsp;That new task ended up in my To Do list. &amp;nbsp;Easy. &amp;nbsp;I found a workflow issue: I was allowed to resolve the master task despite having two open sub-tasks. &amp;nbsp;There must be a setting somewhere that prevents that.&lt;ol&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/5852935031438386562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-confluence.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5852935031438386562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5852935031438386562'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-confluence.html' title='Atlassian Stack: Confluence'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-2212973997061106058</id><published>2010-07-26T13:39:00.000-04:00</published><updated>2010-07-26T13:39:54.053-04:00</updated><title type='text'>Atlassian Stack: Subversion and Mercurial Installation</title><content type='html'>I&#39;ve got a few moments so I figured I would take an easy task and install Subversion and Mercurial. &amp;nbsp;I&#39;m not sure if the Atlassian stack supports Mercurial but I&#39;m going to install anyway, just in case. &amp;nbsp;In Greenhopper, I moved the two tasks from the to-do list into my in-progress list by simply dragging and dropping the two cards from one column to the other. &amp;nbsp;I was in the Task Board view at the time. &amp;nbsp; Using Synaptic, I installed the subversion, subversion-tools, &amp;nbsp;mercurial and mercurial-server packages. &amp;nbsp;The mercurial server installation failed with a post-install trigger failure. &amp;nbsp;Since I&#39;m not even sure if I can use that server, I decided not to worry about the problem. &amp;nbsp;I created a subversion user and group who will own the Subversion repository area. &amp;nbsp;I made my local account a member of the subversion group. &amp;nbsp;As my local user, I created the Subversion repository: svnadmin create /opt/svn. &amp;nbsp;I then changed the ownership over to the subversion account and made the group bit sticky: sudo chown -R subversion:subversion /opt/svn followed by sudo chmod -R g+s /opt/svn. &amp;nbsp;Lastly, I modified a copy of the /etc/init/jira.conf &amp;nbsp;so that it would start Subverion in daemon mode at startup. &amp;nbsp;I tested the server by using Subversion over SSH: svn list svn+ssh://localhost/opt/svn. &amp;nbsp;I created a mercurial user and group and added my local account to the mercurial group. &amp;nbsp;I then created a directory that will hold the various mercurial repositories making sure to set the ownership to mercurial:mercurial and making the group bit sticky. &amp;nbsp;I&#39;ll admit that I didn&#39;t do any real testing but I think that when we discover an issue in the future, I&#39;ll be able to use the bug tracking features in Greenhopper. &amp;nbsp;I went into GH, logged the amount of time I worked on each issue and the resolved the task.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/2212973997061106058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-subversion-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/2212973997061106058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/2212973997061106058'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-subversion-and.html' title='Atlassian Stack: Subversion and Mercurial Installation'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-8934739468536760844</id><published>2010-07-26T12:38:00.000-04:00</published><updated>2010-07-26T12:38:23.844-04:00</updated><title type='text'>Atlassian Stack: GreenHopper Configuration</title><content type='html'>I&#39;m following the GreenHopper 101 document to make sure that the basic configuration is correct.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;install the recommended Labels plugin so I can make use of Epics&lt;/li&gt;
&lt;li&gt; shutdown Jira: sudo service jira stop&lt;/li&gt;
&lt;li&gt;copy the Labels plug into Jira: sudo -u jira cp jira-labels-plugin-2.4.jar /opt/jira/plugins/installed-plugins/&lt;/li&gt;
&lt;li&gt;restart jira: sudo service jira start&lt;/li&gt;
&lt;li&gt;follow the directions for configuring Jira for Scrum&lt;/li&gt;
&lt;li&gt;create a new project category:Installation&lt;/li&gt;
&lt;li&gt;create a new project: Atlassian&lt;/li&gt;
&lt;li&gt; set the project to use the Scrum template&lt;/li&gt;
&lt;li&gt;add Kanban constraints to the project (I don&#39;t see the view that the instructions say I should have). I noticed that the Task view wasn&#39;t coming up and the error message said it was because the project didn&#39;t have a release date.&amp;nbsp; I added a version to the project and gave it a release date.&amp;nbsp; Now I can get into the Task view but I don&#39;t see the Compact (Kanban) they say I should see. &amp;nbsp;I looked and Googled but never found anything. &amp;nbsp;Eventually, I gave up. I might take advantage of my support and see if they can help.&lt;/li&gt;
&lt;li&gt;I had to create a new dashboard based on the default dashboard before I could add the Agile gadget indicated by the directions &lt;/li&gt;
&lt;li&gt;I opened up&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: arial, FreeSans, Helvetica, sans-serif; font-size: 14px; line-height: 19px;&quot;&gt;&lt;a href=&quot;https://support.atlassian.com/browse/GHS-1194&quot; id=&quot;key-val&quot; style=&quot;color: #660000; cursor: pointer; text-decoration: underline;&quot;&gt;GHS-1194&lt;/a&gt;&amp;nbsp;to see if Atlassian can help with the missing Compact (Kanban) menu selection.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Going back into the server after Atlassian commented on my ticket, I found that the missing menu selection was available. &amp;nbsp;I&#39;m guessing I had to reboot the server to make everything appear.&lt;/li&gt;
&lt;li&gt;I was finally able to configure the constraints as described in the document. &amp;nbsp;Multiple columns can be constrained so I just followed the example and did one.&lt;/li&gt;
&lt;li&gt;I should comment that while I was waiting for Atlassian to get back to me, I created 5 stories for Sprint 1 of the project. &amp;nbsp;I&#39;m not sure if that, plus the server reboot, caused the Kanban menu selection to appear but I wanted to note it none the less.&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/8934739468536760844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-greenhopper_26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8934739468536760844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8934739468536760844'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-greenhopper_26.html' title='Atlassian Stack: GreenHopper Configuration'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-1466143682678794091</id><published>2010-07-20T16:56:00.000-04:00</published><updated>2010-07-20T16:56:35.139-04:00</updated><title type='text'>Atlassian Stack: Crowd and Jira Integration</title><content type='html'>&lt;ol&gt;&lt;li&gt;Followed the Crowd Administration Guide, specifically the section on adding an application&lt;/li&gt;
&lt;li&gt;create a Crowd directory for Jira. I called mine Jira&lt;/li&gt;
&lt;li&gt;create three groups in Crowd: jira-users, jira-developers, jira-administrators and add them to the Jira directory&lt;/li&gt;
&lt;li&gt;create at least one user who is in all 3 groups&lt;/li&gt;
&lt;li&gt;define the Jira application in crowd following the instructions provided&lt;/li&gt;
&lt;li&gt;copy the Crowd client libraries into the Jira application. I stopped the jira server. &amp;nbsp;Removed the existing crowd client jar, copied the new one from /opt/crowd/client and set the permissions so that the file was owned by the jira user and group.&lt;/li&gt;
&lt;li&gt;replace Jira&#39;s cache configuration file in /opt/jira/atlassian-jira/WEB-INF/classes crowd-ehcache.xml with the one in /opt/crowd/client/conf and reset the file ownership&lt;/li&gt;
&lt;li&gt;edit /opt/jira/atlassian-jira/WEB-INF/classes/osuser.xml and add the Crowd specific section described in the instructions&lt;/li&gt;
&lt;li&gt;edit&amp;nbsp;/opt/jira/atlassian-jira/WEB-INF/classes/seraph-config.xml as instructed&lt;/li&gt;
&lt;li&gt;start jira&lt;/li&gt;
&lt;li&gt;log into Jira using the new Crowd user&lt;/li&gt;
&lt;li&gt;enable external user management as instructed&lt;/li&gt;
&lt;/ol&gt;Done. A lot of steps but Crowd now controls user accounts. &amp;nbsp;Next up: GreenHopper configuration.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/1466143682678794091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-crowd-and-jira.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/1466143682678794091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/1466143682678794091'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-crowd-and-jira.html' title='Atlassian Stack: Crowd and Jira Integration'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-7895835108607168134</id><published>2010-07-20T12:54:00.000-04:00</published><updated>2010-07-20T12:54:36.940-04:00</updated><title type='text'>Atlassian Stack: GreenHopper</title><content type='html'>&lt;ol&gt;&lt;li&gt;grab a copy of GreenHopper, standalone version&lt;/li&gt;
&lt;li&gt;follow the installation guide&lt;/li&gt;
&lt;li&gt;shutdown jira - sudo service jira stop&lt;/li&gt;
&lt;li&gt;copy the GreenHopper jar to &lt;tt&gt;/opt/jira/plugins/installed-plugins&lt;/tt&gt;. I also had to change permissions on the file to be owned by the jira user and group.&lt;/li&gt;
&lt;li&gt;start jira - sudo service jira start&lt;/li&gt;
&lt;li&gt;hit http://localhost:8080/ and log in as the administrator&lt;/li&gt;
&lt;li&gt;follow the directions for entering in the GreenHopper license&lt;/li&gt;
&lt;/ol&gt;That is it.&amp;nbsp; Tomorrow I&#39;ll configure GreenHopper because I intend to use it to help track the installation of the rest of the stack.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/7895835108607168134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-greenhopper.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/7895835108607168134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/7895835108607168134'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-greenhopper.html' title='Atlassian Stack: GreenHopper'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-8165232680705624832</id><published>2010-07-20T12:24:00.000-04:00</published><updated>2010-07-20T12:24:24.548-04:00</updated><title type='text'>Atlassian Stack: Jira (autostart)</title><content type='html'>I found &lt;a href=&quot;http://confluence.atlassian.com/display/JIRA/Starting+JIRA+Standalone+automatically+on+Linux&quot;&gt;these directions&lt;/a&gt; for configuring Jira to auto-start.&amp;nbsp; The main recipe is for the old System V mechanism but a reader left a note on how to set things up for Upstart, which is what my Ubuntu installation uses.&amp;nbsp; I&#39;ll use his configuration file which I dropped into &lt;i&gt;/etc/init&lt;/i&gt;.&amp;nbsp; All I did was edit his configuration to match my directory names, rebooted and then verified that I could hit &lt;i&gt;http://localhost:8080/&lt;/i&gt;.&amp;nbsp; Worked like a champ.&amp;nbsp; Onto the next application.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/8165232680705624832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-jira-autostart.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8165232680705624832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8165232680705624832'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-jira-autostart.html' title='Atlassian Stack: Jira (autostart)'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-3585386362630215814</id><published>2010-07-19T13:21:00.000-04:00</published><updated>2010-07-19T13:21:07.746-04:00</updated><title type='text'>Atlassian Stack: Jira</title><content type='html'>Next up is Jira, the task/bug tracking portion of the stack. &lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Grabbed the standalone version and unpacked into the /opt directory. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Made a soft link to the install so upgrades will be a bit easier: ln -s atlassian-jira-enterprise-4.1.2-standalone jra&lt;/li&gt;
&lt;li&gt;edit /opt/jira/atlassian-jira/WEB-INF/classes/jira-application.properties so that jira.home points /opt/jira&lt;/li&gt;
&lt;li&gt;used Webmin to create a user just for the Jira process. &amp;nbsp;I called mine, wait for it...jira.&lt;/li&gt;
&lt;li&gt;changed ownership of the jira installation directory to be owned by the jira user&lt;/li&gt;
&lt;li&gt;start up jira as the jira user: sudo -u jira /opt/jira/bin/startup.sh&lt;/li&gt;
&lt;li&gt;I got a PermGen switch warning which pointed me to the troubleshooting guide. &amp;nbsp;Decided not to worry about it until I actually do run out of PermGen space&lt;/li&gt;
&lt;li&gt;I realized that the instructions did not walk me through how to connect Jira to my database so I shutdown the instance and followed those directions.&lt;/li&gt;
&lt;li&gt;using Webmin, I created a new db user named: jirauser and gave it all permissions&lt;/li&gt;
&lt;li&gt;using Webmin, created a new database name jira making sure to set it to use UTF-8 encodings&lt;/li&gt;
&lt;li&gt;copy the MySQL JDBC driver to the /opt/jira/lib directory. &amp;nbsp;Once I did that, I saw that a JDBC driver already existed in that directory, although a slightly older one, so I removed mine and left things as is.&lt;/li&gt;
&lt;li&gt;run the Jira configuration tool: sudo -u jira /opt/jira/bin/config.sh . &amp;nbsp;I had a problem doing this because the jira account isn&#39;t meant for logging in and doesn&#39;t have an environment. &amp;nbsp;To work around this, I reset the permissions on the installation directory to my account and re-ran the tool. &amp;nbsp;Once I made the proper configuration choices, I reset the files back to being owned by the jira account.&lt;/li&gt;
&lt;li&gt;started jira again using the command in step 6&lt;/li&gt;
&lt;li&gt;connected to Jira via the web browser: http://localhost:8080/&lt;/li&gt;
&lt;li&gt;ran through the configuration wizard. Decided to not accept the default directories and use /opt/jira-home instead. &amp;nbsp;Figured I wouldn&#39;t lose data to upgrades if I did a stand alone directory.&lt;/li&gt;
&lt;/ol&gt;That&#39;s it. &amp;nbsp;Seems to work. &amp;nbsp;There are many configuration options that I&#39;ll need to plow through but I&#39;ll have to first learn how to get Jira to autostart at system bootup, like I did for Crowd.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/3585386362630215814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-jira.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/3585386362630215814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/3585386362630215814'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-jira.html' title='Atlassian Stack: Jira'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-5491787660472057495</id><published>2010-07-18T15:39:00.000-04:00</published><updated>2010-07-18T15:39:18.711-04:00</updated><title type='text'>Atlassian Stack: Crowd (auto-start)</title><content type='html'>One final tweak I need to make to Crowd is to get it to start automatically at system start up.&amp;nbsp; I&#39;m using the &lt;a href=&quot;http://confluence.atlassian.com/display/CROWD/Setting+Crowd+to+Run+Automatically+and+Use+an+Unprivileged+System+User+on+UNIX&quot;&gt;Setting Crowd to Run Automatically and Use an Unprivileged System User on UNIX&lt;/a&gt; directions to make that happen.&amp;nbsp; Here are the basics of the steps I ran:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;using Webmin, create a crowd user and a crowd group, making sure to not allow the crowd user the ability to actually log in&lt;/li&gt;
&lt;li&gt;changed ownership of the crowd installation directory and the crow-home directory so that they they were owned by the new crowd user and crowd group: &lt;i&gt;sudo chown -R crowd:crowd /opt/atlassian-crowd-2.0.6/&lt;/i&gt; and &lt;i&gt;sudo chown -R crowd:crowd /opt/crowd-home/&lt;/i&gt; (the provided script in the instructions did not appear to change all the permissions needed).&lt;/li&gt;
&lt;li&gt;used the /etc/init/crowd.conf provided by a reader in the notes (current Ubuntu uses a slightly different startup/shutdown mechanism: upstart) instead of the Sys V script provided in the doc&lt;/li&gt;
&lt;li&gt;issued &lt;i&gt;sudo service crowd start&lt;/i&gt; from the command line to start up crowd&lt;/li&gt;
&lt;li&gt;verified crowd had started by hitting http://localhost:8095/crowd/&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/5491787660472057495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-crowd-auto-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5491787660472057495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5491787660472057495'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-crowd-auto-start.html' title='Atlassian Stack: Crowd (auto-start)'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-2004971117412802258</id><published>2010-07-17T00:00:00.060-04:00</published><updated>2010-07-17T00:00:03.409-04:00</updated><title type='text'>Java Testing and Design - 2.4 The Web Rubric</title><content type='html'>As with many things, clearly stated objectives and criteria are useful in determining the health of your system. &amp;nbsp;A rubric has certain advantages:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;assessment is more objective and consistent&lt;/li&gt;
&lt;li&gt;helps the testers focus on clarifying criteria into specific terms&lt;/li&gt;
&lt;li&gt;clearly describes to the developer how her work will be evaluated and what is expected&lt;/li&gt;
&lt;li&gt;provides benchmarks against which the developers can measure progress&lt;/li&gt;
&lt;/ol&gt;Here is an example ruberic:&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;Criteria assessed through system use&lt;/th&gt;&lt;th&gt;Level 1 Beginning&lt;/th&gt;&lt;th&gt;Level 2 Developing&lt;/th&gt;&lt;th&gt;Level 3 Standard&lt;/th&gt;&lt;th&gt;Level 4 Above Standard&lt;/th&gt; &lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Basic features are functioning&lt;/td&gt;&lt;td&gt;Few features work correctly the first time used&lt;/td&gt;&lt;td&gt;Many features do not operate.  Some missing features required to complete work&lt;/td&gt;&lt;td&gt;Most features operate.  Workarounds available to complete work.&lt;/td&gt;&lt;td&gt;All features work correctly every time they are used.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Speed of operations&lt;/td&gt;&lt;td&gt;Many features never completed.&lt;/td&gt;&lt;td&gt;Most features completed before user lost interest.&lt;/td&gt;&lt;td&gt;Most features completed in 3 seconds or less.&lt;/td&gt;&lt;td&gt;All features completed in 3 seconds or less.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Correct operation&lt;/td&gt;&lt;td&gt;Few features result successfully without an error condition.&lt;/td&gt;&lt;td&gt;Some features end with an error condition.&lt;/td&gt;&lt;td&gt;Most features complete successfully.&lt;/td&gt;&lt;td&gt;All features complete successfully.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Ruberics can take many forms but typically offer the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;focus on measuring stated objectives (performance, behavior or quality)&lt;/li&gt;
&lt;li&gt;use a range to rate performance&lt;/li&gt;
&lt;li&gt;contain specific performance characteristics arranged in levels indicating the degree to which a standard has been met.&lt;/li&gt;
&lt;/ol&gt;A ruberic&#39;s job is to help remove subjectivity when assessing the health and quality of the application.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/2004971117412802258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-24-web-rubric.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/2004971117412802258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/2004971117412802258'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-24-web-rubric.html' title='Java Testing and Design - 2.4 The Web Rubric'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-5435074582453166484</id><published>2010-07-16T00:00:00.011-04:00</published><updated>2010-07-16T00:00:02.369-04:00</updated><title type='text'>Java Testing and Design - 2.3 Web-Enabled Application Measurement Tools</title><content type='html'>The best measurements of health for a web application include:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;meantime between failures in seconds&lt;/li&gt;
&lt;li&gt;amount of time, in seconds, for each user session, sometimes knows as a transaction&lt;/li&gt;
&lt;li&gt;application availability and peak usage periods&lt;/li&gt;
&lt;li&gt;which media elements are most used (HTML, Flash, JavaScript, etc.)&lt;/li&gt;
&lt;/ol&gt;Developing criteria based on these elements is difficult but author promises to offer help in upcoming sections. &amp;nbsp;One question I had when I read this section is how to accurately determine what a failure is? &amp;nbsp;If you are trolling through server logs looking for error messages, you are likely to find lots of them. &amp;nbsp;What do I have to do in my application to make it easier to identify a real problem from a benign one?</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/5435074582453166484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-23-web-enabled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5435074582453166484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5435074582453166484'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-23-web-enabled.html' title='Java Testing and Design - 2.3 Web-Enabled Application Measurement Tools'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-4466151927798540643</id><published>2010-07-15T21:43:00.000-04:00</published><updated>2010-07-15T21:43:04.088-04:00</updated><title type='text'>Atlassian Stack: Crowd</title><content type='html'>I finally got off my lazy butt and shelled out a couple dollars and purchased starter licenses for the entire &lt;a href=&quot;http://www.atlassian.com/&quot;&gt;Atlassian&lt;/a&gt; stack. &amp;nbsp;I&#39;ve been a user of a few of their components for a few months now and liked what I&#39;ve seen so far. &amp;nbsp;I&#39;m of the opinion that most of the power comes when everything is fully integrated. &amp;nbsp;I&#39;m always writing Java programs, mostly to learn new frameworks, but have come up with an idea for something on a larger scale. &amp;nbsp;I&#39;m thinking I can use the Atlassian tools to help guide me through the specification and development process. &amp;nbsp;I&#39;ll blog my journey from installation to day-to-day use. &amp;nbsp;Wish me luck.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve used the free, personal-use licenses that Atlassian used to provide and always ran into a problem with their licensing mechanism: it is tied to a machine. &amp;nbsp;If I wiped my laptop to install the latest version of Ubuntu, I would have to contact Atlassian in order to get a new key. &amp;nbsp;Hoping to avoid that pain, as well as providing a &quot;time machine&quot; I&#39;ll be installing the stack into a virtual Ubuntu server machine based on &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;Virtual Box&lt;/a&gt;. &amp;nbsp;Here are the basic steps I&#39;ve used to get started:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;created a 20 GB Virtual Box VM based on Ubuntu 10.04 Server edition&lt;/li&gt;
&lt;li&gt;added the Webmin repository and installed &lt;a href=&quot;http://www.webmin.com/&quot;&gt;Webmin&lt;/a&gt;. &amp;nbsp;The box will be headless and I&#39;ll need a tool to help me manage the box remotely.&lt;/li&gt;
&lt;li&gt;updated the box so it is patched to current levels&lt;/li&gt;
&lt;li&gt;downloaded and installed the current Sun Java 6 JDK taking care to export both JAVA_HOME and JDK_HOME in the /etc/environment script. &amp;nbsp;In that script, I also appended the path to point to the JDK bin directory.&lt;/li&gt;
&lt;li&gt;installed Virtual Box Guest Additions using &lt;a href=&quot;http://blog.brettalton.com/2010/04/28/installing-guest-additions-in-virtualbox-for-an-ubuntu-server-guest/&quot;&gt;these instructions&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;using Webmin, installed mysql-server and mysql-client &amp;nbsp;(I cheated and looked ahead at the installation directions and knew that a database was needed)&lt;/li&gt;
&lt;/ol&gt;&amp;nbsp;That gives me a basic Java enabled machine to work with. &amp;nbsp;The plan is to take a snapshot prior to the installation of new server giving me the chance to rollback in case something really goes wrong.&lt;br /&gt;
&lt;br /&gt;
Crowd is a single-signon solution and I figured it makes sense to be the first service to install. &amp;nbsp;The documentation says that deploying their applications into a single Apache Tomcat instance is not supported so I&#39;ll use their standalone versions instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;download and unzip Crowd. &amp;nbsp;I placed mine in /opt&lt;/li&gt;
&lt;li&gt;created /opt/crowd-home and edited /opt/crowd/crowd-webapp/WEB-INF/classes/crowd-init.properties to point to it&lt;/li&gt;
&lt;li&gt;using Webmin, I created a MySQL user named crowduser and gave the account all db rights&lt;/li&gt;
&lt;li&gt;using Webmin, I created the Crowd database, named crowd, taking care to specify UTF-8 as the character encoding&lt;/li&gt;
&lt;li&gt;changed the isolation level on MySQL:&amp;nbsp;sudo vi /etc/mysql/my.cnf and added transaction-isolation = READ-COMMITTED &amp;nbsp;into the [mysqld] section&lt;/li&gt;
&lt;li&gt;using Webmin, restarted MySQL so the setting would take affect/li&amp;gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mysql.com/products/connector/j/&quot;&gt;download the JDBC driver&lt;/a&gt; and copy the JAR file to /opt/crowd/apache-tomcat/lib&lt;/li&gt;
&lt;li&gt;start crowd via start_crowd.sh&lt;/li&gt;
&lt;li&gt;connected to Crowd via http://localhost:8095/crowd&lt;/li&gt;
&lt;li&gt;followed the steps in the setup wizard&lt;/li&gt;
&lt;/ol&gt;That was it. &amp;nbsp;I have no idea how to set up the application but a quick glance at the admin screens makes it look at though adding users and roles will be pretty simple.&lt;ol&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/4466151927798540643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-crowd.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/4466151927798540643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/4466151927798540643'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/atlassian-stack-crowd.html' title='Atlassian Stack: Crowd'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-1186979983937293087</id><published>2010-07-15T00:00:00.009-04:00</published><updated>2010-07-15T00:00:06.299-04:00</updated><title type='text'>Java Testing and Design - 2.2 Defining Criteria for Good Web Performance</title><content type='html'>The author asserts that three criteria must be checked if you are to determine if your web application is healthy:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;are the features working?&lt;/li&gt;
&lt;li&gt;is the performance acceptable?&lt;/li&gt;
&lt;li&gt;how often does it fail?&lt;/li&gt;
&lt;/ul&gt;Create a short list of the most important features of your application and create automated tests for them. &amp;nbsp;Consult real users and find out how long they will wait for a feature before abandoning it and moving on to something else. &amp;nbsp;Consult your server logs to find out exactly how often the system fails. Once you know that, you decide if the failure rate is too high for your situation.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/1186979983937293087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-22-defining.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/1186979983937293087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/1186979983937293087'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-22-defining.html' title='Java Testing and Design - 2.2 Defining Criteria for Good Web Performance'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-6659721165896873107</id><published>2010-07-14T00:00:00.038-04:00</published><updated>2010-07-14T00:00:05.991-04:00</updated><title type='text'>Java Testing and Design - 2.1 Just What Are Criteria?</title><content type='html'>Web-enabled applications need to be constantly tested, monitored and watched, primarily due to the fact that the user&#39;s expectations of the application will change over time. &amp;nbsp;At first, they might care that the application worked. &amp;nbsp;Later, they might care about how fast it works? &amp;nbsp;Even later, they might care if it does exactly what they need. &amp;nbsp;You can use test agents to test your application daily. &amp;nbsp;If you build your agents based on archetypes you can gather meaningful data that can help you gauge whether or not your application is meeting your user&#39;s needs.&lt;br /&gt;
&lt;br /&gt;
The more time spent on defining archetypes, the easier it will be for your team to understand exactly what the system needs to do.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Archetypes make an emotional connection between the goals of a prototypical user of the application and the software team. &amp;nbsp;Team members will have an easy-to-understand example of a person that prototypically will use your application. &amp;nbsp;Rather than discussing individual features in the application, the team will be able to refer to functions that the archetype will want to regularly use to accomplish their personal goals.&lt;/li&gt;
&lt;li&gt;Archetypes bring discussions of feature, form, and function in the application from a vague general topic to a focused user goal-oriented discussion.&lt;/li&gt;
&lt;li&gt;Archetypes give the team an understanding of where new functions, bugs, and problems need to be prioritized in the overall schedule. &amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;Archetypes make it easier to know what to test and why because the test agents, modeled after the archetypes, will be testing in a way that is similar to your actual users. &amp;nbsp;Archetypes can also be helpful in identifying when performance becomes a problem.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/6659721165896873107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-21-just-what.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/6659721165896873107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/6659721165896873107'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-21-just-what.html' title='Java Testing and Design - 2.1 Just What Are Criteria?'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-6102051341036332981</id><published>2010-07-13T00:00:00.079-04:00</published><updated>2010-07-13T00:00:00.491-04:00</updated><title type='text'>Java Testing and Design - 1.5 Testing Methods</title><content type='html'>This section describes the following testing methods:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;click-stream testing&lt;/li&gt;
&lt;li&gt;unit testing (state, boundary, error, privilege)&lt;/li&gt;
&lt;li&gt;functional system testing (transactions, end-to-end tests)&lt;/li&gt;
&lt;li&gt;scalability and performance testing (load tests)&lt;/li&gt;
&lt;li&gt;quality of service testing&lt;/li&gt;
&lt;/ul&gt;Click-stream testing is when you keep track of the clicks a user performs as she navigates your sites. &amp;nbsp;The thinking is that more clicks equals more advertising revenue. &amp;nbsp;This type of testing doesn&#39;t tell you if the user was able to achieve his goal when visiting your site and isn&#39;t very useful when trying to determine the quality of your software.&lt;br /&gt;
&lt;br /&gt;
Unit testing is when a developer tests an individual software module by providing it various inputs and comparing its against expected outputs. &amp;nbsp;Although useful to developers, module based testing doesn&#39;t tell you how useful or healthy the entire web application is. &amp;nbsp;Don&#39;t rely solely on unit tests when assessing your system&#39;s health. &lt;br /&gt;
&lt;br /&gt;
Functional system testing takes the perspective closer to that of the end-user in that they check the entire application from end-to-end. &amp;nbsp;A system test will start at the browser, travel through the web servers, individual software modules, the database and then back. &amp;nbsp;When system testing, you have to understand your system well enough to know exactly what front-end actions trigger interactions between the various back-end components. &amp;nbsp;Bringing up a page which is a simple static HTML isn&#39;t much of a test because it doesn&#39;t trigger software modules to fire that access the database and other integration points.&lt;br /&gt;
&lt;br /&gt;
Scalability and Performance testing tries to understand how the system behaves with concurrent users accessing the system. &amp;nbsp; Typically, the functional tests can be used to drive the system and obtain loaded system performance metrics.&lt;br /&gt;
&lt;br /&gt;
Quality of Service testing attempts to show that the application is meeting service level agreements. &amp;nbsp;Functional tests should be used to monitor the web application&#39;s health. &amp;nbsp;Done over long periods of time, you can get a picture of what is normal and what is not.&lt;br /&gt;
&lt;br /&gt;
A test agent is a framework or process that allows for automation of the system&#39;s test. &amp;nbsp;Typically, an agent must provide the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;checklist - defines the conditions and states of the test, such as being able to log into the system&lt;/li&gt;
&lt;li&gt;test process - lists the system transactions that are needed to perform the checklist&lt;/li&gt;
&lt;li&gt;reporting method - records the results after the process and checklist are completed&lt;/li&gt;
&lt;/ul&gt;The more automated a testing agent is the easier it is to certify the health of the application. &lt;br /&gt;
&lt;br /&gt;
You can use your automated test agent to test for scalability and performance. &amp;nbsp;Scalability describes the system&#39;s ability to serve users under varying levels of load. &amp;nbsp;Run your tests when the system has 1, 100, 500 and 1000 concurrent users and measure how long the tests take to respond and you have an idea of how scalable your system is. &amp;nbsp;Performance measures the system&#39;s ability to deliver accurate results under load. &amp;nbsp;If the system responds quickly (scales) but returns incorrect results or errors it isn&#39;t performing very well. &amp;nbsp;Taken together, performance and scalability can tell you how your system behaves under load.&lt;br /&gt;
&lt;br /&gt;
Creating functional tests can be difficult because it can be difficult to know exactly how the tests should interact with the system. &amp;nbsp;One idea to try are Archetypes. &amp;nbsp;Construct several testing &quot;personalities&quot; which describe different types of system users and capture the way they interact with the system. &amp;nbsp;For example, a field agent might be somebody who does lots of reads and relies heavily on the querying capabilities of the system. &amp;nbsp;A manager might be more of a power user who uses the reporting portion of the system to generate his monthly status reports to his boss. &amp;nbsp;The more detailed archetype you can create the better your test agents will be and the better tested your system will be. &amp;nbsp;In practice, automation of the test agents is the only practical way of running the tests in any consistent and meaningful way.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/6102051341036332981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-15-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/6102051341036332981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/6102051341036332981'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-15-testing.html' title='Java Testing and Design - 1.5 Testing Methods'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-5095866351729225848</id><published>2010-07-12T00:00:00.003-04:00</published><updated>2010-07-12T00:00:05.529-04:00</updated><title type='text'>Java Testing and Design - 1.4 A Concise History of Software Development</title><content type='html'>This chapter shows how computer programming grew from very small and tightly controlled environments to the large, free-for-all that is today&#39;s web environment. &amp;nbsp;The interesting part of the discussion revolve around the modern software development processes. &amp;nbsp;A flow that the author has termed The Internet Software Development Lifecycle looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Specify the program from a mock-up of a Web site&lt;/li&gt;
&lt;li&gt;Write the software&lt;/li&gt;
&lt;li&gt;Unit test the application&lt;/li&gt;
&lt;li&gt;Fix the problems found in the unit test&lt;/li&gt;
&lt;li&gt;Internal employees test the application&lt;/li&gt;
&lt;li&gt;Fix the problems found&lt;/li&gt;
&lt;li&gt;Publish software to the Internet&lt;/li&gt;
&lt;li&gt;Rapidly add minor bug fixes to the live servers&lt;/li&gt;
&lt;/ol&gt;The web-style of software engineering makes use of many interconnected systems living all over the network. The same decentralization can also be applied the software components themselves as many parts of an application are implemented using shared software. &amp;nbsp;The author calls to our attention the current &quot;experiment&quot; with open source software development and distribution as well as agile programming.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Next up, Testing Methods...&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/5095866351729225848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-14-concise.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5095866351729225848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/5095866351729225848'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-14-concise.html' title='Java Testing and Design - 1.4 A Concise History of Software Development'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-621168884684239113</id><published>2010-07-11T00:00:00.045-04:00</published><updated>2010-07-11T00:00:00.488-04:00</updated><title type='text'>Java Testing and Design - 1.3 Why Writing High-Quality Software Today Is Hard</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;In this section, the author offers 5 prime reasons why creating software is difficult:&lt;/div&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;The Myth of Version 2.0 Solidity - this is when people believe that scrapping the 1.0 product and starting from scratch will create a superior product. &amp;nbsp;A rewrite is a major overhaul and in the author&#39;s experience a more moderate approach has proven its worth. &amp;nbsp;There is more stress to get the rewrite to the same state that the 1.0 is at and there is no &quot;down time&quot; for developers to recharge their batteries. &amp;nbsp;A smaller, iterative technique allows for constant improvements without the burnout. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Management’s Quest for Grail - this is when management lays down the law and says all projects and all teams shall use methodology X. &amp;nbsp;The author contends that there are different programming styles which require different degrees of architectural direction: Users, Super Users, Administrators, Script Writers, Procedural Programmers, Object Programmers, Interoperability Programmers and Orchestration Programmers. &amp;nbsp; A team must select a methodology that matches the ability and style of the team members. &amp;nbsp;Forcing a team of Script Writers to adopt SCRUM might not be a wise decision.&lt;/li&gt;
&lt;li&gt;Trying for Homogeneity When Heterogeneity Rules - trying to standardize the entire company on a single platform is not practical because you need to exorcise the &quot;impure&quot; parts of the existing solutions, which never happens in practice. &amp;nbsp; &amp;nbsp;Solutions were built upon technologies that made sense at the time and provide useful functionality so deal with it.&lt;/li&gt;
&lt;li&gt;The Language of Bugs - instead of using bug numbers as the vocabulary to describe if a system is working correctly, why not use a test agent that is modeled after a single user? &amp;nbsp;Choose just one user, understand their goals, and learn what&amp;nbsp;steps they expect to use. Then model a test against the single user. The better&amp;nbsp;understood that individual user’s needs are, the more valuable your test agent&amp;nbsp;will be.&lt;/li&gt;
&lt;li&gt;The Evil Twin Vice Presidents Problem - this is the scenario where development and test is run by one person and the data center is run by another. &amp;nbsp;This promotes sniping between the two groups where cooperation would be more productive. &amp;nbsp;The author recommends providing a common testing framework that is used by development and test to run functional, scalability and performance tests. &amp;nbsp;The IT guys can leverage that framework to verify the health of the system and provide QoS reports.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/621168884684239113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-13-why-writing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/621168884684239113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/621168884684239113'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-13-why-writing.html' title='Java Testing and Design - 1.3 Why Writing High-Quality Software Today Is Hard'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-8496767555858333154</id><published>2010-07-10T00:00:00.055-04:00</published><updated>2010-07-10T00:00:05.091-04:00</updated><title type='text'>Java Testing and Design - 1.2 Web-Enabled Applications, the New Frontier</title><content type='html'>In this section, the author describes how software has been architected in the past. &amp;nbsp;The interesting point is how he sees the new emerging architecture, namely one where the desktop contains both presentation and some business logic but much of the business logic lies elsewhere, out on the web somewhere where it accessed by RESTful and SOAP APIs. &amp;nbsp;He believes that the driving force behind the new architecture are a set of &quot;firsts&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;This is the first time in the information technology (IT) industry&amp;nbsp;that software developers, QA technicians, and IT managers&amp;nbsp;agree on interoperability architecture.&lt;/li&gt;
&lt;li&gt;This is the first time that developers, QA technicians, and IT&amp;nbsp;managers agree that security needs to be federated.&lt;/li&gt;
&lt;li&gt;This is the first time that developers, QA technicians, and IT&amp;nbsp;managers agree that scalability in every application is critical to&amp;nbsp;achieving our goals.&lt;/li&gt;
&lt;li&gt;This is the first time that government regulation is part of our&amp;nbsp;software application requirements.&lt;/li&gt;
&lt;li&gt;This is the first time that interoperability tools and technology is&amp;nbsp;delivered with integrated development environment (IDE)&amp;nbsp;tools&lt;/li&gt;
&lt;li&gt;This is the first time that Java and other interoperable&amp;nbsp;development environments and open source projects have&amp;nbsp;reduced operating system and platform dependencies to a point&amp;nbsp;where, in many cases, it really does not matter any more.&lt;/li&gt;
&lt;/ul&gt;In summary, now that we have standards, tooling and infrastructure that allow applications to inter-operate, so we&#39;ll be doing lots more of it. &amp;nbsp;I use a nifty little program called &lt;a href=&quot;http://xbmc.org/&quot;&gt;XBMC&lt;/a&gt; to serve up media files in my home. &amp;nbsp;One of its nicest features is its ability to show me information about the movie, TV show or song I&#39;m thinking about playing. &amp;nbsp;It can do this because it can use the web, and its standard protocols, to mine the internet for information. &amp;nbsp;XBMC wouldn&#39;t be nearly as useful if it couldn&#39;t leverage the &amp;nbsp;data contained in other applications.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/8496767555858333154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-12-web-enabled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8496767555858333154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/8496767555858333154'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-12-web-enabled.html' title='Java Testing and Design - 1.2 Web-Enabled Applications, the New Frontier'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-4212987991508661775</id><published>2010-07-09T00:00:00.016-04:00</published><updated>2010-07-09T00:00:03.841-04:00</updated><title type='text'>Java Testing and Design - 1.1 The First Three Axioms</title><content type='html'>I&#39;ll be reading &lt;a href=&quot;http://www.amazon.com/Java-Testing-Design-Automated-Tests/dp/0131421891/ref=sr_1_12?ie=UTF8&amp;amp;s=books&amp;amp;qid=1276014758&amp;amp;sr=1-12&quot;&gt;Java Testing and Design: From Unit Testing to Automated Web Tests&lt;/a&gt; by Frank Cohen and summarizing the chapters. &amp;nbsp;After skimming it I think it&#39;ll be an interesting read.&lt;br /&gt;
&lt;br /&gt;
The author briefly describes his first Basic program and progresses to a more modern programming language. &amp;nbsp;The upshot is that he learned the three axioms of development:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;even though a program contains only a single line of code, it needs to be maintained&lt;/li&gt;
&lt;li&gt;every piece of software inter-operates with other software&lt;/li&gt;
&lt;li&gt;there is more to delivering high-quality software than writing code&lt;/li&gt;
&lt;/ol&gt;&amp;nbsp;&amp;nbsp;It is these axioms that help the author to deliver quality, web-enabled Java software. &amp;nbsp;Some of that software is &lt;a href=&quot;http://www.pushtotest.com/index.php/comparison&quot;&gt;TestMaker&lt;/a&gt;, an open-source test automation utility for which the author is the architect. &amp;nbsp;Hopefully, these axioms will allow the author to show us some techniques for improving our ability to write better software.</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/4212987991508661775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-11-first-three.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/4212987991508661775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/4212987991508661775'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/java-testing-and-design-11-first-three.html' title='Java Testing and Design - 1.1 The First Three Axioms'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-56293275216301513.post-6436433251470746186</id><published>2010-07-08T00:00:00.015-04:00</published><updated>2010-07-08T00:00:03.666-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Prefactoring"/><title type='text'>Prefactoring: Plan Globally, Develop Locally</title><content type='html'>&lt;i&gt;Plan Globally, Develop Locally. Incremental implementations should fit into a global plan.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
The main idea here is that as you go through your use cases and iterations, take few moments examine your objects to see if their structure makes sense, in broad terms, with the existing use cases as well as the planned ones.&amp;nbsp; You can&#39;t know everything you&#39;ll need to know before you start typing code but you can look at your planned implementation for the sprint to make sure you won&#39;t have to do a major refactoring later on.&amp;nbsp; If possible, try and keep changes as small as possible.&amp;nbsp; Changing the implementation of a class is less painful than restructuring an entire inheritance hierarchy.&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://screamingtiger.blogspot.com/feeds/6436433251470746186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/prefactoring-plan-globally-develop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/6436433251470746186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/56293275216301513/posts/default/6436433251470746186'/><link rel='alternate' type='text/html' href='http://screamingtiger.blogspot.com/2010/07/prefactoring-plan-globally-develop.html' title='Prefactoring: Plan Globally, Develop Locally'/><author><name>Ron Kurr</name><uri>http://www.blogger.com/profile/14401372264977692507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQxXutcIvE6_hsFqoA91hbVqKvYaO8rdZIg67OkjnnARxOnwtIHs835XcqdtBYbJJNOeHbFvE1zxWcMApi-h3fddgc5jSzhpD_DgkpADLSx30UwJvOKYTOLcrrMynTnZc/s220/ron-face.jpg'/></author><thr:total>0</thr:total></entry></feed>