DITA production development (CakePHP)

A document production web application

25 Mar 2018

Software Developer, Leadership
PHP, CakePHP, MVC, MySQL, jQuery, Ant, SOAP, REST, RTC, Agile, Support, Training

From 2011 to 2017, I was on small team that developed and maintained the documentation production environment for products in the Analytics, Commerce, and Systems groups.

The Vanguard build page

From 2015 to 2017, I led the team of 3 developers and 5 other contributors, releasing refreshes every few weeks to keep up with the changes in corporate documentation management strategies.

A colleague started and initially led the group. Previously, he contributed to the documentation build and test system I had set up for our particular product. When he left the product team he was able to rally support and work on this common production system for the entire lab.

He invited me to help develop the new system, which I had done part-time until mid-2015 when I then led the team. Before becoming lead, my major contribution to the system was the translation component, from packaging and sending to receiving and testing to deployment.

The Vanguard build page

The system was a web app built on the CakePHP 1.3 MVC framework, which users interacted with to kick off build and packaging jobs that were queued up in the database and run by Jenkins. Each job was defined by the web app as a custom Ant script, which drove the back end processes for our corporate documentation build processes. The web app also automated the creation and control of documentation review servers, received communication from the central translation application for package shipment and receipt, and semi-automated the processing of returned translation packages for easier in-country testing.

My most recent major development contributions were:

  • Mentoring an intern as she contributed many items to the project, such as a front-end page to display the UI that takes advantage of the APIs below to better present available package content choices to users. The page enabled them to define many packages at once rather than one at a time.

  • A SOAP API to request and receive data from the central translation planning system, to more effectively drive the automated workflow used for local planning, processing of packages, and testing.

  • A basic REST API to enable our new additional translation servers to communicate with our main translation server

  • The automated workflow that ensures the correct server handles the translation request.

  • An installable package of the system for distribution to teams in other organizations. This work also contributed to my streamlining of the update process on our own five servers, easing our more frequent deployments.