<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jordan Fowler (dot) com</title><link>http://www.jordanfowler.com/</link><description>Ideas and happenings.</description><language>en-us</language><item><title>All I Need</title><description>&lt;p&gt;Radiohead's latest album &lt;em&gt;In Rainbows&lt;/em&gt; is one of my favorite albums in recent years. It's packed full of reverb and new-age remnants that bring about a state of both angst and euphoria. This dichotomy of expression gets me every time.&lt;/p&gt;

&lt;p&gt;Currently, my favorite track on the album is #5 called &lt;em&gt;All I Need&lt;/em&gt;. Below are the lyrics and a few of my favorite videos put to the music. Enjoy.&lt;/p&gt;

&lt;pre&gt;
I am the next act waiting in the wings
I am an animal trapped in your hot car
I am all of the days that you choose to ignore
You are all I need
You are all I need
I am in the middle of your picture
Lying in the reeds

I am a moth who just wants to share your light
I'm just an insect trying to get out of the night
I only stick with you because there are no others

You are all I need
You are all I need
I am in the middle of your picture
Lying in the reeds

S'all wrong
S'all right
S'all wrong
S'all right
S'all right
S'alright
&lt;/pre&gt;

&lt;h3&gt;Mash-up with &lt;a href="http://www.imdb.com/title/tt0117040/"&gt;Microcosmos&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iY4APDrl66s&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/iY4APDrl66s&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;h3&gt;Scotch Mist Version&lt;/h3&gt;

&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ioPDGJIf2QI&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ioPDGJIf2QI&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;h3&gt;Official MTV Video Release&lt;/h3&gt;

&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cdrCalO5BDs&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/cdrCalO5BDs&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Wed, 09 Jul 2008 14:09:22 -0700</pubDate><link>http://www.jordanfowler.com/posts/44</link><guid>/posts/44</guid></item><item><title>Merb Talk Published as Podcast</title><description>&lt;p&gt;A couple of months ago I gave a presentation at &lt;a href="http://www.sdruby.com/"&gt;SD Ruby&lt;/a&gt; on the Ruby web-framework called &lt;a href="http://www.merbivore.com"&gt;Merb&lt;/a&gt;. The talk has now been published to the &lt;a href="http://podcast.sdruby.com/"&gt;SD Ruby Podcast&lt;/a&gt;. Take a look at the video here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://podcast.sdruby.com/2008/6/5/episode-045-merb"&gt;Merb: Taking off the training wheels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Jordan Fowler</author><pubDate>Thu, 05 Jun 2008 09:40:02 -0700</pubDate><link>http://www.jordanfowler.com/posts/42</link><guid>/posts/42</guid></item><item><title>Introducing Shadow, a Rails Plugin</title><description>&lt;p&gt;Over the past few months, &lt;a href="http://www.mokolabs.com"&gt;Patrick Crowley&lt;/a&gt; and I have been working on the complete rewrite of the popular &lt;a href="http://www.cinematreasures.org"&gt;Cinema Treasures&lt;/a&gt; community website. With the overall goal of bringing more social functions to the site, we needed a way to track changes the community makes to Theaters and related information. In essence, we needed "activity feed" functionality akin to Facebook and other social networks.&lt;/p&gt;

&lt;p&gt;While it is relatively straightforward to store changes (versioning) of a particular model, it is less trivial to track what changed in each version and who changed it. This could technically be considered "auditing", but that's not a very exciting name. I decided to go with the name Shadow, alluding to capturing and storing the shadow of a record at any given state (including its associations).&lt;/p&gt;

&lt;p&gt;For visual reference, the figure below shows how you might use Shadow to generate user activity feeds:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.jordanfowler.com/images/user_activity.jpg" alt="Example User Activity Feed" style="border: 1px solid #CCC" /&gt;&lt;/p&gt;

&lt;p&gt;The model code to achieve the above functionality (in this case showing the User activity for a Project with Milestones), could be:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
class Project &lt; ActiveRecord::Base
  has_many :milestones

  shadow :attributes =&gt; [:address, :description], :associations =&gt; :milestones, :attach =&gt; :user
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The shadow code is currently hosted at &lt;a href="http://www.github.com/"&gt;Github&lt;/a&gt; and is a &lt;a href="http://wiki.rubyonrails.org/rails/pages/Plugins"&gt;Rails Plugin&lt;/a&gt;. I have plans to convert this into a Merb-compatible RubyGem as well. For more information on using Shadow and the current TODOs respectively, see &lt;a href="http://www.github.com/TheBreeze/shadow/tree/master"&gt;shadow&lt;/a&gt; and &lt;a href="http://github.com/TheBreeze/shadow/tree/master/TODO"&gt;TODO&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, if you are running Edge Rails, it is possible to install this plugin with the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
$ ./script/plugin install git://github.com/TheBreeze/shadow.git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Otherwise, you'll need to run the following command (remember to change to your Rails app root):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
  $ cd /path/to/your/rails/app
  $ git clone --depth 1 git://github.com/TheBreeze/shadow.git "./vendor/plugins/shadow/"; rm -rf ./vendor/plugins/shadow/.git
&lt;/code&gt;&lt;/pre&gt;</description><author>Jordan Fowler</author><pubDate>Fri, 30 May 2008 11:38:48 -0700</pubDate><link>http://www.jordanfowler.com/posts/41</link><guid>/posts/41</guid></item><item><title>Getting to know Ruby: Core Classes</title><description>&lt;p&gt;This evening I've been hanging out in #ruby-lang helping people out and just chatting about some more advanced Ruby topics. I decided to jump on the console and play around with some Ruby internals. If you're a programmer and are curious about Ruby but aren't sure where to start, this is the perfect article for you.&lt;/p&gt;

&lt;p&gt;First and foremost, you'll need to have Ruby installed on your machine. Doing this is pretty straightforward, &lt;a href="http://www.ruby-lang.org/en/downloads/"&gt;click here&lt;/a&gt; for help. Once you have it installed, you'll get a nice little utility called &lt;a href="http://ruby.about.com/od/learnruby/p/hello_irb.htm"&gt;IRB&lt;/a&gt; which stands for Interactive Ruby. To start it up, open a console window and type:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
$ irb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You'll be presented with the signature "&gt;&gt;" command prompt. To make sure everything is working, go ahead and do a "Hello, World" like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
&gt;&gt; puts "Hello, World!"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you get the following output, you're ready to go:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
Hello, World!
=&gt; nil
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A good resource to bookmark is the &lt;a href="http://www.ruby-doc.org/core/"&gt;RDoc Documentation for Core Classes&lt;/a&gt;. Now is a good time to open this up in a browser. Once that is open, go back to IRB and enter the following line of code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
&gt;&gt; Object.constants.select { |c| Object.const_get(c).is_a?(Class) }.sort
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Let's break that line down a bit. Since Object is the root namespace/class in Ruby, the constants class method will return all the modules and classes defined within Object. Since that returns an array of constants (it is actually an array of strings for each constant), we'll want to slim down the list to only those that are classes. The const_get class method returns the constant and the is_a? class method tells whether or not a given constant descends from a given class. Then we sort that list. Returned should be the 65 or so core classes that make up the Ruby language, see below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
=&gt; ["ArgumentError", "Array", "Bignum", "Binding", "Class", "ConditionVariable", "Continuation", "Data", "Dir", 
"EOFError", "Exception", "FalseClass", "File", "Fixnum", "Float", "FloatDomainError", "Hash", "IO", "IOError", 
"IndexError", "Integer", "Interrupt", "LoadError", "LocalJumpError", "MatchData", "MatchingData", "Method", "Module", 
"Mutex", "NameError", "NilClass", "NoMemoryError", "NoMethodError", "NotImplementedError", "Numeric", "Object", 
"Proc", "Queue", "Range", "RangeError", "Regexp", "RegexpError", "RubyLex", "RuntimeError", "SLex", "ScriptError", 
"SecurityError", "SignalException", "SizedQueue", "StandardError", "String", "Struct", "Symbol", "SyntaxError", 
"SystemCallError", "SystemExit", "SystemStackError", "Thread", "ThreadError", "ThreadGroup", "Time", "TrueClass", 
"TypeError", "UnboundMethod", "ZeroDivisionError"]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you really want to get to know Ruby internals, just go through that list and refer to the documentation I mentioned before. Since that is simply a list of alphabetized class names, some classes will be far more complex than others. Feel free to skip those that are unclear.&lt;/p&gt;

&lt;p&gt;Also, if you want the same documentation from the website locally, you can use the &lt;a href="http://ruby.about.com/od/gettingstarted/qt/ruby_ri.htm"&gt;RI&lt;/a&gt; utility as follows (for the Array documentation):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
$ ri Array
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Have fun!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Mon, 12 May 2008 01:01:02 -0700</pubDate><link>http://www.jordanfowler.com/posts/40</link><guid>/posts/40</guid></item><item><title>Jury Duty: Voir dire</title><description>&lt;p&gt;In my previous post, I mentioned a process by which the court determines biases an individual may have in relation to charges in a case. I also mentioned that I wouldn't be surprised if courts didn't use this process 50 or 80 years ago. After a bit of research, I found no evidence to back my claim, so it stands as merely my own postulate.&lt;/p&gt;

&lt;p&gt;What I did find was sentiment similar to my own.&lt;/p&gt;

&lt;p&gt;"In the United States the process of voir dire is often much more in depth than in other countries and its practical implementation is somewhat controversial because of this. The amount of privacy that the potential jurors are afforded when asked questions raises the issue of the definition of "impartial jury". Some people question if the intensive questioning of potential jurors looks not just for inherent bias but for a potential to be emotionally swayed. On the other hand, proponents argue that this method gives both sides more confidence in the verdict."
&lt;sup&gt;[1]&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Looks like I'm not the only one who sees some controversy in this process.&lt;/p&gt;

&lt;h3&gt;Notes:&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Jury_selection#Voir_dire"&gt;Wikipedia - Jury selection (Voir dire)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><author>Jordan Fowler</author><pubDate>Thu, 08 May 2008 11:24:38 -0700</pubDate><link>http://www.jordanfowler.com/posts/39</link><guid>/posts/39</guid></item><item><title>Jury Duty: Jury Selection (Pre-trial Reflection)</title><description>&lt;p&gt;Jury duty is one of those rare instances in life when a random group of complete strangers are forced to sit together in the same room and talk about their personal lives. The process by which jurors are selected (jury selection) is what I imagine an A.A. meeting might be like, except that half the people don't even drink. This makes for a fair share of awkward moments.&lt;/p&gt;

&lt;p&gt;It is not my intention to talk in any way about the trial or about individuals in my jury panel. Rather, due to its surreal nature, jury duty is worth talking about in generalities.&lt;/p&gt;

&lt;p&gt;This has been my first experience with the whole process, which might explain my curiosity, but there are a few things that have really stood out. For instance, it feels like to select a jury, there almost needs to be another impartial jury, weighing in on merits of the former. They ask highly personal questions about a broad range of topics including work life, family life, and any known biases pertaining to the charges.&lt;/p&gt;

&lt;p&gt;My concern with the process is only the fact that selecting a jury can take in excess of an entire day. The judicial branch of our government seems nearly as inefficient as the other branches. Correct me if I'm wrong, but I'm willing to bet that 50 or 80 years ago, we didn't have such a complex jury selection process.&lt;/p&gt;

&lt;p&gt;Why would I bet this? Well, if you put 12 people in a room (no matter how "fit for the job" they are believed to be), they are going to disagree and argue about things, but in the end it's their job to make a collective decision. The fact that a Judge (just a person) ultimately decides whether a juror (just a person) is fit to discuss, argue, and ultimately make a decision seems to blatantly undermine the whole point of the process.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Thu, 08 May 2008 01:51:15 -0700</pubDate><link>http://www.jordanfowler.com/posts/38</link><guid>/posts/38</guid></item><item><title>Setanta San Diego Gaelic Football and Surf Club</title><description>&lt;p&gt;Found this news report on the &lt;a href="http://www.setantasandiegogfc.com"&gt;club website&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;object width="350" height="300"&gt;
  &lt;param name="movie" value="http://www.setantasandiegogfc.com/videoclips/FLVPlayer_Progressive.swf"&gt;&lt;/param&gt;
  &lt;param name="salign" value="lt"&gt;&lt;/param&gt;
  &lt;param name="quality" value="high"&gt;&lt;/param&gt;
  &lt;param name="wmode" value="opaque"&gt;&lt;/param&gt;
  &lt;param name="menu" value="false"&gt;&lt;/param&gt;
  &lt;param name="scale" value="noscale"&gt;&lt;/param&gt;
  &lt;param name="FlashVars" value="&amp;amp;MM_ComponentVersion=1&amp;amp;skinName=http://www.setantasandiegogfc.com/videoclips/Halo_Skin_3&amp;amp;streamName=http://www.setantasandiegogfc.com/videoclips/vidc2004&amp;amp;autoPlay=false&amp;amp;autoRewind=true"&gt;&lt;/param&gt;&lt;/p&gt;

&lt;p&gt;&lt;embed src="http://www.setantasandiegogfc.com/videoclips/FLVPlayer_Progressive.swf" flashvars="&amp;amp;MM_ComponentVersion=1&amp;amp;skinName=http://www.setantasandiegogfc.com/videoclips/Halo_Skin_3&amp;amp;streamName=http://www.setantasandiegogfc.com/videoclips/vidc2004&amp;amp;autoPlay=false&amp;amp;autoRewind=true" quality="high" scale="noscale" width="350" height="300" wmode="opaque" menu="false" name="FLVPlayer" salign="LT" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;
&lt;/object&gt;&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 06 May 2008 21:29:59 -0700</pubDate><link>http://www.jordanfowler.com/posts/37</link><guid>/posts/37</guid></item><item><title>First Day of Gaelic Football</title><description>&lt;p&gt;I've just returned from my first Gaelic Football skill training session and this game (besides pickups) feels very natural. The ball is quite a bit heavier than a soccer ball and there is a lot of catching involved so my hands (mostly the pinkies) are sort of non-responsive. Whenever i go for the 'a' or ';' keys, it takes an extra bit of determination to get the key pressed.&lt;/p&gt;

&lt;p&gt;The club I'm part of here in San Diego is called Setanta and can be found at &lt;a href="http://www.setantasandiegogfc.com/"&gt;http://www.setantasandiegogfc.com/&lt;/a&gt;. For any of you San Diego readers, if you're interested in joining the team, there is still time, we'll be having another skill training session on Saturday, May 10, 2008 at 2:00PM. This will be held at &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=335339419298861792,32.833353,-117.271886&amp;amp;q=750+Nautilus+St,+La+Jolla,+CA+92037&amp;amp;sll=32.907839,-117.200089&amp;amp;sspn=0.166311,0.321007&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;z=14&amp;amp;iwloc=addr&amp;amp;ll=32.842529,-117.267723&amp;amp;source=embed"&gt;750 Nautilus St, La Jolla, CA 92037&lt;/a&gt;, see map below:&lt;/p&gt;

&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=335339419298861792,32.833353,-117.271886&amp;amp;q=750+Nautilus+St,+La+Jolla,+CA+92037+(La+Jolla+Senior+High+School)&amp;amp;sll=32.907839,-117.200089&amp;amp;sspn=0.166311,0.321007&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;z=14&amp;amp;iwloc=addr&amp;amp;ll=32.842529,-117.267723&amp;amp;output=embed&amp;amp;s=AARTsJoBEu_HHLQF89s_jYC5COyZ4jwZoQ"&gt;&lt;/iframe&gt;

&lt;p&gt;For more general Gaelic Football information, see the videos below:&lt;/p&gt;

&lt;h2&gt;Part 1 / 3&lt;/h2&gt;

&lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iIlsRsMMJUc&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/iIlsRsMMJUc&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;h2&gt;Part 2 / 3&lt;/h2&gt;

&lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dpdoJnsDHIY&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/dpdoJnsDHIY&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;h2&gt;Part 3 / 3&lt;/h2&gt;

&lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3Ip9dNCuy_k&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/3Ip9dNCuy_k&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Sl&#225;inte!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Mon, 05 May 2008 22:11:16 -0700</pubDate><link>http://www.jordanfowler.com/posts/36</link><guid>/posts/36</guid></item><item><title>It's Only Just Begun</title><description>&lt;p&gt;This video below should speak for itself.&lt;/p&gt;

&lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NWMDF92ZE7c&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/NWMDF92ZE7c&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Mon, 28 Apr 2008 23:39:13 -0700</pubDate><link>http://www.jordanfowler.com/posts/33</link><guid>/posts/33</guid></item><item><title>Paying taxes with a loan... Wait, what?</title><description>&lt;p&gt;&lt;img src="http://www.jordanfowler.com/images/tax_loan.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;So I'm doing a bit of banking online and I see the above ad. It seems that we have a fundamentally flawed tax system if banks are offering loans (and profiting from the interest) to pay the government. At the very least I think the IRS should offer some sort of payment plan if a persons taxes are that high.&lt;/p&gt;

&lt;p&gt;Any thoughts?&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Mon, 21 Apr 2008 18:17:17 -0700</pubDate><link>http://www.jordanfowler.com/posts/32</link><guid>/posts/32</guid></item><item><title>Google App Engine: Giving away your soul</title><description>&lt;p&gt;&lt;img src="http://code.google.com/appengine/images/appengine_lowres.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Last week Google launched a new product called &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;. The premise is simple: let Google handle the server setup (including your application stack), maintenance, and scaling. It also means you have to use Google as your data store.&lt;/p&gt;

&lt;p&gt;As with all things, there are always bigger fish in the sea. Google is dead-set on being the biggest. It's one thing to use Google products for personal use such as e-mail, documents, and widgets but quite another to store your companies' data in their proprietary data store.&lt;/p&gt;

&lt;p&gt;Internet companies generally derive their value in one way: their data. For every user your app (running on Google App Engine) attracts, Google also gains a user. This is why Google chose to have a top-level User type in their data store. At the very least Google should be paying you, because your Application is providing them with more users.&lt;/p&gt;

&lt;p&gt;By giving away the one thing that makes your application valuable, you are in essence giving away your soul.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Thu, 10 Apr 2008 11:21:36 -0700</pubDate><link>http://www.jordanfowler.com/posts/30</link><guid>/posts/30</guid></item><item><title>American Reflections: Dreams</title><description>&lt;p&gt;When I moved from my home state almost three years ago, I felt like I had everything figured out. In my own naivety, I believed that to see my dreams come true, all I needed was to slowly work at my ideas until they became the visions in my head. Still today I believe in this ideology to a certain extent, but I've learned that success and innocence are frequently at odds with one another.&lt;/p&gt;

&lt;p&gt;The "American Dream" is not as simple as working hard and playing by the rules.&lt;/p&gt;

&lt;p&gt;This past weekend a friend was talking about how in many countries around the world, it is normal and sometimes even expected for young people to leave their home countries (before entering the workforce) and travel for months on end. The idea behind this tradition is simple: when you leave your comfort zone and must adapt to new cultures and customs, it is more likely for you to gain a sense of compassion and understanding. This no doubt enriches you as a person and gives you an extra edge when returning to the workforce.&lt;/p&gt;

&lt;p&gt;In contrast, young Americans by-and-large do not travel once they've completed their education. Instead they enter the workforce directly and may not travel overseas until their world-view is firmly planted, if ever. As a result of this, we've become a nation of dispassionate and widely apathetic individuals.&lt;/p&gt;

&lt;p&gt;Remaining passionate and driven in the midst of mass conformity can at times be highly indemnifying and at others an immense burden. Can compassion only be gained through experience, or does my understanding of the principle give me something of a consolation? Perhaps it's time to travel abroad.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Thu, 10 Apr 2008 02:20:17 -0700</pubDate><link>http://www.jordanfowler.com/posts/29</link><guid>/posts/29</guid></item><item><title>Septagon</title><description>&lt;p&gt;The up-and-coming hip hop group Septagon from Bozeman, MT has released their first album. This album holds special significance for me, because the members are my buddies from college. I couldn't be more excited and proud of them.&lt;/p&gt;

&lt;p&gt;Check out the album here:
&lt;a href="http://www.sep7agon.com/?q=node/4"&gt;http://www.sep7agon.com/?q=node/4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Mon, 07 Apr 2008 12:21:03 -0700</pubDate><link>http://www.jordanfowler.com/posts/28</link><guid>/posts/28</guid></item><item><title>San Diego Web Standards Group</title><description>&lt;p&gt;Some colleagues of mine here in San Diego have put together a new user group targeted at Web Standards. I think this is a great opportunity for anyone looking to meet some new people and learn a lot. It's pretty short notice, but if you stumble upon this post before the meeting, you should definitely check it out!&lt;/p&gt;

&lt;p&gt;Information about the first meeting can be found at &lt;a href="http://sdwebstandards.org/"&gt;http://sdwebstandards.org/&lt;/a&gt;. I'll be heading down to the meeting. Hope to see you there!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 01 Apr 2008 10:34:12 -0700</pubDate><link>http://www.jordanfowler.com/posts/26</link><guid>/posts/26</guid></item><item><title>jordanfowler.com, now with Merb!</title><description>&lt;p&gt;Welcome to my new site, which I hope will be the last major re-factoring I'll do for a long time. This site now runs on &lt;a href="http://merbivore.com/get_merb.html"&gt;Merb 0.9.1&lt;/a&gt; and is much faster than when it was on Rails.&lt;/p&gt;

&lt;p&gt;On the previous site, I had full page caching happening, and it was the only way to get the site to run on a VPS with not a lot of RAM. There is currently no caching happening anywhere in this site. So, the moral of the story: if you don't have a ton of RAM to work with and you want a snappy site, check out Merb!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Mon, 31 Mar 2008 22:05:23 -0700</pubDate><link>http://www.jordanfowler.com/posts/25</link><guid>/posts/25</guid></item><item><title>Merb: A Memo</title><description>&lt;p&gt;You may or may not have heard about the lightweight Ruby web framework Merb &lt;a href="http://merbivore.com/"&gt;http://merbivore.com/&lt;/a&gt;. Merb stands for Mongrel + Erb, but it's a whole lot more than the name might imply. I've been using it over the past few weeks to build a file upload app which will coincide with the main application built in Rails.&lt;/p&gt;

&lt;p&gt;It's worth asking what the main distinctions are between the frameworks and why you might want to use one over the other. Whereas Rails is the framework that has lowered the barrier to entry for many people, Merb brings performance and purity to a clever but sometimes obfuscated world. If you're an MVC buff like me, you'll appreciate the attention given in making each of the parts (Model, View, and Controller) independent and therefore replaceable. A great example of this can be found in the choices of supported ORM (Object Relational Mapping) libraries; something Rails doesn't offer out of the box. Merb also provides you with a straightforward way to use any template engine you'd like, very similar to Rails' implementation.&lt;/p&gt;

&lt;p&gt;Unlike Rails, Merb is thread-safe. To illustrate the difference, imagine a one-way road with a single lane (a process). In a non thread-safe environment, cars can only travel down the road single-file, one after the other (each car being a thread). Having a thread-safe environment simply means that our road can handle more than one lane and allow cars to travel alongside one another (share process resources simultaneously). In practical terms, this means a single Mongrel instance can handle multiple file uploads simultaneously.&lt;/p&gt;

&lt;p&gt;Merb is truer to Ruby than it is to making sure web development doesn't hurt. I'm not saying building an application with Merb is painful, but you will need a bit more Ruby prowess than Rails demands. Tradeoffs are a fact of life, so in many cases learning more Ruby and using Merb can mean far better performance.&lt;/p&gt;

&lt;p&gt;Using the right tool for the right job is important. I highly recommend checking out Merb and using it when applicable.&lt;/p&gt;

&lt;p&gt;Jordan Fowler&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Wed, 30 Jan 2008 01:11:15 -0800</pubDate><link>http://www.jordanfowler.com/posts/23</link><guid>/posts/23</guid></item><item><title>Sorry for the downtime</title><description>&lt;p&gt;[UPDATE] All of the items listed below are done and this site is now better than it has ever been!&lt;/p&gt;

&lt;p&gt;Dear Readers,&lt;/p&gt;

&lt;p&gt;I'm terribly sorry for the downtime my blog has experienced. This was solely due to the fact that comment spam had literally taken over my site. The software that runs this blog is my own creation and is not entirely robust.&lt;/p&gt;

&lt;p&gt;Over the next few weeks, I will be completely re-writing this blog engine. It will also provide me with an opportunity to add some much needed features. Here are the changes I will be making:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement CAPTCHA system to circumvent the comment spamming issues;&lt;/li&gt;
&lt;li&gt;Syndication (will publish an ATOM or RSS feed or both);&lt;/li&gt;
&lt;li&gt;Updated layout to more prominently display your comments as more of a discussion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there are any features you'd like to see implemented, please feel free to comment below. Hopefully we can get a nice conversation going. Thanks a lot for reading!&lt;/p&gt;

&lt;p&gt;Sincerely,&lt;/p&gt;

&lt;p&gt;Jordan Fowler&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 18 Dec 2007 00:45:32 -0800</pubDate><link>http://www.jordanfowler.com/posts/22</link><guid>/posts/22</guid></item><item><title>First Experience with Guerilla Tactics</title><description>&lt;p&gt;Today marks the day I have truly become a revolutionary. At precisely 3:45 PM on November 6th, 2007, I placed a large placard at one of the busiest Interstate onramps in downtown San Diego; traffic gets heavy around 4:00 PM. The experience was heart pounding and adrenaline inducing.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2158/1895551561_0b84839454.jpg?v=0" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;It just goes to show how fearful we have become, when we no longer feel free to express ourselves. This is truly at the core of this revolution: taking back our personal freedoms.&lt;/p&gt;

&lt;p&gt;An elderly gentleman by the name of Joel was walking by with his bike as I attempted to tie up the placard to the fence. I was having a bit of trouble doing this alone, so I asked him if he wouldn't mind holding the sign while I tied it. &lt;/p&gt;

&lt;p&gt;"What does it say?" he asked, hesitantly.&lt;br /&gt;
"It is a political sign for the presidential candidate Ron Paul."&lt;br /&gt;
"Is he a democrat?", he asked curiously.&lt;br /&gt;
"No, he's a republican, but a true conservative."&lt;br /&gt;
"I see, well I was planning to vote for Hillary but you sure seem to believe in this [Ron Paul's] message," said Joel.&lt;br /&gt;
"I certainly do. Maybe you should check him out!" I said while finishing the last knot.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2217/1895388507_1a47903004.jpg?v=0" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;This experience really made me aware of how many people simply vote because of the candidates' visibility. I truly believe this is in no way coincidental. But I also believe that when someone sees another person who truly believes in something, it is more powerful than all the money in the world.&lt;/p&gt;

&lt;p&gt;There's no doubt in my mind that Joel will go home and at least listen to his message. Many people are like lost sheep, they want the truth but sometimes they need a gentle nudge to see it.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 06 Nov 2007 17:01:56 -0800</pubDate><link>http://www.jordanfowler.com/posts/20</link><guid>/posts/20</guid></item><item><title>Planxty - Little Musgrave</title><description>&lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6hwMrjfyDrg"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6hwMrjfyDrg" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 30 Oct 2007 00:57:21 -0700</pubDate><link>http://www.jordanfowler.com/posts/19</link><guid>/posts/19</guid></item><item><title>We (and Ron Paul) win, CNBC loses</title><description>&lt;p&gt;An article from rawstory.com, which you can find &lt;a href="http://rawstory.com/news/2007/John_Harwood_After_poll_removal_CNBC_1016.html"&gt;here&lt;/a&gt; shows how we've clearly won this battle. Check out the video below:&lt;/p&gt;

&lt;p&gt;&lt;embed src="http://www.rawprint.com/fvp/flvplayer.swf" width="400" height="320" bgcolor="#FFFFFF" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="file=http://www.rawprint.com/media/2007/0710/msnbc_mj_paul_internet_supporters_071016a.flv&amp;amp;image=http://www.rawprint.com/media/2007/0710/msnbc_mj_paul_internet_supporters_071016b.jpg&amp;amp;logo=http://www.rawprint.com/fvp/rsvidlogo04.png&amp;amp;link=http://www.rawstory.com&amp;amp;autostart=false&amp;amp;lightcolor=0x557722&amp;amp;backcolor=0x000000&amp;amp;frontcolor=0xCCCCCC&amp;amp;showicons=false" /&gt;&lt;/p&gt;

&lt;p&gt;Remember to register as a Republican to vote in the primaries, it's Dr. Paul's only chance! &lt;a href="http://www.ronpaul2008.com/"&gt;Click here&lt;/a&gt; to find out how. Go Ron Paul 2008!!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 16 Oct 2007 15:15:00 -0700</pubDate><link>http://www.jordanfowler.com/posts/18</link><guid>/posts/18</guid></item><item><title>CNBC hates Ron Paul</title><description>&lt;p&gt;Remember reading &lt;a href="http://en.wikipedia.org/wiki/George_Orwell"&gt;George Orwell's&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Nineteen_Eighty-Four"&gt;1984&lt;/a&gt; in high school? I do, but it never really scared me until I experienced censorship first-hand. So here's what happened...&lt;/p&gt;

&lt;h3&gt;October 9th, 2007&lt;/h3&gt;

&lt;p&gt;CNBC sponsors and televises the "Your Money Your Vote" Republican Debate. After the debate, they post an online poll to determine who won. The word gets out and thousands of Ron Paul supporters start casting votes.&lt;/p&gt;

&lt;p&gt;Allen Wastler, Managing Editor, CNBC.com writes &lt;a href="http://www.cnbc.com/id/21257762"&gt;here&lt;/a&gt;, "The numbers grew ... 7,000-plus votes after a couple of hours ... and Ron Paul was at 75%." What did they decide to do? They shut down the poll!&lt;/p&gt;

&lt;p&gt;Well, that is simply the wrong move to make when you've got (75% of 7,000) 5,250 Ron Paul supporters coming at you in a couple of hours. And here's why...&lt;/p&gt;

&lt;h3&gt;October 10th, 2007&lt;/h3&gt;

&lt;p&gt;According to Wastler from the same article linked above, "The next day, our email basket was flooded with Ron Paul support messages. And the computer logs showed the poll had been hit with traffic from Ron Paul chat sites. I learned other Internet polls that night had been hit in similar fashion. Congratulations. You folks are obviously well-organized and feel strongly about your candidate and I can't help but admire that."&lt;/p&gt;

&lt;h4&gt;October 11th, 2007&lt;/h4&gt;

&lt;p&gt;This is when Wastler actually writes the letter from above. So, today, I begin my own correspondence with CNBC. Here is my first letter:&lt;/p&gt;

&lt;div class="letter"&gt;
Dear CNBC,

I watched the Republican Debate the other night and found the questions you asked Ron Paul to be degrading and absurd. This man is the frontrunner on most issues and it seemed as though you only gave him a small window to respond to questions which seemed to insult the breadth of his knowledge on many of the issues. You've done a great disservice to the people of this nation by not giving this man a fair window.

Furthermore, once you realize that he's won the debate, you pull the poll off the internet. What is the deal here? I am one of many Ron Paul supporters here in San Diego and all of us are irate.

As a software engineer, I will tell you 1) it's highly unlikely that people are hacking your polls, and 2) if it is true, then you need to hire some better programmers. Get your act together. Or am I being naive and you really are corrupt?


Sincerely,
Jordan Fowler
&lt;/div&gt;

&lt;h3&gt;October 12th, 2007&lt;/h3&gt;

&lt;p&gt;After the initial automated response, I received the following from CNBC:&lt;/p&gt;

&lt;div class="letter"&gt;
Dear CNBC Viewer,


Thank you for your note to the CNBC Customer Care Team. 

Below please find a a recently published message related to this issue. Click on the link below to access it. 

http://www.cnbc.com/id/21257762

Thanks again for visiting CNBC.com. We have already forwarded your feedback to the appropriate team.

If this message did not provide you with the information you requested, please respond to this message with as much additional information as possible. We will do our best to respond to you within 24 hours.



Regards,

Vinay Anand 
CNBC Customer Care
&lt;/div&gt;

&lt;p&gt;Good deal, looks like I might be talking to a human. He references the correct article (we're literally on the same page). I respond with the following:&lt;/p&gt;

&lt;div class="letter"&gt;
Dear CNBC,

Yes, that link is what I'm pissed off about. For instance, in the letter, Mr. Wastler states: "When a well-organized and committed "few" can throw the results of a system meant to reflect the sentiments of "the many," I get a little worried. I'd take it down again." Essentially what Wastler is saying is that his decision (the "few" in the most literal sense) is more important than a public outcry (75% of 7,000 is 5,250 is "the many" when compared to a single person). If your polls are not scientific and you're unhappy with the results, then make them scientific!

Furthermore, please tell me what the purpose of the poll was. Is it truly your job to judge who can vote in the poll and who cannot? Just think about that for a minute, then tell me how that ISN'T censorship. You have a unique responsibility to be impartial and deliver the facts.

Lastly, I just want to point something out. If we the people don't have the one last vestige of hope (the media) on our side, then we're all doomed. This country is crying out in every possible way for a new direction and we will see that through, you have my word.

Very Sincerely,
Jordan Fowler
&lt;/div&gt;

&lt;p&gt;Now is where I make my point. We need to get this article out in the open, to force CNBC to respond directly and to let all other major networks see that we the people are making a stand. It's time to rise up and show them our true strength.&lt;/p&gt;

&lt;p&gt;Let us join together in the fight for freedom, constitutionality, and individual freedom!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Sat, 13 Oct 2007 00:21:41 -0700</pubDate><link>http://www.jordanfowler.com/posts/17</link><guid>/posts/17</guid></item><item><title>sci&#183;on</title><description>&lt;p&gt;Etymology can be an extremely interesting subject. Today, while researching various things for work, I came across a reference to the word 'scion.' In all honesty I had never heard the word used outside of the context of the car company &lt;a href="http://www.scion.com/"&gt;Scion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I decided to look up the definition of the word and found out it means: "A short length of stem, taken from one plant which is then grafted onto the rootstock of another plant." * You may or may not know that the company Scion is owned by Toyota but maintains an entirely different brand/image. Someone at Toyota got a raise for that one :).&lt;/p&gt;

&lt;p&gt;See, aren't words interesting when you dive a little deeper!&lt;/p&gt;

&lt;p&gt;&lt;small&gt;* &lt;a href="http://www.thegardenhelper.com/dictionary.html#S"&gt;Glossary of Gardening&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Wed, 10 Oct 2007 15:06:32 -0700</pubDate><link>http://www.jordanfowler.com/posts/14</link><guid>/posts/14</guid></item><item><title>One Small Step</title><description>&lt;p&gt;I've never in my life had any interest in politics. People who've known me for a long time will tell you that I in fact despised the entire political process in this country. This has all changed for one reason: Ron Paul.&lt;/p&gt;

&lt;p&gt;If you believe in regaining constitutionality and changing the course in this country, it's time to look at Ron Paul's message. The only way Ron Paul has an inkling of a chance for success in the Republican Primaries, is if our generation rises to the occasion. I beg of you to give Ron Paul 10 minutes of your time, what do you have to lose?&lt;/p&gt;

&lt;p&gt;Here are some links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.ronpaul2008.com/"&gt;http://www.ronpaul2008.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/profile?user=RonPaul2008dotcom"&gt;http://www.youtube.com/profile?user=RonPaul2008dotcom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Ron_Paul"&gt;http://en.wikipedia.org/wiki/Ron_Paul&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ronpaulhq.com/paulmart.php"&gt;http://www.ronpaulhq.com/paulmart.php&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ADDED: &lt;a href="http://ronpaul.meetup.com/93/"&gt;San Diego Meetup Group&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GO RON PAUL!!!&lt;/p&gt;

&lt;p&gt;Just in case you thought I was kidding (yes that's my car):&lt;/p&gt;

&lt;p&gt;&lt;img src="http://static.ariasha.com/image/8_1afa34a7f9_large.jpg" alt=""/&gt;&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 02 Oct 2007 21:36:10 -0700</pubDate><link>http://www.jordanfowler.com/posts/12</link><guid>/posts/12</guid></item><item><title>Google Maps Kicks Ass</title><description>&lt;p&gt;So I'm on &lt;a href="http://www.craigslist.org"&gt;Craigslist&lt;/a&gt; looking for apartments when I find a place that seems too good to be true... Just before I decide to call for an appointment I click the &lt;a href="http://maps.google.com"&gt;Google Maps&lt;/a&gt; link to see where exactly the apartment is. Lo and Behold, I find out the house is directly under the flight path of San Diego International Airport.&lt;/p&gt;

&lt;p&gt;Check it out:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.jordanfowler.com/images/gmaps_kicks_ass.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Thanks Google!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Tue, 14 Aug 2007 15:49:45 -0700</pubDate><link>http://www.jordanfowler.com/posts/9</link><guid>/posts/9</guid></item><item><title>Ruby on Rails Stack (Part 1)</title><description>&lt;p&gt;I've had some difficulty pulling together disparate pieces of information from questionable sources across the internet on the best way to go about building a Ruby on Rails stack on top of &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; 3.1 (Sarge). This operating system is widely considered one of the best for web servers. After banging my head against the wall for a while, I decided I'd just start from scratch and build this stack from the ground up.&lt;/p&gt;

&lt;h2&gt;Web Host and Operating System&lt;/h2&gt;

&lt;p&gt;Choosing the right host can be difficult. Shared Hosting has for the most part gone by the wayside and virtualization-based (VPS) hosting has become a cost-competitive replacement with plenty of added benefits. &lt;a href="http://www.rimuhosting.com/"&gt;RimuHosting&lt;/a&gt; offers great VPS options with many OSes to choose from.&lt;/p&gt;

&lt;p&gt;Through my experience with various flavors of Linux, Debian based systems have proven to be solid and reliable. Debian 3.1 (Sarge) is my preferred choice of OS for web application server stacks for its proven robustness and security. Whether you go with RimuHosting or not, the rest of this post assumes you're using Debian 3.1.&lt;/p&gt;

&lt;h3&gt;Virtualization at home&lt;/h3&gt;

&lt;p&gt;One thing that can be helpful in putting together a server stack, is having a sandbox to play around in. With the multitude of options available in the virtualization space today, it's becoming easier and easier to run any number of virtual machines on a single physical computer. Since I'm on a Mac, I run &lt;a href="http://www.parallels.com/"&gt;Parallels Desktop&lt;/a&gt; and mess with a local virtual machine before ever touching my production system.&lt;/p&gt;

&lt;h2&gt;Starting from a Debian 3.1 (Sarge) base install&lt;/h2&gt;

&lt;p&gt;At this point, I will assume you have a Debian 3.1 (Sarge) base system installed and you are comfortable installing software from source code. The first thing we need to do is add some source locations for Debian. Open the file @/etc/apt/sources.list@ in your favorite editor and replace the contents with the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb http://http.us.debian.org/debian sarge main contrib non-free
deb http://non-us.debian.org/debian-non-US sarge/non-US main contrib non-free
deb http://security.debian.org sarge/updates main contrib non-free&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Save the file and run the following commands (after calling su, you'll need to enter your root password):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;su
apt-get update
apt-get upgrade&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It's a good idea to install @sudo@ so that you don't have to always be running around your system as the root user. Bad things can happen when you're root and you type in an unintentional command. Having @sudo@ means you only use the power of root on a per-command bases, i.e. less possibility of error. Here's what to do:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;su
apt-get install sudo&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, open up @/etc/sudoers@ and add yourself like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;your_username   ALL=(ALL) ALL&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Save the file and you are now a sudoer.&lt;/p&gt;

&lt;p&gt;Your Debian system should now be ready to handle the forthcoming stack.&lt;/p&gt;

&lt;h2&gt;Nginx front-end web server&lt;/h2&gt;

&lt;p&gt;For a front-end web server, I've chosen to use nginx. Despite its relative obscurity, it has proven to be a lightweight, high performance replacement for something like Apache. You can however run whatever front-end web server you like.&lt;/p&gt;

&lt;h3&gt;Dependencies&lt;/h3&gt;

&lt;p&gt;We'll be downloading/compiling/installing three libraries (pcre, zlib, and openssl) before we install nginx:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get install zlib1g-dev libgcrypt11-dev libpcre3-dev libssl-dev&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Installation&lt;/h3&gt;

&lt;p&gt;Now it's time to install nginx. I will be installing from source, so you'll need to be comfortable with this. If there is a newer version of this source code (since this writing), feel free to get that instead. Here we go:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget http://sysoev.ru/nginx/nginx-0.5.30.tar.gz
tar zxvf nginx-0.5.30.tar.gz
cd nginx-0.5.30
./configure --pid-path=/usr/local/nginx/logs/nginx.pid --sbin-path=/usr/local/sbin/nginx --with-md5=/usr/lib --with-sha1=/usr/lib --with-http_ssl_module --with-http_dav_module
make
sudo make install&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Startup/Shutdown script&lt;/h3&gt;

&lt;p&gt;We'll need to add the startup/shutdown script for nginx:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget http://notrocketsurgery.com/files/nginx -O /etc/init.d/nginx
sudo chmod 750 /etc/init.d/nginx&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And let's make sure nginx is started upon a system reboot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;update-rc.d nginx defaults&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Ruby, RubyGems, Rails, and Mongrel&lt;/h2&gt;

&lt;h3&gt;Ruby 1.8.6&lt;/h3&gt;

&lt;p&gt;It's time to install ruby. I chose do do this from source so that you'll have the latest version 1.8.6. Here we go:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
tar xzvf ruby-1.8.6.tar.gz
cd ruby-1.8.6
./configure
make
sudo make install&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;RubyGems&lt;/h3&gt;

&lt;p&gt;Next we'll need a Ruby package manager called RubyGems. This will be our gateway to installing Ruby on Rails as well as a whole plethora of other libraries. I've chosen to install this from source for the same reason as Ruby, here's how:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
tar xzvf rubygems-0.9.4.tgz
cd rubygems-0.9.4
sudo ruby setup.rb
sudo gem update --system&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Ruby on Rails&lt;/h3&gt;

&lt;p&gt;Last but certainly not least, time to install Ruby on Rails. It's pretty simple too:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo gem install rails --include-dependencies&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Mongrel&lt;/h2&gt;

&lt;p&gt;Mongrel will be our Application Server(s). The way it works is, you'll start up a cluster of Mongrel instances (bootstrapping your Rails app). Nginx will then proxy requests to one of these instances (once we've configured everything). This is the last piece to a great stack upon which we can place our rails web applications:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo gem install mongrel mongrel_cluster --include-dependencies&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Mongrel Startup/Shutdown script&lt;/h4&gt;

&lt;p&gt;Just as we've done with nginx above, we need a script that will handle starting and stopping our mongrel_cluster:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo ln -s /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-0.1.3/resources/mongrel_cluster /etc/init.d/mongrel_cluster&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Let's also make sure our clusters are started after a system reboot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo /usr/sbin/update-rc.d mongrel_cluster defaults&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;To be continued...&lt;/h2&gt;

&lt;p&gt;This concludes Part 1. Very soon, I will complete Part 2, which will guide you through installing Capistrano for deployment as well as Mongrel, Capistrano and nginx configuration. Cheers!&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Fri, 03 Aug 2007 00:15:46 -0700</pubDate><link>http://www.jordanfowler.com/posts/8</link><guid>/posts/8</guid></item><item><title>The Shire</title><description>&lt;p&gt;Whenever I describe my hometown of &lt;a href="http://missoula.montana.com/"&gt;Missoula, Montana&lt;/a&gt; to people, I always refer to it as "The Shire." This place has never, in all my years lost its charm nor its place in my heart. Many famous authors have written passages and entire novels recounting its ethereal beauty and allure. One such novel, &lt;a href="http://en.wikipedia.org/wiki/A_River_Runs_Through_It"&gt;&lt;em&gt;A River Runs Through It&lt;/em&gt;&lt;/a&gt; by Norman Maclean was later adapted to screenplay and made into a film. Starring Craig Sheffer and Brad Pitt, the film went on to be nominated for three Oscars, winning Best Cinematography (1993).&lt;/p&gt;

&lt;p&gt;There is most definitely more picturesque and stunning places to go in the state, but that's not what makes this place so special. Sure, it has a river running through it, bike trails everywhere, and plenty of other reasons to never stay inside, but this still doesn't quite explain it.&lt;/p&gt;

&lt;p&gt;The simple fact is that, no matter how incredible a place is on the outside, it's the feeling one gets that will make a lasting impression. In other words, the people who inhabit a place and whose values become impressed therein are what make something truly valuable and worth noting.&lt;/p&gt;

&lt;p&gt;Here in the Shire, it's not quantity that matters, it's quality. And that is what I believe makes this place so special.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Sat, 21 Jul 2007 23:50:53 -0700</pubDate><link>http://www.jordanfowler.com/posts/7</link><guid>/posts/7</guid></item><item><title>Shared Hosting vs VPS</title><description>&lt;p&gt;When I initially launched this new site, it was being hosted on a TextDrive Shared Hosting plan (so slow). As of last night, I've switched to my Rimu Hosting VPS plan (snappy). I've left the caching I setup in place, but now I'm wondering about other ways to tune for speed.&lt;/p&gt;

&lt;p&gt;Here's my setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nginx frontend web server&lt;/li&gt;
&lt;li&gt;Mongrel clusters (3) for application servers&lt;/li&gt;
&lt;li&gt;Full page caching for /, /about, /contact, /gallery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would like to get a discussion going here or elsewhere about tuning a server for speed. Leave a comment with relevant links, comments, etc.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Wed, 11 Jul 2007 11:35:38 -0700</pubDate><link>http://www.jordanfowler.com/posts/6</link><guid>/posts/6</guid></item><item><title>Daring Fireball, Apple's Free Marketing</title><description>&lt;p&gt;I'll admit it, I read Daring Fireball. It was one of two default feeds I actually kept when I installed &lt;a href="http://www.newsgator.com/Individuals/NetNewsWire/"&gt;NetNewsWire&lt;/a&gt;. As I was reading a more recent post of his (&lt;a href="http://daringfireball.net/2007/07/josh_quittner_returns_his_iphone"&gt;Josh Quittner Returns His iPhone&lt;/a&gt;), it suddenly struck me. This guy would literally buy a shit pancake from Apple (and defend it) if they sold one.&lt;/p&gt;

&lt;p&gt;Don't get me wrong, I am a huge Apple fan and have been one since I was 8 years old. It is the only kind of computer I own and the only computer I see myself owning in the foreseeable future: so long as OS X exists. You might ask, "Why don't you defend Apple with the same conviction and irreverence then?" I'll tell you why. Apple is just a company, who's goal is to generate incredible buzz and then make optimal profits off of you and me.&lt;/p&gt;

&lt;p&gt;DF, however, approaches the situation as if he's Gandhi, defending the oppressed people of an occupied nation. In reality, Apple customers are far from oppressed peoples. The fact is that they are pretty well-to-do if they can afford to buy an iPhone.&lt;/p&gt;

&lt;p&gt;Call me bitter, but I'm just calling it how I see it, and I was annoyed by what I saw. In closing, DF, Apple should be paying you. They sure as hell don't need free marketing.&lt;/p&gt;</description><author>Jordan Fowler</author><pubDate>Sat, 07 Jul 2007 16:59:01 -0700</pubDate><link>http://www.jordanfowler.com/posts/5</link><guid>/posts/5</guid></item><item><title>Using CSS Vertical Rhythm</title><description>&lt;p&gt;I've updated this site to use a technique known as CSS Vertical Rhythm. This method makes web pages far easier to read and scale perfectly to text resizing. The approach is based on simple proportionality in order to form a rhythm.&lt;/p&gt;

&lt;p&gt;If you simply focus your eyes on how the spacing of the lines of text are proportional to the spacing between the lines and paragraphs, you'll begin to see the rhythm. Though I am not a designer, it is clear to me how effective these techniques can be. Here are some helpful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://webtypography.net/Rhythm_and_Proportion/Vertical_Motion/2.2.2/"&gt;Rhythm and Proportion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://drewish.com/tools/vertical-rhythm"&gt;CSS with vertical rhythm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Jordan Fowler</author><pubDate>Fri, 06 Jul 2007 07:42:44 -0700</pubDate><link>http://www.jordanfowler.com/posts/4</link><guid>/posts/4</guid></item></channel></rss>