Active member of HighWire's research and development group whose goals are to keep HighWire's technology relevant, efficient, and prepared for the future.
- Responsible for Product Development on HighWire’s Core SAAS Publishing Platform and DevOps deployment system.
- Contributing engineer to HighWire's new flagship scholarly publishing product Scolaris 3 on Drupal 8. Technologies include Drupal, Elasticsearch, Cassandra, Docker, Kafka and Golang. Developed to be service/micro-service oriented.
- Developed Drupal profile and composer installation for Scolaris 3 platform, allowing us to quickly spin up fresh sites for additional clients.
- Lead engineer on launch of second site using new Scolaris 3 product for McGraw-Hill Education https://www.accessengineeringlibrary.com which hosts over 700 books, totaling over 560,000 individual content items.
- Managed and implemented JCore migration from PHP 5.3 to 7.3. Including review of all contrib modules, platform modules, and custom publisher specific code bases in order to ensure compatibility with PHP 7.3.
- Introduced and developed generic dataLayer object for our Drupal sites in order to provide any and all 3rd party services our clients use to easily access relevant page, content and user data.
- Leveraged DevOps framework to facilitate the migration and testing of core data center operations to a new managed hosting facility. More than 2200 virtual machines were moved in under 4 hours with less than 1 minute of downtime.
- Developed library for validating content loading for Scolaris 3 platform sites. Includes auditing content loaded into Drupal against our content store, content indexed in Solr against our Drupal database as well as our content store, and simplified debugging for the automated content update process. Saved countless hours of QA time and investigations from engineering. With 500K+ items in a single site, even a single missing piece of content either form Drupal or search is unacceptable.
- Technical escalation point for internal/external issues for multiple departments. Including R&D, QA, support, professional services and systems.
- Sprint/Release manager for over a year. Keeping tickets, branching, PRs, merging code and regression testing details organized for the team.
- Implemented GitHub projects for more organized tracking of PRs, code reviews and release management.
- Work closely with product managers to provide details for release noted on our Drupal products each sprint.
- Training and support for newly integrated overseas team, as well as providing critical business insights for new management.
- Primary contributor to all internal Drupal related documentation.
Lead Developer on HighWire’s Professional Services Deployment and Site Building Team. Responsible for building complex sites for multi-million dollar customers working alongside Project Management, QA, and development teams in a client-facing role. Responsible for onboarding new developers to minimize ramp-up and maximize delivery. Primary role included building Drupal websites at a consistently increasing scale, while maintaining a focus on performance and stability.
- Continued work on JCore, HighWires most successful product. Platform is now running 700+ websites with traffic 15M unique visitors per month across those sites.
- Improved performance by leveraging tools such as XHProf as well as Pingdom website speed test in order to find bottlenecks and resolve them.
- Achieved 99.96% up time for 5 consecutive years across 700 customer sites in collaboration with our systems team.
- Contributed to DevOps framework utilizing Jenkins, Drupal, and Ruby for managing configurations and code deployments for 700+ websites. Over 100 employees in 2020 are still using this product.
- Continued enhancement of JCore platform to handle complex configurations of scholarly digital products.
- Development of custom modules for supporting new features and API integrations added to the JCore platform.
- Supported and implemented advertising campaigns for most all of our clients. Became well versed in Google DFP in order to help assist clients in complex campaign configuration and implementation. This primarily had to do with complex targeting rules. This opened up a new revenue stream for HighWire.
- Built a library of tools to support the creation of 900+ websites scoped to be built within a years amount of time.
- Contributed insights and development of an automated site configuration update tool called Autobot. Which ingests customer supplied XML files to apply updated configuration to client websites in real time.
- Technical escalation point for internal/external issues in 700+ websites.
- Provided Drupal application support to a team of 10+ developers as well as managed US remote and offshore teams.
- PR review for all of our Drupal projects.
Selected to be on a team whose focus was re-architecting Stanford's flagship scholarly journal product in Drupal 7, JCore.
- Built the first 7 client sites for American Physiological Society and fine tuned our process for managing groups of client websites.
- Built installation profile for quickly and easy installation of JCore platform.
- Built a library of PHP and shell script for managing deployments of site code to various environments, migrating sites from environment to environment as well as making copies of sites for separate dev workflows.
- We started with 7, within 1 year I had built and configured ~35. Set forth a plan on scaling the build process to hit 100 JCore sites within the next year, and 700 over the next 2 years.
- Implemented shared 'publisher/client' Drupal code repositories to reduce support and ongoing maintenance of large groups of sites.
- Supported ongoing updates/bug fixes/maintenance for all Drupal sites running on JCore in this first year.
- Worked with content store that holds 6+ petabytes of data.
- Provided Drupal application support to offshore team of 25 developers.
- Practice Agile and SCRUM methodologies.
- Placed on the Outsells top 10 companies to watch for 2013.
- Self-started with freelance development opportunities focusing on HTML, CSS and PHP.
- Worked on personal project creating an eCommerce Drupal website for selling stickers/decals I designed and created for macbook laptops.
- Worked on several Drupal projects for a handful of organizations and clients fully remotely.
From initial site setup to launch I was involved every step of the process in bringing https://accessengineeringlibrary.com online. One of the most unique aspects of the Scolaris 3 platform is that it does not actually store content field data in the Drupal database, other than the title. Node data is fetched on the fly from Elasticsearch index then cached. Allowing the Scolaris 3 platform to scale up enormously while keeping Drupal database footprints minimal.
- Second website to be launched on HighWire's new Scolaris 3 product.
- Lead engineer on multi-million dollar project.
- 700+ books totaling 560,000+ pieces of content.
- Content loading validation and auditing.
- Highly customized Solr search boosting implementation.
- Behat testing for Solr search ordering based on specific boost values provided by MHE with their taxonomy terms.
- Integrated with 35+ services/micro-services.
While working for HighWire Press, we took on all of BMJs (British Medical Journals) journal sites, roughly 70 of them. They wanted to be able to reconfigure sites at will as well as bring up new sites when new journals were created. Our solution was to build a custom config management system we call Autobot. We built Autobot using Drupal 7.
- Takes customer supplied configuration in XML, saves it as a drupal node with individual fields for the 50+ XML elements. We then use Drupal services to render the node as json via predictable endpoint on the site.
- BMJs journal sites, satellites, contain a custom written Drupal module which makes requests to the Autobot endpoint using a unique site code in order to grab the relevant json and write it to file. The site can then leverage this data as configuration various various modules and functions.
- This allows publishers to change configuration at will, without affecting features or our standard development workflows and deployments.
- One specific Autobot project that stands out in my mind, Sage Journals, was to take a single xml file which contained 1000+ individual site configurations (1000+ sites, each with a multitude of configs) and break that down into individual files containing single site configurations. The goal was to identify individual site config changes in order to update individual sites when this file was resupplied. The client may deliver it once a day, or dozens of times per day. If only 1 or 2 sites out of the 1000+ had updated config, I only wanted to update those 1 or 2 sites… not all 1000+. I chose python for this file parsing after bench testing a variety of languages and found it to be the most efficient. Bash took 45 minutes or so to split the file into individual files, compare the new individual site configurations to existing files, and overwrite files which had changed, while Python could do this in less than 2 minutes. The end to end process of ‘client provides file (ftp upload)’ to ‘production site(s) are updated’ took approximately 5 minutes. This whole process was also fully automated, requiring 0 input from developers or managers from end to end once in place.
Below are a handful of projects worth highlighting as they've held great importance to my employers strategies, revenue and goals over the years.
Springer Publishing: Our first site launched on the Scolaris 3 (D8) platform. Features 500+ books and 70+ journals.
BMJ Journal sites: Lead developer on 73 sites. All running on shared code and leveraging Autobot for configuration variation between the lot. Includes several custom features as well as a custom theme. Running on JCore (D7) platform.
AAN Publications: Lead developer on portal site and 4 journals sites. All sites running on shared code. Includes several custom features as well as a custom theme. Running on JCore (D7) platform.
PMR: Lead developer on our first websites dealing with investment journals. 1 portal site and 14 journals sites. Running on JCore (D7) platform.
JACC: Lead developer on building 8 journal sites on the JCore (D7) platform. Includes custom shared code and a custom theme.
AAP: Contributor to custom portal and 5 journals sites running on the JCore (D7) platform. Worked on theme and custom modules/features.