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

<channel>
	<title>Jordan Brock</title>
	<atom:link href="http://jordanbrock.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jordanbrock.com</link>
	<description>Pith</description>
	<lastBuildDate>Tue, 17 Apr 2012 11:05:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Vagrant + Chef (and OpenPhoto)</title>
		<link>http://jordanbrock.com/2012/04/17/vagrant-chef-and-openphoto/</link>
		<comments>http://jordanbrock.com/2012/04/17/vagrant-chef-and-openphoto/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 11:05:41 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=516</guid>
		<description><![CDATA[I&#8217;ve spent the past couple of days playing with Vagrant , which is an add-on for VirtualBox that allows you to quickly build virtual machines, configured exactly how you want them, on a project by project basis. The advantage of this is that it lets you replicate your production environment (or as close to as is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the past couple of days playing with <a href="http://www.vagrantup.com" target="_blank">Vagrant </a>, which is an add-on for <a href="http://www.virtualbox.org" target="_blank">VirtualBox</a> that allows you to quickly build virtual machines, configured exactly how you want them, on a project by project basis. The advantage of this is that it lets you replicate your production environment (or as close to as is possible), which should hopefully reduce headaches when you deploy your updates. </p>
<p>Vagrant VM&#8217;s are portable, which means that all of your team members can have exactly the same development environment, regardless of their own system setups. Once again: less headaches.</p>
<h3>Vagrant</h3>
<p>How does it work? Well, first of all, you need the <a href="https://www.virtualbox.org/wiki/Downloads">latest version of VirtualBox</a>, and the vagrant gem. I installed it into my system gems, but there&#8217;s no reason it couldn&#8217;t be in your Gemfile if you&#8217;re working on a ruby project.</p>
<p><code>gem install vagrant</code></p>
<p>Once it&#8217;s all setup (read the <a href="http://vagrantup.com/docs/getting-started/index.html" target="_blank">full instructions</a> for some additional steps), you need to initialise your directory:</p>
<p><code>vagrant init</code></p>
<p>This creates a file called &#8220;Vagrantfile&#8221; which configures your VM&#8217;s for each project. The most basic file would look like this:</p>
<script src="http://gist.github.com/2404819.js"></script><noscript><code class="gist"><pre><br />
Vagrant::Config.run do |config|<br />
  config.vm.box = &#8220;lucid32&#8243;<br />
end<br />
</pre></code></noscript>
<p>This tells vagrant to start up a VM using an Ubuntu image. It will boot the VM, and then set a port redirect up so that you can SSH into the VM with the following:</p>
<p><code>vagrant ssh</code></p>
<p>That&#8217;s all very handy, but of course, you&#8217;re going to want your machine to have some software configured. Enter Chef, stage left.</p>
<h3>Chef</h3>
<p><a href="http://wiki.opscode.com/display/chef/Home" target="_blank">Chef</a> is a framework that lets you create &#8220;recipes&#8221; to install and configure software on VM&#8217;s. Basically, it&#8217;s a scripting system for getting a blank VM up and running. </p>
<p>As a good starting point, Opscode have a <a href="https://github.com/opscode/cookbooks/">great repository</a> of &#8220;cookbooks&#8221; (collections of recipes &#8211; natch) on github that you can fork and start using without having to make too many (if any) changes.</p>
<p>To work with Vagrant and Chef, you need a VM configured for Vagrant with a recent build of Ruby installed, as well as the chef. Setting up an Ubuntu 11.10 VM for Vagrant is relatively simple. Just follow steps 1-3 in <a href="http://www.yodi.me/blog/2011/10/26/build-base-box-vagrant-ubuntu-oneiric-11.10-server/">these instructions</a>.</p>
<p>Once that was complete, you need to install Ruby. Here&#8217;s a <a href="http://boris.muehmer.de/2012/03/18/ruby-1-9-3-p125-from-source-on-ubuntu-10-04-lts/">quick guide</a> to installing Ruby 1.9.3-125 from source on Ubuntu.</p>
<p>Then I installed the chef gem</p>
<p><code>gem install chef</code></p>
<p>to get chef-client and chef-solo on the VM. <em>(Note: I&#8217;m only dealing with chef-solo in this post. chef-server adds a layer of difficulty that isn&#8217;t necessary at this stage.)</em></p>
<p>Once you have your base VM setup, you need to package it up for Vagrant, so it can load it up in VirtualBox as needed. </p>
<script src="http://gist.github.com/2405223.js"></script><noscript><code class="gist"><pre><br />
mkdir ~/Vagrant &#038;&#038; cd ~/Vagrant</p>
<p>vagrant package &#8211;base vagrant-oneiric package.box</p>
<p>vagrant box add vagrant-oneiric package.box<br />
</pre></code></noscript>
<p>At this point, you should have a base VM ready for configuring with Chef.</p>
<h3>Vagrant and Chef, sitting in a tree</h3>
<p>Vagrant is built to work with provisioning software such as Chef (and <a href="http://puppetlabs.com/">puppet</a>). You add a series of Chef commands to your Vagrantfile that it will run on your VM as it is being configured. </p>
<p>To add recipes to your VM you just add the following to your Vagrantfile:</p>
<p><code>chef.add_recipe("mysql::server")</code></p>
<p>Chef allows for configuration settings, such as passwords and installation directories, to be passed through to recipes. Vagrant supports this as well:</p>
<script src="http://gist.github.com/2404824.js"></script><noscript><code class="gist"><pre><br />
config.vm.provision :chef_solo do |chef|<br />
  chef.json = {<br />
    :mysql => {<br />
      :server_root_password => &#8220;secretpassword&#8221;<br />
    }<br />
  }<br />
  chef.add_recipe(&#8220;mysql::server&#8221;)<br />
end<br />
</pre></code></noscript>
<h3>OpenPhoto</h3>
<p>OpenPhoto is an open source photo service that allows you to retain control of your photos, rather than store them with some site that may not even exist in 3 years. Your photos are stored on AmazonS3 or on Dropbox, and you can run a server yourself to maintain total control over the whole setup if you wish, or use their hosted service available here: <a href="http://openphoto.me">http://openphoto.me</a>.</p>
<p>Being open source, anyone can contribute to the system, and as with most open source projects, they need as much help as they can get. So, I&#8217;ve started tinkering with it, and I thought it was a good candidate to run with Vagrant and Chef to setup test servers quickly and painlessly.</p>
<p>So, if you want to do the same, here&#8217;s my Vagrantfile for my OpenPhoto directory, which is a git clone of my fork of the <a href="https://github.com/openphoto/frontend">OpenPhoto repository</a> on github. It should hopefully allow you to get up and running if you&#8217;ve done everything outlined above.</p>
<script src="http://gist.github.com/2404532.js"></script><noscript><code class="gist"><pre><br />
# -*- mode: ruby -*-<br />
# vi: set ft=ruby :</p>
<p>Vagrant::Config.run do |config|<br />
  config.vm.box = &#8220;vagrant-oneiric&#8221;</p>
<p>  config.vm.provision :chef_solo do |chef|<br />
    chef.binary_path = &#8220;/path/to/chef/binary/&#8221;<br />
    chef.cookbooks_path = &#8220;/path/to/chef/cookbooks&#8221;</p>
<p>    chef.json = {<br />
      :mysql => {<br />
        :server_root_password => &#8220;secretpassword&#8221;<br />
      }<br />
    }</p>
<p>    chef.add_recipe(&#8220;mysql&#8221;)<br />
    chef.add_recipe(&#8220;mysql::server&#8221;)<br />
    chef.add_recipe(&#8220;apache2&#8243;)<br />
    chef.add_recipe(&#8220;imagemagick&#8221;)<br />
    chef.add_recipe(&#8220;php&#8221;)<br />
    chef.add_recipe(&#8220;php::module_curl&#8221;)<br />
    chef.add_recipe(&#8220;php::module_mysql&#8221;)<br />
    chef.add_recipe(&#8220;php::module_apc&#8221;)<br />
    chef.add_recipe(&#8220;php::module_dev&#8221;)<br />
    chef.add_recipe(&#8220;php::module_imagick&#8221;)<br />
    chef.add_recipe(&#8220;php::module_mcrypt&#8221;)<br />
    chef.add_recipe(&#8220;php::module_gd&#8221;)<br />
    chef.add_recipe(&#8220;apache2::mod_rewrite&#8221;)<br />
    chef.add_recipe(&#8220;apache2::mod_deflate&#8221;)<br />
    chef.add_recipe(&#8220;apache2::mod_headers&#8221;)<br />
    chef.add_recipe(&#8220;apache2::mod_expires&#8221;)<br />
    chef.add_recipe(&#8220;apache2::mod_php5&#8243;)<br />
    chef.add_recipe(&#8220;git&#8221;)<br />
  end</p>
<p>  config.vm.share_folder &#8220;openphoto&#8221;, &#8220;/var/www/openphoto&#8221;, &#8220;/path/to/openphoto/frontend&#8221;, <img src='http://jordanbrock.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> wner => &#8220;www-data&#8221;, :group => &#8220;vagrant&#8221;</p>
<p>  config.vm.forward_port 80, 8080<br />
end<br />
</pre></code></noscript>
<p>Run </p>
<p><code>vagrant up</code></p>
<p>and that will build your new VM using the base image, and then configure all of the required software. It might take a little while <img src='http://jordanbrock.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>One of the great things about Vagrant is that you can quickly share folders with your VM, which means I can edit files in my repository on my Mac, which are shared onto the VM. This is accomplished with this line:</p>
<script src="http://gist.github.com/2404834.js"></script><noscript><code class="gist"><pre><br />
config.vm.share_folder &#8220;openphoto&#8221;, &#8220;/var/www/openphoto&#8221;, &#8220;/path/to/openphoto/frontend&#8221;, <img src='http://jordanbrock.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> wner => &#8220;www-data&#8221;, :group => &#8220;vagrant&#8221;<br />
</pre></code></noscript>
<h4>Apache</h4>
<p>You&#8217;ll also need to configure Apache to use this directory. Here&#8217;s my config file:</p>
<script src="http://gist.github.com/2405294.js"></script><noscript><code class="gist"><pre><br />
<VirtualHost *:80><br />
  DocumentRoot /var/www/openphoto/src/html</p>
<p>  <Directory "/var/www/openphoto/src/html"><br />
    Order deny,allow<br />
    Allow from all</p>
<p>    RewriteEngine on<br />
    RewriteCond %{REQUEST_FILENAME} !-f<br />
    RewriteCond %{REQUEST_FILENAME} !-d<br />
    RewriteRule ^(.*)\?*$ index.php?__route__=/$1 [L,QSA]</p>
<p>    # 403 Forbidden for ini files<br />
    RewriteRule \.ini$ &#8211; [F,NC]</p>
<p>    AddOutputFilterByType DEFLATE text/plain<br />
    AddOutputFilterByType DEFLATE text/html<br />
    AddOutputFilterByType DEFLATE text/css<br />
    AddOutputFilterByType DEFLATE application/x-javascript<br />
    BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
  </Directory></p>
<p>  # 404 Not Found for ini files<br />
  #AliasMatch \.ini$    /404</p>
<p>  ExpiresActive On<br />
  ExpiresByType text/javascript &#8220;A31536000&#8243;<br />
  ExpiresByType application/x-javascript &#8220;A31536000&#8243;<br />
  ExpiresByType text/css &#8220;A31536000&#8243;<br />
  ExpiresByType image/x-icon &#8220;A31536000&#8243;<br />
  ExpiresByType image/gif &#8220;A604800&#8243;<br />
  ExpiresByType image/jpg &#8220;A604800&#8243;<br />
  ExpiresByType image/jpeg &#8220;A604800&#8243;<br />
  ExpiresByType image/png &#8220;A604800&#8243;</p>
<p>  Header set Cache-Control &#8220;must-revalidate&#8221;<br />
  FileETag MTime Size<br />
</VirtualHost><br />
</pre></code></noscript>
<p>You can then add a port forwarding rule to provide easy access to the Apache server running on the VM, like so:</p>
<p><code>config.vm.forward_port 80, 8080</code></p>
<p>Then, fire up &#8220;http://localhost:8080&#8243; in your browser, and you should be looking at your OpenPhoto install!</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2012/04/17/vagrant-chef-and-openphoto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium &#8220;ElementNotDisplayedError&#8221;</title>
		<link>http://jordanbrock.com/2011/06/23/selenium-elementnotdisplayederror/</link>
		<comments>http://jordanbrock.com/2011/06/23/selenium-elementnotdisplayederror/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 08:12:02 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=505</guid>
		<description><![CDATA[If you do integration/request testing of an AJAXified web application using Rspec, Capybara and Selenium there is a pretty good chance that you might have run into this error: Selenium::WebDriver::Error::ElementNotDisplayedError: Element is not currently visible and so may not be interacted with After spending way too long to try and solve this problem (&#8220;THE ELEMENT [...]]]></description>
			<content:encoded><![CDATA[<p>If you do integration/request testing of an AJAXified web application using Rspec, Capybara and Selenium there is a pretty good chance that you might have run into this error:</p>
<p><code>Selenium::WebDriver::Error::ElementNotDisplayedError:</code><br />
<code>Element is not currently visible and so may not be interacted with</code></p>
<p>After spending way too long to try and solve this problem (&#8220;THE ELEMENT <strong>IS</strong> VISIBLE DAMN YOU!!!!&#8221;) I found a few little tweaks to my setup that help remove and/or mitigate the error.</p>
<p>The key to this error is that Capybara is trying to find and/or interact with an element and it&#8217;s not quite ready on the page yet because some JavaScript hasn&#8217;t executed yet, or there&#8217;s a delay with the test web server.</p>
<h3>jQuery Effects</h3>
<p>If you&#8217;re running tests, there&#8217;s a pretty good chance you don&#8217;t care about any jQuery effects. You&#8217;re just interested in the result. If that&#8217;s the case, then add this line to your page layout:</p>
<p><code>= javascript_tag '$.fx.off = true;' if Rails.env.test?</code></p>
<p>That will turn jQuery effects off in the Rails test environment.</p>
<h3>Capybara &#8220;wait_for&#8221;</h3>
<p>
This is a particularly helpful method that, like its name implies, causes Capybara to take a chill pill, and wait for a particular condition to be met. Call it like this:
</p>
<p><code>wait_for(15) {page.should have_content "Some text."}</code><br />
<code>wait_for(30) {page.should have_button "Button Text"}<br />
</code></p>
<p>This just gives the page a little time to catch up before Capybara blows up on you.</p>
<h3>capybara-webkit</h3>
<p>A new Selenium driver from the fine folks at <a href="http://robots.thoughtbot.com/post/4583605733/capybara-webkit">Thoughtbot</a>, this is a headless (this just means it doesn&#8217;t open a visible window) browser that Capybara can interact with. Ideally it should be faster than opening up a browser window for each test. I managed to get it working, mostly. It&#8217;s still kind of new, so there are a few things missing, but it might be a good idea to watch the <a href="https://github.com/thoughtbot/capybara-webkit">github project</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2011/06/23/selenium-elementnotdisplayederror/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Or is it just because people don&#8217;t like your new stuff?</title>
		<link>http://jordanbrock.com/2011/05/20/or-is-it-just-because-people-dont-like-your-new-stuff/</link>
		<comments>http://jordanbrock.com/2011/05/20/or-is-it-just-because-people-dont-like-your-new-stuff/#comments</comments>
		<pubDate>Fri, 20 May 2011 03:03:48 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=502</guid>
		<description><![CDATA[A quote from John Butler on the Music Industry Piracy Investigations site: &#8220;We sell about 40 per cent less albums than we did three or four years ago because of [illegal] downloading&#8221; &#8211; John Butler Of course, it&#8217;s got nothing to do with the quality of the stuff they&#8217;re putting out now. No. It&#8217;s all [...]]]></description>
			<content:encoded><![CDATA[<p>A quote from <a href="http://en.wikipedia.org/wiki/John_Butler_(musician)">John Butler</a> on the <a href="http://www.mipi.com.au/">Music Industry Piracy Investigations</a> site:</p>
<blockquote><p>&#8220;We sell about 40 per cent less albums than we did three or four years ago because of [illegal] downloading&#8221; &#8211; John Butler</p></blockquote>
<p>Of course, it&#8217;s got nothing to do with the quality of the stuff they&#8217;re putting out now. No. It&#8217;s all because of the computers. Because computers weren&#8217;t around three or four years ago.</p>
<p><em>I found this site because they&#8217;d <a href="https://twitter.com/themaninblue/status/71407363302752256">just sent</a> a takedown notice to <a href="http://www.themaninblue.com/">Cameron Adams</a> over his brilliant <a href="http://daftpunk.themaninblue.com/">Definitive Daft Punk</a> mashup, which has got to do more to promote sales of Daft Punk than any threat of legal action will ever accomplish.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2011/05/20/or-is-it-just-because-people-dont-like-your-new-stuff/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CoffeeScript, bistro_car, homebrew, and passenger gotcha</title>
		<link>http://jordanbrock.com/2010/04/08/coffeescript-bistro_car-homebrew-and-passenger-gotcha/</link>
		<comments>http://jordanbrock.com/2010/04/08/coffeescript-bistro_car-homebrew-and-passenger-gotcha/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 09:15:38 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=495</guid>
		<description><![CDATA[File under &#8220;Things for me to remember when reinstalling stuff&#8221; For me, one of the best things about using Ruby/Rails/Sinatra for web development is HAML/SASS, which allow me to quickly write and maintain HTML/CSS without having to worry about all the pointless stuff, like brackets etc. A by-product of using HAML/SASS is that when you [...]]]></description>
			<content:encoded><![CDATA[<p>File under &#8220;Things for me to remember when reinstalling stuff&#8221;</p>
<p>For me, one of the best things about using Ruby/Rails/Sinatra for web development is HAML/SASS, which allow me to quickly write and maintain HTML/CSS without having to worry about all the pointless stuff, like brackets etc. A by-product of using HAML/SASS is that when you have to write in something else, it causes me grief. JavaScript is a case in point.</p>
<p>Coffeescript (and to a lesser extent) bistro_car solve this. It brings the beauty of a ruby-like language to writing JavaScript, so that once again you don&#8217;t have to worry about all the crap that goes along with it.</p>
<p>However, I ran into a slight problem when following <a href="http://drnicwilliams.com/2010/03/15/using-coffeescript-in-rails-and-even-on-heroku/">Dr Nic&#8217;s setup tutorial</a> today. <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a> worked, <a href="http://github.com/jnicklas/bistro_car">bistro_car</a> worked within the console, but it didn&#8217;t work when accessing the page through the browser. But some path re-working, and a kind word or two from <a href="http://twitter.com/sutto">@sutto</a>, and we&#8217;re good to go. </p>
<p>For future reference, here&#8217;s what I did. I&#8217;m using the <a href="http://github.com/mxcl/homebrew">homebrew package manager</a>. Mainly because it&#8217;s awesome, and I use MacOS X, which is also awesome.</p>
<p>So, I installed node.js, coffeescript and bistro_car like so:</p>
<p><code>brew install node</code><br />
<code>brew install coffee-script</code><br />
<code>gem install bistro_car</code></p>
<p>Then, add the following to your environment.rb file:</p>
<p><code>config.gem 'bistro_car'</code></p>
<p>Create an &#8216;app/scripts&#8217; directory in your Rails app, which is where you can store all your .coffee files (application.coffee etc).</p>
<p>You then get bistro_car to include those script files by putting this in your layout/template/page/whatever:</p>
<p><code>coffee_script_bundle</code></p>
<p>Then, you load the page, and bistro_car automagically uses coffee-script to convert your .coffee files to javascript. Except, of course, when it doesn&#8217;t work because something is screwed somewhere.</p>
<p>As with almost every problem on a *nix computer, the problem is a path one, and thankfully solved with some simple symlinks. It seems <a href="http://www.modrails.com/">passenger</a> operates in it&#8217;s own little world when it comes to paths, and it just didn&#8217;t want to play nice with my environment. So, I tricked it as follows:</p>
<p><code>sudo ln -s /usr/local/bin/coffee /usr/bin/coffee</code><br />
<code>sudo ln -s /usr/local/bin/node /usr/bin/node</code></p>
<p>And that, my friend, is how you skin the unix path cat. </p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2010/04/08/coffeescript-bistro_car-homebrew-and-passenger-gotcha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back from the Edge</title>
		<link>http://jordanbrock.com/2009/11/12/back-from-the-edge/</link>
		<comments>http://jordanbrock.com/2009/11/12/back-from-the-edge/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:33:37 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=479</guid>
		<description><![CDATA[Last week, I was lucky enough to be involved with the 2009 Edge of the Web conference, which was organised by AWIA and Red Horizon Events here in Perth. We had speakers from around the world, around Australia and from Perth, who all gave great talks to an eager and attentive audience. My role at [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, I was lucky enough to be involved with the <a href="http://www.edgeoftheweb.org.au">2009 Edge of the Web conference</a>, which was organised by <a href="http://www.webindustry.asn.au">AWIA</a> and <a href="http://www.redhorizonevents.com.au/">Red Horizon Events</a> here in Perth. We had speakers from around the world, around Australia and from Perth, who all gave great talks to an eager and attentive audience.</p>
<p>My role at the conference was basically to be the room monitor for the main auditorium, which meant that I only really got to see those speaking in that room. As a result, I didn&#8217;t really get to see all that I wanted to see, but I can&#8217;t complain in the slightest, because there were some fantastic presentations. And I got to see them for free. Which was nice.</p>
<p>So, here&#8217;s a brief run-down of who I saw, and what I remember. Unfortunately, I didn&#8217;t have a chance to take notes, so some of this is going to be hazy.</p>
<h3><a href="http://dashes.com/anil/">Anil Dash</a> (<a href="http://twitter.com/anildash">@anildash</a>)</h3>
<p>For a few days it looked as though Anil wasn&#8217;t going to be able to make it to Perth at all. Some last minute flight shuffling, and some program jiggling saw our opening and closing keynotes swapping. This meant that Anil would be able to come, and I&#8217;m fairly sure everyone was glad that he did. It was the perfect opening for the conference: an inspirational call to arms, urging us to embrace the open web and build the apps and sites that people will be talking about. Perth can be isolated, both mentally and physically, and it was great to hear someone talk about breaking the myth of Silicon Valley.</p>
<p><em>Just a quick time out to thank Anil for his superhuman efforts in coming to speak. He ended up only being in Perth for about 35 hours, and spent 45 hours travelling to do that. I can&#8217;t imagine how he felt at the end of the trip. Thanks heaps Anil.</em></p>
<h3><a href="http://lachstock.com.au/">Lachlan Hardy</a> (<a href="http://twitter.com/lachlanhardy">@lachlanhardy</a>)</h3>
<p>Having received the perfect lead in from Anil, Lachlan spoke in depth about the open web, the technologies available and the ethos behind keeping information free from copyright and the patent-lock. A great talk that hopefully encouraged attendees to challenge themselves to use open technologies.</p>
<p><a href="http://www.slideshare.net/lachlanhardy/the-open-web-2426118">View on slideshare </a></p>
<h3><a href="http://dmitry.baranovskiy.com/">Dmitry Baranovskiy</a> (<a href="http://twitter.com/DmitryBaranovsk">@DmitryBaranovsk</a>)</h3>
<p>Always entertaining, Dmitry has the knack of making a detailed and technical journey into the world of JavaScript highly entertaining. Quote of the day: &#8220;The public scope in JavaScript is like a public toilet. You don&#8217;t know who&#8217;s done what in there, but if you have to use it, touch it as little as possible&#8221;</p>
<p><a href="http://www.slideshare.net/Dmitry.Baranovskiy/your-javascript-library">View on slideshare </a></p>
<h3><a href="http://nickcowie.com/">Nick Cowie</a> (<a href="http://twitter.com/nickobec">@nickobec</a>)</h3>
<p>Local web legend Nick Cowie gave an informative talk on some of the upcoming features of CSS3, and how well they are supported in local browsers. He had a surprising example of some features that are supported by even the venerable IE6. One for the code monkeys.</p>
<p><a href="http://www.slideshare.net/nickobec/progressive-enhancement-with-css3">View on slideshare</a></p>
<h3><a href="http://al3x.net">Alex Payne</a> (<a href="http://twitter.com/al3x/">@al3x</a>)</h3>
<p>Alex gave the opening keynote on day 2, and it was a great start to the day (ok, <a href="http://www.fivesensescoffee.com.au">the coffee</a> was the real start to the day). He spoke about how the languages and tools that we use shape the way that we approach our work. Watching Alex&#8217;s talk, I was reminded of his tweet from when he was researching the talk:</p>
<p>&#8220;Researching tech history is a good reminder not to get too worked up about the tech of today. It mostly looks ridiculous in ten years.&#8221; &#8211; http://twitter.com/al3x/status/5327550871</p>
<p>While we all love a good language fight every now and then, seeing a laundry list of forgotten languages, specs and companies certainly showed that it&#8217;s not worth getting too worked up over.</p>
<p>Quote of the day: &#8220;Throw the wallaby over the bush fire.&#8221; </p>
<p><a href="http://www.slideshare.net/al3x/mind-the-tools">View on slideshare</a></p>
<h3><a href="http://www.kevinyank.com/">Kevin Yank</a> (<a href="http://twitter.com/sentience">@sentience</a>)</h3>
<p>Being entirely in love with <a href="http://haml-lang.com">HAML</a> and <a href="http://sass-lang.com/">SASS</a> I had only paid the slightest of attention towards CSS frameworks. Kevin gave a good run through of what they are, when they&#8217;re a good idea, and how they work. I suppose it made an impact, because I actually started using aspects of the <a href="http://960.gs/">960 Grid</a> on a project at work.</p>
<p><a href="http://www.slideshare.net/sentience/css-frameworks-make-the-right-choice-eotw09">View on slideshare</a></p>
<h3><a href="http://www.ashdonaldson.com/">Ash Donaldson</a> (<a href="http://twitter.com/ashdonaldson">@ashdonaldson</a>)</h3>
<p>Unfortunately, I only got to catch the last part of Ash&#8217;s talk, so I can&#8217;t really say a great deal about it, except that he has introduced me to an insanely addictive iPhone game: <a href="http://www.doodlejump.com/">Doodle Jump</a></p>
<p><a href="http://www.slideshare.net/AshDonaldson/designing-to-persuade-shaping-the-user-experience">View on slideshare</a></p>
<h3>Malcolm Day</h3>
<p>After two days of talking about the benefits of various development methodologies and discussions on W3C standards and the like, it was refreshing to hear a talk about money, and to earn it. Malcolm, CEO of <a href="http://www.adultshop.com.au/">Adult Shop</a> (NSFW!), gave an entertaining (and potentially libellous) talk on his journey from being an engineer for a mining exploration company to the CEO of a publicly traded ecommerce company.</p>
<h3><a href="http://powazek.com/">Derek Powazek</a> (<a href="http://twitter.com/fraying">@fraying</a>)</h3>
<p>Wow, what a close! Derek was an exceptional presenter, taking us through the types of &#8220;crazy&#8221; that we encounter while building communities on the web, and how to deal with each of those crazies. Highly entertaining and hilarious, it was a brilliant end to the conference.</p>
<p><a href="http://www.slideshare.net/fraying/wisdom-of-community-four-kinds-of-crazy-2438361">View on Slideshare</a></p>
<p>I&#8217;d like to thank everyone involved in the conference, particularly the AWIA events committee (<a href="http://myles.eftos.id.au/blog/">Myles</a>, <a href="http://milesburke.com.au/">Miles</a>, <a href="http://kay.smoljak.com/">Kay</a> and Helen) for their tireless efforts in putting on a wonderful show. I&#8217;d also like to give props to our international speakers, for taking time out of their lives to travel to the other side of the world to give a little something to the Australian Web community.</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2009/11/12/back-from-the-edge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edge of the Web &#8211; Derek Powazek</title>
		<link>http://jordanbrock.com/2009/10/08/edge-of-the-web-derek-powazek/</link>
		<comments>http://jordanbrock.com/2009/10/08/edge-of-the-web-derek-powazek/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 04:24:24 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=472</guid>
		<description><![CDATA[Derek Powazek is presenting the opening keynote at the upcoming edition of the Edge of the Web conference in Perth on November 4-6, 2009. He will be talking on the &#8220;Wisdom of Community&#8221;. Your keynote at Edge of the Web is titled &#8220;The Wisdom of Community&#8221;. How do you define a community on the web? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://powazek.com/">Derek Powazek</a> is presenting the opening keynote at the upcoming edition of the <a href="http://www.edgeoftheweb.org.au/">Edge of the Web conference in Perth</a> on November 4-6, 2009. He will be talking on the <a href="http://www.edgeoftheweb.org.au/program/derek-powazek-wisdom-of-community/">&#8220;Wisdom of Community&#8221;</a>.</p>
<p><strong><em>Your keynote at Edge of the Web is titled &#8220;The Wisdom of Community&#8221;. How do you define a community on the web?</em></strong></p>
<p>I like to take the broadest possible definition, so I&#8217;d say that a community is any group of people brought together by some common denominator. Lots of things have invisible communities around them &#8211; people who care about that thing &#8211; even if they haven&#8217;t ever met each other. The web gives us the power to find each other, which is why it&#8217;s such a powerful, and terrible, place for social interactions.</p>
<p><strong><em>It seems that, given enough people, a comment thread can quickly devolve into rapid fire insults and grandstanding. How can we foster and encourage thoughtful commentary and participation?</em></strong></p>
<p>There are two parts to this, and you can only control one of them.</p>
<p>The part you can&#8217;t control is human nature. People are weird, messy, and complicated. They react strangely to things. They behave irrationally in groups. And you can&#8217;t change that.</p>
<p>The part you can control is how your website interfaces with that strange mass of humanity. Certain interfaces stand up better to the weirdness of humanity than others. It takes a lot of trial and error, and the line is always moving because we&#8217;re evolving.</p>
<p>We&#8217;re all still learning how to behave online. It&#8217;s the first time in human history that you can be both alone and in a group at the same time. How weird is that? It&#8217;s no wonder we haven&#8217;t figured it out yet.</p>
<p><strong><em>One of the benefits of investing your time and efforts in building a community is the the personal rewards that come from interacting with the members of the community. One of the perils of that can be when things start to go wrong and it can lead to heartbreak. You had a fairly public parting of the ways with <a href="http://www.jpgmag.com/">JPG Magazine</a>. Not wishing to get into specifics with you, but how hard was that to deal with, and did the community that you and Heather helped foster help you &#8220;heal&#8221;?</em></strong></p>
<p>JPG was an enormous learning experience for me, both for what I learned about fostering creative communities, as well as learning some hard truths about founding a company. There are a million stories out there about founding partners in a startup falling apart. In fact, it&#8217;s probably what happens more than anything else. The only difference in this case was that I chose to talk about it publicly. I did that because I had to &#8211; the community that built JPG deserved to know what happened. But one side-effect was that many other founders and entrepreneurs came out of the woodwork to tell me their stories. It helped me immensely to know that I wasn&#8217;t alone.</p>
<p>The web never ceases to amaze me. When you approach it with honesty, it comes back a thousand fold.</p>
<p><strong><em>With seriously large amounts of money going after the &#8220;Social Web&#8221;, do you see people having multiple social locations (eg facebook, twitter, flickr, Goole Reader etc) as a hinderance, or does this fragmentation actually help, by allowing us to compartmentalise our social interactions into different areas, much like we do in our offline lives.</em></strong></p>
<p>Good question! To a geek, this repetition of signup, login, create profile, over and over, just seems like an inefficiency. But people are inefficient. We all maintain multiple identities already. Who we are with our parents isn&#8217;t the same as who we are with our friends. So I&#8217;m not as bothered by all these disparate digital identities as some. In fact, I think trying to meld them is going against human nature.</p>
<p><strong><em>&#8220;Strange Light&#8221; was an intensely quick project, born from an idea and fully realised in less than two days, and seems to have had an incredible response both from photographers and from the web at large. Do you see these magazines as having their own community? Or one that augments existing online ones (such as flickr)?</em></strong></p>
<p>I think that magazines are, essentially, communities. At least, the successful ones are.</p>
<p>In the case of the first issue of Strange Light, there were two groups out there: the people who experienced it were a community of experience, and the rest of us who saw the astounding photographs coming out of the storm formed a loose-knit community of interest.</p>
<p>I was hoping that a few of those two groups would want a beautiful printed edition of photos from the storm, and they did! What I like about this is it allows the web to do what it&#8217;s good at (connect people) and print to do what it&#8217;s good at (create a coveted object).</p>
<p><strong><em>And finally, when the hell is <a href="http://magcloud.com/">MagCloud</a> going to deliver to Australia? It&#8217;s not like we&#8217;re on the other side of the world or something.</em></strong></p>
<p>The short answer is, I don&#8217;t know. But I can tell you why it&#8217;s complicated.</p>
<p>Most of the printed matter around you right now is printed in China, put on a boat, and then a truck, maybe a train, and then another truck, and finally makes its way to you. It&#8217;s horribly inefficient and disastrous for the environment.</p>
<p>MagCloud is changing all that, because we&#8217;re going to have print partners all over the world. So when you buy a magazine on MagCloud, it&#8217;ll always be printed as near to you as possible. That way the buyer pays less, the publisher makes more, and we expend less carbon shipping paper all over the world.</p>
<p>But that means shipping is much more complicated than just licking a stamp. We&#8217;re setting up printing partners as quickly as possible, but it takes time. We&#8217;ll get shipping here as soon as possible. Promise.</p>
<hr />
<p>Derek will also be running a workshop on <a href="http://www.edgeoftheweb.org.au/workshops/">&#8220;Creative Community Building</a>. Tickets available now!</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2009/10/08/edge-of-the-web-derek-powazek/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting up AutoTest on Mac OS  X</title>
		<link>http://jordanbrock.com/2009/08/08/setting-up-autotest-on-mac-os-x/</link>
		<comments>http://jordanbrock.com/2009/08/08/setting-up-autotest-on-mac-os-x/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 05:24:05 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=468</guid>
		<description><![CDATA[Another in the series of &#8220;Oh, I&#8217;d better write this down here so I don&#8217;t forget it in the future&#8221; posts. This time, the gems needed to setup AutoTest for a rails app on Leopard Then you need to create a &#8220;.autotest&#8221; file with the following: Then it&#8217;s just a case of typing &#8220;autotest&#8221; in [...]]]></description>
			<content:encoded><![CDATA[<p>Another in the series of &#8220;Oh, I&#8217;d better write this down here so I don&#8217;t forget it in the future&#8221; posts. This time, the gems needed to setup AutoTest for a rails app on Leopard</p>
<script src="http://gist.github.com/164307.js"></script><noscript><code class="gist"><pre><br />
sudo gem install ZenTest   </p>
<p>sudo gem install autotest-fsevent </p>
<p>sudo gem install autotest-rails  </p>
<p>sudo gem install redgreen<br />
</pre></code></noscript>
<p>Then you need to create a &#8220;.autotest&#8221; file with the following:</p>
<script src="http://gist.github.com/164310.js"></script><noscript><code class="gist"><pre><br />
require &#8216;autotest/fsevent&#8217;<br />
require &#8216;redgreen/autotest&#8217;<br />
</pre></code></noscript>
<p>Then it&#8217;s just a case of typing &#8220;autotest&#8221; in RAILS_ROOT.</p>
<p>Simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2009/08/08/setting-up-autotest-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relationships with Random Strangers</title>
		<link>http://jordanbrock.com/2009/06/02/relationships-with-random-strangers/</link>
		<comments>http://jordanbrock.com/2009/06/02/relationships-with-random-strangers/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 00:58:09 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=459</guid>
		<description><![CDATA[While it's difficult coming up with a term for the relationships that we have with people that we interact with online, but not in "meatspace", it's harder still coming up with how to describe your relationship with people that A) you've never met, and B) you've never really even interacted with.]]></description>
			<content:encoded><![CDATA[<p>While it&#8217;s difficult coming up with a term for the relationships that we have with people that we interact with online, but not in &#8220;meatspace&#8221;, it&#8217;s harder still coming up with how to describe your relationship with people that A) you&#8217;ve never met, and B) you&#8217;ve never really even interacted with.</p>
<p>Around a year or so ago, someone posted a link to this photo on Flickr:</p>
<p><a href="http://www.flickr.com/photos/godiex/327798644/"><img src="http://farm1.static.flickr.com/140/327798644_483211785e_m.jpg" border="0" alt="" /></a></p>
<h4>duty</h4>
<p><em>Uploaded by </em><a href="http://www.flickr.com/photos/godiex/"><em>Godiex { &#8230; }</em></a><em> on 20 Dec 06, 1.20PM WST.</em></p>
<p>Certainly an interesting photo, and one that deserved further investigation. So, I started looking at <a href="http://www.flickr.com/photos/godiex/">Godiex&#8217;s photostream</a>, and noticed there were a few photos of <a href="http://www.flickr.com/photos/godiex/2048993674/in/set-72157600733009151/">this girl</a>, who turned out to be his girlfriend. I found her <a href="http://www.flickr.com/photos/random-panda">photostream</a>, and then saw this photo</p>
<p><a href="http://www.flickr.com/photos/random-panda/17707084/"><img src="http://farm1.static.flickr.com/12/17707084_1432e96044_m.jpg" border="0" alt="" /></a></p>
<h4>home town</h4>
<p><em>Uploaded by </em><a href="http://www.flickr.com/photos/random-panda/"><em>randompanda</em></a><em> on 6 Jun 05, 10.41AM WST.</em></p>
<p>which is a shot of the hill I grew up on (our old house is just around the corner). I thought that was pretty intriguing, and so I added both randompanda and Godiex as contacts.</p>
<p>It turns out that Godiex is an artist from Argentina, and that he and randompanda began a long distance relationship in the comments on a photo on flickr. So, all of a sudden, I&#8217;m watching the relationship of two people I don&#8217;t know, who met through a photo sharing site. Their photos showed them being apart, randompanda going to live in Buenos Aires, and then the pain of separation when randompanda had to return back to Australia (I presume caused by visa-expiry). I&#8217;m guessing I felt an affinity for their situation, as Caren and I spent 10 months of our first 2 years together in different countries.</p>
<p>Through my virtual stalking, it appeared to me that they were waiting for the opportunity to be back together and that all would be well again. Then Godiex posted this photo:</p>
<p><a href="http://www.flickr.com/photos/godiex/3572976564/"><img src="http://farm4.static.flickr.com/3555/3572976564_76bd27cc29_m.jpg" border="0" alt="" /></a></p>
<h4>this moon is over</h4>
<p><em>Uploaded by </em><a href="http://www.flickr.com/photos/godiex/"><em>Godiex { &#8230; }</em></a><em> on 28 May 09, 5.10PM WST</em>.</p>
<p>In the description for the photo he basically said that their relationship was over, effectively being ended by the distance apart. It was weird. Here were two people that I had never met, and only shared the random fact that I grew up in the same town as one of them, and I followed their relationship through the photos they posted. And I was sad that they had made the decision to break up. And it&#8217;s clear from the comments on the last photo that there&#8217;s a large number of other people feeling the same way.</p>
<p>Well, I hope that <a href="http://www.flickr.com/photos/matt/1424625/">these people</a> are still together at least (read the comments on that photo for an amazing story).</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2009/06/02/relationships-with-random-strangers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slide</title>
		<link>http://jordanbrock.com/2009/04/19/slide/</link>
		<comments>http://jordanbrock.com/2009/04/19/slide/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 02:11:29 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[evelyn]]></category>
		<category><![CDATA[josephine]]></category>
		<category><![CDATA[kids]]></category>
		<category><![CDATA[owen]]></category>
		<category><![CDATA[park]]></category>
		<category><![CDATA[playground]]></category>
		<category><![CDATA[slide]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/2009/04/19/slide/</guid>
		<description><![CDATA[Slide from Jordan Brock on Vimeo.]]></description>
			<content:encoded><![CDATA[<p><object width="601" height="338" data="http://vimeo.com/moogaloop.swf?clip_id=4210376&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=4210376&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /></object><br />
<a href="http://vimeo.com/4210376">Slide</a> from <a href="http://vimeo.com/jordanbrock">Jordan Brock</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2009/04/19/slide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using git to sync configurations between two computers</title>
		<link>http://jordanbrock.com/2009/04/13/using-git-to-sync-configurations-between-two-computers/</link>
		<comments>http://jordanbrock.com/2009/04/13/using-git-to-sync-configurations-between-two-computers/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 14:14:53 +0000</pubDate>
		<dc:creator>Jordan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[zsh]]></category>

		<guid isPermaLink="false">http://jordanbrock.com/?p=359</guid>
		<description><![CDATA[I have two machines that I use for my development work: a 24" iMac and a MacBook Air (It is so choice. If you have the means, I highly recommend picking one up. _Bonus points for quote identification_). Naturally, doing any work spread over two machines leads to all sorts of problems: Inconsistencies in development platform, files, data, code and just the general configuration of the machine. Thankfully, there exists a number of solutions to these problems.]]></description>
			<content:encoded><![CDATA[<p>I have two machines that I use for my development work: a 24&#8243; iMac and a MacBook Air (It is so choice. If you have the means, I highly recommend picking one up. _Bonus points for quote identification_). Naturally, doing any work spread over two machines leads to all sorts of problems: Inconsistencies in development platform, files, data, code and just the general configuration of the machine. Thankfully, there exists a number of solutions to these problems.</p>
<h3><a href="http://www.getdropbox.com">DropBox</a></h3>
<p>DropBox is simply file synchronisation done right. You install it, drag the files you want to have synced between two computers into the Dropbox folder, and BOOM, it copies everything up to their server, and when you set it up on the second computer, copies everything back down again. After the initial sync, which can take quite a while if you&#8217;ve got lots of stuff, it&#8217;s pretty much seamless. Create, or make a change to, a file on one computer, and before you know it, it&#8217;s available on the other computer.</p>
<p>Need access to those files from another computer, or even from your phone? No problem, they have a web interface that give you full access to all of your &#8220;synced&#8221; files. Simple.</p>
<p>To add a lovely cherry to the ice cream sundae that is DropBox, they also have versioning. That means if you make a series of dunderhead changes to a document, you can just rollback to the last good copy. Awesome.</p>
<h3><a href="http://git-scm.com/">Git</a> and <a href="http://www.github.com/">GitHub</a></h3>
<p>For the longest time (mostly while I was still working on Windows) &#8220;Source Control&#8221; was some mystical mumbo jumbo that only people in large companies needed to worry about. Of course, that was mainly because at the time the options for Visual Studio only included Microsoft SourceSafe, which is perhaps some of the crappiest, most unusable software ever foisted on the unsuspecting public by a company with a long history of foisting crap on the unsuspecting public.</p>
<p>Once I switched to MacOSX and started working with Rails, it became clear that all source control systems weren&#8217;t created equally. Subversion seemed to be the choice of the community, so I loaded everything up onto my own SVN server. A world was opened up to me, and I could code with wild abandon, safe in the knowledge that I could rollback with no danger. Of course, that was the ideal world, but the basic approach worked. I created branches, tagged releases and deployed sites from SVN.</p>
<p>As with most things, people started grumbling about SVN and some of it&#8217;s shortcomings: difficulties in merging different code branches, no distributed repositories and some general discontent. Git was the solution, and the rails community just jumped ships in the middle of the night. Before you knew it, everyone was using Git, and also GitHub. I won&#8217;t go into the specifics of why this combo is so good, except to say that if you&#8217;re not using git, well, good day to you sir.</p>
<h3>git and <a href="http://github.com/jferris/config_files/tree/master">config_files</a></h3>
<p>In addition to using git to store your development work, you can also use it to manage system configuration files. I found the wonderful <a href="http://github.com/jferris/config_files/tree/master">config_files</a>. It&#8217;s a collection of shell, git, vim and irb configuration files. So? How does that help?</p>
<p>A great feature of git, and github in particular, is that you can &#8220;fork&#8221; a repository. You effectively copy someone else&#8217;s repository, and you can then make all the changes to it you want, without affecting the original. If you want to let other people know about your changes, you can send the original developer a &#8220;pull request&#8221;, and they can grab your changes, and incorporate them, or not.</p>
<p>So, fork the config_files repository, and then clone it to your own system. Run the &#8220;install.sh&#8221; script, which basically just sets up a series of symlinks in your user directory. These symlinks point to the files in the git repository. You make any changes you want to the repository and commit them up to github. Then do the same on your other computer, and bingo, you&#8217;re synchronising your configuration between machines.</p>
<p>And why would you want config_files? Well, you get some great all round system setup tidbits, but my favourite bit is how it prints the current git branch as part of your prompt, saving you the need to try and work out what you&#8217;re in the middle of doing.</p>
<p>Tasty.</p>
]]></content:encoded>
			<wfw:commentRss>http://jordanbrock.com/2009/04/13/using-git-to-sync-configurations-between-two-computers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

