Hoppa över navigation

Monthly Archives: mars 2010

About one and a half years ago I got tired of using Trac and started looking for alternatives. There were (are?) a lot of issues with Trac, but one of the more visible usability problems is that you write filters in SQL. As I’m accustomed to filters in a fire-and-forget fashion, from my years with the Mantis BTS, this doesn’t really work for me. The Almighty Google Machine led me to a heap of people recommending Redmine as a drop-in replacement, with nice import scripts. A couple of days later I’d created my first Redmine instance and have not since looked back.

We’ve also started using Redmine in my project at work, and now the other projects are getting jealous on our fancy setup, hence this post.

Pre-reqs: One piece of hardware with Debian Lenny installed.

First start with adding the Debian Backports Apt repository to your sources.list:

# echo "deb http://www.backports.org/debian lenny-backports \
            main contrib non-free" >> /etc/apt/sources.list
# aptitude update
# aptitude install debian-backports-keyring
# aptitude update

Next up you’ll need an Apache module with a very fancy web page, Passenger:

# aptitude -t lenny-backports install \

You’re also going to need some database to store your crap in. I’m just going to base this on MySQL as that’s the DB that was already running on those machines I run Redmine on, and there’s no specific reason why I select version 5.1 here either:

# aptitude -t lenny-backports install mysql-server-5.1

During the installation you’ll be asked to enter a password for the root account on the MySQL database server. If you’re out of ideas I can really recommend installing the pwgen package which will happily generate a secure password for you:

# pwgen -sy | cat

Armed with a MySQL database and a secure password it’s now time to create the Redmine database:

# mysql -u root -p
mysql> create database redmine character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'redmine'@'localhost' identified by 'my_password';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> exit

…where you’d obviously use that fancy pwgen tool to generate yet another super secure password that you’ll forget before reading the rest of this text.

Armed with a database and a Ruby on Rails hungry Apache module you’re now ready to grab Redmine:

# cd /var/www
# wget http://rubyforge.org/frs/download.php/69449/redmine-0.9.3.tar.gz
# tar xvfz redmine-0.9.3.tar.gz

Now it’s time to remember that fancy password of yours:

# cd redmine-0.9.3
# cat <<EOF > config/database.yml
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: my-sikritt-passw0rd

Ok, so now Redmine is configured to access the database, but Rails is missing, lets grab it:

# gem install rails -v=2.3.5
# aptitude install libopenssl-ruby libmysql-ruby

Got Rails! Next up, prepare Redmine, and then populate the database:

# RAILS_ENV=production rake config/initializers/session_store.rb
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data

The last step here will ask for the default language, select something you can understand.

Ok, we’re getting closer to actually run Redmine for the first time. The following steps will hook up Redmine to be run by Apache:

# chown -R www-data:www-data files log tmp public/plugin_assets
# mv public/.htaccess public/.disabled_htaccess
# cat <<EOF > /etc/apache2/sites-available/redmine
<VirtualHost _default_:80>
 ServerName your.domain.name
 DocumentRoot /var/www/redmine-0.9.3/public
 RailsEnv production
# a2ensite redmine
# /etc/init.d/apache2 restart

When directing your browser to http://your.domain.name Redmine will present itself. You should of course make sure that the rest of your Apache installation works properly now and no strange directories are exposed to evil visitors, but otherwise you should be good to go.. enjoy!


The non-smart-phone world seems so distant now after being connected to The Hive<tm> around the clock for a little more than a year with the HTC Dream/Android G1. It’s not the best of phones, but it was the first and I can’t really say any other Android-based phone has impressed me much. There is some hope for the rumored Motorola Shadow but nevermind, this post is about the applications I’ve grown to love.

There are a couple of applications in my daily life, but some applications stand out more than others.

  1. ConnectBot
    This is hands down the best SSH-client on-the-go that I’ve ever used. It supports keys, multiple concurrent sessions, it hooks up one of the hardware buttons to switch between the windows in GNU Screen. Gesture support involves scrolling Up/Down in the buffer or sending Page Up/Down depending on if you touch the left or right part of the screen. The trackball is Ctrl which makes using a shell with high latency a breeze. There are bookmarks, and you can even tunnel ports to the phone which is really nice if you have some web-page hidden inside some network or something. Simply put, pure awesomeness. It’s not uncommon I start my work day on the bus with this application.
  2. Google Listen
    I never really cared about podcasts before, but this completly changed when I found this wonderful application. With flat rate data subscription, and the podcasts being downloaded to the phone, or streamed as you listen, this sweet application makes podcasts really accessible. The only annoying thing is that it continues to play new podcasts in queue with no way of stopping after only one, which causes me to wake up with strange voices in my head in the middle of the night. Another feature some iPhone fanboy friends of mine have in their podcast clients is the ability to increase speed, which would be very nice when listening to The Economist podcast. My current list of poison can be found here.
  3. Twidroid
    I wasn’t really into twitter until I found this application. Haven’t tried many other as I don’t feel limited with this one. It’s not mega awesome, but it’s well written and does its job well. It supports all the features you’d expect, it updates tweets in the background, it supports URL shortening services, photo sharing services, it hooks into the Share-feature in Android etc.
  4. Google Sky Map
    Using the accelerometer to navigate, GPS to fetch your position, it presents to you with a 3D map of the universe around you. As a typical Swede I could only spot the Big Dipper and perhaps Orion’s Belt so for me this app is a big +1. A dark night last summer I found myself amazed by having augmented my reality with the ability to see the stars that were right under me, only visible from other parts of earth. A must see at least.
  5. FxCamera
    A pretty simple but neat camera application that applies some fancy filters to your otherwise crappy photos. It’s a nice addition when you snap a photo and upload it to Facebook or Twitter directly from your phone. Features Toy Camera, Polaroid etc.
  6. Google Reader
    Ok, not really an Android application, but it is a custom version for mobile use, and I use it a lot while I travel by bus, or just being too lazy to grab my laptop. Very effective way of getting your daily dose of from The Hive<tm>.

So with the mentioned applications I’m pretty satisfied with the whole Android experience. The only area that’s currently lacking is in Tower Defense games, but that’s probably just a matter of time, and it’s probably good that there aren’t any worth playing yet ;).

As for firmware customizations I’ve done some experimentation. At first I used the JesusFreke firmware, which got discontinued, next up was CyanogenMod which was all the rage the whole autumn, and I recently switched to OpenEclair which is a rock solid Android 2.1 version for the G1 that I’m really satisfied with.

It’s nice to see that such a large community of hackers have spawned around the Android project and I hope it grows even more. I haven’t had the time to get involved myself yet, except for some half-assed attempt to play with Scala, and a small XMMS2 client just to get the feel for the API. Hopefully time permits future adventures into Android-hacking, I still have hopes, and it looks like Android is here to stay.

So to sum it up, I’m really satisfied with Android, although I find it a bit sad that no manufacturer have yet to come even close to the iPhone touchscreen performance  (although S-E X10 Mini is pretty close, unfortunatly with a molested UI).