Blog of Raivo Laanemets

Stories about web development, consulting and personal computers.

Consulting

I'm working as a freelancer consultant and provide the following services:

Recent projects

CareerFolder for Tammiste Personalibüroo OÜ

Tammiste Personalibüroo OÜ is a talent search company in Estonia. They help businesses across Estonia recruit the right people, evaluate staff and candidates, and develop teams through engaging training, coaching and supervisory sessions. CareerFolder is a confidential database of executives and skilled specialists that they have been building since 2001.

My part in the project is to modernize the CareerFolder codebase and add various technical and non-technical improvements. The ancient PHP codebase is iteratively updated to newer development practices and cleaned up. The platform is moved to Microsoft Azure (search, file storage, etc.). All new features are developed using HTTP APIs and TypeScript+React.

Technology: PHP (old and new), PostgreSQL, React, TypeScript, Azure platform.

Synergist.io contract automation

Synergist.io is a solution to automate contract negotiation. It is used by procurement departments, commercial teams and alternative legal service providers to execute high-volumes of recurring contracts with minimal effort.

I joined the project as a full-time frontend developer on-site in Berlin. I focused on building the user interface components. The most complex part of the system was the document editor supporting import and export of Microsoft Word documents.

Shipping management system for Lasita Maja AS

This is an information system to manage shipping. The system helps to plan, price and track shipments. The application is used by Lasita Maja AS. Lasita produces log cabins and ships them to retail partners all around Europe. Shipping is done through 3rd party service providers. The application includes a small Android phone app to take photos of loaded trucks before they are sent out and to automatically upload and associate the photos with shipment orders.

There is a longer writeup about the project.

There is a video showing the system in use by Lasita Maja.

Technology: Node.js, ExpressJS, React, Bootstrap, DroidScript, MySQL.

Previous projects

Automated sports betting system

An automated system to place sports bets using data gathered from specific sites. The system scraps data from sites and places bets using the API provided by Pinnacle, an online bookmarker. The data on the system is stored in an optimized MySQL instance, running queries on 100k+ of rows in 1-2ms.

Technology: Node.js, ExpressJS, MySQL, SWI-Prolog, Pinnacle API.

Scale Laser online CAD and store

Scale Laser is an online CAD application and e-commerce site for model railroad builders. My role in the project was to build the overal frontend part of the site, the e-commerce system including the cart and payment integration with Stripe and the backend manager/scheduler for production. The first release is still in development.

Technology: Prolog, RDF, Bootstrap, Stripe.

Timetable scrapper for UK cinemas

A web scrapper for extracting timetables from homepages of UK cinemas. The project included custom web scrappers for about 20 different sites using the scripted headless browser PhantomJS. It also included a Node.js-based web app to store the extracted data in a MySQL database.

Technology: PhantomJS, Node.js, ExpressJS.

Keha Arengu Monitooring

Keha Arengu Monitooring (KAM) is a computer software to track person's health and fitness. It was initially based on the popular Excel worksheet distributed at tervislik.net. The objective of the project was to implement the application which would be more usable, more maintainable, and with more features than the Excel worksheet. The application supports all 3 desktop platforms: Windows, Mac OS X and Linux.

Technology: C++, Qt, SQLite, NSIS.

The Seals Database

The Seals Database for the National History Archive. My responsibility was to gather requirements from the archive specialists, document them, produce the application specification, and later test the actual application against the specification. The set of acceptance tests was implemented using the Selenium test utility.

Open Source projects

I have also created a number of Open Source projects. The source code can be found on my GitHub account.

Feeds

Personal web-based replacement for Google Reader and other feed readers. It tracks seen/read/important state of articles and is built for high performance. Scales well beyond 500 feeds that the most other feed readers struggle with. GitHub

Project wizard

A dialog system with questions and yes/no and selection answers. The set of questions is structured as a tree data structure. It asks certain top-level questions and then proceeds to ask only those questions that make sense by the previous answers. GitHub

Blog-Core

Blogging and content management framework for SWI-Prolog. This blog is built using it. It comes with built-in analytics, caching, comments support, admin UI, etc. Homepage. GitHub.

AVR-based PC cooling

The project includes a firmware for AVR and a setup/configuration utility for PC. Built for fun. Deployed to provide silent cooling for my main computer. GitHub. Blog post.

The Estimator

The Estimator is an application for estimating the time that a project takes. It divides the project into components and components into tasks. The tasks are estimated to take min to max hours. The app then calculates total min to max hours for the whole project. GitHub. App.

LLJ - Logic Language for JVM

LLJ is a Prolog-like logic language for running on JVM. It allows close integration with Java libraries. At the time of release it was faster and more memory efficient than many other Prolog implementations on JVM. GitHub.

Browser libraries

Prolog libraries

Node.js libraries

Experiments

Misc