Radoslav Terezka, Developer in Bratislava, Bratislava Region, Slovakia
Radoslav is available for hire
Hire Radoslav

Radoslav Terezka

Verified Expert  in Engineering

Software Developer

Location
Bratislava, Bratislava Region, Slovakia
Toptal Member Since
December 12, 2017

Radoslav is a passionate Drupal developer who started with Drupal in 2009 with version 5.x. Each line of code he writes makes sense, does what it is supposed to do, and corresponds to Drupal's best coding practices. Throughout his career, he's worked on multiple international Drupal projects and he's also become a huge fan of all kinds of automation including provisioning, migrating, building, testing, and deploying.

Portfolio

Jobiqo
Drupal, Drupal 8, Drupal 9, PHP, MySQL, Back-end, Back-end Development...
Drunomics
Drupal, Drupal 8, MySQL, PHP, Solr, Acquia Cloud, Travis CI, Jenkins, Bash...
HBF, s.r.o.
Jenkins, Elasticsearch, Solr, Memcached, Chef, Vagrant, MySQL, Drupal 8...

Experience

Availability

Part-time

Preferred Environment

Linux, MacOS, PhpStorm, Git

The most amazing...

...feature I've coded was replacing the default SQL storage with Elasticseach within a Drupal 8 CMS

Work Experience

Senior Software Engineer (Drupal-focused)

2019 - 2022
Jobiqo
  • Contributed to key back-end development on a completely new version of a client's job board distribution based on Drupal 8/9, React, and GraphQL.
  • Ported plenty of features from the former version.
  • Came up with lots of architectural ideas and improvements.
  • Developed a plethora of GraphQL queries and mutations.
  • Configured virtualized local development environment by using the DDEV tool.
  • Set up the testing infrastructure by using the Behat testing framerwork.
  • Configured CircleCI pipelines and Jenkins jobs where I also wrote lots of Bash and Python automation scripts.
  • Established various Solr-related configurations with custom fields and an auto-suggesting feature.
  • Prepared several production environments and assisted with launches.
  • Assisted and guided my team members throughout many tasks.
Technologies: Drupal, Drupal 8, Drupal 9, PHP, MySQL, Back-end, Back-end Development, CircleCI, Jenkins, NGINX, Docker, Docker Compose, Bash, Python, Linux, Solr, Behat, GraphQL, DDEV, Cloudflare

Senior Software Engineer (Drupal-focused)

2018 - 2018
Drunomics
  • Developed a Drupal 8 multisite recipe platform covering five different sites.
  • Built a Drupal 8 application for testing and comparing various products in different categories.
  • Established the ELK (Elasticsearch, Logstash, Kibana) stack by using Docker Compose to parse out different types of server logs from various servers and storing them to centralized Kibana instance to provide a dashboard for managment.
  • Used the Travis CI tool for debugging the build problems on Travis CI and improving the Travis CI configuration file.
  • Established the production and development environments on Acquia Cloud and deployment pipelines.
  • Developed and worked on several custom Drupal 8 modules (Basic Auth Limited, Cache Tools!, Entity edit redirect, Preserve page cache, Region renderer, Rendered markup field, Trusted redirect).
  • Worked on a custom purging solution to invalidate the caches from three different layers—CloudFlare, Varnish, and internal Drupal caches.
  • Set up various Solr-related configurations, including a custom auto-suggesting solution to also work with Acquia Search and not hitting the request limits.
  • Worked on a custom Drupal 8 Contentpool distribution where one main instance is distributing content to satellite instances by using RELAXed Web Services and Replication modules under the hood. Worked also on a client project using that distribution.
Technologies: Drupal, Drupal 8, MySQL, PHP, Solr, Acquia Cloud, Travis CI, Jenkins, Bash, Composer, NGINX, Elasticsearch, Logstash, Kibana, Vagrant, Docker Compose, Jenkins Pipeline, Jenkins Job DSL, Back-end, Back-end Development, Linux, Behat, BackstopJS, YouTrack, Cloudflare

Drupal Developer | DevOps | Solution Architect

2012 - 2017
HBF, s.r.o.
  • Developed several Drupal 7 projects, one Drupal 8 project, and one Symfony 2 command bundle.
  • Set up the local development for our team; using virtual machines built by Vagrant and provisioned by Chef.
  • Set up the CI/CD with a Jenkins.
  • Profiled with XHProf to identify bottlenecks and improve performance.
  • Set up a SOLR environment several times with specific schema, field types, and analyzers.
  • Handled several migrations from different systems to Drupal 7/8 with the help of a migration module.
  • Wrote plenty of REST endpoints in several projects with headless Drupal 7/8 and AngularJS as the front-end.
  • Set up a Drush daemon to process tasks from queues (i.e., Varnish cache invalidation, triggering a prerender fetch).
  • Developed a search API views integration which queries directly to Retresco (a specific search engine built on top of Elasticsearch).
  • Worked with a Drupal 8 Thunder distribution, acquired certificate for a company that I worked for; can be found at Thunder.org/certified-thunder-integrators-cti.
  • Worked as a team lead and solution architect.
  • Communicated with the client and my own team where we discussed the requirements and found solutions.
Technologies: Jenkins, Elasticsearch, Solr, Memcached, Chef, Vagrant, MySQL, Drupal 8, Drupal 7, NGINX, Composer, Let's Encrypt, Platform.sh, Ruby, Symfony, jQuery, Facebook API, Agile, Bash, Apache, JavaScript

PHP Developer

2012 - 2012
IT-Development Slovakia s.r.o.
  • Acted as a PHP developer of internal applications used for building telecommunication networks.
  • Developed a standalone fleet management application to track vehicles, drivers, fuel consumption, repair expenses, and to provide many other reports.
Technologies: MySQL, PHP, jQuery, JavaScript

Drupal 6 Developer

2010 - 2011
eskupina k.s.
  • Developed flexible registration as a node type; where the administrator could configure the number of registration steps, reorder them, customized a particular step (adjust labels, options), and apply the theme to registration.
  • Wrote web browser tests to test the registration process with different types of registrations.
Technologies: PHPUnit, Selenium Remote Control (RC), MySQL, Drupal 6, jQuery, JavaScript

Jobiqo

https://jobiqo.com/
Jobiqo is a job board platform initially built on Drupal 7, which required a complete redevelopment on a newer Drupal version in which I played a fundamental role.

I was a vital part of the back-end development for this completely new version based on Drupal 8/9, React, and GraphQL. There I ported plenty of features from the former version to a new one, came up with many architectural ideas and improvements, and wrote many GraphQL queries and mutations.

I configured the virtualized local development environment using the DDEV tool and set up the testing infrastructure using the Behat testing framework. My work also included configuring CircleCI pipelines and Jenkins jobs, writing lots of Bash and Python automation scripts, setting up Solr configurations, preparing several production environments, and assisting with launches by guiding my team members through many tasks.

Contentpool

Contentpool was a Drupal 8 distribution that enabled replication of content from one main instance into satellite sites by using the CouchDB Replication Protocol under the hood.

I helped to shape the distribution and a client project using it with the following achievements:

• Established a common data model to be shared for both main and satellite sites.
• Solved several problems regarding content replication to satellite sites when content is added, edited, or deleted on the main site.
• Developed a rendering strategy for the satellite sites to render entities distributed from the main site.
• Made several public modules during the development to cover distribution use-cases (the markup field, custom elements, Basic Auth Limited, trusted redirect, entity edit redirect).
• Wrote a couple of behavioral tests using the Behat framework to cover crucial replication behavior.

Multi-site Food Digital

Multi-site Food Digital was a Drupal 8 project built on a multi-site architecture for a large German publishing company covering five different sites.

During development, I established the configuration strategy that the correct configurations and settings are used per environment and also per site.

I ensured that it was the correct Solr configuration with all required fields and processors used in different environments. On production, I set up Acquia Connector to be correctly integrated with Acquia Search service.

Regarding CI/CD, I worked a lot with Travis CI where I learned how to use it, debug and I also improved our Travis CI configuration. The production was run in Acquia Cloud, where I set up pipelines with all the necessary hooks to correctly deploy the application to production.

I was also involved in introducing more efficient caching strategy by establishing custom cache tags and invalidation logic for them. I also gained an experience in CloudFlare and its purging options. Regarding quality assurance, I wrote a lot of behavioral tests using the Behat framework.

ELK (Elasticsearch, Logstash, and Kibana) Stack

A special ELK stack for the client allowing not only to parse out different log types from different servers but also to consume Drupal logs from a client's Drupal application.

My part on the project was to develop a Docker Compose file bringing up whole ELK with additional supportive containers:
• Configured NGINX proxy container to make Kibana and Logstash' consuming HTTP endpoint available to outside world under desired paths on a specific domain protected by basic authentication.
• Set up a subgroup of containers allowing to generate Let's Encrypt SSL certificates for the domain where the stack was run.
• Developed a complex Logstash config file with proper parsing patterns and mutations allowing to consume different types of logs from files and also consuming Drupal logs via HTTP.
• Established multiple dashboards, searches, and visualizations for Kibana to be imported out-of-the-box whenever and wherever the stack is run so they don't need to be created manually.
• Introduced a special container allowing SSH so the different servers can regularly push the different log files for the Logstash to be consumed.
• Adapted Drupal's logs_http module to align with Logstash and make the consuming of Drupal logs via HTTP work.

Kurier.at

https://kurier.at/
Kurier is a large daily newspaper based in Vienna.

The company that I was working at the time was responsible for delivering a fresh new editorial back-end based on Drupal 8 and Thunder distribution. It was also acting as a content pool (used headlessly) to provide REST endpoints for various front-ends based on AngularJS 2. Additionally, Drupal 8 editorial back-end was connected to Retresco to index and query the content.

Besides being a developer, my role in the project was also as a team lead and solution architect (acting as an interface between the client and my team, discussing requirements, and finding solutions). I also prepared a fully virtualized local development environment built by Vagrant and provisioned by Chef, which was used by our own team and the client. I was also partially responsible for setting up the CI/CD with Jenkins.

From the development point of view, I implemented plenty of REST endpoints, made multiple migrations from the old system running on-the-fly, integrated search API views, and queried Retresco. I also wrote plenty of serializers to serialize Drupal entities to Retresco documents, and last but not least, I attempted to swap the default SQL storage to Elasticsearch.

Internal Content Dashboard | Monitoring the Performance of Social Networks

An interesting little internal project for a large publishing company that was monitoring the performance of social networks.

I refactored the project into a Symfony command bundle because it malfunctioned. Before starting, I wrote a couple of Chef cookbooks to provision the whole setup. The refactoring output was a Symfony command bundle regularly triggered by a Cron job to perform regular information fetching.

Cooking Platform for a Publishing Company

An ambitious international project built from scratch with a Headless Drupal 7 back end, AngularJS front-end, Prerender.io, Solr, and Varnish.

First of all, I was responsible for setting up the Solr environment with all field types and their corresponding analyzers. Then I implemented plenty of migrations running daily between various systems, sometimes importing up to 2,000 recipes per day. I also wrote a couple of feed imports to import recipes from various feeds (Atom, RSS). The most interesting part of the project from my side was to set up a Drush daemon to run constantly to process multiple tasks from the queue, like invalidating the Varnish cache, triggering a Prerender fetch, indexing to Solr, generating multiple image derivations for our CDN, and many more. During the project, I also adjusted our deployment shell scripts.

Relaunch of an Online Magazine Website

This was a relaunch of an online magazine from an old system to Drupal 7, which was in French.

Here I gained my first Solr experience, where I established the Solr environment and implementing an autocomplete, full-text, and faceted search. The search was in French, which required me to set up stemming as well. I also migrated a large amount of content (a complicated structure and users) from the old system to Drupal 7. The most interesting task during development was setting up Varnish caching for authenticated users (using the Authcache module and a specific Varnish setup). Finally, I was involved in performance tuning by using the XHprof profiler to identify bottlenecks and improve the overall performance.

enyLab

A gamified financial platform based on Drupal 7 for a Swiss company called eny Finance which provides lending solutions in Switzerland.

Here the site users could actively contribute to the content and gain virtual currency called Talers for multiple actions. The currency could also be spent.

I implemented several features on the site:
• Created an idea competition where registered users could post ideas about new financial products, those ideas could be voted, and the idea owner with the most votes won a price.
• Made several adjustments to the registration/profile, where users could gain Talers for filling in various profile information (profile picture, setting up a strong password, and more).
• Implemented an online chat for a financial expert to enter and interact with various users who ask him questions. The chat history was completely stored to be accessible for those who could attend.
• Extended Adform tracking for various user actions like entering the chat, voting for an idea, and others.
2004 - 2011

Master's Degree in Business Informatics

University of Economics in Bratislava - Bratislava, Slovakia

Libraries/APIs

Facebook API, jQuery, Jenkins Pipeline, Jenkins Job DSL

Tools

Git, Composer, Solr, Apache, NGINX, Vagrant, Chef, PhpStorm, Selenium Remote Control (RC), Let's Encrypt, Jenkins, Varnish, XHProf, Travis CI, Logstash, Kibana, Docker Compose, Behat, BackstopJS, YouTrack, CircleCI

Languages

PHP, JavaScript, Bash, Ruby, HTML, CSS, Python, GraphQL

Storage

MySQL, Elasticsearch, Memcached, CouchDB

Platforms

Drupal 7, Drupal 8, Linux, MacOS, Drupal 6, Platform.sh, Drupal, Acquia Cloud, Apache2, Docker

Frameworks

Symfony, PHPUnit, Symfony 2, AngularJS

Paradigms

Agile, REST

Other

Prerender.io, RSS Feeds, Back-end, Back-end Development, Cloudflare, Networking, Drupal 9, DDEV

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