Submit button

Product and Innovation department of Deutsche Telekom AG and finnlabs are evaluating the open source web-based project management and collaboration tool Redmine. Teams of Deutsche Telekom’s Video-on-Demand platform Videoload.de currently use Redmine in complex product development projects. The goal of this pilot scheme is to find out whether the lightweight open source challenger is a viable alternative to established commercial software packages. Special focus is put on ease of customization, adaptability, and total cost of ownership. The pilot scheme covers a multitude of redmine modules, including issue tracking, status reporting, time tracking and -billing, and document management .

The first results are positive. During the initial set-up, Redmine offered a first glance on its key strength: flexibilty. The Telekom development process could be easily matched, including company-specific work-flows, roles, and user interfaces.

The partners are confident, that the collaboration tool Redmine will successfully meet Telekom´s needs in the future. Redmine is written in the ruby-on-rails framework, allowing for the cost efficient development of plug-ins that provide project-specific functionality and the integration into existing systems. The active Redmine development community publishes the code for the core system and plug-ins under the open source license GPL. This open approach ensures an uninhibited flow of any improvements and extensions of the software among all Redmine users.

Three years ago the finnlabs engineers chose Redmine as their core collaboration tool for software development projects. They never regretted this move, as Redmine offers rich out-of-the-box functionality and the flexibility of a well designed and actively maintained open source project.

Being a “good open-source citizen”, we wish to give something back to the community e.g. the Redmine Continuous Integration System ci.finn.de. Numerous patches were written and and many tickets on redmine.org addressed by finnlabs’ engineers. A substantial share of this work is done beside the day-time job in a truly idealist way.

These contributions are recognized by the core Redmine development team: We are proud to announce that Holger Just was promoted to the status of an official contributor to the core Redmine project. He is now able to move the project forward more efficiently. Being closer to the core ensures that finnlabs’ contributions will continue to seamlessly integrate into Redmine, making this wonderful piece of software even more powerful.

Congratulations, Holger!

Tim Felgentreff at JaX 2010

w.lindenthal / 07 Jun 2010

Tim Felgentreff, one of our newer team members, had the opportunity to speak at the JaX 2010 in Mainz, Germany, together with Ralph Guderlei from exxcellent solutions. The JaX is one of the largest Java conferences and primarily aimed at enterprise architectures and SOA. Tim’s talk concerned distributed version control systems and how to integrate them into existing development environments. The slides are available in German.

Coming to terms: Integrate your organisation's glossary and terminology into your website. finnlabs' glossary solution finnterm lets users access your corporate knowledge base where it is needed most — directly in the context of the document/website/intranet section.

"Clicking beats talking.": Experience finnterm's functionality now and see how easy it is to embed a multi-lingual glossary into a website. No worries, it is free. No registration or other red tape awaits you.

Accepted for Ruby Summer of Code

w.lindenthal / 06 May 2010

We congratulate our team members Konstantin Haase and Tim Felgentreff for beeing accepted at Ruby Summer of Code.

Ruby Summer of Code is a student internship program, modeled after Google’s Summer of Code, designed to help fund student development of Ruby coding projects in Summer 2010.

Konstantin Haase’s project will be “Live code reloading” while Tim Felgentreff will be working on “Implementing a subset of the Ruby C-API for JRuby”.

finnlabs introduces Redmine at Siemens

n.lindenthal / 27 Apr 2010

We are pleased to announce that finnlabs has successfully introduced the project management web application Redmine at Siemens’ financeTraining. The open-source solution Redmine was adapted and extended to match Siemens’ business processes. It now aids the management and maintenance of its finance web-based training materials and its financeTraining knowledge base. It also facilitates issue- and time-tracking, project planning and controlling, and user feedback management. In addition, its presence simplifies communication between team members and external staff.

finnlabs was involved in all phases of the system roll-out, starting with the process- and requirements analysis. During integration, these procedures slimmed down as time-consuming tasks – such as compiling up-to-date reports and supporting cost control – were automated. Furthermore, finnlabs developed Redmine plugins. These provide tailor-made functions to best integrate Redmine into the existing financeTraining IT-infrastructure. Naturally, the user-interface follows Siemens’ intranet design guidelines, reducing training costs for users already familiar with other Siemens applications.

Siemens’ data security and privacy policies prescribed an in-house solution. All components – including monitoring, backup, and software update systems – run on servers within Siemens’ IT-infrastructure.

finnlabs founder wins research award

g.schmidt / 12 Mar 2010

We are proud to spread the news that finnlabs’ Thies Lindenthal won the Aareal Award of Excellence 2010 for his research paper “Demographics, Human Capital and the Demand for Housing”.

Thies’ research shows that households do not curb their consumption of housing services after retirement - as long as they can afford it. This contradicts a common belief that the elderly downsize their homes and move to smaller places. This result is good news for housing markets in Europe’s aging but wealthy societies.

The prestigious award was handed out in cooperation with the European Business School (EBS) in Oestrich-Winkel, which is one of the leading real estate research institutes in Germany.

Aareal Award of Excellence for Thies LIndenthal

Professor John Clapp (University of Connecticut) and I are currently working on a new version of our study on real option value in hedonic regression frameworks. In short: we suggest an improved index estimation technique which we apply on data from Berlin home sales. The paper is still very “pre-alpha”, but one result is so fascinating that I would like to share it already.

West-Berlin’s home values 1978-2007: prices in free fall.

(Hedonic index estimated on individual transaction data provided by Berlin’s Gutachterausschuß für Grundstückswerte. For a full discussion please see working paper.)

It does not come as a surprise that Berlin home values did perform well in the last years. The extend of the decline, however, is breath-taking: Berlin home values lost a staggering 46% in real terms since its all-time peak in 1993. If you know of any major city in the world that experienced a similar melt-down, please let me know.

The loss is even more severe against the background of strong real estate markets in most other European capitals. What went wrong in Berlin?

Berlin’s home values compared to selected European peers.

All prices are in nominal terms. Peers were selected on data availability. For sources → click here.

Yes, we made it into the list of JRuby reference cases:

http://www.engineyard.com/about/press/09-11-18-engine-yard-announces-momentum-of-jruby

The PONS.eu online dictionary’s design combines the best of two worlds: Components requiring high-performance (search etc.) are written in Java, giving the system high speed and a low computing power footprint. Services with more extensive functionality but lower performance requirements were realised in Ruby, capitalising on its low development costs. For the seamless intergration of these two different programming languages we rely on JRuby. finnlabs is proud to develop for and to host PONS.eu.

On August 23rd 2009 three finnlabs colleagues aimed high – and climbed the Piz Bernina (4049m) from the legendary white northern Bianco Ridge. Piz Bernina is the highest summit in the Engadin region and lies close to the resorts of St. Moritz and Pontresina. It is one of the few isolated 4000m peaks in the Alps. The Bianco Ridge is surely the most famous route to the summit being more difficult and more exposed than the “normal” route.

“View on Piz Bernina with Bianco Ridge.”

More

finnlabs international advisory board

t.lindenthal / 04 Sep 2009

The statement is dangerously close to a platitude from the management consultancy literature. Nevertheless, it holds true: finnlabs is constantly re-inventing itself. The business environment we are operating in has radically changed during the last years. The opportunities offered during the dot-com euphoria a decade ago were very different from the painful sobering up later on. The industry professionalized and today a very different set of abilities is expected from a company to thrive.

Ever since the infancy of our business, a network of experienced friends supported us in almost any dimension of our work. As visionaries, sharing their business ideas and discussing ours. As experts, providing insights into new technologies. As experienced managers, telling us how to run operations. As friends, whose advise is always an invaluable help.

Even in the 10th year of operations we have not reached a state of “business as usual”. Our customers’ needs and the technological possibilities evolve constantly. Swift adaptation is the key to serve our clients in the best way possible. Thinking ahead, developing visions, new products and possible scenarios is still as crucial as during the first days. We are therefore grateful for the continuous conversation with “our” network which is a constant source of innovation.

finnlabs is establishing a more formal Board of Advisors. Institutionalising the exchange of knowledge and ideas intensifies the links within the network even more. Additionally it gives us a chance to thank and credit our advisors publicly.

The first members of the advisory board are:


UPDATE (Sep. 8, 2009)

Dr. Meusel has published a press release about the establishment of the international advisory board. Thank you very much, Winfrid!


The iPhone OS 3.0 brought push notifications to most of finnlabs’ mobile devices (iPhone is dominating here). Since we are big fans of Continuous Integration, I wanted to see whether or not we could get notifications about our build status to our phones. It turned out to be rather simple. By combining a) a great iPhone application, b) simple APIs, and c) open source work by others, we were able to achieve this goal.

The Ingredients

Prowl is an iPhone application, that allows to forward Growl notifications to your iPhone via Apple’s push notification technology. In fact, your message is passed from Growl to the Prowl-Growl-Plugin to a Prowl server to an Apple server to your phone. Additionally Prowl offers an API for third party applications such that you are able to use the Prowl infrastructure (servers and iPhone client) for your own good, independent from a running OS X machine.

Prowler is a RubyGem, that wraps a simple Ruby API around Prowl’s web service. This enables every ruby application to sent push notifications using any given Prowl API key.

ShortURL is a RubyGem, that wraps an even simpler Ruby API around multiple URL shortening services. Its as simple as that.

CruiseControl.rb is our favorite Continuous Integration server. We are hosting an instance for over a year now here at finnlabs. Every project is hooked up there. Generally we are monitoring the build status using the build server’s web page or CCMenu. Actually, we never set up the email notifications for build changes, since there was no need to do so.

What we did

CruiseControl.rb knows a simple yet powerful plugin architecture, which allows arbitrary ruby code to be executed on certain build events. By using the above mentioned Prowler gem and the the EmailNotifier bundled with CruiseControl.rb itself, we were able to implement a simple CruiseControl.rb plugin called ProwlNotification. It sends notifications each time the build status of a certain project changes.

If configured correctly, the message will include a link to the project page on your CruiseControl.rb server, so that all necessary information is right at hand. If present, ProwlNotification uses the ShortURL gem to shorten the link.

Get it as well

All that was left to do was writing documentation and installation instructions. You may find everything on the GitHub project page. The code is published under an MIT-style license, so you are able to change and tweak it to your needs. Of course, we would love to here, how you like it.

Enjoy.

Hurray: 9th birthday SiN/Finn GmbH!

t.lindenthal / 19 Jul 2009

Last week, Finn GmbH celebrated its 9th birthday. We have come a long way since then. Founded as a provider of educational content and webservices in the heydays of the dot-com euphoria, we soon offered software development to a distinct group of clients. Solid craftsmanship and fast adaptation was recession-proof. We continued to flourish even when many fellow-companies had to shift several gears down in the following years. Today, finnlabs offers a broad range of services and own products – and is more fun than ever.

This is a good moment to thank our team and clients, our business partners and advisors, our friends and family for their excellent teamwork, support, help, and inspiration. Cheers to everyone!

Just like Bruce Lawson on sitepoint.com says: «Yes, You Can Use HTML 5 Today!» Besides new HTML elements, HTML 5 brings lots of new features to JavaScript and the DOM-API as well. One of these new features is the hashchange event.

The hashchange event

Whenever you follow an internal link on a website, the portion of the URL behind the # in the location bar and the browser’s history is updated. This enables easy browsing within large documents. With AJAX-enabled websites, changing the location hash was also used to store a certain navigation step with the same page, without being directly related to page internal links. This technique brings history support and bookmarkability - two important features of a browser - to these sites. The DOM-API implemented in current browsers simply does not allow for capturing changes of the location hash directly.

HTML 5 will overcome this shortcoming. Here, every time the location hash changes (either by following an internal link, using the Back button, a bookmark, or by changing the hash in the location bar) an event will be triggered that can be listened to by any JavaScript function.

Current state

As of today, only Internet Explorer 8 supports the new event. In all other browser this behavior needs to be simulated. This is generally done by constantly polling the state of the location hash and comparing stored and current values. Managing the polling function and triggering the right actions may become tedious, especially when multiple actions need to be run.

jQuery.observeHashChange plugin

In order to make use of the new functionality in HTML 5 and Internet Explorer 8 while still supporting older browsers, we compiled a jQuery plugin that gives you a cross platform, jQuery-like API. The API always tries to use the best possible function, so when other browsers start to support for the hashchange event, your application will benefit automagically.

This page provides a live example. Besides our new plugin, the site features new HTML 5 elements to structure the content. It already works in all major browsers, today. (Please note, that the layout won’t work in Internet Explorer 6, but this is related to missing CSS features.)

As usual, we have released the plugin on GitHub page.

finnlabs uses HAProxy to balance the requests on the application servers powering our clients web applications. We recommend this fantastic piece of software to anybody as it scales almost infinitely in terms of throughput and concurrent connections. It is even that efficiently designed that under extreme loads most of the times not HAProxy becomes the bottleneck but the underlying operating system.

Unfortunately, HAProxy’s configuration is not very flexible. What was missing the most is some kind of “include” mechanism to split up the single large configuration file into smaller modules (at least in my opinion and according to posts of others in the mailing list).

As a workaround I developed a small python script which takes bits of configuration from a well-defined directory structure and assembles the single configuration file. Including a call to this script into the init script of HAProxy mimics an include mechanism. The script can be downloaded from github. A modified init script based on the one which comes with the HAProxy package of Debian (originally written by Arnaud Cornet) can also be found there. You might need to update the path values in the script.

The script expects a certain fixed directory hierarchy. The top-level directory names are fixed. The other names can be chosen arbitrarily. Note that the second level directory names end up as section names in the final configuration file. Choose your names so that they are accepted by HAProxy. An example directory tree for the configuration is given below. If you put that tree below the /etc/haproxy the script will work out of the box and create the /etc/haproxy/haproxy.cfg file.

  • global
    • 00-base
    • 10-log
  • defaults
    • 00-base
    • 10-errorfiles
  • frontends
    • my-first-frontend
      • 00-ports
      • 10-acls
      • 20-backend1
      • 21-backend2
    • my-second-frontend
  • listen
    • sect1
      • 00-base
      • 10-backend1
    • sect2
  • backends
    • my-first-backend
      • 00-base
      • 10-server1
      • 11-server2
    • my-second-backend

DNND.de in the "meedia"

t.lindenthal / 02 Jun 2009

DNND caught the attention of Meedia.de - a portal serving German news professionals with in-depth coverage of the industry. With a sympathetic dose of understatement Meedia.de introduces itself as a “source of information for anyone interested in the media sector”.

DNND is a hobby-horse project of the finnlabs founders. It aggregates the top headlines of German and international news providers on one page. The service is special as it picks those headlines that have been selected to be most important by the professional editors of the different sources (and not e.g. select on publication date only). This crowdsourcing approach gives a unique cross-section through the current state of the public discourse.

DNND is online for 10 years by now. Yes, it is a web 1.0 dinosaur.

The full interview (in German) can be found here.

At finnlabs we are using the jQuery library in all current web development projects. JQuery allows for writing the functionality we need in fewer lines of code and thus eases maintainability and minimizes bugs and errors. The great variety of available JQuery plugins offers us the possibility to stand with our JavaScript applications “on the shoulders of giants”.

Autocompletion of text fields is a very common task and thanks to the jQuery autocomplete plugin straight forward to implement for most modern web browsers. It works great in most use cases and has enough hooks and whistles to extend its functionality for individual needs.

Unfortunately all Opera browsers at hand (Version 9.x) show an annoying bug. When the Ajax request returns without results, the suggestion list is removed and the cursor is placed at the beginning of the text input. This is a real burden for power users.

During a quick investigation it turned out, that $.Autocompleter.Selection is causing the trouble. The main purpose of this function is either to select portions of text in the autocompleted input element (when the autoFill option is used) or to place the cursor behind the last character (when an element is selected from the suggestions list). With the help of feature detection the best implementation is selected.

$.Autocompleter.Selection = function(field, start, end) {
    if( field.createTextRange ){
        var selRange = field.createTextRange();
        selRange.collapse(true);
        selRange.moveStart("character", start);
        selRange.moveEnd("character", end);
        selRange.select();
    } else if( field.setSelectionRange ){
        field.setSelectionRange(start, end);
    } else {
        if( field.selectionStart ){
            field.selectionStart = start;
            field.selectionEnd = end;
        }
    }
    field.focus();
};

I’m not an expert concerning feature detection. I always try to avoid browser dependent code and use cross-platform libraries instead. Here is no way around, so I started guessing: createTextRange is Microsoft’s approach, setSelectionRange and selectionStart are both the Mozilla way. Opera seems to support createTextRange, but obviously not in the right way, hence the bug. By simply switching priorities and starting to look for setSelectionRange first everything magically started to work fine. Here is our new version:

$.Autocompleter.Selection = function(field, start, end) {
    if( field.setSelectionRange ){
        field.setSelectionRange(start, end);
    } else if( field.createTextRange ){
        var selRange = field.createTextRange();
        selRange.collapse(true);
        selRange.moveStart("character", start);
        selRange.moveEnd("character", end);
        selRange.select();
    } else if( field.selectionStart ){
        field.selectionStart = start;
        field.selectionEnd = end;
    }
    field.focus();
};

Sometimes it is that simple.

In order to better track the code changes, we just released the fixed code in our GitHub repository. You can find minimized and packed versions of our updates there as well.

A truly global production company, Siemens AG employs 430,000 people in 190 countries. This international presence implies a large number of employees work in languages other than their native tongue. English, thanks to Siemens’ localisation mechanisms and training programs, has become its unifying corporate language. When it comes to communication, finnlabs supports Siemens in the field of e-learning. Our engagement at Siemens signifies the development of a major training initiative: user-centric translation services. We reduce language barriers encountered by trainees, thus increasing quality, user acceptance, and learning effect.

Our collaboration had two major components. First, finnlabs re-designed Siemens’ deployed glossary mechanism. This tool plays a key role in their corporate knowledge management and training programs. It centrally maintains uniform definitions and concepts used in subsidiaries across the globe. One can easily access these terms through a web service such as the Siemens intranet and can embed them in a multitude of training manuals and other educational material. finnlabs combined all aspects of glossary content management into one intuitive web interface. Editors do not need to possess technical skills to roll-out changes, which are deployed in real time. Definitions do not have to be hard-coded into training content, which drastically reduces development and maintenance costs. Multiple roles and a clear access concept allow for content design and maintenance in varying steps.

The second challenge of our project was to reduce language-based friction in the training process. The most direct approach would have been prohibitively expensive and out of reach: to translate all documents into every language used within Siemens. finnlabs’ response provides technology-driven language solutions which enable employees to work confidently with material in English or German, without being native speakers in either tongue. We provide high quality translations of training content in the user’s native language. Beside company and industry-specific vocabulary, we integrate extensive general dictionaries, ensuring users receive support for basic requests. Employees do not have to leave the training environment for assistance.

iPhone app: media management

n.lindenthal / 05 May 2009

mm1 Consulting & Management is a leading consultancy in the telecommunication industry. It has a long and illustrious history of managing extensive product-development projects for major European operators.

finnlabs joined with mm1 to design and prototype a media management client for Apple’s iPhone. The application syncs pictures and other media content between the iPhone and an online media application, such as a photo-sharing website. The power of the system lies in its intuitive user interface and its economic use of the handheld’s resources. An exceptionally small bandwidth footprint allows rich service while minimizing strain on data carrier networks.

PONS.eu: the best of both worlds

t.lindenthal / 02 May 2009

PONS GmbH, Stuttgart, is a leader in both German dictionary publishing and in marketing language-learning products and services. Since 2000, PONS has relied on finnlabs’ technology for all their online dictionaries and web-based language services.

finnlabs’ newest product is the multi-language dictionary platform PONS.eu. We enriched and integrated the renowned quality print content into a high-performance web application, designed to serve millions of queries a day. The system scales with demand, insuring PONS against future IT expenses, and revenues from higher popularity of its services are not eaten up by exploding service costs.

PONS.eu encourages users to contribute their own content. Utilising the potential of the web’s crowd intelligence is a bold step not yet taken by other established publishing houses.

The system’s key technical feature is its combination of the strengths of different programming languages. Components which require high performance, like the sophisticated dictionary search, are written in Java. This gives the system high speed and a low computing footprint. Services with more extensive functions but fewer performance requirements are written in Ruby, capitalising on its low development costs. finnlabs uses JRuby to seamlessly integrate these two different programming languages. PONS.eu has helped establish finnlabs’ reputation for running one of the first high-performance web services based on JRuby world-wide.

Philip Moyer (CEO EdgarOnline and member of the board XBRL US) explains in this manifesto how XML/XBRL could help to overcome the loss in mutual trust causing (inter alia) the global financial crisis.

The bottom line of the easily accessible white paper is: Transparency is at least as important as regulation. XML-based, standardised documentation of all steps in the mortgage securitisation could reduce investors risk. Knowing the underlying cash flows allows for reliable pricing of the securities. This could jump start the market for Mortgage Backed Securities (MBS) again.

Google Maps offers a great API that can help spatial researchers to find the corresponding coordinates (longitude/latitude) of addresses. With a bit of scripting, entire datasets can be localised at no cost. I have put a little example online. The code is available from the same location. In case you need to geocode a large number of observations, it would be better run to a stripped-down version of the script directly at your machines. Please be aware: Google limits their service to 20k requests per day. I am sure, you'll find a way around this upper threshold.

The latest edition of the Economisch Statistische Berichten (very broadly speaking the Dutch answer to the Economist) features an article by Thies Lindenthal and Prof. Piet Eichholtz. The authors analyse a possible collapse of housing demand caused by decreasing population numbers in the southern Dutch Parkstad agglomeration. Referring to experiences in Eastern German cities, an integrated demolition program is suggested for peripheral areas suffering from population losses.

The full article can be downloaded here (ESB-login needed).

The portal Gute Zeiten Schlechte Zeiten caters to fans of the German soap opera which bears the same name. Operated by RTL New Media, the page targets a broad but young and media-aware audience.

In its early days, finnlabs (under the name SiN GmbH) produced a series of animated flash movies featuring school-related topics for the educational section of GZSZ. From the first idea to the final product, finnlabs executed every creative step in-house: writing the stories, developing the characters, completing the storyboard, drawing, animating, and programming.

back to top