Stephen Ball front-end rails developer

Avatar_120

I've been programming since I was old enough to learn that the Atari computer plugged into our TV did more than play games. I've been hooked ever since.

Online you'll either see me as XyzzyB or sdball@gmail.com.

rails ruby web framework

I was first introduced to Ruby and Rails back in 2006 with the Pragmatic Programmer's book Agile Web Development with Rails (2nd edition).

I used it for hobby programming off and on until 2010, when I had the opportunity to switch from Django and PHP to using Rails professionally. Coming from the world of Django and its settings.py, the phrase "convention over configuration" was especially refreshing.

One thing about Rails that I've become particularly enamored with is the community. From Ryan Bates' RailsCasts to the Ruby Rogues to expansive Ruby/Rails community on github, I feel like I always have someone to turn to who genuinely wants to help.


Ruby rails and scripts

I've been using ruby for scripts since I got into the language around 2005. Coming from perl, I was pleased to find that a lot of the idioms I was familiar with still worked.

My favorite things about Ruby? It's beautiful, expressive, and the community is fantastic.

JavaScript

In 2007 I watched Douglas Crockford, The JavaScript Programming Language and it single-handedly opened my eyes to the power, functionality, and (yes) beauty of JavaScript.

The introduction of jQuery at around the same time made client-side programming too enticing not to dive into.

MySQL

MySQL was one of the areas of programming I focused on the most while learning to program professionally. Prior to Rails I developed web applications without an ORM, so I'm quite comfortable getting down into the database level and pulling together some SQL.


rvm ruby gem manager

When I switched from to ruby from python fulltime I immediately started searching for a replacement to virtualenv. Thank goodness I quickly found rvm; it was exactly what I was hoping for. Rvm turned out to be an even more capable tool since it managed language versions in addition to project libraries.

More details: View Blog Post

gitx git gui

I use the git command line interface for everything except staging commits; that's where GitX comes in. GitX allows me to easily see the differences that I'm about to commit, stage files or sections of a file, and amend the previous commit.

TextMate text editor

Ah TextMate. For years I was a diehard vim user; then I saw TextMate in a Unit Testing screencast by James Edward Grey back in September 2006. I was immediately hooked.

I dove through Grey's pragmatic programmer's book on TextMate and made myself an expert. I can slice through text files, HTML, JQuery, and ruby like butter. Even years later it's still the editor that looks gorgeous and gets out of my way.


heroku rails application hosting

Ah, Heroku. I was sold the first time I ran

git push heroku master
I had just finished spending four hours trying to get a Rails app to properly deploy to my Dreamhost server space. Ugh! I had the same app deployed to Heroku in just under five minutes.

resque background processing

When my Rails apps need to do some background processing, I turn to resque to keep my user experience snappy. Good examples are sending emails, calling out to slow third party APIs, or doing intensive processing.

Recently Qu has been released. It makes a persuasive argument for its use, but I haven't had the chance to give it a spin.

Rails 3.1 Asset Pipeline sane asset management

The Rails 3.1 asset pipeline is the answer to a problem I didn't quite realize I had: sanely partitioning third-party libraries, images, and styling from those specific to my applications.

I can now drop resources like the twitter bootstrap css I'm using on this site into /vendor then pull them into my application by adding them to the manifest files. Nice!


solarized color scheme

Solarized had me from the first time I visited their site and was greeted by the gorgeously clear color scheme with the tag line "precision colors for machines and people". Exactly what I was hoping for. Switching felt like seeing my code for the first time.

twitter bootstrap css

Rather than spending a lot of time upfront coming up with a design for a new application I can just drop in the bootstrap and get a perfectly nice looking base to build from.

DuckDuckGo search engine

My search engine of choice. Its zero-click results from stack overflow and github work very nicely for doing programming research. Its bang! searches paired with chrome give me hundreds of custom site searches for free.

Gabriel Weinberg, its developer, is also surprisingly approachable and happy to discuss new features or ideas for the engine.


Others

Other languages I've programmed professionally at one time or another.

xyzzyb.com

My blog and primary hobby domain.

Currently xyzzyb.com is a tumblr blog. It has at various points been:

Movie Terminals

This is a fun site where I recreate famous movie terminals in JavaScript. I've currently only implemented the movie terminal from the movie Alien, but I have more planned. Now that I've gotten a basic framework down I should be able to move fairly quickly.

XKCD on DuckDuckGo

After yegg announced the ability to contribute code to DuckDuckGo, I jumped at the opportunity. I saw that pulling in XKCD from its jsonp API was a potential idea: right up my alley! I coded up a quick JavaScript script to plug XKCD into DDG and I was actually the first to have code accepted to the zeroclickinfo-spice repository.

Dice Notation on DuckDuckGo

Another contributor added a DuckDuckGo feature to roll a six sided die. I took it upon myself to improve on that and support Dice Notation; e.g. "roll 4d6 - L" or "roll 2d12 + 4"


IPDatabase manage IP ranges and computers

I created the IPDatabase for the server team in the UNC-Chapel Hill University Library. It replaced an Access Database and added many new features in the process.

  • easily adds new ranges to the database in proper network/netmask notation
  • properly calculates the min/max IPs for a given range
  • shows a "disk fragmentation" style view of all managed IPs
  • full inventory tracking for each computer assigned to a static IP

bandwidth.com

I was Bandwidth.com's primary site admin for about two months in early 2010. Now I've just contributed CSS and JavaScript expertise to the current design.

broadband.com

Broadband.com is the website for the Business Internet department and my primary responsibility at Bandwidth.com.

It's a Rails app that's currently just a brochure site, but for a time ran a resque-backed pricing engine with some interesting JavaScript for dynamic page creation.


Broadband Map

One of my first tasks at Bandwidth.com was to take a look at our over 400,000 points of telecom data and see if it was feasible to plot them on a a Google Map. I went through various experiments such as locking the zoom, using marker manager, and using a custom marker loader before finally hitting on using Google Fusion tables locked down to our Google Premier key to house and serve the data.

The Broadband Map was featured on GigaOM in March 2011.

CoolIris on UNC Digital Collections

For UNC one of my projects was to investigate plugging CoolIris into our digital collections. Happily, I succeeded. The key was to add media rss functionality to ContentDM; no small feat since ContentDM is a complex third party application of nested PHP. While I was at it, I added general RSS functionality to our digital collections since that was a feature that we'd always been interested in delivering.

But get it working I did, you can now see my handiwork by going to a digital collection and clicking "View in 3D" to open a modal window I designed to house their flash photo browser.

sdball on github

DuckDuckGo Karma Widget


@StephenBallNC

xyzzyb on pinboard

If it's online and interesting I bookmark it for later reference. As of October 2011 I've collected 2500+ bookmarks.

Top tags:

Pragmatic Programmers

Title Author
The Pragmatic Programmer by Andy Hunt and Dave Thomas
Advanced Rails Recipes by Mike Clark
Agile Web Development with Rails (3rd edition) by Sam Ruby, Dave Thomas, David Heinemeier Hansson, et al
Agile Web Development with Rails (4th edition) by Sam Ruby
Agile Web Development with Rails (2nd edition) (Paper Book & eBook) by Dave Thomas and David Heinemeier Hansson, with Leon Breedt, Mike Clark, James Duncan Davidson, Justin Gehtland, and Andreas Schwarz
Best of Ruby Quiz by James Edward Gray II
CoffeeScript by Trevor Burnham
Continuous Testing by Ben Rady and Rod Coffin
Data Crunching by Greg Wilson
Design Accessible Web Sites by Jeremy Sydik
Everyday Scripting with Ruby by Brian Marick
FXRuby by Lyle Johnson
iPhone SDK Development by Bill Dudney and Chris Adamson
Land the Tech Job You Love by Andy Lester
Metaprogramming Ruby by Paolo Perrotta
Practical Programming by Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson
Practices of an Agile Developer by Venkat Subramaniam and Andy Hunt
Pragmatic Ajax by Justin Gehtland, Ben Galbraith, and Dion Almaer
Pragmatic Thinking and Learning by Andy Hunt
Pragmatic Version Control Using Git by Travis Swicegood
Pragmatic Version Control using Subversion (2nd edition) by Mike Mason
Programming Clojure by Stuart Halloway
Programming Cocoa with Ruby by Brian Marick
Programming Erlang by Joe Armstrong
Programming Ruby (2nd edition) by Dave Thomas, with Chad Fowler and Andy Hunt
Programming Ruby 1.9 (3rd edition) by Dave Thomas, with Chad Fowler and Andy Hunt
Prototype and script.aculo.us by Christophe Porteneuve
Rails for PHP Developers by Derek DeVries and Mike Naberezny
Rails Recipes by Chad Fowler
Scripted GUI Testing with Ruby by Ian Dees
Ship It! by Jared Richardson, Will Gwaltney, Jr
TextMate by James Edward Gray II
The RSpec Book by David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North
ThoughtWorks Anthology by ThoughtWorks
Web Design for Developers by Brian P. Hogan

O'Reilly

Title Author
Beautiful Data by By Toby Segaran and Jeff Hammerbacher
Cooking for Geeks by Jeff Potter
Designing Interfaces, Second Edition by Jenifer Tidwell
High Performance JavaScript by Nicholas C. Zakas
JavaScript: The Good Parts by Douglas Crockford
jQuery Cookbook Edited by Cody Lindley
Learning the iOS 4 SDK for JavaScript Programmers by Danny Goodman
MongoDB: The Definitive Guide by Kristina Chodorow, Michael Dirolf
RESTful Web Services Cookbook by Subbu Allamaraju
Scaling MongoDB by Kristina Chodorow
SEO Warrior by John I Jerkovic
SQL Cookbook by Anthony Molinaro

Others

Title Author
Delivering Happiness: A Path to Profits, Passion, and Purpose by Tony Hsieh
Distributed Programming with Ruby by Mark Bates
Eloquent Ruby by Russ Olsen
Rework by Jason Fried and David Heinemeier Hansson
A Short History of Nearly Everything by Bill Bryson

And many, many more on a wide variety of topics and varying levels of fiction and non-fiction.