HipHop: What you need to know

By now, unless you’re living under several hundred metres of rock,  you’ve probably heard that Facebook has released HipHop for PHP, a tool that compiles PHP into C++ with some interesting claims of speed improvement. The thickness of unawareness-inducing rock may have to be lower to know that php|a and BP have announced our full support for the project with a number of initiatives that we’re going to roll out over the next few months.

I have known about this project for a little while—Facebook was kind enough to invite me, along with a few other community members, to their office for a demo a few weeks ago. They gave me a copy of HipHop to try out, and I have been playing with it for the last few days.

What it is

First, a few random notes on how HipHop works. Haiping has done a great job of providing in-depth coverage in his post on the FB blog, so here are the CliffNotes:

  • HipHop transforms PHP into C++ code, which can then be compiled into a self-contained executable. The tool supports a large percentage of the current PHP 5.2 spec, with some obvious exceptions, like eval().
  • The tool attempts to find the maximum level of optimization possible for a given scenario using its own static analysis tool. For example, if it detects that all operations on a given variable are homogenous in type (e.g.: they are all integers), then it uses the corresponding C++ data type to provide maximum speed and memory enhancement. Where this is not possible, it implements its own variant type, equivalent to a zval.
  • HipHop doesn’t currently have its own PHP runtime—nor is it based on Zend Engine. It compiles everything to C++ and uses its own set of C++ library to provide the necessary support.
  • Once compiled, HipHop provides its own web server (a CLI interface is also available). It does not use (or require) Apache or any other server. Of course, this doesn’t preclude you from running one or more HipHop projects against separate ports on the same machine and then use Apache (or Squid, or any other server) to reverse proxy to them.
  • HipHop doesn’t currently support Windows (though, personally, I’d be surprised if that didn’t eventually change—it just so happens that FB built for the environment they use internally).
  • The entire tool is intended to be a drop-in replacement for the PHP runtime—as long as you do not use any functionality that it doesn’t support, you should be able to compile your existing site and run it.
  • Facebook is using HipHop in production to handle 90% of their traffic.

What it’s going to do

HipHop has the potential to be an incredibly disruptive product in the PHP landscape. If your company runs a PHP application that requires more than two servers (you’ll want two just for redundancy), you have no reason not to explore using HipHop. If Facebook’s claim of a 50% reduction in CPU usage means you could, potentially, get rid of 1/2 of your PHP machines with a minimum of investment. You don’t need to be Facebook to draw a huge advantage from this technology. Perhaps this one-to-one reduction is not apt, but even 40% or 30%—much more realistic—is major, and a truckload and a half more than any other existing PHP-related product can offer at this point.

Clearly, this argument can be flipped around: you have every incentive to make sure that your application runs with HipHop—which could give Facebook a unique opportunity to exert significant control over the way PHP evolves.

You might, at this point, think that this is not the first attempt at a PHP compiler—in fact, there are other compilers commercially available. Heck, even I wrote my own experimental compiler several years ago (in fact, I had a discussion about my experience with some of the Facebook team members about this a while back, presumably while they were researching HipHop)—and that ultimately it won’t make a difference.

But HipHop is neither experimental nor unproven, and it’s free; it is used, in production, by the second-largest site on the Internet—and make no mistake about it, there is no smoke-in-your-eyes (not to mention other body parts) sleight of hand on Facebook’s behalf; their site is written in PHP by PHP developers, without the help of large numbers of custom extensions. In fact, their goal is precisely to allow their developers to continue using PHP—which they consider the nimblest web development environment—without compromising their ability to grow at the current pace in a financially responsible way.

If you think about it, that makes a lot of sense from a business perspective: PHP is simple, flexible and easy; with HipHop as a drop-in compiler, FB can achieve an immense immediate benefit with essentially no disruption to their operations. The question now becomes: shouldn’t everybody else?

Reblog this post [with Zemanta]
 

Upheaval without wires

If you came here for advance information or predictions about Apple’s much discussed table, I am afraid I have neither. In fact, I am fairly sure that what I am about to tell you is unlikely to happen, so, there you are.

On the other hand, I have certain hopes for the product and one, in particular, is something that I haven’t seen anyone in the media discuss: could the Jesus Tablet revolutionize the way we buy and use wireless data?

Everyone agrees with the fact that the tablet will have some kind of 3G or 4G wireless cellular connectivity, but they all seem to take for granted that network access will be provisioned the same way it is done with the iPhone.

The tablet, however, is not a phone—quite the contrary—and, therefore, it’s perhaps a good idea to ask whether Apple may not be looking for ways to create an even more captive market.

To understand what the implications might be, one only needs look at the Kindle. It hasn’t occurred to me until recently that the killer feature of Amazon’s reader is not the e-ink screen, or the vast selection of books—it’s the fact that it makes accessing a cellular network completely seamless: there are no contracts for you to sign (except the one with Amazon), no data fees to pay (except the ones you pay to Amazon as part of your purchases) and—most importantly—no roaming fees to deal with.

In other words, even though it doesn’t look like one, the Kindle is a cell phone that works the world over through a single provider that is not your cellco. In fact, looking at Amazon’s recent announcement of its revised royalty scheme for the Kindle, you can see that they are planning to charge $0.15/MiB for data transfer, regardless of where the user is in the world. To put things in perspective, the lowest price that is available to me while roaming in the States is $1/MiB—and that’s if I pay a $10 monthly fee to get it reduced from $6/MiB, if I sign a long term agreement and if I agree to pay on top of my regular voice and data plan.

Compare this experience with the absolute hell that dealing with your current cellular company is, and you will see that there is an opportunity, for a sophisticated player, to create a wave of unprecedented disruption in the wireless market.

If Apple were to sell the tablet and make a data plan available through Apple, a number of really important things would happen:

  • First, its users would become entirely captive—no messing around with third-party companies, subsidies, and the likes
  • Second, a clueful company would, for the first time in history, be in control of a wireless experience end-to-end. Just like the iPhone’s killer feature is the App Store, this could be the tablet’s one defining characteristic
  • Third, Apple’s immense buying power would bring costs down to a level that is going to be difficult to beat
  • Fourth, the fact that it doesn’t look like a phone doesn’t mean that the tablet couldn’t work like one—and without pesky wireless companies dictating terms, no-one would prevent customers from installing Skype or a SIP client on their systems
  • Fifth, Apple could easily integrate this service with others it already provides (MobileMe Data?)

The disruption of this approach would be nearly total: because customers purchase service from Apple, the underlying network provider becomes little more than a curiosity, and it’s not unthinkable for our friends from Cupertino to eventually set up their own global wireless network.

Of course, I have no illusion that it’s highly unlikely for any of this to happen—I mean, the wireless companies cannot possibly be so shortsighted to let this happen, right?

Right?

Image credit: Tablets by swimboy1

Reblog this post [with Zemanta]
 

The story behind TEK·X’s Charter Ticket program

Unless you’re living under a particularly large rock, you’ve probably heard that we are doing a special promotion, which we call Charter Ticket Program, that makes it possible to purchase a full-experience TEK·X ticket—valid for both the main conference and tutorial day—for $650. The catch (if you want to call it that) is that the special is only valid until we announce the schedule—so, effectively, you need to put a lot of trust in our ability to attract top speaking talent and stitch together the schedule of a conference that you will want to attend.

Given the incredible response that our call for papers has received—over 9 proposals for each speaking slot—I have no doubt that we will be able to create a schedule rich in variety and topics that are very relevant to PHP developers from all walks of life. If anything, we’ve had a really hard time finding room for all the talks that we wanted to be part of TEK·X and, although I believe that my colleague Keith Casey will have some hopefully welcome news on this subject to share in a few days, we’ve run out of room much sooner than we ran out of good talks to approve.

The reasoning behing the Charter Program is very simple: we recognize that there is a core of attendees for whom our conferences have become an opportunity to meet up with their peers and learn what’s happening in the PHP world. In fact, there are some who have been to all of MTA’s conferences, so we felt that they deserve a little some extra special.

The Charter Program is designed specifically for these folks: at $650, the current price of the tickets is almost half the price of a regular ticket at the door—and $350 less than the lowest early-bird price. It is the lowest price you will be able to secure a spot at TEK for—an opportunity for a great deal if you put a little faith in the folks who have brought so many memorable events to the PHP community.

To take advantage of the Charter Ticket Program and save as much as 45% over the price of a full-experience ticket, you must sign up for TEK·X before January 6th, 2010, when our schedule will be officially announced.

 

TAB’s new layout

Over the past few weeks, I have toyed with the idea of giving The Accidental Businessman a new look. I don’t dislike the current theme, but, as I mentioned in an earlier post, it’s a bit too “angular” for my taste.

Over the last few days, therefore, I stole a few minutes of free time here and there to come up with a new design. It turned out to be an interesting experience, both because on this site I have a degree of freedom with experimentation that I can’t really afford anywhere else (not necessarily a good thing) and because of the technical challenges of realizing my vision for the site on current browsers (the site works with IE8, FF3.5 and Safari 4).

Maximum space

My first concern was to maximize the space available on the screen for viewing. Screen reading is quite difficult—ironically because there is usually much more space available than the comfortable reading angle that the human eye can accommodate.

The default solution to this problem is to confine the reading area to a small horizontal section of the screen; this works, but it’s also very inefficient: it’s the physical-world equivalent of printing a sixty-character line of point-10 font on an A2-size sheet: inefficient, wasteful and difficult to handle. The way I see it, the typical web layout works if you like scrolling. Me, I like to open a webpage, lean back on my chair and read.

Speaking of real world, it occurs to me that newspapers have already solved this problem—and, in so doing, have established a number of rules to make the task of as much space available as possible in a manner that is both efficient and aesthetically pleasing. Therefore, the new TAB layout attempts to mimic the look of newsprint as much as possible, keeping in mind that, of course, my blog is not printed on paper (therefore, some concessions to life online—such as leaving some room for comments).

Layout

The new layout makes heavy use of Javascript—according to my statistics, practically all my visitors have a Javascript-capable browser and leave JS enabled, so I have absolutely no problem with taking advantage of a bit of scripting to achieve my goals¹. Through the magic of jQuery, the content is automagically laid out across multiple columns—their number determined based on the site of the browser window—and paginated across multiple screen, which you can navigate without a browser refresh².

I decided to keep a comment area on the right-hand side only so that comments can be visible at all times. I am unsure as to how good this is—on a screen big enough, it seems to work fairly well, but at lower resolutions it robs much of the content area from the rest of the article.

Typography

The proper use of type is as important on the web as it is on paper—even more so on the former, perhaps, because of the limited resolution at which we are forced to view type online. Unfortunately, typography is often completely disregarded by web designers—I’m not sure why this is, but the focus seems to always be on graphical elements that, at the end of the day, have little or no importance: if your header looks colourful and has all sorts of bells and whistles, but people can’t read what in the body of your site, they are unlikely to be very happy.

In choosing a typographical design for TAB, I started from the most excellent Baseline CSS Framework, which, much like newspaper typesetters, uses a simple set of rules to ensure that multi-columnar text will line up properly on the font’s baseline. The framework’s setup is actually fairly simple: each style is an integer multiple of the base font size and line height, resulting in a text flow that lines up perfectly across multiple columns—in fact, as long as every element on a page follows the same rule, images and practically any other type of content can be added to an article and still maintain the same baseline alignment.

The script also support a very basic form of orphan and widow control, so that a heading should never appear either at the end of a column, or (even worse) “broken” across two columns. I am investigating ways to improve on this particular piece of technology to improve paragraph control well beyond the basics, but I fear that some of the calculations required will slow things down too much. Unfortunately, the level of control that CSS affords over sub-paragraph data (at least in CSS2, which is the target here) is not quite as good as it could be.

Finally, you will note that the text in the columns is justified. I usually dislike full justification in a browser because hyphenation is not a possibility and, therefore, there are often unsightly gaps between words that make reading a challenge. However, using the most excellent Hyphenator package by Mathias Nater, I was able to add hyphenation as well, which closes the gaps between words and makes text flow very nicely, providing both a pleasant look and a practical, readable format that should be easy on the eye.

Limitations

The theme is still quite rough around the edges. First of all, the contrast is not quite where I’d like it to be—I feel that the design is easy on the eye, but could probably use a little more punch. I’m not much of an expert on colour theory, so I’ll probably be nagging my good friend Arbi, whose worst day was the day I acquired a copy of Photoshop, for some advice. The layout of pages other than main articles needs some adjustment as well.

From a technical viewpoint, the method used to lay out the columns is a bit brutal—I am essentially cheating by duplicating the content over and over and only showing selected portions of it as appropriate—which works visually, but makes things like cutting and pasting a challenge³. Rendering performance under Internet Explorer is also a problem—although that’s something I think can be fixed by optimizing the Javascript code a bit.

Thus, think of this as an experiment in the works. I welcome your comments, suggestions, bug reports, and so on. I do, at some point, plan on making this an actual Wordpress theme—it’s still too “Tabinized” for public consumption at the moment, but feel free to borrow, copy and use at will; none of the code or stylesheets on this site are minized or obscured and they are explicitly released under a BSD-like license (unlike the content itself).

Photo credit: A Stack of Newspapers, by DRB62

¹ Of course, scripting only affects the layout visually and not its functionality or content—thus, if you use an assistive device, such as a screen reader, the site should remain easily accessible.

² This is my idea of “good pagination.” I hate when sites split content across multiple pages as a way to force reloads so they can serve more ads.

³ CSS3 is going to make this type of layout much easier, but support for flowing controls is still a way off in several browsers.

 

Microsoft is and Microsoft does

Elephpant does Redmond!

Elephpant does Redmond!

Every year, Microsoft organizes a small event, called Web Development Summit, to which they invite a few members of the PHP community. The WDS is a good opportunity to exchange information with Microsoft, learn about new products they are working on and generally catch up with a number of friends from the community. Several others have already posted their impressions of this year’s meeting, to which I add my own.

Good stuff

Microsoft’s attitude towards open-source has changed considerably over the last few years—a fact that is finally starting to permeate through its historical insistence on vertical integration in favour of more willingness to integrate its products with other platforms. At the end of the day, Microsoft has realized that the key to improving adoption of Windows Server—and, more importantly, stemming the migration away from it—is to play nice with other technologies.

More importantly (at least from my perspective), more people within Microsoft are finally realizing that working within the open-source world requires a shift in the way they establish relationships and position themselves. There are some within the company that have realized this a long time ago and have, as a result, established some strong ties with the PHP community; it’s good to see that this frame of mind is finally permeating through the organization and changing the way it approaches its dealings with us.

The willingness to look beyond its own walls is also making it possible for Microsoft to come up with some truly innovative and useful products. One of the most impressive ones that I saw during the WDS is Expression Web’s SuperPreview¹, which truly simplifies the process of side-by-side comparison between browsers, including multiple versions of Internet Explorer. I was teaching a seminar of HTML and CSS at a client just yesterday and had an opportunity to show this product to them. It was received with a chorus of wows, followed by significant gnashing of teeth when they realized that their organization’s default Windows install wouldn’t support it.

I also truly appreciated the fact that the evangelists who were at WDS took the time to really drive home the fact that “Microsoft” is not one entity, but, rather, a conglomerate of many different divisions and people—and, therefore, of many different opinions and strategic views that are bound, at times, to be in conflict with one another. To anyone who has had the opportunity to work for (or with) a large organization, this is an obvious fact—but many who are used to smaller work environments don’t fully understand the complexities of interacting with such a large base of coworkers, each with their own priorities and strategies (I always chuckle when I hear someone start a sentence with “You Microsoft guys need to…”).

Finally, I had the pleasure of leading a ten-minute discussion on the status of the PHP community, which, judging from the reactions that it received, was a cathartic experience for some people. I took advantage of the unusual convergence of members from various PHP-related groups, including Drupal, Joomla and WordPress, to point out that it might be opportune for all of these communities to intermingle and work together with the “core” PHP community towards common goals to ensure a good exchange of ideas. After all, what comes down the pipe from core will eventually be of benefit (or not) to anyone whose application lives downstream, so a feedback channel in the form of conversations and participation is going to be essential to the health of the entire PHP ecosystem².

Not so good stuff

The whole point of the WDS was to give Microsoft an opportunity to present their current ideas to a small focus group so that they would have an opportunity to revise and focus their message before presenting it to the world at large; therefore, it would be inappropriate for me to comment specifically on the areas for improvement that we saw.

Suffice it to say that some divisions inside Microsoft are still finding it difficult to let go of the no longer appropriate view of open-source communities are a ragtag group of renegades intent on not-so-subtly subverting the commercial software landscape. By my own guesstimate-based account, the 40 or so people at WDS directly or indirectly represented at least a good $100M of annual sales (the number actually jumped by several hundred millions halfway through, but I’m not counting that), all made possible by the use of open-source software. These people are not trying to make a philosophical point—they are simply trying to achieve specific goals with the best tools at their disposal. Microsoft employees simply need to learn to see us as partners, and not as gifted amateurs with a source-code fetish.

By the same token, if we decide to engage with companies like Microsoft, it’s important to make an effort to understand the unique challenges that they must face, internally and externally, in order to work with us. Obviously, we can’t solve their problems—but if we don’t even bother finding out what they are, we are not being good community citizens, either.

Disclosure: Microsoft is a customer of both MTA and Blue Parabola, and they paid most of my expenses to attend the WDS.


¹ Of course, SuperPreview (which, to me, is the killer feature in Expression Web) is not even listed in the top-three features on the product page. Disconnect, anyone?

² On a personal note, I was happy to see that my ability to drive an entire room full of people up the wall in ten minutes or less has not waned with the years. My intention was to stir emotions—and that’s exactly what I accomplished.

 

Old school task management

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

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)

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

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

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).