1. What do I do for living

    Recently my mother asked me what exactly I do for a living. As she is not type of computer person I had to create definition which would be easy to understand for normal people. And as from time to time people asks me same question here is what I told her.

    When hardware vendor builds new hardware and want to sell it to end customers he cames to us to get help on software side. As my part is building whole systems rather then single applications I took her phone as example of device and told:

    Your phone is able to do many things:

    • make, receive and reject calls
    • send/receive text/voice/video messages
    • make/show/send photos/videos
    • has addressbook
    • has calendar
    • has menu to choose functions etc…

    Each part is handled by separate application and my job is to build them into something what hardware vendor can put on a device before shipping it to end customer.

    She was happy with that explanation, even my wife told that it is nice summary of what I do for a living. Of course there are more things which I do at work, but how to tell that I am fixing badly written software or do some testing of new ways to build it…

    Written by Marcin Juszkiewicz on
  2. KDE 4.1? No, thanks

    I am using KDE since switched from Duron 600 to Athlon XP (few years ago). IIRC it was 3.1.something then. It was nice improvement from my desktop built on ROX-Filer + gnome-panel and WindowMaker. Time passed, my machines got faster and faster, 3D hardware acceleration was added with NVidia cards and then KDE 4 started to appear…

    I installed KDE 4 on my desktop and tried to use it for few months. First it was 4.0.x but I upgraded to 4.1-svn packages when they started to be available for Debian. Ideas which KDE team has are nice but usability of such desktop is much worse then KDE 3.5.9 one :( Too much bling, too less features so I “upgraded” back to 3.5.9 to get nicely working system.

    What did I lose with KDE 4.1 (tried final release yesterday):

    • fast desktop switching (if there is Konsole open on desktop it will render for long time)
    • fast Konsole tab switching (I have 2-8 tabs in terminal)
    • ability to set/move panel at any edge of screen (now I use top panel, used more)
    • ability to reorder applets/plasmoids in panel (ops - there is a way but not as intuitive as it was in 3.5)
    • Klipper is not usable (crash on nearly each use, not launching browser)

    From what I read on KDE website Konsole problems are related to NVidia cards and workaround is given. I wonder why there is no check in preferences “I have NVidia — do not use ARGB windows then” or other way. I think that it should be easy to check with few function calls which OpenGL libs are in use…

    Looks like now I have to wait to 2009 for KDE 4.2 and then check does it behave or not. Or maybe it is time to check XFCE or other environment?

    Written by Marcin Juszkiewicz on
  3. Nokia N8x0 emulation part II

    My previous post about Nokia N800 tablet emulation became one of popular ones. On LinuxTag I shown Maemo booting in QEmu and it was met with nice response from community. But the problem remained — how to boot it when config.mtd which I used was not distributable…

    Yesterday I solved that part. After studying how Maemo boots and why does QEmu restarts with wrong config.mtd I grabbed that partition from my N810 and tried again. This time OS2008/Chinook booted fine :)

    What is needed? Tablet needs to have “no-lifeguard-reset” flag set. IT can be done by using flasher as this is one of R&D flags. I had it set on my N810 because I did experiments with booting from internal SD card in past.

    Maemo OS2008 (Chinook) on emulated N800 - first screen
    Maemo OS2008 (Chinook) on emulated N800 - first screen
    Maemo OS2008 (Chinook) on emulated N800 - desktop
    Maemo OS2008 (Chinook) on emulated N800 - desktop
    Maemo OS2008 (Chinook) on emulated N800
    Maemo OS2008 (Chinook) on emulated N800

    Thanks to Faheem Pervez (more widely known as) from his N800 I was able to confirm that this is all what is needed.

    Next step will be updating qemu to more recent revision to get N810 emulation (which is present in HEAD) and getting Diablo booted.

    UPDATE: Diablo booted on emulated N800 and N810:

    Maemo OS2008 (Diablo) on emulated N800
    Maemo OS2008 (Diablo) on emulated N800
    Maemo OS2008 (Diablo) on emulated N810
    Maemo OS2008 (Diablo) on emulated N810

    Nokia N810 emulation is more useful as there is a keyboard attached so no need for use of onscreen input methods. There are some things to remember anyway:

    • Alt(Gr) behave like Fn (with sticky status)
    • no CapsLock (but Shift works like on N810 so no big loss)
    • no numeric row — to get “5” press “Alt+t” like on N810
    • some of other keys are also in weird places
    • Right Shift does not work (N810 has 2 Left Shifts)

    NOTE: This is QEmu HEAD — no extra patches were needed to boot Chinook on emulated N800. To boot Diablo “hw/nseries.c” file needs to be edited to change partition info (initfs is twice as big compared to Chinook).

    Written by Marcin Juszkiewicz on
  4. I am 0x20 now

    Since Saturday I am 0x20 years old. We had small meeting with birthday cake etc. There was no candles on it because it is hard to put so many of them on small area. One friend had idea of putting 6 candles (with only one lit) but rest of company was non-IT so would not catch (there was already problem with “0x20” text on cake)…

    The most of fun was with one present which I got week before by post… It had “Open 26th July” sign on it so had to wait. Inside was puzzle made from C code — really hard to solve because source looked like one of contributions to IOCCC (and later I got information from friend that it indeed was based on one of them: gavare/2004). It took some time and 3 persons to solve puzzle.

    Completed puzzle with C source
    Completed puzzle with C source

    Next part was entering source into C file… As I do not know any good OCR software for Debian GNU/Linux I had to type all 35 lines by my own hands. Good that with puzzles there was a sheet of paper with md5sum for each line (I had 5 typos). Resulting source compiled out-of-box with GCC 4.3.1 (but lot of warnings). Output of application does not had any sense to me anyway… But after redirecting to file and leaving for time longer then 2 minutes it finally ended work (after 12,5 minutes). Result was PPM picture with birthday wishes :)

    Birthday wishes
    Birthday wishes

    Some presents are really great :D Thx, Ury!

    Written by Marcin Juszkiewicz on
  5. Using Poky SDK to build software

    Poky Linux distribution provides SDK for quite long time. From time to time I hear persons which complain about lack of libX or libY in toolchain tarballs. But there is a solution for them — Poky SDK can be expanded with packages.

    Installation

    This is described in Poky Handbook already:

    The meta-toolchain and meta-toolchain-sdk targets (see the images section) build tarballs which contain toolchains and libraries suitable for application development outside Poky. These unpack into the /usr/local/poky directory and contain a setup script, e.g. /usr/local/poky/eabi-glibc/arm/environment-setup which can be sourced to initialise a suitable environment. After sourcing this, the compiler, QEMU scripts, QEMU binary, a special version of pkgconfig and other useful utilities are added to the PATH. Variables to assist pkgconfig and autotools are also set so that, for example, configure can find pre-generated test results for tests which need target hardware to run.

    Using the toolchain with autotool enabled packages is straightforward, just pass the appropriate host option to configure e.g. “./configure —host=arm-poky-linux-gnueabi”. For other projects it is usually a case of ensuring the cross tools are used e.g. CC=arm-poky-linux-gnueabi-gcc and LD=arm-poky-linux-gnueabi-ld.

    Extending SDK

    So you want to build GTK+ based application but “configure” tells you that you miss GTK+ headers? In normal systems you would install development packages. Same is with Poky SDK, but due to fact that there are no repositories for Poky a bit more work is needed.

    You will need contents of “tmp/deploy/ipk/” from other developer or from local Poky build. I have them from local build and they are stored in “/home/hrw/devel/OH/poky/trunk/build/tmp/deploy/ipk” directory.

    Next step is editing opkg configuration file (stored in /usr/local/poky/eabi-glibc/arm/arm-poky-linux-gnueabi/etc/opkg.conf) to add feeds locations. With my packages it looks like this:

    arch all 1
    arch any 6
    arch noarch 11
    arch arm 16
    arch armv4 21
    arch armv4t 26
    arch armv5te 31
    arch qemuarm 36
    src oe-all file:/home/hrw/devel/OH/poky/trunk/build/tmp/deploy/ipk/all
    src oe-armv5te file:/home/hrw/devel/OH/poky/trunk/build/tmp/deploy/ipk/armv5te
    

    Now it is time to install those missing headers: opkg-target update will update list of available packages and opkg-target install gtk+-dev install required headers.

    Building software

    Hello world

    First something really simple: helloworld.c. Run arm-poky-linux-gnueabi-gcc hello.c -o hello. Result will be ARM binary:

    14:14 hrw@home:$ file hello hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
    

    Autoconf based application

    I took Tasks 0.13 as an example as it use some libraries not present in standard toolchain. After unpacking and starting ./configure --host=arm-poky-linux-gnueabi I got message that GTK+ headers are missing so I installed them with opkg-target install gtk+-dev (like it is described).

    After next “configure” call there was message about missing “libecal” which is part of “eds-dbus” so opkg-target install eds-dbus-dev solved problem.

    Finally “configure” does not give any errors and make call built application:

    14:19 hrw@home:tasks-0.13$ file src/gtk/tasks
    src/gtk/tasks: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
    

    Summary

    As you see Poky SDK is not limited to default set of packages but can be extended with additional ones. OK, someone needs to build them first but imagine situation when company has 10 developers — one has Poky build tree which he use to generate packages which can be used by rest of team without spending precious time on building.

    BTW — It is not limited to Poky SDK. Other OpenEmbedded based systems should be more or less capable of doing such things.

    Written by Marcin Juszkiewicz on
  6. Back from GUADEC

    Mira's reaction
    Mira’s reaction

    Mira’s reaction — priceless…

    Written by Marcin Juszkiewicz on
  7. What was on GUADEC 2008

    GUADEC is going to end for me today — I am going back home tomorrow. Was it worth going here? Yes, it was. I met interesting guys, spoke about nice projects which I will probably work on soon etc.

    Talks

    There was lot of interesting talks during this year GUADEC:

    • Bob the Builder: How can he fix it?” by Rob Bradfort from OpenedHand — it was about Poky, developing for embedded targets, which tools are available and how to use them.
    • Clutter guts” by Tomas Frydrych, Emmanuele Bassi and Øyvind Kolås from OpenedHand. This was was about Clutter — what it is, how to use, what it gives. For me it was interesting as I did not knew what exactly it is.
    • Location-aware applications with GeoClue and Gypsy” by Henri Bergius (Nemein), Iain Holmes (OpenedHand), Jussi Kukkonen (also OH) — from clock applet which automatically change your timezone for shopping lists which reminds you about milk when you are near store. I wonder how those projects will change the way of writing applications. For those who does not know what Gypsy is — it is GPS multiplex daemon which does not have gpsd bugs.
    • Breaking the Silence: Making Applications Talk with Telepathy” by Robert McQueen from Collabora. I think it was a bit too technical but otherwise it shown what Telepathy is and how cool can it be.

    I see that some of Lighting Talks can be also interesting.

    Parties

    O yes… parties… Monday and Tuesday were easy days — we got some Turkish coffee somewhere (it was really good) and Turkish beer (was not good) but next days were different.

    On Wednesday evening there was roof party at the University. Lot of people and red wine in plastic/paper cups. Get to sleep at ~02:00…

    Thursday… Collabora boat party with “unlimited” beer… That was great event. At 21 we get on board and the party started. Carlsberg is quite good beer and after 3rd can you do not notice taste :) There were few places with stronger alcohols — 15 years old whiskey for example. We went under Europe<>Asia bridges — the first one has animated lights which looks very nice. I spoke a lot with Ken Gilmer from Bug Labs company and it was good spent time. Later from party to came to “bar” near the Golden Horn hotel and from there I walked to our hotel. Final bed time: 03:30…

    Today there will be Google sponsored party but I do not plan to go there. I prefer to have some time for packing and rest before traveling home (Istanbul -> Berlin -> Szczecin) and going to the party would makes me look like zombie on Saturday… And I have family event on Sunday so I should look like normal person rather :)

    BTW — after boat party I thought that conference could be named GUADEP as sometimes it looks like parties takes more time and attention then conferences :D

    Summary

    I will not write that it was worth going to GUADEC because it is widely known fact. I met interesting people (also few not interesting ones), discussed some projects with their managers (as talking is always better then exchanging emails).

    Next year should be even more interesting as it will be merged with Akademy which is KDE conference (and I use KDE3/4 rather then GNOME on my machines).

    Written by Marcin Juszkiewicz on
  8. Second is very long time

    I am at GUADEC now and typing from my Dell D400 laptop. The fun part is in battery — it is more or less dead but in interesting way…

    For last few minutes it say that I have 3% of battery left which will give me 1 second of work. It is quite long second :)

    After all the battery has enough juice to give me about 30-40 minutes of usage (with removed everything not needed like USB, Ethernet) with WiFi enabled (on Broadcom 4306 chipset). And to avoid data loss I have all partitions mounted read-only now.

    UPDATE: some more facts:

    11:08 — 3% battery left, 00:00:01 remaining

    11:31 — 0% battery left

    12:02 — still working…

    12:08 — started dd if=/dev/urandom of=/dev/null to give some work for CPU. Machine stopped working

    1 hour with unknown status of battery… It was enough for reading Google Reader over WiFi.

    Written by Marcin Juszkiewicz on
Page 64 / 106