Saturday, October 8, 2016

Publication: How will the Internet of Things and Big Data Analytics impact the Education of Learning-disabled students?

This is my publication about the topic How will the Internet of Things and Big Data Analytics impact the Education of Learning-disabled students? A Concept Paper. It was accepted and presented at the 3rd MEC International Conference on Big Data and Smart City (ICBDSC) in Muscat City, Oman.

Authors: Laura Lenz, André Pomp, Tobias Meisen, Sabina Jeschke

Acceptance Rate: 28.1%

Conference: 3rd MEC International Conference on Big Data and Smart City (ICBDSC)

Download: click 

Sunday, September 27, 2015

Publication: On the Applicability of Computer Vision based Gaze Tracking in Mobile Scenarios

This is my publication about  the topic On the Applicability of Computer Vision based
Gaze Tracking in Mobile Scenarios. Its based on the results of my master thesis and was accepted and presented at the Mobile HCI Conference 2015 at Copenhagen, Denmark.

Authors: Oliver Hohlfeld, André Pomp, Jó Ágila Bitsch Link, Dennis Guse

Acceptance Rate: 25.2%

Conference: Mobile HCI 2015 

Download: click 


Master Thesis: Using mobile gaze detection for user centric research

My master thesis about the topic Using mobile gaze detection for user centric research at the ComSys chair of the RWTH Aachen University. During my work, I developed examined in how far one can use existing mobile gaze tracking approaches for real world use cases. For that, I developed a gaze tracking framework (available on GitHub) which was used to perform different user studies. For that, the framework comes with a comprehensive suite on tests. 


Language: English
Pages: 114
Grade: 1.0
Download: click

Sunday, January 18, 2015

Stuff for the "Schwerpunktkolloqium"

Before writing my master thesis, I passed the "Schwerpunktkolloqium" at the ComSys chair of the RWTH Aachen University.

In this exam, I was tested by Prof. Dr. Klaus Wehrle in the lectures:

1) Advanced Internet Technology (WS 10/11)
2) Mobile Internet Technology (SS 11)

For this exam, I created a questionnaire, which I used to prepare myself.
In addition, I created a protocol of the examination.

You can download both files here.

Questionnaire: click

Protocol: click

Sunday, October 12, 2014

Tutorial: Compiling FANN for Android

During the development of my master thesis, I had to compile the FANN (Fast Artifical Neural Network) Library for Android. As there were no tutorials available yet, it took me a bit of time for getting it to work. Hence, I decided to write a small tutorial for that.

FANN is a small library that allows you to use neural networks very easily. FANN was developed in C. Hence, we have to use it as a native library.



  1. Download the newest version of FANN here
  2. Create a basic Android project. I created an Android 4.4 project but if you require to support a lower version, feel free to choose it. 
  3. Convert this Android project into a native project. If you have no idea how to create a native project, just see this tutorial.  
  4. Create a new folder inside the jni folder and name it fann. Copy all files except the CMakeLists.txt file, from the downloaded src directory into the created fann directory.
  5. Create a new folder inside the jni folder and name it main. Inside this folder you can create a new file and name it fann-test-jni.cpp. We will use it later. 

Now your project structure should look similar to the one that you see on the following screenshot. 




In this screenshot, you see two files. The Android.mk file and the Application.mk file. We now create these files with the following content.

Application.mk
APP_MODULES := fann-test
APP_ABI := armeabi-v7a
APP_STL := gnustl_shared
APP_CPPFLAGS := -frtti -fexceptions
APP_PLATFORM := android-19
NDK_TOOLCHAIN_VERSION := 4.8

Android.mk
LOCAL_PATH := $(call my-dir)

# INCLUDE OPENCV AND OWN MODULE
include $(CLEAR_VARS)

# Float FANN Module
LOCAL_MODULE    := float-fann
LOCAL_SRC_FILES := fann/floatfann.c \
  fann/fann_cascade.c \
  fann/fann_error.c \
  fann/fann_io.c \
  fann/fann_train_data.c \
  fann/fann.c
LOCAL_C_INCLUDES += $(LOCAL_PATH)/fann/include
include $(BUILD_STATIC_LIBRARY)

# Double FANN Module
include $(CLEAR_VARS)
LOCAL_MODULE    := double-fann
LOCAL_SRC_FILES := fann/doublefann.c \
  fann/fann_cascade.c \
  fann/fann_error.c \
  fann/fann_io.c \
  fann/fann_train_data.c \
  fann/fann.c
LOCAL_C_INCLUDES += $(LOCAL_PATH)/fann/include
include $(BUILD_STATIC_LIBRARY)

# Static FANN Module
include $(CLEAR_VARS)
LOCAL_MODULE    := fixed-fann
LOCAL_SRC_FILES := fann/fixedfann.c \
  fann/fann_cascade.c \
  fann/fann_error.c \
  fann/fann_io.c \
  fann/fann_train_data.c \
  fann/fann.c
LOCAL_C_INCLUDES += $(LOCAL_PATH)/fann/include
include $(BUILD_STATIC_LIBRARY)

# FANN Module
include $(CLEAR_VARS)
LOCAL_MODULE    := fann
LOCAL_SRC_FILES := fann/fann_cascade.c \
  fann/fann_error.c \
  fann/fann_io.c \
  fann/fann_train_data.c \
  fann/fann.c
LOCAL_C_INCLUDES += $(LOCAL_PATH)/fann/include
include $(BUILD_STATIC_LIBRARY)

# MAIN Module FANN
include $(CLEAR_VARS)

LOCAL_MODULE            :=  fann-test
LOCAL_SRC_FILES         := main/fann-test-jni.cpp
LOCAL_LDLIBS            += -lm -llog -landroid
LOCAL_STATIC_LIBRARIES  += float-fann double-fann fixed-fann fann
LOCAL_CFLAGS            += -std=c++11 -I$(LOCAL_PATH)/fann/include

include $(BUILD_SHARED_LIBRARY)

The Application.mk does not contain any special. However, the Android.mk defines the compiling of the FANN source code. Therefore, we define how we compile the single modules, such as float-fann or double-fann. In addition, we define the main module fann-test that uses the fann dependencies.

At this part, the compilation is finished. We can now use the FANN Library in our Android project.

For that, I implemented a method called  testFann in the native fann-test-jni.cpp file. This method just creates a neural network, does some training on it and then puts in some numbers for checking the training. I then call this native method from my Android MainActivity. In this MainActivity, I also tell Android to load my defined library as follows:

static {
try {
System.loadLibrary("gnustl_shared");
System.loadLibrary("fann-test");
} catch (UnsatisfiedLinkError e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

If you have any questions, just leave a comment. You can find the full source code on my GitHub account.

SourceCode: click

My paper was cited

Today, I detected that a the paper Tracking Web Users - Recent Advances ,which I wrote a few semesters ago, was cited. However, in contrastto the usual citing in other papers (there the paper was already cited), this time the paper was cited on a website.

The cite is included into a very nice article about how we kill our privacy when publishing data voluntarily (Facebook, Google+, Twitter and the use of Cookies).

You can find the same article on two websites:

1. Foreign Policy click
2. Bend Bulletin click

Have fun when you read it.

Saturday, June 7, 2014

Android 4.4.3 OTA and Franco Kernel

Today, I got the OTA update for my Nexus 4. However, I had the problem that I had installed the Franco Kernel and the Xposed Framework. For using the OTA update one has to do a few additional steps, otherwise one will get some errors during installing.

The first error, which I got was:

/system/bin/app_process" has unexpected contents

This error is coming from the Xposed Framework. It can easily be fixed, by deinstalling the Xposed Framework. Important: You have to delete it from the official Xposed application. Otherwise the original app_process is not restored again.

The second error that I've got was:

/system/lib/hw/power.8960.so” has unexpected contents

This error is coming from the modified files of the Franco Kernel and can be fixed as follows:


  1. Open a command line tool and start the adb shell by typing: adb shell
  2. Request root rights by typing: su
  3. Request rw rights of the system partition by typing: mount -o remount,rw /dev/block/mmcblk0p12 /system
  4. Next jump to the folder the file is located by typing: cd system/lib/hw
  5. Replace the modified file with its backup file, which is created by the Franco Kernel, by typing: cp power.msm8960.so.bak power.msm8960.so 
  6. Finished
Finally, you have to remove the installed Franco Kernel by installing the stock boot.img.
Just go to the Google Developers Site, download the Factory Image which you have currently installed, unzip it and grab the boot.img file.

Open a command line tool and just type: 
  1. adb reboot-bootloader
  2. fastboot flash boot boot.img
Now, you are done and you can flash the OTA Update either by the one that you got from Googles OTA service or by flashing it using the adb sideload method.