Content on this page is probably outdated and represents my personal knowledge, feelings and understading of things at that time. Posts also span a large timeframe and a lot of personal and professional growth.

Voyage Voyage

As a continutaion of In Vino Veritas (after many drafts), that no one wanted, I feel the need to vent my feelings again. Mostly because you, after all those years, after all those obstacles don't wish to talk to me.

Here I am, tarnishing my sanity for a chance to display my feelings toward someone that will probably never "look back". It's quite funny feeling actually.

I guess it's hard to accept, even now after all this time, that I have been replaced for someone better. I think that I finally came to the core reason why I cannot forget and why you forgot so easly. Once upon a time I tought that you actually didn't forget, but now I understand that the only thing that matters is happiness - history and everything that goes with it is easly forgot. I really do try to forget, but for me history does matter - and from the looks of it, present and future reputition doesen't amount to the same weight.

Funny thing is, that I probably never tought about it as much as I do now. I'm just somehow content in the knowledge that you're happy. And besides, most of this no-fun public shaming that I'm bestowing upon myself could be avoided if I could only tell you this in private.

Goodbye my sanity (and reputition, woohoo!), goodbye my lover. I'm not as rational as I tought I was - and suprisingly I don't care. There're a lot of things I don't understand, there're a lot of people that won't understand this, I'm not sure that I understand it - but writing my feelings down is what feels right now. I'm sure to regret it later, but let's go with the flow.

Content on this page is probably outdated and represents my personal knowledge, feelings and understading of things at that time. Posts also span a large timeframe and a lot of personal and professional growth.

In vino veritas

Here I am, writing this exact thing that I woved never to speak about again. In the interesting and fascinating state of "In vino veritas", with the amazing sensations of simple textures turning in my hands. I know I'll be judged because of this - but the fact is I simply don't care. Not now, not ever.

It would seems that I have trouble grasping the simple reality surrounding me. My brains are telling me that she was not as perfect as I think she was, that there were good reasons why I felt as I did. That she is surely happier now. There's also this mathematical and philospohical truth - what are the chances that one of the first girls I went out with, is _the_ one. But nontheless I can't stop thinking about her. I think the most interesting thing is, that I probably never tought about her this much in our whole relationship as I am thinking about her now.

It simply doesen't make any sense, yet this is how I feel, this is how it is. There's not a single thing I wouldn't give for a second (err, actually a bit more than that) chance to make her happy, but I guess there's no need for that as she is happy now, hopefully way happier than I could ever make her.

Even tho that words will never be able to convey these feelings in full, there's a lot of things I thought about puting in here, but in the end it doesen't really matter - I'm just venting these things to the general public because...

Hope you won't feel less about me because of this public display of feelings. I was never good enough, and I'll probably never be. But because of you I strive to improve every day.

Be happy, "Live Long and Prosper" and "Thanks for all the fish".

Content on this page is probably outdated and represents my personal knowledge, feelings and understading of things at that time. Posts also span a large timeframe and a lot of personal and professional growth.

Update your GitLab instance to 7.1+ (which requires Ruby 2.*) on a Debian 7 (Wheezy) server

So, you installed your GitLab instance as I described in my previous blog post but now you can't update to GitLab 7.1 because it officially requires "latest stable Ruby" which is not packaged for Debian Wheezy.
Warning: Using this method you will not be able to copy and paste the commands from the Upgrade docs anymore, but it's still preatty straightforward if you know basics of Linux systems.

First we need to update Ruby

Let's execute some (untrusted) script directly from web! What could go wrong?
I can't tell you how bad this is, but it looks like the whole Ruby community is rolling with it, so it can't be that bad, right? right?!. I suggest you download and check the script before you execute it...
root # cd /home/git root # su git git # \curl -sSL -o rvm-installer git # cat rvm-installer git # bash < ./rvm-install git # source /home/git/.rvm/scripts/rvm git # rvm autolibs disable This installs the latest stable RVM version. Now we'll install the latest ruby version. git # rvm list known lists all the available ruby versions, look for the latest stable release (in our case that's ruby-2.1.2). Let's install it: git # rvm install 2.1.2 git # rvm use 2.1.2 Now you have to check if some Ruby requirements are not met with: git # rvm requirements If some are not met (there were none on my setup), install them with apt-get after getting out of git user: git # exit root # apt-get install ... root # su git Looks like Debian and RVM need a fix to play nicely together, namely add: [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" to the end off (/home/git/.bashrc), exit and su back and now everything should be ok. You can check with: git # ruby --version That's it, now off to actual GitLab stuff.

Make your current GitLab instance happy with new Ruby

We'll need to install the libs again for this ruby version (ofcourse beware of the postgres/mysql difference): root # service gitlab stop root # su git git # cd /home/git/gitlab git # bundle install --without development test postgres --deployment Now you can start GitLab and check the ruby version in /admin git # exit root # service gitlab start If everything went as planned, GitLab reports the installed Ruby version correctly. There's one unfortune consequence of using RVM as single user install. Namely sudo by default doesen't source .bashrc and therefore the standard commands in GitLab upgrade docs fail. One solution is to simply su to git user and just execute commands there (the ones previously executed with sudo).

Upgrade GitLab

Foolowing the docs at root # su git git # cd /home/git/gitlab git # git stash git # git checkout 7-0-stable git # cd /home/git/gitlab-shell git # git fetch git # git checkout v1.9.6 git # cd /home/git/gitlab git # bundle install --without development test postgres --deployment git # bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production git # git diff origin/6-9-stable:config/gitlab.yml.example origin/7-0-stable:config/gitlab.yml.example git # exit root # cp /home/git/gitlab/lib/support/init.d/gitlab /etc/init.d/gitlab root # chmod +x /etc/init.d/gitlab root # service gitlab start root # service nginx restart For further upgrades I used the GitLab Upgrader. That I run manually when logged in as git user. root # su git git # cd /home/git/gitlab git # ruby bin/upgrade.rb

That's it!

So that's a quick and dirty writeup of what I did (at 3 in the morning :/) to get my Debian GitLab instance up to date.

A lot more in depth documentation is available:

Content on this page is probably outdated and represents my personal knowledge, feelings and understading of things at that time. Posts also span a large timeframe and a lot of personal and professional growth.

Set up your own GitLab instance on a Debian 7 (Wheezy) server

After searching the web for a good (read: easy) way of installing GitLab on my Debian 7 (Wheezy) VPS I decided to go with the official instructions. But as usuall I had to make due with a bit of improvisation and therefore I'm writting down this modified quick'n'dirty version.

1. Dependencies

It's always good to update your machine prior doing anything major. root # apt-get update root # apt-get upgrade Note: I'm usually running my systems without sudo. This guide will presume you su-ed to root and are using sudo only to act as the git user. root # apt-get install sudo Now with the real dependencies: root # apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate Make sure you have installed Python version between 2.5 and 3.0 - by default wheezy comes with python 2.7 and that's good. Also it looks like python2 needs to be symlinked to python, which again by default should be a go. The check: user $ python --version user $ python2 --version We also need git 1.7.10 or higher, which again by default should be ok. To install: root # apt-get install git-core And to check the version: user $ git --version You will also need to have the mail sending installed and setup. This is way out of scope of this blog post. Next up is ruby. The official documentation suggest compiling it yourself, but there's no need, wheezy packs ruby (1.9.1 as of this writing) and again, this should be all ok. To install: root # apt-get install ruby ruby-dev To check: user $ ruby --version

System users

Add a user named "git" under which the whole sheebang will run: root # adduser --disabled-login --gecos 'GitLab' git root # sudo -u git -H git config --global "GitLab" root # sudo -u git -H git config --global "gitlab@localhost" root # sudo -u git -H git config --global core.autocrlf input

GitLab shell

As of this writing the latest gitlab shell is version 1.8.0 - check it and correct the branch part in the second command (-b v1.8.0): root # cd /home/git root # sudo -u git -H git clone -b v1.8.0 root # cd gitlab-shell root # sudo -u git -H cp config.yml.example config.yml Now you'll need to edit the configuration. Bare minimum is editing of "github_url" which has to be a dedicated domain/subdomain and cannot be a subdirectory. After that we'll install the GitLab shell. root # sudo -u git -H editor config.yml root # sudo -u git -H ./bin/install


GitLab supports MySQL and PostgreSQL databases. The setup is nicely documented GitLab databases documentation


As with GitLab Shell you'll need to check the latest stable branch of GitLab in the source and replace the 6-4-stable part in the second commend: root # cd /home/git root # sudo -u git -H git clone -b 6-4-stable gitlab root # cd gitlab That'll check out the latest code and now you'll need to configure it. Again, the bare minimum configuration is the domain/subdomain (host directive near the top). root # cd /home/git/gitlab root # sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml root # sudo -u git -H editor config/gitlab.yml Next there's a bunch of checking/setting stuff that should already be done, but newertheless: root # chown -R git log/ root # chown -R git tmp/ root # chmod -R u+rwX log/ root # chmod -R u+rwX tmp/ root # sudo -u git -H mkdir /home/git/gitlab-satellites root # sudo -u git -H mkdir tmp/pids/ root # sudo -u git -H mkdir tmp/sockets/ root # chmod -R u+rwX tmp/pids/ root # chmod -R u+rwX tmp/sockets/ root # sudo -u git -H mkdir public/uploads root # sudo chmod -R u+rwX public/uploads There, a lot of groundwork done. Now we need to copy the example unicorn configuration and edit it (I didn't edit anything if I'm not mistaken, but ymmv): root # sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb root # sudo -u git -H editor config/unicorn.rb Next up is the Rack attack config: root # sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb root # sudo -u git -H editor config/initializers/rack_attack.rb Next up on the configuration is the database config. Ofcourse you need to configure the correct access credidentials. For MySQL: root # sudo -u git cp config/database.yml.mysql config/database.yml For PostgreSQL: root # sudo -u git cp config/database.yml.postgresql config/database.yml And edit config and make it read to git only afterwards: root # sudo -u git -H editor config/database.yml root # sudo -u git -H chmod o-rwx config/database.yml Next up are the gems, I suggest you go make yourself a coffie while this runs: For MySQL: root # cd /home/git/gitlab root # sudo -u git -H bundle install --deployment --without development test postgres aws For PostgreSQL: root # cd /home/git/gitlab root # sudo -u git -H bundle install --deployment --without development test mysql aws After that's done, we need to initialize the database and activate advanced features (oh my!). You'll need to follow the on-screen instructions and mark down the login. root # cd /home/git/gitlab root # sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production There we're almost done. Now we need to compile the assets: root # sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Debian/Linux support stuff

Note: Most of the instructions that follow are for the straightforward installation as described above and need some tweaking if you have a special case. First we'll set the init script and set it so that GitLab will start on boot: root # ln -s /home/git/gitlab/lib/support/init.d/gitlab /etc/init.d/gitlab root # update-rc.d gitlab defaults 21 root # service gitlab start Next up is Logrotate: root # ln -s /home/git/gitlab/lib/support/logrotate/gitlab /etc/logrotate.d/gitlab Now you can check the application status (also handy later on): root # cd /home/git/gitlab root # sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production The final thing to do is to set up the nginx web server, we only skim this part, because there're a lot of good tutorial regarding this (you'll need to replace the hostname/subdomain to match what you used above). root # apt-get install nginx root # cp /home/git/gitlab/lib/support/nginx/gitlab /etc/nginx/sites-enabled/gitlab root # edit /etc/nginx/sites-enabled/gitlab root # service nginx reload

That's it!

Now you can open the domain/subdomain url and see for yourself. Special thanks to mmoll and newton on #gitlab@freenode irc for the help.

A lot more in depth documentation is available:

Content on this page is probably outdated and represents my personal knowledge, feelings and understading of things at that time. Posts also span a large timeframe and a lot of personal and professional growth.

Set up your own Transifex server in virtualenv

So lately I was in need of some good web based translation software. I knew transifex is open source and therefore I went poking around their site - but not much open source info is up on their site.
I tried the -git version without success and therefore went with the stable 1.2.1 version[1].
First set up the enviroment and code: # virtualenv tx # cd tx/ # source bin/activate # wget # tar xzvf transifex-1.2.1.tar.gz # mv indifex-* transifex/ Second install all the needed dependencies (with the help of modified/completed requirements.txt[2]): # wget # pip install -r requirements.txt Third patch, set up and configure Transifex server:
Because of deprecated setting in transifex/settings/40-apps.conf you need to swap SCRATCH_DIR value with os.path.join(PROJECT_PATH, 'scratchdir') # cd transifex/ # ./ txcreatedirs # ./ syncdb # ./ migrate # ./ txlanguages # ./ txcreatenoticetypes # ./ collectstatic There it is. Now you can use the built in django's runserver to access your site or set it up the same way you do with any other django app.
Note: uploading with transifex-client is not working because of some permission problems (it _should_ be fixed, but it isn't) that I'm yet to track down.

[1] -
[2] -
Next Page »