Sunday, July 12, 2009

towards a better talk

Every now and then, when I attend a conference, I try to analyze the way the best talks are delivered (and not only the contents). After that, I make a mental note of certain points of the important skills that the speakers successfully demonstrated.

Presentation

What I list below however is something difference. It's the exact opposite. I write down few minus points of my own talks (and from others, too) which do not match to those good traits of an excellent talk.

First thing first: the accent. For me and others non-native speakers, it is difficult to speak English without any accents. In the best case, a presentation delivered with a strong accent would mean few parts here and there are not understood by the audience. This is usually not a big problem as (most of the time) our brain can interpolate the missing part. In the worst case, the audience can not understand the talk at all. Even worse if the presenter talks very fast like a machine gun.

Still language-related: the unnecessary pause. This is best illustrated with an example: "Akademy is ... ehm ... a conference for ... ehm ... KDE developers and .. ehm also contributors.". The flow of the talk becomes weird, the speaker seems to think more about the literal sentence rather than the overall idea. The best advice I got to reduce this problem to practice a lot. In addition, pretend that you are having a water-cooler chat with your fellow coworkers instead of addressing thousands of people.

Spending time looking at the laptop and/or the big screen. The irony is that we usually do it when we are stuck with the same slide for few minutes. The slide does not change, yet we are just staring at it as if we expect some magic will happen. The audience is our friend, so we'd better look at them as we talk.

Forgetting to engage the audience. Especially for a long talk, the presentation's attractiveness quickly wears off once we start doing the one-way conversation for more than 10 minutes. Usually this is easy to notice, just check if they start concentrating more to the laptops instead of paying an attention or watching the slides. In that case, some kind of a question or a quick informal poll typically helps to get the audience back on track again.

Monotonic speech, something still closely related to the above point. In such a conference, the audience does not intend to enjoy a bed-time story, hence the importance of inserting surprises when appropriate, provoking some thrills, triggering a bit of drama, throwing jokes, and such other related acts. Never afraid to show some emotion, be it a frustration or an excitement.

Letting the slides dictate the talk. We often forget that the slides are there to help us to convey the messages. It's not the actual presentation. It's just the outline of the book, it's not the book itself. Thus, the talk must not be as rigid as the prepared slides. Not seldom we need to carry out adjustments according to the situation, e.g. skipping some parts or elaborating points not detailed in the slides.

Lack of passion. We definitely need to show that we are having fun doing the talk! How could we expect the audience to enjoy it if we do not express and shared the joy?

To counter the above points, the key is the rehearsal, or rather tons of rehearsals. Often, checking out the video of your own talks helps a lot. Of course, there are the usual advices of studying Presentation Zen, watching TED talks, keynotes from His Steveness, and many other online-available materials.

Last but not least, regardless the way the talk is carried out, I still always thumb-up and respect those who have the courage to stand in front of many people and present their ideas. It's easy to give remarks on how good (or bad) a football player is, however it's far more difficult to actually play football in the real field under the scrutiny of millions of eyes.

Saturday, July 11, 2009

paella de marisco

Seafood Paella

Also known as seafood paella, something we tried when we were in Las Palmas, Gran Canaria. Now I am motivated to cook it myself, sometime in the near future, in particular since I am also a fan of mussels.

Friday, July 03, 2009

who would have thought it would end up like this?

Coming back to Oslo (from LinuxTag in Berlin), apparently the heat wave which hits Europe was its peak, at least here in Oslo. To add insult to the injury, it does not really help if the ventilation system acts strangely, which it usually does right when you need it. We sort of enjoy the rare moment when Oslo is warmer than most other places.

In any case, Berlin was fantastic. There were already few blog posts (e.g. from Lydia, Chani, Sebas, Frederik) about LinuxTag so I won't write too much about it. I was very content with my talk since the room was quite filled when I was doing my presentation. The Qt booth was fun as well, I managed to have short chats here and there with the fellow Berlin trolls, KDAB guys, KDE people, and some other new contacts.

As it was nicely planned long time ago (except a little glitch with some kind of a desktop suite program :-), we did manage a cuisine-exchange program (and it was not about pizza). Hmm, I still need to find those pictures...

Thursday, July 02, 2009

2009 developer days

Just like last year, this fall we will have another Qt Developer Days. Europeans might want to visit Munich, Americans are better served with San Francisco.

Will I go there? Well, unless there is something wrong, yes I will. Note that a little information about the sessions is already available. I leave it as an exercise to the reader, which talks in the Innovate track I will hold :)

save me from being confused, show me what I'm looking for

Since three brings the luck and it is the first Mersenne prime, I am glad to list three QWebView tricks for your pleasure:

Night-mode

Snap scrolling:

Transparency, something you have also seen before:

Monday, June 29, 2009

ivory tower? I'd pick one of the anomalies of water

The Qt/S60 team continues to make some progresses. After Pyramid, Temple, and Garden, finally Tower came out of its cage. For a quick intro of what is inside Tower, check out the video. In particular, QtWebKit is included in this prerelease (yay!), thanks to the hard work of Simon, Norbert, Laszlo, Janne, Kristian, and other great hackers. My little contribution improves from only the basic engine behind the infamous Fluid Launcher (remember PictureFlow?) to a tech-demo QtWebKit-based web browser (created quickly in 1.5 days, cause I needed to rush to LinuxTag) dubbed Anomaly (Mobile). Once I am free again (now we're busy preparing for Akademy), I will put some more efforts to add more polishes to Anomaly Mobile. Imagine having visual bookmarks, flick support, Google suggest, optimized disk cache, double-tap-to-zoom, of course also smooth zooming in and out, snap scrolling, perhaps even night mode for your Nokia 5800, Nokia N97, and other Nokia touch devices, all implemented with Qt? /me just drools :-)

quattro cinque due

Again the freshly baked: Qt 4.5.2.

Details on the changes in this release is available in the changes-4.5.2 file. As for QtWebKit, some weeks ago I played the patch monkey role and did backport and test a number of critical fixes from WebKit trunk, among others stuff related to canvas, memory access and leaks, rendering painting and performance, JavaScript, plugin handling, clipboard, SVG, and many others. In addition Simon also tackled the backporting of various security fixes.

Overall, 4.5.2 seems to be a solid patch release. An upgrade from 4.5.x is highly recommended.

In a related note, Qt Creator 1.2 was also out. It brings a better fakevim plugin, regex search/replace, and numerous other improvements. Grab it while it's hot.

Wednesday, June 24, 2009

and the only chance we have of moving on

Like I wrote before, an exciting event is coming up soon: LinuxTag. I am still polishing the slides for my Advanced Graphics Programming with Qt. In few hours I will be flying to Berlin.

If you are around, drop Qt Software stand #108 in hall 7.2b a visit!

there was a time that we'd stay up all night, best friends, talking til the daylight

Just like last year, I took again the picture of the horizon from my apartment, in the early few seconds of Monday. Last Sunday was summer solstice (for the northern hemisphere), the day was 2 seconds longer (in Oslo) compared to Saturday.

Wednesday, June 10, 2009

Please, I'll be strong, I'm finding it hard to resist

Things are always exciting.

Within three weeks, I will be in Gran Canaria for the Desktop Summit, specifically for Akademy 2009. The summit is also sponsored by Nokia, via Qt Software and Maemo.

My talk, Special F/X with Graphics View will be on Tuesday afternoon. There will be some graphics demo which will be shown for time there, so show up if you are interested in. Check also an array of other fabulous presentations.

I can't wait to finally meet many fellow KDE hackers face to face. And yes, this will be my first Akademy. Afterall, there is always a first time for everything...

Wait, I'm wrong, should have done better than this

Things are always exciting.

Within two weeks, I will be in Berlin for LinuxTag, "Where .COM meets .ORG", one of the important FOSS shows in Europe. We (as in Qt Software) will have a stand, just check stand #108 in hall 7.2b. Drop us a visit!

And if you stay until Saturday, feel free to show up at my short talk (as in 30 minutes) Advanced Graphics Programming with Qt. Nothing fancy there, but if you want to kick-start doing cool stuff with Qt, try not to miss it. Of course, there is a whole stack of attractive presentations at the KDE track (and other tracks, too) on Saturday.

I can't wait to see Berlin again. And of course, since our very own Mr. Portale lives in Berlin, we would not miss the chance to exchange our cuisine experiences, just like the last time. This time however, I will make sure it's not only about pizza!

In all cases, if you are around and want to have a chat, drop me an email (ariya.hidayat AT gmail DOT com).

Sunday, June 07, 2009

QS_BIND macro magic

At my request, Kent kindly changed the initialization of the Qt bindings (from the binding generator project) so that the class wrappers are populated in a single function for every module. This also means, you don't have to compile everything as plugins and then deploy them with your scripted application. You can just include the appropriate .pri file (e.g. generated_cpp/com_trolltech_qt_gui/com_trolltech_qt_gui.pri for Qt Gui bindings) and then build together with your project (or compiled to non-shipped, project-wide static library, if you wish).

Another gem: for each module you will have a source file, e.g. qt_gui_init.cpp for Qt Gui, that is responsible to create the wrapper classes. This means, the two macro tricks would work:

// example: QS_BIND_MODULE(new QScriptEngine, core)
#define QS_BIND_MODULE(engine, modulename) \
extern void qtscript_initialize_com_trolltech_qt_##modulename##_bindings(QScriptValue &extensionObject); \
  { QScriptValue extensionObject = (engine)->globalObject(); \
  qtscript_initialize_com_trolltech_qt_##modulename##_bindings(extensionObject); }

// example: QS_BIND_CLASS(new QScriptEngine, QPushButton)
#define QS_BIND_CLASS(engine, classname) \
extern QScriptValue qtscript_create_##classname##_class(QScriptEngine*); \
  (engine)->globalObject().setProperty(#classname, \
      qtscript_create_##classname##_class((engine)), \
      QScriptValue::SkipInEnumeration);

(or download/git-clone it from gist.github.com/125487)

While the first is arguable already useful, the second one is interesting because it allows you to limit the bindings to certain classes only. For example, if you want to extend the look-and-feel of some GUI elements in your cool applications, just offer the user the bindings for QPainter, QBrush, QPen, and other related classes. Neat, isn't it?

On a related note, you should also perform some kind of dance that our QtScript hero has also created the bindings for the Animation and State Machine frameworks slated for Qt 4.6.

Isn't the Qt Script world wonderful?