Wednesday, December 17, 2008

How to write an InfoWorld article

While browsing Hacker News I came across a submission that read like a press release, but was presented as a story. It didn't take much searching to find the associated press release.

Here's a breakdown of the original article (in blue) and the similar text from the press release (in red).

SensAble Technologies, provider of haptic devices, applications, and toolkits, is offering OpenHaptics 3.0, a software development kit to simplify touch-enabling of computer applications.

SensAble Technologies, the leading provider of haptic devices, applications and toolkits, announced the immediate availability of OpenHaptics® version 3.0, a software development toolkit that dramatically simplifies and speeds the touch-enabling of computer applications.

New categories of developers such as scientists and simulation and training providers can add a sense of touch to their applications, the company said. The product works with SensAble Phantom force-feedback haptic devices, which simulate, for example, the feeling of tissues in a human body by pushing back on a user's hand.

SensAble’s enhanced toolkit opens the door to entirely new categories of developers, such as scientists and simulation and training providers, who want to add a realistic sense of touch to their applications, but lack the years of advanced programming and haptics expertise previously required to do so.

The upgraded kit features the QuickHaptics micro API, enabling users with a basic familiarity of C++ to add kinesthetic feedback to what is seen or heard on a computer screen.

Designed to work with SensAble’s PHANTOM® force-feedback haptic devices, the release includes the new QuickHaptics™ micro API, which enables any professional with even passing familiarity with C++ to quickly and easily add kinesthetic feedback to what users see and/or hear on a computer screen.

(Earlier this year, Samsung launched a haptic cell phone.)

The API streamlines three types of complex programming, including operating system-specific windowing, scene graph management, and force rendering in haptics threads, SensAble said. An application to touch and manipulate a 3-D model can be written with 8 lines of programming code instead of 300 lines, the company said.

The new QuickHaptics micro API in OpenHaptics 3.0 greatly streamlines the three distinct types of complex programming typically required when writing a haptics application: operating system-specific windowing, scene graph management, and force rendering in haptics threads. For example, with QuickHaptics, a simple application to touch and manipulate a 3D model can be written with just 8 lines of programming code – instead of 300.

For medical, scientific, and training applications, Version 3.0 supports faster addition of exceptional realism, which is a virtual environment in which users can add touch to applications.

Faster and easier addition of exceptional realism, which is vital to medical, scientific, and training applications.

As an example of how the product works, a developer with no graphics or haptics experience could use QuickHaptics to prototype a training application for veterinary students, SensAble said. The developer could import 3-D models of an animal's anatomy and assign haptic material properties allowing a trainee to use the Phantom device to feel the difference between healthy and diseased organs.

For example, a developer without any graphics or haptics experience could use QuickHaptics to prototype a training application for veterinary students. Using QuickHaptics, the developer could easily import all the necessary 3D models of an animal’s anatomy and then quickly assign haptic material properties, allowing the trainee to use the PHANTOM device to literally “feel” the differences between healthy and diseased internal organs.

"Haptics experts will find QuickHaptics to be invaluable in helping them add virtual touch to their applications in innovative ways. On the other hand, developers who have no experience with haptics programming can easily get to work and be productive quickly," said David Chen, chief technology officer of SensAble, in a statement released by the company.

“Haptics experts will find QuickHaptics to be invaluable in helping them add virtual touch to their applications in innovative ways. On the other hand, developers who have no experience with haptics programming can easily get to work and be productive quickly.”

Version 3.0 also features the ability to build mashups, which combine programming code from various sources into existing applications. Reuse of source code is enabled.

Perform mash-ups – combining programming code from various sources into existing applications

Users also can load 3-D models with textures in standard formats using a single command. There is no need to convert models into specialized file formats before haptic programming.

For example, users can load 3D models with textures in a variety of widely adopted, standard file formats using a single command – eliminating the need to convert models into specialized file formats prior to haptic programming.

OpenHaptics 3.0 is available for 32-bit Windows XP and Vista for $950 per seat for commercial developers. It is free for academic developers. Current OpenHaptics commercial customers on software maintenance contracts get the software at no additional charge.

OpenHaptics v3.0 for Microsoft Windows® 32-bit XP and Vista is available now and is priced at $950 (USD) per seat for commercial developers, and is available at no charge to academic developers and SensAble’s OpenHaptics commercial customers with active software maintenance contracts.

Linux and 64-bit versions will be available early next year.

Linux® as well as 64-bit versions will be available in early 2009.

So the entire article is a small diff from the press release. To be fair to the article's author he did repeatedly add "the company said".

More on the 7 point scale

Some time ago I wrote about my love of seven point scales for measuring things (especially human attitudes). In the original article I mentioned John Ousterhout's scale for hiring people and Kinsey's scale of human sexuality.

I've come across a few more seven pointers:

1. In The God Delusion Dawkins presents a seven point scale for measuring how much you are a theist or atheist.

2. Then there's the Bristol Stool Scale describing the seven types of human faeces

3. And finally, The International Banana Association's ripeness scale.

Got any more?

Friday, December 12, 2008

POPFile v1.1.0 Released

There's a new POPFile out (v1.1.0) and I had almost nothing to do with it. This is the first release where the new (global) POPFile Core Team did all the work. Thanks Brian in the UK, Joseph in the US, Manni in Germany and Naoki in Japan. A truly global effort.

As part of the v1.1.0 release POPFile has moved from SourceForge to its own server and has a totally new web site.

v1.1.0 also includes some great new features: it is the first to use a
SQLite 3.x database and it is the first to offer a Mac OS X installer in addition
to the usual cross-platform and Windows installer versions.

And there are a raft of bug fixes as well which you can read about in the release notes.

Spaces are a pain in painless non-recursive Make

In my book GNU Make Unleashed I published a pattern for doing Make without having a recursive descent into directories. It works well and I know that many people are using it.

But the other day I received an email from Terry V. Bush at VMWare saying that he had trouble with it because of 'the third-party problem'. The third-party problem is my name for the problem that occurs when your beautifully written Make system has to incorporate some wart of source code from a third-party vendor. In Terry's case that third-party has spaces in the path names.

Space is path names are a real bind in Make (that's another topic I cover in GNU Make Unleashed) and Terry really wanted to use my non-recursive Make pattern but needed to handle this ugly third-party.

I'll let him continue the story...

What happens is that if you have a directory name with a space in it your functions fail to find the root. Also, they always walk the entire tree up to the top even after they have found the root of the tree. Here is the version published in "GNU Make Unleashed":

sp :=
sp +=

_walk = $(if $1,$(wildcard /$(subst $(sp),/,$1)/$2) \
$(call _walk,$(wordlist 2,$(words $1),x $1),$2))

_find = $(firstword $(call _walk,$(strip $(subst /, ,$1)),$2))
_ROOT := $(patsubst %/root.mak,%,$(call _find,$(CURDIR),root.mak))

What I have done to solve these two issues is:

1: Add an "if" that returns when the root is found. This actually makes other parts of this function simpler. It also makes is slightly faster, albeit very slightly...

2: Substituted a "|" char (any char that is highly unlikely to be in a real directory name will work) for each space in the path and then put the spaces back when necessary.

Also, to simplify things a little, I added an eval that puts the result of wildcard into a temp var "_X" so that returning it when found is trivial.

sp :=
sp +=
_walk = $(if $1, \
$(if $(eval _X=$(wildcard /$(subst |,\$(sp),$(subst \
$(sp),/,$1))/$2))$(_X),$(_X), \
$(call _walk,$(wordlist 2,$(words $1),x $1),$2)))
_find = $(call _walk,$(strip $(subst /,$(sp),$(subst $(sp),|,$1))),$2)
_ROOT := $(patsubst %/root.mak,%,$(call _find,$(CURDIR),root.mak))

My plan for this is to combine your "Painless non-recursive Make" with Paul D. Smith's "Advanced Auto-Dependency Generation" Make code to produce a fast and extensible Make environment for products at VMware.

Nice, and "Advanced Auto-Dependency Generation" is also covered in GNU Make Unleashed.

Friday, December 05, 2008

Help save Bletchley Park: donate a power of 2

Bletchley Park in the UK needs money to keep operating. For any self-respecting geek there are a few places of pilgrimage in the world, and Bletchley is near the top of the list.

Not only did code breakers crack Enigma and other codes during the Second World War at Bletchley, but it was where much early computing work was done by great scientists including the man: Alan Turing.

Bletchley accepts donations on their web site via PayPal or credit cards. If you want to help may I suggest taking a look at your finances and donating a power of 2?

I just logged into my PayPal and donated the maximum I could afford: 28.

See if you can donate $1, $2, $4, $8, or more. And pass on the link to this blog posting to get the 'A Power of 2 for Bletchley' meme going.

Thursday, December 04, 2008

"The Geek Atlas" gets a proper home page

O'Reilly has put up the permanent home page of my book "The Geek Atlas" here. It has more details of the book:

With this unique traveler's guide, you'll learn about 128 destinations around the world where discoveries in science, mathematics, or technology occurred or is happening now. Travel to Munich to see the world's largest science museum, watch Foucault's pendulum swinging in Paris, ponder a descendant of Newton's apple tree at Trinity College, Cambridge, and more. Each site in The Geek Atlas focuses on discoveries or inventions, and includes information about the people and the science behind them.

(Click through for even more information).

I've also created a Flickr group Geek Atlas which people who've visited sites in the book can add their photographs. The following sites have been publicly revealed at this point:

  1. Experimental Breeder Reactor 1

  2. Bletchley Park in the UK, where the Enigma code was broken

  3. The Horn Antenna in Holmdel, New Jersey, where the Big Bang theory was accidentally confirmed

  4. The Trinity Test site in New Mexico, where the first atomic bomb was exploded

  5. The Alan Turing Memorial in Manchester, England

  6. The National Cryptologic Museum in Fort Meade, Maryland

  7. The Joint Genome Institute in Walnut Creek, California

121 more great places to visit in the book.

Monday, December 01, 2008

"The Geek Atlas" mailing list

A number of people have mentioned to me that they've preordered by book The Geek Atlas from Amazon. If you are interested in the book, but don't want to go for a preorder then I'm setting up a mailing list so that you can hear from me with further details as they become available.

To get on the mailing list send mail to

and I will mail you with news about its availability.