Dejan Cabrilo, Developer in Belgrade, Serbia
Dejan is available for hire
Hire Dejan

Dejan Cabrilo

Verified Expert  in Engineering

Software Engineer and Developer

Belgrade, Serbia

Toptal member since November 23, 2015

Bio

Dejan is a passionate software engineer with a decade of experience delivering websites, data analysis, and IT consulting. His programming languages of choice are Java and Python. Dejan also has a lot of experience with JavaScript, Vue, and Angular.

Portfolio

Theme Analytics
Python 3, Pandas, NumPy, Amazon Aurora, Amazon S3 (AWS S3), Amazon EC2...
Bonfire
JavaScript, JPA, PostgreSQL, Spring, Java, Management...
Smog Srl
Google Ads API, Google, JavaScript, MySQL, Zend Framework, PHP, Java

Experience

  • Python - 10 years
  • PostgreSQL - 8 years
  • Java - 7 years
  • Concurrent Programming - 5 years
  • Network Programming - 5 years
  • Data Analysis - 5 years
  • Spring - 2 years
  • AngularJS - 1 year

Availability

Part-time

Preferred Environment

Git, IntelliJ IDEA, OS X, Linux

The most amazing...

...project I've worked on was designing and implementing a high-availability system for quantitative trading.

Work Experience

CTO

2021 - PRESENT
Theme Analytics
  • Developed an event-driven, high-concurrency, and high-availability trading engine that can run in backtesting, simulation, or live trading modes.
  • Implemented an ETL pipeline and created a high-performance time-series storage using PostgreSQL, Dagster, and Parquet.
  • Built a proprietary OMS/EMS trading analytics tool and FIX connectivity module certified with Instinet, Goldman Sachs, Bank of America, and Barclays, used internally, and licensed as SaaS to a 3rd party.
  • Integrated 3rd-party platforms, including FlexTrade, Eze, Enfusion, Bloomberg, Polygon, Tiingo, and Goldman Sachs Marquee.
  • Created an architecture and maintained a cloud solution for a high-availability trading system on top of AWS.
Technologies: Python 3, Pandas, NumPy, Amazon Aurora, Amazon S3 (AWS S3), Amazon EC2, Amazon Elastic Container Service (ECS), Docker, Bloomberg, Bloomberg Terminal, Bloomberg API, Dagster, Machine Learning, Enfusion, Flextrade, Parquet, Vue 3, Vue, Vue 2, Vuetify, C++17, C++, Ansible, Redis, Docker Compose, FIX Protocol, Backtesting, CVXPY

Director of Engineering

2013 - 2021
Bonfire
  • Led the development team creating the company's fundraising website.
  • Architectured and developed highly available Java applications using Spring Boot, with aspects of microservices.
  • Architectured and maintained a high-availability PostgreSQL cluster.
  • Incorporated third-party APIs, including Stripe, Paypal, WePay, and Stamps.com.
  • Implemented an A/B testing framework and analyzed their results.
  • Developed automated REST documentation and a testing system for Spring.
  • Created accounting and P&L data reports using Python.
Technologies: JavaScript, JPA, PostgreSQL, Spring, Java, Management, Amazon Web Services (AWS), AWS Lambda, Stripe, Stripe API, PayPal, PayPal API, Amazon Pay, React

Developer

2010 - 2014
Smog Srl
  • Developed a secondhand domain name market website: www.domaindirect.it using PHP and Zend Framework 2.
  • Developed algorithms for determining the desirability of expiring domain names and implemented them using Java.
  • Created a system to register domain names within parts of a second after they have expired using Java and concurrent programming. Gained a lot of experience with concurrency and network programming.
  • Created a REST API for allowing third party sellers to sell domain names on www.domaindirect.it.
  • Managed a database of domain names and created programs to try to discover existence of all registered domain names, using MySQL and Java.
  • Worked on mass deployment of Linux VPS servers.
  • Worked with PayPal classic API.
  • Developed a system for analyzing Google AdWords performance and offering automated suggestions on how to optimize ads.
Technologies: Google Ads API, Google, JavaScript, MySQL, Zend Framework, PHP, Java

Web Developer

2013 - 2013
MRM Worldwide
  • Developed various websites, including www.lavpivo.rs and www.fashionparkoutlet.rs.
  • Created Facebook games for various giveaway contests.
  • Built a web application for soccer betting and tracking results.
  • Developed a giveaway contest for a beer company.
  • Created a reusable CMS for various projects using Zend Framework 2.
  • Migrated some sites to Python and Django for easier maintainability and deployment.
  • Developed an API for communication with clients via text messages, but facilitating communication with local cell phone service providers.
Technologies: JavaScript, MySQL, Zend Framework, PHP, Django, Python

Developer and Data Analyst

2012 - 2013
CONGRAD project
  • Developed an online questionnaire for surveying graduates of 10 universities which participated in the project using Java and Spring.
  • Developed the project's website at www.congrad.org using PHP.
  • Worked on analyzing data collected by the survey with MySQL, R, and SPSS.
  • Coordinated automated communication with survey participants via email.
  • Worked on internationalization and localization of the project.
Technologies: R, MySQL, Spring, PHP, JavaScript, Java

Senior Web Developer

2008 - 2010
Nexta Srl
  • Developed an MVC framework, with a team of other developers, to serve contents of several magazine style sites, including: www.sport.it, www.film.it, www.stile.it, www.turismo.it, using PHP and Postgres.
  • Consolidated a 10-year-old PostgreSQL database to streamline data retrieval from it.
  • Worked with various APIs to provide live score soccer feed for sport.it.
  • Designed a database to store scores for generic sports and athlete information.
  • Developed an algorithm and implemented it using PHP and PostgreSQL to intelligently determine positive and negative keywords in order to achieve the best SEO.
Technologies: jQuery, JavaScript, PostgreSQL, PHP

Experience

DomainDirect

http://www.domaindirect.it
Secondhand domain name marketplace.

Automatic Slug POC

A proof of concept of how to use AspectJ in a Spring application to automatically set an entity's slug or URL. For example, if an entity book existed with the property name of "Twelfth Night," its property slug would automatically become "twelfth-night." That is if it hasn't been used yet—which is checked in the repository.

The concept was interesting because I tried to understand whether such an "auto-magical" population of an object's values is possible and desirable. It's easy to do but, as it turns out, tough to debug.

Bonfirefunds

http://www.bonfire.com
A fundraising tool, similar to Kickstarter but aimed at charities.

Italian Tourism Website

http://www.turismo.it
One of several websites powered by the same engine I developed, also including: www.sport.it and www.film.it.

Education

2001 - 2004

Bachelor's Degree in Computer Science

University of London - Goldsmiths

Skills

Libraries/APIs

PayPal API, jQuery, Facebook API, Google Ads API, Node.js, Redis Queue, Pandas, NumPy, Bloomberg API, Vue 3, Vue, Vue 2, Stripe, Stripe API, React, CVXPY

Tools

Redash, Gulp, Java Concurrency, Git, IntelliJ IDEA, Vagrant, Amazon Elastic Container Service (ECS), Bloomberg, Ansible, Docker Compose, Amazon Pay

Languages

PHP, SQL, Python, Java, JavaScript, R, CSS, HTML, AspectJ, Python 3, C++17, C++

Frameworks

Zend Framework, Spring, AngularJS, Bootstrap, Django, JPA, Angular, Vuetify

Platforms

Google Ads, Debian Linux, Linux, Amazon Web Services (AWS), Linode, Amazon EC2, MacOS, AWS Lambda, OS X, WordPress, Docker, Bloomberg Terminal

Storage

PostgreSQL, MySQL, Redis, Amazon S3 (AWS S3), Memcached, Amazon Aurora

Paradigms

Agile Software Development, Concurrent Programming, Management

Other

PayPal, Data Science, Data Mining, Network Programming, Data Analysis, WePay, Google, Machine Learning, Computer Science, Deep Learning, Facebook Games, Dagster, Enfusion, Flextrade, Parquet, FIX Protocol, Backtesting

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