Planet maemo: category "feed:645f2627fa7356c7f0c9bbacbec41321"

Karoliina Salminen

Those who are using Javafoil might be interested my little command line tool (easy to use though) called Fixfoil that I decided to release as someone else too might find it useful (I created it to fix the broken airfoil files (broken from Javafoil’s point of view) to be able to simulate them in Javafoil). It may not work in all cases because it is not the most elegant possible converter, but it works for me, I hope it works for you too.

Fixfoil is used to fix airfoil coordinate files which are broken in Javafoil. Some dat-files have the first set of coordinates in reverse order. The program reorders the coordinates.

The program is available in source and binary format along with instructions. Binary files are provided for Linux (Ubuntu) and MacOSX Leopard 10.5.1.
Download your fixfoil from here:
http://www.karoliinasalminen.com/fixfoil/

Categories: Experimental aviation / aircraft building
Karoliina Salminen

I uploaded two new variants of the free ring tone I recently created for use with N800/N810. You can get them from my ring tone downloads page:

Karoliina’s free ring tones for Nokia N800/N810

These new variants are shortened version of the original one. I have boosted the melody somewhat up and made the dreamy pad background a bit quieter. I prefer myself the original version, but in noisy environment etc. the melody is hard to hear in that version and also it is hard to distinguish if some distant radio channel is playing or is someone calling you with Googletalk. The new versions get straight to the business and may be more suitable for ring tone use that way.

To install new ring tones to the device, all you need to do is to download the .wav -file, save it on your memory card. Then go to status bar and select sound -applet. Select settings from the menu. Then activate the ring tones -tab and tap browse. Select the file from the memory card you just downloaded there. Adjust a proper volume (I would like to recommend selecting quite high volume setting because otherwise you don’t hear it if the device rings in your pocket or hand bag). Select close and you are done.

I have licensed my music with Creative Commons -license, so feel free to tweak the tracks by yourself if you like.

Categories: work & linux
Karoliina Salminen

Hacking clutter-button

2007-10-31 21:20 UTC  by  Karoliina Salminen
0
0

We have been jointly hacking clutter-button with Kate and now we got something working. It has highlight effect which is triggered on button release and it fades out the highlight. With the button textures (the button and highlight) drawn by Tigert, it even feels now quite superb. However, it is not finished yet, it dumps core right now (after the effect finishes). But it is getting close to be a basic button. Clutter is quite cool. I think I will use it in my next hobby software project (I have been thinking of doing an airplane design software). Clutter would be quite overkill for it as it does not require such sophistication, but on the other hand, why wouldn’t I? Clutter is a demonstration how user interfaces should behave in the future and I give up nothing by using it since in addition to the eyecandy, it is a cross-platform toolkit. To get started, I will need at least button, label and edit box and soon I’ll have all of them :) .

Categories: work & linux
Karoliina Salminen

If you want to have some electronic -sounding ring tone with the classic Karoliina-style (resembling Jean-Michel Jarre), read on:
I created a new ring tone for N810/N800 Internet tablets (you can use it on the VOIP client). You can download it from here:
Karoliina’s ring tone 2

If you liked Oxygene 7-13, you’ll probably like this.

Instructions: Save the wav-file to your memory card, place it on the device, select sound settings applet from Status bar, select Ring tones tab, select browse, locate the file karoliinan810b.wav from your memory card and click select. This can be a bit slow as the N800/N810 wants to play the sound immediately and this is a bit longer sound than the stock ones. Because this is complex track where lots of things are happening, you may need to increase the volume over the stock ring tones to make this useful. The wave file is highly compressed and equalized to make it as loud as possible with the little loudspeakers on the device without sacrificing the original sound too much.

Equipment used: All sounds: Access Virus b
Sound recording and mastering: Mac

Categories: work & linux
Karoliina Salminen

Are you using Facebook?

2007-10-24 12:47 UTC  by  Karoliina Salminen
0
0

A friend of mine (Jyrki Kasvi) invited me to Facebook and I discovered that it is very interesting networking service that I can even access on my Internet tablet anywhere (because Nokia Internet tablets can use phone as a modem, the connectivity is available even where there is no WLAN access). I wasn’t really into social networking until I got into this service. The mobility of Internet tablet allows me to set mood, status etc. anywhere which brings a new meaning to it. The mobility creates the services like facebook make more sense - you don’t need to spend your time looking at computer at home, but you can be outdoors having fun with friends and still be online. I think that is pretty cool.

Here is my N810 running facebook and showing my profile:

Categories: work & linux
Karoliina Salminen

Clutter is a new cool toolkit (kind of, quite low level though, there is currently not even button widget implemented, to make button, you have to create your own) for creating appealing user interfaces with full utilization of the GPU. The Clutter demos found from clutter project svn look cool, but I decided to create a more basic example for people to get started. I made it on purpose with C++ (Clutter can be commanded from C++ also with no problem). If you are not yet familiar with Clutter, please go to the project home page here. Clutter is available obviously for Linux and apparently also MacOSX port may be coming (there is a bug in clutter bugzilla about it). Anyway, here is the hello world example written in C++ which creates two labels and rotates the another label.

Makefile:

LIBS=`pkg-config --libs clutter-0.5`
INCS=`pkg-config --cflags clutter-0.5`
	
.cpp.o:
	g++ -g -Wall $(CFLAGS) $(INCS) -c $*.cpp
	
all: hello2
	
hello2: clutterhello.o hello2.o
	g++ -g -Wall $(CFLAGS) -o $@ clutterhello.o hello2.o $(LIBS)
	
clean:
	rm -fr *.o hello2

clutterhello.h:

// clutterhello.h
	
#ifndef __CLUTTER_HELLO__H__
#define __CLUTTER_HELLO__H__
	
#define STAGE_WIDTH  1280
#define STAGE_HEIGHT 720
	
class ClutterHello {
public:
    ClutterHello();
    ~ClutterHello();
	
    void run();
    void frame_callback(ClutterTimeline *timeline, gint frame_num, gpointer data);
private:
	
    void build_ui();
    ClutterActor    *stage;
    ClutterColor     stage_color;
    ClutterColor     label_color;
	
    ClutterActor    *label1;
    ClutterActor    *label2;
	
    ClutterTimeline *timeline;
};
	
#endif

clutterhello.cpp:

// clutterhello.cpp
	
#include <clutter/clutter.h>
#include \"clutterhello.h\"
	
extern void frame_cb
(ClutterTimeline *timeline, gint frame_num, gpointer data);
	
ClutterHello::ClutterHello()
{
	
    ClutterColor stage_col = { 0xff, 0xff, 0xff, 0xff };
    ClutterColor label_col = { 0x00, 0x00, 0x00, 0xff };
	
    stage_color = stage_col;
    label_color = label_col;
	
    stage = clutter_stage_get_default ();
    clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
    clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
	
}
	
ClutterHello::~ClutterHello
()
{
	
}
	
void
ClutterHello::frame_callback (ClutterTimeline *timeline,
                              gint frame_num, gpointer data){
    clutter_actor_rotate_z (CLUTTER_ACTOR(this->label1), frame_num, 228/2, 19 );
}
	
void
ClutterHello::build_ui()
{
    /* Create Hello World -label */
    label1 = clutter_label_new_with_text
        (\"Sans 38px\", \"Hello World!\");
    label2 = clutter_label_new_with_text
        (\"Sans 10px\", \"Extended Hello Wold, which makes rotate_z to the label\");
    clutter_label_set_color (CLUTTER_LABEL (label1), &label_color);
    clutter_actor_set_position (label1, 455, 300);
	
    clutter_label_set_color (CLUTTER_LABEL (label2), &label_color);
    clutter_actor_set_position (label2, 455, 400);
	
    clutter_label_set_line_wrap (CLUTTER_LABEL (label1), FALSE);
    clutter_label_set_line_wrap (CLUTTER_LABEL (label2), FALSE);
	
    /* Add the label created to stage container */
    clutter_container_add_actor (CLUTTER_CONTAINER (stage), label1);
    clutter_container_add_actor (CLUTTER_CONTAINER (stage), label2);
    /* Show all actors, just like Gtk+! */
    clutter_actor_show_all (stage);
	
    timeline = clutter_timeline_new (360, 60);
    g_object_set (timeline, \"loop\", TRUE, NULL);
	
    g_signal_connect (timeline, \"new-frame\", G_CALLBACK (frame_cb), NULL);
    g_signal_connect (stage, \"key-press-event\",
                G_CALLBACK (clutter_main_quit), NULL);
	
}
	
void
ClutterHello::run()
{
    build_ui();
    clutter_timeline_start (timeline);
    clutter_main();
}

hello2.cpp:

	
// hello2.cpp
// Simple hello world with Clutter
	
#include <clutter/clutter.h>
	
using namespace std;
	
#include \"clutterhello.h\"
	
ClutterHello *helloApp;
	
void
frame_cb (ClutterTimeline *timeline, gint frame_num, gpointer data)
{
    /* Frame number is also the angle */
    if(helloApp){
        helloApp->frame_callback(timeline, frame_num, data);
    }
}
	
int
main (int argc, char *argv[])
{
    /* Init & create stage where to put actors */
    clutter_init (&argc, &argv);
    helloApp = new ClutterHello();
    helloApp->run();
    if(helloApp){
        delete helloApp;
        helloApp=NULL;
    }
	
    return 0;
}
	

Categories: work & linux
Karoliina Salminen

Clutter Hello world

2007-10-22 10:02 UTC  by  Karoliina Salminen
0
0

Here is a simple hello world for clutter:

Makefile:
LIBS=`pkg-config --libs clutter-0.5`
INCS=`pkg-config --cflags clutter-0.5`

.cpp.o:
g++ -g -Wall $(CFLAGS) $(INCS) -c $*.cpp

all: hello

hello: hello.o
g++ -g -Wall $(CFLAGS) -o $@ hello.o $(LIBS)

clean:
rm -fr *.o hello

hello.cpp:

	
// Simple hello world with Clutter
	
#include 
	
#define STAGE_WIDTH  1280
#define STAGE_HEIGHT 720
	
using namespace std;
	
int
main (int argc, char *argv[])
{
    ClutterActor    *stage;
    ClutterColor     stage_color = { 0xff, 0xff, 0xff, 0xff };
    ClutterColor     label_color = { 0×00, 0×00, 0×00, 0xff };
	
    ClutterActor    *label1, *label2;
    //gdouble scale = 1.0;
	
    /* Init & create stage where to put actors */
    clutter_init (&argc, &argv);
	
    stage = clutter_stage_get_default ();
    clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
    clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
	
    /* Create Hello World -label */
	
    label1 = clutter_label_new_with_text (”Sans 38px”,
     “Hello World!”);
    label2 = clutter_label_new_with_text (”Sans 10px”,
     “This is a very simple example program created with Clutter”);
    clutter_label_set_color (CLUTTER_LABEL (label1), &label_color);
    clutter_actor_set_position (label1, 255, 100);
	
    clutter_label_set_color (CLUTTER_LABEL (label2), &label_color);
    clutter_actor_set_position (label2, 255, 200);
	
    //clutter_actor_set_scale (label1, scale, scale);
    clutter_label_set_line_wrap (CLUTTER_LABEL (label1), FALSE);
	
    //clutter_actor_set_scale (label2, scale, scale);
    clutter_label_set_line_wrap (CLUTTER_LABEL (label2), FALSE);
	
    /* Add the label created to stage container */
    clutter_container_add_actor (CLUTTER_CONTAINER (stage), label1);
	
    clutter_container_add_actor (CLUTTER_CONTAINER (stage), label2);
	
    /* Show all actors, just like Gtk+! */
    clutter_actor_show_all (stage);
	
    g_signal_connect (stage, “key-press-event”,
		        G_CALLBACK (clutter_main_quit), NULL);
	
    clutter_main();
	
  return 0;
}
	

Categories: work & linux
Karoliina Salminen

Nokia just announced the brand new internet tablet called N810. It runs our latest software release.

Hildon Desktop was updated in the latest OS release with a major rewrite. It means for developers API change for Home, Task Navigator and status bar applets but also shows up pretty obviously. Now the desktop supports real transparency/translucency (X composite is enabled now), applets are movable on Home, everything looks nicer than before. This version has the coolest looking desktop ever made for Internet tablets. The old N800 version looks quite boring as comparison. The default theme is now also pretty much different than it used to be - it was previously full of things, now it is simplified.

The feel of N810 indeed is a lot more robust than the feel of N800 or 770, it now compares to e.g. to the latest communicator model, this certainly does not feel like a plastic toy. Yet despite of the added robustness, the device is a bit thinner than N800. The styling of the case to me looks a lot better than the earlier models (IMHO).

I can not take pictures by myself currently because I borrowed my device recently to Mohammad and currently I have unfortunately no N810 protos in use, so please look at the posts of other authors on the planet.maemo.org to see pictures.

Categories: work & linux
Karoliina Salminen

If you are interested to see Kate flying Cirrus in Palo Alto, I uploaded one HD video to our server. I may edit it a bit further such as cut more frames out from the place where I am mispointing the camera. If you want to have a look, you need to have either Quicktime or mplayer (on Linux mplayer obviously). The original video was taken at full hd 1920×1080 with a Sony HD videocamera and edited on iMovie 08 on Mac, but I downconverted this to 720p (so it is playable on even lower spec computers). There is plenty of details on the video visible even if it is medium resolution high def and not full hd.

Here is the link:
http://www.karoliinasalminen.com/CirrusSR20CircuitKPAO.mov

Use the -monitoraspect -parameter on your mplayer if the image looks odd (to define the aspect ratio of your monitor). The aspect ratio is supposed to be 16:9 and if it is scaled to fill a 4:3 monitor, it will certainly look odd. Black bars on top and bottom on 4:3 screens is what you should see. On 16:10 monitor if stretched to full screen the aspect ratio is not 100% correct, there should be small black bars on top and bottom, use on such monitor -monitoraspect 16:10.

Categories: aviation & space flight
Karoliina Salminen

If there are some experienced Mac users on my readers, I would appreciate help how to get full resolution HD out from iMovie. It only seems to allow output that resolution in Quicktime format which is pretty much incompatible with everything. I would need to get the video in a format out from iMovie that I could then convert in Linux into whatever format I like. Any experience/advice on that? I would prefer to use iMovie rather than sticking alltogether with mencoder from command line as I would like to do some basic editing and I have not seen any easier way than iMovie.

Categories: Uncategorized
Karoliina Salminen

vala

2007-09-07 18:55 UTC  by  Karoliina Salminen
0
0

Seems like I had too much ignored this project - now I have tried vala and what else could I say that I am very impressed. It is truly nice language which has lots of potential. And great thing is that it is a compiled language and is not resource-hungry like interpreted languages in general are.

I edited one example a bit and created a simple UI (nothing special), but just wanted try it out:

using GLib;
using Gtk;

public class Hello : Window {
construct {
title = "First window with vala";
create_widgets ();
}

public void create_widgets () {
destroy += Gtk.main_quit;
var hbox1 = new HBox(false, 0);
var entry1 = new Entry();
var button1 = new Button.with_label ("Hello 1\n");
var button2 = new Button.with_label ("Hello 2\n");
var button3 = new Button.with_label ("Hello 3\n");
button1.clicked += btn => {
title = "Hello";

};

hbox1.pack_start(button1, false, false, 1);
hbox1.pack_start(button2, false, false, 1);
hbox1.pack_start(button3, false, false, 1);
hbox1.pack_start(entry1, false, false, 1);
add (hbox1);
}

static int main (string[] args) {
Gtk.init (out args);

var hello = new Hello ();
hello.show_all ();

Gtk.main ();
return 0;
}
}

Incredible how effective it is, few lines of code and it can do as much as Python with PyGtk and Vala seems to be a language I have used to with brackets and semicolons on the places they belong to :)

Totally cool thing is also that there are clutter bindings for vala (for those who don’t yet know clutter, go and have a look, it is very cool)

Categories: work & linux
Karoliina Salminen

Galatic suite - a space hotel!

2007-08-14 08:50 UTC  by  Karoliina Salminen
0
0

Kate sent me email about this and I decided to blog about it because it was cool:
http://www.galacticsuite.com/

Interesting similarities in the spaceship concept - windows do resemble one another space ship. Or it is just a
coincidence… However, cool stuff (IMO).

Categories: aviation & space flight