<?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>Realjenius.com » Journal</title>
	
	<link>http://www.realjenius.com</link>
	<description>Realjenius.com - Tech, Java, Ruby, Scala, and Sarchasm</description>
	<lastBuildDate>Thu, 05 Aug 2010 02:51:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/realjenius_journal" /><feedburner:info uri="realjenius_journal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>My Experience with a MediaTemple (ve)</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/Oa3f7UPXKRU/</link>
		<comments>http://www.realjenius.com/2010/08/04/my-experience-with-a-mediatemple-ve/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 02:51:01 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=597</guid>
		<description><![CDATA[I just switched RealJenius.com (and a whole crap-ton of other sites I host) from a MediaTemple (dv) 3.5 to one of their new MediaTemple (ve) servers. This was kind of an ideal move for me, as I&#8217;ve been using Ubuntu as my primary development desktop for months, and with my recent career change, I&#8217;ve been [...]]]></description>
			<content:encoded><![CDATA[<p>I just switched RealJenius.com (and a whole crap-ton of other sites I host) from a <a href="http://mediatemple.net/webhosting/dv/">MediaTemple (dv) 3.5</a> to one of their new<a href="http://mediatemple.net/webhosting/ve/"> MediaTemple (ve)</a> servers. This was kind of an ideal move for me, as I&#8217;ve been using Ubuntu as my primary development desktop for months, and with my recent career change, I&#8217;ve been doing a lot more system administration work (on Ubuntu VMs none-the-less).</p>
<p>If you&#8217;re as lured by the (ve) as I was, let me give you some details from my experience:</p>
<ul>
<li>Provisioning is lightning-quick. I ordered the server, and it was available within 5 minutes.</li>
<li>It is truly as they say: just a Linux box with SSH. For my install, I was given a stripped down Ubuntu 10.04 server instance and told &#8220;Go Play!&#8221;.</li>
<li>For that reason I would recommend, if you are migrating from somewhere else, that you practice the migration on a VM somewhere, like with <a href="http://www.virtualbox.org">VirtualBox</a>. Since you&#8217;re responsible for the &#8220;whole shootin&#8217; match&#8221;, it&#8217;s in your best interest to have everything inline to make your transition as seamless as possible.</li>
<li>Post-install configurations are everything! I have been using pre-packaged VPS solutions for so long, I forgot that they spend a lot of time tweaking and tuning software to fit in a box the size they choose. Software like PHP, Apache, MySQL, Java, Tomcat, etc &#8211; all comes with default values and selections that, I guarantee you, are different than most VPS&#8217;s are running.</li>
<li>Aptitude is your friend! I chose Ubuntu because I knew how blindingly simple the package manager was to use. The installation of Apache, PHP and MySQL support (while not tuned) was literally only bound by the time to download the packages. My job was to sit and watch it work.</li>
</ul>
<p>I chose to do a number of things to tune my installation after I got it up and running. There are a lot of things to consider when you are your own sys-admin!</p>
<h2>Tuning Apache Memory</h2>
<p>First &#8211; tell Apache to calm down on memory usage. The default Apache install will use <em>massive</em> amounts of room in each thread stack (mostly because Linux tells it to). In reality, unless you&#8217;re expecting to handle some pretty impressive load while shipping some pretty impressive HTML, you probably don&#8217;t need 8MB <em>per stack</em>. To detune Apache in Ubuntu 10.04 to use less memory, you can edit &#8216;/etc/init.d/apache2&#8242; and put a stack-ulimit adjustment at the top of the file:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">ulimit</span> <span style="color: #660033;">-s</span> <span style="color: #000000;">256</span></div></td></tr></tbody></table></div>
<p>Lowering my stack for Apache to 256k (which coincidentally is Java&#8217;s default stack size), lowered my memory usage for Apache and whatever else was on the box at the time (running standard pre-fork) from 750MB, to 280MB. Now, that includes virtual memory and everything else &#8211; but when you&#8217;ve only got 1GB to work with, that&#8217;s a pretty significant savings.</p>
<h2>Switching Apache&#8217;s Multi-Processing Module</h2>
<p>The next thing I did to trim the Apache fat was to switch to mpm-worker threads instead of mpm-prefork. Now, most folks may comment here that mpm-worker actually uses more memory at idle, and while that&#8217;s technically true, it is much more predictable and scales much better from a memory perspective (think threads vs. processes if you are a Java or Ruby developer). It also generally happens to be faster, which is a nice benefit.</p>
<p>Unfortunately, when you move away from pre-fork, you also move away from easy PHP installations. To get PHP to work with mpm-workers, you have to use something like FastCGI, which acts as a PHP worker process pool that runs outside of the Apache process. Now &#8211; I made this a lot harder on myself by trying to host sites outside of /var/www &#8211; I wanted all of the folks sites I host to be under their respective home folder: /home/guy-who-mooches/guys-site.com/yadaydayada (just kidding people who I host!). I&#8217;ll point you to several articles on the net about it:</p>
<ul>
<li><a href="http://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-8.10">http://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-8.10</a></li>
<li><a href="http://www.chriswiegman.com/2010/06/running-apachefastcgisuexec-in-ubuntu-10-04-without-varwww/">http://www.chriswiegman.com/2010/06/running-apachefastcgisuexec-in-ubuntu-10-04-without-varwww/</a></li>
<li><a href="http://www.unixguru.biz/howto-apache2-suexec-php5-and-fastcgi-for-virtual-domains/">http://www.unixguru.biz/howto-apache2-suexec-php5-and-fastcgi-for-virtual-domains/</a></li>
<li><a href="http://www.linode.com/forums/viewtopic.php?t=2982">http://www.linode.com/forums/viewtopic.php?t=2982</a></li>
</ul>
<p>All of these sites have different (albeit similar) approaches. The key things to double check in this effort are:</p>
<ul>
<li>Install apache-suexec-custom  (the &#8216;custom&#8217; is key!). Some sites suggest that you have to compile your own apache-suexec install; this is no longer true (that&#8217;s what the custom is for).</li>
<li>Leave Apache running (or make Apache run) as &#8216;www-data&#8217; &#8211; I made the mistake of switching it to the user apache/apache, and getting suexec-custom to work with that user was a fool&#8217;s errand for me.</li>
<li>With 10.04, you have to edit the file in /etc/init.d/apache2/suexec called &#8216;www-data&#8217; and change the first line from &#8216;/var/www&#8217; to wherever you want suexec to be allowed to run from (for me it had to be &#8216;/home&#8217;).</li>
<li>You&#8217;ll need to create a wrapper script for each user. Don&#8217;t use symbolic links. This wrapper script must have that user as the owner/group (whatever user is going in the suexec directive, anyway).</li>
<li>Pay attention to the properties you set in the wrapper script! They have drastic impacts on both performance and resource utilization. You need to have a feel for your site&#8217;s intended usage to be able to tune these.</li>
<li>The suxec directive and FCGI wrapper directives in the Virtual Host file vary in every article I read about this (there is more than one way to skin a cat) &#8211; I tried both the Action/AddHandler combo approach, and the FCGIWrapper approach. FCGIWrapper is simpler, but Action/AddHandler is more flexible. I&#8217;d start with FCGIWrapper to get it working, and when you are feeling more confident, try action/addhandler if you think you need it.</li>
</ul>
<p>Anyway &#8211; rather than rehash a full walk-through, I felt it would be better to provide some bullet-points. Until I embraced understanding how FastCGI actually worked, I found I was struggling to properly implement it. So take your time, read the articles, try to understand the scripts, and come back here and read my tips. I think you&#8217;ll be better off for it!</p>
<h2>Best Apache Tuning Tip</h2>
<p>Many folks say the best Apache tuning tip is to use <a href="http://nginx.org/">Nginx</a>. That may be true &#8211; I wanted to move fast, and I know very little about administering Nginx. I know that I will have to do some .htaccess file conversion&#8230; so maybe in a couple weeks.</p>
<h2>User Management</h2>
<p>I highly recommend creating a non-root user for yourself. Giving that non-root user sudo access gives you enough of a barrier to be careful, but still gives you the flexibility you need to administer. In Ubuntu, sudo-ing requires that your user be in the &#8220;sudo&#8221; group. That&#8217;s as simple as:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">usermod <span style="color: #660033;">-G</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>username<span style="color: #7a0874; font-weight: bold;">&#93;</span></div></td></tr></tbody></table></div>
<h2>Use Identity Files</h2>
<p>This is a huge boon in my opinion. Identity files are much more secure than passwords, and can make your login process faster (if you&#8217;re willing to trade-off the security of a passphrase). Here is a great article about it: <a href="http://www.csua.berkeley.edu/~ranga/notes/ssh_nopass.html">http://www.csua.berkeley.edu/~ranga/notes/ssh_nopass.html</a></p>
<h2>Learn to SSH Tunnel</h2>
<p>SSH tunneling is secure. If you know how to tunnel, there is no reason to want to install PHP My Admin for example. It&#8217;s a security risk (don&#8217;t believe me? scan the Apache access logs of any decently popular domain, and you will see hack-attempts against dozens of phpmyadmin common URLs), and it&#8217;s not a very awesome administration tool. Meanwhile, MySQL administrator and MySQL Query Browser are awesome and just need an HTTP port. Here is one way to do it:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-L</span> <span style="color: #000000;">1234</span>:127.0.0.1:<span style="color: #000000;">3306</span> myuser<span style="color: #000000; font-weight: bold;">@</span>myfakeserver.com</div></td></tr></tbody></table></div>
<p>This forwards the port 1234 on your machine to port 3306 on your server (which is the default port for MySQL). Then, when you open MySQL Administrator/Query Browser, just try to connect to 127.0.0.1 on port 1234. Now you have full administrative access to MySQL (bells and whistles abounding) and you can be comfortable that the traffic is encrypted.</p>
<p>Tunneling with -D (dynamic SOCKS proxy) is also an excellent way to monitor a Java instance as well, using VisualVM and JMX (<a href="http://stackoverflow.com/questions/1609961/visualvm-over-ssh">http://stackoverflow.com/questions/1609961/visualvm-over-ssh</a>). Again, totally secure monitoring of a running JVM &#8211; hard to beat.</p>
<h2>Conclusion</h2>
<p>Media-Temple&#8217;s (ve) offering is excellent in my estimation. The servers are fast, the memory #s are phenomenal (especially considering you can run whatever you want), and you have total unadulterated control. Two-thumbs-up MT!</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/Oa3f7UPXKRU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2010/08/04/my-experience-with-a-mediatemple-ve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2010/08/04/my-experience-with-a-mediatemple-ve/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>JRuby and Sinatra in 2 Minutes</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/05s2wnK6-4o/</link>
		<comments>http://www.realjenius.com/2010/07/17/jruby-and-sinatra-in-2-minutes/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 16:53:22 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[bundler]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=591</guid>
		<description><![CDATA[While at RubyMidwest I decided to explore Sinatra in more detail. I&#8217;ve spent a lot of time with Rails, and while I love it, there is something alluring about the simplicity of Sinatra (and, well&#8230; ooh shiny). Being a recovering Java developer (Hi, I&#8217;m R.J., and I haven&#8217;t developed in Java for 18 hours) I [...]]]></description>
			<content:encoded><![CDATA[<p>While at <a href="http://www.rubymidwest.com">RubyMidwest</a> I decided to explore <a href="http://www.sinatrarb.com/">Sinatra</a> in more detail. I&#8217;ve spent a lot of time with <a href="http://www.rubyonrails.org">Rails</a>, and while I love it, there is something alluring about the simplicity of Sinatra (and, well&#8230; ooh shiny). Being a recovering Java developer (Hi, I&#8217;m R.J., and I haven&#8217;t developed in Java for 18 hours) I have a server that runs Java, and would like to be able to use Sinatra to build my fancy-awesome web-apps. On those lines, I want all of the shiny benefits of <a href="http://www.jruby.org">JRuby&#8217;s</a> multi-threading awesome-ness, as opposed to just trying to use WEBrick, which does not a powerful server make. So here is a 2 minute tutorial (well, depending on the performance of your computer, and how fast you type) startup with <a href="http://www.sinatrarb.com">Sinatra</a>, <a href="http://www.jruby.org">JRuby</a>, <a href="http://www.gembundler.com">Bundler</a>, and <a href="http://wiki.glassfish.java.net/Wiki.jsp?page=JRuby">Glassfish</a>.</p>
<p>I&#8217;m cheating already by assuming you already have JRuby installed as your default Ruby installation. No? <a href="http://www.jruby.org">Go get it!</a></p>
<p>Next step is to get bundler:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem <span style="color: #c20cb9; font-weight: bold;">install</span> bundler</div></td></tr></tbody></table></div>
<p>Now we need to make a home for our application, and prep it for Bundler:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> testapp<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> testapp<br />
edit Gemfile</div></td></tr></tbody></table></div>
<p>Here I&#8217;m creating a new file in testapp called &#8216;Gemfile&#8217; in your favorite editor. This is where we will sketch out our dependencies for Bundler to do all the hard work for us &#8211; here are the contents for this example:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">source :rubygems<br />
gem &quot;sinatra&quot;<br />
gem &quot;glassfish&quot;</div></td></tr></tbody></table></div>
<p>Frankly, that&#8217;s it. We tell Bundler to look for gems in RubyGems core repo, and then we ask it to make sure we have Sinatra and Glassfish. Now we can create the program &#8211; create the file &#8216;hello.rb&#8217;, and use these contents:</p>
<div class="codecolorer-container ruby twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;rubygems&quot;</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;bundler&quot;</span><br />
Bundler.<span style="color:#9900CC;">setup</span><br />
<br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;sinatra&quot;</span><br />
<br />
get <span style="color:#996600;">'/hi'</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;Hello World!&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></td></tr></tbody></table></div>
<p>So what&#8217;s special for JRuby? Absolutely nothing. We do have special sauce for Bundler, (by calling Bundler.setup prior to the require for &#8216;sinatra&#8217;) but trust me &#8211; you&#8217;ll be happy you used it. You&#8217;ll also make <a href="http://www.twitter.com/wycats">@wycats</a> happy.</p>
<p>And &#8211; that&#8217;s it! Now, if you were to start this file the standard (well, bundler-standard) way, we&#8217;ll see this:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">realjenius$ bundle <span style="color: #7a0874; font-weight: bold;">exec</span> hello.rb<br />
== Sinatra<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.0</span> has taken the stage on <span style="color: #000000;">4567</span> <span style="color: #000000; font-weight: bold;">for</span> development with backup from WEBrick<br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2010</span>-07-<span style="color: #000000;">17</span> <span style="color: #000000;">11</span>:<span style="color: #000000;">24</span>:<span style="color: #000000;">46</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> INFO &nbsp;WEBrick 1.3.1<br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2010</span>-07-<span style="color: #000000;">17</span> <span style="color: #000000;">11</span>:<span style="color: #000000;">24</span>:<span style="color: #000000;">46</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> INFO &nbsp;ruby 1.8.7 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2010</span>-06-06<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>java<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2010</span>-07-<span style="color: #000000;">17</span> <span style="color: #000000;">11</span>:<span style="color: #000000;">24</span>:<span style="color: #000000;">46</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> INFO &nbsp;WEBrick::HTTPServer<span style="color: #666666; font-style: italic;">#start: pid=44490 port=4567</span></div></td></tr></tbody></table></div>
<p>&#8230;and we can visit this URL: <a href="http://localhost:4567/hi">http://localhost:4567/hi</a>. But, recall that our goal was to work with Glassfish, not WEBrick. All that has to change (and for folks who has done Glassfish/Rails before, this won&#8217;t be a surprise) is to run this startup instead</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">realjenius$ bundle <span style="color: #7a0874; font-weight: bold;">exec</span> glassfish<br />
Log <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>realjenius<span style="color: #000000; font-weight: bold;">/</span>Projects<span style="color: #000000; font-weight: bold;">/</span>testapp<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>development.log does not exist. Creating a new one...<br />
Starting GlassFish server at: 0.0.0.0:<span style="color: #000000;">3000</span> <span style="color: #000000; font-weight: bold;">in</span> development environment...<br />
Writing log messages to: <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>realjenius<span style="color: #000000; font-weight: bold;">/</span>Projects<span style="color: #000000; font-weight: bold;">/</span>testapp<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>development.log.<br />
Press Ctrl+C to stop.<br />
<br />
Running sinatra</div></td></tr></tbody></table></div>
<p>This time, we&#8217;ll visit this URL: <a href="http://localhost:3000/hi">http://localhost:3000/hi</a>, and if all worked as desired, Sinatra will be crooning away. Boom goes the dynamite.</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/05s2wnK6-4o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2010/07/17/jruby-and-sinatra-in-2-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2010/07/17/jruby-and-sinatra-in-2-minutes/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>Upgraded to WordPress 3.0</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/EqFHIOq_9vE/</link>
		<comments>http://www.realjenius.com/2010/06/24/upgraded-to-wordpress-3-0/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 02:37:23 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=574</guid>
		<description><![CDATA[I just completed the upgrade to WordPress 3.0. So far, the upgrade appeared to go seamlessly. Everything is running, no plugins are complaining, yadayadayada. If you have a problem on the site please be sure to let me know. If you are a WordPress user, and want to see what has changed since 2.9, here [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.realjenius.com/wp-content/uploads/2009/09/wordpress-logo-stacked-bg.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignright size-full wp-image-111" title="wordpress-logo-stacked-bg" src="http://www.realjenius.com/wp-content/uploads/2009/09/wordpress-logo-stacked-bg.png" alt="" width="176" height="145" /></a></p>
<p>I just completed the upgrade to WordPress 3.0. So far, the upgrade appeared to go seamlessly. Everything is running, no plugins are complaining, yadayadayada. If you have a problem on the site please be sure to let me know.</p>
<p>If you are a WordPress user, and want to see what has changed since 2.9, here is a lovely screencast that covers the particulars:</p>
<p><embed src="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.21" type="application/x-shockwave-flash" width="640" height="360" wmode="transparent" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=BQtfIEY1&amp;width=640&amp;height=360&amp;locksize=no&amp;dynamicseek=false&amp;qc_publisherId=p-18-mFEk4J448M" title="Introducing WordPress 3.0 &quot;Thelonious&quot;"></embed></p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/EqFHIOq_9vE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2010/06/24/upgraded-to-wordpress-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2010/06/24/upgraded-to-wordpress-3-0/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>The Ides of March</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/PZKkep45gTA/</link>
		<comments>http://www.realjenius.com/2010/03/13/the-ides-of-march/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 06:05:41 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[Birthday]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=561</guid>
		<description><![CDATA[So Monday is my birthday: March 15th. For years I remember two things about the way adults reacted to me as a child: (1) Oh, your name is R.J.! That&#8217;s just like Dallas! (and for the record, no, no it is not). Or (2) Oh my! You were born on the Ides of March! It&#8217;s funny, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.realjenius.com/wp-content/uploads/2010/03/JuliusCaesar.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignright size-full wp-image-562" title="JuliusCaesar" src="http://www.realjenius.com/wp-content/uploads/2010/03/JuliusCaesar.png" alt="" width="190" height="250" /></a>So Monday is my birthday: <a href="http://en.wikipedia.org/wiki/March_15">March 15th</a>. For years I remember two things about the way adults reacted to me as a child: (1) Oh, your name is R.J.! That&#8217;s just like Dallas! (and for the record, <a href="http://en.wikipedia.org/wiki/Dallas_(TV_series)">no, no it is not</a>). Or (2) Oh my! You were born on the <a href="http://en.wikipedia.org/wiki/Ides_of_March">Ides of March</a>!</p>
<p>It&#8217;s funny, because when I was a kid, I had no idea what the ides of march was; I just knew it carried with it a certain degree of playful dread, given the reaction of adults. As I&#8217;ve gotten older, I&#8217;ve learned a lot more about what the day actually is, and not what people seem to attribute to it.</p>
<p>If you have no idea what I&#8217;m talking about, I&#8217;m not surprised. It seems like the superstition around the date has faded in recent years. Historically speaking, the term &#8216;ides&#8217; meant the middle of the month for either Martius (March), Maius (May), Quintillis (July), or October on the Roman calendar. On the Ides of March, the Romans actively celebrated for Mars, the god of war (who, by the way, is awesome).<span id="more-561"></span></p>
<p>But the reason that we don&#8217;t go around talking about the ides of October is not because the God of the Month was less impressive, but simply because of the historical significance of 3/15. Julius Caesar (a rather important Roman) was murdered by the Brutus&#8217;, Longinus, and a bunch of other political turds.</p>
<p>So over the years, the day has carried a negative connotation. It has Dark Ominous Tones.</p>
<p>Now, the truth is, I am no Julius Caesar. Additionally, I find it highly unlikely that anyone will stab me to death. However, I&#8217;ve had enough people come up and chatter at me about the ides doom and gloom that I can think of a few to poke with the pointy end of a stick, at least threateningly.</p>
<p>Incidentally &#8211; you&#8217;ll likely notice that Quintillis is the only month that doesn&#8217;t have any aural relationship to it&#8217;s English counterpart. Well, it turns out that one of Julius Caesar&#8217;s many faults (for which he got the stabby stabby) was reforming the national calendar. The Roman calendar became the Julian calendar as he worked to resolve the listing that occurred in the traditional model set up by Romulus, which had 304 days, and was then later refined by Numa (Numa) which had 355 days. The Julian calendar is identical to our modern Gregorian calendar in terms of length and usage of leap years, but was simply not shifted to match the same days of the year.</p>
<p>When Julius Caesar was murdered, they renamed Quintillis to Julius, and then bippity-boppity-bacon you hava July.</p>
<p>So anyway, that&#8217;s how I began to call myself the Roman god of war. Don&#8217;t make me smite you.</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/PZKkep45gTA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2010/03/13/the-ides-of-march/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2010/03/13/the-ides-of-march/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>Check Out the Play Framework</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/USf8kExtFjU/</link>
		<comments>http://www.realjenius.com/2010/03/01/check-out-the-play-framework/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 16:54:10 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Play Framework]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=454</guid>
		<description><![CDATA[I&#8217;ve spent a lot of time recently investigating a variety of languages other than Java, such as JRuby and Scala, and truly believe from these experiences that traditional Java MVC web frameworks are inherently flawed in design and implementation. The effort involved in implementing on a framework like Struts or Spring MVC is astronomical, especially [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-455" title="play" src="http://www.realjenius.com/wp-content/uploads/2010/03/play.png" alt="play" width="177" height="64" /><br />
I&#8217;ve spent a lot of time recently investigating a variety of languages other than Java, such as <a href="http://jruby.org">JRuby</a> and <a href="http://scala-lang.org">Scala</a>, and truly believe from these experiences that traditional Java MVC web frameworks are inherently flawed in design and implementation. The effort involved in implementing on a framework like Struts or Spring MVC is astronomical, especially if you are going to implement things &#8220;the right way&#8221;.</p>
<p>It&#8217;s amazing to me how much these platforms push &#8220;hello, world&#8221; examples that are simply not realistic web applications. After trying these short examples, developers turn around and start trying to implement a complete application, and this simple example balloons into a mess of code, and that&#8217;s without any real functionality yet in the application. A co-worker of mine is a fan of saying &#8220;[These frameworks] make the simple things trivial, and the hard things impossible&#8221;.</p>
<p>Historically, I&#8217;ve been known to say &#8220;If you are doing web-development in Java, use <a href="http://wicket.apache.org">Wicket</a>&#8220;; this was based on the fact that to my experience Wicket took the most advantages from the strongly-typed, and strongly IDE-supported, Java language, as opposed to trying to hide them behind anemic and broken templating languages that have horrid editors and basically trade one problem for another.</p>
<p>Recently, however, I spent some time doing some significant development with the <a href="http://playframework.org">Play Framework</a>. I have to say that I think the Play Framework has eclipsed my Wicket fever. That&#8217;s not to say that I don&#8217;t still think Wicket is very powerful, but I have been particularly impressed with the feedback loop provided by Play. It has, without a doubt, the most direct code-test-cycle I have seen in any platform for Java (it approaches the instant feedback of Rails), and also has the distinct advantage of being stateless out-of-the-box (something Wicket is definitely not).</p>
<p>Play manages this feedback loop problem in a rather novel way &#8211; embedded in the framework is the <a href="http://www.eclipse.org">Eclipse </a>compiler for Java (ECJ). This means that when you&#8217;re coding for the play framework, you&#8217;re not sending it your class files, but rather your source files. This allows Play to recompile code in a running instance on the fly &#8211; I literally only restarted my application a handful of times while I was coding over <em>the course of several days</em>. It also integrates seamlessly with IDEs, and ships with an embedded HTTP runtime (no deployment is necessary during development).</p>
<p>There are a number of other benefits Play can provide by working with source files instead of class files. Much like Rails ability to add functionality to your application at runtime, Play can (and does) pre-process certain Java classes to add functionality.</p>
<p>I was further heartened to see that the next release of Play is meant to fully support Scala, which would allow for other modern language features to be used with this highly interactive framework.</p>
<p>It&#8217;s hard to describe all of the neat features Play provides in a few hundred words, but I would highly recommend <a href="http://www.playframework.org">you check it out</a> &#8211; they have a 10 minute screencast they sells it better than I can. While I&#8217;m still convinced Java (as a language) will be surpassed for an overwhelming majority of the web-development as the language continues to stagnate, this is a compelling framework for the Java platform as a whole, even if Java isn&#8217;t your language of choice.</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/USf8kExtFjU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2010/03/01/check-out-the-play-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2010/03/01/check-out-the-play-framework/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>Fistful of Awesome: IntelliJ Open-Sourced</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/_-U7YueeI2o/</link>
		<comments>http://www.realjenius.com/2009/10/15/fistful-of-awesome-intellij-open-sourced/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 20:39:00 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=401</guid>
		<description><![CDATA[In a surprising move, the JetBrains team has decided to open-source the JavaSE portions of IntelliJ IDEA 9.0 and beyond under an Apache 2.0 license. They will begin offering two products, a community edition, and an ultimate edition: Starting with the upcoming version 9.0, IntelliJ IDEA will be offered in two editions: Community Edition and Ultimate [...]]]></description>
			<content:encoded><![CDATA[<p>In a surprising move, the JetBrains team <a href="http://blogs.jetbrains.com/idea/2009/10/intellij-idea-open-sourced/">has decided to open-source</a> the JavaSE portions of IntelliJ IDEA 9.0 and beyond under an Apache 2.0 license. They will begin offering two products, a community edition, and an ultimate edition:</p>
<blockquote><p>Starting with the upcoming version 9.0, <a style="font-family: 'trebuchet ms', verdana, tahoma, arial, sans-serif; font-size: 1em; line-height: 1.5em; color: #043dbc; text-decoration: none; border-bottom-style: solid; border-bottom-color: #3d7dc7; padding: 0pt; margin: 0pt; border: 0px initial initial;" rel="nofollow" href="http://www.jetbrains.com/idea/nextversion/index.html?utm_source=IDEA_BLOG&amp;utm_media=Anouncement&amp;utm_campaign=IDEA9_CE">IntelliJ IDEA</a> will be offered in two editions: Community Edition and Ultimate Edition. The Community Edition focuses on Java SE technologies, Groovy and Scala development. It’s free of charge and open-sourced under the Apache 2.0 license. The Ultimate edition with full Java EE technology stack remains our standard commercial offering. See the <a style="font-family: 'trebuchet ms', verdana, tahoma, arial, sans-serif; font-size: 1em; line-height: 1.5em; color: #043dbc; text-decoration: none; border-bottom-style: solid; border-bottom-color: #3d7dc7; padding: 0pt; margin: 0pt; border: 0px initial initial;" rel="nofollow" href="http://www.jetbrains.com/idea/nextversion/editions_comparison_matrix.html?utm_source=IDEA_BLOG&amp;utm_media=Anouncement&amp;utm_campaign=IDEA9_CE">feature comparison matrix</a> for the differences.</p></blockquote>
<p>Very cool news! The impact in competition for other IDEs (namely <a href="http://www.eclipse.org">Eclipse</a> and <a href="http://www.netbeans.org">NetBeans</a>) remains to be seen, but this certainly brings another aggressive (and already well-liked competitor) to a broader market.</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/_-U7YueeI2o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2009/10/15/fistful-of-awesome-intellij-open-sourced/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2009/10/15/fistful-of-awesome-intellij-open-sourced/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>WordPress 2.9 Beta Testing Call to Arms</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/sREvADjRPdA/</link>
		<comments>http://www.realjenius.com/2009/10/13/wordpress-2-9-beta-testing-call-to-arms/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 01:44:23 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Realjenius.com]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=393</guid>
		<description><![CDATA[&#8220;For a limited time only &#8211; you can beta-test WordPress 2.9 from the comfort of your own installation!&#8221; In the &#8220;another reason I like WordPress better for blogging&#8221; category, the folks over at WordPress.com have published a detailed article on how WordPress users can get involved in the beta-testing of WordPress 2.9 &#8211; the next [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-111" title="wordpress-logo-stacked-bg" src="http://www.realjenius.com/wp-content/uploads/2009/09/wordpress-logo-stacked-bg.png" alt="wordpress-logo-stacked-bg" width="176" height="145" /></p>
<p>&#8220;For a limited time only &#8211; you can beta-test WordPress 2.9 from the comfort of your own installation!&#8221;</p>
<p>In the &#8220;another reason I like WordPress better for blogging&#8221; category, the folks over at WordPress.com have published a detailed article on how WordPress users can <a href="http://wordpress.org/development/2009/10/getting-involved-with-the-2-9-beta-testing/">get involved in the beta-testing of WordPress 2.9</a> &#8211; the next major release. Included in the options for aspiring beta-testers is a plug-in that will automatically upgrade your site to the new version, and will keep you on the up-and-up.<span id="more-393"></span></p>
<blockquote><p>To make is as easy as possible for you to get a beta testing install up and running we have put together a small WordPress plugin which makes it really easy to convert a test install of the latest release version of WordPress into a beta test install of the next up and coming release.  The plugin is called <a style="text-decoration: none; color: #21759b; font-weight: normal; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dfdfdf;" href="http://wordpress.org/extend/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> and is available to download from WordPress Extend or can be installed using the built-in plugin installer.  Please make sure you to only install this plugin on a test site, as we don’t recommend running beta versions on your normal live sites in case anything goes wrong.  You can read more about the plugin in “<a style="text-decoration: none; color: #4ca6cf; font-weight: normal; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dfdfdf;" href="http://westi.wordpress.com/2009/06/22/making-it-easy-to-be-a-wordpress-tester/">Making it easy to be a WordPress Tester</a>”</p></blockquote>
<p>I don&#8217;t want to suggest that Drupal doesn&#8217;t work for transparency in their development, or that they don&#8217;t encourage community participation; but certainly, they don&#8217;t package it up as nicely as the WordPress folks have right here. While I won&#8217;t be upgrading RealJenius.com until final drops (I did consider pulling a Picard maneuver and upgrading now), it&#8217;s nice to know that the option is there. The release schedule for 2.9 has been revisited in this entry as well.</p>
<blockquote><p>We are aiming to release the first beta version of 2.9 around the end of October, once we have put the finishing touches on the new features, and then we switch to full on beta testing mode and your help and feedback will be very much appreciated.  During the beta program will push out new builds for automated upgrades regularly and once we feel that a suitable level of stability has been achieves we will release a release candidate, and we hope to be able to make the final release 2.9 build available in either late November or early December.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/sREvADjRPdA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2009/10/13/wordpress-2-9-beta-testing-call-to-arms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2009/10/13/wordpress-2-9-beta-testing-call-to-arms/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>What Am I Downloading Today, Eclipse?</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/yumkuL21i1o/</link>
		<comments>http://www.realjenius.com/2009/10/08/what-am-i-downloading-today-eclipse/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 00:41:43 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=379</guid>
		<description><![CDATA[With the release of Eclipse 3.5, the plugin installation and update manager was completely revisited once again; the update process was reorganized, and the strengths of the p2 provisioning framework were surfaced. It&#8217;s nice to be able to hop in, download updates, and go. However, I think Eclipse, as a product, still has a way [...]]]></description>
			<content:encoded><![CDATA[<p>With the release of Eclipse 3.5, the plugin installation and update manager was completely revisited once again; the update process was reorganized, and the strengths of the p2 provisioning framework were surfaced. It&#8217;s nice to be able to hop in, download updates, and go.</p>
<p>However, I think Eclipse, as a product, still has a way to go.<span id="more-379"></span>There are a number of products I use everyday that frequently require or recommend updates and upgrades. Some good examples include:</p>
<ul>
<li><a href="http://www.mozilla.com/en-US/firefox/firefox.html">Mozilla Firefox</a></li>
<li><a href="http://www.android.com/">Android and Android Applications</a></li>
<li><a href="http://wordpress.org/">WordPress</a></li>
<li>Windows</li>
<li><a href="http://www.apple.com/macosx/">Mac OS X</a></li>
<li><a href="http://www.getsongbird.com/">Songbird</a></li>
<li><a href="http://eclipse.org/">Eclipse</a></li>
</ul>
<p>&#8230;and, of course, the list goes on. All of these apps have different ways to handle notifying and installing these upgrades.</p>
<p>Of course, both Windows and Mac OS X have built in update mechanisms, the former being the ever-controversial &#8220;Windows Update&#8221; tool, and the latter being Mac&#8217;s Apple Software Update (which has also recently <a href="http://arstechnica.com/apple/news/2009/09/apple-pushes-unwanted-enterprise-tool-to-windows-users.ars">been pissing people off</a>). Firefox and Songbird use their own update mechanism that&#8217;s part of the Gecko platform. Most Mac users are also probably aware of <a href="http://sparkle.andymatuschak.org/">Sparkle</a> (or at least have seen it in action), as many Mac software distributions (like <a href="http://www.barebones.com/products/TextWrangler/">TextWrangler</a>) use it as their update mechanism.</p>
<p>Your mileage may vary with the different implementations; some are more informative than others, and some are more reliable than others. But one thing can generally be said: each of these mechanisms tie in with documentation explaining what was updated, corrected, or otherwise tweaked. Some tools, like Sparkle, embed the update information in the notification dialog. Other tools, like the Firefox notifier, provide a link to the content that takes you to a rich and user-friendly webpage.</p>
<div id="attachment_384" class="wp-caption aligncenter" style="width: 444px"><img class="size-full wp-image-384" title="firefox" src="http://www.realjenius.com/wp-content/uploads/2009/10/firefox.png" alt="Firefox has thorough documentation online" width="434" height="370" /><p class="wp-caption-text">Firefox has thorough documentation online</p></div>
<p>Today when I came in to the office I decided to perform an update check in Eclipse, and was presented with a number of plug-ins that had newer replacements. At the time, I didn&#8217;t grab a screenshot, but here is an example from a brand-new download of 3.5, which has been since supplanted by 3.5.1:</p>
<div id="attachment_385" class="wp-caption aligncenter" style="width: 469px"><img class="size-full wp-image-385" title="eclipse_updates" src="http://www.realjenius.com/wp-content/uploads/2009/10/eclipse_updates.png" alt="So, is this a good thing?" width="459" height="497" /><p class="wp-caption-text">So, is this a good thing?</p></div>
<p>Unfortunately, this doesn&#8217;t show off the obscure list of plug-ins my installation did earlier today, but there is still plenty I can pick on. So, what&#8217;s wrong with this picture?</p>
<ul>
<li>I have no information on what is being changed or improved in this update.</li>
<li>The &#8216;Details&#8217; section is suspiciously empty.</li>
<li>The version number is unnecessarily cryptic for end users.</li>
<li>The &#8216;More&#8217; button simply gives me the description, copyright, and license for the plugin/feature being shown, which in this case is basically empty boxes.</li>
<li>The version number is cryptic for an end user.</li>
</ul>
<p>Now, as an Eclipse-enthusiast, I have no problem deciphering what is going on here (particularly not since I had to contrive this picture for the blog entry), however as an end-user product, this could use some work. More information could be provided, condensing what was actually improved or fixed in this release (any information at all would be nice).</p>
<p>I understand that Eclipse is a platform first, and a product second, however I think this is one area that could use improvement.</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/yumkuL21i1o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2009/10/08/what-am-i-downloading-today-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2009/10/08/what-am-i-downloading-today-eclipse/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>Danny Carey at Drum Explorers Clinic</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/ND45_W2x24E/</link>
		<comments>http://www.realjenius.com/2009/10/02/danny-carey-at-drum-explorers-clinic/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 20:44:56 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[Danny Carey]]></category>
		<category><![CDATA[Drumming]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=332</guid>
		<description><![CDATA[As most of my close friends know, while having only recently picked up any form of drum stick, I&#8217;m passionate about drumming (though I&#8217;m personally still a beginner in my ability to play). One of my favorite modern drummers is Danny Carey; I&#8217;m sure in no small part due to Tool being one of my [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-335" title="d_carey" src="http://www.realjenius.com/wp-content/uploads/2009/10/d_carey.png" alt="d_carey" width="292" height="216" />As most of my close friends know, while having only recently picked up any form of drum stick, I&#8217;m passionate about drumming (though I&#8217;m personally still a beginner in my ability to play). One of my favorite modern drummers is <a href="http://en.wikipedia.org/wiki/Danny_Carey">Danny Carey</a>; I&#8217;m sure in no small part due to Tool being one of my personal favorite bands. Even if I attempt to exclude my bias, however, I can see that Carey is a well-admired drummer, generally somewhere in the top 15 <a href="http://www.google.com/search?rlz=1C1GGLS_enUS344US344&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=top+100+drummers">of top-100 drummer lists of all time</a>; sharing space with the likes of <a href="http://en.wikipedia.org/wiki/Neil_Peart">Neil Peart</a>, <a href="http://en.wikipedia.org/wiki/John_Bonham">John Bonham</a>, <a href="http://en.wikipedia.org/wiki/Keith_Moon">Keith Moon</a> and <a href="http://en.wikipedia.org/wiki/Mike_Portnoy">Mike Portnoy</a>.</p>
<p>Danny Carey has a rare technical accuracy in his playing, but he is able to combine it with his singular artistic flair to create remarkable tapestries of sound. Tool songs are initially accessible to listeners in search of a driving rock sound, but continue to breathe and grow as the complex rhythms unravel over time.</p>
<p>I&#8217;m always amazed to pick up an album like Undertow (from 1993) and to this day still hear new  poly-rhythms in the beat and other minor adjustments for the first time. And it only takes listening to a song like Jambi, where the guitar, vocals, and drums are all on entirely different time signatures to be able to understand how capable he really is.</p>
<p>Recently, Danny Carey came into Kansas City for the 25th anniversary of KC Drum Explorers. He gave some tutorials, played along to some particularly drum-intensive Tool songs, and also had some great company: <a href="http://en.wikipedia.org/wiki/Terry_Bozzio">Terry Bozzio</a> (another brilliant drumer) and <a href="http://en.wikipedia.org/wiki/Aloke_Dutta">Aloke Dutta</a> (a wizard of the <a href="http://en.wikipedia.org/wiki/Tabla">tabla</a>, and mentor and teacher to both Carey and Bozzio).</p>
<p>I have no idea how I missed hearing of this event; it was mere minutes from my house (in a high-school auditorium in suburban Overland Park of all places), but thankfully YouTube has come to the rescue to make me feel like something other than a total failure.</p>
<p>I&#8217;ve dug up some videos of the event, and included them here (thank you <a href="http://www.youtube.com/user/evo462">evo462</a>, <a href="http://www.youtube.com/user/jdub816">jdub816</a>, and <a href="http://www.youtube.com/user/andrewl85">andrewl85</a>). Enjoy!<span id="more-332"></span></p>
<h3>Rosetta Stoned:</h3>
<p><span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/r34eX66QREQ&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/r34eX66QREQ&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=r34eX66QREQ&fmt=18">www.youtube.com/watch?v=r34eX66QREQ</a></p></p>
<h3>Jambi:</h3>
<p><span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/KcEW1no38KU&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/KcEW1no38KU&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=KcEW1no38KU&fmt=18">www.youtube.com/watch?v=KcEW1no38KU</a></p></p>
<h3>The Pot:</h3>
<p><span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/BWzr9prHkvg&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/BWzr9prHkvg&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=BWzr9prHkvg&fmt=18">www.youtube.com/watch?v=BWzr9prHkvg</a></p></p>
<h3>Aenima (Partial):</h3>
<p><span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/lNL5B4eQ8Bk&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/lNL5B4eQ8Bk&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=lNL5B4eQ8Bk&fmt=18">www.youtube.com/watch?v=lNL5B4eQ8Bk</a></p></p>
<h3>Carey, Bozzio, and Dutta Together -- Part 1:</h3>
<p><span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/ffdYxFAP8uM&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/ffdYxFAP8uM&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=ffdYxFAP8uM&fmt=18">www.youtube.com/watch?v=ffdYxFAP8uM</a></p></p>
<h3>Part 2:</h3>
<p><span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/MLLtqL4gwpg&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/MLLtqL4gwpg&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=MLLtqL4gwpg&fmt=18">www.youtube.com/watch?v=MLLtqL4gwpg</a></p></p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/ND45_W2x24E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2009/10/02/danny-carey-at-drum-explorers-clinic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2009/10/02/danny-carey-at-drum-explorers-clinic/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
		<item>
		<title>JRuby 1.4 Plan Details Discussed</title>
		<link>http://feedproxy.google.com/~r/realjenius_journal/~3/8AcmsH10RBg/</link>
		<comments>http://www.realjenius.com/2009/09/21/jruby-1-4-plan-details-discussed/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 19:52:29 +0000</pubDate>
		<dc:creator>R.J.</dc:creator>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.realjenius.com/?p=253</guid>
		<description><![CDATA[The JRuby team has posted some key JRuby 1.4 details over at the Engine Yard blog. Of high-level note: Ruby 1.8.7 is the new Baseline &#8211; This promises a number of library changes and backports from 1.9. To see the 1.8.7 changes you can look here. Ruby 1.9 Compatibility Improvements - As mentioned in the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-181" title="Ruby Logo" src="http://www.realjenius.com/wp-content/uploads/2009/09/logo.png" alt="Ruby Logo" width="99" height="119" />The JRuby team has <a href="http://www.engineyard.com/blog/2009/5-things-to-look-for-in-jruby-1-4/">posted some key JRuby 1.4 details</a> over at <a href="http://www.engineyard.com/blog">the Engine Yard blog</a>.</p>
<p>Of high-level note:</p>
<ul>
<li><strong>Ruby 1.8.7 is the new Baseline</strong> &#8211; This promises a number of library changes and backports from 1.9. To see the 1.8.7 changes you can <a href="http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7/NEWS">look here</a>.</li>
<li><strong>Ruby 1.9 Compatibility Improvements </strong>- As mentioned in the blog entry, Ruby 1.9 is a moving target, however they are moving a lot closer to having major libraries working as desired. Some high-visibility features (like Fibers) are still on the pending list, however.<strong><br />
</strong></li>
<li><strong>New YAML Parser </strong>- Ola Bini re-visited the YAML parser in Ruby recently (he has <a href="http://olabini.com/blog/2009/07/new-jruby-yaml-support-with-yecht/">blogged about the creation of the new parser</a> and <a href="http://olabini.com/blog/2009/07/porting-syck-a-story-of-c-parser-generators-and-general-ugliness/">how he ported it</a>). The new parser, Yecht, is said to be completely compatible with Syck (the Ruby parser), warts and all.</li>
<li><strong>Java Method Dispatch Improvements </strong>- One of the major promised features of 1.4 for quite a while has been improvements to the Java integration; they have been wanting to formalize this portion of the language for sometime. This involves calling Java methods, calling overloaded Java methods, the coersion of types (Java string &lt;&#8211;&gt; Ruby string), etc. Charles Nutter has posted a very detailed, developer-centric breakdown of the plans in this integration <a href="http://archive.codehaus.org/lists/org.codehaus.jruby.dev/msg/f04d2210909210937h3d1be610x8366a70d94cac42e@mail.gmail.com">on the Developer mailing list</a> (which goes beyond what&#8217;s available in the blog entry). Certainly an interesting read.</li>
<li><strong>Java Class Generation via JRuby </strong>- JRuby will finally be able to construct runtime-available Java classes on the Java classpath. This will be available on-demand only, however that could be quite handy in a number of difficult integration scenarios.</li>
</ul>
<p>This set of features is exciting to me, particularly for the Java integration features. The current Java integration functions, but can be somewhat tempermental, and can end with surprising results at times (I have learned this the hard way via hand-coding Swing and SWT apps).</p>
<p>Additionally, one of the killer features of Scala, in my opinion, is its ability to interact seamlessly with Java libraries at compile-time (create a class in Scala, and code against it in Java). While the semantics defined for JRuby are more runtime-centric for now, it does provide an ability to construct something that can be fed into Java APIs at runtime that expect certain &#8220;inferred&#8221; contracts to exist (such as the Jersey example they used in the original post).</p>
<img src="http://feeds.feedburner.com/~r/realjenius_journal/~4/8AcmsH10RBg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.realjenius.com/2009/09/21/jruby-1-4-plan-details-discussed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.realjenius.com/2009/09/21/jruby-1-4-plan-details-discussed/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</feedburner:origLink></item>
	</channel>
</rss><!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
