ALEXANDER MARINOV

FULL STACK WEB DEVELOPER

As an accomplished web developer with over 15 years of experience, I specialize in designing, implementing, and maintaining innovative web applications and backend systems. My proficiency in writing clean, concise and well structured code ensures high-quality and efficient software solutions. I've successfully collaborated with various teams, contributing to projects in online media, advertising, e-commerce, finance, healthcare, and SaaS, and am adept at working both independently and within office environments.

My technical expertise extends beyond web development, including a deep understanding of related technologies and best practices. My background in photography and pre-press has honed my eye for detail, particularly with layouts and typography, which complements my web development skills. Additionally, my experience in DevOps and system administration has often positioned me as the go-to problem solver for project emergencies.

I have taken the lead in architecting several projects, applying Domain Driven Design principles and best practice structural patterns to create scalable and maintainable applications. My foundational knowledge in low-level programming, while not my current focus, reinforces my ability to grasp the full stack and confidently tackle any challenges that could arise.

Skills

Backend

Virtually every project in my career had me involved in backend development. Nowadays my main focus is on PHP and Symfony, but I'm not a stranger to other languages and technologies. I've occasionally used Perl, Ruby and even a bit of C in the past, and my introduction to programming far predates PHP and Web - I've started with BASIC, Assembler and notably Borland Pascal in the mid 90s.

PHP(since 2006; v5.0-8.3)

Since 2006, I have been primarily using PHP, tracking its evolution from version 5 through to the latest features introduced in versions 7.* and 8.*. My approach to development is strictly typed, and I greatly value the type system enhancements and other improvements that have been added in recent updates.

Symfony framework(since 2009; v2-7)

My first encounter with Symfony was in 2010, starting with the 2.0-alpha. Since then, I've leveraged Symfony in numerous projects, utilizing it as a comprehensive framework, a micro-framework, or even just a collection of components alongside a custom bootstrapper. Over the years, I've gained a deep understanding of its internals and design patterns, likely using most, if not all, of the advanced features of the core components. I'm also well-versed in both Doctrine ORM and DBAL, having implemented them in many projects.

Skills (continued)

Backend

MySQL(since 2006; v5.0-8.0)

I have been using MySQL since 2006 when MyISAM and collation issues were still a common thing. I'm fairly good at designing database schemas with respect to normalization, performance and scalability. I'm also quite familiar with indexing and optimizing queries. I have also used MySQL in replicated and clustered environments, including maintaining self-hosted HA Galera cluster

Laravel(since 2014; v7-9)

I have started using Laravel in 2014 and have used it in several projects since then. I have used it for both small and large projects and I'm quite familiar with it's features and best practices.

Key-Value Stores(since 2008)

Used Memcached since 2008 and Redis since 2012. I have used both in many projects mostly as cache storages, but occasionally as semaphores and queues.

RabbitMQ(since 2011; v3.0-5.0)

I have used RabbitMQ in several projects since 2011 in various contexts - for both simple and complex message routing and processing, for async processing, and as a poor-man's ESB, so I'm well-versed in its applications.

Elasticsearch(since 2015; v1.0-7.0)

I have used Elasticsearch in several projects since 2015, gaining some proficiency with its concepts and usage. I'm yet to have a chance for a deep dive into its more intricate features.

Frontend

I began working in web development when all developers did both frontend and backend work. At that time, creating web UIs was simpler but also more unpredictable due to cross-browser inconsistencies. We were all focused on making our sites work the same across all browsers, often checking how well new browser versions followed set standards with tests like Acid2 and Acid3.

With the arrival of HTML5, there was a promise of building more functional and user-friendly websites. In 2010, I built my first SPA using a custom framework I created before popular frameworks existed. Even as frontend and backend development roles became separate specializations, I kept up with new developments in frontend technology.

CSS preprocessors(since 2014)

I've started with LESS back in 2014 and later on moved to SASS which I prefer and still use today. I intentionally avoid more complex features and patterns for readability and maintainability reasons.

Skills (continued)

Frontend

WEB fundamentals(since 2006)

I've always supported and advocated for the standardization, robustness, and rich user experience of websites and web applications. From the push for strict XHTML and the adoption of HTML5 and CSS3.1 to the rise of CSS processors and frameworks, Flexbox and CSS Grid, and onto the advent of SPAs/PWAs, TypeScript, and modern Browser APIs—I've been there, I've done that, and I've loved every bit of it.

TypeScript(since 2020; v3.9-5)

After a few projects with React, I started to become increasingly dissatisfied with the level of type safety. Around 2020, shortly before the TypeScript 4.0 release, I decided to dive in with a smaller React project. Since then, I've been using TypeScript whenever possible and have gone from being skeptical of JavaScript's usage in complex projects to becoming a full-blown fan, even finding myself missing some of its abilities in my backend work.

React (since 2015; v15-18)

I've started my React journey circa 2017 participating in couple of projects with old school deep prop-drilling and no state management. By the time I had the chance to work with Redux - Redux Toolkit and Redux Saga were already established projects so I've mostly used them in bundle. I've added hooks and context when they became available and currently I'm using them in all of my projects.

Next.js(since 2023; v14)

After CRA was expectedly deprecated at the beginning of 2023, I started looking for viable alternatives to adopt in my workflow. A particular post by Dan Orlovski provided sound reasoning about the direction in general, and some other key members of the React community have helped me overcome initial skepticism. Consequently, I decided to dive into Next.js to gain firsthand experience with Server Components.

Compared to other areas of my expertise, I'm still early in this journey and need more production experience before I can claim proficiency. For what it's worth, this data-driven resume builder is implemented with Next.js :)

Vue.js(since 2020; v2)

I've used Vue 2 along with Vuex in a couple of projects since 2020 for a total of an year and a half and familiarized myself enough to be able to move the project forward without any major stoppers.

UI kits/frameworks(since 2010)

I've used various UI kits throughout my career ,starting with jQuery UI circa 2010, then moving to Bootstrap 3 circa 2013. Circa 2015 I've started adopting React for FE and hence moved to React Bootstrap and in more recent times Material-UI.

Skills (continued)

DevOps / Administration

Ever since I've got into web development I've been deeply interested in underling the infrastructure which keeps the web running. I've started using Debian Linux as my primary OS in 2009 in order to stay close to production environments. I had access to hundreds of production servers on multiple continents and have done field work/troubleshooting on both bare metal and cloud environments. While I can't compete with a dedicated sysadmin and/or DevOps engineer, I'm quite comfortable with setting up and maintaining small to mid-sized projects keeping them up and safe.

CI/CD(since 2009)

I began using PHPUnderControl for code analysis and continuous integration (CI) in late 2009. Since then, I've worked with many tools for CI/CD and automated deployment. While my familiarity varies among them, their similarities allow for quick induction or refresh when needed.

Docker(since 2015)

I have converted more than half a dozen projects to use Docker for their development environments, typically on smaller teams without dedicated DevOps support. Owing to my experience with Docker, Debian, and Symfony, I have also assisted larger teams on several occasions in preparing their environments for stateful AWS deployments, covering both Docker and Symfony setups. However, my production experience with Docker is limited, as most companies utilizing it tend to have specialized teams.

Debian/Ubuntu Server(since 2009)

Since starting at a Debian-based hosting company in 2009, I've honed my skills in troubleshooting and optimizing software stacks. By 2012, I had set up a home lab with a decommissioned ProLiant G4, which evolved into a sophisticated 5-node Proxmox HA stack with a Galera cluster in a Tier 3+ data center, using it both for learning and for hosting smaller projects. Additionally, I've configured numerous Debuntu hosting environments on EC2 and DO for small teams. My self-taught expertise in this area is substantial, despite not being my official field.

Amazon Web Services(since 2017)

Since 2017, I have utilized AWS in various projects, focusing on core services such as EC2, S3, and Route53. As a developer, I've worked with AWS offerings including RDS, SES, SNS, SQS, KMS, and ElastiCache. While configuring complex AWS environments typically falls to dedicated DevOps teams, my experience in this area is more limited.

Skills (continued)

DevOps / Administration

Automated provisioning(since 2015)

I possess a strong understanding of infrastructure concepts, having previously built and managed bare metal provisioning using KVM, custom Ubuntu ISOs, Puppet, and The Foreman for orchestration. Although this technology stack is less common now, the principles remain relevant and aid in quickly adapting to various cloud vendors' services.

Network administration(since 2007)

Throughout my career, I've engaged in light networking, but with the rise of affordable cloud and distributed environments, I chose to deepen my expertise. In 2017, I completed MikroTik's networking courses and obtained certifications: MTCNA (1707NA5937), MTCRE (1710RE2898), and MTCINE (1711INE4930). Although these may not carry the same recognition as Cisco's CCNA, they equip me with comprehensive networking knowledge applicable to my daily work.

Work Experience

ICC /Full stack/

I contributed to the maintenance and development of new features for one of the company's key products, ICC Digital Codes, a web-based platform for building codes and standards with intricate business logic. Additionally, I played a role in readying the project for cloud migration to AWS, addressing both infrastructure and application aspects.

Amadeus /Backend, DevOps/

Following an extended onboarding, I joined a Rails division team to help migrate several PHP applications from a traditional data center deployment to a dockerized setup. This was the initial phase of a planned cloud migration. Our responsibilities included setting up the Docker environment, revising deployment procedures, and modifying the applications (all Symfony-based) for compatibility with the new infrastructure.

Jiminny /Backend/

I joined Jiminny when the company was gaining momentum yet still retained its startup culture. I worked on a platform that combined CRM with sales forecasting, built on Salesforce and Google Cloud Platform. My tasks varied from minor maintenance and feature additions to developing larger features over several weeks.

A highlight of my tenure was leading the integration of both Gmail and Outlook into our platform to enhance intelligence gathering. This involved architecting the solution, handling implementation, and navigating the complexities inherent in email-related work.

Additionally, I played a key role in advancing our Microsoft certification and Google security audit, taking ownership of these processes after their initial setup.

Work Experience (continued)

Delasport /Full stack/

I was part of the Platform team, responsible for maintaining and enhancing two back offices—one white-labeled—and the underlying databases. My tasks primarily involved fixing issues and improving business intelligence tools to provide statistics and reports.

Paynetics /Backend/

During my tenure at the company, I was involved in a range of maintenance activities centered on payment processing with a Symfony backend. My contributions were highlighted by the implementation of a 3D Secure protocol for in-house payment processing and participation in the development of features to provide PSD2 compliant access to account holders' information.

Partnerize /Full stack/

Upon my arrival at the company, it was transitioning from a customized Kohana build to Symfony for a specific project. My team's initial assignment was to develop a PoC showcasing Symfony's potential. Subsequently, we began crafting a WYSIWYG tool for affiliate newsletters, involving creation, scheduling, and dispatching within pre-established networks. Unfortunately, due to the uncertainties introduced by the Covid-19 pandemic, the company withdrew from our sector, leading to my departure before the project's completion.

Medint /Full stack/

I contributed to a healthcare web application that connected patients with research teams. The platform aimed to furnish patients with thoroughly researched second opinions and guide them towards treatments that were either not widely available or subject to certain restrictions. My role encompassed routine maintenance and the implementation of new minor features. A significant achievement was the development of a WYSIWYG editor designed for generating PDF reports on research findings, incorporating internal peer reviews to ensure the production of high-quality PDF documents.

Work Experience (continued)

Mr & Mrs Smith /Backend/

Upon joining the company as the inaugural team member outside the UK, I was tasked with spearheading the formation of a new team in my country. My involvement was mainly in small-scale tasks and resolving bugs. The highlight of my tenure was the implementation of a Token Bucket Filter (TBF) rate limiter to mitigate the exhaustion of AWS API limits. This issue became apparent during a structural data update when the migrator consumed the entire daily API quota, resulting in system access issues for users. The TBF was carefully adjusted to ensure a generous daily/monthly allowance for end-users. However, the company's strategic shift led to its withdrawal from the country, culminating in my departure.

Lumeon /Full stack/

I was involved in both maintaining and developing the company's main product—a highly complex healthcare platform with some components showing their age. It was the largest project I have encountered in my career. My responsibilities were primarily focused on small, detailed tasks.

  • I proposed and single-handedly executed a substantial refactoring of several products to improve maintainability, incorporating a package manager, environment-specific configurations, and automated deployment processes.
  • I initiated and was actively involved in revamping the project development workflow to eliminate ambiguities. This included setting up a complex Jira workflow, migrating legacy projects to Git, integrating the Atlassian suite with external tools, and establishing a foundation for continuous integration/delivery and automated testing.
  • I frequently engaged in project planning, effectively taking on the roles of lead developer and software architect.
  • I also contributed to the maintenance and development of new features for legacy e-commerce websites.

Work Experience (continued)

Ecommera /Full stack/

I was involved in the refinement and bug fixing for an update release of several regional Disney stores, as well as in the re-factoring of TMLewin's online store to enhance its responsiveness, utilizing an internal framework. I also had the chance to work for a short time with the ASDA team, which on top of their regular tasks had to ensure proper interaction with Wallmart's infrastructure and systems.

ICDSoft LTD /Full stack/

The company is a hosting/registrar provider which uses only in-house developed software. As a member of the development team, I was responsible for creating and maintaining various software products used internally by the company and its clients - Control Panel, Webmail, Reseller's control panel Webmail, CRM system, Billing system, integration of third party vendors (payment processors, domain registrars, etc.), and various automation tools. I also participated in creating an in-house website builder (similar to MS Frontpage), specification/development of an in-house ERP system, and created a web-based translation system (SPA) to aid in internationalization of company's products.

Investor.BG AD /Full stack/

I took over the ongoing maintenance of aha.bg, one of Bulgaria's most visited sites at the time, which catered to a teenage audience. The project had plateaued, signaling that it had reached its limits and could not grow further within its original architecture. During my tenure, I successfully architected a new persistence schema, conducted thorough load testing as proof of concept, and convinced management to greenlight a codebase rewrite and data migration. This endeavor was a success; the new version could handle a much greater volume of traffic and removed the previous restrictions that were necessary to keep the site operational.