Work in Tallink IT Seperate people, united team
 
About
We are fascinated by exciting and innovative projects; we love to create quality software from scratch. We don't hire people to fulfill routine tasks by the clock. Our aim is to have a smooth and enjoyable development process with professional international crew, newest technology and methodology combined with a flexible working schedule.
 
 
Tools
Java, Scala, Clojure, Kotlin, C#, Typescript, Ecmascript 6, PL/SQL, XSLT, Spring Framework, Jade, Vaadin, AngularJS, ReactJS/Redux, ExtJS, Akka, Bootstrap, Material Design, Gulp, Webpack, Maven, Reactive programming, Agile software development, Kanban, Scrum, Continuous integration, RabbitMQ, Oracle, MySQL, MS SQL, Liferay CMS, JIRA, Bamboo, Upsource, JRebel, Mercurial, IntelliJ IDEA, Sublime Text, Adobe Photoshop, Adobe Illustrator.
 
 
Projects
AS Tallink Grupp with its 18 ships has developed into the biggest ferry company on the Baltic Sea. IT department with over 100 different projects and about 70 professionals working is one of largest in Estonia. Our complex IT systems are easily rivalling the sophistication level of the banking sector.
 
 
Captain
Captain is a successor of engineering innovation and agile approach of application development. We tried to constantly improve pricing caching system in order to achieve the fastest response of price enquiries on our website https://booking.tallink.com/. Concurrency Within few months of working in production we have faced with an issue of concurrency data pull handling. In order to solve concurrency handling issues we have chosen to use "Actor Model" pattern. #Akka has simplified process and allowed us to make fine granular logic units for populating cache with "Actor Model". Cache store We have also chosen during our research that #Redis is the best suited solution to store and retrieve cached prices with least response time. #Redis is a key-value in-memory datastore with a possibility to persist on disk. Message driven Within first year "Captain" has been using pull approach of getting prices. The approach of pulling data has shown bottleneck when the amount of data has increased. We decided to switch the approach to push notifications, which removed unnecessary requests. This has been achieved by making booking system support push notification on price change events. We converted our mind and idea to become #Reactive and we stick to the "Reactive Manifesto". Scala We decided to switch from Java to #Scala. #Scala has very strong functional programming capabilities, which are more suitable to concurrent systems and provides very much sugar syntax to complete with few lines of code more complex tasks. With switching to #Scala we achieved "Instead of how to do, but what to do" approach for developing new business requirements. Tags: #Reactive, #Scala, #Akka, #Redis, #Concurrency, #Functional Programming
 
 
MIKI
MIKI is our codename for mobile booking system. The application itself is written in JavaScript using #ES2015 and even some of the features from future ES versions. Production code is now steadily moving to #TypeScript and test code - to #CoffeeScript. #AngularJS is the framework of choice for the application. MIKI is #PixelPerfect web application on most modern mobile browsers https://mobile.tallink.com. AngularJS in MIKI Using #AngularJS for web mobile application development initially was a logical choice at that time - #ReactJS was not as popular then, but later on it became a bit of a challenge in some parts. In order to achieve robust and responsive user interface, we had to do plenty of optimization. We have written some pure javascript DOM methods for critical components in order to avoid unnecessary digest cycles of #AngularJS and DOM rendering. Also we have tried the same solution with #ReactJS, but native javascript DOM manipulation was significantly faster. There is no "silver bullet" in web development, but #AngularJS has proven to be more or less friendly for the mobile application development and we don’t have many regrets with choosing the framework at that time. With evolution of the project and improvements of #AngularJS we managed to split our application into multiple components to be ready for migration to #Angular2. Tags: #AngularJS, #Reactive, #KefirJS, #Gulp, #ES2015+, #TypeScript, #Coffeescript, #Protractor, #Pug(Jade), #PixelPerfect
 
 
ACIT2
ACIT2 stands for "Automated Check-in Terminal 2". Within the past 6 years our customers have been using first version of automated check-in terminal, which has shown efficiency and ease of use of self service. In 2015 we have made a decision to make a new version of automated check-in with payment functionality and additional features, which were missing in the first version in order to improve self service experience. Technical ACIT2 is web based application, which consists of back-end and front-end. Back-end part is written on #Java 8 and has #Swagger documentation for "REST API". Front-end part is written on #AngularJS and has been used for packaging #Gulp. Project's biggest challenge was to make communication between web based application and card payment terminal, therefore we have chosen #WebSocket communication protocol between the payment card terminal and ACIT2 application. WebSocket in ACIT2 Payment card terminal, which was chosen by the company had primary option for communication the #ActiveX component. #ActiveX is a solution, which is used widely to provide communication using "Internet Explorer" browser with web application. The solution didn't meet our requirements, because the decision was made to use "Google Chrome" as default application browser. In order to avoid "Internet Explorer" usage there has been decided to wrap #ActiveX component inside of #.NET Framework Windows Service application, which exposes #WebSocket communication protocol. This gave possibility for ACIT2 application with "Google Chrome" browser to succesfully communicate with card payment terminal and achieve real-time interaction during payment process with passing event from terminal to the web application. Tags: #AngularJS, #WebSocket, #Java 8, #.NET Framework, #Gulp, #Swagger, #ActiveX
 
 
Job Openings
Your main responsibility – to be a Visionary and a Leader in all activities related to the area. You will be successful, if you have an interest in modern technology, have good communication skills and wish to work in an international company. Explore opportunities
 
 
Back-end Developer
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
 
 
Contact
For collaboration and recruitment, please contact us by itcareer@tallink.ee. Tallinn Tallinn Explorer Building
Kai 1, 10111
Tallinn, Estonia
Google Maps