General Magic was the company that created the Magic Cap operating system and hand-held devices including the Sony Magic Link and Motorola Envoy. Many concepts from Magic Cap went on to new lives in later products like the Danger Hiptop, Apple iPhone, and Google Android.

Before General Magic became a company in 1990, it was an internal project at Apple called “Paradigm.” One day while I was working at General Magic, the marketing department was throwing away old stuff, so as the self-appointed, unofficial General Magic historian, I dug through their trash and discovered this: a concept book from the Paradigm days.

I’ve been using Kinesis keyboards since 1996, and from the outside, it looks like nothing much has changed since my first one. On the plus side, Kinesis didn’t screw up a good thing. On the better side, they have made continual improvements over the years to make their current model, the Advantage2, a nearly-perfect mechanical keyboard.

What you see above is not stock from the factory! I took a black Advantage2 keyboard and painted it, plus switched the keycaps to Mito Canvas XDA. You can review my earlier posts on how to paint your keyboard and my earliest Kinesis review. This paint job used Rust-Oleum color-shift paint in “Galaxy Blue.”

Nylon is an amazing material for 3D printing, producing extremely tough parts. However it can be difficult to print well, so this article describes my experience getting to successful prints with Taulman Bridge and Alloy 910 with a LulzBot Taz 6 and PEI bed. These instructions use Cura slicing software, starting from the LulzBot preset for Bridge Nylon. Many thanks to Tom at Taulman 3D for his assistance during this process.

Now for sale: my book for programmers entering industry, the New Programmer’s Survival Manual, is available in ebook and paper form. I expect readers of this book to fall into a couple categories: College students taking Computer Science classes and wondering, “is this what programming is like in the real world?” (Short answer: no.) College grads already in industry, who have noticed first-hand that the answer to the first question is “no,” trying to get their heads around the disparity.

This article is written with considerable snark--put on your flameproof suit if needed. I'm not actually a jerk when interviewing people, but I do get frustrated when candidates fail to do basic preparation. If you're unsure about how to prepare for a programming interview, read on...

I know this might come as a shock to you, but most programming job applicants suck. I’ve interviewed my fair share this month, and it’ll be a lot easier for all of us if I tell you upfront what I’m looking for.

As a hiring manager, my job is to make sure you can do the job you’re applying for. For programming that means you need to be able to program. So when I whip out a laptop in our round-one interview and ask you to write some code, try to hide your terrified expression.

Operating System: Magic Cap 1.0, later 1.5. Pros: ARDIS radio modem, sturdy clamshell design, two PC Card slots. Cons: Price of ARDIS radio service, non-backlit screen, slow-mo user experience. History Motorola products from the 90’s were built to last, and the Envoy was no exception. It was the StarTAC of Magic Cap devices–flip design and indestructible. The first thing you’d notice is the antenna, which is exactly what the marketing folks wanted.
Here are slides from my presentation at the Boulder/Denver Ruby Group on “Simple MapReduce with Ruby and Rinda.” This is much of the same material as my article on the topic, but it focuses on the high points and perhaps better illustrates what’s going on. If you were at the meeting and have comments on the presentation, or have time to play with MapReduce, shoot me an email and let me know!

Here’s a simple version of the MapReduce framework presented in the now-famous Google paper by Dean and Ghemawat. My version of MapReduce is not intended as a usable high-performance framework, but rather as a learning tool. My goal is twofold: first, to learn to write algorithms in distributed/parallel MapReduce style. Second, to see how simply these concepts can be expressed in Ruby.

I use the Rinda framework to distribute tasks to remote workers. This simplifies a great deal of the MapReduce grunt work. The map and reduce code, along with data, is marshaled and sent over the network transparently. Creating a MapReduce job is as easy as creating an object, assigning lambdas for map and reduce, assigning data, then telling it to run.

Here are slides from my presentation at the Boulder/Denver Ruby Group last night. It’s Ruby-focused “Lessons Learned” based on the project I’ve been leading this year, the software for Spectra Logic’s new disk arrays. Topics covered include embedded vs. Internet web servers, interfacing with hardware and 3rd party tools, text processing, and a lot of Ruby on Windows stuff.