Skip to content

Instantly share code, notes, and snippets.


Jon Rowe JonRowe

View GitHub Profile
JonRowe / gist:c0861d56c69f2c8ab5d61988460dee32
Last active Mar 3, 2020 — forked from corbanb/gist:76d0658493e93830af48
Setting up PostGIS for Timezone Lookup
View gist:c0861d56c69f2c8ab5d61988460dee32

Forked from: corbanb/gist:76d0658493e93830af48 which borrowed heavily from to make this geared towards mac users, which has been updated.

Step 1: Install Postgresql & Postgis + dependencies

$ psql -U <user> -d template_postgis  
$ template_postgis=> select postgis_lib_version(); should return installed version!  
$ template_postgis=> \d+tz_world  

Hi, I'm Jon and I’m a freelance / contract Ruby / RoR developer based in Sydney;

I've been working with Ruby professionally for around 10 years, I consider myself a specialist in test driven development with Ruby, using Rails for customer facing sites (e.g. if it serves HTML). I'm one of the current maintainers of RSpec so as you can appreciate I'm a huge fan of using it for both unit and integration testing.

How can I help you? I have a lot of experience building prototype apps, polishing existing products, improving site performance, reviewing and improving code quality or improving test setups. Our work together could be a specific project or a time based contract. I typically work with the server side

mkdir bash-fix
cd bash-fix
curl | tar zxf -
cd bash-92/bash-3.2
curl | patch -p0
curl | patch -p0
cd ..
sudo cp /bin/bash /bin/bash.old
sudo cp /bin/sh /bin/sh.old
JonRowe / .rspec
Last active Feb 11, 2016
RubyConfAU16 Code
View .rspec
-r ./talk_helper
JonRowe / any_size_benchmark.rb
Created Jan 16, 2014
TIL that `empty?` is still significantly faster than `any?` despite `any?` being lazy.
View any_size_benchmark.rb
require 'benchmark'
array = 10000000.times.to_a
puts "Any"
puts Benchmark.measure { 1000.times { array.any? } }
puts "Empty"
puts Benchmark.measure { 1000.times { array.empty? } }

Most active GitHub users (

The count of contributions (summary of Pull Requests, opened issues and commits) to public repos at from Sat, 17 Nov 2012 22:58:25 GMT till Sun, 17 Nov 2013 22:58:25 GMT.

Only first 1000 GitHub users according to the count of followers are taken. This is because of limitations of GitHub search. Sorting algo in pseudocode:

  .filter((user) -> user.followers > 30)
JonRowe /
Created Oct 11, 2013
Whilst has good ideas, it's examples are flawed.

Use contexts

Contexts are a powerful method to make your tests clear and well organized. In the long term this practice will keep tests easy to read.

I agree with the premise, and I agree that this:

it 'has 200 status code if logged in' do
View all_any_shortcircuit
1.9.3p448 :002 > a = [-> { puts 1; true }, -> { puts 2; false}, -> { puts 3; false }]
=> [#<Proc:0x007fe5c41a8f68@(irb):2 (lambda)>, #<Proc:0x007fe5c41a8f18@(irb):2 (lambda)>, #<Proc:0x007fe5c41a8ef0@(irb):2 (lambda)>]
1.9.3p448 :003 > a.all?(&:call)
=> false
1.9.3p448 :004 > a = [-> { puts 1; false }, -> { puts 2; true}, -> { puts 3; false }]
=> [#<Proc:0x007fe5c4276620@(irb):4 (lambda)>, #<Proc:0x007fe5c42765d0@(irb):4 (lambda)>, #<Proc:0x007fe5c42765a8@(irb):4 (lambda)>]
1.9.3p448 :005 > a.any?(&:call)
JonRowe / benchmark.rb
Created Aug 20, 2013
Hash key lookup performance vs local variable.
View benchmark.rb
require 'benchmark'
require 'stringio'
sizes = [10,100,1000,10000]
def measure(&block)
puts Benchmark.measure { 100000.times(&block) }
sizes.each do |size|
JonRowe / capistrano.rb
Created Aug 18, 2013
Show broken sudo support in sprinkle pre/post hooks.
View capistrano.rb
set :use_sudo, false
set :ssh_options, forward_agent: true
role :app, ENV['hostname'], primary: true
default_run_options[:pty] = true