
Radoslav Terezka
Verified Expert in Engineering
Software Developer
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
Experience
- PHP - 16 years
- MySQL - 16 years
- Linux - 11 years
- NGINX - 10 years
- Composer - 9 years
- Drupal 8 - 9 years
- Solr - 4 years
- Chef - 2 years
Availability
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
HBF, s.r.o.
- Focused on core back-end development, including architectural solutions.
- Worked on multiple 3rd-party API integrations, including Salesforce and Dynamics 365.
- Implemented several different full-text searches based on the client's needs.
- Performed a dozen of Drupal 10 upgrades on complex sites.
- Set up a dockerized local development workflow using the DDEV tool.
- Worked on deployment pipelines using GitLab for dockerized applications.
- Performed custom deployment for a specific client by using Ansible Playbooks.
- Focused on various bash scripts to fully initialize fresh new projects, including Drupal installation with a custom profile, repo configuration, setting up GitLab Runner, and the whole deployment workflow.
- Contributed to other bash scripts for synchronization between production, staging, and a local environment.
- Updated a GraphQL module from version 3.x to 4.x by completely refactoring the schema and all the resolvers.
Senior Software Engineer (Drupal-focused)
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.
Senior Software Engineer (Drupal-focused)
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.
Drupal Developer | DevOps | Solution Architect
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.
PHP Developer
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.
Drupal 6 Developer
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.
Experience
SPP Storage
https://sppstorage.cz/Carl F. Bucherer
https://www.carl-f-bucherer.com/RADO Services
https://service.rado.com/Lettres du Brassus
https://lettresdubrassus.blancpain.comJobiqo
https://jobiqo.com/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
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
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
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/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
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
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
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
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.
Education
Master's Degree in Business Informatics
University of Economics in Bratislava - Bratislava, Slovakia
Skills
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, GitLab, Ansible
Languages
PHP, JavaScript, Bash, Ruby, HTML, CSS, Python, GraphQL, Python 3
Platforms
Drupal 7, Drupal 8, Drupal, Drupal 9, Drupal 10, Linux, MacOS, Drupal 6, Platform.sh, Acquia Cloud, Apache2, Docker, Mailgun, Salesforce
Storage
MySQL, Elasticsearch, Memcached, CouchDB, Redis
Frameworks
Symfony, PHPUnit, Symfony 2, AngularJS
Paradigms
Agile, REST
Other
Prerender.io, RSS Feeds, Back-end, Back-end Development, Cloudflare, Networking, DDEV, APIs, Dynamics CRM 365, Data Migration, OAuth, Outlook
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring