Dragonhack 2016: Video and Photos

Earlier this month I attended Dragonhack in beautiful Ljubljana, Slovenia. It was a truly amazing hackathon and I got to know and work with a whole bunch of awesome people. Turns out the organizers made an aftermovie for the event which they have recently released and which I’m gonna share with you today. Try to see if you can spot me in the video, I haven’t found myself in it so far…


However, they also had a professional photographer at the venue who took over 200 photos, so there inevitably are also some photos of us. I’m gonna share the two best photos of us: One of our entire team deep in discussion and one of me on stage demoing our hack with my teammates in the background launching a last-minute effort to get our livedemo to work.

Continue reading Dragonhack 2016: Video and Photos

Brussels 2016 – Mostly pictures

After finishing my thesis I thought I should do something with the rest of my semester break and so I decided to go to Brussels for a few days. I went with two old friends from high school. All three of us had already been to Brussels for a school trip over half a decade ago.
I’m just gonna share a few nice pictures we took (Mostly not mine though 😉 ). As always I’m the only one in the pictures, we Germans tend to value privacy very much 😉

Unrelated PS: As promised, I’m gonna share my term paper from last year on Code Cloning in OpenSource Software in a few days and also show some code cloning offenses that I committed myself over the years (mostly old code from Easy Feed Editor).

Fatal PHP error after upgrading ownCloud

Since I did not want to start the new year with software that isn’t up-to-date (or because I had a little time and didn’t want to do any real work), I decided to update my ownCloud installation to version 8.2.2. Unfortunately, the update tool failed:

Fatal error: Call to a member function getLogger() on a non-object in /path/to/owncloud/lib/public/util.php on line 166

After spending some time trying various stuff, I decided to compare my installation with a fresh one. The only thing I found that was weird was that I had a config.php in the main ownCloud directory (probably left over from a manual update I did a few months back).

ls than mv config.php config_old.php
Renaming the config.php in the main directory helped

So I renamed that one – and voilà. Apparently having a config.php in the main folder causes ownCloud to stop working.
I write this because I didn’t find any solutions of this problem online when I searched.

ATHENS November 2015 in Paris

In the beginning of November I had the amazing opportunity to take part in the ATHENS programme, a program that brings together students from Europe’s leading Technical Universities for one week intensive courses on a variety of subjects.
For me that meant spending a week in Paris and attending a course on Information Extraction at Telecom ParisTech.

After a first meeting organized by our local coordinator at TUM and a trip to the airport the day before because of the flight attendants’ strike it was off to the airport for me. I happened to be on the same flight with three other students that study at TUM as well and with only a slight delay we made it to CISP Kellermann (a hostel in the south of Paris), that was gonna be our home in Paris for a week.
After unpacking my stuff, I walked around the neighborhood with a few fellow students when all of us started receiving phone calls and texts because of the ongoing terrorist attacks in Paris. Back at the CISP all of us had a lot of questions but no answers, so after convincing friends and family that we were safe we decided that there wasn’t much we could do on that day anyway so we called it a night.

Usually, the hosting university organizes tours and visits for the incoming students, but in our case those had to be cancelled, so we organized our own program for the weekend which consisted of prolonged walks around the city, a lot of good food and obscenely many group-selfies.

A bunch of ATHENS students in front of Sacre Cœur
A bunch of ATHENS students in front of Sacre Cœur (photo courtesy of Zhang Jiapei‎)

Continue reading ATHENS November 2015 in Paris

.tk OR If you wait long enough, your free domain is free again

Back in 2009, the first website for Easy Feed Editor was at easy-feed-editor.bplaced.net. But since that URL is really long and not very trustworthy, I thought about getting a TLD: Now you have to remember that I was still a high school student back then and I didn’t want to waste any money on a proper domain for a project that might just live for a few more months.

So I kind of went the middle way and got a .tk-Domain. The advantage of those are that they are free. The deal however is that you need to renew your registration once a year or the domain will become available to everyone again.
Being busy with other stuff I forgot to do this last year. A few hours too late I noticed and tried to renew the registration, hoping the no one else had registered it already. Which luckily no one had. However the domain was now considered a Premium Domain and no longer available for free (probably due to having actual traffic). Continue reading .tk OR If you wait long enough, your free domain is free again

Computing the Canonical Cover in Haskell

Today I had a little too much free time on my hand, but didn’t want to start anything that I couldn’t finish before the start of my vacation on Monday. Since I know I will teach two tutorial groups for the intro course on databases at TUM next term, I decided to write a little program that might be helpful when it comes to learning about the canonical cover.
The problem appeared to be very mathematical, so I decided to do it in Haskell. The program itself is kind of boring: You enter a set of functional dependencies and get back the canonical cover. The only usecase I can think of is somebody trying to learn the algorithm and checking if their result is correct.
But writing it sure was a lot of fun! The source code is on Github, a binary for Linux is here.

Galaxy Note 10.1 – Or when a left click is not a click

So, if you have a passing familiarity with Android, this code will look just fine:

@Override
public boolean onGenericMotion(View v, MotionEvent event) {
        if((event.getButtonState() & MotionEvent.BUTTON_PRIMARY) != 0)
                codeForLeftClick();

        if((event.getButtonState() & MotionEvent.BUTTON_SECONDARY) != 0)
                codeForRightClick();
 
        if ((event.getButtonState() & MotionEvent.BUTTON_TERTIARY) != 0)
                codeForMiddleClick();

        //Other stuff
	return true;
}

What it does is detect left, right and middle clicks on a mouse that’s connected to a phone or tablet via Bluetooth or a USB OTG cable.

Or at least that’s what it does on most phones and tablets. On the Galaxy Note 10.1 however it doesn’t: It works fine for right clicks (if you keep in mind that this tablet maps them to the back-button even if you indicate you consumed the event and think of filtering out any back-buttons coming from the mouse in onKeyUp(…) ) and middle clicks (with the caveat that middle clicks map to the home button and will minimize your app).

For left clicks, however nothing happens. That’s odd. Well there must be another event that is fired than. ACTION_DOWN maybe? No. Turns out there is actually no event associated with a left click that gets passed to the onGenericMotionListener. At all. (The only events you get are ACTION_HOVER_MOVE and right/middle clicks).

The only way to find out if there was a left click is to use another method (like onTouch(…)) which is inconsistent at least and annoying if you need to debug an app and don’t have any device that behaves like this (like I did this week).

[Short Linkdump] Accidentally Turing Complete

As I have been kind of busy with classes and some project work, I didn’t have that much time to update this blog. However, I am planning to write a longer article based on a 10 page report I did for a seminar on code quality as soon as the grading process is finished. (I don’t want to be accused of plagiarizing my own stuff.) It will very likely also include some samples of code of poor quality that I refactored in Easy Feed Editor a few days ago.
In the meanwhile, I leave you with this link to an article about “languages” that became Turing complete without anyone ever aiming for that. The one that surprised me the most was MediaWiki Templates…