<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Aubrey Rhodes</title>
	
	<link>http://www.acrhodes.com</link>
	<description>A Personal Portfolio</description>
	<lastBuildDate>Mon, 17 May 2010 05:26:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AubreyRhodes" /><feedburner:info uri="aubreyrhodes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Spring 3.0 with Google App Engine</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/P0FwkK15L68/</link>
		<comments>http://www.acrhodes.com/2010/02/spring-3-0-with-google-app-engine/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 18:41:44 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Spring 3.0]]></category>
		<category><![CDATA[Web App]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=98</guid>
		<description><![CDATA[For one of my final classes as an undergraduate student at Georgia Tech I&#8217;m working on a Java based webapp to be hosted in the cloud. I&#8217;ve chosen Google App Engine for its Java support and the fact that I can use if for free.  The app will make use of the Spring framework which ]]></description>
			<content:encoded><![CDATA[<p>For one of my final classes as an undergraduate student at Georgia Tech I&#8217;m working on a Java based webapp to be hosted in the cloud. I&#8217;ve chosen Google App Engine for its Java support and the fact that I can use if for free.  The app will make use of the Spring framework which just released version 3.0 and use JSP and JSTL for the presentation layer.  I&#8217;ve decided to post a little tutorial on getting up an running with Google App Engine (GAE), Spring 3.0, and Eclipse so that hopefully I (and anyone else that reads this) can avoid some of the pitfalls I ran into on the initial project setup.</p>
<h3>Setting up the project in Eclipse</h3>
<ol>
<li>First, you will need to set up the GAE plugin for Eclipse.  Google provides easy instructions for this <a title="Google App Engine Eclipse plugin install instructions" href="http://code.google.com/appengine/docs/java/tools/eclipse.html#Installing_the_Google_Plugin_for_Eclipse" target="_blank">here</a>.  At the time of this posting, the current version of the SDK should be 1.3.1.</li>
<li>Create a new project in your Eclipse workspace of type Google Web Application Project
<div id="attachment_104" class="wp-caption aligncenter" style="width: 476px"><a href="http://www.acrhodes.com/wp-content/uploads/2010/02/create-poject-step-1.png"><img class="size-full wp-image-104" title="Creating a Google App Engine Eclipse Project" src="http://www.acrhodes.com/wp-content/uploads/2010/02/create-poject-step-1.png" alt="Choose &quot;Web Application Project&quot; from the Google Folder in the New Project Wizard" width="466" height="446" /></a><p class="wp-caption-text">The poject type is under the &quot;Google&quot; folder</p></div>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 478px"><a href="http://www.acrhodes.com/wp-content/uploads/2010/02/create-project-2.png"><img class="size-full wp-image-107" title="Enter Project Settings" src="http://www.acrhodes.com/wp-content/uploads/2010/02/create-project-2.png" alt="Do not use the Google Web Tool Kit and be sure to use the latest version of the SDK" width="468" height="567" /></a><p class="wp-caption-text">Enter the project settings</p></div>
<p>You should now have a project with the following setup:</p>
<div id="attachment_109" class="wp-caption aligncenter" style="width: 283px"><a href="http://www.acrhodes.com/wp-content/uploads/2010/02/initial-project-structure.png"><img class="size-full wp-image-109 " title="Initial project structure" src="http://www.acrhodes.com/wp-content/uploads/2010/02/initial-project-structure.png" alt="These are the files the plugin sets up for you automatically" width="273" height="478" /></a><p class="wp-caption-text">Inital project structure</p></div>
<p>The project is now set up, you can run the server by clicking the &#8220;Debug&#8221; button in Eclipse and visiting localhost:8888 in your browser.</li>
<li>Before we start setting up Spring, let&#8217;s clean out some of the things in the project we won&#8217;t need.  You can delete the GAESpringProjectServlet.java file and change the file war/WEB-INF/web.xml to:
<pre class="xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;

&lt;web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"&gt;

&lt;/web-app&gt;</pre>
</li>
<li>Now that the project is clean we can add in the libraries needed by the Spring framework. Download Spring from the <a title="Spring Download Page" href="http://www.springsource.com/download/community" target="_blank">springsource website</a>.  You will also need <a title="Apache Commons Logging download page" href="http://commons.apache.org/downloads/download_logging.cgi" target="_blank">commons-logging.jar</a> and <a title="Xalan binary zip file" href="http://www.eng.lsu.edu/mirrors/apache/xml/xalan-j/xalan-j_2_7_1-bin.zip">xalan.jar</a>.  We don&#8217;t need to worry about the JSTL jars because GAE includes them for you. Add the following into the war/WEB-INF/lib folder for your project and add them to the build path (the file names have the version information left off, it should be &#8220;-3.0.0.RELEASE&#8221; for the spring jars):
<ol>
<li>org.springframework.asm.jar</li>
<li>org.springframework.beans.jar</li>
<li>org.springframework.context.jar</li>
<li>org.springframework.core.jar</li>
<li>org.springframework.expression.jar</li>
<li>org.springframework.web.servlet.jar</li>
<li>org.springframework.web.jar</li>
<li>commons-logging.jar</li>
<li>xalan.jar</li>
</ol>
</li>
<li>Now it&#8217;s time to set up the configuration files for Spring.  First war/WEB-INF/web.xml:
<pre class="xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;

&lt;web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"&gt;

	&lt;servlet&gt;
		&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;
		&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
	&lt;/servlet&gt;

	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;
		&lt;url-pattern&gt;/a/*&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;

&lt;/web-app&gt;</pre>
<p>The dispatcher servlet handles all user requests and passes them along to the correct controller. The url mapping is to anything under the /a/ directory because of a bug with GAE.  The development server will not accept the url pattern of /* so in development you must add a prefix.  You can remove the /a before you deploy to a production GAE instance.</li>
<li> Now create the file war/WEB-INF/dispatcher-servlet.xml and add the contents:
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"&gt;

 &lt;context:component-scan base-package="com.acrhodes.gaespringproject.controllers" /&gt;

 &lt;bean id="viewResolver"
 class="org.springframework.web.servlet.view.InternalResourceViewResolver"
 p:prefix="/WEB-INF/views/" p:suffix=".jsp" &gt;
 &lt;property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /&gt;
 &lt;/bean&gt;

&lt;/beans&gt;</pre>
<p>This sets several things up for us.  First, the context:component-scan tag tell spring to search the &#8220;com.acrhodes.gaespringproject.controllers&#8221; package for classes marked with the @Controller annotation so that we don&#8217;t have to set them up explicitly in the xml.  The viewResolver bean sets up our views to use JSTL and to return the jsp /WEB-INF/views/home/home.jsp when the view name &#8220;home/home&#8221; is given.</li>
<li>Our final configuration file will tell Spring that we are using annotations to manage all of the bean mapping.  Add the file war/WEB-INF/applicationContext.xml with the contents:
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt;

&lt;context:annotation-config/&gt;

&lt;/beans&gt;</pre>
</li>
<li>Now we are ready to start developing our application.  Create a new package &#8220;com.acrhodes.gaespringapplication.controllers&#8221; that will house all of the controller classes and create a new HelloController class in it.  HelloController will be a simple login/logout service using the Google User Service.  Add the following code to the class:
<pre>@Controller
@RequestMapping("/hello")
public class HelloController {

    private UserService userService = UserServiceFactory.getUserService();

    @RequestMapping(method = RequestMethod.GET)
    public String hello(HttpServletRequest request, ModelMap model)
    {
        String url = request.getRequestURI();
        String message;

        if(request.getUserPrincipal() != null)
        {
            message = new StringBuilder()
            .append("Hello, ")
            .append(request.getUserPrincipal().getName())
            .append("! You can &lt;a href=\"")
            .append(userService.createLogoutURL(url))
            .append("\"&gt;Sign Out&lt;/a&gt;.").toString();
        }else{
            message = new StringBuilder()
            .append("Please ")
            .append("&lt;a href=\"")
            .append(userService.createLoginURL(url))
            .append("\"&gt;Sign In&lt;/a&gt;.").toString();
        }

        model.addAttribute("message", message);

        return "hello/hello";
    }

}</pre>
<p>The class accepts any request of the pattern /a/hello/* and any request using the GET method will call the hello() method.  Spring allows for controller methods to be very flexible.  hello() takes in the request object (to use to check if the user is logged in) and a model object to return data to the view.  The message created is added to the model map and the name of the view is returned (remember &#8220;hello/hello&#8221; maps to /WEB-INF/views/hello/hello).</li>
<li>Finally, we are going to set up the &#8220;hello/hello&#8221; view.  First, we will set up an includes page that sets up the taglibs we will use.  Create the file war/WEB-INF/views/common/includes.jsp with the contents:
<pre>&lt;%@ page session="false"%&gt;
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;
&lt;%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&gt;</pre>
<p>Next,we&#8217;ll set up the actual view.  Create the file war/WEB-INF/views/hello/hello.jsp with the contents:</p>
<pre>&lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&gt;
&lt;%@page isELIgnored="false" %&gt;
&lt;%@ include file="/WEB-INF/views/common/includes.jsp" %&gt;

&lt;p&gt;${message}&lt;/p&gt;
</pre>
<p>The first line of the jsp sets the contentType and the language of the page.  The next line is needed if you plan to use EL expressions (i.e. ${bean.name}).  <em>Be sure you put isELIgnored, not isElIgnored like the will it play page for GAE has it listed, this took me several hours to figure out.</em> The third line includes the taglibs from the last file we set up.  The final line displays the message attribute that was added to the model in the controller.</li>
</ol>
<p>You should now be able to click &#8220;Debug&#8221; and run the application by visiting &#8220;localhost:8888/a/hello&#8221;.  Next up, I&#8217;m going to be adding a tutorial on integrating JDO for GAE&#8217;s Datastore into Spring.  If you have any questions or problems with the tutorial, feel free to comment.  I&#8217;ll try to get back to them as soon as I can.</p>
<p>References:</p>
<ul>
<li>Adent Lord&#8217;s Spring 3.0 GAE article: <a href="http://www.ardentlord.com/apps/blog/show/829881-spring-3-0-on-google-app-engine" target="_blank">http://www.ardentlord.com/apps/blog/show/829881-spring-3-0-on-google-app-engine</a></li>
<li>GAE Documentation: <a href="http://code.google.com/appengine/docs/java/gettingstarted/" target="_blank">http://code.google.com/appengine/docs/java/gettingstarted/</a></li>
<li>Spring 3.0 Documentation: <a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/" target="_blank">http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/</a></li>
<li>Spring MVC 2.5 Tutorial: <a href="http://static.springsource.org/docs/Spring-MVC-step-by-step/" target="_blank">http://static.springsource.org/docs/Spring-MVC-step-by-step/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2010/02/spring-3-0-with-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2010/02/spring-3-0-with-google-app-engine/</feedburner:origLink></item>
		<item>
		<title>Weekend Project</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/Ggf9_eZS8JI/</link>
		<comments>http://www.acrhodes.com/2009/08/weekend-project/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 04:25:19 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Parsing]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=55</guid>
		<description><![CDATA[I&#8217;ve been working on the Chronism project this week, and this weekend I decided to take a little diversion.  I had been playing around with ajax some for the site&#8217;s interface, and so I was starting to some about JSON.  Since I knew I&#8217;d have to find a library to do JSON decoding and encoding ]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on the Chronism project this week, and this weekend I decided to take a little diversion.  I had been playing around with ajax some for the site&#8217;s interface, and so I was starting to some about JSON.  Since I knew I&#8217;d have to find a library to do JSON decoding and encoding in Java, and I know some about parsers, so I decided I&#8217;d right my own.  JSON is a fairly simple language and I was able to get something up and running fairly quickly.  Working off of a <a href="http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html" target="_blank">great guide</a> I found for parsing JSON in C#, I wrote a class that takes in a JSON string and builds a HashMap of String Object pairs.</p>
<p>The class doesn&#8217;t support JSON arrays yet, and has no error reporting, but I plan to keep developing it, as I would like to have a working library for the Chronism project.  At some point I would also like to extend the functionality to encode a map into JSON as well.</p>
<p>If your interested in the project, I&#8217;m releasing it under LGPL and it&#8217;s being hosted <a title="Google Code Project Page" href="http://code.google.com/p/json2map/" target="_blank">here</a>.  I&#8217;d really appriciate any feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/08/weekend-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/08/weekend-project/</feedburner:origLink></item>
		<item>
		<title>Ant’s SCP Task</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/2sGDkiPu6DU/</link>
		<comments>http://www.acrhodes.com/2009/08/ants-scp-task/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 04:24:47 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=49</guid>
		<description><![CDATA[Problem: You have an application whose source is going to be distributed with an Ant build script, either internally or publicly and the build script uses the SCP task.  The SCP task is a standard Ant task, ie you don&#8217;t have to (can&#8217;t) do a &#60;taskdef&#62; to load it&#8217;s classes to use it.  The standard ]]></description>
			<content:encoded><![CDATA[<p>Problem: You have an application whose source is going to be distributed with an Ant build script, either internally or publicly and the build script uses the SCP task.  The SCP task is a standard Ant task, ie you don&#8217;t have to (can&#8217;t) do a &lt;taskdef&gt; to load it&#8217;s classes to use it.  The standard Ant distribution, however, does not include the JSch.jar library required by the task.  Normally you would just download the jar and add it to your Ant instance&#8217;s /lib directory, however if you are distributing the build file, you cannot expect that everyone will have that included.  This is especially important for those users who just want to type &#8220;ant deploy&#8221; and have the application up and running.</p>
<p>Solution: The best solution I&#8217;ve found for this is to use a custom classloader task, to load the JSch classes before you need the SCP task. JTools&#8217; <a href="http://enitsys.sourceforge.net/ant-classloadertask/" target="_blank">Classloader task</a> works great for this.  Simply include the JSch library with they libraries for your other custom ant tasks, then in the build file set the SCP task like this:</p>
<pre>&lt;taskdef resource="net/jtools/classloadertask/antlib.xml"
        classpathref="${classpath}"/&gt;
&lt;classloader loader="project" classpath="${internal.lib.dir}/js*.jar"/&gt;
&lt;scp file="myfile.txt" todir="user:password@somehost:/home/chuck"/&gt;</pre>
<p>This can save those trying to deploy your application a lot of grief for very little overhead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/08/ants-scp-task/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/08/ants-scp-task/</feedburner:origLink></item>
		<item>
		<title>Starting Work</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/a7S2Bm9MI00/</link>
		<comments>http://www.acrhodes.com/2009/08/starting-work/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 03:53:20 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Chronism]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web App]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=38</guid>
		<description><![CDATA[
So in my last post I talked about my new project idea to start working on a programming portfolio.  Well the site is going to be a social time tracking application called Chronism.  I&#8217;ve gone ahead and bought the domain, and I&#8217;m starting to work on some of the basic branding like this fancy logo, ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.acrhodes.com/wp-content/uploads/2009/08/Chronism-Logo.png"><img class="size-full wp-image-39 alignleft" title="Chronism-Logo" src="http://www.acrhodes.com/wp-content/uploads/2009/08/Chronism-Logo.png" alt="Chronism Logo" width="233" height="233" /></a></p>
<p>So in my last post I talked about my new project idea to start working on a programming portfolio.  Well the site is going to be a social time tracking application called Chronism.  I&#8217;ve gone ahead and bought the domain, and I&#8217;m starting to work on some of the basic branding like this fancy logo, and a simple site design.  The reaon I&#8217;m not jumping into the coding first is that I&#8217;ve got a few days left at my summer internship, and quite frankly I need a diversion that is not Java.  Also, design work is definitely something I could use some practice on.</p>
<p>What I want the point of the application to be, is to encourage users to take ownership of what they are spending their time on, and in doing so, focusing more of their energy on creative pursuit.  The complaints I here about Twitter of the Facebook news feed, is that people generally do not care what you are doing most of the time, but I think most of the people you know will have an interest in what you are working on&#8230; what you are making.  To that end, I think a major feature of the site, behind time tracking, should be tie-ins to best of breed services like <a title="Flikr" href="http://www.flikr.com" target="_blank">Flikr</a>, <a title="viemo" href="http://www.viemo.com" target="_blank">Viemo</a>, and <a title="Deviant Art" href="http://www.deviantart.com/" target="_blank">Deviant Art</a> as well as an open api to easily integrate with other services.</p>
<p>If your a student in the Atlanta area and your interested in working on the project, I&#8217;d love to take on partners interested in figuring out how to pull a web application together.  Stay tuned for more information about the progress of the site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/08/starting-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/08/starting-work/</feedburner:origLink></item>
		<item>
		<title>The First Project</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/Yg6d0pNUvGg/</link>
		<comments>http://www.acrhodes.com/2009/06/the-first-project/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 04:12:18 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Web App]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=33</guid>
		<description><![CDATA[Last year, I wrote about trying to balance the amount of time you spend consuming and creating on my other blog.  I tried, pretty over ambitiously, to spend a week where I spent as much time creating as I did consuming.  Mostly because I was taking classes at the time and was spending most of ]]></description>
			<content:encoded><![CDATA[<p>Last year, I wrote about trying to balance the amount of time you spend consuming and creating on my other <a title="Creative Boyance @ blog.trey-rhodes.com" href="http://blog.trey-rhodes.com/2008/12/creative-bouancy.html" target="_blank">blog</a>.  I tried, pretty over ambitiously, to spend a week where I spent as much time creating as I did consuming.  Mostly because I was taking classes at the time and was spending most of my time on that,  but also because I could not track my time very easily,  I didn&#8217;t make it very far into the project.  To this end, I&#8217;ve decided to make my first project a web app to help you track how long you are productive throughout the day.</p>
<p>The application will be Java based, using the Spring Framework, Hibernate for <abbr title="Object-Relational Mapping">ORM</abbr> and either <abbr title="Java Server Pages">JSP</abbr> or Velocity for the view formatting, all running in Tomcat.  I want to focus on scalability, security, and solid software practices while getting something up and running as quickly as possible.  I&#8217;ve decided to use Java because the product I am working on at work uses a similar architecture, and I would like to understand a Tomcat application from the ground up.</p>
<p>I&#8217;ll have more to come soon on my plans for the first two weeks of the project and hopefully a catchy name with a snazzy web 2.0 logo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/06/the-first-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/06/the-first-project/</feedburner:origLink></item>
		<item>
		<title>Stand Up!</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/V71zpY5de2U/</link>
		<comments>http://www.acrhodes.com/2009/06/stand-up/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 03:09:34 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Software Development Practices]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Standups]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=25</guid>
		<description><![CDATA[I&#8217;ve been using Atlassian&#8217;s software products a lot over the past year.  Between work, and some of the FOSS projects I use, I&#8217;ve become very used to using JIRA, Confluence, Fisheye, and Crucible, and really I would recommend them to any software development team.  Recently, Atlassian has added added a section to their site on ]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-27" title="Atlassian" src="http://www.acrhodes.com/wp-content/uploads/2009/06/dude.png" alt="Atlassian" width="70" height="52" />I&#8217;ve been using <a title="Atlassian" href="http://www.atlassian.com/" target="_blank">Atlassian</a>&#8217;s software products a lot over the past year.  Between <a title="Hannon Hill" href="http://www.hannonhill.com" target="_blank">work</a>, and some of the <abbr title="Free Open Source Software">FOSS</abbr> projects I use, I&#8217;ve become very used to using JIRA, Confluence, Fisheye, and Crucible, and really I would recommend them to any software development team.  Recently, Atlassian has added added <a title="Agile Development at Atlassian" href="http://www.atlassian.com/agile/?s_kwcid=HM_Agile" target="_blank">a section</a> to their site on their <a title="Wikipedia Article" href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank">agile development practices</a>, (or at least I just recently noticed it).  It makes sense for them, as agile development goes hand in hand with their software offerings, but I&#8217;ve also found the site to be a good crash course for someone that is relativley new to team based software engineering.</p>
<p>I found one of their <a title="Atlassian's Blog" href="http://blogs.atlassian.com/developer/2009/06/getting_started_with_agile_daily_standup_meetings.html">blog posts</a> to be really interesting, mainly because I attend a stand-up meeting every morning at work, and I would have never thought it to be a trendy project management process unless I had started looking into agile development.  Basically, the idea behind a stand up meeting is for your team to meet every morning in a circle and have everyone answer three questions in about a minute: what you did yesterday, what you are planning to do today, what (if any) roadblocks you are facing.  I&#8217;ve been attending meetings like this for about 10 minutes every morning for about a month and a half now.  At first, I realized that the meetings were helping to keep the team in sync and could make sure no one was doing duplicate work, but I never really thought much more about how these meetings work for the team (more than it makes sure where all at work by 9:30).</p>
<p>As time goes on, I&#8217;ve realized that these meetings also serve as a powerful motivational tool for a team.  I&#8217;ve found that I now make sure I stay productive throughout the day to make sure I have something interesting to say each morning.  I now keep a running list of what I&#8217;m doing and make to-do lists each morning.  Now, I have even started consciously allotting myself a certain amount of time for certain tasks to make sure that I am not letting other ones fall through the cracks.  Overall, I&#8217;ve been really surprised how those 10 minutes in the morning affects how I work through the rest of the day.</p>
<p>This leaves me wondering what practices I can employ to hold myself accountable to my plan for developing my portfolio over the next year, as I will be working on my own.  I&#8217;m debating on holding myself to a <a title="Wikipedia Article" href="http://en.wikipedia.org/wiki/Scrum_(development)" target="_blank">scrum</a> like schedule and turning out new features every two weeks, or if there is some better way to handle this.  I&#8217;ll let you know as I go along.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/06/stand-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/06/stand-up/</feedburner:origLink></item>
		<item>
		<title>My New Host</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/97DE4QRxlwM/</link>
		<comments>http://www.acrhodes.com/2009/06/my-new-host/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 21:22:38 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Website]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=18</guid>
		<description><![CDATA[To go along with the new site, I&#8217;ve decided to go with a new host.  I&#8217;ve switched to a virtual cloud server from Rackspace (formally Mosso) and dropped Lemur host.  I took it as a bad sign when Lemur&#8217;s website no longer appears when you search for it in google.
I&#8217;ve been very happy so far ]]></description>
			<content:encoded><![CDATA[<p>To go along with the new site, I&#8217;ve decided to go with a new host.  I&#8217;ve switched to a virtual cloud server from <a title="Rackspace Cloud Servers" href="http://www.mosso.com/" target="_blank">Rackspace</a> (formally Mosso) and dropped Lemur host.  I took it as a bad sign when Lemur&#8217;s website no longer appears when you search for it in google.</p>
<p>I&#8217;ve been very happy so far with Rackspace.  They are very affordable for having full control of a virtual server and very easy to use.  I litterally had my own Ubuntu instance up and running within 5 minutes, and wordpress up and running another 10 minutes after that.  I&#8217;m really looking forward to be able to work on Tomcat, Ruby, and PHP projects all with the same host and with real console access instead of having to use an asinine web front end to administer my site.</p>
<p>Another reason I&#8217;m really looking forward to using Rackspace, is that they charge by the hour.  This means that if I want to spin up a server for development or testing, I can do it without having to pay for a full month&#8217;s use.    The one thing that did suprise me though, is that you do not <a title="Cloud Server Knowledge Base" href="http://cloudservers.mosso.com/index.php/Frequently_Asked_Questions#Will_I_be_billed_if_my_server_is_powered_off.3F" target="_blank">stop getting charged</a> when you shut down your severs.  You actually have to delete the server from their web interface.  Rackspace gives a perfectly resonable answer for this in their knowledge base, but it would have been nice if this was made more clear right from the beginning.  They are still cheaper than <a title="Amazon EC2" href="http://aws.amazon.com/ec2/" target="_blank">Amazon&#8217;s cloud computing solution</a>, however, and they seem to be easier to use, so I have no complaints.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/06/my-new-host/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/06/my-new-host/</feedburner:origLink></item>
		<item>
		<title>New Blog, and a New Project</title>
		<link>http://feedproxy.google.com/~r/AubreyRhodes/~3/XoQHSeqR1LY/</link>
		<comments>http://www.acrhodes.com/2009/06/new-blog-and-a-new-project/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 20:23:09 +0000</pubDate>
		<dc:creator>Aubrey Rhodes</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.acrhodes.com/?p=9</guid>
		<description><![CDATA[After four great years in college at Georgia Tech, I'm left with one year before I graduate to prepare myself for the workforce and beyond.  With this being about the worst time in 50 years to be looking for a job, I've decided to make a year long project out of preparing a portfolio to show off my skills and to learn as much as I can in the process.  In addition, I'm aiming to use this blog, and the projects I will work on to begin to make a name for myself and ideally make a little money on the side.  To this end, this is my plan for the fist half of the year]]></description>
			<content:encoded><![CDATA[<p>Hello America,</p>
<p>After four great years in college at Georgia Tech, I&#8217;m left with one year before I graduate to prepare myself for the workforce and beyond.  With this being about the worst time in 50 years to be looking for a job, I&#8217;ve decided to make a year long project out of preparing a portfolio to show off my skills and to learn as much as I can in the process.  In addition, I&#8217;m aiming to use this blog, and the projects I will work on to begin to make a name for myself and ideally make a little money on the side.  To this end, this is my plan for the fist half of the year:</p>
<p>First three months (June &#8211; September):</p>
<ul>
<li>Begin writing blog posts about what I am learning over the summer, specifically things others might find interesting or helpful.</li>
<li>Complete one major web-based programming project.</li>
<li>Finish reading <a href="http://www.amazon.com/gp/product/0735619670?ie=UTF8&#038;tag=aubrrhod-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0735619670">Code Complete</a><img src="http://www.assoc-amazon.com/e/ir?t=aubrrhod-20&#038;l=as2&#038;o=1&#038;a=0735619670" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Steve McConnell.</li>
<li>Monetize this blog and make enough to cover my bandwidth costs for this site (~$1 a month).</li>
</ul>
<p>Second three months (September &#8211; December):</p>
<ul>
<li>Learn a new programming language, possibly Ruby.</li>
<li>Complete another programming project.</li>
<li>Begin to get involved with an open source project and at least one local professional organization, on campus or elsewhere.</li>
<li>Increase revenue from the site to cover total hosting costs (~$12 a month)</li>
</ul>
<p>I&#8217;ll obviously be refining this plan as I go along, but I think this gives me plenty to start with.  Feel free to follow along, and give me feedback as I work on this.  I&#8217;d love ideas for projects as well!</p>
<p><script type="text/javascript" src="http://www.assoc-amazon.com/s/link-enhancer?tag=aubrrhod-20&#038;o=1">
</script><br />
<noscript><br />
    <img src="http://www.assoc-amazon.com/s/noscript?tag=aubrrhod-20" alt="" /><br />
</noscript></p>
]]></content:encoded>
			<wfw:commentRss>http://www.acrhodes.com/2009/06/new-blog-and-a-new-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.acrhodes.com/2009/06/new-blog-and-a-new-project/</feedburner:origLink></item>
	</channel>
</rss>
