September 13th, 2013

Benefits of using a custom ROM on your Android device

by Florian Jensen

If you browse back through my blog, you’ll see that I’ve been a long time fan of Nokia phones. However, after Nokia switching to Windows Phone, and killing a, in my opinion, superb device with the Nokia N9, I decided to switch to Android. So, May 2012 I got myself the Galaxy S3, which I’m still using today.

I quickly realized I wanted more power as well, such as full access to the filesystem, so I rooted my phone and flashed a custom ROM.

Why root your Android?

Looking back over the last 18 months, I still don’t know why I needed my phone to be rooted. I maybe used it once or twice, for stuff like screen sharing in Airdroid, but there wasn’t really any day to day benefit.

Many people will say that they root it to specific applications that require rooting, backing up of your phone, remove carrier stock applications, etc… but to be honest, I’ve never had the need to. Vodafone kept the bloatware to a minimum and it didn’t really stand in my way.

Custom ROM Galaxy S3 detailsCustom ROM?

So, this is the main reason why I had to root my phone. Wanting to improve performance of my Galaxy S3 and increase battery life, I had a look around to see which custom ROMs would be a good fit. Following a recommendation of a friend of mine, I then went with Android Revolution HD. This ROM kept the Samsung specific apps, such as the Camera app, S Voice, AllShare Cast, etc. It basically was exactly the same interface (TouchWiz) but with a lot of tweaks under the hood. My phone instantly became a lot more responsive and battery life increased as well. Great!

However, there are some risks that come with flashing: You void your warranty with most ROMs. And you may encouter some strange issues down the line. In my case, this happened about 1 year after flashing the custom ROM, my phone got stuck in a reboot loop. Some application seems to have broken my phone. So, there were a few options: I could re-flash the same firmware, and potentially encounter the same issue down the line, or I could try something new.

Following another recommendation by a friend of mine, I decided to try an AOSP (Android Open Source Project) ROM. These run none of the Samsung code, and are generally a lot lighter. I took a look around, and not wanting to stick with 4.1.2 (latest version available for the Galaxy S3 supported by Samsung), I went with a ROM that was based on Android 4.3, CarbonROM.

After struggling a bit to install it (note: you’ll have to manually install all Google Apps!), I finally got it running.

All I could say was: Wow. It’s like having a new phone.

The phone was a lot more responsive. Truly worlds apart. I felt like I just bought a Galaxy S4, but it was free, only costing me an hour of tinkering around — if done right the first time, it’ll take you 10 minutes.

So what did I loose by going with a AOSP ROM?

Well, the Samsung apps. The only app I miss is the Camera app, as the stock Android one takes a bit of getting used to. Besides that, I didn’t notice anything that I’m missing. S Voice, well, I use Google Now which is a lot nicer anyway. And the speed boost makes it worth it. Battery life is similar, if not slightly better compared to the custom ROM I had before. Did I mention it’s a lot faster?

My Galaxy S3 homescreenHaving run CarbonROM for the last 3 weeks, there is no way I’m going back to the original Samsung ROM. It took a bit of customizing but it now looks great and I’m back up and running at full speed. There are a few bugs I’ve encountered, but these are mainly related to Android 4.3 itself and are getting fixed on a daily basis.

All in all, if you’re willing to take the risk of rooting your phone, then going with a AOSP Rom like Carbon Nightlies (the 4.3 branch) is definitely worth a try. But be aware that if something goes wrong, the warranty won’t cover it. I may write a small post with some instructions on how to flash CarbonROM onto your phone in the near future.

August 23rd, 2013

Using Proxmox Cluster in VRack 1.5

by Florian Jensen

Having spent the last 24 hours trying to get Proxmox to play nice with the new VRack 1.5, it looks like it works perfectly, including online live migration of venet based OpenVZ containers, which didn’t work in VRack 1.0.

The configuration makes eth1 the default card for traffic from vmbr0, however allows eth0 to function alongside it so that you don’t loose out on monitoring features. We also route IPv6 traffic through the VRack on vmbr0 and add additional IP ranges for your VM use to vmbr0.

All the configuration that’s needed is done in: /etc/network/interfaces.

Here is my resulting configuration:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# for Routing
auto vmbr1
iface vmbr1 inet manual
    post-up /etc/pve/kvm-networking.sh
    bridge_ports dummy0
    bridge_stp off
    bridge_fd 0

# vmbr0: Bridging. Make sure to use only MAC adresses that were assigned to you.
auto vmbr0
iface vmbr0 inet static
    address 94.23.XXX.10
    netmask 255.255.255.0
    network 94.23.XXX.0
    broadcast 94.23.XXX.255
    gateway 94.23.XXX.254
    bridge_ports eth1
    bridge_stp off
    bridge_fd 0
# A secondary IP subnet used for VMs
    up /sbin/ip route add 178.XXX.YYY.128/26 dev vmbr0
        up /sbin/ip route flush cache

#VRack IPv6
iface vmbr0 inet6 static
        address 2001:41d0:XXXX:6810::10
        netmask 56
        post-up /sbin/ip -f inet6 route add 2001:41d0:XXXX:68ff:ffff:ffff:ffff:ff7f dev vmbr0
        post-up /sbin/ip -f inet6 route add default via 2001:41d0:XXXX:68ff:ffff:ffff:ffff:ff7f
        pre-down /sbin/ip -f inet6 route del default via 2001:41d0:XXXX:68ff:ffff:ffff:ffff:ff7f
        pre-down /sbin/ip -f inet6 route del 2001:41d0:XXXX:68ff:ffff:ffff:ffff:ff7f dev vmbr0

auto eth0
iface eth0 inet static
    address 5.XXX.YYY.25
    netmask 255.255.255.0
    broadcast 5.XXX.YYY.255
    #Setting up the routing
    up /sbin/ip route flush table 80
    up /sbin/ip route add table 80 to 5.XXX.YYY.0/24 dev eth0
    up /sbin/ip route add table 80 to default via 5.XXX.YYY.254 dev eth0
    up /sbin/ip rule add from 5.XXX.YYY.0/24 table 80 priority 80
    up /sbin/ip route flush cache
    post-down /sbin/ip route flush table 80
August 3rd, 2013

Setting expires headers with Plesk 11.5 and nginx

by Florian Jensen

I’ve been spending this morning optimizing the Flosoft.biz website in terms of load times in Browsers, and one key element of that is sending the correct expires headers to allow Browsers to cache the data.

Now, as of Plesk 11.5, you can edit nginx settings via the Control Panel, but this isn’t always straight forward, so I thought I’d write a small tutorial.

In the Control Panel:

  1. Select your Domain
  2. Click Web Server Settings
  3. Scroll down to nginx settings
  4. If you have “Serve static files directly by nginx” checked (which I recommend), you’ll need to remove the file extensions you’re going to use below, such as jpg,gif,…
  5. In the text box “Additional nginx directives” copy / paste the following configuration:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control “public”;
try_files $uri @fallback;
}

That’s it. Just hit OK and enjoy a website that sends the correct headers for your static images and CSS.

 

August 3rd, 2013

Enabling GZip compression on Plesk 11.5′s nginx

by Florian Jensen

One of the legacy systems we still use at Flosoft.biz is Plesk. Over the last few years it has slowly gotten better (don’t worry, it still completely breaks on every version upgrade) and nowadays comes with nginx.

However, I noticed that for some obscure reason, it doesn’t enable GZip compression for the webpages it serves? This is quite odd, having myself worked a lot with nginx over the last few years, it’s a default configuration!

Don’t worry, it’s quite easy to enable it though:

Just edit the following file as root: /etc/nginx/conf.d/gzip.conf

gzip on;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript;
gzip_vary on;
gzip_disable “msie6″;

Then run nginx -t to test the configuration and if that’s all ok, restart nginx by running /etc/init.d/nginx restart.

That’s it. Your webserver will now be serving your pages with GZip compression.

January 22nd, 2013

Switching your phone service from Belgacom to OVH

by Florian Jensen

I never thought I would write this post. I am truly amazed.

A few weeks ago, we decided to port our main phone line after 35 years from Belgacom to OVH VoIP service.

Now, the tricky thing was, the Internet line we have with EDPnet in the house is run via the same phone line. This worried me, thinking that I’d end up with my parents losing internet and phone and with me far away. But hey… let’s try it.

Just to make sure though, I called up Belgacom to ask them how these things normally go. After being on hold for 38 minutes in a seemingly endless queue, I decided to call OVH. A few seconds later, I was talking to someone explaining me the process, however with the disclaimer that the information is based on french operators. So I decided to give my internet provider, EDPnet, a call. There I was told that it will ‘just work’, Belgacom would terminate the line automatically, and they’ll step in with a ‘raw copper’ service. Sounds great!

So I scheduled the number port for the 21st of January. Letters arrived from OVH and Belgacom, verifying that I wanted to go ahead with this, and the 21st of January came closer.

Emails from OVH confirming the Number Port

Emails from OVH confirming the Number Port

On the day, I got 3 emails from OVH confirming every step of the number port. The phone service just switched over. Even internet didn’t disconnect. Everything went smoothly. Unbelievable right?

Next, I got a nice email from EDPnet confirming that they heard about the number port, and that they’ll provide the raw copper service on the same line without interruption.

Screen Shot 2013-01-21 at 22.24.57Great! To be honest, I did NOT expect this to go smoothly at all. Given my past experiences with major telephony operators and complex setups like this (with 3 operators involved), I expected to loose my number, loose internet connectivity for at least a few months etc. But no. It all works. So I’d like to thank OVH, EDPnet and even Belgacom for making this a very smooth transition. Awesome work guys!

 

January 2nd, 2013

Adding Flashcache to Proxmox and LVM

by Florian Jensen

One of the main bottlenecks when running high performance virtualization systems is the harddisk. Now, you could of course switch your entire system over to SSDs, but that is costly and you’ll end up with a lot less storage, or a massive RAID array.

Modern filesystems like ZFS have solved this problem by allowing for ‘hybrid’ systems. These use the traditional harddisks for persistent storage, and use SSD drives in front of them to cache the read and write queries. This way you get the best of both worlds. Nearly SSD performance and the storage size of a traditional drive.

At Flosoft.biz we use Proxmox to power our VPS offers, which uses LVM and EXT4 for it’s filesystem which doesn’t have a ‘SSD caching’ method built into it. Facebook seems to have had a similar issue, so they created FlashCache. Flashcache is a kernel module that allows you to add a block caching partition in front of any other partition of your system, resulting in an amazing speedup of your system.

After having spent a night or two on getting this to work on Proxmox 2, I decided to write a small tutorial here. I’d also like to thank @toxicnaan for his l33t hax0r skillz.

 

Updating your system

Get your system up to date and make sure you’ve got the latest Kernel.

apt-get update
apt-get dist-upgrade
apt-get install dkms build-essential git
reboot

 

Kernel Headers

You will now need to install the Kernel Headers for your Kernel so that you can compile the module. Make sure you install the correct version of the headers. These need to be the same as the Kernel you’re running.

uname -a # to get your kernel version
apt-get install pve-headers-2.6.32-17-pve # to install the headers for version 2.6.32-17

 

Get FlashCache

Now that we’ve got the Kernel tools, we can get FlashCache and build it.

git clone git://github.com/facebook/flashcache.git
cd flashcache/

make -f Makefile.dkms boot_conf
make install

 

Load FlashCache

Next we need to load FlashCache into our running Kernel and make sure it’s loaded upon boot.

modprobe flashcache
echo flashcache >> /etc/modules

 

Re-purposing the SSD drives

Now it’s time to find a new use for our SSD drives, namely as cache. You can skip this step if your server doesn’t have the SSD drives mounted as /var/lib/vz

umount /var/lib/vz
vgremove pve
pvremove /dev/md2

 

Re-purposing the 2 HDD drives

Now let’s prepare the 2 HDD drives to be used as the storage for /var/lib/vz.

umount /data
pvcreate /dev/md0
lvcreate -l 100%VG -n storage pve
mkfs.ext4 /dev/mapper/pve-storage

 

Creating the FlashCache partition

Now let’s create the FlashCache partition on the SSD drives & mount it.

flashcache_create -p back pvec-storage /dev/md2 /dev/mapper/pve-storage
mount /dev/mapper/pvec-storage /var/lib/vz
echo 1 > /proc/sys/dev/flashcache/md2+pve-storage/fast_remove

 

Editing /etc/fstab

Next step is to edit /etc/fstab and remove the /data and /var/lib/vz mounts. If you forget to do this (as I did for quite a while), your server will struggle to boot on it’s own, and you’ll end up with the datacenter techs thinking you’re an idiot :)

vi /etc/fstab

 

The init.d file

This next step is important. We need to add an init.d file to do some operations, like mounting the filesystem and cleaning it up. It will also unmount the drive before shutting down, as if you don’t do this, your kernel will freeze on shutdown. Make sure you edit your file according to your needs.

#!/bin/sh

# Start or stop Flashcache

### BEGIN INIT INFO
# Provides:          flashcache
# Required-Start:
# Required-Stop:     $remote_fs $network pvedaemon
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Flashcache SSD caching
# Description:       Flashcache SSD caching
### END INIT INFO

PATH=/bin:/usr/bin:/sbin:/usr/sbin

flashcache_start() {
if df -h | grep /var/lib/vz > /dev/null
then
echo "Flashcache allready running"
else
flashcache_load /dev/md2
mount /dev/mapper/pvec-storage /var/lib/vz
#mount /dev/mapper/pve-backup /mnt/backup
echo 1 > /proc/sys/dev/flashcache/md2+pve-storage/fast_remove
echo "Flashcache started"
fi
}

flashcache_stop() {
if df -h | grep /var/lib/vz > /dev/null
then
#umount /mnt/backup
umount /var/lib/vz
dmsetup remove pvec-storage
echo "Flashcache stopped"
else
echo "Flashcache not running"
fi
}

case "$1" in
    start)
flashcache_start
    ;;

    stop)
flashcache_stop
    ;;

    restart)
        $0 stop
        $0 start
    ;;
esac

exit 0

 

Enabling the init.d file.

Now we need to make the file executable and make sure it’s run on boot.

chmod +x /etc/init.d/flashcache
update-rc.d flashcache defaults

 

Give it a spin

Right, that should do it. Reboot your machine and see if it comes back.

reboot

If all went well, your drive should be mounted with FlashCache in between.

root@vh43:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
none                   32G  256K   32G   1% /dev
/dev/md1               10G  1.3G  8.2G  14% /
tmpfs                  32G     0   32G   0% /lib/init/rw
tmpfs                  32G     0   32G   0% /dev/shm
/dev/fuse              30M   12K   30M   1% /etc/pve
/dev/mapper/pvec-storage
                      1.8T  196M  1.7T   1% /var/lib/vz

You can also see the statistics of FlashCache by running:

cat /proc/flashcache/md2+pve-storage/flashcache_stats

That’s it! Your Proxmox system should now have it’s VMs on the FlashCache drive.

If you have any questions or feedback, just leave them below.

References:

December 21st, 2012

Installing nginx and php-fpm on Mac OSX 10.8 using ports

by Florian Jensen

This guide will guide you through the process of setting up PHP-FPM and nginx on your Mac OSX 10.8 Mountain Lion using MacPorts.

Installing XCode

For starters, you need MacPorts installed. This requires XCode and XCode’s Command Line tools. You can get XCode off the Apple Store. Once installed, go to preferences and install the Command Line tools.

Next install MacPorts. Just go to this page and download the pkg for your version of OSX.

Once that’s done, we’re ready to start.

Installing PHP-FPM

First, let’s install PHP-FPM:

sudo port install php54-fpm

Now we’ll also need to copy the config file:

sudo cp /opt/local/etc/php54/php-fpm.conf.default /opt/local/etc/php54/php-fpm.confsudo cp /opt/local/etc/php54/php.ini-development /opt/local/etc/php54/php.ini

That’s PHP sorted. If you want to install any PHP extensions, just use port install php54-EXTENSION.

Installing nginx

Next, we install nginx and copy the config files into the right place.

sudo port install nginx
 sudo cp -p /opt/local/etc/nginx/fastcgi.conf.example /opt/local/etc/nginx/fastcgi.conf
 sudo cp /opt/local/etc/nginx/fastcgi_params.example /opt/local/etc/nginx/fastcgi_params
 sudo cp /opt/local/etc/nginx/mime.types.example /opt/local/etc/nginx/mime.types
 sudo cp /opt/local/etc/nginx/nginx.conf.example /opt/local/etc/nginx/nginx.conf
 sudo mkdir /opt/local/etc/nginx/conf.d

Configuration

That’s it. Now you can go ahead and configure nginx to your liking by editing the file:

/opt/local/etc/nginx/nginx.conf

I have also changed some configuration files to make PHP work properly off my ~/Sites/ folder.

Edit /opt/local/etc/php54/php.ini:

cgi.fix_pathinfo=0

This will help with the nginx config.

Edit the fastcgi_params file:

sudo vi /opt/local/etc/nginx/fastcgi_params

It should look like this:

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

And finally, add a location to your nginx configuration for PHP:

sudo vi /opt/local/etc/nginx/nginx.conf

Here’s my config:

        location ~ \.php$ {
            root   /Users/florian/Sites;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
        }

That’s it for the configuration.

Tweaking .bash_profile

Lastly, we’ll add some lines to your .bash_profile to make it easier to start and stop nginx and php_fpm.

vi ~/.bash_profile

And then add the following:

# nginx
 alias nginx_start='sudo launchctl load -w /Library/LaunchDaemons/org.macports.nginx.plist'
 alias nginx_stop='sudo launchctl unload -w /Library/LaunchDaemons/org.macports.nginx.plist'
 alias nginx_restart='nginx_stop; nginx_start;'
#php-fpm
alias fpm_start=’sudo launchctl load -w /Library/LaunchDaemons/org.macports.php54-fpm.plist’
 alias fpm_stop=’sudo launchctl unload -w /Library/LaunchDaemons/org.macports.php54-fpm.plist’
 alias fpm_restart=’fpm_stop; fpm_start’
Boom! That’s it. You’ve now got nginx and php-fpm running on your Mac.
April 21st, 2012

Budget Flights – worth the money?

by Florian Jensen

Are budget airlines an alternative to full service airlines?

A Thomas Cook aircraft at London Gatwick

After having scoured the internet for cheap flights to Tunisia for weeks, I’ve decided to book a flight with Thomas Cook Airlines. The price for this started out as £172 return for a flight from London Gatwick (LGW) to Enfidha (NBE). The reason that I chose this flight was that I needed to be in Monastir for a week, and no normal flights were heading that way. The only alternative was Tunisair who are flying from Heathrow to Tunis for about the same price.

So I decided to give Thomas Cook Airlines a try, knowing that I would be conned out of my money somehow.

 

The pricing scam

When you go through Thomas Cooks online booking system, it all looks nice in the beginning, but gets worse with every click.
They lure you in with a reasonable (not even low!) fare, in this case £172, but when you start to click next, you realize what’s missing.

Thomas Cook Airlines "extras"

Let’s start off with luggage. On any full service airline, you’d be allowed to take 20-30kg of hold baggage with you. As you’d expect, Thomas Cook doesn’t allow this. Traveling with a bag is an extra for a mere £32 per 20kg.
If you were expecting a complementary meal, or just even a snack on board of a 3 hour flight, think again! That option will set you back another £16 per  flight. Who needs food anyway?
Then you have countless other options to lose your money on. I tried to be smart, and didn’t select any options (like priority check-in or extended seat pitch), as I was set on not paying extra charges.

Come the day of departure, I show up at the airport with a small carry on bag and my laptop bag. I was aware that I’d be allowed to only have 5kg of hand baggage, so I packed light in the morning and made sure all heavy items were in my pockets or jacket.
After a long queue (±80 people 3 hours before scheduled departure), I finally arrived at the check-in counter. The moment of truth, the bag goes onto the scale and shows 5.1kg. Phew, I thought. Just made it! (this was a bag with 2 jeans and 2 shirts, so basically nothing!)
However, a few seconds later, I learnt that unlike full service airlines, Thomas Cook doesn’t allow for a personal item (such as a laptop bag). That meant that I had 2 carry on items which exceeded the limit by 1. That meant I was allowed to do the walk of shame to the additional payments desk (they actually a dedicated check-in counter!) and pay an additional £25 to check 5.1 kg of baggage.

However, the fun good news doesn’t stop there.

 

Outbound flight fiasco — Operational issues

One doesn’t expect much from a budget airlines like Thomas Cook. I was prepared to having to pay for excess baggage, but I wasn’t for the next one.

We’d like to point out that your flight has been delayed from 19:20 to 23:40.” No reason for this delay could be given, the only thing one got was a £5 voucher. That’s £5 for a flight you’re supposed to check in 2 hours early for! For me that meant 6 hours of waiting at the airport.

Later I found out that the reason was “operational issues”. My guess is that the flight was so overbooked that it was cheaper for Thomas Cook to fly in a bigger aircraft and fly the passengers out than it would be to offload a substantial amount of passengers.

 

The in-flight experience

TCX 1274's Boeing 757

The plane on the flight out was scarily old. I think that AlItalia actually has newer planes than some of these Thomas Cook Airlines planes. They definitely have a better seat pitch. I’ve flown quite a bit over the last few years, and I’ve never experienced such a small seat pitch as on Thomas Cook Airlines. Any StarAlliance carrier I’ve flown with in Economy has had a larger seat pitch and didn’t require me to squeeze myself between two chairs. Even Nouvelair (a Tunisian charter airline) and AirBerlin have a substantially better seat pitch. Heck! Even Easyjet!

If you decided to pay for a lunch, you would’ve gotten bangers and mash and some tea or coffee, which looked quite nice.

 

Don’t travel without your Priority Pass

The only upside of having traveled with Thomas Cook was that I was able to thoroughly try out the Priority Pass benefits at London Gatwick and Enfidha.

 

London Gatwick Nº1 Lounge (South Terminal)

Eggs Benedict in No 1 Lounge

This is a beautifully designed lounge with great service. If you travel through Gatwick Airport, this is definitely a stop you need to make.
It took away the frustration of having to wait 6 hours for the flight as you’re greeted by delightful staff in a calm environment. This lounge definitely makes my personal top 5 of lounges.

 

Enfidha CIP PrimeClass Lounge

If you’re looking for a place to take out the stress of your travels, the CIP PrimeClass lounge is the place to be. You’ll be greeted by friendly staff offering you breakfast (I was there early!) and taking care of your every need (food, drinks or other). They will also guide you through a private security checkpoint and to the front of the queue of boarding (Hah! You paid for the Thomas Cook extra?!). The only thing that does get a bit annoying is the extremely helpfulness of staff, asking you if you need anything a second after you finish your plate / drink. Just like the Nº1 Lounge, I highly recommend using this service.

The CIP PrimeClass Lounge at Enfidha (NBE)

 

Post mortem

To summarize, if you have to travel with Thomas Cook Airlines, I feel for you. For me personally this was probably the last time I ever set foot on a Thomas Cook Airlines flight (never say never), and will in future take a Tunisair flight to Tunis instead. The song that pops to mind is the following:

Sorry :)

February 14th, 2011

Finland’s Opportunity to reclaim former glory

by Florian Jensen

Last Friday marked a massive change in Finland. The by far largest Finnish company announced that it would drastically change its direction. Stephen Elop decided to jump from a “burning platform” into the unknown, but realized that by doing so he could not take everyone with him. Nokia’s decision to adopt Windows Phone 7 as primary operating system and terminate all long-term development of Symbian will result in many Nokians having to look for new jobs. But it’s not just the Nokia employees that will suffer, but also the countless contractors that worked for Nokia. The Minister for Economic, Affairs Mauri Pekkarinen, expects 20,000 jobs across Nokia’s sites in Finland to vanish: “You’re talking about 20000 people, it’s a big number”. One of those sites is Oulu. Nokia’s R&D facility in Oulu is currently the home of approximately 2000 engineers, of which 1500 have been working on Symbian and MeeGo. Most of them will face their jobs being axed.

Having been to Nokia in Oulu, I have met some of the most amazing people I know. And it is one of them who has come up with a rather nifty idea. Kristian Luoma, Product Manager turned Entrepreneur decided to do something about this situation.

What would happen if an extreme incubator would be set up in Oulu, where these bright minds can work together on the next big thing. Nokia started out as a small Finnish company and became the world’s leading mobile phone manufacturer with an annual revenue of €42.45 billion. What would stop the Finns from reclaiming former glory?

If there’s something that every Entrepreneur I’ve met has said to me, it was: Dream big! Achieve the un-achievable! “Oulu Fifty” is a vision for a programme with the insane goal of producing fifty start-ups in twelve months. That’s roughly 1 start-up per week! It would be a programme giving these talented people all the tools they need, such as shared office space, legal advice, exposure, chances to get in touch with VCs and much more. The goal is to create a vibrant community that fosters innovation and spins out seedable companies.

“Oulu Fifty” would run innovation and idea exploration sessions which would be open to anyone to attend. It would regularly have hackfests to perform rapid prototyping. It would seek out to consumers to vote on the best ideas – every week. It would educate its members on technology and other necessary skills – by mentoring and by leasing inspiring speakers to visit the campus occasionally.

This could be an amazing opportunity for both the Finnish government which is strongly encouraging entrepreneurship and the Nokians. But such a programme requires a few things to be successful. On one hand, “Oulu Fifty” would need support from the industry. Getting Entrepreneurs and VCs involved that would be willing to visit. On the other hand, this programme would need financial support to pay for facilities as well as a limited staff running the programme which would approximately be €0,5 million for 1 year of operation.

I personally love this idea, but all the credit has to go to Kristian Luoma who dreamt up this idea. This programme could bring Oulu back to the forefront of technological innovation and save the by Nokia abandoned local community. I sincerely hope that there is a future in this idea, but we will see what happens in the next few weeks.

Just in case you have €0,5 million lying around, and want to support this programme, do contact me: florian at florian jensen dot com

December 24th, 2010

Europe under snow and ice

by Florian Jensen

It’s been a while since I wrote a blog post here … I blame Twitter … but this story won’t fit the 140 character limit.

The plan

I was in Stuttgart for a week of consulting, so I wanted to return on Saturday to London to pack my stuff and head off to Brussels on Monday for the holidays.

However, it seems like I’ve chosen a bad weekend to travel.

The first part of my trip was from Stuttgart to London Heathrow.

Saturday, 18th of December 2010

I was booked onto the 13:20 – 14:05 flight from Stuttgart to London Heathrow. Just before leaving Esslingen to head to the airport, I checked the Lufthansa website to make sure my flight was on.

Great! Flight is scheduled, whereas British Airways decided to cancel all flights pre-emptively. Feeling smug, I was off to the Airport.

Everything was going as planned, check-in, security check, lunch and then off to the gate. Boarding time was planned for 12:50, but it took a while for Lufthansa staff to show up at the gate. At 12:55 they finally did show up and shared the bad news. They were unable to get a landing clearing at Heathrow due to the adverse weather conditions. My smugness quickly disappeared off my face and it was off to the Lufthansa Ticket desk.

Turns out, you can go backwards through the entire process at an airport to leave it. Arrived at the ticket desk, I quickly got booked onto the flight at 16:40. Ouch. That meant trying not to get bored for another 3 hours. Thank god for my iPad with Spotify and Angry Birds.

3 hours later, again at the gate, the same announcement: Flight cancelled due to weather at Heathrow. Yet another trip to the Ticket Desk, where Lufthansa was kind enough to pay for a great 4* Hotel near the Airport and 20€ for food and drinks. Compared to British Airway’s budget of 200€ for all stranded passengers, Lufthansa was great. I was afraid it would be a small, cheap hostel but it wasn’t. The Pullman Fontana was an amazing Hotel. Nice rooms, fast WiFi and a well stocked bar (gotta love Campari!). The only thing that was disappointing was the breakfast. Just a few mini-Croissants and some toast. It’s the only thing that didn’t fit the entire 4* Business Hotel setting.

And so we get to

Sunday, 19th of December 2010

Wake up call at 4:30, quick shower, mini-breakfast and then off to the Airport again. I was supposed to get the early morning flight, yet I already saw online on the Lufthansa site that it was cancelled. However, the receptionist was convinced that the flight wasn’t, so it was off to the airport again.

What a coincidence, the 6:50 flight was cancelled. So I got onto the standby list of the 13:20 flight, a ticket for the 16:40 flight and a 7€ voucher for breakfast. During breakfast, I was browsing the internets, I checked the Heathrow Airport website and saw that they closed the airport completely for all incoming flights. So it was off to the Ticket Desk again, to tell them that there won’t be any flights going out to Heathrow today.

So, what were the options? I asked about train tickets: Possible, but only to the German border, and it didn’t look like it would be easy to get a hold of Eurostar tickets. So that was a no go.
The next option was going back to the Pullman: After a lengthy talk, they offered us a second night at the Pullman, but clearly said that it would be the last one they would pay for, as this was a case of force majeure, so they can’t be held liable. Realizing that the situation at Heathrow wouldn’t change over night, and that the backlog of passengers at Stuttgart for London Heathrow was growing, this didn’t seem like a smart move. On top of that, I had a flight booked from Heathrow to Brussels on Monday at 10:50, so I would possibly miss that flight.

This is when I overheard some people mentioning a Germanwings flight to Stansted in the evening. So I asked Lufthansa to get me a seat on that flight which they did. However, seeing as this was a low cost carrier, I had to get my luggage and wait for check-in to open 2 hours before the flight was scheduled to leave. This meant killing a day worth of time.

Having met a fellow traveler at the Pullman the night before and both being booked onto the Germanwings flight, we decided to head into Stuttgart and do something there. Little did I know, Stuttgart is the dullest city in the world (no offense). Add the fact that it’s Sunday to that, and you’ve got a place where you don’t want to spend another minute in. After 2 hours of going from one Café to another and keeping the caffeine levels high, we found a “Casino”. It was a very strange place. It was an underground cellar, with 2 pool tables and 6 slot machines and a few very odd human beings. Didn’t matter, it was something to do. So we played pool. The final score isn’t relevant.

Having wasted time there, it was off to the station to get hold of some WiFi and then off to the Airport to check-in. You could immediately see that Germanwings is a low-cost carrier, as the queue to check-in was stretched around several corners. Nevertheless it was a flight to the UK.

Luckily that flight wasn’t cancelled and the plane finally left Stuttgart. A quick sidenote, the Germanwings flight was quite good. A nice amount of legroom (more than Brussels Airlines! wtf?!) and very professional and friendly on board staff.

Landing in Stansted, it was off onto the Stansted Express, then Underground (which for once wasn’t on strike) and finally South West Trains to Egham. HOME.

The experience

Overall, it wasn’t a “bad” experience. Of course, I would’ve preferred not to have been stuck at the airport for 2 days, but Lufthansa was very friendly and having a Hotel for the night and not having to sleep on the benches at the airport like BA passengers was great.

The thing they could’ve done better is communication. They could’ve told the receptionist that the flight is cancelled, so that we could’ve gotten another few hours of sleep. Also, how come we, as passengers, know that a flight will be cancelled before staff at the airport ticketing desk know? Not good. So in short, Lufthansa, get your communication sorted.

And so we’re getting to Monday.

Monday, 20th of December 2010

Getting up at 8am is horrible for any student. So being in the age of Twitter, I wanted to make sure I don’t get to the airport for nothing, so I asked Brussels Airlines on Twitter if my flight was operating.

Yay! Looks like I might get home on time. So I was on my way to Heathrow.

I am used to just finding an empty departure hall, with loads of space and hardly anyone in sight. Today was completely the opposite. Staff was checking if you’re flight was scheduled at the entrance before they let anyone inside and inside the hall people were queuing everywhere and some families lying on the floor on these aluminum blankets.

As I know where the Brussels Airlines check-in is, I didn’t bother checking the boards, and just headed over to the desk. This is where I saw a mass of people pushing and shoving each other to get to 2 check-in desks, and a woman with a bullhorn screaming at them to get back. Turns out, Cyprus Airways had a check-in desks next to Brussels Airlines. Amazed by how uncivilized that queue was, I queued up at the Brussels Airlines desks where I only saw 2092 (which was supposed to have left at 8:30 … it was 9:50). Odd. This is when I saw another tweet by Brussels Airlines.

Ouch. Oh well, I was in the queue already, so let’s see if I could get on any other flight to Brussels. Turns out, I could. An amazingly professional, calm and friendly Brussels Airlines staffer got me onto the standby list of a very delayed SN2092 which was leaving more or less now … and assured me that I would get a seat. Great!

Fast-track through Terminal 1 security and then off to the BMI Great British Lounge to get some breakfast. Turns out that a few weeks ago, BMI decided to change the access rules to it. Even though the BMI website states that BMI Diamond Club Silver card holders get access to the lounge (even with a guest), they now deny access to people not flying on BMI metal. Having booked a BMI flight (BD flight number – even though operated by another LH group member), and thus paying BMI, Silver members aren’t allowed in.

Very disappointing decision by BMI, which results in me not booking through BMI anymore. No point in paying more for LHR-BRU on FlyBMI.com compared to BrusselsAirlines.com.

So it was time to head off to the gate. I quickly got a seat on the plane and boarded.

This is when the fun began: We spent 3 hours sitting on the plane before actual take-off.

The first two hours were spent with the flight attendants counting the people on the plane and comparing those numbers to the manifesto. Seems like those numbers didn’t add up. But how come this takes 2 hours?! After they finally figured that out, it took 30 minutes to get a starting clearance, so we were off towards the runway. Heathrow decided to close the runway for 30 minutes to clear it (even though it was clear).

40 minutes later, touchdown in Brussels. Looks like we just about made it before they realized they were running out of de-icing fluid.

So I thought that was it. Quickly picking up my luggage and then home. Wrong. Turns out my luggage decided it wanted to stay in Heathrow for a bit longer. Normally not a bad thing, however Brussels Baggage hall was a mess.

BRU luggage chaos - picture by Regi Penxten

BRU luggage chaos - picture by Regi Penxten

Bags everywhere but mine wasn’t anywhere. That meant queuing. And not just queuing, but a queue of at least 200 people for the baggage claim. Add to that the fact that there were only 2 desks open to handle the lost baggage claims, this meant a long time to queue.

It took 6!! hours!! 6 hours to tell someone they lost my bag. Incredible. Why weren’t there more people working the lost and found desks?

To sum up, great ground staff from Brussels Airlines at Heathrow, 3 hours of sitting around on the plane before take-off (and seat pitches that are less than on Germanwings, a low-cost carrier!!) and then 6!! hours of queuing at the lost & found. All in all, a lot of room to improve.

Just a few last words: I just wanted to say, a great thank you to the people behind the @FlyingBrussels, @FlyBMI and @HeathrowAirport twitter accounts. You guys rock!