01 Sep 2014

feedPlanet Maemo

PADI Rescue diver

For this one I worked really hard. Buddy breading, relaxing people in panic at 20 meters deep, keeping yourself cool. And that in Belgian waters (no visibility and freezing cold). We simulated it all. It was harder than most other things I did in my life.

0 Add to favourites0 Bury

01 Sep 2014 4:25pm GMT

27 Aug 2014

feedPlanet Maemo

Plastic surgery Discussed

Basic facts

header_plastic-surgeryThere are people who wonder why they have impairments in life. These impairments or dysfunctions results to a varied negative impacts to several people. These includes traumas, burns, congenital defects, developmental abnormalities, infections and diseases, and tumors and cancer. These cases leads many people having these a great alteration n their life. With this condition they might not be able to perform normal activities of daily living. In addition to that, emotional effects are a huge factor on their inability to continue life normally. One may be embarrassed, bullied, or even abused of their condition by some people. Low self-confidence and self-esteem would result in cases like these. As time passed and technology grows, fortunately, there are several discoveries which lead to make a solution to these problems.

Plastic Surgery on its simplest sense, helps these people revive the normality of their being. With plastic surgery they can have the life that they always wanted. Away from those abusers and humiliating people. Plastic surgery or also known as reconstructive surgery performs various procedure to correct the imperfections or dysfunctions of a human being. In case of a congenital defect such as cleft lip, cleft palate and other defects, it is best addressed as soon as possible so as not to give the baby a hard time growing up. The developmental stage of a person is a big factor to its whole well-being so that makes the parents to make a prompts decision in those cases. As for the other impairments, there's no better time of treating a condition but now if also allowed and ordered by a Physician.

Guide to success

cosmetic-surgery-1In the verge of deciding to have the condition treated, you must choose the most suitable person to perform the procedure. Plastic surgeon have undergone a wide range of education, trainings, and experiences. For a certain condition, it is best to look for the Plastic Surgeon who has performed that specific procedure numerous times. Always remember that nothing beats repetition as a successful way of mastery. If you have chosen your surgeon already it is also necessary to choose the best hospital where the procedure will be performed. Sanitation and cleanliness of the hospital is a great factor on the success of the operation. Also, caring and loving hospital staffs works best on the success of the surgery and recovery. So always consider many things and not be like an impulsive buyer and regret in the end because this is not shopping but a lifetime change of a human being.

Our generation is very fortunate that several people have discovered many things already and we can benefit from them now. Aside from all of that discussed, personal attitude and view of life are still the most important elements of life. One can be happy beyond its imperfections if only he or she knows how to handle the situation and views life positively. Having a good attitude towards life and others can make your life worth living till the end.

0 Add to favourites0 Bury

27 Aug 2014 5:02am GMT

13 Aug 2014

feedPlanet Maemo

sailing in search of fresh waters

I've had a long, quiet time on this blog over the past few years while I've been frantically helping Jolla to launch their self-named product: the Jolla. I've enjoyed (almost) every day I've been there: they really are a great bunch of people and the work has been plentiful and challenging.

But as the saying goes, "this too shall pass". Nothing lasts forever, and it's time for a change: after this week, I will be taking a break from Jolla to get some fresh perspective.

On the bright side, maybe I'll have some more time for writing now :)

If anyone is interested in getting a hold of a C++/Qt/QML/Linux expert with a focus on performance, expertise on mobile, and a wide range of knowledge across other areas who loves open source, please let me know.0 Add to favourites1 Bury

13 Aug 2014 11:55am GMT

02 Aug 2014

feedPlanet Maemo

Problem on linking OpenSSL into your NDK application

This week, I tried to compile a simple NDK application and link it with the OpenSSL library. Most of libraries (including OpenSSL) are not supported by the NDK, what makes it a bit more complicated to use. So, in this post, I describe what I usually do to properly compile applications that need external libs.

The project structure is as follows:

my_project/
+ jni/my_code.c
+ jni/Android.mk
+ jni/Application.mk
+ libs/system

Problem #01: How my Android.mk looks like?

In this example, I need two libraries: libcrypto.so and libssl.so. So, the final Android.mk looks like this

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := my_exec
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := my_code.c
LOCAL_C_INCLUDES += $(ANDROID_SRC)/external/openssl/include \
$(ANDROID_SRC)/external/openssl/crypto \
$(KERNEL_SRC)/kernel/module
LOCAL_LDLIBS += -L$(LOCAL_PATH)/../libs/system
LOCAL_SHARED_LIBRARIES := libandroid libdl libz libcrypto libssl
LOCAL_LDLIBS += -landroid -ldl -lz


include $(BUILD_EXECUTABLE)


See, as an example, that we also include the headers for the library (in ANDROID_SRC/external/openssl/include).

NDK does not provide support for libcrypto.so and libssl.so -- we need to have access to the libraries somehow. So, you should create a folder (for example, my_project/libs/system) and push the files /system/lib/libcrypto.so and /system/lib/libssl.so from the device to such folder.

Problem #02: Where do I get the libs from?

You shall get all of them (including libc.so) from your rooted device. The point is that, as I said, NDK does not provide support for libcrypto.so and libssl.so. Therefore, you need to get such libraries from the device. However, there's another problem: most likely, the libcrypto.so and libssl.so libraries don't recognize the symbols from the NDK libc.so and libstdc++.so libraries. Regarding this problem, it will be discussed on item #04.

Problem #03: Where do I get the headers from?

Usually, you get them from the android source code. For OpenSSL, they are located inside the folder ANDROID_SRC/external.

Problem #04: Why does my lib complain about libc symbols?

As I described in topic #02, you need to copy the libraries from the device. However, libcrypto.so and libssl.so do not recognize some symbols from the libc.so and libstdc++.so libraries (most likely, the libraries provided by NDK are not compatible with the ones in the device). Usually, you will have the following compilation error:

/home/raul/android-ndk-r10/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/raul/my_project/jni/../libs/system/libcrypto.so: error: undefined reference to '__strlen_chk'
/home/raul/android_development/android-ndk-r10/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/raul/my_project/jni/../libs/system/libcrypto.so: error: undefined reference to '__memcpy_chk'
/home/raul/android_development/android-ndk-r10/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/raul/my_project/jni/../libs/system/libcrypto.so: error: undefined reference to '__memset_chk'
/home/raul/android_development/android-ndk-r10/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld:
/home/raul/my_project/jni/../libs/system/libcrypto.so: error: undefined reference to '__strchr_chk'
/home/raul/android_development/android-ndk-r10/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-
x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/raul/my_project/jni/../libs/system/libcrypto.so: error: undefined reference to '__strcat_chk'


That's easy to solve. Here comes the trick: you have to replace NDK's libraries by those ones from the device. NDK contains several libraries for distinct platforms, as we can see from the path NDK_FOLDER/platforms:

@desktop:$ ls NDK_FOLDER/platforms
android-12 android-13 android-14 android-15 android-16 android-17
android-18 android-19 android-3 android-4 android-5 android-8 android-9

Considering that your application is using NDK for platform android-17 (you can define that in file Application.mk), replace the main libraries of folder NDK_PATH/platforms/android-17

@desktop:$ ls NDK_FOLDER/platforms/android-17/arch-arm/usr/lib
crtbegin_dynamic.o crtend_android.o libc.a libEGL.so libjnigraphics.so libm_hard.a libOpenSLES.so libthread_db.so
crtbegin_so.o crtend_so.o libc.so libGLESv1_CM.so liblog.so libm.so libstdc++.a libz.so

crtbegin_static.o libandroid.so libdl.so libGLESv2.so libm.a libOpenMAXAL.so libstdc++.so

So, push the libraries /system/lib/libc.so, and /system/lib/libstdc++.so from the device to the folder NDK_FOLDER/platforms/android-17/arch-arm/usr/lib. After that, compile the application again and voilà -- all problems solved :-)


0 Add to favourites0 Bury

02 Aug 2014 4:32pm GMT

28 Jul 2014

feedPlanet Maemo

Android image/kernel building/flashing - A *VERY* short guide :-)

This week, I had to go through the process of Android OS/Kernel building/installation. And it was a lot much better and 6 months ago (maybe, because I built it for a device and not for the emulator?). I compiled the images in Ubuntu 12.04 and I used a Samsung Galaxy Nexus device (maguro with tuna as kernel). Therefore, I decided to summarize the steps that I took. This mini-tutorial is a lot shorter and simpler (and really works!!).

1. Android OS

1.0 Setting up the building environment

Check this instructions (here and here) to set up the basic environment and download the code. I used the branch [android-4.3_r1.1].

1.1 Compiling the Android OS

a. Download and unpack the manufacturer drivers from this link. They have to be unpacked into the directory [android_source_code]/vendors -- but don't worry, as the .zip files contain a script that does all the work for you.

b. Once the drivers are in the proper place, run the following commands:

@desktop:$ cd [android_source_code]
@desktop:$ make clobber
@desktop:$ lunch full_maguro-userdebug
@desktop:$ make -j4

It takes a long time to compile the image.

After these steps, the Android OS is ready.

1.2 Flashing the device with the new Android OS

Now, you need two tools from the Android SDK: adb and fastboot. These tools are located in the folder [androis_sdk]/platform-tools.

a. Reboot the device in the bootloader mode -- hold VolumeDown and VolumeUp and then press the PowerUp button.

b. Connect the USB cable.

c. Run the following commands:

@desktop:$ export PATH=$PATH:[android_sdk]/platform-tools
@desktop:$ cd [android_source_code]
@desktop:$ sudo fastboot format cache
@desktop:$ sudo fastboot format userdata
@desktop:$ sudo ANDROID_PRODUCT_OUT=[android_source_code]/out/target/product/maguro/ fastboot -w flashall

After these steps, reboot the device. A clean installation will take place. To check the new version of you device, go to "Settings" - - > "About Phone" and check "Model number": now, it should be "AOSP on Maguro" (check attached image)



2. Android Kernel

Ok. Now, we have the AOSP in place and we need to compile a new kernel. But why do you need to compile and install a new kernel? Oh, well, let's say that you want to apply some patches or that you need to change the kernel to enable Linux module support (the default Android Linux Kernel does not support modules).

2.0 Setting up the building environment

If you have built the Android OS before, you don't need anything special for the kernel building. I used the official code from https://android.googlesource.com/kernel/omap.git, branch android-omap-tuna-3.0-jb-mr2.

2.1 Compiling the Kernel

First, you need to set some variables that are important for the building process (ARCH and CROSS_COMPILE):

@desktop:$ export ARCH=arm
@desktop:$ export CROSS_COMPILE=[android_source_code]/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-

Now, you have to generate a .config which contains all the options for the kernel building. By running the following command you generate a basic .config file for Android.

@desktop:$ cd [android_kernel_code]
@desktio:$ make tuna_defconfig

Sometimes, you need to set some specific entries of the .config to enable/disable certain features of the kernel. For this specific example, let's set the option CONFIG_MODULES to y (the entry in the .config file should be CONFIG_MODULES=y). With CONFIG_MODULES set to y, it is possible to insert/remove kernel modules. Now, let's build the kernel

@desktop:$ cd [android_kernel_code]
@desktop:$ make

(it takes some time to compile the kernel)

2.2 Preparing the kernel for installation

The kernel image is almost ready: it's still necessary to wrap it up properly to flash it into the device. The Android source code contains scripts that do the work for us. Consider that the image was generated at [android_kernel_code]/arch/arm/boot/zImage.

@desktop:$ cd [android_source_code]
@desktop:$ export TARGET_PREBUILT_KERNEL= [android_kernel_code]/arch/arm/boot/zImage
@desktop:$ make bootimage

At the end, a custom image is ready for installation at [android_source_code]/out/target/product/maguro/boot.img

2.3 Flashing the device with the new Kernel

Now, everything is in place and we can finally flash our kernel image. To do so:

a. You need to boot the device in bootloader mode (hold VolumeDown and VolumeUp and then press the PowerUp button)

b. Connect the USB cable


c. Run the following commands


@desktop:$ cd [android_source_code]
@desktop:$ sudo ANDROID_PRODUCT_OUT=[android_source_code]/out/target/product/maguro/ fastboot flash boot [android_source_code]/out/target/product/maguro/boot.img

After these steps, reboot the device. A clean installation will take place. To check the new version of you kernel, go to "Settings" - - > "About Phone" and check "Kernel version": you will see a different name for you kernel image (as for the previuos image).


0 Add to favourites0 Bury

28 Jul 2014 7:06pm GMT

25 Jul 2014

feedPlanet Maemo

Firefox for Android: Collecting and Using Telemetry

Firefox for Mobile
Firefox for Android: Collecting and Using Telemetry - http://starkravingfinkle.org/blog...

0 Add to favourites0 Bury

25 Jul 2014 3:08am GMT

19 Jul 2014

feedPlanet Maemo

2014-07-15 Meeting Minutes

Meeting held on FreeNode, channel #maemo-meeting (logs)

Attending: Philippe Coval (rZr), Peter Leinchen (peterleinchen), Gido Griese (Win7Mac), Paul Healy (sixwheeledbeast), Ruediger Schiller (chem|st), Niel Nielsen (nieldk), Jussi Ohenoja (juiceme).

Absent: Joerg Reisenweber (DocScrutinizer05)

Summary of topics (ordered by discussion):
- Inaugural meeting of the new Maemo Council 2Q/2014
- Discussion on Council work media
- Comments by DocScrutinizer05>

Topic (Inaugural meeting of the new Maemo Council 2Q/2014):

Topic (Discussion on Council work media):

Topic (Comments by DocScrutinizer05):

Action Items:
  • N/A

2 Add to favourites0 Bury

19 Jul 2014 1:58pm GMT

15 Jul 2014

feedPlanet Maemo

Updates on the Hildon Foundation

Discussion started last year about moving the US-based Hildon Foundation non-profit operations to Europe. After a positive reception to the initial proposal, some further planning by the community, and a lot of foot work, work is progressing on setting up a German e.V. (which was selected due to limited options available in Europe).
The move serves several purposes:

The Hildon Foundation assets will need to be transferred to the new e.V. once its legal registration is completed. The Hildon Foundation will then be dissolved. This is slightly complicated by the aforementioned regulatory burdens in the US, but will hopefully be finalized by the end of the third quarter of this year. In terms of obligations, responsibilities and relationship to the community, this move has no effect: it is purely a technical measure to allow the Foundation to better manage the community's assets.

1 Add to favourites0 Bury

15 Jul 2014 10:37pm GMT

Meet the new Q2 2014 Maemo Community Council

Dear Maemo community, I have the great honor of introducing the new Community Council for the upcoming Q2/2014 period.

The members of the new council are:

The voting results can be seen on the voting page

I want to thank warmly all the members of the community who participated in this most important action of choosing a new council for us!

The new council shall meet on the #maemo-meeting IRC channel today at 20:00 UTC for the formal handover with the passing council.

Jussi Ohenoja, Council Chair Q1/2014

On behalf of the outgoing Maemo Community Council

1 Add to favourites0 Bury

15 Jul 2014 5:38am GMT

03 Jul 2014

feedPlanet Maemo

2014-07-01 Meeting Minutes

Meeting held on FreeNode, channel #maemo-meeting (logs)

Attending: Joerg Reisenweber (DocScrutinizer05), Ruediger Schiller (chem|st), xes, Philippe Coval (rZr), Paul Healy (sixwheeledbeast), Peter Leinchen (peterleinchen), Gido Griese (Win7Mac), Tom Joyce (TomJ), dirkvl, Aaron McEwan (chainsawbike), Sebastian Krzyszkowiak (dos1), Martin Kolman (M4rtinK), Jussi Ohenoja (juiceme).

Absent:

Summary of topics (ordered by discussion):
- General orienteering for the new council election candidates

Topic (General orienteering for the new council election candidates):

Action Items:
  • N/A

1 Add to favourites0 Bury

03 Jul 2014 6:59am GMT

08 Jun 2014

feedPlanet Maemo

2014-06-03 Meeting Minutes

Meeting held on FreeNode, channel #maemo-meeting (logs)

Attending: Ruediger Schiller (chem|st), Gido Griese (Win7Mac), Joerg Reisenweber (DocScrutinizer05), Paul Healy (sixwheeledbeast), Jussi Ohenoja (juiceme).

Absent:

Summary of topics (ordered by discussion):
- Discussion on the handling of device donations
- Status update on the Maemo e.V. registration
- Discussion on the ongoing Maemo Council election

Topic (Discussion on the handling of device donations):

Topic (Status update on the Maemo e.V. registration):

Topic (Discussion on the ongoing Maemo Council election):

Action Items:
  • N/A

2 Add to favourites0 Bury

08 Jun 2014 10:27am GMT

06 Jun 2014

feedPlanet Maemo

Firefox for Android: Casting videos and Roku support – Ready to test in Nightly

Firefox for Mobile
Firefox for Android: Casting videos and Roku support - Ready to test in Nightly - http://starkravingfinkle.org/blog...

1 Add to favourites0 Bury

06 Jun 2014 3:45pm GMT

23 May 2014

feedPlanet Maemo

Let’s make things better

Matthew gets that developers need good equipment.

Glade, Scaffolding (DevStudio), Scintilla & GtkSourceView, Devhelp, gnome-build and Anjuta also got it earlier.

I think with GNOME's focus on this and a bit less on woman outreach programs; this year we could make a difference.

Luckily our code is that good that it can be reused for what is relevant today.

It's all about what we focus on.

Can we please now go back at making software?

ps. I've been diving in Croatia. Trogir. It was fantastic. I have some new reserves in my mental system.

ps. Although we're very different I have a lot of respect for your point of view, Matthew.

1 Add to favourites1 Bury

23 May 2014 4:58pm GMT

17 May 2014

feedPlanet Maemo

2014-05-13 Meeting Minutes

Meeting held on FreeNode, channel #maemo-meeting (logs)

Attending: Ruediger Schiller (chem|st), Jussi Ohenoja (juiceme).

Absent:

Summary of topics (ordered by discussion):
- Discussion on arranging the next Maemo Council election
- Discussion on maemo.gitorious.org

Topic (Discussion on arranging the next Maemo Counco election):

Topic (Discussion on maemo.gitorious.org):

Action Items:
  • N/A

1 Add to favourites0 Bury

17 May 2014 9:21am GMT

05 May 2014

feedPlanet Maemo

Q2 2014 Community Council Election Announcement

Dear friends and Maemoans, it has been a busy six months, and again it is time to elect a new Community Council for us.

The last election finished on Saturday 14th of December 2013 so the new election should be done by Saturday 14th of June 2014.

The schedule of the voting is as follows:

To get our community to continue strong, we need fresh people with fresh viewpoints to carry on the torch, so please think about volunteering for Maemo Council.

Currently there is lots of things going on, as the Maemo council is now the one unified Council, acting on behalf of the whole Maemo Community and its legal representation bodies, the Maemo e.V. (registered association, successor to HiFo) and the Hildon Foundation.

On behalf of the outgoing community council,

Jussi Ohenoja

1 Add to favourites0 Bury

05 May 2014 1:55pm GMT

2014-04-29 Meeting Minutes

Meeting held on FreeNode, channel #maemo-meeting (logs)

Attending: Joerg Reisenweber (DocScrutinizer51), Ruediger Schiller (chem|st), Sicelo, Jussi Ohenoja (juiceme).

Absent:

Summary of topics (ordered by discussion):
- Discussion on arranging the next Maemo Counco election

Topic (Discussion on arranging the next Maemo Council election):

Action Items:
  • N/A

1 Add to favourites0 Bury

05 May 2014 1:47pm GMT