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.
Rake Routes is a new blog I’ve started on the fundamentals of Ruby and Rails development. It’s less than a month old, but has already gathered some great press and community support.
8,455 vistors as of March 3, 2012 since I launched it on February 5, 2012 (and only 1.9% from search engine traffic).
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.
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 spaghetti 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.
You can now see my handiwork by going to any digital collection and clicking “View in 3D” to open a modal window I designed to house their flash photo browser.
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.
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.
Just like Rails (not surprisingly) the community around Ruby is the most amazing thing about the language. Yes Ruby is beautiful and expressive, but the community of professional support and camaraderie is really where the magic of Ruby happens.
The introduction of jQuery at around the same time made client-side programming too enticing not to dive into. So dive I did, and I got pretty good at writing gracefully degrading client-side logic.
Since Rails switched to CoffeeScript in 2011 I’ve been using that more and more for those quick snippets of jQuery interaction. I haven’t yet used it to make anything large or complex, but I like what I see so far.
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 pragprog book on TextMate and made myself an expert. Using TextMate I can slice through text files, HTML, JQuery, and ruby like butter. Even years later it’s still my goto editor that looks gorgeous and gets out of my way.
I was sold the first time I ran
git push heroku masterI 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.
Cedar stack’s support for custom process management has made it easier than ever to build and deploy more complex Rails apps with background processing and other interesting things happening alongside the web application.
When my Rails apps need to do some background processing, I turn to resque or delayed job to keep my user experience snappy. Good use cases are sending emails, calling out to slow third party APIs, or doing any kind of intensive processing. The key is: don’t block the controller from responding to the browser.
SQL queries were one of the areas of programming I focused on the most while learning to program professionally. Prior to Rails I developed PHP web applications without an ORM, so I’m quite comfortable getting down into the database level and pulling together some SQL.
When I switched from python to Ruby I immediately started searching for a replacement to the excellent virtualenv (python environment manager). Thank goodness I quickly found rvm and it was exactly what I was hoping for. Gem and Ruby version management wrapped up in an easy to use system.
Blog post at xyzzyb.com: rvm > virtualenv
I’m that guy who’s read multiple git books cover to cover. If someone is having trouble with git then I’m usually the fixer.
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.
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.
The twitter bootstrap is awesome. 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.
The 2.x release has proven to be a great update to the original and all the supporting sites that are popping up are contributing some great stuff. Like the theme you are looking at now, for example.
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.
Its founder and main developer, Gabriel Weinberg, is also surprisingly approachable and happy to discuss new features or ideas for the engine.
Experiment with CoffeeScript in a friendly and easy to use environment.
The PeriodicTable Ruby gem.
calculates winning trick probabilities in a simplified version of spades
An extremely simple Rails app to demo serving twilio responses.
Testing / demoing various github workflows
A collection of CoffeeScript scripts to serve as examples and tutorials for CoffeeScript Cafe.
Stephen Ball, Rails Programmer
A repository of solutions (or attempts at solutions) for various code puzzles.
python script to output your mac’s current battery level
A Ruby interface to the SalesForce SOAP API using the Savon library.
Simply track upcoming projects or events.
A simple data validation class for PHP
I follow dozens of news feeds and programming blogs to keep current.
I’m addicted to these books. I bought an iPad in large part because of its capabilities as an epub reader so I could have my pragprog collection (34 books and counting!) wherever I go.
In addition to books, their monthly magazine is a wonderful resource.
Sure, github is great for hosting git repos. But it’s biggest benefit is the social coding community that it’s managed to build. I learn a lot by browsing through code the projects that I use; github makes it so easy.
This is a relatively new podcast — started in May 2011 — but it’s proven to be a superb resource. Every week we get to hear a round table discussion of actual programming techniques and concepts from some of the top names in Ruby.
I can’t fully describe how invaluable this website has been to me. For learning a new tool or technique, nothing beats following along with Bates’ informative and insightful screencasts. Every new video seems to hit something that I was just talking about looking into with a co-worker.
Watching Gary Bernhardt code is an amazing experience. Behavior driven development, masterful vim manipulation, and interesting discussion. These videos are like hanging out with a really, really talented programmer who’s just showing you a trick or two.
To learn how to develop software nothing beats actually creating software. I firmly believe that there is an amount of mental muscle memory that goes along with being a great programmer.
Reading about a good technique? Ok if you’re just about to use it. Reading about a good technique, writing a script around it, breaking it and seeing how it all fits together? Now you’ve built up some context memory around that technique and will be more ready to recognize when it can and should be applied.
One of my favorite hobby programming assignments is to improve DuckDuckGo. Yegg has built a system for enhancement that is surprisingly approachable and well suited for hacking on simple and fun features.