Biography
Programmer interested in server side programming, data structures and applied algorithms. Focused on writing robust applications, clean and reusable code.
Experience
2016 November - Present: Contractor
- Monitoring tool sysdig for Linux machines. Implementation in C, C++, Java, Python.
- Windows storage driver written in C, C++, WinFSP, Boost, ZeroMQ.
2013 June - Now: developer/scrum master/team lead at TeleSign
- Responsible for messaging platform as lead of Core team. The platform includes set of servers and clients written in C++, Perl, Python and PHP, using SMPP, HTTP and SS7 protocols, PostgreSQL, MSSQL, Mongo, Redis, MySQL, Elasticsearch databases.
- Created from scratch Divac - SMSC to deal with several protocols like SMPP, HTTP, AMQP, SIGTRAN.
- Created from scratch BRE - routing engine to determine optimal paths to deliver SMS.
- Managing team of nine developers and QA engineers, participating in architecture decisions.
2012 December - 2013 April: Contractor at Adlantic
- Developing LRU caching algorithm for LevelDB database. The goal was to made it in C++ in a thread-safe manner, so it could outperform the built-in LevelDB caching.
2012 February - 2013 May: Contractor at PSTech/Cisco
- Maintenance and development of Enhanced Call Control - VoIP framework used by many Cisco products like Jabber. Implementation in C++, STL, Boost, various third-party libraries, and SIP, TFTP, TCP, RTP protocols.
- Development of Lotus Notes connector for Cisco Jabber. The solution requires Lotus Expeditor for GUI part and JNI to communicate with Jabber over COM objects.
2011 June - 2011 November: Senior Developer at Sungard
- Development of Apex Prime - Windows desktop application for managing collaterals. Used technologies: C++, Rogue Wave library, Java, JMS, JBoss, Oracle.
2010 October - 2011 May: Contractor at GlobalView
- Implementing financial derivatives calculations like Black-Scholes, Black, Binomial models, and few others. Highly optimized code in C++ for calculations in real-time on the server side.
- Developing real-time server for energy market data, adding new features, fixing bugs, etc. Implemented in C++ on Windows platform.
- Command line tool in C# for server testing.
2008 January - 2010 September: Developer at Ticketmaster
- Working on RKiosk - point of sale for selling tickets. Application made in Java, Struts running on Tomcat, using SOAP, HTTP and custom protocols.
- Development of backend for WMR - web reporting tool for tracking ticket transactions. Used technologies: Perl, Python, MySQL, Sybase and Oracle on Linux.
- Maintenance of Asra - desktop application for statistical analysis of sold tickets; implementation in Borland C++ for Windows.
2005 September - 2007 December: Head Developer at Routo Telecom
- SMS platform development. The system served few dozens of clients and providers with millions of messages per month. Core system implemented in Perl, C++, PHP, PostgreSQL, MySQL on Linux platform; SMPP, HTTP, UCP and custom protocols used for the internal communication and with the external parties.
- Development of Management Console - web application for the system monitoring; developed with PHP, HTML, JavaScript.
- Few algorithms used to bypass mobile carriers limits. Deep understanding of SMS and MMS needed to deal with SMS internals.
1999 - 2003: freelancing during studies
- Developing various desktop and web applications for small enterprises: tracking financial and statistic parameters, calculations, etc. Solutions are based on Borland C++/OWL, Java/Swing/JDBC/MySQL and MS Access.
- Creating websites on both backend and frontend, including simple design. Used technologies are PHP, Perl/CGI and HTML/CSS/JavaScript.
Personal projects:
- mailio: cross platform C++ library for MIME format and SMTP, POP3 and IMAP protocols.
- alepho: personal website with code samples on various topics.
Education & Courses
- Dipl. Math, University of Belgrade, department of mathematics theory
- Certified Scrum Master, ScrumAlliance
- Certified Scrum Product Owner, ScrumAlliance
Skills & Interests
- dynamic and greedy programming, searching/sorting, data structures (queue, stack, hash table, heap, AVL tree, red-black tree, B tree, splay tree), graphs (traversing, shortest paths, topological sorting, spanning tree)
- design patterns: Singleton, Factory, MVC, Reactor, Proactor, Facade, Visitor...
- C/C++: standard library, POSIX, POCO, Qt, Boost, ICE, sockets, threading, etc.
- Java: SDK, servlets, JMS, various Apache libraries...
- C#: intermediate level
- Erlang: basic level
- client-server architecture and protocols: threaded/forked servers, HTTP, CGI, POP3, SMTP, IMAP, FTP, SMPP, UCP, SOAP, XML-RPC, SIP, TCP, UDP...
- relational databases: SQL, PL/SQL, PostgreSQL, MySQL, SQLite
- NoSQL databases: LevelDB, MongoDB, Redis, RabbitMQ, Elasticsearch
- script languages: Perl, PHP, Python 2.x
- scripting with Bash, Make, CMake, LaTeX
- UML: intermediate level
- basic administration of Linux (Slackware, Ubuntu, CentOS) and FreeBSD
- tools: GCC, Clang, Visual Studio, Eclipse, QtCreator, PyCharm, GDB, IntelliJ IDEA, Ant, Git, CVS, SVN, Doxygen, Jira, Bugzilla...
Personal skills
- Analytical, keeps interests for new programming fields, loves challenges and non-trivial tasks
- Languages: Serbian (native), English (good), French (basic)