Author Archives: aaron

From Metrics to Meaning

OK, I’ll admit it. I may be carrying around a little more weight than I should. The idea of an elegant dinner out sounds far better than a sweaty afternoon at the gym. But I’m not worried–technology is coming to my rescue!

After all, there are fitness bands that relay all my activity to an intelligent program. There are apps that will track my intake and exercise and help me monitor those metrics. But there’s a key element missing: the meaning.

We’ve all become fond of metrics, perhaps instigated by the lore of W. Edward Deming, who was thought to have said “You can’t manage what you can’t measure.” (Except he didn’t, actually, say that. In fact, his philosophy was quite inclusive, allowing (and even encouraging) people to make decisions that they knew to be right, even if they were unmeasurable.)

But anyway, back to the fitness path. So I get a band, or a device, or an app. Suddenly, I’m getting all of these metrics. I know how much I’m ingesting and how much I’m walking. Why isn’t my behavior changing?

Some might say willpower, some might say that last order of gyoza. But I suspect a leading contributor is the gap between metrics and meaning. There’s a step missing: okay, I know these are my stats, and something’s not working. But how do I get from point A to point B? What do the data mean?

This is not only a health issue, but a larger design one. Every time we show information to a user–every time–we should ask: what’s the context? What does the user need to make meaning of this data bit?

Think about breadcrumbs, as another example. Knowing what page you’re on in a complex website is useful. Knowing where that page fits into the site and your path within it is orientational. It changes one’s experience of navigation.

This is true on the analytics side, too — measuring clicks or session time is a good start. But what is the story that data is telling? Where do you go from here?

Over the last few years, we’ve seen an explosion of the amount of data available. We can measure more than ever before. But it’s not going to really transform us in the most profound way until we get just as good at providing meaning as we are at providing metrics.

In the meantime, it’s almost lunch…

Creative Destruction

With advances in technology, there are several ways to measure the pace and/or severity of change. Often, we refer to it in terms of speed (see, for example, Moore’s Law). Sometimes, we refer to it in terms of how it abruptly changes old practices (the idea of disruptive technologies, for instance).

At Square Lines, we make a practice of studying long-term technology evolution in addition to short-term jumps and leaps. One aspect of technology integration that often involves sustainability over time isn’t its pace or its disruption, but rather its erosion of current practices. A practice we (and others) call creative destruction.

When a system or process practices creative destruction, it is continually eroding away the oldest and freshly developing the newest. You might think of it as a bridge where one end is slowly crumbling as the other end is being built (in that analogy, it would be a bridge without gravity, but you get the idea).

I was reminded of the value of creative destruction this morning as I learned that InformationWeek, a venerable magazine for IT professionals that has been around since 1979, was stopping its print publication and going online-only.

For many years, they published (wait for it) weekly, with thick books rich with information, editorial, and advertising. Then, beginning about 15 years ago, the creative destruction began. The InformationWeek website started getting richer (and carrying more ads). Beginning about five or six years ago, the print issues began getting slimmer — and, remarkable for a publication with “Week” in its name, began appearing less frequently.

Behind the scenes, according to the editor of the publication, ad revenue balances began to shift. What was 95%/5% in favor of print in 2000 switched to the reverse in 2013. Given the cost/benefit and ROI of their print circulation, it only made sense.

But because they had been practicing creative destruction for over a decade, it wasn’t an abandonment and retrenchment. It wasn’t a collapse. It was (and will be, I think) an advance, a migration. As the parts of the bridge that were on the print side of the gorge eroded, they were building new bricks toward the digital side.

That having been said, time will tell as to whether enough “bridge parts” have been laid. The online-only tech space is far more crowded than the print/digital hybrid, and the direct mail distribution of a regular periodical surely helped penetration of the audience (even the digital one). But they are definitely better equipped for the transition than had they not been working the problem for well over a decade.

And that’s the beauty of creative destruction.

Finally! finally in PHP 5.5

PHP 5.5.0 was released yesterday, and there are a handful of helpful new features. Among them, there is one that looks the best to me — the try-catch block has the finally block added. After all, if you’re doing exception handling in your code with try-catch (and if you’re not, you really should be), there are often scenarios in which you want to execute some arbitrary code at the end of the block, regardless of whether an error got thrown or not.

In some cases, you can put it outside the try-catch block (at the end, of course), but there are at least two circumstances where that’s less-than-optimal. First, if the program flow is altered in the try or catch, yet you want to tack on some code at the end, you’re in luck. But in our case, most of the time, it’s a readability issue. We try to group code conceptually when we write, much as we do when writing in English. That means we use sentences and paragraphs. Well, when coding, we do the same thing. And the addition of the finally block will make that even easier.

Another nifty functional help is the addition of the list form in foreach structures.If you work with nested arrays, you can now unpack them in the foreach construct, exposing the underlying variables much more easily. Like the finally block addition, it’s not as though you couldn’t code around this limitation, but when you don’t have to, code gets more readable.

In a deja-vu moment for C programmers, you can now dereference arrays and string literals to access specific items and characters. So in PHP 5.5, ‘Square’[1] equates to ‘q’. Not too shabby.

You can now pass a function call to empty() to evaluate it, which is another keystroke-saver when coding. So if you have a function foo() that may return data or may return, say, false, you can evaluate empty(foo()) and see if false came back. Again, a minor assist, but an assist nonetheless.

There are other features in this release, too, including a new Zend optimization caching extension, some enhancements to the GD graphics library, a new yield keyword that allows you to do simple iteration without using as much memory, a class function that gives you the unqualified class name, and more.

It’s good to see PHP continuing to evolve and grow — it has come a long way since I first used it fifteen years ago!

Retro Geekiness: Sorting Out Sorting

As a child about thirty years ago, when I decided to transition from computer programming hobbyist to student, one of the big topics that represented that transition was algorithms. These “recipes for the computer,” as I was taught at the time, were the key — the secret to unlocking the potential of this great technology.

One of the first areas of algorithmic exploration I embarked on was sorting algorithms. Which, although it was probably a pretty haphazard selection, turned out to be a good choice. Even now, three decades later, knowing how sorting algorithms work and when to choose the right one comes up all the time.

But back then, it was a brave new world to me, and I was just trying to figure out how they worked at a basic level. It was a struggle — I knew that some were faster than others in certain cases, some really sucked all the time (using the vernacular of the time), but I was having a little trouble grasping the nuances.

Then one day, while I was idly flipping through my school district’s central film and video catalog (the depth of my geekiness as a child is unending), I saw — what’s this? — a video about programming! I quickly badgered the librarian to request it, and when it came, I beheld: Sorting Out Sorting.

This 30-minute video was created entirely on the computer in 1980 — an impressive feat by itself — by the University of Toronto. And it remains, I think, the best teaching material on sorting algorithms in existence. When I started teaching computer science, I went on to show it to several classes of students over the years, and while it’s certainly dated (oh, man, is it dated), the information remains stellar.

There really is no substitution for seeing the algorithms in action. These days, there are websites like this one that show you much of the same animations in a browser window, but the movie gives you more in-depth detail about each one.

This is by no means a film review website, but this is one I’d give two-thumbs up. Put some legwarmers on, turn down the Huey Lewis & The News for a minute, and check it out.