About
Peter Hollows
I’ve been working with Rails for close to five years, for the last three I’ve been freelancing.
I have experience with many different setups and problems I’ve solved ranged from scaling and architecture to UI, GIS and video. I’m passionate about this work and am involved with many social code projects.
What do I want? To make as big a dent as possible, to build work-of-art state-of-art web-based engines for people with good ideas.
I maintain a personal blog at peterhollows.com.
Current Standing
I scored in the top 3% in the oDesk Rails test and in the top 20% of providers in the Elance Rails test. You can view my oDesk profile here.
Availability
I’m currently in Christchurch, New Zealand, (GMT+12) and is available to work in New Zealand or Australia.
Current Research & Writing
- Recommendation systems and other social math
- Data mining and decision software
- iPhone GIS development
- Open source projects at GitHub
Skills
I’m quite familiar with Rails and the Rails framework internals. I’ve authored plugins and work generatively where it saves time. I maintain a Rails template repository that I fork from for new projects to get a head start and have recently become familiar with Rails middleware techniques and micro-frameworks. I love handling information in Ruby and enjoy creating bindings to online services. Some of the services I’ve integrated Ruby apps with are:
- Google Maps
- Flickr
- AdBrite, AdSense and the Clickbank referrals API
- Payment gateways
- Social networks
- FLV media services
- Mobile SMS & MMS
Approach
I’m used to thinking development tasks through properly and have a selective focus for relevance. I’m no stranger to the scientific approach and enjoy problem-solving through the use of experiments and testing. I can break out the geometry (I wrote my first 3D projects before OpenGL) or mathematics and am becoming increasingly obsessed with web intelligence and what can be done with extrapolation and inferrence.
Preference
I often work with the following technologies. I remain open-minded as the best solution can often change in weeks but these are my favorites.
| Aspect |
Library |
| model testing |
RSpec |
| geocoding |
Geokit (with modifications) |
| geolocation |
PostGIS |
| search |
Sphinx & ThinkingSphinx (or SphinxThinks) |
| queuing |
AMQP, RabbitMQ |
| smtp |
GMail/other with stunnel or ssmtp |
| sms |
my Clickatell Ruby API |
| auth |
Authlogic or my auth middleware |
| rbac |
my auth middleware |
| css reset |
Blueprint CSS |
| javascript |
non-obtrusive jQuery |
| AJAX request format |
json |
| web tier |
Apache/Nginx w. Passenger |
| database |
MySQL, PostgreSQL |
| server distro |
Gentoo |
| local distro |
OS X Leopard |
| editor |
TextMate, vim |
| control |
Git, Nub |
| deployment |
Capistrano (an my recipes) |
| tracking |
Pivotal Tracker |
| team management |
Scrum |
| team comms |
iChat video, IRC, phone |
| reporting |
Phonecalls, pretty PDFs, Basecamp |
| monitoring |
God |
Some of my blog posts
Projects almost never start with an empty database. There are many takes on how this initial data, or data processing tasks, should live in your application. This approach keeps data out of your migrations and remains flexible enough to run with all the methods available to a standard migration, plus some extras.
Initial application data, a...
A simple approach to generating RSS feeds in Ruby on Rails. Our approach keeps your code DRY and uses a RESTful approach for minimum efforts. As a bonus, the W3C RSS validator has no complaints with the result.
If you're wanting more than...
I’ve been hunting for something like Rails’ number_to_currency for Javascript that’d give me a delimited output with precision in cents.
Most of what I found didn't...
In New Zealand, telcos don’t expose their directories sensibly to the public, so if your script needs to look up numbers for a given name there is no RESTful API. Instead, these companies provide us the data in a challenging HTML format; this is because they are nice and want to give us a fun scripting project.
Web-scraping means parsing ...