Tuesday, December 22, 2009

Snowtter + Merry Xmas!

We released today a small application called "Snowtter" to bring N900 users that "Xmas is here, time to relax and enjoy!" - feeling. Basically it just shows Twitter messages related to holiday times, floating around with snowflakes & accelerometer support. But it's the idea that counts, right? =)



If you want to see this in your N900:
  1. Make sure that you have the necessary Qt libraries installed (libqt4-gui, libqt4-network, libqt4-xml, libqt4-opengl). Qt 4.5 will do, but for better performance and graphics quality Qt 4.6 is highly recommended! (Instructions on how to install latest Qt 4.6 packages from extras-devel here)
  2. Download the application package from here
  3. Install the package with "dpkg -i snowtter_1.0_armel.deb". So ssh connection, sudo gainroot or red-pill-mode required (no install-file available for now, sorry)

Thanks to all the cool Maemo/Nokia/Qt people for this year and Merry Xmas For Everyone!

Monday, October 19, 2009

WebKit on (multitouch) steroids!

While being in Maemo Summit or in Qt Developer Days, did you notice this guy below? Did you ask from him "Have you been working with multitouch-enabled WebKit lately?" Why not? ;-)


Kimi has been working in project called "Starlight" and part of the project is to bring multitouch into WebKit. So while you look at the video below and think "Hmm, just another multitouch photo rotate&scale demo..." please notice that this is all done inside browser with just HTML, CSS & JavaScript! In other words: It's just a normal web page without any black magic.





Starlight has now public website here, more videos available in here, and a developer guide with API & examples here.

Isn't it just convenient that this was published about simultaneously with the information that Maemo 6 will support multitouch... Sure beats my lame N810 multitouch hack! ;-)

Thursday, October 15, 2009

Maemo Summit + Qt Dev Days

We got back to Finland last night from our longish Helsinki->Amsterdam->Munich->Helsinki trip! Full load of excellent presentations, nice discussions with people and a strong feeling that things are proceeding into right direction!


Blogging with real content later, now I just want to thank everyone for participating!

Monday, September 28, 2009

Animated Tabs

During the weekend I got inspired with the question: What could a tab-widget look like when implemented as a QGraphicsWidget and armed with QGraphicsEffects & Qt Animation framework?

This is the first try:
video

Without explaining any further what/why/how (except that "mouse" icon is there just to show when button is down), I'd like to ask comments on how would you want tabs to behave? Note that the goal here is to have eye candy and usability, not necessarily long battery life... ;-)

Update: To demo how this looks (and performs) in tablets, I built Qt 4.6 tp1 for N810. With reduced effects (it's after all just N810), the prototype behaves like this:
video

Graphics:
- Background: Aamos & Eelis
- Icons: Tango http://tango.freedesktop.org

Monday, July 27, 2009

N810 Multitouch F-F-F-Fun

I'm back from vacation, summer went fast as always! Tried to stay away from computers, spending the time with family & friends and enjoying the weather while it lasts... But I did have little coding fun also, testing how well "multitouch" would work in N810 ;-)

Here comes video:

video

Update: Like all respected magicians, I'll show how this trick works for the ones who didn't already know the behavior of (resistive, single-touch) touchscreens under multiple touches. As thp first commented, it is "using the 'merged' blob position that you get with the single touch screen and interpreting it as the middle of two or more equal-pressure points".

Now here is a video showing the same demo in PC, with "cheat mode" turned on:
video

So it's mostly useless... but somewhat f-f-f-fun :)

Monday, June 15, 2009

Carl Worth, performance, GtkPerf

Carl Worth blogged here about Cairo 2D performance measurements:
Various attempts at 2D-rendering benchmark suites have appeared and even become popular. Notable examples are x11perf and gtkperf. My claim is that these tools range from useless to actively harmful when the task is understanding performance of real applications.
...
Unfortunately, the workload of things like x11perf and gtkperf rarely come close to simulating practical workloads.

Should I be offended and sad as someone as respected as Carl blames my precious GtkPerf? Well of course not! Citing myself from GtkPerf website:
I know that bencmarking tools (including GtkPerf) can be fooled and don't give real-life results. Yet, I belive that GtkPerf can be helpful to solve for example this kind of things:
...

So as seen, I fully agree (and have always agreed) that GtkPerf is not the tool to use for getting real-life application performance measurements. But what it is, is a very easy and fast way to get a view of the GTK+/GDK/Cairo performance of your system.

These days I spend my time mostly with Qt and often benchmark the actual frame rate of the application, which with QGraphicsView-based UI is easily done for the whole view using the paintEvent() callback. And keeping the FPS visible when developing your new flashy UI really helps (at least me!) to spot & fix the performance regressions while they happen.

The last thing Carl says is:
The punchline is that we now have an easy way to benchmark 2D rendering in actual, real-world applications. If you see someone benchmarking with only toys like x11perf or gtkperf, go ahead and point them to this post, or the the cairo-perf-trace entry in the cairo FAQ, and insist on benchmarks from real applications.

So pointing: When measuring GTK+/Cairo performance trying to get accurate real-world results, please don't use GtkPerf. Instead use the cairo-perf-trace as noted, thanks!

Tuesday, May 12, 2009

Qt opens some more

I think offering Qt with LGPL was already a good change towards openness, but now Qt opens some more with public Gitorious repository!

Wednesday, April 8, 2009

Qt Animation framework

I've been working recently with Qt Animation Framework, trying to learn how to utilize it efficiently. Below is a video showing circular carousel widget which uses the animation framework.

video

I need to still continue experimenting how to really extend the animation classes and use the whole state machine framework, but so far I'm impressed by the latest 2.2 API version. Originally my biggest concern about this whole "Kinetic" was that it would be too high-level and have suboptimal performance in embedded devices, but luckily that doesn't seem to be the case. Now with Qt 4.5, QGraphicsView starts to be very usable also in N810 and one just needs to know tips & tricks how to utilize it efficiently. Below is the same carousel widget in N810, using the "raster" graphics backend:

video

FPS up there means how many times QGraphicsView paintEvent() is called, so it drops when more drawing to view is needed, but stays quite healthy & usable anyway. Back to coding!

Special thanks for graphics used goes to:
- Background: Tribe, by Alexander Timonov
- Icons: Kreski-Lines, by Holger Bauer

Friday, March 27, 2009

Latest OpenGL release

OpenGL 3.1 was released few days ago, and after the OpenGL 3.0 release fiasco, there are good news: OpenGL is not dead! This 3.1 release is getting close to what has been waited for long time and what was promised already in SIGGRAPH 2007 OpenGL BOF, offering new beginning for OpenGL in modern programmable GPUs without huge fixed API. Backwards compatibility is still hanging around with "GL_ARB_compatibility" but the future for clean cross-platform 3D API looks now much brighter than few months ago! Go on and download latest OpenGL 3.1 and GLSL 1.4 specifications from OpenGL registry!

Wednesday, February 4, 2009

UI Pimpin'


The Qt widget contest results have been announced and although segway slipped away this time, we got our 15s of fame with AnalogPad!

But what I want to share here is the story behind our entry:
  • Most importantly: Although only my name is mentioned there, it was full teamwork with my brother Kim "The Webkit" Grönholm!
  • All started when I got backflash about the competition due after christmas and decided to hack 5-way analog navigator
  • I designed and implemented the thing for 2 evenings, it started to look OK but behaved badly...
  • Kimi offered to join the fun, although he happened to be in Korea(!) at the same time
  • So last 3 days before the due, I spent my evenings with this, sent sources to Kimi and received fresh code for next evening
  • I implemented mostly features, Kimi fixed them to work nicely and cleaned the code. Time difference between Finland and Korea didn't matter, it just added extra coolness into this co-operation as we worked kinda in two shifts!

And the rest is history... Project is now in Github and sources are GPLv3, so fork away!