Hamburg is beautiful!

All of these unedited, breathtaking views occurred between June 1st and June 14th.

iTunes DRM – it’s still a thing

I’ve always been a fan of paying a reasonable amount of money for a good service or product. Platforms like Steam for games, iTunes for music and the AppStore for software have made it incredibly easy to purchase products from wherever you are. Ideally both sides profit as the consumer gets what he wanted knowing he supported the creator, who on the other hand can keep improving the product with updates or fund his next great project.

Why am I telling you this? Just recently a friend of mine recommended watching a specific movie which I hadn’t seen yet. A few days later I decided I’d like to watch it in the evening and checked if it’s available for rental on iTunes. As I’ve never rented a movie on iTunes before I carefully read the FAQ. Being able to watch the movie as often as I wanted in the rental period of 48h, in High Definition and most importantly with original english audio for 3,99€ sounded like a good deal.

So I went for it. Nearly a little bit excited by modern-day technical advancements, I pressed the buy button in the iTunes Store, typed in my password and watched the download bar fill up – convenient and easy, as I had hoped. But the moment it had buffered enough to start playing the troubles began:

Bildschirmfoto 2013-12-09 um 22.34.06

Displaying only a black video iTunes showed me this error message, roughly translated telling me that the movie can’t be shown on my current screen as it doesn’t support HDCP (High-bandwith Digital Content Protection). Lucky enough I understood why this happened: my screens were connected to my Macbook Pro via Thunderbolt -> VGA adapters – VGA, being analogue, does not support HDCP.

Now, the need for HDCP support wasn’t mentioned in the FAQ, also who in their right mind would pay 3,99€ to steal a 1.5-year-old movie from iTunes?

I didn’t want to watch the movie on the 13-inch internal screen – retina or not. But no worries, I thought, my desktop pc is connected to the same screens via HDMI and shouldn’t have any problems with HDCP. The movie should be available there as well as I use the same Apple-ID on both devices – we live in the days of the cloud, right?

Indeed we do – the movie immediately showed up in iTunes for Windows and I started streaming it without any troubles. But then:

drmI couldn’t believe it – another error message. This time telling me that the movie was authorized for a different computer or device and couldn’t be played back. Just because I had seen a few black frames of it on the laptop? Even deleting the movie from the other device didn’t change anything.

So in the end I was back where I had started out and had to watch the movie on my 13-inch laptop display – it streamed well, the quality of both audio and video was great, sadly the film itself wasn’t very good. But what really matters is that I was really disapointed in the whole experience. Of course I shouldn’t be using VGA anymore (sadly projectors in most places still do so I have the adapter for it) and I bet I could have found a solution to the whole “device authorization” problem. But as I said in the introduction: the whole process should be easy and plain-sailing. The consumer should be rewarded for his loyality and not restricted by DRM mechanics. It would have been far easier to google “movie xyz  hd rip torrent” and only minutes later double-click the downloaded file, free of charge, as often as you want and most importantly hassle-free. As I said – I wouldn’t go the last route, as I usually enjoy paying for good things – but it’s no wonder people go the alternative route. I won’t be renting from iTunes anytime soon – that’s for sure.


Programming to the rescue – saving my YouTube favorites

During a recent visit to I was prompted with the question whether I want to have a YouTube channel (which longtime users have by default) or if I wanted it removed. With 14 days until the channel would be removed automatically I’d normally just postpone the decision and carry on browsing but this time my mind was pretty much made up: as I only use my YouTube account for favorites I really don’t need a channel – so that was the answer I selected.

Sadly what followed wasn’t what I expected. While subscriptions remain available, all features related to playlists aren’t accessible anymore – including my highly valued list of favorites collected since early YouTube days. Every way of accessing them and several other features leads to the following prompt:

So in summary if I want to access a lot of the features I had before making the fatal decision I would have to create a public YouTube channel and also a Google+ profile. Obviously this is a smart move on Google’s side but at the same time it’s incredibly annoying and also difficult to understand why a basic feature like favorites requires having a channel and Google+ profile.

That wasn’t an option for me but I didn’t want to lose my favorites either.

I noticed that my favorites remained available through the YouTube app for iOS but saving them from there would be a lot of manual work. This is where programming came in handy as the favorites also remain available through the YouTube API and according to this a simple call to

would return a list of a user’s favorites in xml. By default it only returns a limited amount of favorites at a time but by adding a few parameters and incrementing the parameter startindex until all favorites are returned (and the api returns 0 entries) one can get all favorites.

With this and a simple case of coding (in my case in Java) I was able to retrieve all my 257 favorites and save their title and URL to a file. So while it is sad to lose the favorites functionality on YouTube I was able to rescue something which was important to me at relative ease –  a good example of programming being a handy tool, not only for dedicated software developers.

AppStore Review mentality and surprising flexibility with Apple’s expedited Review

On Thursday morning (7:41) we released an updated version of the HAW DMI App which introduced a lot of new features as well as improvements. Sadly a minor change caused the app to crash on login for several students with a specific account setup making most of its many HELIOS-service related features unusable. This was first brought to our attention at about 1pm.

This led to users rating the app which had prior only been rated with four and mostly five stars with the dreaded “one star”. To us as developers this seemed highly unfair and caused some frustration as the app is free and has successfully been providing a lot of functionality to users. Looking at it from a less emotional perspective this seems to be the norm throughout the AppStore and tends to be the typical user reaction towards any major or minor problem (or even lack of a specific feature) regardless of how successful or liked the app had been beforehand.

ratings after bug fix (number of one-star reviews was higher before)

At this point we thought that even if we fixed and updated the app on the same day users would have to wait for at least 1-2 weeks due to Apple’s review times. Fortunately after some research I found out about Apple’s expedited Review program, which lets you apply for a quick review in the event of serious bugs which require an urgent update – a glimpse of hope!

In a matter of minutes and with the help of a crash log sent to us by mail (which is far more useful than a one star review saying that the app is great but the crash has to be fixed) we were able to find the culprit – as usual a minor code change introduced shortly before deployment hadn’t been thought through fully and caused a memory issue under specific circumstances. As we don’t have test accounts for all account configurations we didn’t experience this bug in internal testing. Either way the exception should still have been caught to prevent the issue.

At 3pm we fixed the bug, submitted it to Apple and applied for an expedited review by filling out a simple form. Luckily enough our request was granted at 6pm and much to our amazement the app was ready for sale only 4 hours later at 10pm. After lots of criticism about Apple’s restrictive AppStore policies this was an unexpectedly flexible and user-friendly way of dealing with a problem. Apple states that expedited reviews are a “[…] one-time exception” and “[…] are provided on a limited basis”, which is understandable. In any way it helped us and our users in a situation where we as developers had made a mistake which otherwise wouldn’t have been resolved until much later. Also the fact that we were able to solve the problem so quickly seems to have caused people to change their previous rating which is very much appreciated.

To sum everything up: Introducing a fatal bug in an app update is bad and users react accordingly, which has to be accepted without taking it personally – a lesson learned. Furthermore Apple’s expedited review program saved the day – hopefully we won’t make use of it again anytime soon.


Bookmark management on your own server: Insipid

For ages the process of keeping bookmarks synchronized between my computer and laptop was quite an annoying task. Using Firefox on my PC and Safari on my Mac the recently introduced sync feature in Firefox wasn’t an option for me. Not being particularly keen on sharing my bookmarks with an external service sites like Xmarks were out of question as well.

Just recently I was lucky to find my personal solution: Insipid a “web-based bookmark repository” which can easily be installed on your web space to offer access to your bookmarks wherever you go while being fully controlled by yourself. Unlike the software’s meaning “insipid – 1. Lacking flavor or zest; not tasty. 2. Lacking qualities that excite, stimulate, or interest; dull.” Insipid is very well done and offers a lot of interesting features. One could argue that Insipid’s appearance being simple and functional does match the description dull, but this can be changed through customization with html and css.

Bookmarks can be added to the list via the webinterface or through a custom bookmarklet. Especially notable is the ability to assign multiple tags to an entry for easy organization. This means I can add a lot more bookmarks without causing too much clutter and loosing track of specific topics.

Here is a picture of my current Insipid installation with the detail page for the tag “Android” selected:

If that isn’t enough for you Insipid also includes a search function for which I didn’t feel the need to use yet.
In addition to offering the ability to publish an RSS-Feed of your bookmarks the Snapshot feature is especially intriguing. When adding a bookmark it allows to add a snapshot of the current state of the site which can be very useful if it’s information is very important to you or if you expect to the website to change in the near future.

My only negative point so far is a small one – the default setting for adding a bookmark is for it being public which I don’t want it to be. For now I set it to private manually every time but maybe I should have a look at the source to change this behavior. Apart from that Insipid is a great help and therefore worth a recommendation!

Open source website statistics Piwik are pretty impressive


Until now I’ve mostly used awstats to monitor website statistics, mainly daily/monthly visitors, their origin and search terms. Today a friend and fellow student told me about the open source software for web analytics Piwik which offers a beautiful, well designed and feature-packed php/mysql-based backend. Installation is as easy as unpacking the downloaded zip and opening up the installation dialog in the browser. After setting up the mysql database and adding a superuser you’re good to go. To monitor a site you just set the URL in the Piwik backend and add some short JavaScript code to the html body of your webpage. Yes, this also means that you can monitor all your sites in the same backend, regardless if they’re on the same server or not.

Regarding features Piwik doesn’t leave much to desire: visitor graphs (beautiful!), detailed information on the user’s origin (search engine incl. search terms, website url), browser setups, the visit’s duration and provider. Even entry and exit pages, as well as automated reports via email and the option to add more functionality through widgets are included. It’s also possible to anonymize your visitor’s IP addresses to satisfy country specific privacy protection laws.

For WordPress users the plugin wp piwik (which is not developed by the same group of people) is also worth mentioning as it integrates smoothly into the WordPress backend by adding graphs and statistics to the dashboard.

What impresses me most, is that this multitude of features doesn’t make the interface clunky or difficult to use – which seems to be a common problem, especially with big open source projects. Again it’s just nice to find an open source project which is easy to install and meets or exceeds the requirements!