A Programming Primer for Counting and Other Unconventional Tasks

Reading Resources

This is a list of useful and free online resources for Ruby, programming, and other topics deserving of thoughtful examination.

I'm working on a more interactive, intuitive way to present the large list of material I've bookmarked. For now, here is a short list of recommended reading.

Ruby Programming

This comprehensive reference, known as the "The Pickaxe", is considered one of the quintessential Ruby books. The first edition of the Pickaxe is available for free and covers an old version of Ruby but most of the syntax and lessons still apply. The updated version of the Pickaxe is available for purchase.
This is the Ruby version of Zed Shaw's well-regarded Learn Python the Hard Way. The material is divided into 53 short exercises, with an emphasis on writing out the code to understand it. There are also a number of "extra credit" problems to try out.
This quirky tutorial to Ruby was written and illustrated by the prolific – and anonymous – writer, why_the_lucky_stiff. It used to be hosted on his website until he essentially disappeared from the Internet in 2009.
This friendly guide by Jeremy McAnally covers the Ruby language in a readable, literary format. It is available as an online website and PDF.
This extensive guide was written by Ian McDonald as he campaigned for Ruby to be adopted by Google. It's written for those who are already familiar with scripting languages (presumably, Ruby's rivals) but contains wise guidelines on writing legible code.
The PLEAC project attempts to recreate the recipes for the Perl Cookbook in other languages. There isn't much in the way of explanation, but it's a good resource for learning-by-example, with the bonus of finding useful recipes.
This well-regarded book in the O'Reilly series is generously offered by Gregory E. Brown as a free PDF. It covers the idioms and conventions specific to Ruby that allow programmers to use the language to its full potential.
Yehuda Katz, one of the most recognized names among Ruby developers, writes an explainer of one of Ruby's most notable features, meta-programming.
An easy way to try basic Ruby in your browser without having to install anything. The site contains a 15 minute interactive tutorial.
If you're new to programming, developing a Ruby on Rails application may be a little out of your league. But Michael Hartl's free and comprehensive walkthrough aims to get you from "zero to deploy." He also offers his book in PDF form with screencasts for purchase.

Other Languages

Perhaps the most fun, interactive way to learn code. It's coding-made-social, with tools for tracking your progress and sharing with friends.
Video tutorials on programming – along with thousands of videos on a wide breadth of other academic topics.
A community programming site built to store scrapers and the data they collect. A wonderful resource for seeing how others scrape.
The superlative tricks-and-tips-for-yourlife blog ran a four-part series on how to program in JavaScript. It covers the basics well and also has the added benefit of good commenting threads. A Lifehacker reader also helpfully converted the guide into a PDF.
A satirical guide on the many ways that code can be terrible. Sometimes the best way to learn something is to learn how not to do it.
Zed Shaw's Learn Python the Hard Way inspired me to write a from-zero-to-something guide for Ruby. I had also intended to do one for regular expressions but it looks like Zed is already on it.
This is one of the bibles of fundamental computer science. It's not the easiest reading for beginners, but it's considered required reading for anyone who wants to get deep into the core of programming languages.
This understated book provides a more narrative and thoughtful approach to teaching computer science. One of its best features is the ability to try and test JavaScript right in the browser as you read the lesson.
The official instruction manuals for languages are usually dry, if not impenetrable, which is why there's a good market for programming tutorials. However, the interactive and eloquent documentation for CoffeeScript – a "little language" for producing JavaScript – is the high water mark for educational materials, period. Both the documentation and the language were written by Jeremy Ashkenas.
This excellent news-oriented blog's motto is "SHOW YOUR WORK," and is worth following both for its commitment to transparency and for its detailed examples of applied code.
My colleagues and I at ProPublica keep a blog explaining the programming and data-related work we do.

General Data and Technical Topics

A beautifully-illustrated slideshow-like presentation on the subject of algorithms, one of the areas of thought that separate elite programmers from the rest. Laypersons will be able to understand it and computer science students will find it to be a fresh take.
This well-written and well-illustrated guide attempts to walk you through a classic algorithm. Even if you don't understand the code, you'll learn a lot about the critical thought process used to (efficiently) solve what seems like a simple problem.
This comprehensive textbook contains material that was developed for Stanford's "Web Mining" course. It's not code heavy, but the theoretical math is approachable. Worth buying, but the authors have generously made it available as a free download.

General Reading

This purpose of this book is not to cover the academic details of statistics, but rather "to show techniques of quantitative analysis in action on problems of politics and policy." Its author, Edward Tufte, is rightly recognized as a pioneer of data visualization. Sadly, Tufte's lessons on truthful, data-rich graphics are often ignored by those in politics and policy. And this is unfortunately also the case with the insightful ideas presented in DAPP, though it was originally published in 1974.
Bret Thomas, formerly a Human Interface Inventor at Apple, brilliantly tackles the question "How can we design systems when we don't know what we're doing?" with an interactive explainer that, in my opinion, is the best example I have ever seen of using the potential of the Web to explain...anything. In this case, the topic is the fundamental concepts and philosophy behind engineering and design. Inspiring material and execution.
After telling Harvard med school grads that they "will fast realize that you are still just part of a machine," Atul Gawande describes how they can make real impact in their profession. The speech is similar to the closing chapter in his book, "Better."
Nate Silver is one of the most successful journalists at consistently and effectively combining data with interesting narratives and analysis.