Welcome to my blog

qr-code for this page's url

This is my personal blog. Don't expect frequent updates so consider subscribing to any of the feeds (there is a general one and each tag has its own feed as well).

2015-07-03 Ads and analytics are gone again

Just a quick note that after a bit more than a year I have again removed the ads and Google Analytics from this site. I no longer need to learn about these things and they are not really useful for a low-traffic site like this anyway, so why bother?

2015-01-09 The first few weeks with a Google Wear Watch

For quite some time I have had a Pebble smart watch now and was quite happy with it. Certainly, had it died some unexpected death I would have happily bought a new one. But for this Christmas I was given a new shiny toy — an LG G Watch (the original, not the new, round R model):


It looks just as unstylish and nerdy as the Pebble but the wristband at least is slightly nicer (and also a standard size so you can replace it easily with something less offensive should you be bothered). I got the white model (the only other option is the black model) but that only refers to the wrist band and the back side of the watch which you don't see; basically it's a black watch with a white wrist band.

Battery life is better than expected thanks mainly to having had very low expectations. After a full day (~16h of use) it still has between around 50% of power, so you get more than 24h of usage but still have to charge it every day. This is still better than my phone but sadly that is a very low hurdle to take.

The display is good enough and I find it easier to read than the Pebble's display where my ageing eyes frequently struggled to read more than the headline of any message displayed. When you are not using it the display dims and turns grey scale only (all to save energy I assume). This works surprisingly well for me. At night or in the cinema you can also activate a cinema mode where the screen is completely off when not used.

The interface takes some getting used to — there is a very short tutorial but usually searching the internet tends to tell you quickly what you want to know. It all works ok for me. Sometimes I wish there were buttons for some common actions as the swipe actions don't always work for me when done casually but this is not a big problem for me so far.

Initial setup felt more like using a Windows system — the Android Wear app on my phone crashed right after pairing and the watch spent the first few minutes downloading updates and rebooting various times. I walked away during this but it felt like around 10 minutes between powering up and actually being able to do anything with the thing.

The watch faces that come built-in are a bit boring for my taste but there are nice ones you can install. (Installing watch faces and apps means installing them on your phone and then they'll just automagically show up on the watch.) I am currently using InstaWeather for Android Wear and am quite happy with that. (Over Christmas I managed to amuse the family by showing the Santa watch face that came with Google Santa tracker app).

Besides that I only use the Google Keep app which allows me to tick off items from my shopping list without taking out and unlocking my phone and very occasionally the UK Trains for Wear app to check on train times. To start these apps, the Wear Mini Launcher seems to be the tool of choice and works reasonably well for me.

The real advantage of the Android Wear over the Pebble is that you can not only read notifications but also dismiss them on the phone. Initially I found this irritating but now appreciate it as it actually reduces the urge to idly click on the notifications once you take out your phone. One does have to make sure however to not dismiss things that should be handled soon lest one forgets all about it.

The whole voice thing has not proven useful for me so far. The voice commands don't work for me in German (my phone is set to German and the watch copies these settings) and while searches do work mostly I find little occasion where actually talking to my watch is not socially awkward or even annoying to those around me. My one attempt to impress my friends was a total failure so I left it at that.

In conclusion I am quite happy with my new watch although the delta to the Pebble isn't big enough that I'd spend any money to replace an existing Pebble. So, if you are happy to buy into the Android world (and risk turning your smart watch into a door stop should you chose to change phone platform) this might well be a watch for you (and of course there are prettier Wear devices).

2015-01-04 Book: "Programming Elixir"

Recently there was yet another half-price offer by Pragmatic so I stacked up on a few books I always meant to read.

Erlang was always something that interested me (although it feels a bit awkward in its handling of records and strings and its main allure lies in OTP which is basically so big that you need to commit a serious amount of your life to this in order to make real use of Erlang), so I was quite interested in Elixir which got mentioned on various podcasts recently, and Dave Thomas's book "Programming Elixir" sounded like a good introduction here.

The book is aimed at people who know how to program (yay! at last not yet another few dozen pages wasted on how to set things up and tell you what an if statement is) but are so far unconvinced or even unaware of functional programming with immutable data. As such, the books spends a bit more time in the introduction trying to convince the reader about this than I would have liked.

The syntax is a bit weird to the uninitiated reader. My understanding is that it might less surprising if you have a background in Ruby but it doesn't help that in general there is a short form for any expression and a longer form which seems to be when you need to group multiple expressions. So e.g. either of these two expressions do the same although they look subtly different:

if someexpression, do: something

if someexpression do

Naming conventions differ so you Elixir module names are quite distinct from Erlang module names (which you can still use) so the Erlang interop while totally there is not quite as seamless as it might be.

But otherwise the language seems more enjoyable than Erlang. There are the usual (immutble) data types you expect, simple syntax to create anonymous functions, macros to extend the syntax to match your needs and the full Erlang-interop so that you not only have access to OTP but there are even some extra convenience macros to simplify use of the more frequently used behaviours such as gen_server, and there are protocols that you know from e.g. Clojure.

I myself am still a bit wary of Erlang and its runtime. A few years back I was running my own XMPP server which at one point suddenly failed to start up with pages of incomprehensible error stack traces about some problems with an mnesia store. I never managed to understand the errors, nor fix the problems and just gave up starting with a fresh server installation.

But overall this looks like a fun language to try if you want to get into the whole Erlang and agent based world and this book is a good introduction to get you started.

2014-10-23 SPDY, here we go

Today I learned how to enable SPDY on my webserver. Starting from https://www.mare-system.de/guide-to-nginx-ssl-spdy-hsts/ it looks like this is a trivial change once ssl is correctly configured (something I managed to do a while ago).

However, I found that the nginx version in Wheezy is too old to support spdy. Some searching on the web finds dotdeb which has up-to-date versions. So

  • Enable dotdeb as per instruction,
  • upgrade the nginx-full package,
  • change the site configuration from listen 443 ssl; to listen 443 ssl spdy;,
  • finally reload the nginx configuration: sudo service nginx reload

And it is all there: http://spdycheck.org/#blog.hdurer.net

2014-07-19 An RSS feed I did not want

For years I had simple mp3 players to listen to podcasts during the daily commute. I liked to have something with buttons and turn-wheels to start/pause and adjust the volume as needed without the need to look at a screen. Alas, my trusty Sansa Fuze died a premature death (the previous one lasted much longer) and while I was looking for a replacement (the prices for a Fuze had actually gone up since buying the last one) I tried out podcast players on my Android phone.

In the end I stuck with Pocket Casts as something that worked for me. Especially after buying a cheap and cheerful bluetooth headset with volume control, start/pause and skip buttons. There are some issues with this app but they are quite minor.

The one feature I really miss though is to play single mp3/ogg/… files which I find on the net. Pocket Casts only knows about feeds and won't even show up as an option to play the file when I select it on the phone.

For a while I tried to also keep some other app around to play these but that was just awkward.

Instead I dusted off my little knowledge of RSS feeds and now have my web server serve my own private podcast feed that just lists the files I am interested in. It is more complicated (store the page with the file in Pocket and remember to add it to my feed next time I am at a desktop) until I also add a web interface to manage the feed. The solution is even over-engineered because I actually store the data in a sqlite database rather than just use a text file, but hey, it was a chance to learn something new. I had never used sqlite myself, especially not from lisp.

See all posts.