<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Todd Costella &#187; todd</title>
	<atom:link href="http://blog.toddcostella.com/author/todd/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.toddcostella.com</link>
	<description>Crafting code.  bits at a time</description>
	<lastBuildDate>Tue, 23 Aug 2011 16:14:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Git Workflow</title>
		<link>http://blog.toddcostella.com/2011/08/git-workflow/</link>
		<comments>http://blog.toddcostella.com/2011/08/git-workflow/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 16:14:32 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=144</guid>
		<description><![CDATA[One of the fellows at work asked me to jot down how I use git on our projects. It seems there are as many different ways to use git as there are git users. This is how I&#8217;m using git at the moment, your mileage will vary. Master Branch I don&#8217;t do any work in [...]]]></description>
			<content:encoded><![CDATA[<p>One of the fellows at work asked me to jot down how I use git on our projects. It seems there are as many different ways to use git as there are git users. This is how I&#8217;m using git at the moment, your mileage will vary.</p>
<h2>Master Branch</h2>
<p>I don&#8217;t do any work in the master branch. I do keep this branch quite current with the state of trunk in our svn repository. When I&#8217;m in the office I&#8217;ll do a</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> rebase</pre></td></tr></table></div>

<p> to get the latest bits and to keep current with what other folks on the team have been working on.</p>
<h2>Feature Branches</h2>
<p>This is probably my favourite feature of git and something I knew I was missing in svn that I tried to make work with changesets but it always felt clunky. I usually have at least one fairly substantial feature that I&#8217;m working on at any given time. These feature branches tend to be fairly long lived at least a week, possibly more. I create a feature branch using a</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #660033;">-b</span> feature-name</pre></td></tr></table></div>

<p> I <strong>don&#8217;t</strong> keep my feature branches up to date with the trunk. The reason I do this is to keep my development work totally separate from what other folks are doing. I only want the commits on this branch to be related to the feature I&#8217;m working on. This gives me much more flexibility when I finally want to integrate this back into the trunk. It may be a bit more work to do the merges, but I tend to be in very specific areas of the system that other folks don&#8217;t tend to be in so the merges are generally pretty painless.</p>
<p>When I actually want to merge a feature branch these are the steps I go through.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout master
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> rebase
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #660033;">-b</span> feature-merge
<span style="color: #c20cb9; font-weight: bold;">git</span> merge feature-branch</pre></td></tr></table></div>

<p>At this point I have a standalone branch that is at the trunk with my feature branch merged in. If there were any conflicts, I would fix them in this integration branch.  Once any conflicts are resolved I&#8217;ll fire the completed feature into subversion with a</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> dcommit</pre></td></tr></table></div>

<p>And if the feature is &#8220;done&#8221; both the feature branch and the integration branch get deleted with a</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> branch <span style="color: #660033;">-D</span> feature-branch
<span style="color: #c20cb9; font-weight: bold;">git</span> branch <span style="color: #660033;">-D</span> feature-merge</pre></td></tr></table></div>

<p>Why the extra branch? If the merge gets really messy then I can just throw away the feature-merge branch. I&#8217;m sure I could accomplish the same thing by using git reflog and a reset but this approach just feels safer to me. This is purely a mental thing and nothing to do with git. In my head I&#8217;m thinking &#8220;ok, I&#8217;ve got this branch here and the trunk there and I want to merge them together over here&#8221;. If the wheels falls off I simply git branch -d my feature-merge branch and I&#8217;m back to where I started.</p>
<h2>Bugfix branches</h2>
<p>My workflow for doing bug fixes is similar to the feature branches except these branches tend to be very short lived and I don&#8217;t go through the extra integration merge step.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout master
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> rebase
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #660033;">-b</span> bugfix</pre></td></tr></table></div>

<p>hack, hack hack</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;fixed some bugs. created some other ones&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout master
<span style="color: #c20cb9; font-weight: bold;">git</span> merge bugfix
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> dcommit
<span style="color: #c20cb9; font-weight: bold;">git</span> branch <span style="color: #660033;">-d</span> bugfix</pre></td></tr></table></div>

<p>These branches are very short lived, maybe an hour or two maybe as long as a day so the chances of conflicts are low.</p>
<h2>Patching back into release branches</h2>
<p>It&#8217;s pretty common for a bugfix to be patched back into at least one release branch in subversion. Sometimes, this may be more than one. Again, this is something that is really easy with git.</p>
<p>Typically I&#8217;ll fix the bug in a bugfix branch created from master. I&#8217;ll go through the steps outlined above to commit, merge and fire it back into svn.<br />
The biggest difference with this one is that I need to keep track of the commit hash so I can cherry-pick the commit.</p>
<p>I keep meaning to write a bit of bash/groovy/something to automate this a bit but I haven&#8217;t taken the time to do that yet.</p>
<p>After committing from master:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> log <span style="color: #660033;">--pretty</span>=format:<span style="color: #ff0000;">&quot;%h was %an, %ar, message: %s&quot;</span></pre></td></tr></table></div>

<p>I&#8217;ll then copy the hash(es) I need to the clipboard</p>
<p>Next, checkout a release branch</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout 7.00.42</pre></td></tr></table></div>

<p>Then cherry-pick the commit(s)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> cherry-pick <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #7a0874; font-weight: bold;">hash</span><span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> dcommit</pre></td></tr></table></div>

<p>Repeat the checkout, cherry-pick, dcommit for each release branch this fix needs to be applied to.</p>
<h2>Other useful bits</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> reflog</pre></td></tr></table></div>

<p>Git reflog keeps track of the goings on across branches. It&#8217;s saved my bacon a couple of times. <a href="http://stackoverflow.com/questions/134882/undoing-a-git-rebase">This</a> stack exchange post was very useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2011/08/git-workflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Late to the git party</title>
		<link>http://blog.toddcostella.com/2011/05/late-to-the-git-party/</link>
		<comments>http://blog.toddcostella.com/2011/05/late-to-the-git-party/#comments</comments>
		<pubDate>Sun, 01 May 2011 22:17:23 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=140</guid>
		<description><![CDATA[Introduction I&#8217;ve been playing with git for a couple of weeks now. I must admit that I&#8217;m pretty late to the git party and haven&#8217;t really seen much need to use a DCVS for our projects at Entero. We&#8217;ve used source control since we started 15 years ago. Initially we started with RCS, yes RCS [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction </h3>
<p>I&#8217;ve been playing with <a href="http://git-scm.com/">git</a> for a couple of weeks now. I must admit that I&#8217;m pretty late to the git party and haven&#8217;t really seen much need to use a <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">DCVS</a> for our projects at <a href="http://www.entero.com">Entero</a>. We&#8217;ve used source control since we started 15 years ago. Initially we started with <a href="http://en.wikipedia.org/wiki/Revision_Control_System">RCS</a>, yes RCS when all the cool kids were using <a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>. From RCS we used <a href="http://en.wikipedia.org/wiki/PVCS">PVCS</a>. We don&#8217;t speak of the dark days of PVCS. </p>
<p>When we started rewriting our products, I knew we weren&#8217;t going to be using PVCS and the choice of a version control system was really important. I hadn&#8217;t used CVS much but to be honest, it wasn&#8217;t getting rave reviews at the time. There was this new upstart VCS called <a href="http://subversion.apache.org/">Subversion</a> that was supposed to fix all the issues with CVS. We&#8217;ve been using Subversion since November 2003. Subversion has been one of the technologies that has just worked. We have a number of repositories hosting our projects. Our two main products are large. EnteroOne has 38,362 versions as of this writing. Within this set of versions, we have 786 tags and 81 branches. In any given sprint, we have have about 20 people committing content to repository.</p>
<p>It is from this context that I&#8217;m coming to git. </p>
<h3>git</h3>
<p>My first exposure to git was at Java Posse Roundup 2009. There was a fascinating discussion around <a href="http://javaposse.com/java_posse_273_roundup_09_managing_technical_debt">managing technical debt.</a>It was within this discussion that a number of folks were talking about git and <a href="http://mercurial.selenic.com/">mercurial</a> and how revolutionary they were. As is normally the case when developers are excited about a new technology, they typically talk about the most &#8216;advanced&#8217; features. The features that advance the state of the art. In the case of DCVSs these concepts were discussed</p>
<li>not having a central repository</li>
<li>devs being able to pull content from each others working copies</li>
<li>devs having entire history locally without the need to be connected to the main repository</li>
<li>the pain of merges goes away</li>
<p>I remember thinking at the time (and to a certain extent still), that while these features are certainly powerful, what chaos would they introduce into our development process. The notion of developers trying to co-ordinate changes without a central server quite frankly scared the bejuzus out of me. Why would I want to mess with a process and a technology that has served (and continues to serve) us very well?</p>
<p>I think I&#8217;ve come to the conclusion that there is room for both git and subversion in our process. There are a number of great features in git that certain developers on the team would find very useful. However, keeping a central repository that is the one true source of our system still makes sense to me. I know it&#8217;s possible to use a model of git as the central repository but I&#8217;m not yet convinced that the amount of work to transition the team, build processes and hudson configurations are worth it. Quite likely this will happen over time, but I think the git-svn integration will serve us very well. </p>
<h3>Process</h3>
<p>It&#8217;s probably worth a few words about our process. We develop in one month sprints. We release about once a week to QA. Hudson takes care of our incremental builds where a full set of regression including UI tests are done on each commit. At the end of a sprint, the trunk is branched into a release branch. The release branch undergoes two weeks of stabilization where mostly just bug fixes are applied. The release is then shipped to clients. Not every release goes to every client. Some clients take a bunch of releases in a row. Some will take one or two a year. Release branches live as long as we have a client live on that release. New development is rarely &#8220;patched-back&#8221; into release branches, but it&#8217;s been known to happen.</p>
<p>The team develops on the trunk. We rarely have feature/experimental branches. And of those, they tend to be very short lived, rarely merged back into the trunk in their entirety. </p>
<p>I know other teams can&#8217;t work with this model for some reason. I&#8217;m not sure why to be honest with you. We have a large code base (well over 1M lines) and have upwards of 20 people per sprint adding code. Things are generally fairly stable (backed by thousands of tests;though we could use with thousands more I&#8217;m sure). </p>
<p>It&#8217;s not perfect but we consistently deliver releases to multiple clients month after month so we must be doing a few things right.</p>
<h3>How I see myself using git</h3>
<p>Given the above process, what would using a DCVS like git buy us? </p>
<h4>Local History</h4>
<p>The first thing is that there are a few of us that work remotely. Some all the time, some occasionally. Having a working copy of the code with history is very helpful. Particularly if that history contains release branches. </p>
<h4>Local Branches</h4>
<p>Coupled with local history is the ability to have local branches. While historically we haven&#8217;t felt the need for feature branches, it is common that I&#8217;m working on a few different things at the same time. While not ideal it&#8217;s common to have a few issues/stories on the go for any number of reasons. In Subversion/Idea I use changesets to keep the development items separate as possible. This works pretty well but it&#8217;s still very easy to inadvertently commit changes from one change with another one. With true local branches this is not an issue. Git&#8217;s ability to switch between branches seamlessly is awesome. Related to this local branch concept is the freedom to commit frequently. I tend to commit a fair amount in subversion but even then, those commits tend to be complete pieces of work as I don&#8217;t want to break the incremental dev builds. With git, it&#8217;s nice to commit more frequently as I&#8217;m developing, perhaps an idea isn&#8217;t fully baked but is good enough to want to keep around. Having a clean working copy is a very liberating feeling and something that I wouldn&#8217;t have thought would make a difference but it does. There is something about not having to think about a bunch of in progress changes in a working copy that may or may not be related. It&#8217;s changing the way that I code and I like it a lot.</p>
<h4>git svn</h4>
<p>For the time being, perhaps a long time into the future, I see the svn repository being the master and any local git repositories as just that, local. As features are developed, bugs fixed etc, they will be committed to the main repository using <strong>git svn dcommit</strong>. I haven&#8217;t been able to figure out if there is an equivilant concept in git to subversion properties. We use bugtraq properties to relate svn change sets to bugs/requests in our bug tracking system.  </p>
<h3>Git Features that intrigue me</h3>
<p>I&#8217;m really curious to delve into <a href="http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html">Cherry Picking</a> and <a href="http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html">Bisection</a>. As far as I can tell, these concept are unique to dcvs and look very interesting.</p>
<p>I&#8217;ve signed up for a <a href="http://github-may.eventbrite.com/">day of training</a> with git hub. I&#8217;m hoping that a few more aha moments will happen between now and then but a full day of git goodness should help my understanding along.</p>
<h3>Reference</h3>
<p>Primarily for my own reference, I include the commands to create a local git repository from our svn repo.</p>
<ul>git init (into empty dir)</ul>
<ul>git svn init http://[url to root of svn repos] -s</ul>
<ul>git svn fetch -r [revno]</ul>
<ul>git rebase</ul>
<ul>git repack -adf -window 5000 &#8211;window-memory=5000</ul>
<ul>git gc</ul>
<p>I couldn&#8217;t run a <strong>git gc</strong> without first doing the git repack. git would return an out of memory after processing &lt; 5%  of the working copy. The values for window and window-memory were derived using trial and error. This was run on a windows/7 x64 box with 6GB of ram. </p>
<p><strike><br />
My local git repository doesn&#8217;t have any remote branches or tags in it for some reason. I&#8217;ve tried creating the local repo with a -s as well as explicitly specifying the trunk, tag and branch options but in both cases I only get one master branch and no tags. </strike></p>
<p>Update:<br />
It turns out that the reason I wasn&#8217;t getting remote branches and tags was that I populated my git repository with a git fetch instead of a git svn fetch. Now I have tags in my local git repository that line up with svn branch/tag points. </p>
<h3>Summary</h3>
<p>This post has turned into more of a ramble than I would have thought. It&#8217;s still early days but like I mentioned, I&#8217;m starting to see the git light. I have no doubt that there are going to be lots of bumps along the way but so far I really like what I see.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2011/05/late-to-the-git-party/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Network Configuration &#8211; Home</title>
		<link>http://blog.toddcostella.com/2010/12/network-configuration-home/</link>
		<comments>http://blog.toddcostella.com/2010/12/network-configuration-home/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 00:45:37 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=124</guid>
		<description><![CDATA[The Challenge Connect my office and our house to the network. No problem right? Small problem, my office is about 95m (300 ft) in a separate building from the house. I briefly thought about running some Cat 5 or fibre between the buildings but figured a wireless solution would be easier. Well, less digging anyway [...]]]></description>
			<content:encoded><![CDATA[<h2>The Challenge</h2>
<p>Connect my office and our house to the network. No problem right? Small problem, my office is about 95m (300 ft) in a separate building from the house. I briefly thought about running some Cat 5 or fibre between the buildings but figured a wireless solution would be easier. Well, less digging anyway <img src='http://blog.toddcostella.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h2>The Gear</h2>
<p>My Internet service is provided by Rogers over their 3G network. It&#8217;s a decent service, definitely not as speedy as a Cable solution from someone like Shaw, but decent enough for typical browsing, Skype conversations and VPN to the office. Rogers provides an Ericsson W35 Mobile Broadband Router they&#8217;ve branded as the &#8220;Rocket Hub&#8221;. It&#8217;s a combination 3G modem, 4 port ethernet and Wifi (802.11g) device. </p>
<p>If my office was in the house, this wouldn&#8217;t be a very interesting post as at this point I would be done. Plug in rocket hub, connect notebook to wifi network and put feet up. But no, office is in a separate building over 300&#8242; away. Much too far for a wireless signal.</p>
<p>The W35 doesn&#8217;t have an external antenna so that&#8217;s the first problem to solve. I need to be able to extend the range of the network to the house and typically the way to do this is with an external antenna of some sort. As it turns out a neighbour of ours had an extra antenna that they weren&#8217;t using and gave it to me a while ago. </p>
<p>In my tickle trunk of hardware bits, I also have a Linksys WRT54G. This is a wireless router that&#8217;s been around for a bit and has the added bonus of having a few different firmware options available for it (more about that later). This router does support an external antenna. </p>
<p>Those components will take care of the office side of things, and even with boosting the signal with the antenna, it won&#8217;t be enough to provide a decent signal to the entire house. For that, I have an Apple Airport Extreme Base Station. It can provide Wifi (802.11n) services.</p>
<p>I figured with these four devices, I should be able to get decent coverage for both my office and the house.</p>
<h2>The Setup</h2>
<p>The first thing I did was disable the Wifi feature of the W35. It&#8217;s only role in this configuration would be to send and receive packets from my internal network to the internet. </p>
<p>The Linksys router was connected to the W35 via ethernet. The Linksys router will provide the wireless signal to my office as well as send the wireless signal over the external antenna to the house. After searching around and talking to a few folks that know a lot more about this sort of thing than I do, I opted to upgrade the firmware on the Linksys router to one that exposes more features of the device. There are a couple of them out there, but I opted to use the dd-wrt firmware found at <a href="http://www.dd-wrt.com/site/index">dd-wrt</a>. The primary reason for doing this was to enable <a href="http://en.wikipedia.org/wiki/Wireless_Distribution_System">WDS</a>.</p>
<p>Once I verified that the wireless network was working fine in the office, I ventured outside and mounted the antenna. It&#8217;s a directional antenna and so it was oriented towards the house.</p>
<p>At this point I was able to get a strong working signal on the back deck. As I suspected, the signal wasn&#8217;t strong enough in the house. </p>
<p>In the house, I connected up the Airport Extreme and reconfigured it to use WDS.</p>
<p>This <a href="http://www.dd-wrt.com/wiki/index.php/WDS_Linked_router_network#Apple_Airport_Express">article</a> was a huge help.  </p>
<p>Once that was setup, everything worked great. </p>
<h2>Summary</h2>
<p>W35 used to connect to Internet. Wifi turned off.<br />
Linksys WRT54G updated with dd-wrt firmware. Connected to W35 via ethernet (port 1 on both devices) and WDS enabled and configured.<br />
External Directional Antenna connected to WRT54G and oriented towards house.<br />
Apple Airport Extreme configured to use WDS.</p>
<p><img src="http://blog.toddcostella.com/wp-content/uploads/2010/12/HomeWireless-Network1.png" alt="HomeWireless-Network.png" title="HomeWireless-Network.png" border="0" width="600" height="417" /></p>
<h3>Thanks</h3>
<p>I wanted to add a special thanks to the folks that chimed in on <a href="http://communityforums.rogers.com/t5/forums/forumtopicpage/board-id/Mobile_internet/message-id/366">this</a> thread on the Rogers forum. Both &#8220;Chris&#8221; and &#8220;skinorth&#8221; had some great suggestions that helped me piece together this solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2010/12/network-configuration-home/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GriffonCast</title>
		<link>http://blog.toddcostella.com/2009/09/griffoncast/</link>
		<comments>http://blog.toddcostella.com/2009/09/griffoncast/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 18:52:23 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[groovy]]></category>
		<category><![CDATA[griffon]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=117</guid>
		<description><![CDATA[My new GriffonCast project has been launched.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started a new project with the purpose of promoting the <a href="http://griffon.codehaus.org/">Griffon framework</a> and helping build the community around the project. The <a href="http://www.griffoncast.com">GriffonCast</a> is a screencast that I hope to produce at least once a month. </p>
<p>Griffon is a framework for building rich desktop applications. It leverages the Groovy programming language and a number of the key features of Groovy including builders. It&#8217;s a fantastic effort and while it&#8217;s still fairly early days, the team is making great headway with the <a href="http://griffon.codehaus.org/Road+Map">roadmap</a>. The <a href="http://www.griffoncast.com/episode-1/">first episode</a> of the GriffonCast is available for viewing and/or downloading. If you have any comments or would like to see specific topics covered drop me a note or post your thoughts on the Griffon <a href="mailto:user@griffon.codehaus.org">mailing list</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/09/griffoncast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java One 2009 &#8211; Online Resources</title>
		<link>http://blog.toddcostella.com/2009/06/java-one-2009-online-resources/</link>
		<comments>http://blog.toddcostella.com/2009/06/java-one-2009-online-resources/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 15:01:21 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=113</guid>
		<description><![CDATA[The slides for all the technical sessions have been posted at JavaOne Online Technical Sessions and Labs. You&#8217;ll need to be a SDN member but it&#8217;s free to sign up. The Keynote videos are also available at General Session Details and Video Replays There are also a number of audio interviews available at Java One [...]]]></description>
			<content:encoded><![CDATA[<p>The slides for all the technical sessions have been posted at <a href="http://developers.sun.com/learning/javaoneonline/index.jsp">JavaOne Online Technical Sessions and Labs</a>. You&#8217;ll need to be a SDN member but it&#8217;s free to sign up.</p>
<p>The Keynote videos are also available at <a href="http://java.sun.com/javaone/2009/general_sessions.jsp">General Session Details and Video Replays</a></p>
<p>There are also a number of audio interviews available at <a href="http://www.apple.com/search/ipoditunes/?q=javaone+radio">Java One Radio Podcast</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/06/java-one-2009-online-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java One 2009 &#8211; Summary</title>
		<link>http://blog.toddcostella.com/2009/06/java-one-2009-summary/</link>
		<comments>http://blog.toddcostella.com/2009/06/java-one-2009-summary/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 04:03:55 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=109</guid>
		<description><![CDATA[Summary In the blink of an eye the 2009 edition of Java One is over. It was a good conference. Not the best Java One I&#8217;ve been to but still very much worth the trip down to San Francisco. The biggest unknown is what impact Oracle&#8217;s purchasing of Sun will have on Sun&#8217;s direction of [...]]]></description>
			<content:encoded><![CDATA[<h3>Summary</h3>
<p>In the blink of an eye the 2009 edition of Java One is over. It was a good conference. Not the best Java One I&#8217;ve been to but still very much worth the trip down to San Francisco. The biggest unknown is what impact Oracle&#8217;s purchasing of Sun will have on Sun&#8217;s direction of Java. There is a ton of momentum in Sun and in the community that Oracle would do well to respect initially. Seeing Larry Ellision on stage speaking with Scott McNealy about investing in the platform is a very good thing. On this, only time will tell. As expected Java/FX featured prominently in many of the sessions. I think this technology has some potential if Sun (and Oracle) stick with it. Sun has a habit of taking things to almost complete and then letting it languish. In many cases the community picks up the loose ends and tries to add libraries, frameworks etc. but that is getting old. There is a lot of engineering resources being placed on Java/FX right now and it looks like it&#8217;s tracking pretty well. I&#8217;m cautiously optimistic that they can pull this off.</p>
<p>I continue to be very excited about the momentum behind Groovy and related projects (Grails and Griffon). If nothing else, I came away from this year&#8217;s Java One with a renewed sense of optimism about the direction of this language and the community behind it. I got to meet a few people that I&#8217;ve only &#8216;met&#8217; through twitter from the Groovy and Griffon community and that&#8217;s great.</p>
<h3>Areas I&#8217;ll be digging into further in the coming days/weeks/months</h3>
<p>Teracotta&#8217;s Hibernate caching</p>
<p>JIRA</p>
<p>Hudson</p>
<p>Google Collections</p>
<p>Ribbon Component and the Substance Look and Feel</p>
<p>Griffon</p>
<h3>Areas that I&#8217;ll be keeping my eye on</h3>
<p>Java/FX, specifically components and layout managers.</p>
<p>Language Workbench from JetBrains</p>
<h3>Here are a few stats:</h3>
<p>3 Keynote presentations attended</p>
<p>15 Technical Sessions</p>
<p>7 Birds of a Feather Sessions</p>
<p>Visited with a &#8216;bunch&#8217; of vendors including a great hour with the guys at Atlassian talking about Jira, Clover and Bamboo</p>
<p>Met up and visited with a number of aquaintences and friends that I&#8217;ve me over the years at Java One, Java Posse Roundup and now on Twitter.</p>
<blockquote>
<p>Ken, Joe, Carl, Dick, Brendan, Pete, Stefan, Andres, Dave and Fred.</p>
</blockquote>
<p>Java One for me is more about the community and the conversation than it is about the technical content. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/06/java-one-2009-summary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java One 2009 &#8211; Day 4</title>
		<link>http://blog.toddcostella.com/2009/06/java-one-2009-day-4/</link>
		<comments>http://blog.toddcostella.com/2009/06/java-one-2009-day-4/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 03:59:17 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=106</guid>
		<description><![CDATA[Friday Keynote &#8211; The &#34;Toy Show&#34; In what has become an anual tradition, James Gosling hosted a two hour session in which he highlights some of his favorite things by the Java community. It&#8217;s a good show and well worth a watch. I was pretty happy to see Brendan Humpries of Atlassian get a Dukie [...]]]></description>
			<content:encoded><![CDATA[<h3>Friday Keynote &#8211; The &quot;Toy Show&quot;</h3>
<p>In what has become an anual tradition, James Gosling hosted a two hour session in which he highlights some of his favorite things by the Java community. It&#8217;s a good show and well worth a <a href="http://java.sun.com/javaone/2009/articles/toyshow.jsp">watch</a>. I was pretty happy to see Brendan Humpries of Atlassian get a Dukie award from James for his fine <a href="http://www.atlassian.com/software/clover/">Clover</a> product. Well deserved indeed. Other highlights for me included seeing a sneak preview of the Java/FX designer tool that Tor (and no doubt a cast of tens) have been working on for a while. The <a href="http://www.usfirst.org/">FIRST</a> robotic competition was also very interesting as well. Nice to see an organization working to give kids access to building cool things and learning about engineering and programming disciplines in a fun environment. As well the work being done by <a href="http://www.mifos.org/developers">Mifos</a> in the realm of Micro Financing (like <a href="http://kiva.org">kiva.org</a>) is very inspiring.</p>
<h3>Getting Started with WidgetFX: Open-Source Widget Desktop Platform </h3>
<p>WidgetFX is the widget desktop platform developed by Stephen Chin. I&#8217;m not 100 percent sure but I think 	Joshua Marinacci is involved with the project a bit. This widget platform was at least inspired from Josh&#8217;s AB5K/Glassitope swing based widget framework. It sounds like the Java/FX implementation makes this sort of thing easier to do than the Swing equivilant. Looks like an interesting project but to be honest I&#8217;m not a big user of Google gadgets/Apple&#8217;s Dashboard etc. I suppose if there was a bunch of cool widgets that would make my life easier then maybe I would be a bigger fan but it&#8217;s not one of those things that I&#8217;m that interested in. I do need to have a closer look at the Nabaztag rabbit he had wired up to a widget. Would make a great build monitor.</p>
<h3>Defective Java Code: Mistakes That Matter</h3>
<p>Bill Pugh, the creator of the findbugs project has presented at a number of Java Ones in previous years. He&#8217;s always entertaining and has a ton of great content. He&#8217;s currently on sabatical at Google and had a few observations about some patterns that he found. Find Bugs is one of those tools that I&#8217;ve looked at a few times but haven&#8217;t really done much with. It&#8217;s something I want to integrate into our incremental build process but there is the potential of sending the team off into bug fixing mode without any direction.</p>
<p>Bill had some good advice that would make this process easier I think.</p>
<ul>
<li>Start with new code. Changes will be fresh in the developers mind and the chance of introducing a side effect into working code is zero.</li>
<li>As a team, identify the types of bugs you want to concentrate on. We wouldn&#8217;t be worried about SQL injection bugs for example but might be very interested in threading issues.</li>
<li>One approach that worked at Google was after identifying the bugs you want to concentrate on, have a bug fixing day or two or three. Make it a fun experiment with the goal of keeping unit tests running and squishing as many bugs as the team can in a short period of time.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/06/java-one-2009-day-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java One 2009 &#8211; Day 3</title>
		<link>http://blog.toddcostella.com/2009/06/java-one-2009-day-3/</link>
		<comments>http://blog.toddcostella.com/2009/06/java-one-2009-day-3/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 03:54:28 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=103</guid>
		<description><![CDATA[The New World: JavaFX™ Technology-Based UI Controls,Breathe in JavaFX™ Technology,Flamingo: Bringing the Ribbon Component to Swing,This Is Not Your Father’s Von Neumann Machine; How Modern Architecture Impacts Your Java™ Apps,JideFX: Bringing Desktop Richness to the Internet,The Groovy and Grails BOF: With Live Grails Podcast Recording!]]></description>
			<content:encoded><![CDATA[<h3> The New World: JavaFX™ Technology-Based UI Controls</h3>
<p>Just prior to Java One the Java/FX team released version 1.2 which includes some of the basic UI components that applications use. (Buttons, textfields, radio buttons, sliders etc.) This session went over the list of implemented components and introduced project Caspian which is the intial look and feel/theme/skin that these components can use out of the box. The session also went into a bit of detail of how some of the new layout managers are implemented. It&#8217;s still very early days and the team knows full well that the components they released just before Java One is not a comprehensive list (there is no table, combo boxes etc) and the layout managers implemented are pretty simplistic. There is so much work to do to round this implementation out it&#8217;s not funny but there appears to be a huge engineering effort behind this implementation so I echo that I&#8217;m cautiously optimistic about this. Sun appears to have their A-Team working on all aspects of this implementation including the designer tool which was previewed this week as well. </p>
<h3>Breathe in JavaFX™ Technology</h3>
<p>Of all the years I&#8217;ve been to Java One, I&#8217;ve never taken advantage of any of the Hands-on-Labs. To be honest in previous years there really hasn&#8217;t been that much that interested me. I decided this year to change that and sit through a Java/FX one. I figured 90 minutes of going through a tutorial would be a good use of time and if nothing else would give me a bit of expsoure to the language and implementation that up until this point has been mostly theoretical. This was a Bring your own laptop tutorial which required the installation of the latest NetBeans IDE preconfigured with version 1.1.1 of Java/FX. The presenter introduced the three different tutorials that were included, stepped folks through the first few steps and then let folks proceed at their own pace. There were a number of helpers available if participants needed a hand or couldn&#8217;t get something working. </p>
<p>The first tutorial was a photo viewer application that displayed a number of photos with buttons to navigate forwards and backwards through the photos. We added various kinds of transitions using Timelines with KeyFrames. The tutorial was really well done but like most tutorials the reasons why a particular implementation was chosen was not explained. It does provide a good set of examples though to dig further into. The NetBeans implementation of drag and drop coding with the Java/FX elements was interesting to see. Code completion needs a bit of work still and as I&#8217;ve mentioned I&#8217;m not a heavy NetBeans user so some of time was spent just trying to figure out how to do common things in the IDE.</p>
<p>I have the content from the tutorials so it will be something I have a look at in the coming weeks/months to continue getting some exposure to this fast moving addition to the Java platform.</p>
<h3>Flamingo: Bringing the Ribbon Component to Swing</h3>
<p>Of all the sessions I attended, I think I was most surprised by this one. Don&#8217;t get me wrong there was a ton of great content in a lot of the sessions but I guess for this one I didn&#8217;t really have any sort of expectations going into it and came away with a sense of ok, here is something I really need to look at.</p>
<p> The Ribbon Component was introduced by Microsoft in the latest version of Office after conducting a huge amount of User Interaction studies. It&#8217;s quite a huge change for Microsoft and there have been some negative reactions from users but they believe that this metaphor makes learning and using their products much easier. Kirill Grouchnikov, who is probably most known for his fabulous work with the Substance Look and Feel has been implementing a Swing incarnation of the Ribbon Component. He spent quite bit of time talking about the various elements of the ribbon component (tasks, bands, application menu button, taskbar panel etc.) and how they work together to convey meaning and more important context to the user as they are using the application. He pointed out a blog by <a href="http://blogs.msdn.com/jensenh">Jensen Harris</a> at Microsoft that  details the evolution of their implementation. I haven&#8217;t had a chance to look at it yet but it sounded very interesting.</p>
<p>Additionally he showed an implementation of KeyTips which, when invoked, show shortcut keys to the components in the Ribbon control. It&#8217;s really well done and something that has been missing from the Desktop world for a while. </p>
<p>This one has the potential of changing our UI implementation substantially. It of course needs some careful thought and consideration but I like it and if we can perhaps add it as an adjunct to our current UI implementation that might be the best path forward. </p>
<p>&nbsp;</p>
<h3>This Is Not Your Father’s Von Neumann Machine; How Modern Architecture Impacts Your Java™ Apps</h3>
<p>This session was done by was Cliff Click and Brian Goetz key guys in implementing the JVM. They spoke at break neck speed about the evolution of CPU and Memory architectures over the years and how developers need to be aware of how hardware implementation may impact their code from a performance and reliability point of view. A lot of the content was really only applicable if you&#8217;re writing your own compiler/VM but it&#8217;s still good to have an idea what is going on under the hood as it were. There was a reference to a paper that sounds interesting called <a href="http://people.redhat.com/drepper/cpumemory.pdf">What every programmer should know about memory</a>. </p>
<h3>JideFX: Bringing Desktop Richness to the Internet</h3>
<p>David Qiao the CTO for JideSoft presented a few ideas about how they hope to bring their excellent set of Jide components to the JavaFX world. He didn&#8217;t really have much to show aside from a couple of examples that are very much works in progress. I&#8217;m sure it&#8217;s hard for component writers at the moment given the pace of development and missing bits with the Java/FX platform but in all honesty I don&#8217;t know why he presented anything. It&#8217;s much too early.</p>
<h3>The Groovy and Grails BOF: With Live Grails Podcast Recording!</h3>
<p>Sven Haiges and Glen Smith of the Grails Podcast hosted a panel with Scott Davis, Dierk König, Andres Almiray, James Williams and Danno Ferrin. They took questions from Sven and Glen as well as from the audience. It was very entertaining well worth a <a href="http://www.grailspodcast.com/blog/id/252">listen</a>.  I discovered <a href="http://code.google.com/p/spock/">Spock</a> which is a fairly new unit testing framework that sounds very interesting and bears some closer investigation.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/06/java-one-2009-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java One 2009 &#8211; Day 2</title>
		<link>http://blog.toddcostella.com/2009/06/java-one-2009-day-2/</link>
		<comments>http://blog.toddcostella.com/2009/06/java-one-2009-day-2/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 03:44:15 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=100</guid>
		<description><![CDATA[Java One 2009 - Day 2. Extreme GUI Makeover (Hybrid Swing and JavaFX™ Technology), Move Your Users: Animation Principles for Great User Experiences,The Magic of the JXLayer Component,JavaFX™ Programming Language + Groovy = Beauty + Productivity,Hudson Community Meet-Up and Griffon in Depth]]></description>
			<content:encoded><![CDATA[<h3>Extreme GUI Makeover (Hybrid Swing and JavaFX™ Technology)</h3>
<p>In this session, Amy Fowler, Jasper Potts, Paru Somasheka and David Grieve all from Sun took the Swing application that was written  for <a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-1548&amp;yr=2006&amp;track=desktop">last year&#8217;s installment</a> of the GUI Makeover and added a bit of Java/FX. The idea is that there is a bit of a migration path for existing swing applications to Java/FX.</p>
<p>javafx.ext.swing.SwingComponent is the Java/FX component that can be used to wrap any existing swing component. The resultant object is a Node object that can be added to the FX scene graph. This is a decent approach but the biggest drawback is that none of the core elements for Java/FX (like transitions) can be applied to the contents of these kinds of nodes. They showed the CSS skinning approach that can be taken with Java/FX applications. It&#8217;s a good idea to separate the style (colour, font, size etc) from the actual components. Lastly Jasper showed an illustration of a an annimation on the Scene Graph. </p>
<p>It was pretty impressive all in all.</p>
<h3>Move Your Users: Animation Principles for Great User Experiences</h3>
<p>This session was presented by Chet Haas and Romain Guy. They introduced 12 animation principals that are documented in the book. The principals are related to traditional animation (cartoons) but they are very applicable to computer animation as well. They followed up a description of each of the principals with it&#8217;s application in building rich user interfaces on desktop applications. They did a great job. The content is something folks should consider when they&#8217;re implementing any sort of animation in their applications even things as simple as a fade transition or a scale. It&#8217;s really easy to get this stuff wrong and learning from the masters of animation who have been thinking about this stuff for almost a century could make a huge difference in your application.</p>
<p>The 12 principals are:</p>
<ul>
<li>Squash and Stretch</li>
<li>Anticipation</li>
<li>Staging (poses, camera angle, focus)</li>
<li>Straight ahead vs. pose to pose (related to transitions)</li>
<li>Follow through and overlapping action (objects should obey physical reality)</li>
<li>Slow in and out (non linear timing)</li>
<li>Arcs (things generally don&#8217;t move in a perfectly straight line)</li>
<li>Secondary Action (an additional action that gives context to the main action)</li>
<li>Timing </li>
<li>Exaggeration</li>
<li>Solid Drawing</li>
<li>Appeal</li>
</ul>
<p>One of the sources for their presentation was <a href="http://www.amazon.com/Illusion-Life-Disney-Animation/dp/0786860707/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1244404789&amp;sr=8-1">The Illusion of Life: Disney Animation</a></p>
<h3>The Magic of the JXLayer Component</h3>
<p>This session introduced the JXLayer component which is currently a <a href="https://jxlayer.dev.java.net/">java.net project</a>. JXLayer is a wrapper or more precisely implements the decorator pattern for Swing Components. It has a bunch of different uses including a very lightweight way of disabling compound components, implementing mouse wheel scrolling as well a many other uses. We use this component in our framework quite a bit mostly in and around our UI security implementation. It&#8217;s great and if you write any Swing code and don&#8217;t know about this component go have a look. It was also announced in this session that this component is being promoted into  JDK 7.</p>
<h3>JavaFX™ Programming Language + Groovy = Beauty + Productivity</h3>
<p>Dierk König author of Groovy in Action (still the best book on Groovy written to date in my opinion), presented a couple of different approaches to integrate groovy with Java/FX. One strategy is to use Java/FX for client code and then use a REST layer to have the Java/FX client talk to a back end written in Groovy (or Grails for that matter). This approach is pretty clean but you don&#8217;t get to take advantage of any Groovy code on the client.</p>
<p>Both Java/FX and Groovy are JVM languages and ultimately emit bytecode from their respective compilers. It is possible to reference Java/FX components from within Groovy but it&#8217;s messy. Andres Almiray has a JavaFX builder in the Griffon Project that begins to make this integration easier but it&#8217;s still early days.</p>
<p>The short answer is that true integration at this point in time is hard and will get better as Java/FX matures.</p>
<h3>Hudson Community Meet-Up</h3>
<p>I&#8217;ve been looking into <a href="http://hudson.dev.java.net">Hudson</a> for a few months now and it just keeps getting better and better. The project lead (Kohsuke Kawaguchi) gave a bit of background and some of the current trends of Hudson. The growth of the product and the community surrounding it since last Java One is very impressive. Plugins for Hudson are one of the distinguishing features. Tom Huybrechts from AGFA Healthcare demoed a new plugin he wrote that implements the JBoss Rules Engine (drools) within Hudson. Layered on top of it is a graphical builder for building workflow steps, gathering input at various points in the workflow and a ton of other cool stuff. It was very impressive and something I want to take a closer look at.</p>
<p>Netbeans project integration was also demoed (actually talked about as there was a technical glitch with the netbeans machine/projector combo). It would be interesting to monitor builds from within Netbeans, kick them off etc. but given that we&#8217;re an IntelliJ shop it&#8217;s not that relevant. There may be some form of plugin for IntelliJ but the web interface is great so I&#8217;m not sure we would even look at it.</p>
<h3>Griffon in Depth</h3>
<p> Danno Ferrin and James Williams gave an introduction to <a href="http://griffon.codehaus.org/">Griffon</a> which is a <a href="http://grails.codehaus.org/">Grails</a> inspired framework for building Swing applications in Groovy. It&#8217;s still very early days with the project however the project team has leveraged all of the great work from the Grails project in bootstrapping the Griffon project. This is one technology that I&#8217;m quite excited about. Writing swing apps in Groovy is possible (see <a href="http://blog.toddcostella.com/2009/03/groovyswingyqlgoogle-maps-lightning-talk/">this post</a> for an example) however writing a big Swing app would be quite a lot of work. The idea behind Griffon is to put a framework in place to support building Swing applications with the same sort of velocity the web guys are seeing with frameworks like Grails and Ruby on Rails. The fellows demoed a few applications written in Griffon the most impressive one was Greet which is a Twitter client written in Griffon. I wish the fellows much luck with this project and I&#8217;m trying to figure out a way I can help in some small way. Swing and Groovy in the same stack makes me very happy <img src='http://blog.toddcostella.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/06/java-one-2009-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java One 2009 &#8211; Day 1</title>
		<link>http://blog.toddcostella.com/2009/06/java-one-2009-day-1/</link>
		<comments>http://blog.toddcostella.com/2009/06/java-one-2009-day-1/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 23:28:25 +0000</pubDate>
		<dc:creator>todd</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.toddcostella.com/?p=91</guid>
		<description><![CDATA[General Session Pretty typical of previous years. Billions of devices, millions of developers blah blah blah. Java Store introduced. Strikes me a bit of me too wrt to the Apple App Store. No relevance for Entero. Scott McNally and Larry Ellison talk about the future of the platform (with all sorts of caveats about future [...]]]></description>
			<content:encoded><![CDATA[<h2>General Session</h2>
<ul>
<li>Pretty typical of previous years. Billions of devices, millions of developers blah blah blah.</li>
<li><a href="http://store.java.com/">Java Store</a> introduced. Strikes me a bit of me too wrt to the Apple App Store. No relevance for Entero.
<li>Scott McNally and Larry Ellison talk about the future of the platform (with all sorts of caveats about future looking statements). Said most of the right things. Look to keep investment up in R&amp;D plus continue with Java/FX. Cautiously optimistic here.</li>
<li>Lots of partner demos, nothing too exciting.</li>
</ul>
<h3>Deploying Java™ Technology to The Masses: How Sun Deploys The JavaFX™ Runtime</a></h3>
<p>Good first session. Interesting to see that Sun has the same sort of problems as everyone else wrt deploying content to the desktop. There were a few good practical tips that I&#8217;ll want to dig into.</p>
<ul>
<li>Pack200</li>
<li>JNLP additional tags.</li>
</ul>
<h3>Extreme Swing Debugging: The Fast and the Furious</h3>
<p>This was an introduction to the java.net <a href="https://swingexplorer.dev.java.net/">Swing Explorer</a> project. This is a project that I&#8217;m familiar with but it was good to see the EDT violations feature as well as using the &#8220;Player&#8221; feature to find painting issues. It&#8217;s a great tool to have in your swing debugging arsenal. </p>
<h3>Tuesday Afternoon Technical General Session</h3>
<ul>
<li><a href="http://openjdk.java.net/projects/jdk7/milestones/">Roadmap for JDK 7</a></li>
<li>Modularity</li>
<li>Project Coin (small language changes)</li>
<li>EE 6</li>
</ul>
<h3>Extending Java™ Technology and Developing DSLs with the JetBrains MPS Open-Source Language Workbench</h3>
<p>This was an interesting session for sure. The folks at JetBrains have a tool<br />
they call <a href="http://www.jetbrains.com/mps/index.html">Meta Programming System Workbench</a> that is used for designing and working with domain specific languages. It built on the core IntelliJ platform and has a lot of really great features. I was thinking we could use it for embedding in our application for our users to build scripts initially. Longer term I&#8217;m thinking that implementing our formula pricing model in a DSL is the way to go but am still not sure about that. Regardless, this may be a tool that might make that easier.</p>
<ul>
<li>Development environment for building domain specific languages</li>
<li>Handles compiling and parsing</li>
<li>Works directly on the AST</li>
</ul>
<h3>An Introduction to Complex Event Processing on the Java™ Platform</h3>
<p>This is an area I know nothing about. Complex Event Processing deals with the query and visualization of huge data volumes. Real time systems for things like stock trades or perhaps data that comes from SCADA systems. There is a branch of Computer research that deals with this sort of volume. There is a query language called CQL that is like SQL but has a temporal component to the query language. It also has specific constructs for filtering and aggregation of massive datasets. This content was presented by Oracle/BEA where they touched on their <a href="http://www.oracle.com/technologies/soa/complex-event-processing.html">product</a>.</p>
<h3>Toward a Renaissance VM</h3>
<p>This was a fascinating session by John Rose and Brian Geotz of Sun. They dove into some of the very nasty problems that modern compiler writers are grappling with. The JVM hosts a number of languages and has for quite some time. <a href="http://jcp.org/en/jsr/detail?id=292">JSR-292</a> (Supporting Dynamically Typed Languages on the Java Platform) is the JSR under which this work is being done. I left this session feeling very humbled and grateful that there are some very smart guys working on new VM extensions that are going to make my life easier in the future.</p>
<h3>Creating Java™ Technology-Based Applications for Mac OS X: Is It Cocoa or Is It Java Technology?</h3>
<p>I love my Mac but am a little frustrated with Apple in the pace that they implement the JVM on OS/X. They are on 1.6 finally but Apple took a long time to get there. Regardless, there are a bunch of folks in the Java community that have stepped in to help making Java Swing apps on OS/X easier. In this session, Deane Richan from the <a href="http://xito.org">Xito</a> project spoke about a number of strategies for improving the integration of a Java Swing application on OS/X such that the swing app looks closer to a native OS/X application. Good session and a project I want to take a closer look at.</p>
<h3>The Collections Connection (Gala Tenth Edition)</h3>
<p>Josh Bloch, the creator of the Java collections library has been doing this Birds of a Feather Session for about 12 years (I think he missed a couple along the way which is why this is the tenth one). I&#8217;ve been to a bunch of them and always come away learning something new. Josh left Sun to work at Goggle a couple years ago. He is still very active in the Java community and continues to make huge contributions to the platform. This year he brought along a couple of his colleagues from Google; Martin Buchholz and Kevin Bourrillion. They spoke of a few things that might be coming in JDK7 but more interesting (from my point of view) is they also touched on the <a href="http://code.google.com/p/google-collections/">Google Collections</a> package which adds a number of &#8216;missing&#8217; collection implementations. It&#8217;s something I&#8217;ve wanted to take a look at for a while and even more so after hearing about some of the implementations in this framework.</p>
<h3>Meet the Java Posse</h3>
<p>Of course I&#8217;m going to pop in and see the guys do their third annual <a href="http://javaposse.com/index.php?post_id=487315">Podcast</a> from Java One. It was a packed room and the fellows didn&#8217;t disappoint. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toddcostella.com/2009/06/java-one-2009-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

