Predrag Popovic, Developer in Belgrade, Serbia
Predrag is available for hire
Hire Predrag

Predrag Popovic

Verified Expert  in Engineering

Software Developer

Location
Belgrade, Serbia
Toptal Member Since
June 23, 2016

Predrag is a software engineer with over 10 years of professional experience. Most recently, Predrag has specialized in enterprise Java systems and solutions, however he is constantly eager to expand his knowledge of software engineering principles and gain experience by working with teams from various backgrounds.

Portfolio

iTherapyDocs (via Toptal)
RESTful Services, Mockito, Data Structures, Eclipse IDE, PL/SQL, Linux, iReport...
FIS Global
RESTful Services, Apache JMeter, Mockito, Data Structures, Eclipse IDE...
PlusPlus NT, LLC
JPA, Data Structures, Eclipse IDE, Python, JavaScript, Linux, Apache Tomcat...

Experience

Availability

Part-time

Preferred Environment

Git, Eclipse, Windows, Linux

The most amazing...

...thing that I've worked on was building an in-memory database in Java for a post-trade processing platform.

Work Experience

Full-stack Developer

2016 - PRESENT
iTherapyDocs (via Toptal)
  • Worked as full stack developer on a web app based on Spring Boot with a MySQL database and JPA running on Tomcat. We were able to provide the complete solution from creating notes, billing, invoicing, payment and processing reconciliation files for group homes and therapist agencies. My role included writing and building modules from scratch as well as writing specifications and documentation for future modules that are customer-specific.
  • Wrote back-end and front-end pieces of the billing module and submission module (processing 837p files) for Group Homes and Therapist for Health Care in the USA.
  • Developed back-end and front-end elements of the invoicing module.
  • Programmed the payment and reconciliation module ( processing of 835 files).
  • Printed reports in Jasper.
Technologies: RESTful Services, Mockito, Data Structures, Eclipse IDE, PL/SQL, Linux, iReport, Algorithms, Scrum, Git, Database Design, JUnit, Agile Software Development, Java EE, SQL, JasperReports, Apache Tomcat, JPA, Spring, Hibernate, jQuery, JavaScript, Spring Boot, MySQL, Java

Senior Software Engineer

2014 - 2016
FIS Global
  • Built a post-trade processing platform.
  • Developing a Java in-memory database. Worked on the core elements of the platform including the communication stack using Apache Kafka and Active MQ.
  • Implemented a custom query language.
  • Experimented with the latest technologies, such as testing the possibilities of Couchbase as a persistence method, and testing the possibilities of Hazelcast as a distributed cache.
  • Worked within a team of 60 people in the Belgrade office. Collaborated with functional teams in Paris and Chicago offices. Developed code under Scrum methodology.
  • Served as a regular member of the interview committee. Also frequently tutored younger developers.
Technologies: RESTful Services, Apache JMeter, Mockito, Data Structures, Eclipse IDE, Algorithms, JMS, Scrum, Git, JUnit, Agile Software Development, SQL, Couchbase, Apache Kafka, ActiveMQ, Java

Senior Software Engineer

2010 - 2014
PlusPlus NT, LLC
  • Developed a back-office component for complete work of tourist agencies.
  • Worked on providing complete support for creating relations with other tourist agencies (B2B) and selling arrangements (C2B).
  • Took on several responsibilities including developing new features, maintenance, direct contact with clients, writing specifications, and coaching younger developers.
  • Was deeply involved in modeling, implementing business logic, writing JUnit tests, and evolving the presentation layer.
  • Wrote scripts for database migration from legacy software.
  • Worked on building a smaller web application for Administration for the Execution of Penitentiary Sanctions—Ministry of Justice Republic of Serbia. It was a small web application for document handling.
  • Worked with a variety of systems and techniques for Software Engineers including Linux OS, SVN, and Scrum methodology.
Technologies: JPA, Data Structures, Eclipse IDE, Python, JavaScript, Linux, Apache Tomcat, Algorithms, Scrum, Database Design, JUnit, Agile Software Development, Java EE, SQL, RESTful Services, jQuery, iReport, PostgreSQL, Apache Struts 2, Hibernate, Java

Software Engineer

2008 - 2009
ASW Engineering, LLC
  • Developed a sub-system for collecting and billing for a large number of clients (telecommunications, gas, electric power.etc) as part of a platform for a billing and customer care system.
  • Implemented business logic and wrote tests. Technologies that we used were Java 5, iBATIS, Oracle 9i, JasperReports, and Spring AOP.
  • Built a centralized system for car technical control stations in Bosnia and Herzegovina.
  • Involved in modeling a database, business logic implementation, writing tests, and creating views in Struts 1.x.
  • Helped develop an application for a business intelligence solution for decision making by collecting and analyzing business data. Main tasks were creating/designing JasperReports, involving a working knowledge of writing SQL queries.
Technologies: Eclipse IDE, Linux, JUnit, Agile Software Development, Java EE, SQL, Apache Camel, CSS, HTML, PL/SQL, Oracle9i, Spring, iBATIS, Java

Java Junior Developer

2008 - 2008
WhiteCity Soft, LLC
  • Developed a Java 2D game engine for online RPG using Java, Hibernate, and MySQL.
  • Implemented A* algorithm and Dijkstra's algorithm for finding players' paths.
  • Worked on creating DAO layer and CRUD services.
Technologies: Eclipse IDE, JUnit, SQL, MySQL, Hibernate, Java

Building Query Language for FIS in-house In-memory database written in Java

One of the major tasks I performed was writing a custom query language. I used a built in Java class (StreamTokenizer) for parsing a query string. An expression tree was created with nodes representing either a "criteria" node or a "logical" node, with each "criteria" node having an associated weight. Once the tree is created, each node is evaluated and resulting expression is stored back into the node. Further optimization is done by finding intersections and unions of results, and grouping/ordering the results if necessary.

Implementation of matching process for trades and allocations in Post Trade Processing

I implemented a full service for finding matches of trades and allocations. Matching is a business process in trade processing where, for a group of trades and a given matching criteria, a group of allocations must be found that match by criteria fields and quantities. Matching is based on a dynamic knapsack algorithm and the creation of a knapsack matrix for a set of trades. The rest of the process uses this matrix and a combination of several matching rules and queries for completion.

Building a web application for Administration for the Execution of Penitentiary Sanctions – Ministry of Justice Republic of Serbia

I helped develop a small web application from scratch for document handling. I was involved in all phases of project, including writing project specifications, design, modeling implementation of business logic, and conducting a training session for administrative employees.

Languages

SQL, Java, UML, HTML, JavaScript, Python, Python 3, CSS

Frameworks

Spring, Apache Struts 2, Apache Struts, JPA, JUnit, Spring Boot, Mockito, Hibernate, iBATIS, Apache Camel, AngularJS, Apache Velocity

Tools

Eclipse IDE, Git, iReport, Subversion (SVN), ActiveMQ, Javadoc, Apache Tomcat, Apache JMeter

Paradigms

Agile Software Development, Database Design, Scrum

Platforms

Java EE, JSE, Eclipse, Apache Kafka, Oracle, Android, Windows, Linux

Libraries/APIs

JasperReports, Spring REST, JMS, JAX-RS, Jackson, jQuery

Storage

PostgreSQL, MySQL, Oracle9i, PL/SQL, Couchbase

Other

Data Structures, RESTful Services, Algorithms

1999 - 2007

BScEE in Computer Engineering and Information Theory

University of Belgrade School of Electrical Engineering - Belgrade, Serbia

JANUARY 2019 - PRESENT

Blockchain Specialization

Coursera

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