2015 – 2017
Drupal.org: jbhovik. WordPress.org: jbhovik. Magento.com: jbhovik. Over 650 commits across projects.
Wrote the first iteration of the “Settings” portion of the Drupal 8 module in three months as an intern, having no previous PHP or Drupal experience.
Wrote API error and Advanced Custom Fields code for the WordPress plugin.
Lead developer for the Drupal 7 module (used by 30+ Lingotek clients) and Magento 2 extension.
Added Drupal 7 translation support for groups, paragraphs, file entities, menu entities, and many others.
Wrote suites of Selenium tests for Drupal 7 and 8 using Behave and Python. Wrote the Drupal 8 tests in a week.
Wrote Lingotek’s Magento 2 extension (with no previous Magento experience) in six months while maintaining the Drupal 7 module.
Compiled a Docker image using Docker Compose to showcase Magento 2 connector.
Refactored large SQL queries resulting in 50% faster page loads within Drupal 7 module.
Spun up 20+ client site dumps locally to test module compatibility, using mostly Apache and Linux.
Delivered written and spoken reports after week-long site audits to companies like HPe, BlueJeans, WatchGuard, and Travelopia.
Participated in numerous diverse client calls with Lingotek technical account managers to help troubleshoot and resolve problems.
Supplied countless software solutions to clients, many being delivered same day.
Performed upwards of 40+ interviews with prospective team members.
Wrote a utility to recursively discover Drupal node entity references and correct translated node entity references.
2018 – 2020
Joined Lingotek’s core platform team January 2018 (One million-line codebase).
Converted Lingotek’s Terminology UI section from JSPs to Vue.js in three weeks having no previous Vue.js experience.
Inherited Lingotek’s Linguistic Quality Evaluation app which was written in Scala (I had no previous Scala experience), the PLAY framework, and Angular JS. Maintained the project by committing bug fixes and feature improvements. I also added the batch files to run the quality app in Lingotek’s local developer environment.
Helped write Lingotek’s Terminology system as a micro service using Java, Maven, Jersey, Jetty, Cassandra, and Solr. Revamped the UI again using Vue.js.
Wrote multi-threaded Java scripts verifying data integrity for a 360-million record Cassandra migration for Lingotek’s Terminology and Translation Memory systems.
Installed the Lingotek development environment on an extra stand-alone computer so our project owners and managers can demonstrate new features and validate bug fixes.
Converted Lingotek’s Translation Management System upload, update, and download actions from synchronous to asynchronous to prepare for new Adobe InDesign translation feature. Also changed the API integration tests to use the same.
Helped write and test an industry-leading feature to translate and download native InDesign files and packages using Lingotek’s Translation Management System, including a in-context live preview. Used Java, Apache Struts, Vue.js, and Adobe Extendscript (yes, Extendscript). I also wrote the PostgreSQL Flyway migration for the InDesign server instances.
Inherited Lingotek’s Client Portal project, which was written with Laravel and Angular JS. I worked on it for about a month, cleaning up the code and providing bug fixes. I also converted the upload and download actions from synchronous to asynchronous. I injected a Vue component in the Angular JS codebase and manipulated Webpack to run a progress widget.
Helped test Lingotek’s newly created Translation Memory micro service. (Maven, Jersey, Jetty, Cassandra 3, and Solr 7) Wrote API integration tests using PyTest for said micro service. I also tested a Solr migration and reindexing script after the new TM micro service was deployed.
Added new RESTful endpoints and DAOs to Lingotek’s public API, as needed to implement new features.
Helped write and test a major feature change to Lingotek’s Translation Management System enabling users to select different versions of Okapi (https://okapiframework.org) for string segmentation. I helped write a command-pattern set of pipeline steps for uploading, updating, and downloading InDesign file types. I also tested Lingotek’s WordPress, Drupal 8, Drupal 7, and Magento connectors locally against the new feature.
Added new feature enabling the bulk editing of translation memories and wrote a new algorithm to apply format tags intelligently (new positions or not applying tags) to newly edited translation memories. The feature also included a case-sensitive find and replace function using Solr, complete with search-phrase highlighting.
Wrote a new Translation Profiles section of Lingotek’s Translation Management System using JSPs and Javascript. This feature was written quite quickly as it was needed for a lucrative new client account.
Helped write an industry-leading feature translating SRT (subtitle rip files) that included live playback of video containing translated SRT subtitles.
Developed a fully working, proof-of-concept suite of solutions for in-context translation of Microsoft Office files (docx, pptx, xlsx) using Mammoth.js, Aspose, Jodconverter, Apache POI, Docx4j, and other offerings.
Added Okapi’s newest version (1.40) to Lingotek’s platform. Since we have the previously mentioned modular design, adding a new version of Okapi was easy.
Wrote backend migrations to facilitate a frontend rewrite of Lingotek’s Translation Quality app. This was a pretty big effort.