<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7367957476552725189</id><updated>2011-11-27T18:39:59.384-05:00</updated><category term='ruby'/><category term='apache'/><category term='feed'/><category term='s3'/><category term='lovdbyless'/><category term='cache'/><category term='p.latyp.us'/><category term='RailsConf'/><category term='best wife ever'/><category term='development'/><category term='deployment'/><category term='tampa'/><category term='hard disk recovery'/><category term='gotchas'/><category term='binky'/><category term='jvm'/><category term='band of brothers'/><category term='evelyn'/><category term='move'/><category term='fair'/><category term='corporate'/><category term='fantasy camp'/><category term='www.icanhazbinky.com'/><category term='travel'/><category term='photo'/><category term='iphone'/><category term='infoq'/><category term='blogger'/><category term='passenger'/><category term='icanhazbinky.com'/><category term='baby'/><category term='vote for brian'/><category term='rock &apos;n roll'/><category term='enterprise'/><category term='rss'/><category term='rails'/><category term='sun'/><category term='jboss'/><category term='unit testing'/><category term='load testing'/><category term='performance'/><category term='phusion'/><category term='mod_rails'/><category term='integrity'/><category term='guitar'/><category term='jruby'/><category term='apr-devel'/><category term='DTI Data'/><title type='text'>Brian Ketelsen {dotcom}</title><subtitle type='html'>Sniffing the glue that doesn't set.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-1407984391208724857</id><published>2008-11-21T09:29:00.014-05:00</published><updated>2008-11-21T11:12:17.935-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='jruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>JBoss Rails Plugin</title><content type='html'>Last night I jokingly posted on twitter that I'm a Rails Deployment Whore.  It's more true than not, I love trying out new deployment solutions looking for the ultimate in scalability, flexibility and ease of deployment.  Imagine my surprise when I found the new jboss-rails plugin from &lt;a href="http://www.oddthesis.org"&gt;Bob McWhirter at OddThesis.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;History&lt;/b&gt;&lt;br /&gt;Back in early 2007 I posted (on this blog even) that I was betting my &lt;a href="http://www.wellcare.com"&gt;career&lt;/a&gt; on JRuby/JBoss.  It turned out OK in the end, but the middle was pretty ugly.  A combination of immaturity in JRuby, GoldSpike,  our deployment process, and a short development schedule meant that we moved back to plain-old-ruby before we could really prove my JBoss/JRuby theory.  Fast forward a few months, Ruby is working fine for WellCare, and Passenger comes out.  I loved the concept of Passenger, and WellCare is now happily running Passenger on all of their production sites.  In the middle, we used Mongrels behind HAProxy, which is a pretty good solution when you have some processes that may take longer than others.  I've since moved on from WellCare, and at my new company we use JRuby on Glassfish exclusively for all of our Rails deployments.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JBoss on Rails&lt;/b&gt;&lt;br /&gt;I'm going to write up starting from a fresh Rails 2.1 project, so you can see everything required to deploy.  It's really not that much.&lt;br /&gt;&lt;br /&gt;Step 1:  &lt;a href="http://www.jboss.org/jbossas/downloads/"&gt;Download and unzip JBoss AS 5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 2:  Set the $JBOSS_HOME environment variable to the location of your unzipped JBoss Folder&lt;br /&gt;I downloaded to /Users/briank/Downloads/jboss-5.0.0.CR2 so at the top of my .bash_profile file I added this:&lt;br /&gt;&lt;code&gt;export JBOSS_HOME=/Users/briank/Downloads/jboss-5.0.0.CR2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 3:  Remove the default 'ROOT' context that's installed in JBoss. &lt;br /&gt;We'll remove the default context so that we can deploy to the / context instead of on a subdirectory.&lt;br /&gt;&lt;code&gt;rm -rf /Users/briank/Downloads/jboss-5.0.0.CR2/server/all/deploy/ROOT.war&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 4: Install the jboss-rails deployer&lt;br /&gt;The jboss-rails deployer does JBoss magic and virtually links the deployment directory to your actual deployment location.  I keep my Rails apps in ~/NetBeansProjects, so even though the JBoss installation is elsewhere, it will serve the app out of my NetBeansProject/&lt;projectname&gt; directory.  This is pretty powerful as we'll see later!&lt;br /&gt;&lt;code&gt;Download the rails deployer &lt;a href="http://repo.oddthesis.org/jboss-rails-deployer-1.0.0-beta-1.zip"&gt;here&lt;/a&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Unzip it: &lt;br /&gt;&lt;code&gt;unzip jboss-rails-deployer-1.0.0-beta-1.zip&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install it:&lt;br /&gt;&lt;code&gt;cd jboss-rails-deployer-1.0.0-beta-1&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cp -R jboss-rails.deployer $JBOSS_HOME/server/all/deployers/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 5: Install the jboss-rails plugin&lt;br /&gt;&lt;code&gt;./script/plugin install git://github.com/bobmcwhirter/jboss-rails-plugin.git &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 6:  Create your database - I'll use mysql for this example&lt;br /&gt;&lt;code&gt;mysqladmin -u root -p create jbosstest_development&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 7:  Change all references in the plugin folders for the server type.&lt;br /&gt;Several of the rake tasks and other code assumes that you deploy to $JBOSS_HOME/server/all, while others assume $JBOSS_HOME/server/default.    Above in step 4, we put our deployer in $JBOSS_HOME/server/all so that's what we're going to use.   Search through all the code in the plugin and its rake tasks and make sure they all use /server/all.&lt;br /&gt;&lt;br /&gt;Step 8:  Install the JDBC gems and adapters for your db installation&lt;br /&gt;&lt;code&gt;rake jboss:rails:jdbc:install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 9:  Deploy your application to JBoss&lt;br /&gt;&lt;code&gt;rake jboss:rails:deploy&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 10:  Start JBoss&lt;br /&gt;&lt;code&gt;rake jboss:as:run&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;I didn't cover any of the advanced features of the plugin or of the concepts behind the jboss-rails integration that Bob's done.  One of the most exciting to me is the scheduler process that makes a nice mini-cron out of a directory in your Rails app.  I'm all for getting rid of CRON and encapsulating that processing code in my Rails app.   The other extremely cool bit of this plugin is the support for Capistrano deployments.  Because the integration with JBoss is a virtual symlink to your Rails deployment folder, Bob's included a cap recipe that operates exactly as you'd expect one to.   One of the problems with the previous WAR style deployments in my mind has always been the inability to easily move forward and backwards.  With JBoss-Rails you get the best of all worlds.  I'm really impressed with Bob's work so far and with the attention and commitment that JBoss is bring to  Rails deployment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-1407984391208724857?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/1407984391208724857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=1407984391208724857' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1407984391208724857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1407984391208724857'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/11/jboss-rails-plugin.html' title='JBoss Rails Plugin'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-1858168923251279963</id><published>2008-11-20T12:16:00.004-05:00</published><updated>2008-11-20T12:23:30.628-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DTI Data'/><category scheme='http://www.blogger.com/atom/ns#' term='hard disk recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='integrity'/><title type='text'>DTI Data is an awesome disk drive recovery company</title><content type='html'>I had reason recently to attempt recovery of data on two hard drives that had been reformatted.  Often in the disk drive world, reformatting isn't really erasing the data, and knowing that I was hopeful that we could recover the data that existed before the reformat.&lt;br /&gt;&lt;br /&gt;First I sent the drives off to a company that advertised heavily on the web using drive recovery type keywords.  I got a call the next day.  The guy said he could "repair" the drives for $5000, then recover the data.  He said some cylinders were broken and the read heads on one of the drives were bad.  I knew this not to be true, so I told him to ship us back the drives.  He immediately reversed course and told me that he could recover the data much cheaper, I could just name my price!  Fool me once, shame on you...  So when we got the drives back I was eager to get them recovered by professionals.  Enter DTI Data &lt;a href="http://www.dtidata.com"&gt; a very reputable drive recovery company&lt;/a&gt; here in the Tampa area.  &lt;br /&gt;&lt;br /&gt;DTI Data spent a few days with the drives, and determined that they were actually zeroed out during the reformat.  Somebody didn't want us to find the data that they erased.  Oh well, no great loss.  But the best part was their return fedex to me.  It included both drives, nicely packaged, and our check back.  They returned our money because they couldn't help.  On one end of the spectrum, some jackass is trying to dupe us into paying $5000 for repairs our drives didn't need.  On the other end of the spectrum is DTI Data, doing the right thing by their customers.  &lt;br /&gt;&lt;br /&gt;I've learned a valuable lesson in this.  And next time I need drive recovery, I know exactly where to go.  Kudos to DTI Data for running a business with integrity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-1858168923251279963?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/1858168923251279963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=1858168923251279963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1858168923251279963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1858168923251279963'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/11/dti-data-is-awesome-disk-drive-recovery.html' title='DTI Data is an awesome disk drive recovery company'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-2269804490102490231</id><published>2008-09-15T14:29:00.003-05:00</published><updated>2008-09-15T14:33:30.297-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rock &apos;n roll'/><category scheme='http://www.blogger.com/atom/ns#' term='fantasy camp'/><category scheme='http://www.blogger.com/atom/ns#' term='vote for brian'/><title type='text'>Rock and Roll Fantasy Camp - Vote early, vote often!</title><content type='html'>If you remember a few weeks back, my forever-sainted wife sent me to the Rock and Roll fantasy camp in Orlando.   It was one of the best days of my life!!&lt;br /&gt;&lt;br /&gt;Video is &lt;a href="http://www.rockcamp.com/bandVideos.php?city=Orlando" target="NEW"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ignoring the fact that we sounded awful, I'd appreciate a vote for my band.  You can vote once for each email address you have.  And I know some of you are tipping the email address scales out there.&lt;br /&gt;&lt;br /&gt;If you click on the Five Blokes and a Bird band, that's mine.  Please take a minute to vote for my band, the winners will get to go to the Rock &amp; Roll fantasy camp in London for a week in November and record in Abbey Road Studios.  Again, it would be better if you didn't apply the "Does Brian's band actually deserve to go to London" filter before you make this vote.&lt;br /&gt;&lt;br /&gt;Please pass along to anyone you can ask to vote as well.  Don't be shy, wives, cousins, neighbors....  :)  This could turn my "day of a lifetime" into a WEEK of a lifetime!&lt;br /&gt;&lt;br /&gt;Remember, a programmer can't live on Ruby alone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-2269804490102490231?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/2269804490102490231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=2269804490102490231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/2269804490102490231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/2269804490102490231'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/09/rock-and-roll-fantasy-camp-vote-early.html' title='Rock and Roll Fantasy Camp - Vote early, vote often!'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-1971501603929075118</id><published>2008-08-26T12:21:00.002-05:00</published><updated>2008-08-26T12:23:33.720-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apr-devel'/><category scheme='http://www.blogger.com/atom/ns#' term='passenger'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Installing Passenger on CentOS 5.2 x86_64</title><content type='html'>I am installing Passenger on CentOS 5.2 and ran into a tough spot where it wouldn't find Apache, even though I had apache installed through Yum.  The answer was to install the x86_64 version of the apr-devel package, as yum's dependency checker only installed the 32 bit version.  See http://bugs.centos.org/view.php?id=2934 for details on the bug.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;yum install apr-devel&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;That did the trick!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-1971501603929075118?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/1971501603929075118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=1971501603929075118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1971501603929075118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1971501603929075118'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/08/installing-passenger-on-centos-52-x8664.html' title='Installing Passenger on CentOS 5.2 x86_64'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-6754570990026124508</id><published>2008-08-18T11:48:00.002-05:00</published><updated>2008-08-18T13:21:24.660-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rock &apos;n roll'/><category scheme='http://www.blogger.com/atom/ns#' term='best wife ever'/><category scheme='http://www.blogger.com/atom/ns#' term='guitar'/><title type='text'>Rock and Roll Fantasy Camp</title><content type='html'>&lt;a href="http://gallery.me.com/ketelsenfamily/100079/IMG_0067/web.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px;" src="http://gallery.me.com/ketelsenfamily/100079/IMG_0067/web.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;If you don't care for non-technical posts, move on - this one is all Rock and Roll!&lt;br /&gt;&lt;br /&gt;Some who know me will remember that I've been screwing around on the guitar since I was a kid.  I never got "good", and I never really did anything with it.  All of that changed on Friday when my wife sent me to &lt;a href="http://www.rockcamp.com/"&gt;Rock 'n Roll Fantasy Camp &lt;/a&gt;for a day.&lt;br /&gt;&lt;br /&gt;Thursday night, when I got home from work she told me that she had already arranged with my office for me to have the day off.  She said we were going to Orlando for some back-to-school shopping for the kids.  It wasn't until bedtime that she told me the real story.  She was dropping me off at 8AM, and I'd spend the rest of the day learning from the Masters of Rock from the past three decades.  I'd end the day with a live show, opening for Extreme and King's X at the House of Blues in Orlando.&lt;br /&gt;&lt;br /&gt;Obviously, my jaw hit the floor and I didn't sleep a wink.  Friday morning finally came, and I actually sat down at breakfast next to Glen Hughes - Deep Purple basist.  Glen coincidentally ended up being my band leader.  So along with a few other regular joes, Glen turned us into the new band "Five Blokes and a Birdie".  We practiced for about 8 hours, with a small break in the early afternoon for some classes from the other legends there.  Winger, AC/DC, Slaughter, The Cars, Aerosmith, Deep Purple, Guns 'n Roses, the camp counselor list reads like a who's who in rock.&lt;br /&gt;&lt;br /&gt;At roughly 7:30, we hit the stage at the House of Blues in Downtown Disney.  We opened with Superstition (Stevie Wonder), and followed up with American Woman and You Really Got Me.  Now clearly, we weren't very good after just a day's practice, so our counselors chose pretty basic 3 chord songs to help us look good. &lt;br /&gt;&lt;br /&gt;I just can't emphasize how much fun the whole day was.  I had the time of my life practicing with and learning from these patient rockers.  And I thought I'd be nervous about playing the House of Blues, but the whole thing was a blur.  I played pretty well, only had a few fat-fingered moments, and I didn't choke in front of the screaming throng of "fans", who at that early hour of the evening mostly family and friends of fellow campers.  My wife stood right at the front barrier and took a hundred pictures with my iPhone.  &lt;br /&gt;&lt;br /&gt;My favorite picture is the one at the top of this article.  I'm on the left, Glen Hughes (Deep Purple) is singing and playing bass, then on the right is Chris Slade(AC/DC).  It's fun to be in good company.&lt;br /&gt;&lt;br /&gt;I highly recommend the experience to any musicians, whether you're good, bad, or years out of practice like me.  It was a day I'll never forget!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-6754570990026124508?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/6754570990026124508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=6754570990026124508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/6754570990026124508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/6754570990026124508'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/08/rock-and-roll-fantasy-camp.html' title='Rock and Roll Fantasy Camp'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-4660598962538799737</id><published>2008-07-10T13:22:00.002-05:00</published><updated>2008-07-10T13:24:46.830-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>iPhone Development</title><content type='html'>I won't violate any NDA's that I've signed with the mothership, but I am excited to announce that the iPhone app that I've submitted to the App Store has already been purchased a few times.  Nothing like seeing your baby fly.  Go, baby, go.  More here shortly, when the NDA expires.  I think that's tomorrow :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-4660598962538799737?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/4660598962538799737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=4660598962538799737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/4660598962538799737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/4660598962538799737'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/07/iphone-development.html' title='iPhone Development'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-3437845271581958727</id><published>2008-06-19T08:34:00.003-05:00</published><updated>2008-06-19T08:42:20.247-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_rails'/><category scheme='http://www.blogger.com/atom/ns#' term='icanhazbinky.com'/><category scheme='http://www.blogger.com/atom/ns#' term='passenger'/><category scheme='http://www.blogger.com/atom/ns#' term='phusion'/><title type='text'>Passenger 2.0 RC2</title><content type='html'>I just upgraded &lt;a href="http://www.icanhazbinky.com"&gt;ICanHazBinky&lt;/a&gt; from Phusion's Passenger (mod_rails) 1.05 to 2.0 RC1 yesterday, but somehow I missed the fact that they're already at RC2.  I downloaded the new gem and installed it without problems on our SliceHost slice.  Overall I'm very pleased with the speed of the new 2.0 code.  It "feels" significantly faster than the 1.0 code.  Does anybody have any empirical data to compare?  I should have run some load testing before I upgraded, next time I won't forget.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-3437845271581958727?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/3437845271581958727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=3437845271581958727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/3437845271581958727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/3437845271581958727'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/06/passenger-20-rc2.html' title='Passenger 2.0 RC2'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-8063897195030250696</id><published>2008-06-18T21:43:00.002-05:00</published><updated>2008-06-18T21:47:41.378-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='binky'/><category scheme='http://www.blogger.com/atom/ns#' term='s3'/><title type='text'>I can haz fun?</title><content type='html'>The peeps are working hard on &lt;a href="http://www.icanhazbinky.com"&gt;ICanHazBinky&lt;/a&gt; (for those of you who aren't following along - it's the site we just released based on the LovdByLess framework that allows people to upload cute pictures of their kids and caption them using the never-to-die LOLCat meme).  One of the cool things we're working on now is the ability to preview a picture you've captioned before you commit to the text and font size on the picture.  Kevin's become quite the file_column guru, and he's wrangling it to do his bidding with both local storage as it suits him and Amazon S3 storage for permanence.  It sure is fun doing a project like this.  And all of our families have loaded up the cute pictures you'd expect!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-8063897195030250696?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/8063897195030250696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=8063897195030250696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/8063897195030250696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/8063897195030250696'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/06/i-can-haz-fun.html' title='I can haz fun?'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-3136258678333548627</id><published>2008-06-05T19:04:00.002-05:00</published><updated>2008-06-05T21:24:35.328-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='www.icanhazbinky.com'/><category scheme='http://www.blogger.com/atom/ns#' term='lovdbyless'/><title type='text'>I Can Haz Binky?</title><content type='html'>Well I finally broke down and created an LOL clone site.  It's been on my mind to do for a good 6 months now, and I finally recruited some friends to help me out.  You can see our handiwork at &lt;a href="http://www.icanhazbinky.com"&gt;http://www.icanhazbinky.com&lt;/a&gt;.  The astute in the group will also notice that we built the site on the &lt;a href="http://lovdbyless.com/"&gt;LovdByLess&lt;/a&gt; framework.  We can't praise that framework enough.  Instead of months time to market, it dropped us down to a few weekends.   Big Kudos to the &lt;a href="http://lesseverything.com/"&gt;LessEverything&lt;/a&gt; team, they really built an amazing framework to start us off.  &lt;br /&gt;&lt;br /&gt;Developing websites in Ruby on Rails is always fun, but it seems like even more fun if you can somehow include pictures of your kids.  That's what&lt;a href="http://www.icanhazbinky.com"&gt; I Can Haz Binky&lt;/a&gt; is all about... pictures of kids, with full LOL-ification!&lt;br /&gt;&lt;br /&gt;Check it out, let me know what you think in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-3136258678333548627?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/3136258678333548627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=3136258678333548627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/3136258678333548627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/3136258678333548627'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/06/i-can-haz-binky.html' title='I Can Haz Binky?'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-5085962177191425728</id><published>2008-04-20T20:00:00.004-05:00</published><updated>2008-04-20T20:15:48.832-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_rails'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='gotchas'/><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><title type='text'>mod_rails (Passenger) and pre-loading of Ruby classes</title><content type='html'>I spent a good (well, I didn't think it was good) hour today fighting a deployment to my Slicehost VPS today using mod_rails.  I used mod_rails because it's so easy to drop a rails app up an create a vhost in Apache.  Well there's a little-known fact about mod_rails that I guarantee will bite you eventually.  mod_rails preloads all .rb files in your deployment directory.  Even the ones named __unused_thing.rb or even worse, environment.rb inside /apps/controllers.  Someone had taken a copy of the /config/environment.rb file and put it in /app/controllers.  mod_rails gleefully loaded up that rogue environment.rb file and threw up with an ugly error about not being able to find /app/controllers/boot.rb  &lt;br /&gt;&lt;br /&gt;It took me an hour to actually get the real error out of the error message.  To be fair, the error message listed the file /app/controllers/environment.rb but in my wisdom, I thought that it was mod_rails guessing my app's root wrong somehow.  Or I thought I didn't set the docroot in Apache right.  If I had read the error a little better, I would have solved this one faster.  Since I didn't write the app that I was deploying, I was pretty sure nobody would ever put an environment.rb file in the controllers folder.  Hmpf.  But who would have guessed that mod_rails loads all Ruby files?  That's certainly not the way that old dog Mongrel did it.  &lt;br /&gt;&lt;br /&gt;Thank god for testing.  You DO have good tests don't you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-5085962177191425728?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/5085962177191425728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=5085962177191425728' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/5085962177191425728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/5085962177191425728'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/04/modrails-passenger-and-pre-loading-of.html' title='mod_rails (Passenger) and pre-loading of Ruby classes'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-177276170390992288</id><published>2008-04-11T21:15:00.002-05:00</published><updated>2008-04-11T21:17:38.076-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='load testing'/><category scheme='http://www.blogger.com/atom/ns#' term='passenger'/><title type='text'>Phusion Passenger : Performance</title><content type='html'>Just a quick test with openload yielded 146 transactions per second on my little MacBook in Rails "production" mode for a page that hits the database.  Not bad at all.  I watched 'top' while the load test was running, and there were hundreds of Rails applications spawned by Passenger; the processor maxed at 75% but never went higher.&lt;br /&gt;&lt;br /&gt;Not bad, Phusion team, not bad at all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-177276170390992288?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/177276170390992288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=177276170390992288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/177276170390992288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/177276170390992288'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/04/phusio.html' title='Phusion Passenger : Performance'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-7295548191521935572</id><published>2008-04-11T19:52:00.007-05:00</published><updated>2008-04-11T20:58:34.407-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_rails'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='passenger'/><category scheme='http://www.blogger.com/atom/ns#' term='phusion'/><title type='text'>Phusion Passenger - simple Rails deployment on Mac OS X Leopard</title><content type='html'>I have been waiting rather impatiently for Phusion's Passenger gem to drop, so when I saw that it would be released "today" I watched Rubyforge all day for the gem to drop.&lt;br /&gt;&lt;br /&gt;I started off with a bit of disappointment, however, because the first message I got stated that Passenger wasn't stable on the built-in Apache2 that comes with Leopard.  Well that wasn't about to slow me down.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo port install apache2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I simply installed apache2 from macports and moved on.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo passenger-install-apache2-module&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This line installs and compiles the apache2 module.  Again some slight disappointment because the compilation still finds my local Apple installation first.  The docs say I've got to export APXS2 variable.  I tried every combination of sudo and export to get the export to apply to the passenger-install-apache2-module command, but no matter what I did, the export seemed to go out of scope before the command did. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo su&lt;/code&gt;&lt;br /&gt;&lt;code&gt;export APSX2=/opt/local/apache2/bin/apxs&lt;/code&gt;&lt;br /&gt;&lt;code&gt;passenger-install-apache2-module&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There!  Now I simply followed the directions that appear on the screen :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;--------------------------------------------&lt;br /&gt;The Apache 2 module was successfully installed.&lt;br /&gt;&lt;br /&gt;Please edit your Apache configuration file, and add these lines:&lt;br /&gt;&lt;br /&gt;   LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-1.0.1/ext/apache2/mod_passenger.so&lt;br /&gt;   RailsSpawnServer /Library/Ruby/Gems/1.8/gems/passenger-1.0.1/bin/passenger-spawn-server&lt;br /&gt;   RailsRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby&lt;br /&gt;&lt;br /&gt;After you restart Apache, you are ready to deploy any number of Ruby on Rails&lt;br /&gt;applications on Apache, without any further Ruby on Rails-specific&lt;br /&gt;configuration!&lt;br /&gt;&lt;br /&gt;Press ENTER to continue.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------&lt;br /&gt;Deploying a Ruby on Rails application: an example&lt;br /&gt;&lt;br /&gt;Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host&lt;br /&gt;to your Apache configuration file, and set its DocumentRoot to&lt;br /&gt;/somewhere/public, like this:&lt;br /&gt;&lt;br /&gt;   &lt;VirtualHost *:80&gt;&lt;br /&gt;      ServerName www.yourhost.com&lt;br /&gt;      DocumentRoot /somewhere/public&lt;br /&gt;   &lt;/VirtualHost&gt;&lt;br /&gt;&lt;br /&gt;And that's it! You may also want to check the Users Guide for security and&lt;br /&gt;optimization tips and other useful information:&lt;br /&gt;&lt;br /&gt;  /Library/Ruby/Gems/1.8/gems/passenger-1.0.1/doc/Users guide.html&lt;br /&gt;&lt;br /&gt;Enjoy Passenger, a product of Phusion (www.phusion.nl) :-)&lt;br /&gt;http://www.modrails.com/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now Passenger starts with Apache, but it the permissions on my Rails folder are preventing it from starting.  More updates to follow!&lt;br /&gt;&lt;br /&gt;Later that evening...&lt;br /&gt;&lt;br /&gt;I moved the Rails app to /Library/WebServer/myapp and restarted Apache.  This led to a Passenger screen with an error page complaining "bignum too big to convert into `long'".  That means that it's trying to set the user to one that doesn't exist. I looked at the stack trace and it was obviously trying to do the "set user" part of the process.  I added "RailsDefaultUser briank" and now I've got the (all too familiar) Rails 500 error screen.  This is like progress!  I look at the log files and there's a production.log file there!  Well I know what this problem is, there's no production database. I've got two options: I can change the production entries to match development, or I can figure out how to run in Development mode.  Let's do the right thing - it's a development server... Back in a flash!&lt;br /&gt;&lt;br /&gt;Now with this vhost config:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   &lt;VirtualHost *:80&gt;&lt;br /&gt;      ServerName www.mysite.local&lt;br /&gt;      RailsDefaultUser briank&lt;br /&gt;      RailsEnv development&lt;br /&gt;      DocumentRoot /Library/WebServer/myapp/public&lt;br /&gt;   &lt;/VirtualHost&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Passenger is serving my application, but things in the public folder aren't being served.  You'd think it would be a little easier than this!  More to follow.&lt;br /&gt;&lt;br /&gt;Ladies and Gentlemen, we have a winner!  After viewing &lt;a href="http://www.raditha.com/blog/archives/000896.html"&gt;this post&lt;/a&gt; I just removed the offending Order deny,allow Deny from all line and we've got ourselves a Rails app.&lt;br /&gt;&lt;br /&gt;It wasn't nearly as single-click as the video made it out to be.  Was it me?  Sound off on my pathetic command line skillz in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-7295548191521935572?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/7295548191521935572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=7295548191521935572' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/7295548191521935572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/7295548191521935572'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/04/phusion-passenger-simple-rails.html' title='Phusion Passenger - simple Rails deployment on Mac OS X Leopard'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-878151153838022916</id><published>2008-02-09T10:45:00.001-05:00</published><updated>2008-10-27T04:47:12.779-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='jruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>JRuby at acts_as_conference</title><content type='html'>&lt;a href="http://headius.blogspot.com/"&gt;Charlie&lt;/a&gt; just finished his &lt;a href="http://www.jruby.org"&gt;JRuby&lt;/a&gt; talk at acts_as_conference in Orlando.  He brought down the house, showing off JRuby's super-duper-performance, NetBeans IDE debugging and GlassFish application server deployment as a gem file.  WOW!  Sun has really stepped up their efforts on the JRuby front.  It's clear that they're looking to make a real impact in the Rails market, and I can see how companies wanting to deploy Rails with a little less voodoo/pain would love the JVM deployment path that Sun is offering.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-878151153838022916?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/878151153838022916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=878151153838022916' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/878151153838022916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/878151153838022916'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/02/jruby-at-actsasconference.html' title='JRuby at acts_as_conference'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-2124988126992716732</id><published>2008-01-24T13:49:00.000-05:00</published><updated>2008-01-24T13:55:26.749-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='evelyn'/><category scheme='http://www.blogger.com/atom/ns#' term='baby'/><title type='text'>Her name isn't Ruby</title><content type='html'>I tried hard to convince my wife that Ruby was a perfectly normal thing to name your child, but it just didn't fly.  Evelyn arrived last night at 5:21PM, weighing in at 7lbs 15oz.  She's perfect in every way.  Both mom and baby are healthy.  Pictures &lt;a href="http://gallery.mac.com/ketelsenfamily#100016"&gt;here&lt;/a&gt;.   I'm thinking about bringing her to acts_as_conference... we'll see how it goes.  She's already written her first Rails app, and is anxiously awaiting having some of her patches to core accepted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-2124988126992716732?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/2124988126992716732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=2124988126992716732' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/2124988126992716732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/2124988126992716732'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2008/01/her-name-isnt-ruby.html' title='Her name isn&apos;t Ruby'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-786067495178558183</id><published>2007-09-30T13:49:00.000-05:00</published><updated>2007-09-30T14:12:12.241-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='band of brothers'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise'/><title type='text'>Scaling JRuby -- Real, Practical, ENTERPRISE Rails</title><content type='html'>We've reached the end over at &lt;a href="http://enterpriserails.blogspot.com"&gt;Enterprise Rails&lt;/a&gt; and I'm excited to announce that the final product is one to be proud of.  Tomorrow we launch the complete rewrite of our .Net websites.  It's been 27,000 lines of Ruby replacing untold thousands more of .Net code.  We spent some good money on a nice design, then validated that design with all our end users and business constituents.  We designed an Enterprise-wide content management system and put the content back in the hands of the business.  Now they can deploy changes to the site without any IT intervention.  Where previously we had to compile and deploy code to change a misspelling, the business users can now make and preview the change real-time.  Deployment is a simple approval workflow away.  &lt;br /&gt;&lt;br /&gt;We had an amazing team doing the work.  From content management to backend integration, from testing and design to deployment, Kevin, Kristie, Ken, Chris, Dipendra, Radhika, Reid #1, Reid #2, Bashar, Bill and Brad drove this project to completion.  Along the way we learned much about Rails, and Ruby -- but especially about ourselves and each other.  A finer team can't be found anywhere else. &lt;br /&gt;&lt;br /&gt;We've really pushed the limits of Rails deployment too.  We've deployed the sites on JBoss as a single war file.  JBoss is configured as a cluster, so all sessions are shared, and we're using JBoss's excellent TreeCache module.  Gone are the days of Monit watching her Mongrels. Our deployment is fast, scalable and really easy to monitor and manage.  Countless thousands of man-hours have been put into deploying on the JVM, we're simply riding on those coattails.  To handle more traffic, we bring up a new JBoss server with the same configuration file as the others.  It self-announces, self-joins and self-deploys the latest code.   To deploy new code, we drop a new war file in the /farm directory.  The cluster partitions old vs. new traffic and nobody misses a beat or notices the change.  This is truly the bleeding edge of Rails deployment.  The JRuby team should be proud of all that they've accomplished over the past 12 months.  This wasn't even possible last year at this time.&lt;br /&gt;&lt;br /&gt;Somebody pinch me.  I never thought doing Rails in the Enterprise would be this slick.  Our CIO, &lt;a href="http://www.forbes.com/finance/mktguideapps/personinfo/FromPersonIdPersonTearsheet.jhtml?passedPersonId=1104437"&gt;Anil Kottoor&lt;/A&gt; took a chance on a wild dream that I shared with him, and I can't thank him enough for the opportunity to take it to fruition.  He stepped back and let industry veteran &lt;a href="http://jimyoung.us"&gt;Jim Young&lt;/a&gt; lead us through the corporate maze to success.  I have learned more from people named Jim in my life than  I have learned from all others combined... I knew it was an omen when Jim joined our team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-786067495178558183?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/786067495178558183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=786067495178558183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/786067495178558183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/786067495178558183'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/09/scaling-jruby-real-practical-enterprise.html' title='Scaling JRuby -- Real, Practical, ENTERPRISE Rails'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-275904271832384678</id><published>2007-09-09T16:25:00.000-05:00</published><updated>2007-09-09T16:34:06.854-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='jruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>Lots to do...</title><content type='html'>I haven't posted in a while, mostly because we're working hard over at &lt;a href="http://enterpriserails.blogspot.com"&gt;Enterprise Rails&lt;/a&gt; putting out a full rewrite of our 9 websites in Ruby on Rails.  That's going nicely, but I wanted to put out a little teaser about the technologies we're using.  &lt;br /&gt;&lt;br /&gt;Since it's an enterprise Rails deployment, we couldn't do it justice if it wasn't deployed on an Enterprise Class server farm.  So we "threw together" a little JBoss cluster and we're deploying on JRuby.&lt;br /&gt;&lt;br /&gt;The best thing by far is the JBoss Cache implementation.  Using JBoss Cache in Rails is dead simple with a little Ruby-Fu, which means you can expect a plugin soon.&lt;br /&gt;&lt;br /&gt;We think this deployment model is going to make people wake up and smell the power that is inherent in JRuby.  It's simple, fast and STOOPID-SCALABLE(tm).&lt;br /&gt;&lt;br /&gt;Go check out &lt;a href="http://www.jruby.org"&gt;JRuby&lt;/a&gt; and see what all the fuss is about.  Sun is doing good things, and we're riding these Rails on their train.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-275904271832384678?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/275904271832384678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=275904271832384678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/275904271832384678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/275904271832384678'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/09/lots-to-do.html' title='Lots to do...'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-7449259042551813628</id><published>2007-08-12T20:29:00.000-05:00</published><updated>2007-08-12T20:34:21.768-05:00</updated><title type='text'>Upsetting News -  #930  on Working With Rails</title><content type='html'>I'm very disappointed.  I got around to looking at my Working With Rails profile tonight and I noticed that my popularity is 88%.  Whatever does that mean?  Seems to be some sort of amalgamation of how many people have recommended me...  But I've never asked anyone to recommend me, so being #930 isn't terrible, I suppose.  But it should be much better!  I made three major releases of the RailsLiveCD!  It's been downloaded over 150,000 times just from my home server...  That's got to be worth more than #930. &lt;BR&gt;&lt;a href="http://www.workingwithrails.com/recommendation/new/person/1448-brian-ketelsen"&gt;Recommend me on Working With Rails --- Right the wrong.&lt;/a&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-7449259042551813628?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/7449259042551813628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=7449259042551813628' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/7449259042551813628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/7449259042551813628'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/08/upsetting-news-930-on-working-with.html' title='Upsetting News -  #930  on Working With Rails'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-2077085528633813494</id><published>2007-06-29T20:27:00.000-05:00</published><updated>2007-06-29T20:29:11.256-05:00</updated><title type='text'></title><content type='html'>You know what makes me happy?  Bandwidth.  Verizon FIOS upgraded to 20MBps in Florida recently and I have to say that when you're downloading from somebody who has the pipe, it's really a dream.  Look at these numbers!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.speedtest.net"&gt;&lt;img src="http://www.speedtest.net/result/147594193.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I remember when we were really excited about the 300 baud modem in our Tandy 1000.  Back when I was a kid...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-2077085528633813494?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/2077085528633813494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=2077085528633813494' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/2077085528633813494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/2077085528633813494'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/06/you-know-what-makes-me-happy-bandwidth.html' title=''/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-6226591677731104209</id><published>2007-06-15T05:15:00.001-05:00</published><updated>2007-06-15T05:15:54.635-05:00</updated><title type='text'>Senior Rails Developer needed in Tampa</title><content type='html'>If you want to be part of one of the largest Rails shops in Florida, shoot me a line at bketelsen@gmail.com  We're looking for one Senior level Ruby on Rails hacker.  Must have solid experience with Rails and MySQL, JRuby is a plus.&lt;br /&gt;&lt;br /&gt;Position : Senior Software Engineer&lt;br /&gt;Location : Tampa, FL&lt;br /&gt;Pay : Competitive&lt;br /&gt;Tools : Ruby, Rails, MySQL, Java, Solr, .Net&lt;br /&gt;Start : Immediate&lt;br /&gt;Contact : BKetelsen@gmail.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-6226591677731104209?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/6226591677731104209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=6226591677731104209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/6226591677731104209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/6226591677731104209'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/06/senior-rails-developer-needed-in-tampa.html' title='Senior Rails Developer needed in Tampa'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-4630057102680719789</id><published>2007-05-15T21:03:00.000-05:00</published><updated>2007-05-15T21:04:41.217-05:00</updated><title type='text'>RailsLiveCD Version 0.3.1 - Just in time for RailsConf 2007</title><content type='html'>Just because some folks still use this URL for tracking the RailsLiveCD distribution, there's a new version over at &lt;a href="http://www.railslivecd.org"&gt;RailsLiveCD.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-4630057102680719789?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/4630057102680719789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=4630057102680719789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/4630057102680719789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/4630057102680719789'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/05/railslivecd-version-031-just-in-time.html' title='RailsLiveCD Version 0.3.1 - Just in time for RailsConf 2007'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-6024038306246946359</id><published>2007-05-03T22:08:00.000-05:00</published><updated>2007-05-03T22:12:43.044-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='p.latyp.us'/><title type='text'>p.latyp.us software</title><content type='html'>I'm pleased to announce that I've kicked off development on a great application with Jim James, the godfather of IT in the Travel space.  We're going to use Ruby on Rails to take the travel space up to a new level of audience participation, and I'm quite excited to be on board.    You can read our blog over at &lt;a href="http://blog.p.latyp.us/"&gt;http://blog.p.latyp.us&lt;/a&gt;&lt;br /&gt;It's a bit quiet right now, because we're just getting started.  But you can expect some good posts coming soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-6024038306246946359?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/6024038306246946359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=6024038306246946359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/6024038306246946359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/6024038306246946359'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/05/platypus-software.html' title='p.latyp.us software'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-4794822947222277535</id><published>2007-05-03T21:53:00.000-05:00</published><updated>2007-05-03T22:04:07.102-05:00</updated><title type='text'>RailsConf 2007</title><content type='html'>There is always somebody smarter than me thinking up cool things.  &lt;a href="http://www.drnicwilliams.com"&gt;Dr. Nic&lt;/a&gt; is one that comes to mind more often than not.  I signed up for Dr. Nic's sweet MyConfPlan site and found the &lt;a href="http://soylentfoo.jnewland.com/articles/2007/05/01/myconfplan-javascript-widget"&gt;JSON widget&lt;/a&gt; that I'm now proudly sporting on the sidebar of this blog.  At my office we're doing a "Usability Study" right now and the group that's doing the work for us had a hard time describing what Web 2.0 really is.  I used this as the perfect example.  Not only is the MyConfPlan a 2.0 sort of site in terms of visuals and functionality, but exposing the data for use/mashup elsewhere is the pinnacle of the Web 2.0 movement for me.&lt;br /&gt;&lt;br /&gt;So check out my RailsConf schedule over to the right.   Maybe while I'm there both of the &lt;a href="http://www.railslivecd.org"&gt;RailsLiveCD&lt;/a&gt; users will say "hi".  I'll be the one with the MacBook.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-4794822947222277535?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/4794822947222277535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=4794822947222277535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/4794822947222277535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/4794822947222277535'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/05/railsconf-2007.html' title='RailsConf 2007'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-1357245989738770212</id><published>2007-04-01T15:27:00.000-05:00</published><updated>2007-04-01T15:35:14.644-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='fair'/><category scheme='http://www.blogger.com/atom/ns#' term='tampa'/><title type='text'>Keep Off Rails!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Owy_f_maGhM/RhAW9zhtvlI/AAAAAAAAAVs/1fSQk5FvTkc/s1600-h/KeepOff.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Owy_f_maGhM/RhAW9zhtvlI/AAAAAAAAAVs/1fSQk5FvTkc/s400/KeepOff.jpg" alt="" id="BLOGGER_PHOTO_ID_5048560433341775442" border="0" /&gt;&lt;/a&gt;At the Florida State Fair in Tampa last month I saw this sign and had to get a picture.  It must be an omen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-1357245989738770212?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/1357245989738770212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=1357245989738770212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1357245989738770212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1357245989738770212'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/04/keep-off-rails.html' title='Keep Off Rails!'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Owy_f_maGhM/RhAW9zhtvlI/AAAAAAAAAVs/1fSQk5FvTkc/s72-c/KeepOff.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-8253912322347514094</id><published>2007-02-14T14:42:00.000-05:00</published><updated>2007-02-14T14:59:24.829-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='infoq'/><title type='text'>InfoQ Article Posted</title><content type='html'>My first of hopefully many articles was &lt;a href="http://www.infoq.com/news/2007/02/revolution-health-profile"&gt;published&lt;/a&gt; this morning on &lt;a href="http://www.infoq.com/"&gt;InfoQ&lt;/a&gt;.  I enjoyed talking with &lt;a href="http://revolutiononrails.blogspot.com/index.html"&gt;Aaron  Batalion&lt;/a&gt; and the development crew.  The bits and bytes they're drip-feeding on their blog have me on the edge of my seat.  If you haven't seen it yet, hop on over and read the whole thing (I suggest reading them start to finish because there are quite a few background posts before the real meat hits).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-8253912322347514094?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/8253912322347514094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=8253912322347514094' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/8253912322347514094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/8253912322347514094'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/02/infoq-article-posted.html' title='InfoQ Article Posted'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-1471368566146480690</id><published>2007-02-12T23:41:00.000-05:00</published><updated>2007-02-05T14:41:10.781-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RailsConf'/><title type='text'>RailsConf 2007</title><content type='html'>Great News!  I registered for RailsConf 2007 today... It will be my first, so I'm a bit nervous.  But my good buddy Jim from p.latyp.us is going too, so we'll be able to drink some beers and hack Rails code for a whole weekend.  I might have to get that Mac Book Pro before May now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-1471368566146480690?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/1471368566146480690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=1471368566146480690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1471368566146480690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/1471368566146480690'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/02/railsconf-2007.html' title='RailsConf 2007'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-3806220042530892123</id><published>2007-02-03T20:46:00.000-05:00</published><updated>2007-02-03T20:48:47.367-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='move'/><category scheme='http://www.blogger.com/atom/ns#' term='feed'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>Move to Blogger</title><content type='html'>I have moved to Blogger. Now that they offer custom domain names, there is little reason for me to keep my own blog code somewhere.  Please resubscribe using the link at the bottom of the page.  Maybe this will help me keep that comment spam down to a minimum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-3806220042530892123?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/3806220042530892123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=3806220042530892123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/3806220042530892123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/3806220042530892123'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/02/move-to-blogger.html' title='Move to Blogger'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367957476552725189.post-9160560380654435584</id><published>2007-02-02T21:57:00.000-05:00</published><updated>2007-02-02T22:07:17.418-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jruby'/><category scheme='http://www.blogger.com/atom/ns#' term='corporate'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise'/><title type='text'>Betting on JRuby</title><content type='html'>The upcoming release of &lt;a href="http://www.jruby.org"&gt;JRuby&lt;/a&gt; 1.0 a.k.a "rails support jruby" is&lt;br /&gt;going to be the tipping point for "Enterprise" Rails development.&lt;br /&gt;There are already several large companies betting their web sites on&lt;br /&gt;Rails.  And I can't fault them.  Rails is the most compelling web&lt;br /&gt;framework out there right now for several reasons.  But by supporting&lt;br /&gt;Rails on the JVM, JRuby will catapult corporate Rails development&lt;br /&gt;into levels the smart guys 37Signals never dreamed of.&lt;BR&gt;&lt;br /&gt;&lt;BR&gt;&lt;br /&gt;Here is why:&lt;BR&gt;&lt;br /&gt;Corporations are lead by people who are paid to produce results.&lt;br /&gt;Sometimes those people like to take calculated risks on new&lt;br /&gt;technologies.  A technology like Rails is easy for a smaller company, a startup or an unknown entity because it's inexpensive to host and easy to get started.  But for a bigger corporation, the fear will always be scalability.  Now we all know Rails scales.  That's not something that needs to be reproven by me or anyone else.  But what they don't say is how hard they have to work to make it scale.  In a Java shop, it's a matter of bringing up new Tomcat, Grizzly, JBoss or Glassfish instances.   Keep feeding it RAM and CPUs and you'll scale until something else (like your database) breaks.&lt;BR&gt;&lt;BR&gt;&lt;br /&gt;I am about to propose JRuby for a corporate web infrastructure for two main reasons:&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;Java is easy to deploy&lt;/LI&gt;&lt;LI&gt;JRuby helps Rails talk to Enterprisey-Things(tm) like SSO/LDAP, JMS, ESBs, etc.&lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;&lt;br /&gt;At the end of the day it's still my beloved Ruby running Rails.  But it's wearing a tie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367957476552725189-9160560380654435584?l=brianketelsen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianketelsen.blogspot.com/feeds/9160560380654435584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367957476552725189&amp;postID=9160560380654435584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/9160560380654435584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367957476552725189/posts/default/9160560380654435584'/><link rel='alternate' type='text/html' href='http://brianketelsen.blogspot.com/2007/02/betting-on-jruby.html' title='Betting on JRuby'/><author><name>Brian Ketelsen</name><uri>http://www.blogger.com/profile/07853198713519214706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
