Monday, July 25, 2011

Is it just me

I'm thinking about starting a petition against the misuse of Powerpoint. Unusually though, I'm not campaigning against 'Death by Powerpoint' problem (scourge though it is). My campaign is "If it isn't a presentation, it isn't a Powerpoint'.

In a meeting with a colleague last week, he said that he'd put together a few slides for a client meeting next week. I mentioned that previous meetings had been in a room without a projector, so it wasn't likely to be 'presentation-friendly'. I added that he should just use Word. Apparently though he wasn't expecting to present the material, just use Powerpoint to produce a document.

The product wasn't going to be a detailed report. It would be a few observations, suggestions and recommendations. Maybe with a couple of diagrams. I suspect it wouldn't be any harder to produce such a document in Powerpoint. It may even be easier. But it gives me the squirms.

Powerpoint is (or should be) are creating slides for a presentation. They don't have to include pretty animations and transitions and there's nothing wrong with being able to print out the presentation for reference. Using it to build something intended as a printed document seems wrong though, like storing a date in a string.

It is that form of misuse that ensures Microsoft have to allow the use of 8 and 10pt fonts, and default to new slides to streams of bullet points. Things that kill 'real' presentations. Frankly, it turns Powerpoint into a mule. [I'm not sure whether Apple's Keynote suffers the same problem.]

And we shouldn't judge a document on the number of pages it has. If you can fit it all on a single page, there's nothing wrong with that. Blowing up the font size to 'Super Large', only fitting three or four sentences to a page and then delivering it in ten pages doesn't help. And it either wastes paper, or you end up printing it two-pages per side of paper and just making it look ugly.

So save Powerpoint for when you expect to be clicking through the slides,

PS.
Martin Widlake and Tim Hall have both blogged about Powerpoint recently. Martin has been developing his image skills. Apparently gradients fills are more natural. Tim points out that the only time you see a floppy disk these days is on a toolbar icon.

Next week I've got a one-day course on delivering successful presentations. For that I've got to prepare a two minute presentation, so I'll see if I can manage a '2 Minute Application Express'. Will practice that over the next few days, and maybe post it as a webcast.

Wednesday, July 20, 2011

Turning it around

I wanted to share an insight into the REVERSE operation inspired by a stackoverflow question.

The question was about using the built-in REVERSE function to find the characters at the end of a string. Sticking the REVERSE keywork in the CREATE INDEX statement wasn't doing the job. Adam Musch responded to say that REVERSE should be used solely to avoid contention and that the optimizer doesn't do range scans on reverse key indexes.

Markus Winand suggested a manual function-based index rather than just using the REVERSE keyword in the CREATE INDEX statement. While that might work sometimes, it isn't a solution I'd recommend.

With a quick experiment you can see one reason why.

select 'é', dump('é'), dump(reverse('é')) from dual;

'É'DUMP('É')DUMP(REVERSE('É'))
éTyp=96 Len=2: 195,169Typ=96 Len=2: 169,195

A multi-byte character has the BYTES reversed. As such, the character is not actually preserved and cannot be matched. LIKE, BETWEEN and regular expressions matches against another string (column or literal) become meaningless. The only thing that can be done is to reverse another string and do a direct byte-to-byte comparison.

That means you might be okay if you do a

SELECT * FROM table
WHERE reverse(column) LIKE reverse(:var)||'%'

Unless you can come up with a failure case....