Vanja Radovanovic, Developer in Pula, Croatia
Vanja is available for hire
Hire Vanja

Vanja Radovanovic

Verified Expert  in Engineering

Software Developer

Location
Pula, Croatia
Toptal Member Since
June 21, 2013

Vanja is a fast learner most interested in projects that combine a multitude of technologies with development best practices. He adores Elixir and anything Elixir related and has a special interest in software craftsmanship and personal development, both in the field and in life.

Portfolio

Club Collect
GitHub, Bootstrap, Linux, PostgreSQL, Elixir, JavaScript, Git, SQL, Heroku...
Infobip d.o.o.
Apache Kafka, Apache Storm, GitHub, Bootstrap, Linux, React, GitLab, Jira...
Butchershop Creative
React, Node.js, Express.js, Git, SQL, Redux

Experience

Availability

Part-time

Preferred Environment

GitHub, Linux, Elixir, Git, Jenkins, Heroku, IntelliJ IDEA

The most amazing...

...thing I’ve accomplished is seeing the Jenkins plugin for Gitlab I made being widely adopted.

Work Experience

Senior Software Engineer

2017 - PRESENT
Club Collect
  • Improved on a communication module responsible for delivering text messages, emails, and snail mail letters to customers. Integrated with various external services like (but not limited to) MailChimp, Nexmo, Twilio, Pingen, Postmark, and others.
  • Developed sports club core management modules, including things like court availability, member management, etc.
  • Developed APIs and API clients for the above-mentioned modules, to be used by other web-based products in the company as well as external clients like mobile apps.
  • Developed internal tools for integration testing across several modules/apps, using GraphQL.
  • Worked on the financial module, responsible for communication with banks and performing crediting and debiting both club members and clubs themselves.
Technologies: GitHub, Bootstrap, Linux, PostgreSQL, Elixir, JavaScript, Git, SQL, Heroku, Erlang, Phoenix

Senior Software Engineer/System Integrator

2010 - 2017
Infobip d.o.o.
  • Introduced Apache Storm into the technology stack for the purpose of processing incoming (big) data streams in real time to (e.g.) prepare in advance the data for user dashboards to improve user experience; reached a processing power of about 100,000 messages per second with a small cluster.
  • Led the core web team, responsible for developing an internal framework based on Restify to help develop consistent web related APIs across ten teams. Also introduced React to the UI development and set it as standard.
  • Helped develop a set of internal tools used by the support team and developers alike that monitor existing services, alert on various conditions, display metrics and related graphs, etc.
  • Led a team of developers in charge of integrating the above mentioned Apache Storm and monitoring tools into the company's stack; also worked as product owner for the related products.
  • Managed and maintained the entire CI flow for about 150 developers throughout the company, using Stash as a Git server (previously used TFS and GitLab), Jenkins as build farm, Artifactory as repository, and JIRA and Confluence as project management tools; helped integrate Java (Maven) and other types of projects (Node.js, Ruby, .NET) into the flow.
  • Wrote a custom Jenkins plugin for integration with the Git back-end to improve build start times, written in JRuby and open sourced to the community.
  • Created the base tools for automated deployments and maintenance of Java and other types of services by writing a Bash (Linux) and PowerShell (Windows) set of deployment scripts that support automated deploys, upgrades etc.
  • Led coding dojos within the team; taught new candidates the basics (SOLID) within our developer workshops (used to bring new talent to the firm).
  • Created an internal tool for validating SQL schema for the entire platform and for automated building and seeding of various databases needed to run related services in a staging environment.
Technologies: Apache Kafka, Apache Storm, GitHub, Bootstrap, Linux, React, GitLab, Jira, Node.js, Express.js, JavaScript, Git, Ruby, Jenkins, SQL, Microsoft SQL Server, Windows PowerShell, Bash, Groovy, Magnolia, HAL, REST, CoffeeScript, Angular, Java

Full-stack Developer

2015 - 2016
Butchershop Creative
  • Integrated the website with Oracle Eloqua and Drupal back-end systems.
  • Built a web API for fetching custom Drupal data.
  • Created a web API for fetching contact/form data from Eloqua.
  • Developed a generic React/Redux component and flow to render custom Drupal data and related contact forms.
Technologies: React, Node.js, Express.js, Git, SQL, Redux

Google App Engine Web Developer

2015 - 2016
Storie, Inc.
  • Created http://storie.com web, running on Google App Engine.
  • Integrated the web with the back-end API, also on Google App Engine, using URLFetch GAE service.
  • Created a build system for client-side scripts.
  • Implemented caching of main resources from the back-end API, to speed up page load times.
  • Created a mechanism to work with models both on server and client side.
  • Supported video playback using a customized JWPlayer.
Technologies: GitHub, Bootstrap, Linux, Git, SQL, SCSS, jQuery, JADE, Restlet, Google Guice, Java, Google App Engine

Full-stack Rails Engineer

2014 - 2014
Soma, Inc. (via Toptal)
  • Helped develop a declarative admin interface called Deckhand, similar to RailsAdmin but more Google-like in usage, Ruby backed with Angular on the front end.
  • Helped untangle largely coupled business logic, e.g., for various billing and shipping use cases, and separate it in distinct concerns, easier to compose and test.
  • Reorganized and fixed a large portion of specs, making them faster by skipping database calls where not needed.
  • Decoupled several background jobs from ActiveModel into Whisper gem's style of publish/subscribe model, helped with decoupling logic from models.
  • Generally worked on improving business cases, whether by adding new features or updating the existing ones to match the changing business needs more closely.
Technologies: Linux, Git, Ruby on Rails (RoR), Ruby, SQL, Sidekiq, Angular

Senior RoR Developer

2014 - 2014
HootRecruit (via Toptal)
  • Integrated with FullContact API for both live and background contact importing, respecting request rate limits.
  • Reorganized and made the deploy process simpler, allowing for sandbox and production deployments on the same target server.
  • Fixed various UI issues related to displaying on various mobile devices, and Bootstrapped the remaining pages.
  • Added support for indexing and full text search of uploaded candidate's resumes (PDF and MS Word) along with other candidate data.
  • Exposed an API for resolving contact details given an email; integrates with FullContact API, used on the UI to fill data for manually entered contacts.
Technologies: Linux, JavaScript, Ruby on Rails (RoR), SQL, jQuery

Analyst, System Integrator

2003 - 2010
QiQo d.o.o.
  • Incorporated the company's ERP solution into the client's business process.
  • Led various efforts to create custom modules for the ERP product, e.g., for newspaper publishing or the textile industry.
  • Gathered and analysed client requirements and created solutions within the given ERP product.
  • Educated various teams at the client's site to work with the ERP and present solutions.
  • Created design templates for various ERP components.
Technologies: SQL, Clarion

Lead Developer, Systems Engineer

1998 - 2003
Grad d.o.o
  • Created a reusable framework for dynamic addition of custom medical documents to the system (important because most doctors have their own idea about how to handle and write patient documentation).
  • Created packaging and distribution tools and procedures to speed up deployment of new versions and fixes; also enabled seamless deployment (users not interrupted in their work).
  • Integrated the product (medical system) into a number of hospitals; migrated existing data and flows and developed the missing functionalities.
  • Created a reusable framework for administration, e.g., registering new document types; enabled fast addition of new data types to the UI.
  • Worked on various stand alone (not incorporated into the main product) but medically related products.
Technologies: SQL, Microsoft SQL Server, Visual Basic

Distributed React Talk at Infobip Annual Conference 2106

https://www.youtube.com/watch?v=yfO-_a4EJV0
Gave a talk on introducing React to a situation with:
- 20+ distributed teams
- A web product with 10+ related modules
- 100+ microservices

The challenge is how to organize it all and have the same UI experience all over and share code between teams. This is where React comes and solves major problems. The talk gives a broad overview of the idea and the benefits that come from it.

Related slides can be found at https://www.slideshare.net/vax/distributed-react.

Apache Storm Overview and Integration Lecture at DORS/CLUC Conference 2104

https://www.youtube.com/watch?v=UeAnxXmx8s0
Gave a lecture on Apache Storm and related ecosystem with following topics:
- The basics: Why it was created and how it is usually used
- Motives for usage in Infobip's technology stack: Real-time processing of incoming data stream
- Integration: Using Kafka and MS SQL
- Issues and challenges: DB throughput, Java (de)serialization performance bottleneck, etc.
Related slides can be found at SlideShare: http://www.slideshare.net/vax/storm-integration.

Jenkins GitLab Webhook Plugin

https://github.com/elvanja/jenkins-gitlab-hook-plugin
Enables GitLab web hooks to be used to trigger SMC polling on GitLab projects.

For GitLab, there is an existing solution that might work for you. You can just use the notifyCommit hook on Git's plugin like this: http://your-jenkins-server/git/notifyCommit?url=

But, with a large number of projects that are mostly polling (no hooks), the project might actually be built with a great delay (5 - 20 minutes). That is where this plugin comes in. It gives you the option to use build_now or notify_commit hooks, whichever suits your needs better. Recently, it was used to trigger Stash commits as well.

Dealesque

https://github.com/elvanja/dealesque
Finds the best combination of sellers and postage options for a selection of Amazon products.

A pet project used to try the Clean Ruby way of developing a web application. Currently uses Rails but is intended to be decoupled from any framework at all.

Roar Example

https://github.com/elvanja/roar_example
An example of a working ecosystem of services and client applications that interact using roar and roar-rails gems. The main idea is to show how one might use those libraries to build such a system.

Components:
- Book_of_orcharding - Contains all the domain/business rules about fruit management
- Orchard - Serves as the persistence layer for the orcharding rules
- Tutti_frutti - Exposes orcharding rules as a JSON API
- Smoothie_mixer - Rails project that consumes the API and delivers delicious fruit smoothies
- Basher - Command line API client

Languages

Elixir, Ruby, SQL, JavaScript, Clarion, Sass, Groovy, Haml, AS3, Bash, SCSS, Java, CoffeeScript, HTML, CSS, Visual Basic, JADE, Erlang, ABAP

Frameworks

Express.js, Ruby on Rails (RoR), GAE, Flux, Bootstrap, Mockito, JUnit, PowerMock, Gaia, Bootstrap 3, Spring, Angular, Google Guice, Restlet, Redux, Phoenix, Sinatra, Windows PowerShell

Libraries/APIs

Restify, Node.js, React, Guava, Nokogiri, Amazon Product Advertising API, Devise, Google Maps, Sidekiq, Facebook API, Highcharts, Twitter API, Java RMI, Google API, jQuery, D3.js

Tools

Apache Maven, Git, Jenkins, Apache Storm, RSpec, IntelliJ IDEA, Jira, GitLab, Artifactory, Stash, Adobe Photoshop, Rake, VCR, Vim Text Editor, GitHub, Grunt, Cucumber, Magnolia

Paradigms

Continuous Integration (CI), REST, Agile Software Development, Refactoring, Test-driven Development (TDD), Object-oriented Design (OOD), Metaprogramming, Lambda Architecture

Platforms

Factual, Google App Engine, Linux, WordPress, Heroku, Apache Kafka

Storage

JSON, Microsoft SQL Server, PostgreSQL, MongoDB, MySQL, Memcached

Other

HAL, HATEOAS, Merb, GitFlow, Big Data

1993 - 1998

Masters Degree in Computer Engineering

Faculty of Electrical Engineering and Computing Zagreb - Croatia

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring