⇥ Old school task management

November 25, 2009
7 comments
 
⇥ Permalink
Nothing beats paper for personal task management (except, possibly, your spouse)

Nothing beats paper for personal task management (except, possibly, your spouse)

The biggest lesson in user interface design that I have ever received is, to this day, a little something that happened approximately eleven years ago.

At the time, I remember standing in the headquarters lobby of one of Canada’s largest insurance companies, uncomfortable—as I always am—in my suit, right next to my CEO. We were waiting for a meeting with the company’s CIO that we had tried to schedule for two months. We were prepared; we were early enough to show that the meeting mattered to us, but not so early that we would look desperate. We were ready.

Unfortunately, our host wasn’t. The receptionist informed us, politely but with that condescending look of someone who has seen far too many supplicants make far too many sales calls, that the CIO wasn’t expecting us today and wouldn’t be seeing us after all.

My colleague—a person who could teach anyone business smarts simply by standing next to them for a short period of time—decided that we hadn’t donned our best suits, driven through that particular brand of hell that city dwellers jokingly refer to as “traffic” and spent $30 in parking to be brushed off so easily. “He doesn’t know my cell number… I bet if I call his direct line he will answer¹,” he stated.

That sounded good to me—I had paid the $30—so I opened up my Cassiopeia and started looking for the guy’s phone number. I was pretty good with that little device—and I never got tired of showing it off (much like an iPhone until a few months ago, it made for an excellent conversation starter at business meetings). It only took me a minute or so to pull up the number and, once I located it, I looked up to dictate it to Rick.

Except, of course, that, while I was deeply busy getting off on electronics, my friends had already whipped out his $2.99 pocket phone book, found the number, called the CIO and very gently tore him a new waste management system. Before I knew what had happened, we were on our way up to the executive floor, and my Cassiopeia was on its way down to the trash.

Fast forward ten years…

Things have changed considerably since that episode (incidentally, the meeting was a bust—I only remember what happened specifically because it had a cathartic effect on my appreciation for ergonomics), but, in many ways, software is still too often a solution in search of a problem.

This is the reason why, even after all this time, I manage all my day-to-day tasks on paper. I’ve tried a number of fancy (and not-so-fancy) task management systems: GTD-compliant systems, OmniFocus, Things, and so on. I’m sure that these applications and methods do wonders for scores of people, but, for some reason, they just don’t work for me.

You see, daily task management is not really about knowing what you need to do; it’s about doing it. A to-do list in any form isn’t going to help you “remember” the things you have to do—let’s face it, you know what you have to do; most of the time, you’re just too lazy to actually do it. Task management software is helpful in keeping track of what you need to do, but it lacks in what I jokingly refer to as the “spouse factor²”—it doesn’t nag you enough about sorting through your tasks and taking care of them.

Paper won’t start calling you in the middle of a client meeting to remind you that you need to pick up the milk on the way back home, but it has two great advantages: first, it’s extremely portable and, second, it cannot be hidden behind another window. Third—yes, I am cheating—it’s as of yet unbeaten as a mind-mapping tool, especially when coupled with that most noble of writing instruments, the pencil.

Task management, old-school style

Managing time is a complex matter. Some people are naturally good at it, while others, well, not so much. I belong to the second category and, therefore, a good management system is essential to get me through the day. For the benefit of inquiring minds, thus, this is how I organize my day:

  1. Once proper grooming has taken place and I am sufficiently caffeinated to write something that I will eventually be able to read later, I start working on my to-do list for the day. This usually takes place after I do my morning e-mail triage—just in case there are some truly urgent and unexpected tasks that I need to be aware of.
  2. I start by copying over the unhandled items from the previous day. Then, that list goes into the trashcan.
  3. Next, I write down whatever new items I need to take care of on that particular day—consulting liberally with my calendar, just in case I forget something.
  4. Next, I sort items according to two criteria: urgency and palatability. Urgent tasks need to take precedence, as do those that I’d rather avoid—that way, I have something (the tasks I actually like to do) to look forward to.
  5. As I go through the list, I try to find a “daily goal” of sorts—my TDL is usually much longer than my day reasonably allows, and some long-term tasks need to be taken care of daily, regardless of what precedes them. Thus, I further sort tasks between “must do,” “should do” and “can go to tomorrow.”
  6. As the day progresses, I erase tasks as I complete them. The erasure is also “old school”—I just scratch a line across the item. That way, it doesn’t automatically disappear—it sticks around as evidence that I have actually done something.
  7. At the end of the day, I go through the list one more time to ensure that I haven’t forgotten to take care of some truly urgent tasks. Otherwise, the TDL will tell me what I have accomplished over the course of the day—and the remaining tasks will be there for me to work on tomorrow.

That’s all there is to it. If I need to work outside the office, all I need is a piece of paper and a pen. Best of all, the to-do list is right there, in front of me and at the top of my work pile on the desk. It’s impossible to ignore, even without pop-up notifications and stereo sounds.

How do you manage your time? Much like my obsession with finding out how others organize their desks, I am curious to see if I can learn a trick or two to improve my time management.

¹ Remarkably—even for the time—the person we were visiting didn’t have a secretary, even though he held a C-level position at a major corporation.

² Intended in the most gender-neutral way possible. I am quite sure that husbands can be as annoying as wives, regardless of the gender of their better halves.

Photo credits: My to do list by ezs

⇥ Selling software in an open-source world

November 23, 2009
5 comments
 
⇥ Permalink
How do you sell software when it's free?

How do you sell software when it's free?

Last week, Zend’s marketing department saw fit to send me an e-mail—the third in so many weeks—touting the fact that the upcoming Zend Server 5 will support job queueing¹ to offload requests either to another process on the same server or to another server altogether.

Undoubtedly, this is a great feature, not the least because it begs a little bit of simple business analysis of how difficult it is to create a market for products in an open-source world.

First of all, a simple look at the economics of this feature reveals that, in itself, it cannot be a determinant in the purchase of Zend Server². The reasoning is fairly simple: a copy of the lowest-level subscription for Zend Server costs $1,195. You can, however, get queuing support from a variety of other sources—most notably Amazon Web Services, which sells queuing requests for $0.01 per 10,000 requests. In other words, you’d have to need to make more than 1,195,000,000 queuing requests in a year to justify the purchase of Zend Server if all you ever wanted was queuing support.

Therefore, queuing needs to be part of a larger set of features that, taken together, make Zend Server a compelling and unique product. However, none of its features do this—there is practically nothing in ZS that cannot be obtained elsewhere for a lower cost (or for no cost). What’s more, Zend cannot lock any new feature it adds to its products because it can be easily replicated by just about anybody else.

Case in point, on the very same day when I received Zend’s e-mail, Jonathan Wage tweeted about a library he built on top of Doctrine to manage message queues using a variety of different storage media. So here we have, in the same period of twenty-four hours, a company that is trying to sell me a solution that a person claims to have developed and is making available completely free of charge.

Of course, this comparison represents “all kinds of unfair” towards Zend—their solution could be better implemented, more reliable, or scale better.

Or, perhaps, I could point out that they are not, in fact, selling the software at all.

Software is worthless—service is everything

In an open-source world, the capital value of any piece of software tends towards zero—not only because you others get the software for free, but because vendors cannot lock in any feature that makes it impossible for anyone else to recreate the same functionality and give it away at no cost. Microsoft has proprietary control over Windows and can, therefore, decide which features it allows third parties to replicate. Zend has no exclusive control over PHP and, therefore, enjoy no such privilege with its products. Nor is this a problem that is specific to Zend—any other company that works in an open-source space has to deal with this particular issue in one form or another.

The only real product that a company like Zend can sell, therefore, is the peace of mind of knowing that there is someone that your organization can turn to for assistance when things stop working. Not being a Zend customer myself, I can’t say how well they do this, but I do find it interesting that they continue to define themselves as a product company and that they don’t seem to place any emphasis on their services.

I understand that the need to sell products is primarily one of scale—it’s difficult to convince an investor that they should give you their money unless you can show exponential growth, and a service-oriented organization simply cannot achieve that. However, when your product is, essentially, an extended form of support, you need to build an organization that has service at its core—it’s only through services that a company will gain acceptance for its products and achieve the scale its investors demand.

This is nothing new, of course—organizations as large as the largest software vendors in the world have highly developed service organizations that, while not representing a significant revenue centres, act as a springboard for the sale of the company’s products. This is true both in the open- and close-source markets—think about the size of Microsoft’s Consulting Services division or the importance that a company like Red Hat attaches to the creation of a holistic ecosystem for its products, from certification to training and consulting.

Educate, Penetrate, Accelerate

The importance of services can be best illustrated through the mantra educate, penetrate, accelerate.

Education is an essential part of driving the adoption of your products. It involves the cooperation of marketing, which raises awareness about your products, and training and certification, which promotes competence among your clients. The former without the latter leads to discontent, because your customers won’t be able to use your products. The latter without the former leads to poor adoption, because nobody will know about your products in the first place!

Penetration of the market can only be achieved by a well-tuned and aggressive consulting-services strategy. This is particularly true in the PHP market, which is trending towards a higher and higher level of abstraction in programming tasks—when people invest millions of dollars a year in content management systems, the only way that you can make your products relevant is to make them relevant to those systems. To offset the cost of providing services, a company needs to foster a competitive, but also active and rewarding, environment for its consulting partners, demanding high quality while providing excellent opportunities for profit by reducing some of the costs associates with customer acquisition.

A good service division will lead to acceptance of your products, which is where you can accelerate your growth by selling multiple licenses to your paid products to each client.

¹ I realize that I’m just being petty here, but Zend’s marketing need a severe visit from the Cluebat Fairy—if the best reason you can come up with for trying to sell me a queue management system is that I can eliminate “long-running PHP scripts,” you have failed miserably. To a developer (or, at least, to this developer), queuing has three important benefits: parallelization, prioritization and consistency. In other words, I want to know that I can push messages in the queue so that they can be processed by multiple workers, they can be assigned a specific priority if needed, and that they are not going to end up in some sort of black hole. Offline serving of complex tasks is a consequence of these features, rather than the feature itself—but I digress.

² Of course, you can download Zend Server for free, but that only reinforces the difficulty in creating products for the PHP market.

Photo credits: Girotondo by Luca Sartoni

⇥ IE9 will have rounded corners (and a bunch of other stuff)

November 19, 2009
4 comments
 
⇥ Permalink
And then, there was much jubilation.

And then, there was much jubilation.

Marvel of marvels, the upcoming Internet Explorer 9, which was previewed yesterday at PDC, will finally support rounded corners. I have, of course, no illusion about the fact that this isn’t related to my post from a couple of days ago, but it’s good to hear that they’re at last catching up.

Of course, this also means that there is yet another version of IE that we need to check and account for in our code, but, frankly, I don’t expect that to be a major problem where these things are concerned: if anything, the availability of features like rounded corners across all three major browsers for the first time in the history of the web will be enough to push many developers to simply ignore older versions of IE beyond the graceful degradation of their designs—much like many do today.

This, however, will have the potential to accelerate the adoption of the latest version among users who will want the best experience possible. It will also mean that new designs will be much more fluid and dynamic, since more and more changes can be made by simply altering the code, rather than by mucking around with graphical elements. It’s a good day for the Photoshop challenged among us!

IE9 is also getting several more interesting features, like better font rendering and control (something that other browsers have placed a lot of emphasis on lately), higher speed and much more.

Photo credit: Cornered by gfpeck

⇥ Win a 52″ HD system with php|a’s new contest

November 18, 2009
7 comments
 
⇥ Permalink
PHP on Windows: give it a try—it might be worth your while
PHP on Windows: give it a try—it might be worth your while

From the blatant self-promotion bin: in case you haven’t heard, php|a has a brand new contest running between now and the end of March.

The contest rules are fairly simple (despite all the legal gobbledygook): write the best PHP-on-Windows application (as judged by our panel of experts and the php|a readers) and you will be the winner of a killer grand prize made up of a 52″ LCD HDTV set, a 5.1 surround system and an XBOX Ultimate, plus your very own, all-expenses-paid ticket to TEK·X.

Currently, we have ten people who are hard at work on contest entries. To me, that seems like a paltry number, consider that we have over $10,000 in prizes available and you don’t even need to be running Windows, since we have partnered with Applied Innovations to provide the first sixty participants with their very own dedicated Windows VPS. You know you’re running out of excuses. Try it. Now. Go!

Why PHP on Windows?

As you can see on the php|a website, Microsoft is providing php|a with promotional consideration for the contest—needlessly to say, they have their reasons, which primarily are to make you try and write software in PHP and make it run on Windows. I, however, have a completely different set of motives for running the contest: to make you try and write software in PHP and make it run on Windows.

Where’s the difference? Microsoft wants you try their products because you will hopefully find them useful and adopt them in a setting in which their use will turn into sales. That’s a perfect valid motivation, particularly considering that they (a) are in the business of selling software and (b) they are providing you with a really strong incentive to give their products a try (and without any strings attached!). I, on the other hand, want as many PHP professionals as possible to be aware of what all their choices are.

Every time we discard a choice on the basis of anything other than it not being the right solution for our particular problem, we are doing ourselves and our clients a disservice. It happens a little too often that I come across a client who is suffering through their personal hell because they have discarded commercial alternatives on the basis that they “cost money” or “are not open-source.” In a professional setting, your first goal should be to find the best solution to a particular problem keeping all the appropriate constraints into consideration. If the cost of making OSS work for your specific problem is higher than acquiring a commercial package (a scenario that is not that far fetched if you’re trying to make the open-source software do something it wasn’t meant to), then you’re better off switching—perhaps with the long-term view of helping to sponsor an improvement in the OSS package to make it eventually meet your needs. By the same token, an ill-adapted open-source solution that doesn’t work well isn’t going to further the OSS cause much, either.

Thus, I hope that our little contest will give you an excuse to try out one of the many technologies and software products that Microsoft puts out. You may just find that one or two of them solve your problems in a way that saves you time, or money, or both—and, who knows, you could get a cool TV set and a free trip to one of the best PHP conferences of 2010 in the process!

Photo credit: Windows by eriwst (with some changes by yours truly).

⇥ Some tips for great presentations

November 16, 2009
10 comments
 
⇥ Permalink
What's in your slides?

What's in your slides?

There are far too many articles on the Net that purport to give their readers practical suggestions on writing good slide decks for presentations. By and far, I find that most of these articles hit far off the mark—for the simple reason that there isn’t “one true way” when it comes to writing compelling presentations and, therefore, no amount of “tips” or checklists will help you unless you have a clear understanding of the big picture: presenting is a holistic experience, and it should be treated as such.

This is not to say, however, that there aren’t good ways to improve your decks and your presentation skills—you just need to start from the beginning instead of jumping into the middle of the story. Here are some of the notes that I have accumulated over the years:

0. Find your groove

The first rule of writing a good deck is to… completely ignore your deck and focus, instead, on your presentation. If you are thinking that your presentation is, in fact, your deck, you have just uncovered the first cardinal mistake of writing a presentation!

A compelling presentation works because it is delivered by you—not your slides. Therefore, the first thing you need to do is focus on having something useful, important, intriguing and challenging to say. You should be able to deliver just as good a speech without the help of slides.

My personal philosophy is that a keynote should never answer questions—that’s what tutorials are for. A good talk works by planting doubts and raising challenges in the mind of the audience: you want the people who listen to you to leave the room with more questions than they came in with—you want them to go home and do something because of what you say.

Therefore, when I present a talk I always start by deciding what kind of trouble I want to cause. I pick one or two principal theses that I want to prove and focus all my efforts on figuring out how I can prove them to the audience. I don’t even start worrying about slides until a few days before I am supposed to give the talk.

As an added bonus to this approach, you will be able to deliver your talk without slides—projectors break, the power does, occasionally, go out and it’s not that unusual to forget that all-important video adaptor for your Mac. Therefore, it’s always good to know that, in a pinch, you can get it done without the deck.

Remember, no amount of design, graphics and special effects are going to make up for a crappy talk. Focus on what you want to say first, and make it pretty afterwards.

1. Remember that you are the speaker

This brings me to another important point: your slide deck should not be a crutch. Remember that you are the speaker, not your slides. Therefore, the slides should follow the flow of your presentation—not the other way around.

This may seem obvious, but, once you start examining the way most speakers present, you’ll see that it isn’t. When a speaker needs to constantly pause in between slides, he or she is using his deck as a crutch—the talk cannot continue until the next slide is ready for him or her to lean over. Similarly, when a speaker needs to point at his or her slides or read from them all the time, he or she is playing to the deck, and not the other way around.

When I prepare a presentation, once I have written my deck I practice presenting with my back to the screen. By the time I go on stage, I expect to be able to deliver my presentation as one fluid speech, with the slides switching behind my back in order to keep up with what I’m saying—the deck is my slave, and not the other way around. This means learning to account for the inevitable lag between the time you click the button on your remote and the deck advances to the next slide so that you don’t have to pause and wait for the right screen to show up—and the only way you can do that is through lots of rehearsals.

2. People come to see you, not your slides

The reason why slides that are chock-full of text are “bad” is that they take away from the number one reason why people come to see your talk: you.

If that sounds presumptuous, well… that’s what public speaking is: the belief that you have something important to say that other people will want to hear. If your guests are busy reading your slides, they are not busy listening to you. If they are interested in the topic but they didn’t want to listen to you, they’d buy a book. Get it? It’s about you. Not your slides, you. Slides: bad. You: good.

If your slides overflow with text because you’re worried that there might not be enough material to make them meaningful for offline viewing, I’d say that either (a) you need to write a companion paper or (b) you need to tell people that they should have been there to see you in order to understand your deck (pro tip: option (a) makes you sound much less like Cher’s current replicant died before they could get it to the cloning machine and now you’re channeling her spirit).

By the same token, the most important characteristic of your talk is confidence. Remember, whether you like to admit it or not, you are putting on a show. People who are entertained are more likely to pay attention to what you say and be receptive to your theses. This is not to say that you need to put on a full hour of standup comedy—but rather than droning on for an hour is not a good idea unless you’re speaking at a suicide-pact conference and the organizers have already handed out the razor blades.

Confidence comes primarily from—you guessed it—rehearsal and preparation. If you’re well prepared, you will naturally know what to say and when. If you’ve practiced, you’ll know which jokes fall flat, where you’re supposed to be in your presentation at any given point in time, and so on. Most importantly, you’ll be able to focus on your delivery rather than on your slides—adapting to how receptive the audience is to your talk and altering your speech accordingly.

3. There are no nails under your shoes, and you’re not drunk

The other stupendously bad piece of advice that I see repeated over and over is that you should deliver your presentation in a stationary position. That’s idiotic; I am a wanderer, and unashamedly so—and so are many excellent speakers I know. In fact, I will usually pace around the stage with a glass in my hand and the remote in the other (replacing the glass with a microphone if I don’t happen to be wearing a lapel mike). The way I see it, you should do what comes natural to you… because it will look natural.

What you should avoid at all costs is to “wobble”—stand stationary but continuously shift your weight from one leg to the other. It makes you look unsure of yourself, shifty (pardon the pun) and untrustworthy. If you can’t stand still and don’t want to move around, lean against a prop—a lectern works well for two things: holding your laptop and holding your weight. Better yet, walk around if the stage permits it.

4. Be an honest speaker

There is nothing that irks me more than a speaker who does not make a honest presentation. By honesty, here, I don’t mean that the speaker is necessarily right, just that he or she is telling the truth.

The difference is very important, because honesty is a very powerful tool to make your audience believe you. Thus, I dislike when I see someone demoing a product of any kind by using a highly-polished set of steps with a predictable outcome—they’re saying “hey, I had two months to prepare these twenty lines of code, but now I’m going to pretend that you can write them in 45 minutes!”

People are not that easily played. When Cal and I gave our Flex tutorials at CodeWorks this past fall, we went into our presentations armed with a general idea of what we wanted to show the audience (in this case, how to build a Twitter client with AIR) and our knowledge of Flex. Live coding without a pre-defined structure allowed us to engage the audience and give them a realistic impression of what coding with Flex Builder is really like. The inevitable occasional mistake (it’s surprisingly difficult to think, speak and type coherently at the same time), as well as the unexpected questions from the audience that we had to research on Google right there and then, served to reinforce the honesty of the message that we wanted to convey. Experts are not walking encyclopedias or manuals—they just know where to look for the things they haven’t figured out yet and, most of all, they are not afraid to be wrong.

5. Break your rules from time to time

Rules exist to be broken—and can be broken to much effect. My presentations tend to be extremely minimalistic in nature, but I will occasionally throw in an elaborate slide or two when I think that doing so will help my presentation.

It’s a gut call, but like everything else, presentations that rigidly follow a set of rules—whatever those rules might be—end up being formulaic. A bit of variety now and then can be a good thing.

There are also some instances when the rules of the game simply change. For example, my slides tend to be extremely simple—my presentation at Enterprise LAMP Camp in Nashville had a grand total of 25 words in 30 slides—but only when I give presentations in person. If I am writing a presentation for something like a webcast, where all people have to contend with is my voice, I will make my slides much heavier in textual content, since I want my audience to have something to follow while I speak.

Incidentally, while we are on the subject of remote presentations, I’d like to pass along a really useful tip: as Dale Carnegie used to say, your expression carries in your voice. If you smile while you’re speaking, the people at the other end of the conversation will know—and, similarly, if your expression remains the same throughout your presentation, your audience will perceive you as droning. The best way to make sure that you do vary your tone of voice throughout your talk is to turn on your webcam—most laptops come with one these days anyway—and place the resulting image at the bottom of the screen while you’re presenting. This will give you an “audience” of sort and is almost guaranteed to improve the tone of your voice—that is, if you can stomach looking at yourself talk for an hour at a time.

Photo credit: the php|a gang, from php|works 2008 in Atlanta (this is what happens when you weasel out of helping at a conference in my company).

⇥ Going virtual

November 13, 2009
4 comments
 
⇥ Permalink

Even as a relatively small company, we’re drawing huge benefits from virtualization.

(more…)

⇥ The world through square eyes

November 11, 2009
5 comments
 
⇥ Permalink

Rounded corners are everywhere… except for Internet Explorer, even after fourteen years.

(more…)

⇥ Who would buy MySQL?

November 9, 2009
3 comments
 
⇥ Permalink

It’s one thing to say that MySQL doesn’t belong in Oracle’s hands—and quite another to find another set of hands to hold it.

(more…)