The Virtual Making of Things

I love it when Cory Doctorow tweets out a request for ideas for his next MAKE Magazine column. Near instantly, my Twitter feed is flooded with wonderful and intriguing ideas, each one as fantastic as the next. This time, the ideas caused my brain wheels to spin feverishly, and then I had a light bulb.

I’m a web developer – that is, I spend a good portion of my time writing code. I tap into APIs (Application Programming Interfaces) and manipulate the steady stream of data. Just last month, I wrote some code to interact with the Google Geocoding API and the FCC’s Census API. Enter a US address, get back a census tract (the neighborhood-sized organizational units that the Census Bureau breaks cities and counties into). Developers love taking data and making it do useful things.

Writing code is the virtual making of things.

I’m not talking about making things like in Second Life, where you can write a script to create a virtual object in a virtual world that does virtual things. No, I’m talking about writing code (and building upon others’ open code) that makes something that is useful in the real world. The 50,000+ developers on Apple’s iTunes App Store and Google’s Android Marketplace are makers. Hundreds of thousands of apps that transform our smartphones into task managers, alarm clocks and weight-loss coaches.

Now, imagine a world where everything is programmable. Every physical object has an address and an API. In Doctorow’s Makers, he describes an inventory system where every object in your house is addressable. Take that a step further, where every object in your house is programmable. Not just the obvious, like the refrigerator that orders missing ingredients from your weekly recipes, or the central heating/cooling that adjusts temperature based on who is home and how they’re feeling. I’m talking about MAKE-style innovation – appliances that talk to each other, bookshelves that recommend your next novel, tables and chairs that adjust themselves to the user, gardens that monitor and adjust soil nutrients. If you’re thinking that sounds like artificial intelligence, you’re right – it nearly is. But until AI can achieve sentience (self-awareness and self-control), all of these pseudo-intelligent objects must be pre-programmed by developers.

Such is a world where software developers are the stewards of our daily living. And the makers at MAKE and all around the world are building the hardware to take us there.

Original photo by heipei, via a CC License

Mac-based Web Development

MacBook Pro

A few people have asked me what I use for web development on the Mac. I dabble in PHP, (x)HTML, CSS, and Javascript all day long, as well as poking my head around MySQL databases and checking in and out code from SVN repositories. I do all of this from a 15″ MacBook Pro (late 2007, pre-unibody). Since Mac OS X is UNIX-based, I could do all of this from the command line with vi, nano, svn, mysql, etc.

But being a Mac user, I like to take advantage of the gorgeous graphical user interface. Here are the applications (all free!) that I use for developing on Mac:

  • FTP/SFTP/WebDAV – Cyberduck
    Cyberduck is an open source FTP client that feels right at home on Snow Leopard. There are a ton of features, and seamless integration with many text editors. I’ve heard that Transmit is the best FTP client for Mac, but it’s not free, and Cyberduck has everything I need, including a duck for a Dock icon. Because I need that, you see.
  • Text Editor – Fraise
    Fraise is an open source text editor with syntax highlighting for nearly every language, a snippet library, advanced find and replace (in all open documents, even!),  split window and function bookmarking. If that sounds like a lot, it certainly is, but Fraise still feels like a lightweight, simple text editor. It’s based on the now-defunct Smultron. That’s the wonder of open source – stop developing your project, someone forks it and continues for you!
  • MySQL Editor – Sequel Pro
    HOLY AMAZING COW, Sequel Pro (which is open source and free, despite the name) is a game-changing SQL browser that maintains a list of all your MySQL servers/databases, and allows for extremely fast editing and maintenance. If you hate phpMyAdmin with a passion (as I do), you’ll love Sequel Pro. The only downside is that your webhost must support remote connections to their MySQL servers (GoDaddy doesn’t, for example, but DreamHost does).
  • SVN – svnX
    svnX is probably the best free GUI-based SVN client for Mac right now. It’s interface isn’t extremely intuitive, but it’s definitely better than the alternatives, and a little more fun than remembering all the svn command line options. Make sure to download the latest stable release from Google Code (that’s what I linked), not the developer’s website that shows up top in Google searches.
  • File Comparison – FileMerge
    Apple’s FileMerge is included with Xcode as a part of the Apple Developer Tools. It provides a graphical interface to the traditional diff command, letting you compare two different versions of the same file for changes, as well as file ancestry comparison. Before I discovered FileMerge lying around on my hard drive, I used the open source DiffMerge.
  • Command Line Tools – Terminal
    The built-in terminal emulator in Mac OS X is comparable to similar offerings from Ubuntu and other Linux distros. Nothing special, but you’ll feel right at home if you’re familiar with *nix systems. I use Terminal for SSH, SCP, and scripting tedious tasks, like backups or disabling comments across an entire WordPress network.

Photo by Peter Fuchs, via a CC License