Lima Software is an independent software development company based in Helsinki, Finland. We develop custom applications and provide software development and consultancy services.
Software Development Services
Lima Software provides quality software development services at competitive daily rates.
We specialise in Java (SE and EE), Web applications (back end) and mobile application development (Android).
Contact us to discuss requirements and availability.

Some of our Custom Applications:

Mini Adventure

Mini Adventure

(Game for Android Smartphones)

Mini Adventure revolves around exploring a 60-level dungeon, in which the Hero's objective is to find a key that opens the door to the next level. The more levels you advance, more rooms and monsters will be generated. To keep it interesting, monsters use different strategies to pursue the Hero (from simple strategies up to Dijkstra's algorithm). A new level is randomly generated each time the player changes levels. No two games are the same.

With over 7,000 lines of code, "Mini Adventure" uses:

- Java specific techniques: Dependency Injection, Strategy Pattern, State Pattern, Singleton Pattern, Threads & Semaphores.

- Android specific techniques: Multiple activities, Surface View, SQLite, Game surface show different number of tiles depending on the screen dimensions and device orientation, game releases CPU when game is in background.

Available in Android Market

Trading Signals

Lima Software's Trading Signals

"Trading Signals" is a software that provides specific buy/sell/stop/exit signals based on proprietary algorithms optimized for Stocks in Nasdaq and New York Stock Exchange. You can also add your own trading algorithms by using Trading Signals' simple user interface that allows you to design and verify your trading strategies with back testing (virtual paper trades).

With over 10,000 lines of code, "Lima Software' Trading Signals" was developed as a multi-tiered project (handled as subprojects in Maven) and it uses:

- Java specific techniques: Multithreading, Spring Framework, Spring MVC, Dependency Injection, Strategy Pattern, Hollywood Principle, Abstract Factory Pattern, RESTful web services, MySQL, Web authentication/authorization, JSP, JSTL, JQuery, etc

Load Balancer

Lima Software's Load Balancer

"Load Balancer" is a tcp proxy with round robin load balancing mechanism.

$ java -jar load_balancer.jar <local port> <remote host> : <remote port>

example 1:

After executing below command, connections to localport 2210, will be redirected towards server: or server: , port 80 (HTTP)

$ java -jar load_balancer.jar 2210


example 2:

To redirect connections from localhost:2010 towards

$ java -jar load_balancer.jar 2010

Invoice Creator

Lima Software's Invoice Creator

In a few words:
"Lima Software's Invoice Creator" uses Itext to manipulate PDF files and create invoices for your customers.
You can focus on your core business and let us handle your invoice creation, printing and distribution.

With more than 4,000 lines of code, "Lima Software's Invoice Creator" uses the following Java techniques/technologies:

Multi-tiered architecture, Maven, Spring Framework, Spring MVC, Dependency Injection, RESTful Web Service, Web authentication/authorization, JSP, JSTL, JQuery, JMS, MySQL, SQL transactions, and GIT for source control.

"Lima Software's Invoice creator" is a 'Cloud computing' application that can easily handle high load of traffic, thanks to its multi-layered architecture and use of transactions (MySQL) and JMS (ActiveMQ).

To scale horizontally, just deploy the 'back-end client' to as many servers as required (or execute multiple instances in one server). Each instance of the 'back-end client' will fetch 'invoice creation' requests from a JMS queue, and will inform of the newly created invoices using another JMS queue. The 'front-end Web application' can also be deployed to multiple 'Servlet containers' to speed up delivery of HTML pages to end users.

By using SQL transactions we avoid 'file name' overlapping, while allowing many users to upload files simultaneously. Also by using 'SQL transactions' we allow multiple 'invoice creating jobs' to be executed simultaneously, without overlapping one another.

Configuration Deployer

Lima Software's Configuration Deployer

Does your company have dozens of servers, different server types and multiple environments ( IT / QA / PROD ) to maintain on a regular basis?

Changing configurations, deploying files to servers, keeping track of what changed between versions, and rolling back to old configurations can be a very complex task that consumes countless working hours for your IT department.

This is the scenario for which 'Lima Software Configuration Deployer' was created:

Written in PERL, this tool automates the deployment of configuration files to different server types for multiple enviroments (for example: IT, QA, PROD).

Files from multiple repositories can be deployed to one or multiple type of servers (for example: Application Servers, Web Servers, Mailbox servers, MTA servers, etc, etc).

By adding special keywords to the configuration files, they will be transformed 'on the fly' before deployment; so with minimum configuration, the same file(s) can be used as a base for the file(s) that will be deployed to all environments (for example: IT, QA or PROD).

'Lima Software Configuration Deployer' can work with different types of Source Configuration Management (SCM) tools, but it is currently configured to work with GIT (

example call:

Computer Vision - Image Comparator

Lima Software's Computer Vision - Image Comparator

To teach the computer how to compare 2 images based on their contents, we have to find a way to deconstruct each image into regions. Then, depending on what we want to monitor, we will have to choose how we will compare the images, for example based on the regions' shapes, areas, position, perimeters, etc.

This program uses two different methods for deconstructing an image into regions (color reduction) :

1.- minimum distance classifier algorithm (Supervised Image Classification)

2.- k-means clustering algorithm (Unsupervised Image Classification)

There are many applications for Computer_Vision_Image_Comparator, for example:

- Video surveillance

- Motion detector

- object tracking

- objects detection (for example: Locate objects in satellite images: roads, forests, crops, etc.)

for example, given the following image we wanted to analyze, the program deconstructed it using:

- minimum distance classifier algorithm (with 4 regions)


- k-means algorithm' (10 clusters, 20 iterations)

    phone: (+358) 4585-10715     email: