Coding Horror

programming and human factors

Reading with Edward Tufte

Today, a group of thirteen Vertigo folks, including myself, attended Edware Tufte's one-day course on Presenting Data and Information in San Francisco. The course is $360 for the day, but that includes all four of Tufte's books, which are currently going for about $141 new on Amazon. We had a group of more than ten, so we received the 25% group discount. The net cost is about $130 for a day with Tufte.

Once you start Tufte's course, you'll immediately realize why all four books are included in the course cost.

Big Box o' Tufte

It's not due to any particular generosity on Tufte's part-- he uses the books as high-resolution handouts. Tufte only uses projectors and computers for a handful of images and movies. Everything else begins with a scholarly "please turn to page (n) of your books".

And they are truly wonderful books. I've been a Tufte fan for years, so I already owned a set, but it's worth attending his course just to get the books.

The cover of Edward Tufte's book, The Visual Display of Quantitative Information   The cover of Edward Tufte's book, Envisioning Information   The cover of Edward Tufte's book, Visual Explanations   The cover of Edward Tufte's book, Beautiful Evidence

His writing is fantastic, but it can be dry at times. I was surprised to find that Edward Tufte is a funny, animated speaker. We spent all morning reading through about a half-dozen sections in his last three books. Although I've read them all before, it was illuminating to have Tufte guide us through the reading selections and provide running commentary. It complemented the text nicely. He brought out a lot of nuances in the text that I completely glossed over in my initial read. The latter half of the day was split between sparklines and avoiding the pitfalls of PowerPoint. As usual, everything was presented directly from the books.

Should you attend a Tufte course? If you can swing it, and if there's one in your area, I definitely recommend it. There's nothing in the course you couldn't get directly from the books yourself, but the material is always more effective when it's presented by a good teacher.

As you enter the course, you're provided a folded four-page handout. One of the highlights in this handout is a section titled "An Education for Analytical Design". It's a cheat sheet of sorts, and you know how I love cheatsheets. I'll reprint it here exactly as Tufte entered it, adding hyperlinks for easier browsing:

An Education for Analytical Design

Fundamentals    Josef Albers, Interaction of Color    Robert Bringhurst, The Elements of Typographic Style    Joseph Lowman, Mastering the Techniques of Teaching    Scott McCloud, Understanding Comics    Marcel Minnaert, Light and Color in the Outdoors     Donald Norman, The Design of Everyday Things    Strunk and White, The Elements of Style, the last chapter on style (read once a year)    Norman J.W.Thrower, Maps and Civilization    Edward Tufte, The Visual Display of Quantitative Information    Edward Tufte, Envisioning Information    Edward Tufte, Visual Explanations    Edward Tufte, Beautiful Evidence

Advanced Readings    Rudolf Arnheim, Visual Thinking    William Cleveland, The Elements of Graphing Data and his Visualizing Data    Eduard Imhoff, Cartographic Relief Presentation    Stewart Brand, The Clock of the Long Now: Time and Responsibility    Alan Cooper, About Face    Ben Shneiderman, Designing the User Inteface    Philip Greenspun, Philip and Alex's Guide to Web Publishing

Videos    Video and book: Powers of Ten (watch video) by Philip Morrison and Phylis Morrison and The Office of Charles and Ray Eames; Sorting out Sorting (watch video) by Ronald Baecker; Project MATHEMATICS! (watch videos) by Tom M. Apostol and James F. Blinn

Internet     www.google.com (also searches images!)     www.aldaily.com     www.bookfinder.com     www.asktog.com     www.amazon.com     setiathome.ssl.berkeley.edu     www.junkbusters.com     www.photo.net     www.science.nasa.gov     www.musanim.com (to order the Music Animation Machine videotape)

Computer Programs    For serious data analysis, use a high-end statistics package such as Origin 6.0, SYSTAT 8.0, Datadesk, STATA, SAS, SPSS, SigmaPlot, S-PLUS. See sparklines essay on Ask ET forum for more on production issues.

Courses    Writing, general science, statistics (data analysis, research design), applied mathematics, cartography, medical illustration, architecture, publishing, typography, color, book design, film-making, computers, scientific visualization

Personal Favorites    Christopher Alexander, Sara Ishikawa, et al., A Pattern Language; Robert Merton, On the Shoulders of Giants; Evelyn Waugh, Scoop; Italo Calvino novels; Gore Vidal literary essays; The Paris Review Interviews; Writers at Work (15 volumes); Paul Klee, Notebooks; Richard P. Feynman, "Surely You Are Joking, Mr. Feynman," and "What Do You Care What Other People Think"

Some 20th Century Classics of Information Architecture

Hertzsprung-Russell Diagram, 1912. Relating the brightness of stars to their spectrum and temperature, this diagram showed the unexpected, brought together many dimensions of information into a coherent pattern, and has remained relevant for understanding the evolution of stars for nearly a century now. The diagram also accommodates the modern intensifying of information: the first plot contained 300 stars; recent diagrams show data from 93,000 stars.

Harry Beck, The London Underground Map, 1933. Beck's diagram of the seven lines of the London Underground, though geographically inaccurate, provides a coherent overview of a complex system. With excellent color printing, classic British railroad typography, and, in the modern style, only horizontal, vertical, and 45 degree lines, the map became a beautiful organizing image of London. Despite 65 years of revisions due to the extensions of the Underground and bureaucratic tinkering with the design, the map nicely survives to this day. European and American knock-offs did not succeed.

Roger Tory Peterson, A Field Guide to The Birds, 1934. This book exemplifies the modern field guide, visually demonstrating to every reader the richness of biological diversity by means of "diagnostic marks" (pointers indicating small but telltale differences among birds). With some 5.5 million copies in print, the book got tens of millions of people outdoors looking at birds -- and also thinking about how to preserve the diversity and complexity of nature.

Jan Tschichold and Penguin Books, 1947-1949. These inexpensive paperbacks brought the classics -- and a good many current books as well -- to the mass market. Tschichold set a consistent design for the Penguin books, with clear, elegant, timeless typography that endlessly serves the content.

Swiss Mountain Maps, Bundesamt Fur Landestopographie. Beautiful layering and separation, excellent three-dimensional effects (shading, contour lines, labels), superb resolution. The best national maps (of course, the Swiss have good content to work with!).

James D. Watson and Francis Crick, Molecular Structure for DNA, 1953. The double helix of DNA, a distinctly high resolution design, is Nature's information architecture for all life forms. Since the two strands of the helix are complimentary, the very architecture suggests how DNA replicates itself and how genetic information is communicated from generation to generation.

NASA, Global Temperature Maps, 1960. For nearly 40 years, satellites have continuously measured the temperature of the Earth's surface and atmosphere. High resolution visual displays provide the only way to comprehend these multidimensional data files of trillions of numbers that help to assess the longrun history of global temperature change.

The OAG Pocket Flight Guide. A thousand pages of tiny type published each month on thin paper, this nice pocket book shows approximately 200,000 flight schedules. The guide gives control of the information -- and therefore greater choice -- to individual travellers, protecting them from the biases of travel agents and airlines. Used at the airport, this high resolution classic of information display also assists recovery from delayed or cancelled flights. Requires reading-glasses for those of a certain age.

Douglas Engelbart and Xerox Parc, The Graphical User Interface, 1965-1981. Until 10-15 years ago, the main way that humans interacted with computers was by remembering and typing. Now we look and point -- at words and images, links, icons, menus, windows. The graphical user interface has given the computer to everyone (with enough money) and, combined with the laser printer, has led to more printed paper per capita than ever in human history! The quality of interface design may have peaked around 1990; too many computer screens today are overrun with operating system imperalism, featuritis, marketeering banners, and overproduced gimmicks.

Maya Lin, the Vietnam Veterans Memorial, 1985. From a distance the 58,000 dead soldiers arrayed on the black granite yield a visual measure of what 58,000 means, as the letters of each name blur into a gray shape. When the viewer approaches, these shapes resolve into individuals. The focus is on the tragic information; absent are the marble paraphernalia of other official monuments -- big porticoes, steps and stairs, and the kitschy hyper-realistic generic soldiers.

The Internet and Email, 1990-. The greatest dispersion and intensification of information since the printing of books with moveable type in Korea and China around 650. Weaknesses: recency bias, short attention span, low credibility of many documents, low resolution in space and time.

That should be enough to keep us busy for a while. And be sure to check out the hilarious Viz-o-Matic video that E.T. showed during the class, too!

Discussion

Are You an Evangelist Too?

Anil Dash and I have the same job title: evangelist.

I've got a message! -- boy evangelist

I share Anil's reservations about his job title, too:

You see, these days my business cards describe me as "Chief Evangelist". On the plus side, it's the first time in the history of the company that I've basically only had one job (though I still help out with as much stuff as I can), but on the downside, the title is f**king ridiculous. I hate the word "evangelist" as a description for people who advocate technology not merely because of its religious connotations, but also because it implies a degree of proselytization that I'd like to think I don't participate in. Most of the time, my job is really just simple education.

However, unlike Anil, I believe the religious connotations of the evangelist title are perfectly suited to the field of software development. Software development is a religion, and any programmer worth his or her salt is the scarred veteran of a thousand religious wars. That doesn't mean we need to be humorless jerks about it, of course. But to completely disavow the connection between religion and software development is dishonest. I say we embrace it. We're all disciples of the church of Von Neumann. Praise the lord and pass the ones and zeroes!

The title is a little ridiculous. My wife tells me that everyone laughs when she explains that her husband is a technical evangelist. Am I offended? Heck no. I think that's great. Laughing is the only sane, rational response to any kind of evangelism -- it means you have a sense of humor. Entertainment is a crucial part of being an evangelist. Without it, you're a sanctimonious bore. Good evangelism is always equal parts education and entertainment. Edutainment, if you will.

Of course, you'll only be effective as an evangelist if you can clearly communicate your ideas to other people. This is a critical skill, whether you have any desire to be an "evangelist" or not. As Joel Spolsky famously said:

The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas.

It's questionable how effective you can be by writing code alone. You have to convince us how awesome your code is. You have to make us believe in the glory of that code. In short, you evangelize. And that means constantly cultivating those essential communication skills.

With apologies to Jeff Foxworthy, if you frequently find yourself entertaining people to effectively communicate with them, you may be.. an Evangelist. Take Marc Hedlund's experiences, for example:

I was recently asked how I run our development team. I said, "Well, basically I blog about something I think we should do, and if the blog post convinces the developers, they do it. If not, I lobby for it, and if that fails too, the idea falls on the floor. They need my approval to launch something, but that's it. That's as much 'running things' as I do, and most of the ideas come from other people at this point, not from me and my blog posts. I've argued against some of our most successful ideas, so it's a good thing I don't try to exert more control." I'm exaggerating somewhat; of course I haven't blogged about all of our ideas yet. But I do think of myself as Lobbyist-in-Chief, and I have lots of good examples of cases where I failed to talk people into an idea and it didn't happen as a result. One person I said this to asked, "So who holds the product vision, then?" and I replied, "Well, I guess I do," but really that's not right. We all do. The product is the result of the ideas that together we've agreed to pursue. I recruit people based on their interest in and enthusiasm about the ideas behind Wesabe, and then set them loose, and we all talk and listen constantly. That's how it works -- and believe it or not, it does work.

Like Marc, you may already be an evangelist and not even know it. And it really does work.

Evangelism is simply sharing your excitement and enthusiasm with other people in an effective way. If that makes you more entertaining and a better communicator, well, those are side effects you can probably live with.

Discussion

Cool Gifts for Geeks: 2006 Edition

As a technology enthusiast with a bad impulse purchase habit, I'm unrepentantly difficult to buy gifts for. The way I figure it, the only reason to grow up is so you can afford to buy yourself all the crap your parents wouldn't buy you when you were a kid.

That said, here are some of my favorite lists of cool, quirky, offbeat geek gifts for 2006:

This year, I preemptively treated myself to a the new 4 gigabyte iRiver Clix ($199), and after living with this stellar little flash music player for a week, I can heartily recommend it to anyone.

4GB iRiver CLIX

It does everything the iPod refuses to do: subscription services, wma/ogg support, FM Radio (w/recording!), Flash Lite games, video playback, and voice recording. It has a speedy, intuitive UI that can be switched between landscape or portrait mode at will. And best of all, no software installs are required*: just plug it in, drag and drop your music on it, then play. But don't take my word for it: read the glowing critical acclaim at PC Magazine, ABiP, and Cnet.

I've provided one specific gift recommendation, and my favorite geek gift suggestion lists so far. But I'm sure I've missed plenty. Are there any cool geek gift lists I've missed?

* caveat: assuming you have an OS that supports MTP.

Discussion

Today is Support Your Favorite Small Software Vendor Day

I'm a Windows user, and I'm out to prove Wil Shipley wrong:

Mac users love their machines; Windows users put up with their machines because they don't believe there's anything really better.

I love the Mac user base because they tend to be people who are into trying out new software and recommending it to each other and giving the little guy a chance. Windows users have demonstrated, ipso facto, that they do not believe in the little guy.

Wil's student talk from WWDC 2005 piles on even more criticism of stereotypical Windows users:

  • Windows users like going with the market leader, the "safe" choice.
  • Windows users don't want to spend more for quality, so they buy crapware knockoffs of your idea instead.
  • Windows users never upgrade.
  • Windows users only use three apps: Word, IE, and ITunes.
  • Windows users are afraid to install new software due to the massive amount of craplets and malware saturating the market.

Them's fightin' words, Wil Shipley. Well, except for the last part, which is true. 90% of Windows software is absolute unfettered crap which should never be installed on any computer running any operating system. Ever. But I'd also say Sturgeon's Revelation applies to all media, not just Windows software. But our 90% is larger than your 90%. Despite what all the Elise-drivin', iPod wearin', Mac-lovin' pundits would have you believe, it's not all craplets and malware in the Windows world.

As Windows users, we should do our part to fix this. Let's band together and support those small software vendors writing Windows apps that not only don't suck, they ROCK. Let's support the little guy who still gives a damn about creating small, beautiful, useful apps on an operating system that gets no respect.

That is why I declare today, Friday, December 1st, 2006, Support Your Favorite Small Software Vendor Day.

I've used Media Monkey several times to help catalog my self-ripped music collection, and I was blown away by the speed, the ease of use, and the cool features for mass-tagging my music. And, I'm ashamed to admit, I never paid the twenty bucks to register it. Even after using it quite extensively. I'm rectifying that situation right now: even as I type this post, I'm registering Media Monkey.

Check your hard drive, and I'm sure you, too, will find some bit of software written by a small software development shop, maybe even a single developer. Something you find incredibly useful. Something you rely on every day. Something you recommend without reservation to friends and peers. Something that makes using the computer that much more enjoyable. Or at least less painful.

Stop reading this post right now and buy that software. If it's not commercial software, don't let that stop you. Share the love by sending money to the person/shop/organization that created it.

This month it's MediaMonkey. Next month it might be ClipX, or Beyond Compare, or RegexBuddy, or TimeSnapper. It's time to stop floating by on the "free" version and give something back. If I can't come up with the scratch to spend a measly $20 a month supporting the very best work of my fellow independent software developers, can I really call myself a professional software developer? Can you?

As a Windows user, I work extra hard to avoid reinforcing all these negative stereotypes. I believe in the little guy writing cool Windows software. And by "believe in", I mean "pay". And so should you. Whatever operating system you choose to run, try to support the little guys writing the apps you use. We owe it to them. And, more importantly, we owe it to ourselves.

Discussion

The Project Postmortem

You may think you've completed a software project, but you aren't truly finished until you've conducted a project postmortem.

doctors, postmortem

Mike Gunderloy calls the postmortem an essential tool for the savvy developer:

The difference between average programmers and excellent developers is not a matter of knowing the latest language or buzzword-laden technique. Rather, it can boil down to something as simple as not making the same mistakes over and over again. Fortunately, there's a powerful tool that any developer can use to help learn from the past: the project postmortem.

There's no shortage of checklists out there offering guidance on conducting your project postmortem. My advice is a bit more sanguine: I don't think it matters how you conduct the postmortem, as long as you do it. Most shops are far too busy rushing ahead to the next project to spend any time thinking about how they could improve and refine their software development process. And then they wonder why their new project suffers from all the same problems as their previous project.

Steve Pavlina offers a game developer's perspective on postmortems:

The goal of a postmortem is to draw meaningful conclusions to help you learn from your past successes and failures. Despite its grim-sounding name, a postmortem can be an extremely productive method of improving your development practices.

Game development is some of the most difficult software development on the planet. It's a veritable pressure cooker, which also makes it a gold mine of project postmortem knowledge. I've mentioned my fascination wth the Gamasutra postmortems before, but I didn't realize that all the Gamasutra postmortems had been consolidated into a book: Postmortems from Game Developer: Insights from the Developers of Unreal Tournament, Black and White, Age of Empires, and Other Top-Selling Games (Paperback) . Ordered. Also, if you're too lazy for all that pesky reading, Noel Llopis condensed all the commonalities from the Game Developer magazine postmortems.

Geoff Keighley's Behind the Games series, while not quite postmortems, are in the same vein. The early entries in the series are amazing pieces of investigative reporting on some of the most notorious software development projects in the game industry. Here are a few of my favorites:

Most of the marquee games highlighted here suffered massive schedule slips and development delays. It's testament to the difficulty of writing A-list games. I can't wait to read The Final Hours of Duke Nukem Forever, which has been in development for almost ten years now. Its vaporware status is legendary-- here's a list of notable world events that have occurred since DNF began development. "When it's done", indeed.

Don't make the mistake of omitting the project postmortem from your project. If you don't conduct project postmortems, then how can you possibly know what you're doing right-- and more importantly, how to avoid making the same exact mistakes on your next project?

Discussion