I’m currently making my way through Charles Petzold’s book The Annotated Turing. Petzold’s book, Code: The Hidden Language of Computer Hardware, is a must read for any software developer and is my favorite computer-related book. The Annotated Turing is proving to be just as interesting.
I’m only halfway through the book so I can’t provide a complete review. The first few chapters discuss Alan Turing’s educational background along with some introductory information on computability and number theory.
Petzold then breaks down Turing’s seminal paper, On Computable Numbers, With an Application to the Entscheidungsproblem. I started this book thinking much of the information would be over my head, but Petzold does a great job of breaking things down and providing easy-to-understand explanations.
Along with Petzold’s commentary, I decided it wold be helpful to create a Turing Machine simulator that I could use as I read through the book. The source code can be found here and a running demo can be found here. The demo includes some pre-configured Turing machine samples from the book, but allows you to define your own machine. Since I’m only halfway through the book, the simulator likely does not simulate the Universal Turing Machine that Turing ultimately designed. I’m hoping to continue updating the code as I finish the rest of the book.
So go out and grab the book, test out different machines on the simulator (or better yet, write your own simulator) and see how the computing age began. It’s a great way to learn about number theory, state machines, and is also a great reminder that we are all standing on the shoulders of giants.
Ruby-throated hummingbird, photo by Phil Brown
Nobody likes waiting for a web page to load. Pity, then, the Ruby on Rails developer, proud of the the development platform’s famous efficiency of code, combating the slanderous claims of a slow production environment, and then condemned to watch the browser bar spinning and spinning for the 500th time during today’s coding session. Because Rails requests in the default development environment are s l o w.
Why? By default, every web page request is verifying and recompiling every referenced asset — every Coffeescript, Sass, and Less file. Ajax requests with responses that don’t include the application layout (and its application.js and application.css manifest file burdens), are delightfully zippy, but loading a simple home page? Over and over throughout the course of the day? Goodbye delight and efficiency.
Until you make one simple change in development.rb: (more…)
As mentioned here and here on the A&L blog, Audiobus, an app for live app-to-app audio streaming on iOS has launched today with about a dozen supported apps, with more to come. This app and SDK look to be a game changer for audio production on iOS devices. The developers have shown previews of multitrack recording which will make it even better.
Buy the universal app on the App Store for $9.99 or check out the Audibus site for more demo videos and details on supported apps.
Marin Usalj has written a collection of extensions for the NSNumber, NSArray, NSSet, NSString, and NSDictionary classes that brings many of the commonly used methods from their Ruby counterparts such as each or times. If you’re familiar with Ruby and doing some iOS or Mac development these extensions can definitely save you some work.
Check out the samples below, pulled from the ObjectiveSugar ReadMe and add the code to your project using Cocoapods.
User Interface from ‘Prometheus’
Nathan Shedroff (from the MBA in Design Strategy program at the California College of the Arts) and Christopher Noessel from the well-known interaction design firm Cooper have recently released a new book analyzing the user interfaces shown in science fiction, as well as an accompanying blog to cover material that wouldn’t fit in the book for space reasons, or came out after the release of the book.
I’ve been following the blog for a few weeks now, and the more material they put up, the more I think that it’s important that these kinds of discussions are put in front of the eyes of as many software development practitioners as possible, for the reasons they put forth themselves:
Being an interaction designer colors how you watch science fiction. Of course you’re enjoying all of the hyperspacey, laser-flinging, computer-hacking action like everyone else, but you can’t help but evaluate the interfaces when they appear. You are curious if they’ll disable the tractor beam in time, but you also find yourself wondering, “Could it really work that way? Should it work that way? How could it work better? And, of course, Can I get the interfaces I design in my own work to be this cool or even cooler?”
We asked ourselves these questions with each new TV show and each new film we watched, and we realized that for every eye-roll-worthy moment of technological stupidity, there are genuine lessons to be learned—practical lessons to be drawn from the very public, almost outsider-art interfaces that appear in the more than 100 years of sci-fi cinema and television. Then we wondered what we would learn from looking at not just one or even a dozen of them but as many as we could.
As developers, it’s important that we both find ways to expand the potential set of problems that we can address with our software, while making sure that those solutions are based in what researchers in the interaction design and HCI fields instead of just aping the ideas created by Hollywood production designers.
The blog is at http://www.scifiinterfaces.com/
The book (either paperback and digital bundled, or digital only) can be purchased from the publisher, Rosenfeld Media.