Skip to main content
Home

Main navigation

  • Home
  • Recent projects
  • Resume
  • Contact

Main navigation

  • Home
  • Recent projects
  • Resume
  • Contact

Recent projects

Some projects I've worked on over the last few years, to give some sense of the kind of engagements I generally handle. Please contact me for more info!

Associated Chamber Music Players (acmp.net): A site that allows members to find other members to perform with, search archives of sheet music, etc. My responsibility was focused on very extensive Views work (including a lot of views query alters to implement some business logic not possible through the Views UI), overhauling the Features setup across the site, troubleshooting a lot of custom entity_presave behavior, and implementing and troubleshooting complex, highly interrelated migrations from an old proprietary MySQL database.

Drupal 8: While most of my current client base is still on Drupal 7, I’ve worked on 3 or 4 different D8 projects, implementing configuration management best practices, writing a few custom modules (a text filter, some Twig preprocess functions, and some migration extensions), and doing Twig theming.

Dove Lewis Veterinary Training (atdove.org): This is a site that provides continuing education to veterinarians, technicians, and other vet staff. I did a very extensive content/logic migration from a proprietary Java-based system to Drupal 7, writing a lot of preprocessing SQL scripts to retain all the existing data relationships (keyed by UUIDs). I also wrote a module that grants CE certificates based on user accomplishments and quiz scores, and builds those certs out as customized PDF files. Finally, I built another custom module to allow inviting users to join a group (Organic Groups integration), or transfer their membership from one OG to another.

Aspen Global Change Initiative: I was brought on to fix some outstanding pre-launch issues on this non-profit climate change organization's Web site. These ranged from building some elaborate views templates, to SearchAPI/Solr configuration, to an extensive RedHen CRM/registration setup allowing scientists to register for events. I didn't handle the initial buildout or theming of the site; mainly a lot of exploiting hooks in a utility module, and a lot of jQuery tweaks to attain the desired user interface. Also helped sort out some devops/deployment issues.

AGCI energy sandbox tool: I’m pretty pleased with how this turned out. This is a somewhat complex simulation that allows users to manipulate a number of variables in global energy production and consumption, to see how these changes might affect total budget and carbon footprint. All statistical values for the simulation are read from a Google sheet, and can be freely modified by administrative users. I implemented this as a Drupal module, and wrote both the back-end functionality that loads data and instantiates the tool, and the front end Javascript that builds the sliders and graphs, and updates everything based on user inputs. https://www.agci.org/solutions/energy-tool

Major chipmaker: Basically handling a lot of small tickets on this very large, very customized project with over 400 modules and *many* core hacks. Generally being asked to look into some PHP notice, looking it up in Splunk (logging-as-a-service), taking steps to replicate on local instance, catching or otherwise resolving the error, creating a patch, pushing changes to a new branch, and issuing a pull request against my branch. Nothing very sexy, just a lot of working with a large team on heavily customized code, and a lot of Git rebasing, etc.

Bushwacker (http://bushwacker.com): I inherited this as a partially working prototype from an agency that went out of business, and spent about 15 months bringing it to completion as the sole developer (front- and back-end). This was a deceptively complex job, since approximately 95% of the content needed to be dynamically imported and rebuilt from a proprietary closed system every couple of months. I ended up developing a custom import solution, where admin users upload a third-party SQL dump (which gets converted into prefixed tables and attached to the main Drupal db), an XML file, which the module parses and converts to a MySQL table, an oddball pipe-delimited export from the proprietary system, and a half-dozen CSVs. Taxonomy is dynamically rebuilt to cover all car year-make-model combinations, and apply those terms to the relevant products.

Academic Senates of the California Community Colleges (http://asccc.org): This was another inherited site: the client presented with a very broken Drupal 6 implementation that used several dozen imported MS Access tables with foreign key associations to Drupal nodes and to each other. The site used a "wrapper" module that prevented anything from being cached, and additionally had a number of security holes which had been exploited by spambots. None of the fields were handled as Drupal CCK fields, and every page load required massive joins against the foreign tables.I did an extensive refactoring to bring the site into Drupal 7, using standard Drupal content types, fields, taxonomy, and views, while preserving around 30,000 nodes with associated document files.

Government contractor (name not available): For a Homeland Security-related technology training site, I implemented a large number of customizations across a Drupal 6 instance (work still ongoing). The most interesting of these was a module to collect and aggregate the actual time that users spent interacting with the site, since overtime would be paid out based on that time spent. I forked the Autologout module, and wrote a new module to interact with it on hook_cron and capture user session data. Users would be logged out after a certain period of inactivity, with logout times backdated to 5 minutes after their last activity. Those session data were then aggregated with an SQL view and exposed to Views for reporting.

Roseburg Forest Products (work not viewable): I led a small team of developers to build a D7 and Drupal Commerce site for Roseburg (through an agency). While I provided direction and code reviews for the whole project, my own coding efforts focused on developing a custom module to integrate a SugarCRM instance with the Drupal site. I extended the SugarCRM API to regularly update Drupal user accounts based on changes on the Sugar site, and pushed Drupal changes back into Sugar, to allow real concurrency between the two (data conflicts were resolved based on user role and timestamp). After I completed my work on the site (approx. 6 mos.), the project was pulled due to lack of funding and never went live.

Copyright 2018 by Jeff Ong, ONGdesign

Footer menu

  • Contact