Westcoast bloggers website revamp

Some of you may have noticed the West Coast Bloggers button on the sidebar of my blog. Well after some design magic from Si and CSS mastery from Nick, we are happy to announce the new website!

Oh, and you might notice the new twitter widget in thee sidebar too. I’ve succumbed. We’ll see how long it lasts.

WGET: The poor man’s SVN - Using Capistrano on a host with out subversion

I have a client for whom I created a CakePHP-based website for over a year ago. He has since come back to me and asked for a number of changes. I thought I would take the opportunity to use capistrano, because there are a number of steps I always had to perform when updating his site and I hate having to do them manually.
I went about checking all the necessary requirements on his host:

  1. SSH access - check! The host his site was on allows an SSH connection which is required by capistrano
  2. Apache follows symbolic links - check! Because capistrano uses a symbolic link from the document root to the latest version of the site, Apache needs to be able to follow them (i.e the site’s apache configuration needs FollowSymLinks enabled)
  3. Has svn installed - fail! This could be a problem. Capistrano by default checks out the HEAD revision from the defined repository - if it can’t use SVN, it can’t download the latest version of the site.

So close! If only I could download the HEAD revision of a site using a common command line system. I thought about writing a SVN-to-web interface, that would check out the latest version and post them as a website, but then I remembered SVN does that out of the box using the SVN apache module. Thankfully, when I was building my development machine, I made I installed the SVN module - it was now time to use it!

First I needed to tell Apache serve up the a copy of the SVN repository. Dropping the following into the Apache config file did the trick:

  1. <location /url/you/would/like/to/access>
  2. DAV svn
  3. SVNPath /path/to/svn/repository
  4. AuthType Basic
  5. AuthName “My Secret SVN Repository”
  6. AuthUserFile /path/to/a/.htpassword/file
  7. Require valid-user
  8. </Location>

For those playing at home, replace /url/you/would/like/to/access with a nice easy path - this is the URL you will access to download the files, replace /path/to/svn/repository with the actual physical path to your repository and create a .htpassword file so you can limit access to the repository by using the htpasswd2 command: htpasswd2 -c /path/to/a/.htpassword/file username would work in this case (After substituting a username and real path, of course)

If you point you browser to the URL you just setup, you should see the root directory of the repository, after you enter the username and password you setup. Congratulations! You are basically there. Now you just need to reconfigure your capistrano to use wget instead of svn. I do this by overriding the deploy method - because I’m not using rails for this project, the paths and shard folders are different anyway. If you are using rails, you might need to have a look at the original recipe file and replace the svn command with the one below.

  1. task :deploy do
  2. run “wget –user=#{wget_user} –password=#{wget_pass} -m –cut-dirs=4 -nH -P #{release_path} -q -R index.html #{repository}”
  3. run “ln -nfs #{release_path} #{current_path}”
  4. run “rm -rf #{release_path}/app/webroot/files”
  5. end

The only modification to that line is the number after the –cut-dirs switch - it should be equal to the number of directories in the URL. In our example the URL is /url/you/would/like/to/access so –cut-dirs it needs to be equal to 6.

The last thing to do is to setup the wget_user and wget_pass variables to be equal to the username and password you created using htpasswd2.

That should do it! You can now deploy to a server that is sans SVN!

Caveats: Because of the way the SVN module and WGET work, I’ve had to not include he downloading of index.html (Basically WGET treats the directory listing as a page, and will output it as index.html) so this technique will not work if you have any pages called index.html in your structure. Work around: Rename all instances of index.html to index.htm

You might get some weird results if some one checks in code at the same time as you do a deploy - unless you have a bucket load of developers working on your system and you have no communication between developers, this is pretty unlikely.

(Names have been changed to protect the innocent)

When too much web is never enough…

What a week in web (well for me anyway). Kay, Miles and myself were invited to a Tuesday morning breakfast put on by the Perth Conference Bureau. The reason? The PCB gives out grants to help start; and to help bid for conferences which is of great interest to us as AWIA committee members. Anyway - the exciting part: There was a $2000 door prize, which can be used by the winner to attend any conference in Australia. Guess who won? That right! Me! So it looks like Web Directions 07 is now on the cards! So thank you Rebecca for inviting us! There will be no doubt much shenanigans to be had.

Tonight was the inaugural Dinner 2.0 , graciously organised by Bronwen of PerthNorg fame. Some how my little ol’ time tracker got enough attention to garner me an invite. It was the who’s who of the Perth Web 2.0 fraternity: Scouta, Buzka and Minti all had representatives come along. It is great to see Perth startups who are getting recognition from the industry, it really gives me hope that our remote little city hasn’t, for once completely missed the boat on something cool.

Good times had by all! Bronwen was taking happy snaps so I’m sure they will appear on Flickr soon enough.

One computers, one PocketPC and some funky software

I recently wrote about MaxiVista - some software which allows you to turn an old laptop into a  second monitor. I still use it at work everyday to get three screens of happiness. However , what to do at home? I’ve only got two screens  at home and frankly it makes me sad. As far as I’m concerned three monitors is the holy grail of productivity.

My old Compaq iPAQ was sitting next to my laptop looking at me all forlorn - I haven’t used it much lately, now my phone does everything it used to do, so it was just sitting there using electricity. I thought to my self

“How cool would it be if I could use that as a third monitor”

Yes, this is the sort of thing I think about. Since I only use the third monitor for Getting Things Done, such as my scheduling sheet and my time tracking, the smaller screen would actually do the job. Even Synergy would have done the job, as it would have allowed me to easily edit a Pocket Excel document, and 88 Miles works on PocketPC. Alas, Synergy for PocketPC doesn’t exist (no suprises there).

What does exist though, is SideWindow by Innobec. Seriously, they have created a piece of software that, just like MaxiVista allows you to extend your desktop to another computer - except this time the other computer is you PocketPC! Crazyness.

Shows my PocketPC displaying the extension of my laptop desktop My PocketPC displaying 88 Miles via SideWindow
Now unfortunately my PocketPC doesn’t have WiFi, only Bluetooth so the connection is a little slow (and flaky), but it works! If does discconect for no reason occasionally, but I suspect this is more to do with my dodgy networking hack (I connect my iPAQ to my server via bluetooth and BlueZ, which in turn connects to my laptop via WiFi.).

SideWindow has a screen rotate feature built in, so you can run your new screen at a more natural landscape layout, rather than the less then useful portrait. Obviously 320×240 pixels isn’t really much real estate to gain, so the clever people at Innobec allow you to scale the window to fit more in (right up to 1024×768!) The more you scale the less readable things get - I’ve found 640×480 is a nice comprimise between readability and speed, however if you have a fast network connection you might get away with a higher resolutions.

It’s $15 to buy, and probably isn’t for everyone, but it’s still on of those “Cool” things to show off to your geek friends.