• How personal may I be here?

    What level of information about my personal life should a weblog like this one contain? Even if this website carries my name, it’s no personal site per definition.

    Sure, one or another article might show some personal stuff, but at first, this is a business site. Clients should be able to know more about me, potential clients should be attracted.

    So, is it appropriate to write about personal stuff?


    I think so. Clients who want to work with me, want to know how I function. What kind of guy am I? Why am I doing this? Do I fit into the clients’ team?

    So I’ll write some personal story now and then, to show my human side.


    What really counts is expertise. The client isn’t interessted in my lunch or if I visited a concert last night. The client wants to know, if I am able to deliver what he is expecting.

    So I’ll limit this blog to technical articles, which show my range of services and how I work.

    The dose makes the poison

    I think both views are comprehensible. And I fear, as so often, „the dose makes the poison“. So I’ll add a dash more „personal“ to this blog. You’ll notice this in the near future.

    And if you want to be one the first to do so, you can subscribe to my newsletter. You’ll get mail about once a week. No spam, of course. Just subscribe below.

    Read full post
  • GitLab, Postgresql and problems on vservers

    After working on a vserver, the little guy needed a reboot. And - who would have thought, after that reboot, GitLab didn’t start correct.

    Without caring about the reasons, I decided to do GitLab a pleasure spending it an update. I should have known better, because I never did an GitLab update without trouble…

    The problem

    Even after the update, GitLab didn’t want to work. A subset of its processes was up and running but navigating to gitlab in my browser, presented me an error 502 and later on an error 500.

    The problem was the combination of postgresql and the vserver, but one step after another:

    Updating GitLab on Ubuntu 14.04

    Let’s start with step one and spend GitLab the latest update. I am using binary Unbuntu packages for some time.

    Only two lines in the terminal, and the everything will be installed rather quickly. It’s a good advice stoping all GitLab instances before sudo service gitlab stop or sudo gitlab-ctl stop, depending on the version.

    Now we can start the installation:

    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    sudo apt-get install gitlab-ce

    Don’t be surprised, at first, the gitlab package will be uninstalled. You’ll see a lot of information scrolling along your screen. On my first try, I got an error message, the package couldn’t be installed properly. Don’t ask why, but at my second attempt it worked.

    After the installation we have to reconfigure GitLab to transfer the old settings:

    sudo gitlab-ctl reconfigure

    Done! Or are we?

    Error 502 - Getting Postgresql to work

    After the installation I got an error 502 when looking in the browser. Having a look at gitlab-ctl status told me, everything is fine.

    I didn’t trust the status, so I started the GitLab selftest:

    sudo gitlab-rake gitlab:app:check

    At first everything looked fine, but then the test was aborted due a fatal error. Postgresql couldn’t be accessed because there wasn’t any socket file under tmp. So, to the Googles! I found some advices, one should create symbolic links etc. But then I found the real problem.

    Postgresql, VServer and RAM

    It seems like Postgresql is reserving 25% of the system memory by default. This will probably fail, running on a vserver. Looking at the logfile (/var/log/gitlab/postgresql/current) confirmed this theory.

    GitLab comes with its own instance of Postgresql and so it also have an own config, which is included in the main GitLab config at /etc/gitlab/gitlab.rb.

    Depending on the documentation of GitLab you have to set postgresql['shared_buffers'] = "100MB". I did, but Postgresql didn’t care. The logs said something about shmmax. So I searched within the config and found something. I set the value down to: postgresql['shmmax'] = 10179869184

    After changes on that config, you have to reconfigure GitLab:

    sudo gitlab-ctl reconfigure

    After that I restarted Gitlab, too, just to make sure Postgresql gets the changes.

    sudo gitlab-ctl restart

    And here we are! A socket file at /tmp. Hurray! Launching my browser, heading towards GitLab… and… Error 500. Great.

    Error 500

    Because everything was up and running I started the selftest again, hoping I will get some more information this time.

    sudo gitlab-rake gitlab:app:check

    And tada! The datebase has to be migrated.

    sudo gitlab-rake db:migrate RAILS_ENV=production

    Running the test again confirms: everything is find. So let’s restart GitLab again:

    sudo gitlab-ctl restart

    Starting the browser and we’ll see a beautiful login screen. Nice! We can also use git to push and pull.

    Let’s hope the next update will be easier.


    After restarting the server, the problem occured again. Great. This Blogpost helped.




    Read full post
  • Kirby Podcast Plugin

    I mentioned it one time or another, I am currently working on a little podcast show. For that, I wrote a plugin for my favorite CMS, Kirby.

    Well, at first I decided to quickly set up a WordPress site and install a podcast plugin, to get the thing up and running fast.

    But then I decided not to do so. The theme I bought wasn’t compatible with the podcast plugin and a lot of new security issues spoke against a quick and carefree WordPress Podcast setup.

    So I switched to Kirby and started building a theme. I don’t want to do much work on the site at the current time. The most important thing is the podcast. And most of the people will subscribe to it using their favorite podcast client.

    Anyway, something really important was missing. An appropriate RSS-feed containing all the necessary fields for iTunes and the other clients around. Using just a standard RSS-feed won’t work.

    So I sat down and started writing a plugin. The plugin serves a RSS-feed, in the form I need it for iTunes. And it analyzes all MP3-files I uploaded to the post. So duration and size will be determined and transfered to iTunes.

    I set up a page for the plugin and put the sources on GitHub. So, if you like to use Kirby as your CMS for your podcast, go ahead and grab the plugin.

    Oh btw, I hope the new site of my podcast will be only soon. Although it will be german only, sorry.

    Read full post
  • Sublime Text for JavaScript developers

    I’ve been searching for some time now, to find the best Sublime Text plugins which help me write JavaScript code. And it seems like I’ve found a good combination.

    JavaScript Ultimate

    JavaScript Ultimate is the heart of my setup. It comes with an outstanding autocomplete for functions and variables. This plugin is an extended language definition, so it replaces the JavaScript language definition comming with sublime.

    Get the Plugin

    Go To Definition

    You can easily jump to a definition of a function or anything else within Sublime Text, by pressing cmd+r and starting to type. Or you can choose an entry from the list.

    Go To Definition makes it even more simpler. Just put your cursor on a function-call and press alt+g. The plugin will now jump to the related function/method. The best thing is, this works cross-file.

    Get the Plugin

    JavaScript Snippets

    The name should speak for itself. It is a collection of usefull JavaScript snippets. Very helpful.

    Get the Plugin


    I like my code to be in shape. So Alignment is mandatory for me. Marked sections will be aligned, like so:

    hallo: welt,
    hallihallo: universum

    will become:

            hallo     : welt,
            hallihallo: universum

    Get the Plugin

    Bracket Highlighter

    The Bracket Highlighter helps you get a better overview. It works with a lot of languages and shows code blocks next to the line numbers.

    Get the Plugin

    Sublime Linter

    Sublime Linter by itself doesn’t do a lot. You’ll need some other plugins. I use JSHint and Annotations.

    If you’re writing JavaScript code, you should know JSHint. This linter shows errors and warnings right when I make them. You can configure JSHint being more or less strict. In case of JSHint you’ll need the binaries, which you have to install by yourself, because the plugin comes without them.

    Annotation helps me getting an overview of all my TODOs and stuff like that. It marks comments containing certain words, which you can freely define. Those can be marked as a warning or error. And you can even get a cross-file-report, if you like.

    Get the Plugin
    Plugins for Sublime Linter


    I am quite happy with my current setup. Especially with the autocomplete. Try it out and let me know, if you know other plugins I have to look at.

    I’ve some more plugins doing some work for me, which you can find in my older posts.

    Read full post
  • Thank god, it’s Monday!

    Now you’re looking at me, like I’ve made you a weird offer, right? If you’re like many others, Monday is probably not your favorite day of the week. But this might change.

    At least a little bit.
    Let’s be honest, it’s all about starting your day the right way, isn’t it? So, let’s try to improve our start into the week. Introducing my new newsletter: "Monday".

    Every Monday you’ll get a nice, friendly newsletter full of interesting, positive stuff about what we call the world wide web.

    Read about what was and is going on. Get some interesting articles about web dev, web design and things around. And if I find something really interesting apart from that topics, that stuff may be included, too.

    Along with the written word, you’ll even get a Monday morning soundtrack, which will grow from week to week and hopefully put a smile on your face.

    So let your Monday morning start positive and subscribe to my newsletter. One mail a week, that’s it. No hidden fees, no spam, no surprising buy-this-mails. Just some nice, friendly content, making you start the new week in a good way.

    Read full post