Summary

I'm a senior software engineer, project lead and coordinator, mainly working with Java-related technologies, interested in large-scale, distributed systems as well as researching open problems

Target

  • Developing effective, high-quality software solutions
  • Coordinating large scale projects and defining project requirements
  • Actively participating in decision-making and intra-team discussions
  • Quickly learning new technologies and frameworks
  • Handling both development and deployment & operations side of software (DevOps)

Work Experience

February 2016 - present

easyProperty (part-time)

Senior Java Developer


easyProperty.com

Online property sales and lettings

  • Technologies: Java, Spring, Hibernate, Scala
  • Role: senior developer, responsibilities covering the whole stack - API design and implementation, helping introduce new technologies and workflows

June 2015 - present

Council of Ministers of the Republic of Bulgaria (part-time)

Adviser to the deputy prime minister for coalition policy and administrative reform


Legislation initiatives

I've participated in drafting and passing multiple laws, including the Electronic Identification Act, the Electronic Governance Act and the Bulgarina Personal Documents Act, which among other things made it mandatory for government projects to be open source
I also drafted the implementing acts for the above acts which included technical details and workflows as well as general requirements for software systems that should ensure high quality, sustainability and define a common e-government architecture.

E-government strategy

I've participated in creating the E-government roadmap for the period 2016-2020, including details about more than 30 future projects as well as legislative initiatives that should make public administration more automated and transparent.

Project coordination

I've been responsible for coordinating and delivering the technical specification of multiple projects, which includes coordination with external contractors as well as writing the key elements of the specification and approving the end result. The projects include:

  • National Electronic Identification - the software infrastructure for a national Bulgarian eID solution, including all the processes related to issuing, verification, integraiton of service providers, cross-border identification, etc.
  • Tool for access to registers - in order to comply with the once-only principle (not requesting data from citizens that the government already has), a pilot project that allows the administration to access that daya in a strictly authenticated and audited environment is needed
  • Administrative register upgrade - the administrative register holds data about all administrations and their administrative services. The upgrade is meant to make it a central e-government component with granular, API-accessible data.
  • opendata.government.bg - the national opendata portal of Bulgaria.

February 2014 - February 2016

TomTom (contractor)

Senior Java Developer


NavCloud

Cloud synchronization of navigation devices and services

  • Technologies: Scala, Akka, Spray, Android, Riak, RabbitMQ, AWS, CloudFormation
  • Role: senior developer, responsibilities covering the whole stack - through API design and implementation, Android, server-side web development and Ops work with AWS.

May 2013 - February 2014

Ontotext

Senior Java Developer

Architect

Dynamic Semantic Publishing

publishing platform based on semantic and information extraction technologies.

  • Technologies: Spring, Hibernate, Maven, EhCache, Lucene, OWLIM
  • Role: developer, architect. Responsibilities ranging from day-to-day development to designing the architecture. Interfacing algorithms for information extraction and an underlying tripplestore.

June 2010 - April 2013

Fish4 / TMDR

Senior Java Developer

Team Leader

fish4.co.uk

fish4.co.uk was a site that offers both end users and organizations the ability to upload and search for jobs, homes, lettings, cars and other vehicles, etc.

  • Technologies: Spring, Hibernate, CXF, Grails, Groovy, Ant, EhCache, Mockito, Exalead search engine
  • Role: developer. Responsibilities ranging from development and support of back-end spring, hibernate and CXF modules to front-end grails modules.

Fish4 API

A separate project that provides an API for mobile application to fish4

  • Technologies: Spring, Spring MVC, CXF, REST, Maven
  • Role: developer and API designer. Participating in designing the API and developing the functionality.

ART

A recruitment platform, handling around 60 job board websites.

  • Technologies: Spring, Spring MVC, Hibernate (JPA), Solr, MongoDB, RabbitMQ, JAXB, Quartz, Maven, EhCache, Terracotta, AWS (S3, EC2).
  • Role: developer. Creating and improving the base frameworks of the project; implementing business requirements.

SMART

Website for new home developments. Data gets imported via an XML feed from multiple developers.

  • Technologies: Spring, Spring MVC, Hibernate (JPA), ElasticSearch, JAXB, Maven, Memcached, Grails, AWS (S3, EC2, ElastiCache)
  • Role: lead developer. Defining and documenting the architecture and processes; creating the base frameworks of the project; implementing business requirements.

February 2009 - May 2010

Materna Information & Communications

Senior Software Engineer

E-services for municipalities in Bulgaria

E-services for municipalities, integrated with the centralized eService government portal.

  • Technologies: BMC Remedy Action Request System, Web services, JasperReports, Applets, Java security.
  • Role: integration; support

eSP - eServicePlatform

eSP is a platform for developing E-Service for government institutions. Its purpose is to present developers with an easy and fast way to develop new E-Services by only "drawing" the business process and creating the screens to handle the steps. Everything else - user management, administration management, security, business process tasks visualization, integration with the egov.bg portal and the centralized government middleware is provided by the platform.

  • Technologies: Spring, JSF, RichFaces, Hibernate (JPA), jBPM, JAXB, JAX-WS, Apache CXF, Java security, JasperReports, Java Applets
  • Role: Lead developer and architect.

September 2007 - February 2009

SmartMinds Bulgaria

Software Engineer

Customizations of Ericsson's mobile platform for: T-Mobile USA, Claro Brazil, Telefonica Mexio

Customizing Ericsson's platform for handling prepaid calls according to telecom requirements

  • Technologies: Java SE, UML, JUnit, IBM Rational ClearCase
  • Role: Developer, team leader. Writing code for Ericsson's mobile platform, unit and functional tests, participating in the decision-making and analysis.

Proxicast

A Bluetooth advertising solution - sending preconfigured messages (information, ads) to Bluetooth devices in range. The local server is getting all the information from the central server. The information on the central server is configured via a web portal.

  • Technologies: J2SE, Bluetooth API, WebServices (XFire), Echo2
  • Role: Developer. An overhaul of the existing solution was needed and I had to: create an offline mode for the local server; enable the utilization of multiple Bluetooth devices on the server, with shared responsibilities for device detection, content push; port the communication between the local and the central server from manually handling http requests/responses, to a WebServices solution (using XFire);

Bedrukt.nl

A web store for clothing, with options to design the item (for ex. a T-shirt) with text and pictures. Supporting different fonts, colours, image types, positioning of elements on the T-shirt, specific pricing conditions, etc.

  • Technologies: Adobe Flex, Spring framework, Spring MVC, Hibernate, Maven, AWT (graphics), XSL-FO
  • Role: Team leader, developer, contacting the customer and discussing the implementation.

August 2005 - August 2007

Edliny

Working for a small family company creating web sites and desktop applications.

Starfight - web-based strategy game

Browser-based, turn-based multiplayer strategy game. Gives the players planets, fleets, navigation, inner mail system, reports, etc.

  • Technologies: JSP/Servlets, JDBC, MySQL, XML, XHTML, AJAX.
  • Role: Developer. I was the creator and the only developer in this project.

Real Estates web-site template

A web site for real-estate agencies, listing all properties, providing users with search capabilities and good UI. Includes administration panel and is being synchronized with a local database, used by a desktop application of the company.

  • Technologies: PHP, MySQL, JavaScript, XHTML, CSS.
  • Role: Developer.

July 2004

Neochim PLC (internship)

Intern programmer

Building an internal website and internal accountancy software (still in use at least until 2008)

Misc

Senior Software Engineer

Freelance - AcaciaBusinessAce

Acacia Business Ace is ERP+CRM like system which is designed to support small and medium size enterprises.

  • Technologies: EJB3, SwingX, BeansBinding, Hibernate (JPA), Java Security, JasperReports
  • Role: Developer. Actively participating in decisions about the generic basics of the application; creating multiple modules

Open Source - Hector

Hector is the de-facto Java API for the Apache Cassandra database

  • Technologies: JavaSE, Spring, Maven
  • Role: committer. I contributed small amounts of code to both the general API / implementation and to the spring integration.

Own projects

computoser.com

An experimental algorithm that generates music. Based on statistics and music rules

  • Technologies: Spring, Spring-MVC, JSP, jQuery, Maven, JMusic, AWS
  • Role: Owner, researcher, developer.

welshare.com

Welshare is a "sharing platform". Similar to facebook and twitter, providing both social network aggregation and extra features like measuring social reputation, search, unified like button, etc.

  • Technologies: Spring, Spring MVC, JSP, jQuery, Hibernate (JPA), Hibernate-search, Lucene, Ehcache, MySQL, neo4j, Maven, JUnit, OpenID, Amazon AWS
  • Role: Owner, architect, developer.

alerts.obshtestvo.bg

A small open-source project for allowing citizens to get notified whenever a set of keywords appear in newly published government documents.

  • Technologies: Scala, Spring, Hibernate, Lucene, Spring-MVC, SSP, jQuery, Maven
  • Role: Owner, developer.

saltedhashed.com

A small open-source project for verifying the password storage mechanism of 3rd party websites.

  • Technologies: Java, Spring, Spring-data, MongoDB, Maven, OpenShift.
  • Role: Owner, developer.

i-kratko.com

A small project for correcting a typical spelling mistake in Bulgarian. Includes a spellchecker and analysis of grammatical agreement in order to determine the proper spelling. Also includes anagram and rhyme finders.

  • Technologies: Spring, Spring-MVC, JSP, jQuery, Maven, JDO, Google App Engine.
  • Role: Owner, developer.

avtogara.com (not functioning)

On-line system that is selling bus tickets of various transport companies.

  • Technologies: Spring, JSF, RichFaces, Hibernate (JPA), JasperReports, Maven, JUnit, MyFaces orchestra
  • Role: Owner, architect, developer.

Android apps

For the sake of getting familiar with the android SDK, I've build a couple of android apps: "Dumbphone", "Who didn't call back", "Anyversary", "Computoser", "Medical Reminder", "Lolcat wallpapers" and "Vocabulary".
See play store

Education

2007 - 2011

University of London, International programme, Goldsmiths College

BSc Computing and Information Systems

2001 - 2006

High school of mathematics and science "Ivan Vazov", Dimitrovgrad

Informatics

Technical Skills

Programming languages


  • Fluent: Java
  • Intermediate: Scala, Javascript
  • Basic: Groovy, PHP, Python, Bash, FoxPro

Tools


Version control systems

Git, Mercurial, SVN, CVS, ClearCase

Application servers / servlet containers

Apache Tomcat, GlassFish application server

IDEs

Eclipse, IntelliJ IDEA, Spring STS, NetBeans

Databases
  • Fluent: MySQL, PostgreSQL (SQL); Riak (NoSQL)
  • Intermediate: Oracle, MS SQL, HSQLDB
  • Basic: MongoDB, OWLIM, Neo4j, Cassandra
Databases access tools

PhpMyAdmin, Toad, MySQL Administrator, Navicat, Postgre pgAdmin, Oracle SQL developer. MSSQL Management Studio

Continuous Integration

Jenkins / Hudson, TeamCity

Build tools

Maven, Ant, sbt

Frameworks


Web frameworks & technologies
  • Server-side: Servlets/JSP, Spring MVC, JSF, MyFaces, RichFaces, Grails, Apache Struts, Spray
  • Client-side: jQuery, Adobe Flex, Google Web Toolkit; CSS, (X)HTML
Data exchange technologies
  • Web Services: SOAP (JAX-WS, Apache CXF), RESTful (Spring MVC, JAX-RS, spray)
  • Other: JMS, RabbitMQ (AMQP), RMI

Database access frameworks & libraries
  • Fluent: JDBC, Hibernate/JPA
  • Basic: Hector (Cassandra API), spring-data, spring-data-graph, Sesame
Application frameworks
  • Fluent: Spring, Akka
  • Intermediate: EJB 3, CDI (JSR-299)
Mobile developmennt

Android

Cloud technologies


  • Fluent: AWS: EC2, S3, CloudFormation, etc.
  • Basic: GoogleAppEngine; OpenShift; Jelastic

Misc


Methodologies and techniques
  • Object-oriented analysis & design
  • Agile software development, Scrum
  • Technical writing
Other frameworks and tools

AWT/Swing/SwingX, Security - encryption, SSL, digital signatures, CRL, etc., J2ME, JUnit, TestNG, Selenium, Cucumber, Scalatest, jBPM, JAXB, XSL-FO, JasperReports, EhCache, memcached, Checkstyle, PMD; RDF, XML, SPARQL, etc.

Talks

  • Talks on tech conferences: Scala, The Cloud Beyond the buzzword, Computers and music, WebSockets, CDI, Spring-MVC, GWT, Electronic governance, electronic identification, e-voting, open source.
    Slides of all talks at SlideShare (mostly in Bulgarian)
  • "Common sense driven development" at jPrime 2015: Slides | Talk (EN)
  • "Open source for the government" at OpenFest 2014: Slides | Talk (BG)
  • "Computers, music and interdisciplinarity" at RougeConf 2013: Slides (BG) | Talk (BG)
  • Lecturer in the preparation camp of the Bulgarian national team for the international linguistics olympiads since 2007
  • "Myths about linguistics": Talk (BG)

Social activities

  • Member of the governing council of Obshtestvo.bg (society bg) - NGO aimed at improving the communication between citizens and the government
  • Co-organizer of the "OpenSource in the government" initiative and the Electronic-ID initiative
  • Part of the OpenData and Open Source team at Obshtestvo.bg, consulting various institutions about OpenData and Open Source and creating http://opendata.government.bg
  • Participated in drafting the amendments to the "law for access to public information"
  • Member of an informal "e-governance" group, formed by government officials, business representatives and NGOs, aimed at improving the state of e-government in Bulgaria
  • Board member of the "Linguistics and mathematics" department of the Union of Bulgarian Mathematicians (2010-2012)
  • Member of union of leaders of olympic teams in the natural sciences (since 2014)

Scientific work

  • Paper: Computoser - rule-based, probability-driven algorithmic music composition
  • Paper: Rosetta Stone Linguistic Problems, presented at an ACL workshop with Ivan Derzhanski
  • Member of the jury: of the Bulgarian national linguistics olympiad since 2007; of NACLO/ELCLO (North American / English Language Computational Linguistics Olympiad) since 2008; UKLO since 2012 and; IOL (International Linguistics Olympiad) since 2008; the Bulgarian national IT olympiad in 2009 and 2010.
  • Chair of the problem committee of the International Linguistics Olympiad in 2015

Personal achievements

  • During my school years I took part in lots of national and international contests in linguistics and information technologies where I won many top prizes, including a silver medal on the International IT olympiad.
  • In 2007 I was consultant and leader of an IT project that won 5th prize in category "Web applications" on the national IT olympiad.

Other