<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
	<channel>
		<title>Justin Perkins Web Presence</title>
		
		<link>http://www.enjoybeing.net/blog</link>
		<description>Carpe diem till the evil grins</description>
		<generator>http://chyrp.net/</generator>
		<language>en</language>
		<pubDate>Sat, 18 Apr 2009 10:13:41 -0700</pubDate>
		<docs>http://backend.userland.com/rss2</docs>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/mr_justin" type="application/rss+xml" /><item>
			<title>My Web Presence, it is a Changin'</title>
			<link>http://www.enjoybeing.net/blog/2009/04/18/my-web-presence-it-is-a-changin/</link>
			<description><![CDATA[<p>I'm starting to get tired of this blog, which is a normal thing for me after having the same blog for a year or two. Not sure what I want to use in it's place, or maybe I just need a new web project to occupy my time. </p>

<p>As I hinted at in my last post, I've been really inspired from the content and user base over at hacker news. One such blog-related topic that really stands out, is a user over there who runs their blog through github (<a href="http://github.com/raganwald/homoiconic/blob/master/2009-04-17/eggs.md#readme">example post</a>). The whole idea of a host-less blog is really intriguing to me. People keep coming up with amazing new ways to leverage github and I love it. Maybe I'll try to do something over there.</p>

<h2>Music Blog?</h2>

<p>For a while now, I've wanted to start a music tumbler. It would be a place where I would just list new music I bought, not like a review-type blog or anything. I've always been a big music freak and lately I've found myself buying a lot of music. I enjoy nearly all types of music, as well as sharing my music with my friends and learning of new bands from them. What better way to find out about new music than to share what I'm into.</p>

<p>We'll have to see if I actually carry through on this idea. I've probably sat down a handful of times to get it going, but always decided against it at the last minute. Maybe talking publicly about it will be the last push I need.</p>

<h2>Tumblr Fills a Niche for Me</h2>

<p>I created a tumblr account a month or so ago and really like it. I have always found myself posting links to twitter that I enjoyed. I realized that a link-dump style twitter stream was not the type of content I enjoyed reading (as a follower), so why was I forcing my friends to read the exact shit that I didn't want to see? I still wanted to share interesting content with an audience and that's where tumblr steps in.

<h2>No More Twitter</h2>

<p>I deleted my twitter account last night. With the huge surge in popularity with twitter in the past couple months I have become increasingly annoyed with the service as a whole. The stupid "who can get one million followers" thing between Aston Kutcher and CNN was not quite the last straw for me, but it was close. Then yesterday <a href="http://www.jeffxl.com/">my friend</a> showed me Ice-T's account (twitter gang? come on Ice-T, don't be a fucking jackass), then that very same day Oprah gets a twitter account and Shaq is replying to her first message? Well fuck me. I am out of here.</p>

<p>We'll have to see how this one pans out. I still want to read what my twitter friends are up to, but I don't want to have an account. Twitter makes it very difficult to do this. Maybe some type of third party service is in order. I've been inspired by <a href="http://shad.github.com/unemployment_rate/index.html">my coworkers use of all client-side coding</a> to pull in interesting twitter content, maybe something like that could be cobbled together to allow people to check up on their twitter friends without actually needing an account.</p>

<h2>Lots of Rambling Thoughts</h2>

<p>In short, I've been going through a lot of changes lately WRT my web presence and how I browse the web. I'll have to see how it all shakes out in the coming months, but this post has helped me solidify some recurring thoughts I've been having and also put my ideas to paper.</p>]]></description>
			<pubDate>Sat, 18 Apr 2009 10:13:41 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/04/18/my-web-presence-it-is-a-changin/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>The Difference Between Redditors and Hackers</title>
			<link>http://www.enjoybeing.net/blog/2009/04/14/the-difference-between-redditors-and-hackers/</link>
			<description><![CDATA[<p>I used to like reddit a lot. Not like I'm old school or anything, but over the last year and a half I've gone through all the phases: "oh this is cool" &rarr; "omg I'm totally addicted" &rarr; "where's the fresh content?" (current phase).</p>

<p>What has filled that void for me is <a href="http://news.ycombinator.com">hacker news</a>. The content there is stimulating and fresh, plus the audience is completely different (read: mature). I'm not sure if reddit has always been this way and I was just oblivious to it until now, but it's like the internet wasteland in there. All the current events are slightly older than I think they should be, the pictures are 99% recycled internet rubbish, the videos are 99% recycled internet rubbish, and then there's the "omg the world is out to get us" kind of idiotic crap that seems to be highly encouraged.</p>

<p>For me, nothing sums it up more succinctly than two (#1 upvoted on their respective sites) <a href="http://www.reddit.com/r/technology/comments/8cfcq/computer_science_student_targeted_for_criminal/c08urlx">different</a> <a href="http://news.ycombinator.com/item?id=562586">comments</a> <a href="http://www.eff.org/deeplinks/2009/04/boston-college-prompt-commands-are-suspicious">on the same article</a>. It is an article about a student at Boston College being investigated for computer crimes. The specific article is actually not so much about the investigation, but more about the EFF fighting to get the student cleared of any charges, have all of his computer equipment returned, and any evidence that is found on said equipment be inadmissible in court. Sounds like pretty clear "oh no the government is attacking us computer people" kind of thing, right? That is until you actually <a href="http://www.eff.org/files/filenode/inresearchBC/EXHIBIT-A.pdf">read the original warrant</a> (the EFF has politely made available to us), which paints an entirely different picture than we are originally led to believe.</p>

<p>But that's not why I'm writing this. I don't really care about the case, or the student. I care about having quality online content with contributors who put thought into what they're saying.</p>

<p>Enough of reading a fucking sensational headline and spitting out the first thing that comes to your mind.</p>

<p>I didn't mean for this to turn into a big rant, but I guess it did. I wanted to just show these two quotes and then be done.</p>

<p>hacker quote on above mentioned article, it is the number one upvoted reply:</p>

<blockquote><p>Has anyone actually read the warrant application? The allegations were made by a close acquaintance of the accused who directly observed him changing grades for students and cracking into other systems; the emails in question were traced back to the accused's hostname.</p>
<p>The EFF article completely mischaracterizes a 90% legitimate warrant.</p></blockquote>

<p>redditor quote on the same article, it is the number one upvoted reply:</p>

<blockquote><p>"a black screen with white font which he uses prompt commands on"
HAHAHA! Oh Noes! We haz a haX0r!</p></blockquote>

<p>Enough of this. Do not pay attention to sensational headlines and soundbites taken out of context. They are testing you, to see if you are paying attention. Let's show them that we are.</p>]]></description>
			<pubDate>Tue, 14 Apr 2009 22:25:16 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/04/14/the-difference-between-redditors-and-hackers/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Firefox's new Cognitive Shield and Running Multiple Firefoxes Side by Side on OS X</title>
			<link>http://www.enjoybeing.net/blog/2009/03/23/firefoxs-new-cognitive-shield-and-running-multiple-firefoxes-side-by-side-on-os-x/</link>
			<description><![CDATA[<p><a href="http://labs.mozilla.com/2009/03/firefox-new-tab-page-cognitive-shield/">Firefox has got a hot new thing they're calling "Cognitive Shield"</a>, which is a "new tab" page that shows you all your most visited sites. Google Chrome was the first browser that I'm aware of that did this, but I'm sure the Opera guys will probably jump in and say "we've had this forever". Safari's Beta 4 has one too and they're calling it "Top Sites" where they show you your most visited sites in a cover-flow style.</p>

<p>The design idea behind Safari's Top Sites and Firefox's Cognitive Shield could not be further apart from each other. Apple predictably went the sex appeal route with thumbnails of all the sites on a reflective black background. Contrast with Firefox's screen which appears blank until you move your mouse, then the light grey text appears, showing you the most visited sites. Use Safari Beta 4 for a few days and you'll quickly see one of it's huge drawbacks: it consumes a lot of memory trying to keep those thumbnails up-to-date. Firefox on the other hand does not consume any more memory, because it's just plain text. Safari is literally running like it has 12 (the max number of "top sites" shown) tabs open at all times, plus whatever tabs the user may have open. From a development perspective, I'm a bit perplexed as to how they would actually implement this feature in such a poor manner.</p>

<p>I don't want to talk a whole lot more about this, since the point of this post was to share with other people how to run different versions of Firefox side-by-side without having to worry about the beta version (3.1) overwriting profile data in your stable 3.0 version. One last thing I will say about "tab pages" is that I like them. I like this new trend to introduce tab pages to web browsers and I am especially keen on the Mozilla approach of not cluttering the screen or consuming resources keeping that screen up-to-date.</p>

<p>Over on the Firefox lab blog, <a href="http://labs.mozilla.com/2009/03/firefox-new-tab-page-cognitive-shield/">they have detailed exactly what you need to do</a> to try out this new feature, but it requires installing a development build of Firefox, which is undesirable if you need your browser to test functionality in other stuff you work on. Here's a couple steps to get you running multiple Firefox's at the same time, these steps are assuming you have already installed the latest stable version:</p>

<ol>
<li>Launch Firefox with the profile manager, use the terminal and launch: <code>/Applications/Firefox.app/Contents/MacOS/firefox-bin --profilemanager</code></li>
<li>Create a new profile (I called mine "3.1 user") and uncheck the box "Don't show at startup".</li>
<li>Exit the profile manager and go <a href="http://www.mozilla.com/en-US/firefox/all-beta.html">download the latest Firefox 3.1 development version</a>.</li>
<li>When you're ready to install, instead of dropping Firefox in your Applications directory, put it somewhere else and then rename the app to something like "Firefox 3.1" or whatever makes sense for you. Optionally at this step, change the icon for this app so you will be able to tell the difference between the two versions when they are both running in your dock.</li>
<li>Now drag the app into your Applications and launch it as normal, but make sure to choose the correct profile depending on what version you are using.</li>
</ol>

<p>If you ever remove the development version, the next time you launch Firefox just check the box "Don't show at startup" and you will no longer be bothered with the profile manager at launch. One other thing, try not to launch your different versions of Firefox and use the wrong profile. This will corrupt your profile data across versions.</p>]]></description>
			<pubDate>Mon, 23 Mar 2009 21:16:09 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/03/23/firefoxs-new-cognitive-shield-and-running-multiple-firefoxes-side-by-side-on-os-x/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Running Ruby as a CGI Script with Apache on OS X (Leopard)</title>
			<link>http://www.enjoybeing.net/blog/2009/02/26/running-ruby-as-a-cgi-script-with-apache-on-os-x-leopard/</link>
			<description><![CDATA[<p>It took me a <a href="http://www.ruby-doc.org/docs/ProgrammingRuby/html/web.html">couple</a> <a href="http://www.macosxhints.com/article.php?story=20010815013103214">different</a> <a href="http://flangy.com/dev/webnotes/osx-apache-python.html">documents</a> to get me running a Ruby script on the built-in Apache webserver that comes with OS X, so I figured I'd document the steps.</p>

<p>First of all you have to have the web server running, but I'm going to assume that's already setup.</p>

<p>The out-of-the-box Apache config file (<code>/etc/apache2/httpd.conf</code>) is setup to alias the webroot path <code>/cgi-bin/</code> into the directory <code>/Library/WebServer/CGI-Executables/</code>. Write a little Ruby script and drop it in that directory. It needs to be executable by all (<code>chmod a+x hello_world.cgi</code>). Make sure to include the script declaration statement to let the CGI process know how to execute it. Here is an example (hello_world.cgi):</p>

<p><code><pre>#!/usr/bin/ruby
require 'cgi'

cgi = CGI.new('html3')
cgi.out do
  cgi.html do
    cgi.body do
      cgi.p { 'Hello World' }
    end
  end
end</pre></code></p>

<p>I used Ruby's CGI library because it removes a lot of boilerplate crap but more importantly because when I wrote a plain script that outputted its own HTTP Headers, I kept getting script errors (500s). The Apache log file told me there was something wrong with my headers, but I couldn't for the life of me figure out what was wrong with it.</p>

<p>OK we've got our Hello World Ruby script that is in <code>/Library/WebSite/CGI-Executables/</code> so now all we have to do is edit the Apache config file (<code>/etc/apache2/httpd.conf</code>) to setup the execution of <code>.cgi</code> files. So edit the config file by uncommenting the following line: <code>AddHandler cgi-script .cgi</code>. In my file it was on line #391, but yours may be different. Note that this line will be located in a block that is tagged like: <code>IfModule mime_module</code>.</p>

<p>Now just make sure your CGI module is loaded by uncommenting the following line: <code>LoadModule cgi_module libexec/apache2/mod_cgi.so</code>. Mine was on line #102 but again, your config file may be different.</p>

<p>That's all you have to do in the config file, so save your changes (need <code>sudo</code>) and then restart Apache: <code>sudo apachectl restart</code></p>

<p>Hit your script in the browser at the path: <code><a href="http://localhost/cgi-bin/hello_world.cgi">http://localhost/cgi-bin/hello_world.cgi</a></code> and it should work.</p>

<p>Now that you've got it working, you can tweak your apache config a bit more to add directories in your home Sites directory to be CGI-executable so you don't have to save everything in the obscure <code>/Library/WebSite/CGI-Executables/</code> path. You can also add some other extension types besides <code>.cgi</code> if you want, but I prefer to leave it at the default extension because it doesn't reveal to the client what type of code is being executed.</p>

<p>If you're the only one that uses that webserver, then I recommend changing the <code>DocumentRoot</code> directory to be your Sites directory. This setting is on line #163 in my config file.</p>]]></description>
			<pubDate>Thu, 26 Feb 2009 18:19:21 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/02/26/running-ruby-as-a-cgi-script-with-apache-on-os-x-leopard/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Page.Select Rails RJS Problem with Ruby 1.8.7</title>
			<link>http://www.enjoybeing.net/blog/2009/02/06/pageselect-rails-rjs-problem-with-ruby-187/</link>
			<description><![CDATA[<p>Yeah I know <a href="http://www.ruby-lang.org/en/news/2009/01/30/ruby-1-9-1-released/">Ruby 1.9.1 is out now</a> so posting something that is specific to Ruby 1.8.7 is pretty lame, but I have to.</p>

<p>I recently ran into (<a href="http://www.enjoybeing.net/blog/2008/10/06/rails-shared-hosting-gotcha-3942/">yet another</a>) problem with a Rails site I have running <a href="http://www.dreamhost.com/r.cgi?100919">with Dreamhost</a>. It is on one of their 64-bit Debian 4 machines, so maybe it's specific to that environment, or maybe it's an issue across all Ruby 1.8.7 installations. I can't really confirm it because I'm running 1.8.6 on my home computer and my other dreamhost server is running 1.8.5.</p>

<p>Anyway, anything using the <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M001632">RJS Select method</a> will raise an exception like this:</p>

<p><code>undefined method `[]' for #&lt;Enumerable::Enumerator:0x........&gt;</code></p>

<p>Initially, to get around this I just broke out my RJS into straight up JavaScript. It was clunky, but it worked. Then an excellent Dreamhost support person got back to me about the issue and pointed me to <a href="http://wiki.radiantcms.org/undefined_method_for_enumerable">this documentation page on the Radiant CMS site</a>, which included this little snippet that could be used to monkey-patch the issue:</p>

<p><code><pre>unless '1.9'.respond_to?(:force_encoding)
  String.class_eval do
    begin
      remove_method :chars
    rescue NameError
      # OK
    end
  end
end</pre></code></p>

<p>Works like a champ.</p>

<p>Note: This issue just started happening about a month ago, which means Dreamhost just upgraded this server to Ruby 1.8.7 for some reason. I hope they don't do all their servers, they'll undoubtedly cause headaches when they do since this error is so obscure.</p>]]></description>
			<pubDate>Fri, 06 Feb 2009 23:06:24 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/02/06/pageselect-rails-rjs-problem-with-ruby-187/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Some People Should Flat Out NEVER Work on Their Car</title>
			<link>http://www.enjoybeing.net/blog/2009/01/25/some-people-should-flat-out-never-work-on-their-car/</link>
			<description><![CDATA[<p>I saw this story on an <a href="http://www.audiworld.com">Audi forum</a> today and had to repost it. Never has an "oil change" story made laugh and feel a little sad at the same time.</p>

<blockquote><p>You guys might appreciate my story... </p>

<p>So I've decided to start doing my own oil changes on my new car. I purchased Rhino ramps, oil filter, oil, oil filter wrench, a funnel, a creeper (to lay on and roll around) and an oil bucket. </p>

<p>Here's my story: </p>

<p>I drive the car up on the ramps in my garage. The underside of the car has this aerodynamic cap on it that I had to remove... so I was a little frustrated with this. I roll around and try to find all the screws to take this cap off. This takes 20 minutes with a flash light. Once the cover is off, I can't seem to find the oil pan bolt and there seems to be two canisters that look like they could be the oil filter. So I take a guess. Surprise, it works. I start to unscrew the oil pan bolt and position the oil bucket to catch the oil. Little did I know the oil was going to shoot 10 feet beyond the bucket. So I've got a full on Exxon Valdez oil spill in my garage. And that $hit was hott, I started getting burned. So I've got oil on my arm and face. It really sucked. Finally, I get the bucket in place and things are going smooth. I wait another 10 minutes and take off the oil filter and replace the oil pan bolt and install the new oil filter. </p>

<p>Now comes the easy step of putting the cover back on. This took me a good 30 minutes to figure out. It kept falling out of the track and hitting me in the face. Now I'm getting really pissed. Finally, I get it in the tracks and start putting in the screws to keep it in place. The holes are hard to see so I have to use the flashlight. About halfway through the process, the flashlight dies. So I have to get up and run inside to find more batteries. </p>

<p>After getting the cap back on I am faced with the dilemma of pouring the oil in. After putting in about 6 quarts of oil, nothing is showing up on the dipstick. There's no way this car needs more than 6 or 7 quarts of oil, but to show nothing on the dipstick makes me think a ton more oil needs to go in. So I'm thinking nothing is showing up on the dipstick because the car is up on the ramps and tilted at an angle. So I get in the car but I don't start it. I put it into neutral and start rocking the car back and forth to get it off the ramps. At this time, it is important to tell you that NOBODY is home to help me and I'm doing everything in sandals. So I get the car rocking. And I give it one final hard push. </p>

<p>You can only imagine that a car that weighs a few good tons would roll nice and slow down the ramps right? That f###er took off! So I jump in the car and, of course, there is no power since the car isn't on. So I try desperately hard to press the brake down (no power brakes mind you) and I pull the emergency brake. It worked! Not only that, but I was just inches away from ripping off the hood as it would have caught the edge of the house and surely have torn it away. I'm surprised I didn't slip and fall and have the car go past me and into my neighbors house across the street. Seriously. Bad $hit. </p>

<p>That's my story fellas. </p>

<p>Have a good day.</p></blockquote>

<p>- <a href="http://forums.audiworld.com/a6/msgs/301962.phtml">original post</a> (should be preserved on a "best of" page)</p>]]></description>
			<pubDate>Sun, 25 Jan 2009 15:30:25 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/01/25/some-people-should-flat-out-never-work-on-their-car/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>President Obama, You Are My President</title>
			<link>http://www.enjoybeing.net/blog/2009/01/23/president-obama-you-are-my-president/</link>
			<description><![CDATA[<p>When it finally hit me that Barack Obama is now President Obama, I was elated. Maybe even a little teary eyed. I mean, we've had this George W. Bush joker supposedly running this country for 8 years now. Eight. Long. Years. Sure Kerry wasn't a great candidate, but for pete's sake he was a million times better than President Bush. We lost a lot of hope after that election. It was brutal.</p>

<p>But now we've got Obama! We've got President Obama! Hooray!!!</p>

<p>Did you watch the inauguration though? How the oath was a little messed up and so when President Obama (he was officially president by the time he read the oath) repeated the (incorrect) oath, he stumbled a bit. Because he knew it was recited incorrectly.</p>

<p>Whatever, it didn't matter because according to the <a href="http://en.wikipedia.org/wiki/Twentieth_Amendment_to_the_United_States_Constitution">20th Amendment</a>, the term of the previous president officially ends at noon and the term of their successor begins ...</p>

<p><blockquote>The terms of the President and Vice President shall end at noon on the 20th day of January, and the terms of Senators and Representatives at noon on the 3d day of January, of the years in which such terms would have ended if this article had not been ratified; and <strong>the terms of their successors shall then begin</strong>.</blockquote></p>

<p>So that's it right? It's official? Well, not according to Fox "Fair and Balanced" News. Did anyone see these clips of talking heads on Fox talk about how Obama wasn't really the president because he "flubbed" the oath? About how because the oath was in the constitution and Obama didn't recite it correctly, that he wasn't really president? Fuck those jackasses. I mean really. Fuck. Them.</p>

<p>Great, it's in the constitution that the president needs to take oath before taking office. Yes, and the 20th Amendment to the Constitution of the United States of America says that the former president's duty ends at noon of inauguration day and their successor's term begins. That would be regardless of any oaths being taken.</p>

<p>Please President Obama, can you introduce a "stupid news" tax or something? Maybe a "it will make you less intelligent to listen to this" tax? That would be splendid.</p>

<p>Oh and on the subject of taking oaths on the bible, I thought this little tidbit from the Bible itself was interesting:</p>

<p><blockquote>"Again, you have heard that it was said to the people long ago, 'Do not break your oath, but keep the oaths you have made to the Lord.' But I tell you, Do not swear at all: either by heaven, for it is God's throne; or by the earth, for it is his footstool; or by Jerusalem, for it is the city of the Great King. And do not swear by your head, for you cannot make even one hair white or black. Simply let your 'Yes' be 'Yes,' and your 'No,' 'No'; anything beyond this comes from the evil one." - Jesus (Matthew 5:33-37)</blockquote> -<a href="http://www.reddit.com/r/reddit.com/comments/7rwql/fox_news_on_day_1_of_the_obama_administration/c078a7t">source</a></p>

<p>Let us say 'yes' when we mean yes and 'no' when we mean no, and just leave it at that.</p>]]></description>
			<pubDate>Fri, 23 Jan 2009 14:49:23 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/01/23/president-obama-you-are-my-president/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>El Salvador and Back Again</title>
			<link>http://www.enjoybeing.net/blog/2009/01/09/el-salvador-and-back-again/</link>
			<description><![CDATA[<p>El Salvador, I <3 you and will be back very soon. Whether it's the beaches of  La Libertad, La Paz, and Usulatan, or the mountainous hills of Sonsonate or Morazan filled with delicious coffee, there is much to do in this hyper tiny (but dense) country. Everyone is very friendly and amiable, shockingly so from this American's perspective.</p>

<p>The civil war from 1980-1992 ripped El Salvador apart. I have trouble putting to words what it makes me feel like to learn about the atrocities that occurred there at the hands of their anti-leftist republican government and its wide-sweeping military arm. It makes it even harder to swallow when you learn that the United States strongly backed the government of El Salvador both with copious amounts of money, weapons and military training throughout the civil war.</p>

<p>There is tons of info out there on the civil war, but if you want a cliff notes version <a href="http://www.thirdworldtraveler.com/Chomsky/ChomOdon_ElSalvador.html">Noam Chomsky has summed it up fairly well</a> (note: this short essay was written in 1993, a mere one year after the war ended; much has changed in the country since then but the history is the same). A particularly horrible and well-known massacre was the <a href="http://en.wikipedia.org/wiki/El_Mozote_massacre">Massacre of El Mozote</a>, but sadly there are many more that have occurred in the last 150 years or so.</p>

<p>On the bright side, the country has clearly recovered and doing very well right now aside from having an economy strongly tied to the US. It doesn't help that the US dollar was adopted as the official currency in 2001.<p>

<p>They are currently in an election season right now (election days: March 9-17, 2009), with the two leading parties being <a href="http://www.arena.com.sv/">ARENA</a> (republican) and <a http://www.fmln.org.sv/">FMLN</a> (democrat). What really excites me about this election is the simple fact that the FMLN is a serious contender for the presidential seat this time around. I mean we're talking about a party that if you were even remotely associated with during the civil war times (especially the early years), it meant there was a bullseye on your forehead. The country is filled with FMLN flags, advertisements and people really excited for this election. Such an amazing contrast to how it must have been 20-25 years ago.</p>

<p>Since I have never lived in El Salvador, I'm not going to try and pretend I know which party is "best" for the country, but still it excites me in the direction that it seems like El Salvador is headed.</p>

<p>Not to just completely switch gears, but while I was there a kickass family member gave me a tour of <a href="http://www.laconstancia.com/">La Constancia</a>, a brewery who runs a very nice facility in San Salvador producing a variety of light beers and pilsners both for export and nationally available. They also happen to produce a whole bunch of Coca Cola products that you'd recognize as well as a variety of the El Salvador favorite, Kolashanpán, known as La Tropical Superchampán.  Kolashanpán is probably the best soda ever, I broke a 5 month soda strike to drink the stuff.</p>

<p>La Constancia also happens to have a female brewmaster, which is not exactly a very common occurrence for a high-production facility like that. Damn cool.</p>

<p>Touring a high production beer facility is fascinating. I've done a bit of home brewing and also toured some small time setups, but to see everything on a huge scale is really great. Far and away, the most interesting part to be able to see/touch would be the bottling/canning lines. Really makes you appreciate what goes into something as simple as a bottle of beer. Plus it's fun to grab an unlabeled, unpasteurized bottle off the line and crack it open right there for a taste.</p>

<p><a href="http://www.flickr.com/photos/justinperkins/3184028178/" title="Ataco by mrjustin, on Flickr"><img src="http://farm4.static.flickr.com/3331/3184028178_26bce077af.jpg" width="500" height="375" alt="Ataco" /></a></p>

<p><a href="http://www.flickr.com/photos/justinperkins/3184016700/" title="El Mozote kids celebrating their quinceanera by mrjustin, on Flickr"><img src="http://farm4.static.flickr.com/3484/3184016700_1f7a616be8.jpg" width="500" height="375" alt="El Mozote kids celebrating their quinceanera" /></a></p>

<p><a href="http://www.flickr.com/photos/justinperkins/3183187871/" title="Main mural welcoming you to Perquin by mrjustin, on Flickr"><img src="http://farm4.static.flickr.com/3479/3183187871_1faca07150.jpg" width="500" height="375" alt="Main mural welcoming you to Perquin" /></a></p>]]></description>
			<pubDate>Fri, 09 Jan 2009 21:52:22 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2009/01/09/el-salvador-and-back-again/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Austin Android Users: Unite and Help Each Other</title>
			<link>http://www.enjoybeing.net/blog/2008/11/06/austin-android-users/</link>
			<description><![CDATA[<p><img src="http://sandbox.enjoybeing.net/pics/android.png" style="float:right;border:1px solid #fff;padding:3px;margin:0 0 0 5px" />I created <a href="http://groups.google.com/group/austin-android-users">a Google group</a> so that I could find people in Austin who are writing apps for <a href="http://code.google.com/android/documentation.html">the new Android</a> powered phone from T-Mobile, the G1. Obviously this conversation extends beyond this one phone, but it's currently (Fall 08) the only one available that is running on Android.</p>

<p>I am not a Java coder, so I have a lot of learning to do. I have worked on one or two Java projects in the past and certainly did some Java coding in my college days, but those are long gone. Before I switched to Ruby programming a few years ago, I was a C#/.NET developer so I guess that experience will help me a little bit.</p>

<p>Hope some people find <a href="http://groups.google.com/group/austin-android-users">this list</a> so I'm not all alone.</p>]]></description>
			<pubDate>Thu, 06 Nov 2008 23:01:16 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/11/06/austin-android-users/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Thank You Barack Obama</title>
			<link>http://www.enjoybeing.net/blog/2008/11/04/thank-you-barack-obama/</link>
			<description><![CDATA[<p>Thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you</p>
<p>Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. Thank you voters. </p>
<p>:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) </p>
<p>Patriotism = renewed</p>]]></description>
			<pubDate>Tue, 04 Nov 2008 22:08:21 -0800</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/11/04/thank-you-barack-obama/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>T-Mobile G1 First Impressions</title>
			<link>http://www.enjoybeing.net/blog/2008/10/30/t-mobile-g1-first-impressions/</link>
			<description><![CDATA[<p><img src="http://farm4.static.flickr.com/3178/2984970109_1b3c0d2d15_m.jpg" style="float:right;border:1px solid #fff;margin:0 0 0 5px;"/>I've been patiently waiting for the <a href="http://code.google.com/android/documentation.html">Android-powered</a> phone for quite a while now and last night <a href="http://flickr.com/photos/justinperkins/sets/72157608489678952/">my G1 arrived</a> a whole 12 days earlier than expected. I was like a little school girl with her very own pony. I've now given myself a little over 24 hours to actually use the phone, talk on it, play games on it, etc., and wanted to provide some early feedback for anyone considering the phone.</p>

<h2>Setup</h2>
<p>Using my old SIM from my previous phone, the G1 came with a weakly charged battery, enough to get me up and running. I was instantly prompted with a Google login screen (or you can create an account if you don't already have one). Once past there, you're in and ready to use the phone. The next thing I had to do was get my contacts setup. Since the G1 uses your gmail contact list, and I've been using contacts stored on my SIM, I had a lot of work to do. This process was painful because although the G1 provides an "import from SIM" feature, you have to add contacts one at a time. This sucked. Somebody will probably tell me there is a bulk-add feature and that will be funny.</p>

<p>The next step once I got all my contacts from my old phone into my gmail contact list was to merge records together. This was another painful task because I had previous contacts in my gmail contact list with email only and no phone, and now I had many duplicates except they only had a phone number. So I had to merge them one by one, always having to delete the duplicate contact before saving the primary because gmail won't let you have two contacts with the same email address. Luckily, this can all be done on a computer since the G1 auto-syncs your contacts.</p>

<p>So that entire process took me about an hour, but it is actually something I've needed to do for a long, long time. Many people more organized than myself probably already have well-maintained contact lists, in which case this setup process will be a breeze.</p>

<p>That was about all I did last night, once finished I plugged it in since by then it was ready for a full charge.</p>

<h2>Daily Usage</h2>
<p>Before I left the house in the morning I had enabled the wifi feature and had all the auto-syncing (gmail, calendar, contacts) running. It was about 9am when I unplugged the phone from the charger. I'd say by about 11:30 my battery life was at 40% which was pathetic. So I plugged it into my computer with the handy USB cable provided and let it charge while I worked and played with the phone. As an aside, when plugged in via USB, the phone is treated as a standard USB mass storage device to your computer. What, you can just drag and drop music, videos, pictures or whatever onto your phone? Yup. Awesome.</p>

<p>So the battery thing <a href="http://www.google.com/search?q=g1+battery">turns out to be a big deal</a>. Guess that's a good thing because it means (cross my fingers) that there will be an update to Android and/or the G1 to conserve battery life. In the meantime, I picked up a few good tricks for preserving battery life:</p>

<ol>
  <li>Turn off the auto-sync of your contacts (I have found this to be the single biggest consumer of battery life)</li>
  <li>Don't leave the GPS on</li>
  <li>Reduce screen brightness to 30% or so. It's still plenty bright at this level.</li>
  <li>Set the screen timeout to 30 seconds or leave it at the default 1 minute but be diligent about locking the screen when you're done with it.</li>
  <li>Don't leave the wifi on, although I'm not convinced this is a big offender, still need to do more testing.</li>
</ol>

<p>So why is the auto-sync of the contact list so bad? Well, because it is CONSTANTLY polling gmail for an updated contact list. It's fucking ridiculous how often it checks. You can go to the auto-sync settings page and with contact sync enabled, you can watch the damn thing sync (which takes anywhere from 5-20 seconds), wait for not more than 1 second, then sync again. And again. And again. Ummm, hello, can I have a sync frequency for the love of god? If you're not going to utilize data push technology, you've got to let me adjust the frequency.</p>

<p>Anyway, once I turned off the auto-sync contacts, my battery life improved dramatically. <strong>It has been unplugged for more than 8 hours and I still have 50% battery life left, and that's with wifi turned on</strong>. My contacts don't really change very often, and if they do I can just hop over to the sync settings page and force a sync, no problem.</p>

<p><img src="http://farm4.static.flickr.com/3226/2984969709_f73109f419_m.jpg" style="float:right;border:1px solid #fff;margin:0 0 0 5px;"/>Everything else is pretty normal, phone works good, audio quality is good, dialing on the screen is easy. The web browser is great (WebKit-based) though a bit tricky to use at first when trying to click tiny little links on a page, but now that I can zoom quicker and also found out I can use the scrollball to navigate my click focus, I'm becoming better at using it.</p>

<p>I also setup a separate email account (IMAP+SMTP) so I can check my work email from time to time, though I chose not to have it auto-check this account. I've read some complaints about non-gmail email not working reliably, but so far I've had no issues.</p>

<p>My only other minor gripe is the touch screen doesn't seem to register my finger press from time to time. Maybe it's my fat fingers or maybe it's a dirty screen, or maybe I'm just not good at using a touch screen (this is my first), but I will say that I've noticed less and less "dead clicks" as I use this phone more. It's one of those things that frustrates the hell out of you for the first hour or so, then after a few days you say to yourself "this is a piece of cake, what was I whining about?".</p>

<p>I could go on and on about general usage of the phone, but by now we've all played with an iPhone right? Yeah, it's like that. I want to talk about the <a href="http://www.android.com/market/">Android Market</a>.</p>

<h2><img src="http://farm4.static.flickr.com/3286/2987771473_187bb5ec12_m.jpg" style="float:left;border:1px solid #fff;margin:0 5px 0 0;"/>Android Market</h2>
<p>This is the shit. I will be honest, I barely got my phone running and I was in the market downloading all sorts of stuff. You've got apps you might have heard about like Shazam (music identifier) or iPhone similar apps like Tunes Remote among loads of others. There's also about 5 (and growing) different "flashlight" apps. So silly. What's really cool about the app marketplace is not so much the apps themselves, but the fact that ANYBODY can put an app in there without needing to approve it. Plus, with a setting on the G1, you can run unsigned apps on your phone which basically (at least as I understand it) means you don't have to go through the official Android Market to install an application. This is very cool.</p>

<p>What really makes this all possible is the Android platform is open-source and their <a href="http://code.google.com/android/download.html">development SDK</a> is available for download right now. Sure, it requires you to write code in Java, which for me personally, is not a pleasurable experience, but I went from downloading the SDK to running Hello World in no time at all. I'm really excited about this.</p>

<p>I don't really know what more to say, I've only had the phone 1 day so these are some really early impressions, but I am very impressed. Despite the battery thing, which I think I've taken care of with the contacts syncing bullshit, I am very pleased with my new toy.</p>

<p>What are you waiting for? <a href="http://www.t-mobile.com/promotions/genericregular.aspx?&PAsset=Pro_Pro_G1&WT.mc_id=281m3">Go get yourself one now</a>. Hey, they're cheaper than an iPhone (with a 2-year contract) and instead of being with a notoriously bad customer service company you will be with one of the highest rated customer service companies (in the world of cell providers). That doesn't suck. No I'm not marketing for tmobile, I was just scarred by att/cingular after being with them for 6 years. That's why I'm talking about the G1 right now instead of the iPhone a year and a half ago.</p>

<p><strong>Update:</strong> It's been about 3 days now since I got the phone and there is no doubt that the contacts list auto-sync feature is what was draining the battery quickly. I leave wifi on all the time and I still have half (or a little less) battery left after the end of the day. The contacts list will force sync itself with gmail when you edit anything in the phone, so as long as you manually force a sync if you change things from within gmail (away from your G1) then you can disable the contact list auto-sync and have no side effects.</p>]]></description>
			<pubDate>Thu, 30 Oct 2008 22:45:36 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/10/30/t-mobile-g1-first-impressions/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Inherently Bad or Lost in the Dark?</title>
			<link>http://www.enjoybeing.net/blog/2008/10/27/inherently-bad-or-lost-in-the-dark/</link>
			<description><![CDATA[<p>In <a href="http://www.betaversion.org/~stefano/linotype/news/169/">a recent blogpost</a> with a sensationalist headline "Why Programmers Suck at CSS", Stefano Mazzocchi starts off abrasively by stating:</p>

<p><blockquote>I think that programmers tend to avoid doing certain things not because they are inherently bad at it, but because they don’t know how to proceed. They find themselves in an uncharted and foggy territory, without a map, no sense of direction, and with a limited ability to know if they’re getting any closer to where they want to be.</blockquote></p>

<p>Are we talking about some deep philosophical subject here or are we talking about HTML and CSS? What's this? Seven paragraphs (before any talk of actual CSS) of "I have studied the programmer. I know his faults and understand his learning methods"? Really?</p>

<p>If a programmer wants to learn CSS, he buys a book and starts coding. If he doesn't want to learn it, he is not asking to be berated by some self-proclaimed CSS guru.</p>

<p>Stehano's article is filled with CSS that does not work in Internet Explorer, aka does not work in the real world. His proposed fix? Include some magic JavaScript files that supposedly make everything better in Internet Explorer 6 and 7. Why does he do that? Shouldn't we understand why these things don't work and what we can change in our CSS to not require some magic JavaScript file? It's almost like Stefano is in the dark, with no sense of direction. Or maybe he's just inherently bad at IE bugs.</p>]]></description>
			<pubDate>Mon, 27 Oct 2008 21:16:15 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/10/27/inherently-bad-or-lost-in-the-dark/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Takers and Leavers</title>
			<link>http://www.enjoybeing.net/blog/2008/10/20/takers-and-leavers/</link>
			<description><![CDATA[<p>One hundred years from now when our grandkids have all had sex</p>
<p>will they look back to the past and know what they've missed? </p>
<p>Will they think we had it better than the way they have it then?</p>
<p>Will they gaze at a strip mall where a field had once been? </p>
<p>Will they think they're born late like the way we now do it? </p>
<p>Or will they curse at the present and lend credence to it? </p>
<p>Will they hear all the old songs and think they're all true and hate all their own songs and everything new? </p>
<p>Well I'm here to tell you something that's known, </p>
<p>from someone who's lived it from someone who's grown, </p>
<p>the somebody who somebody once loaned a home to. </p>
<p>The grass is always greener, the past is always cleaner, the present is crap and everyone's meaner.</p> 
<p>They say we're moving towards something but I think we're moving from something. </p>
<p>There are some folks who are more apathetic and then there are some folks who are more money grubbin'. </p>
<p>Well, I know there's always been greed and green acres, and war and peace makers. </p>
<p>And then there's your takers and your leavers, your havers and your needers. </p><p>And in this great froth as we skim through the batter, there's now many more of the former and less of the latter. </p>
<p>Help us climb out of this pitfall disaster led by dynasties, charlatans, but not poetasters. </p>
<p>Where there is a mortal disconnect spawned by gluttonous connection, where you pick your own culture without viewer discretion. </p>
<p>Where there is no more history and nothing is learned. </p>
<p>Where you shun all your kin and all your bridges are burned. </p>
<p>Where you are what you buy and you're who what you own; and you think of yourself and you live all alone. </p>
<p>You make yourself feel fine when everything's wrong. </p>
<p>The world keeps turning but you're brittle as bone. </p>
<p>So to all you future dreamers and lovers and leavers, </p>
<p>to all those who know there's still something between us that binds us and reminds us of times that passed, </p>
<p>I appreciate you listening to this one man's last gasp. </p>
<p>In spite of all the words that we can't fit to song, </p>
<p>I'd thank you to take off your eye shades, please... sing along.</p>
<p>- Poem <em>Takers and Leavers</em> on the track <em>Livin' a Dream</em> from <a href="http://www.amazon.com/gp/product/B000H5TVLM?ie=UTF8&tag=enjoybeing-20&link_code=as3&camp=211189&creative=373489&creativeASIN=B000H5TVLM">the Dr. Dog EP <em>Takers and Leavers</em></a>.</p>

<p><strong>Update:</strong> Just saw Dr. Dog play last night and had the opportunity to talk to Zach for a second. He confirmed that Scott wrote this poem.</p>]]></description>
			<pubDate>Mon, 20 Oct 2008 09:43:39 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/10/20/takers-and-leavers/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>TextMate Halloween Style All Over Again</title>
			<link>http://www.enjoybeing.net/blog/2008/10/13/textmate-halloween-style-all-over-again/</link>
			<description><![CDATA[<p><img src="http://sandbox.enjoybeing.net/textmate/textmate-halloween.png" style="float:left;margin:0 10px 0 0" />For Halloween in 2006, TextMate pushed down a little update on everyone that added a new Halloween-styled theme, a new dock icon and a new splash image. It was awesome, but they took a lot of shit for it because apparently the world is filled with a one or two uptight developers. Go figure.</p>

<p>Well I doubt TextMate will ever make the mistake again of "having a bit of fun" with their fanbase, but I still love that theme and am rejoicing at the opportunity to bring it out from the cobwebs.</p>

<p>Here is how I brought it back:</p>

<ol>
<li><a href="http://sandbox.enjoybeing.net/textmate/Splash.jpg">Download this large PNG</a> (cobweb splash image)</li>
<li><a href="http://sandbox.enjoybeing.net/textmate/textmate-halloween.rsrc">Download this Mac OS X icon</a></li>
<li>Quit TextMate</li>
<li>Copy the splash.png image to <strong>~/Library/Application Support/TextMate/Spash.png</strong></li>
<li>Replace your TextMate.app icon with the one from step 2.</li>
<li>Start TextMate and smile.</li>
</ol>
<p><img src="http://farm4.static.flickr.com/3039/2940605302_b93c12643a.jpg" /></p>

<p><strong>Update:</strong> For those who want to go all the way, you need the Halloween theme as well. <a href="http://sandbox.enjoybeing.net/textmate/All-Hallows-Eve.tmTheme.zip">Download the <em>All Hallow's Eve</em> TextMate theme here</a> and then unpack it to your <strong>~/Library/Application Support/TextMate/Themes</strong> directory, then go into TextMate (you might have to restart it to pick up the theme) preferences and choose this theme.</p>]]></description>
			<pubDate>Mon, 13 Oct 2008 20:01:39 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/10/13/textmate-halloween-style-all-over-again/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Rails Shared Hosting Gotcha #3,942</title>
			<link>http://www.enjoybeing.net/blog/2008/10/06/rails-shared-hosting-gotcha-3942/</link>
			<description><![CDATA[<p>Running Rails in a shared hosting environment is a prickly one. This fact has been well documented for years now. But I like to torture myself sometimes. I read <a href="http://tumble.floehopper.org/post/53338799/if-it-hurts-do-it-more-often">a quote</a> recently that I am reminded of: "if it hurts, do it more often".</p>

<p>Well, I'm running, or attempting to run, three Rails sites on a few different shared hosting servers <a href="http://www.dreamhost.com/r.cgi?100919">at Dreamhost</a>. Generally they run OK but sometimes they die and I cannot bring them back to life without a few hours of frantic keyboard strokes. Usually these times coincide with Dreamhost updating one of the following: rails, ruby or rubygems. Updating ruby and rubygems does not happen regularly enough to cause much pain, but I swear to fucking god it seems like they are updating rails every 3 months and every time my apps crash. Yes I have frozen my rails. Yes I am specifying a RAILS_GEM_VERSION in my environment.rb. The problem persists.</p>

<p>The latest failure occurred when rails was updated to 2.1.1. I watched it happen first only on one of the sites, then, when Dreamhost came around to updating the other server that I have apps on, those apps crashed as well. This was the interesting error I received:</p>

<p><code>RubyGem version error: actionpack(2.0.2 not = 1.13.6)</code</p>

<p>The code was still running through my frozen rails, but on one of the requirements it was falling out of my frozen rails and trying to require a more recent version of actionpack. You bastard!</p>

<p><code>/home/user-name/domain.com/vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb	495	in `require'</code></p>

<p>Turns out the fix was easy enough though, but it required manually freezing my rails instead of using the rake task (rake rails:freeze:gems) since the version of rails I was freezing to (1.2.6) was no longer installed on my server.</p>

<p>Step one was to download the version I wanted <a href="http://github.com/rails/rails/tree/v1.2.6">from github</a>. Then upload it to my app's vendor directory, unpack it, rename it to 'rails' and then touch tmp/restart.txt to tell passenger to reload my app.</p>

<p>Hey, it worked. Really weird because I froze rails back in June of this year to Rails 1.2.6, and everything was fine then.</p>

<p>Dreamhost's support was surprisingly silent on helping me with this. First they let me support request sit in their queue for over 3 days, then they replied with a "hey not our fault, your scripts are borked" reply. Great. Well it's over 5 days later now and I can fix it my own damn self, thank you very much.</p>

<p>Currently looking for VPS plans. Word on the street is slicehost which starts at a mere $20/month for 256 MB of VPS goodness. Hmmm....... there will be more on this topic I am sure.</p>

<p><strong>Update:</strong> I was talking with a coworker about this and he reminded me that the older frozen Rails would not include the actionwebservice directory whereas if you freeze Rails now, it does. Also, the Rails 1.6 that I downloaded from github also included the actionwebservice directory. That seems to be the major difference between the frozen rails that was failing for me vs. the frozen rails that's running fine now.]]></description>
			<pubDate>Mon, 06 Oct 2008 23:03:36 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/10/06/rails-shared-hosting-gotcha-3942/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>My First Webpage Rocks</title>
			<link>http://www.enjoybeing.net/blog/2008/09/30/my-first-webpage-rocks/</link>
			<description><![CDATA[<p>As a professional web developer, it's pretty funny to come across one of the first web pages you ever wrote. And embarrassing. Recently, <a href="http://googleblog.blogspot.com/2008/09/2001-search-odyssey.html">Google just had their 10th anniversary</a> and as part of the celebration they dug up a really old web index they had lying around from 2001 and <a href="http://www.google.com/search2001.html">put it back online</a>.</p>

<p>So as any self respecting web junkie would do, I immediately searched for my name. Not too many results for me, but Google did have <a href="http://sandbox.enjoybeing.net/~sac10559/"> my university home page</a> already archived at least. It's a funny, simple HTML page that included a snippet of text telling people to check out my "real site" (I'll save that discussion for another time). The rest of this little page consisted of a link/image to my favorite search engine at that time, Google, including an inline search form that posted to Google (wow how cool is that, you can post form data from one site to another??!!!! amazing!!!!!). Then I closed that page out with a link/image to my favorite band, Phish, and then a naive mailto to my primary email address.</p>

<p>Granted this wasn't my main site but I just found it really funny to go back that far in time into my "internet history" and find something like this. Equally funny was my advocacy of Google, especially given the circumstances of how I rediscovered this page.</p>

<p><a href="http://sandbox.enjoybeing.net/~sac10559/">See Justin K. Perkins Old page from 2000/01 time period</a>. Btw, the name of that page (sac10559) is my old university unique ID, and I swear I don't think I will ever forget it for the rest of my life. I must've typed/written/said that string of characters a million times while in college. For the curious, my old web address was: http://webpages.csus.edu/~sac10559/.</p>

<p>From an ever loyal fan, thanks to Google for a pretty alright search engine and <a href="http://web.archive.org/collections/web.html">thanks to web archive</a> for keeping tabs on all our content.</p>

<p>Oh, one other thing, <a href="http://sandbox.enjoybeing.net/~sac10559/">go check out that page</a> and click the search button without entering anything in the search box. Oh DAAMMNNN!!! Look at those scripting skills!!!!!!</p>]]></description>
			<pubDate>Tue, 30 Sep 2008 21:31:31 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/09/30/my-first-webpage-rocks/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Put That Needle To The Groove</title>
			<link>http://www.enjoybeing.net/blog/2008/09/14/the-breeze/</link>
			<description><![CDATA[<p>Are you moving much too fast? <br />
And the good times that just don't last <br />
If you're always on the go <br />
Make an angel in the snow <br />
And freeze </p>
<p>Do you feel like you're stuck in time? <br />
Forever waiting on that line <br />
If nothing ever moves <br />
Put that needle to the groove <br />

<p>And sing </p>

<p>- snippet from <a href="http://www.drdogmusic.com/">Dr. Dog, The Breeze</a></p>]]></description>
			<pubDate>Sun, 14 Sep 2008 12:28:36 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/09/14/the-breeze/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Putting Chyrp Blog in a Subdirectory</title>
			<link>http://www.enjoybeing.net/blog/2008/09/10/putting-chyrp-blog-in-a-subdirectory/</link>
			<description><![CDATA[<p><img src="/blog/images/chyrp-burd.png" style="float:right;border:1px solid #fff;padding:2px;margin:0 0 10px 10px;"/>Today I decided that I wanted my blog in a subdirectory so that I could just have a super simple (and slightly silly) home page. So I just made the <a href="/">index.html file</a> for the new home page, made a subdirectory in my main website directory and then moved all the <a href="http://www.chyrp.net">chryp</a> files in there. Whoops I broke the blog.</p>
<p>This is what you do to fix your chyrp blog if you do what I did:</p>
<ol>
<li>Go to your admin settings page (your-domain/admin/?action=settings), you will have to manually enter the URL because the paths are all screwed up, but that's what we're about to fix. See the field "Website URL"? Fix that to include the subdirectory but don't include a trailing slash.</li>
<li>Now it should sort of work, at least the home page will but if you click to read a blog post it will break. That's because we forgot to move the .htaccess file over. Or at least I did. So move that from your webroot to the subdirectory.</li>
<li>Last step, edit the .htaccess file so that instead of it saying "RewriteBase /" at the top make it say "RewriteBase /sub-dir-name".</li>
<li>That's it.</li>
</ul>
<p>Silly easy, but the chyrp community is really small and I couldn't find any info about this little chore. But it's here now! Hooray!</p>
<p>Oh yeah, I am running a pretty old version of chyrp, 1.1.3.2 to be exact. The steps described may no longer be applicable to more recent versions.</p>
<p><strong>9/14/08 Update:</strong> If you've moved an existing blog, then there's one step I left out if you want to preserve any existing links to your blog. You need to setup a rewrite rule in your webroot's .htaccess file to transfer any old content to the new blog location. I used the following:</p>
<p><pre>RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* blog%{REQUEST_URI} [R]
</pre></p>]]></description>
			<pubDate>Wed, 10 Sep 2008 21:37:59 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/09/10/putting-chyrp-blog-in-a-subdirectory/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>By submitting, posting or displaying the content you give Google a...</title>
			<link>http://www.enjoybeing.net/blog/2008/09/03/quote.33/</link>
			<description><![CDATA[<blockquote>By submitting, posting or displaying the content you give Google a perpetual, irrevocable, worldwide, royalty-free, and non-exclusive license to reproduce, adapt, modify, translate, publish, publicly perform, publicly display and distribute any content which you submit, post or display on or through, the services. This license is for the sole purpose of enabling Google to display, distribute and promote the services and may be revoked for certain services as defined in the additional terms of those services.</blockquote>&mdash; http://www.google.com/chrome/eula.html]]></description>
			<pubDate>Wed, 03 Sep 2008 08:45:54 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/09/03/quote.33/</guid>
			<dc:creator>justin</dc:creator>
		</item>
		<item>
			<title>Running rubygems 1.1.0? Have fun updating.</title>
			<link>http://www.enjoybeing.net/blog/2008/08/15/running-rubygems-110-have-fun-updating/</link>
			<description><![CDATA[<p>What happens when you type: gem --version</p>
<p>If you see 1.1.0, then you're in for a treat because rubygems 1.1.0 blows up when it encounters an exception when updating the local gem source list, which it always seems to do before updating a gem. Some gems were written after rubygems 1.1.0 was released, so they're written to require rubygems 1.2.0. This causes a problem when running older versions of rubygems. In my case it was the flow gem that was causing this exception, which caused my gem update to fail. Updating rubygems itself was also impossible through the normal means: gem update --system</p>
<p>So if are trying to update your gems or rubygems itself and you can an error like <strong>could not find <em>foo</em> locally or in a repository</strong> where foo is whatever gem you are trying to update, first you might want to <a href="http://weblog.rubyonrails.org/2007/2/6/in-case-you-re-having-trouble-installing-gems">try deleting your gem source cache</a>. If you're still having trouble even after this, then you'll have to update your rubygems manually.</p>
<p>How to update manually:</p>
<ol>
<li><a href="http://rubyforge.org/frs/?group_id=126">Go to Ruby Forge</a> and download rubygems 1.2.0 or higher. Download the zip or gzipped tar.</li>
<li>Navigate to that directory and run <strong>sudo ruby setup.rb install</strong></li>
<li>That's it, now you have rubygems 1.2.0 and you can update your gems successfully via gem update rails or whatever.</li>
</ol>
<p>Thanks to <a href="http://moonlighttower.com/">Robert</a> for solving this mystery for me. I just wrote about what I watched him do on my computer :)</p>]]></description>
			<pubDate>Fri, 15 Aug 2008 12:26:51 -0700</pubDate>
			<guid>http://www.enjoybeing.net/blog/2008/08/15/running-rubygems-110-have-fun-updating/</guid>
			<dc:creator>justin</dc:creator>
		</item>
	</channel>
</rss>
