Svetlozar Kostadinov

Software Developer

Curriculum Vitae

PDF FORMAT

Download CV

General Info

  • Name: Svetlozar Kostadinov
  • Location: Sofia, Bulgaria
  • Nationality: Bulgarian
  • Born: 18 April, 1983
  • Languages:
    • Bulgarian (native)
    • English (technical)

Photo

Me

V-Card

Scan with a QR Reader app to get my contact info in your phone:

Contact Info QR

Education

  • BSc in Computer Sciences - Technical University of Varna

Personality

  • Strong ability to self-motivate;
  • Enjoys friendly teamwork but can also work and solve problems fully autonomously;
  • Fast learner, loves to acquire new skills and develop existing ones;
  • Tries to keep up with latest trends in technology and IT market;
  • Has keen attention to detail;
  • Loyal and word keeping;
  • Challenge-driven;
  • Favorite things: coffee, reading, sea diving, ski, cycling;

Technical Skills

  • Programming Languages: Java (advanced), Kotlin (advanced), C/C++ (old, not practiced recently);
  • Other Languages: SQL, HTML, XML, XSLT, CSS;
  • Mobile Technologies: Android SDK, Android NDK, Location, Camera, Notifications, Google Maps, Sensors, Media;
  • RDBMS & ORM: SQLite, Spatialite, GreenDAO;
  • Debugging tools: DDMS, Logcat, Stetho, Timber, LeakCanary, ACRA, Crashlytics, Eclipse MAT;
  • Testing tools: jUnit, Mockito, Espresso, UIAutomator;
  • Version Control Systems: Git, Mercurial;
  • IDE: Eclipse, Android Studio, Intellij IDEA, Visual Studio, Atom;
  • Operating Systems: Ubuntu Linux, Windows;

Niche & Other Skills

  • Geospatial: Maps, Map projections, geodetic datum transformations, Proj4, Spatialite, Georeferencing, Hands-on experience with WFS, WMS web services, GeoServer, GeoNode, Django, MBTiles, GeoJSON, TopoJSON;
  • Image processing: Image processing, OCR & text recognition with OpenCV/Python
  • Graphics and geometry: 2D and 3D analytic geometry, CAD, OpenGL, Direct3D (basic, old);
  • Web: Jekyll, WordPress, Xoops, Drupal, website administration & CMS management;
  • Multimedia: Inkscape, Photoshop;

Experience

  • Android developer

    Endava

    Architecture and development of a native Android payment SDK for a large European payment service provider. Responsible for creating a pluggable framework, API design and extensible UI components for handling various payment methods (incl. credit cards + 3DS, SEPA, PayPal, etc.). I worked over card scanning feature using camera and OCR. I participated in the design of the security scheme appropriate for mobile SDK authentication.

    Tools: Kotlin, Coroutines, OkHttp, Retrofit, Moshi, REST, JSON, Material Components, ViewModel, LiveData, Chrome Custom Tabs, JUnit, Mockito, Robolectric.

  • Android & Python developer

    Endava

    The customer was in the wrist watch industry. The project had Android and iOS applications and complex image recognition backend logic. The client is a worldwide electronics company, primary known for its watches; it is also the core company is a Japanese global corporate group based in Tokyo.

    I had 2 distinct roles in the project:

    1. Python backend developer May 2018 – June 2018

    Implemented a small image recognizer backend with Python and Google Cloud Vision API. Image pre-processing, calibration and analysis with OpenCV. Post-processing with various Machine Learning techniques for optimizing the recognition rate. The recognizer was written as a standalone Python command line tool which then was wrapped into a Java Spring REST service. The system was able to recognize a concrete watch model from a photo within >90% probability.

    Technical skills and tools: Python, Google Cloud Vision API, OpenCV, image processing.

    1. Android developer July 2018 – Sep 2018

    I was responsible for developing the Android client. It was a non-Material style app with about 16 screens and relatively complex navigation flows. The app included camera, files downloader, authentication with Facebook and Google accounts, notifications, synchronization with the REST backend. I have combined successfully some latest technologies and advancements in the Android industry: 100% Kotlin, MVI fully reactive unidirectional flow, immutable models. The result was a stable app with a small, easily testable and clean codebase.

    Technical skills and tools: Android: Kotlin, KotlinX, Dagger-Android, OkHttp3, Retrofit2, RxJava2, Moshi, Mosby-MVI, Fotoapparat, ThreeTenABP, Glide, Timber, LeakCanary, Junit, Espresso, Mockito.

  • Android Developer

    Indie

    End-to-end developer and designer of MovieLovers - an Android app for cinema and TV fans. Provides a comprehensive information about movies, shows and celebrities. The accent of the app is Material Design with a lot of attention to detail.

    • Unidirectional reactive architecture based on Mosby-MVI.
    • Separated Data/Domain/Presentation layers and fully immutable models.
    • Consuming RESTful web services, pagination, disk and memory caching, full state restoration.
    • Can operate fully offline with connectivity alerts.
    • Using nested RecyclerViews with layout performance optimizations via shared RecyclerView pools, image preloading and more.
    • Heavy use of imagery, custom-crafted animations, transitions and other visual effects.
    • Gesture navigation.

    App is available for free at:

    Environment: Kotlin, RxJava2, Dagger2, Retrofit2, TMDB, GSON, Glide, Mosby-MVI, Conductor, PaperParcel.

    More details and screenshots: Portfolio.

  • Android Developer

    Hi-Tech Research & Consulting, Varna

    End-to-end developer of GeoWorld app - advanced Android geocoordinate converter for geodesists and field surveyors. Offers unique features on the market. Role highlights:

    • Solo developer responsible for all stages of the development lifecycle - from idea to maintenance, including deployment, localization, end-user documentation, analytics, customer tech support.
    • Designed and implemented responsive UI/UX in portrait and landscape for phones and tablets following Material Design guidelines with usage of simple animations. Early adopted the new Material appearance.
    • Very good understanding of the Java OOP design patterns and paradigms like Clean Architecture, MVC, MVP and MVVM.
    • Gained in-depth knowledge of the Android platform, tooling and the Support libraries.
    • Proficient in subjects like: Dependency Injection, Data Binding, SQLite for offline database storage, Accounts and sync.
    • Fluent in multi-threading with Thread, Handler, AsyncTask, Service, IntentService, Loader, RxJava.
    • Extensively worked with the most used widgets like RecyclerView, DrawerLayout, CoordinatorLayout, ActionBar, ViewPager, CardView, ProgressBar, fragments, layouts, dialogs, toasts, implemented custom widgets with canvas drawing, full-screen activities.
    • Crafted XML layouts with precise measurements complying the Material Design spec.
    • Experience with Android API’s like Intents, Runtime Permissions, Notifications, ContentProvider, AccountManager, Camera, Sensors, GPS, Location Service, Files API, Internal/External Storage, File and Document Providers, MediaStore, MediaPlayer API.
    • Experience with Google Maps API and Google Places API.
    • Implemented an in-app store for monetization based on unlockable app features and content using the In-App Billing library.
    • Implemented banner and interstitial Ads with AdMob and Ogury.co.
    • Awareness of the common pitfalls and quirks associated with Android development.
    • Extensively used libraries like RxJava, Dagger2, GreenDAO, Picasso, Retrofit, GSON, OkHttp, Jsoup, JodaTime, ButterKnife, Parceler, PaperParcel, EventBus, Binding-collection-adapters, KotlinX, Timber, Stetho, DexCount.
    • Experience with RESTful web services, HTTP authentication, OAuth2, XML, JSON.
    • Experience with scraping HTML web sites and using them as emulation of REST API with the help of Retrofit and Jsoup.
    • Experience in database design using SQLite and Spatialite.
    • Refactored a large fragment-based codebase into clean Reactive MVVM + Data Binding architecture.
    • Experience in unit testing and integration testing on device and emulator using JUnit, Mockito, Espresso & UIAutomator.
    • Implemented continuous integration using CircleCI for the project’s Git repository in BitBucket.
    • Successfully set up ACRA bug reporting backend and Google Analytics and used it to collect anonymous data about runtime problems to keep the users from experiencing fatal crashes.
    • Implemented a one-click APK publishing process for all app flavors and CPU architectures.
    • Knowledge of integration, building and debugging of multi-architecture C/C++/JNI projects using Android NDK.
    • Used Git and Mercurial as version control system (VCS).
    • Refactored into Kotlin to improve code clarity and simplicity of core classes.
    • Ported Spatialite database for use in Android as a geospatial engine: android-spatialite.
    • Hands-on experience with hybrid apps using Cordova/PhoneGap.
    • Hands-on experience with geospatial and map technologies like Spatialite, GeoNode, OsmDroid, OpenLayers, Leaflet, MapBox, MBTiles, GeoDjango, GeoServer, WMS, WFS.
    • Studied the principles, standards, methods, categories of geospatial map projections and coordinate transformations, geodetic datums and successfully applied the knowledge into a complete product.
    • Written a detailed 70 page end-user manual in Google Docs with screenshots, diagrams, tables and styles.
    • Designed a vector logo and multiple icons in InkScape.

    More details and screenshots: Portfolio.

  • Java SE Developer

    Hi-Tech Research & Consulting, Varna

    PanelHome3D is an innovative Java desktop CAD software developed for companies, producers of polystyrene panels for building construction. Heavily customized fork of the popular open-source project SweetHome 3D. Sketching of simple construction plans of buildings. Analyzes the entire building geometry (walls, floor, ceiling, roof) and automatically generates a list of precise geometry shapes of the sliced panel pieces. The output geometry data is collected and formatted into a book of printable sheets. This book is a plan for the construction workers to assemble to panel pieces into complete buildings.

    Environment: Eclipse, Java SE 6, MVC, XML, Swing, AWT, Canvas, JIDE UI toolkit, Substance, Flamingo, JavaGeom, jMonkeyEngine, JNLP, Applet.

    • Solo developer of the project (the fork);
    • Implemented custom Swing MVC components;
    • Heavy use of AWT Canvas and 2D graphics;
    • Implemented Print Preview zoomable page layout;
    • Developed a Roof editor (3rd party algorithm);
    • Developed a Wall editor;
    • Developed a 2D polyline sketcher with advanced snapping;
    • Implemented dynamic 3D scene view with jMonkeyEngine.

    More details and screenshots: Portfolio.

  • C++ Developer

    Hi-Tech Research & Consulting, Varna

    Buildware 3D is a Windows CAD modeler software from the early 2000s written in C++ and based on the OpenCASCADE engine and OpenGL. Has 2D/3D modelling environment for interactive construction of geometry primitives, coordinate systems, layers, snapping, print layouts, property list UI. Heavy use of COM (the predecessor of .NET). Has a small core and modular design for high flexibility and extensibility through a custom plug-in framework based on COM interfaces. I was a member of the team of 3-5 developers.

    Environment: Visual C++, MFC, COM, ATL, IDL, WinAPI, GDI, OpenGL, OpenCASCADE, Prof-UIS.

    Highlights of my participation in the project:

    • Working with very large codebase;
    • Extending the existing codebase with additional features, improving legacy code, bug fixing;
    • Responsible for the GUI and the plug-in subsystems;
    • Implementing COM plugins which provide interactive operations over visual geometry objects like polylines, splines, boxes, prisms and more.
      • Boolean operations (Cut, Union, Intersection);
      • 2D operations (Move, Rotate, Mirror, Scale);
      • 3D operations (Fillet, Chamfer, Extrude);
    • Integration of the Prof-UIS MFC GUI library: implementing multi-pane layout, tree-view, toolbars, menus and a multi-selection PropertyGrid with binding to COM objects;
    • Participated in an effort to integrate a parametric CAD modelling core provided by OpenCASCADE.

    More details and screenshots: Portfolio.

  • BSc in Computer Systems and Technologies

    Graduated from Technical University of Varna.

  • Secondary education

    Gymnasium of Finances and Economics - Dobrich.

  • First PC

    Started learning computers and programming on my first PC: 386DX 40 MHz. My first programs were Turtle graphics in Basic and Pascal.

  • Hello World!

    Born in Dobrich, Bulgaria.