⇥ On writing talks

June 14, 2008
4 comments
 
⇥ Permalink

After giving my “PHP and the Taste of Mayo” keynote presentation this morning at the Dutch PHP Conference, I have been approached by a few people who complimented me on my presentation style (perhaps they were just being nice), and a couple actually asked me how I went about preparing my talk, so I thought I’d write up a few random comments on my blog.

First of all, preparing a keynote is a very torturous process for me—which is why I normally avoid public speaking like the plague. I start working on my presentations as soon as I know about them, but I don’t write down any slides until the very end. The reason for this is very simple: I have to work my way backwards from the end.

The two most important aspects of a talk are the message and the presentation. Whenever I write a talk (or an article), I try to first start by deciding on a few key points that I want to drive home. In my experience, it’s unrealistic to expect an attendee to absorb every single slide, which means that, as a speaker, you should make it your goal to ensure that everyone takes home at least one or two key concepts. This means that you are going to have to repeat yourself—and you will have to do it in such a way that doesn’t sound like you’re repeating yourself.

When I finally do start preparing my slides, I aim for a very particular style—I want the slides to act as a visual aid to my voice, and not the other way around. Too many speakers seem to work their slides the other way around and end up preparing slides chock full of bulletpoints and text. This makes the speaker a slave to the slides—and this means that both the speaker and the attendees will have to split their attention between the screen and the voice commentary.

In writing my slides, I try to create a good balance between serious concepts and funny remarks. Of course, funny is often in the eye of the beholder, and I am not that good at deliverying jokes, so I try to keep the humour lights and fairly obvious—I just want one more tool to keep peoples’ eyes peeled to the screen, and not to their e-mail inboxes.

Right before a talk, I will also do what I call a “timing” of the slides—I just go through them and point out the key elements that I want to explain during my talk. At this stage, I aim for a run time of around 2/3 the period allocated for my talk (e.g.: 30 minutes for a 45-minute talk). The main reason for this is that, on the stage, I tend to speak more slowly, and that, no matter how many times I’ve spoken before, I am always nervous when I’m front of a large audience, and therefore I need more time to present my concepts. This usually works out pretty well for me—this morning, for example, I did my presentation in 48 minutes out of the allocated 45.

During my timing run, I have also developed a simple test to tell whether I’ve written good slides: I pretend that I have a large screen behind my back, and I consciously count the number of times that I would need to turn to point at something on a slide. If my slides are being a good visual aid to my presentation, that should happen a very small number of times.

Finally, when presenting, I really like to walk around the stage; this makes it possible to keep the audience focused on a moving object, which keeps their attention going. If I’ve done things right and the slides are supporting my talk (as opposed to the other way around), moving around gives me an opportunity to use the visual aids a straight man to a number of visual gags to keep people entertained. I also make a conscious effort to vary the tone of my voice, rather than droning on (which is all too easy a trap to fall into when you’re not speaking in your own language), to keep people involved.

At the conclusion of a talk, I always offer the audience what I think are two or three important concepts that I believe they should take away from my talk, as well as a challenge to comment on what I said on my blog, their blogs, or any other relevant online forum. I used to take questions, but, these days, it’s much more productive to give people an opportunity to create a real dialogue online instead.

So there you have it—this is how I prepare my talks. How do you prepare yours? What do you think I could improve?

⇥ Challenge #3 beaten!

June 11, 2008
3 comments
 
⇥ Permalink

As predicted, someone came up with a solution to Challenge #3 in no more than a few hours. In fact, ten people came up with a solution as of tonight—and the first one came in a mere 90 minutes after I posted it, so either it was really easy, or I’m dealing with some smart folks :-)

The riddle was generated using a simple algorithm: the alphabetical position of each letter of the cleartext phrase was added to consecutive prime numbers of increasing value (i.e.: 2, 3, 5, 7, 11, 13, etc.). The result was then modulo 26′d and converted back into a letter.

Once the algorithm is reversed, the encrypted phrase is rendered back into the cleartext, which is “THE ABOMINABLE SNOW RABBIT”. In case you’re wondering, The Abominable Snow Rabbit is the title of a 1961 Warner Bros. short that my kids were watching last night as I was coming up with this challenge. The second clue was a reference to a post on my Twitter timeline, which referred to the fact that I had just composed a database of the first 100,000,000 prime numbers (an exercise for this Saturday’s presentation at DPHP)—a clear clue to the solution.

The challenge was complicated by two factors. First, a lot of people think that the number 1 is prime, which is not the case—I thought this might confuse some folks. The second is that the sequence of primes does not reset moving from the key to the encrypted text—and this did trip some people.

In any case, Edward Z. Yang came up with the solution first (after barely 1.5 hours!), and to him goes the winning prize.

Well, until next time—I’ll go back to thinking up some new challenge.

⇥ Challenge #3: simpler, but not too much

June 10, 2008
3 comments
 
⇥ Permalink

It turns out that more people were trying to crack Challenge #2 than I thought, and some were looking for solutions that were far more esoteric than anything I thought of.

For Challenge #3, I have devised a new riddle that is simpler to solve than the previous one—because I’m giving you a key:

UXULCPZEFRZD = SUPERCILIOUS

Given this key, send me e-mail with the plain-text version of this encrypted text:

IYZ BIXBBIBGWX PMRB AXCIRM

As with the previous challenges, everything you need to solve the puzzle is right here (including, this time, an explicit decryption key), although it helps if you have followed my Twitter timeline (assuming Twitter is working for a change). The solution is really simple this time—so I wouldn’t be surprised if I wake up tomorrow and find out that one of the five people who read my blog has already e-mailed me a solution.

Here are the rules:

  • The winner is the first person from whom I receive an e-mail with the correct answer. I am not responsible for e-mail messages that get lost in any way, and the timestamp on my end is the final judge of who gets here “first”. If you win, you agree to allow me to post your name (and URL if you like) here—just so that everyone else knows I’m not making the winners’ names up.

  • The riddle does have a solution—but it is, of course, possible that I have made a mistake in calculating it. In that case, I will void the contest and post a correct one.
  • The winner will receive a $50 gift certificate that can be spent at the php|architect online store on any product, without any limitation, so long as the entire $50 is spent on a single order (sorry, that’s the way our store works). The coupon will expire after one year from the date of issue.
  • The contest closes on June 30, 2008, at which point I will post the correct solution if no-one has sent it to me yet.

⇥ Challenge 2.0 goes unresolved!

June 5, 2008
2 comments
 
⇥ Permalink

It looks like I might have aimed a little too high for my second challenge—which has gone unanswered.

The result was actually relatively simple to resolve. The encrypted cypher contained a long word—SGDWPALBKCTXH—which was the key to the entire thing. The only word of 13 characters in that blog post was “sophisticated,” which, given the starting point should have given would-be solvers a starting clue.
In reality, the encryption mechanism was a simple addition cypher in which the zero-based alphabetical position of each letter (i.e.: A=0, B=1, etc.) was replaced with the sum of itself plus the preceding letter (excluding spaces).
The solution could therefore be obtained by reversing the process—for example with a simple algorithm like this:

$code = “SGDWPALBKCTXH LVQHIH LA LAPA JZLGOP”;
echo $code[0];

$offset = ord(‘A’);
$prev = ord($code[0]) – $offset;

for ($i = 1; $i < strlen($code); $i++) {
if (‘ ‘ === $code[$i] ) {
echo ‘ ‘;
continue;
}
$letter = ord($code[$i]) – $offset – $prev;
if ($letter < 0) {
$letter = $letter + 26;
}
$prev = $letter;
echo chr($letter + $offset);
}
This gives the final solution: “SOPHISTICATED INDEED IS THIS RIDDLE”.