Sunday, November 29, 2015

Flashing Android 5.1.1 Lollipop on the Galaxy S3 I9300

ArchiDroid is an awesome custom ROM which brings Android 5.1.1 to the I9300.

First make sure you have the latest stock ROM:

  1. Download the latest stock rom from I my case that is the I9300XXUGNG3 ROM.
  2. Enter download mode (power, vol down, home). Connect usb cable. Your device should get listed now:
    sudo heimdall detect
  3. Flash it with Heimdall.
    sudo heimdall flash --BOOT boot.img --CACHE cache.img --HIDDEN hidden.img --RADIO modem.bin --RECOVERY recovery.img --BOOTLOADER sboot.bin --SYSTEM system.img --TZSW tz.img --no-reboot
  4. Reboot into recovery and wipe data/cache. Stock rom should now work.

Install ArchiDroid:

  1. Download ArchiDroid 3.1.5 onto your device.
  2. Flash custom recovery CWM with
    heimdall flash --RECOVERY recovery.img --no-reboot
  3. Install ArchiDroid via CWM

If device encryption doesn't work:

  1. Follow
  2. If after that home button and notifications stop working: Connect with adb and delete /data/data and /data/system folder

Friday, July 24, 2015

Web Components & Polymer 1.0

Seit mehr als 1,5 Jahren beschäftige ich mich nun mit Polymer. Web Components sind kommende Web-Standards die das Erstellen komplexer Web-Applikation deutlich bessern. Polymer ermöglicht es diese neuen Technologien schon heute zu nutzen.

Bei einem Vortag bei der Nürnberger Javascript Usergroup (Frankenjs) habe ich kürzlich Polymer vorgestellt.
Die Slides befindet man hier:
Den Source Code aus dem Live Coding hier:

Friday, February 21, 2014

Secure cloud data storage with Dropbox and Encfs

I have long been searching for a good solution for keeping my personal data safe. Safe as in safe from data loss and save from having another party reading it. Now I believe I've found an excellent solution using Dropbox and Encfs (on Linux).

My requirements are:

  • all my personal data should reside encrypted on my hard-drive (so I'm independent of some remote service)
  • the data should be continously synced to a remote location (as a backup)
  • using that remote storage I want to keep my data in sync on two or three computers
  • my data should only be given to a remote service in an encrypted form

Requirements 2 and 3 are calling for Dropbox (or similar solutions). The problem is how to store it safeley there. Dropbox is always able to read the data they have stored for you.

An ellegant solution is using EncFS on your computer.

It transparently encrypts files, using an arbitrary directory as storage for the encrypted files. Two directories are involved in mounting an EncFS filesystem: the source directory, and the mountpoint. Each file in the mountpoint has a specific file in the source directory that corresponds to it. The file in the mountpoint provides the unencrypted view of the one in the source directory. Filenames are encrypted in the source directory.

Since every local file has an encrypted counterpart it can be easily synced with Dropbox. For my personal data the EncFS source directory is /data/markus-data-encfs On log-in it is automatically mounted to /home/markus/data

My log-in password also serves as the encryption key for EncFS. Just install the pam_mount library and add this line to /etc/security/pam_mount.conf.xml:

<volume user="markus" fstype="fuse" path="encfs#/data/markus-data-encfs" mountpoint="/home/markus/data" options="nonempty" />

Make sure that is included in /etc/pam.d/common-session and common-auth.

Finally, I only need to set-up a symbolic link from my Dropbox to /data/markus-data-encfs to have all my private data synced via Dropbox. All completely secure.

Saturday, April 6, 2013

JIRA GitHub Issue Importer has been released

I just finished and released my first plug-in for Atlassian. Check out the JIRA GitHub Issue Importer. It's a plug-in for JIM (JIRA Importers Plugin) which allows you to import issues from GitHub into JIRA!

You can download and install the plug-in from Atlassian Marketplace.

Features include:

  • Import issues from own repositories, repositories you are a contributor of, and repositories that you have starred.
  • Supports mapping of GitHub labels and mapping of issue states depending on your workflow scheme.
  • Supports JIRA 5 and greater.

The source code is located here:

Wednesday, October 17, 2012

Access Linux desktop applications remotely - fernapp open sourced

Are you looking for an easy way to access Linux desktop applications (for Gnome, KDE, ...) remotely? The fernapp software makes it possible to run a GUI application on a headless server and access it from anywhere via web browser!

On the server all you do is:

./ libreoffice

Download the software here (available as source code and binary):

The current implementation of the web browser client is using a Java applet. A HTML5 client will be developed in the future. A prototype iPad app has also already been implemented.

I initially developed this software as a part of my master's thesis, which eventually evolved into the start-up The fernapp software has now been open sourced under the GPL license.

Sunday, December 4, 2011

Using native applications remotely

Wouldn't it be nice if you could run applications like OpenOffice in the cloud and access them from anywhere? During the past six month I've created a software solution to access native applications that are running on a remote host.

Loading player...

This demonstration shows a Windows desktop and the windows of OpenOffice. The application is not running on the same local machine, but on a virtual machine in Amazon's Compute Cloud. The user agent running on the Windows machine seamlessly integrates the remote windows to make it feel as if the application was installed locally. Elements like pop-up, menus and tool-tips are all treated as individual windows. They can extend beyond the borders of the window they belong to (go to position 01:02). Remote windows can be moved and positioned arbitrarily and independent of the real application running in the virtual machine, which is a big advantage over traditional remote desktop solutions.

Considering that it is the first version of the system, it already shows a decent performance. The window content's are currently compressed using H264. There are still many features missing and I didn't do any optimization yet. For instance, there is a lot of potential to decrease the latency further.

Let me know what you think.

Thursday, November 17, 2011

UnsatisfiedLinkError Hell

I believe in the last few hours I have been through all possible variations of the dreaded UnsatisfiedLinkError. I build a native library and wanted to integrate it using JNI.

java.lang.UnsatisfiedLinkError: no xxx in java.library.path

This is an easy one. Just set the path of the library in the java.library.path system property and don't add a „lib“ prefix or „.dll“ / „.so“ suffix in the System.loadLibrary call.

java.lang.UnsatisfiedLinkError: xxx.dll: Can't find dependent libraries

This one is a bit trickier. Unfortunately Java doesn't tell what is missing. On Windows use a tool like Dependency Walker to identify what is missing. I also had to load all the dependent libraries with System.loadLibrary calls (in correct order) before loading my own library.

You're likely to hit another problem if you're on Window and build a DLL with Eclipse CDT / Cygwin / minGW. If your code tries to call a native method you get yet another UnsatisfiedLinkError with the name of the native method as the error message. It means that this JNI function was not found in the native library. You have to use the GCC linker flag „-Wl,--kill-at“ to build the DLL in a JNI conform way.

On Linux make sure that you have compiled the library with the -fPIC flag.

Hope that helps someone.