Ignoring Cyber-Monday With Free Books

Put your credit card back in your wallet — I’ve found some really good software development books that are available for free, and will keep you busy until the end of the year, at least.

Image of book via http://natureofcode.com/book/

Image via http://natureofcode.com/book/

The Nature of Code by Daniel Shiffman

Daniel Shiffman is a professor at NYU’s ITP program, where he teaches “a course entitled Introduction to Computational Media. In this course, the students learn the basics of programming (variables, conditionals, loops, objects, arrays) as well as a survey of applications related to making interactive projects (images, pixels, computer vision, networking, data, 3D).”

So, on the one hand, this is a book targeting beginners (or near beginners..) but quickly dives into topics like working with particle systems, physics libraries, and neural networks. I’ve been writing code for a living for a long time now, and I learned a ton from reading this book. It’s available for purchase in either PDF, or print formats, but it’s far more useful in its online form.

All the code in the book is written using the Java-based Processing language, for which there’s also a JavaScript implementation, Processing.js, and all of his examples run live in the browser — much more convenient than needing to fire up an external development environment to play with things.

Online version (and links to paid versions) available here.

The Mature Optimization Handbook by Carlos Bueno

Carlos Bueno is an engineer at Facebook, and has written a book that came out of an internal training class he taught there. Thorough, and brings an interesting spin on the idea of when it’s even worth your time to optimize heavily:

“Unlike testing or bug-fixing, performance work can often be deferred until just before or even after the program has shipped. In my experience, it makes most sense on mature systems whose architectures have settled down. New code is almost by definition slow code, but it’s also likely to be ripped out and replaced as a young program slouches towards beta-test. Unless your optimizations are going to stick around long enough to pay for the time you spend making them, plus the opportunity cost of not doing something else, it’s a net loss.”

Available in ePub, Mobi, and PDF formats here.

Mathematics for Computer Science, by Lehman, Leighton, and Meyer

876 page text from the 6.042 class at MIT’s Computer Science and Artificial Intelligence Lab. Even if you already know all of what’s in this book (hint: you probably don’t), it’s an amazing reference. If you’re going to learn something from the book, a little poking around on the CSAIL website will lead you to the problem sets that are used in that class.

PDF format available here.

The Motherlode

Victor Felder maintains a master list of freely available programming books on his github site.

The Oculus Rift Is Pretty Awesome

Occulus Rift Dev Kit Photo

Image via http://www.theverge.com/2013/3/19/4122388/can-oculus-rift-save-virtual-reality

The year is 1995, the climax of the “virtual reality” fad. Virtual reality was about to become a big industry, or something. You could even get a degree in it.

Except… where is it? It’s in movies, some pretty bad movies, at least. It’s at the mall, though it’s pretty awkward. You can buy it at Fry’s Electronics, but it’s quite expensive, very slow, and there are only a handful of games that support it. Virtual reality never really happened all the way, at least not like it was portrayed in science fiction. It had arrived, but only virtually, not in substance.

Fast forward almost twenty years. That should be enough time to rinse away the bad taste of Lawnmower Man.

5(ish) Python Modules You Didn’t Know You Wanted

Image of graffiti wall by Jules Antonio on Flickr

There are a lot of things I like about programming in Python, but one of my favorites is how well Python allows code reuse. Between the excellent import semantics and the outrageous level of introspection in Python, just about any piece of Python code (assuming it’s generic enough) can be reused across a wide range of projects. However, since you can only reuse code that you know about, I thought I’d share a few of my favorite little Python utility modules.

These are mostly things that I’ve written (often more than once) myself, but never managed to generify, package and release. Fortunately, other people out in the Python community are more disciplined than myself.

Here we go…


jQuery Ajax Blobs and Array Buffers

Image of aliens

A big part of what makes jQuery a regular part of so many web projects is the clean interface it offers us for a number of sometimes messy built-in aspects of javascript. The most obvious is the DOM interface; and in second place, jquery ajax and its various shorthand methods. Abstracting away the difference between ActiveXObject and XMLHttpRequest is one of the most obvious benefits – but even if you don’t need to worry about supporting old versions of IE, you might well enjoy the clean, object-based, promise-returning interface that jquery ajax offers.

It’s a shame then, that if you want to take advantage of XMLHttpRequest Level 2 features like Blob and ArrayBuffer uploading/downloading, you have to fall back to the standard javascript api.

Let’s fix that, shall we?