Who is Paul Gorman?
August 11th, 2009

I came across a book called “How To Out-Sell, Out-Market, Out-Promote, Out-Advertise Everyone Else You Compete Against… Before They Ever Wake Up To What Happened” by Paul Gorman (ISBN 0953266605, first published 1998). It has some fantastic ideas about marketing… but there doesn’t seem to be any information about the book or the author anywhere on the web, apart from the authors own website.
Can anyone vouch for Paul Gorman? Despite offering to privately consult for £3000/hr, and selling various marketing courses for similar sums on his website paulgorman.com, there seems to be almost no information about who this guy is anywhere on the web. I found the book on amazon but it is ‘currently unavailable’. 3 of the 4 people to have reviewed the book have written no other book reviews on amazon.
I suppose I’m trying to work out if this book is just a really well kept secret. Has anyone else read the book or heard of the author? Any comments welcome!
Capistrano task to copy production database into your local development database
December 15th, 2008
I frequently need to copy my production database in to my local development environment so I can work with the same data as on the live site. I’ve written 3 capistrano tasks that make this a lot easier: backup, import_backup and backup_and_import.
‘backup’ runs mysqldump on the production server using the production username and password supplied in your database.yaml file, before zipping the file and downloading it to a local directory called ‘backups’.
‘import_backup’ imports the latest backup file in the ‘backups’ folder into your local development database, using the ‘development’ username and password in database.yml.
‘backup_and_import’ performs the above 2 commands one after the other. If you want to try it out, copy the code below into your deploy.rb file, then try ‘cap backup_and_import’ from your root rails folder.
require 'yaml'
desc "Copy the remote production database to the local development database"
task :backup, :roles => :db, :only => { :primary => true } do
filename = "#{application}.dump.#{Time.now.to_i}.sql.bz2"
file = "/tmp/#{filename}"
on_rollback { delete file }
db = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), 'database.yml'))).result)['production']
run "mysqldump -u #{db['username']} --password=#{db['password']} #{db['database']} | bzip2 -c > #{file}" do |ch, stream, out|
puts out
end
`mkdir -p #{File.dirname(__FILE__)}/../backups/`
get file, "backups/#{filename}"
run "rm #{file}"
end
desc "Copy the latest backup to the local development database"
task :import_backup do
filename = `ls -tr backups | tail -n 1`.chomp
if filename.empty?
logger.important "No backups found"
else
ddb = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), 'database.yml'))).result)['development']
logger.debug "Loading backups/#{filename} into local development database"
`bzip2 -cd backups/#{filename} | mysql -u #{ddb['username']} --password=#{ddb['password']} #{ddb['database']}`
logger.debug "command finished"
end
end
desc "Backup the remote production database and import it to the local development database"
task :backup_and_import do
backup
import_backup
end
e-resistible Online Takeaways
December 4th, 2008
e-resistible was programmed by me from scratch in Ruby on Rails. You can order takeaway online as well as searching for specific food types on your area, such as chinese takeaway in london.
The site has about 150 restaurants so far but is growing by the day. It was recently featured in The Independent. This is probably the most successful website I’ve put together, but also the most challenging from a code point of view.
I hope to go into some more details of the challenges I faced and how they were overcome in future blogs.
Rails UTF-8 problem
July 9th, 2008
Git submodule conflicts
June 5th, 2008
If you ever get this message:
$ git pull fatal: cannot merge modes? Merge with strategy recursive failed.
It's because there are conflicting submodules - you need to make sure your local submodules match those of the origin before pulling.
famfamfam icon set for OmniGraffle
April 4th, 2008
Git on Windows
March 19th, 2008
If you want to use git with windows, here's what you need to do. This is assuming you'll be using the windows command prompt to enter commands.
- Go to http://code.google.com/p/msysgit/downloads/list and download the latest Windows build of Git (at the time of writing the latest one is Git-preview20080301.exe)
- Double click the install file - make sure the 'Run git from the windows command prompt' option is selected
- Finish the installation and open a command prompt
- To clone a remote repository, type git clone ssh://git_username@git_host/path/to/repos local_repos_dir
Download MMS file
February 11th, 2008
Mac Terminal Shortcuts
February 6th, 2008
Here are some useful shortcuts for getting around the mac terminal. The first table applies to the Leopard terminal.
| Key | Description |
|---|---|
| ⌘ + N | Create a new shell window |
| ⌘ + T | Create a new shell tab |
| ⌘ + ` | Next Terminal window |
| ⌘ + ~ | Previous Terminal window |
| ⌘ + } | Next Terminal tab |
| ⌘ + { | Previous Terminal tab |
| ⌘ + W | Close window or tab |
Most consoles should support these shortcuts:
| Key | Description |
|---|---|
| Ctrl-A | Move the cursor to the beginning of the command line. |
| Ctrl-B | Move the cursor back one character. |
| Ctrl-C | Break out of the command without any change to the settings. |
| Ctrl-D | Delete the character at the cursor. |
| Ctrl-E | Move the cursor to the end of the command line. |
| Ctrl-F | Move the cursor forward one character. |
| Ctrl-I | Recall a complete command name; same as the Tab key operation. |
| Ctrl-K | Delete all characters from the cursor to the end of the command line |
| Ctrl-L | Redisplay the current command line, same as the Ctrl-R key. |
| Ctrl-N | Recall the most recent command in the command history relative to the current pointer in the history list. |
| Ctrl-P | Recall the oldest command in the command history, beginning with the most recent command. |
| Ctrl-R | Redisplay the current command line; same as Ctrl-L key. |
| Ctrl-T | Transpose the characters to the left of the cursor with the character located at the cursor. |
| Ctrl-U | Delete all characters from the cursor to the beginning of the command line. |
| Ctrl-V | Insert a code to indicate that the immediately following value is a command entry. |
| Ctrl-W | Delete the word to the left of the cursor. |
| Ctrl-X | Delete all characters from the cursor to the beginning of the command line. |
| Ctrl-Y | Recall the most recent entry in the buffer (which contains the last ten items you deleted). |
| Esc-B | Move the cursor back one word. |
| Esc-C | Capitalize the word at the cursor. |
| Esc-D | Delete from the cursor to the end of the word. |
| Esc-F | Move the cursor forward one word. |
| Esc-L | Change the word at the cursor to lowercase. |
| Esc-Q | Insert a code to indicate that the immediately following value is a command entry. |
| Esc-U | Capitalize letters from the cursor to the end of the word. |
| Esc-Y | Recall the next deleted buffer. (Effective after using Ctrl-Y.) |