Jeffrey A. Dettmann, Developer in Washington, DC, United States
Jeffrey is available for hire
Hire Jeffrey

Jeffrey A. Dettmann

Verified Expert  in Engineering

Bio

Jeff has broad experience using multiple technical stacks. Where he excels is data migration, ETL, and resolving difficult problems, like debugging unfamiliar applications and integrating systems designed to work standalone. While Jeff began working in technology in a university setting, he also has experience working in companies—both small and large.

Portfolio

Spin
Ruby on Rails (RoR), Adyen Payments, Docker, Stripe API, TeamCity, VCR, Git...
NexHealth
Ruby on Rails (RoR), Ruby, Python, Bash
Rosetta Stone
MongoDB, CouchDB, MySQL, Python, R, Ruby on Rails (RoR), Ruby...

Experience

Availability

Part-time

Preferred Environment

Linux Mint, Ubuntu, Git, Emacs

The most amazing...

...integration I've orchestrated involved two outside vendors, two internal departments, and three software development teams.

Work Experience

RoR Developer

2020 - 2020
Spin
  • Refactored an application to accept multiple payment processors. The existing system was hard-coded to use Stripe.
  • Set the update-to-charge feature when available, with seamless fallback on the fail. The initial system charged a client the nominal amount and created a new charge after completing the ride. Updating the existing charge improved the collection rate.
  • Added a Rake task to update VCR cassettes for a test suite associated with the team. The existing application was a monolith, so the task could not impact other teams' processes.
Technologies: Ruby on Rails (RoR), Adyen Payments, Docker, Stripe API, TeamCity, VCR, Git, Test-driven Development (TDD), Scrum, SQL, Bash, JSON, PostgreSQL

Back-end Developer

2019 - 2019
NexHealth
  • Transitioned from using configuration files on a client-hosted Python application to retrieving configuration from the server.
  • Ported the notification logic from Python to Ruby on Rails.
  • Added a duplication check removal for synchronized data from the client's system.
Technologies: Ruby on Rails (RoR), Ruby, Python, Bash

Software Developer

2010 - 2018
Rosetta Stone
  • Converted the content from 69 language learning activity models from two systems into a single one with even models and built the server that hosted these new models.
  • Coordinated the transfer of a scheduling service from a vendor to in-house using a shim server with no downtime and no changes to scheduling service client software.
  • Built a server in R for evaluating courseware efficacy.
  • Developed a performance monitoring system using Splunk.
  • Composed multiple scripts in Python for visualizing software usage statistics.
  • Built and maintained multiple microservices, including authorization, authentication, and content servers.
  • Created a migration tool in Python that made authenticated REST calls to multiple services in order to build new profiles, with associated privileges, in a new application.
  • Developed multiple custom integrations with external vendor systems.
Technologies: MongoDB, CouchDB, MySQL, Python, R, Ruby on Rails (RoR), Ruby, Test-driven Development (TDD), SQL, Git, XSLT, Scrum Master, Bash, JSON

Software Developer

2007 - 2010
Browser Media
  • Customized an open-source content management system for numerous clients.
  • Performed a batch conversion of hundreds of media files to Flash.
  • Coordinated the integration of a CMS with clients' software.
  • Added an Amazon S3 storage module for the CMS, as the previous system stored media files on a server, which was unsuitable for video.
Technologies: Java, Ruby on Rails (RoR), Bash, SQL, Subversion (SVN)

Senior Systems Analyst

2003 - 2006
The University of Texas at Austin
  • Migrated a legacy JCL-generated code to a new system.
  • Constructed a tool to generate the SVG of a directed graph of JCL job queues.
  • Added a secure storage system to an internal storage tool.
  • Developed and maintained mainframe applications using NATURAL and ADABAS.
  • Built the utility to generate testing code for mainframe applications.
Technologies: ADABAS, NATURAL, Java, XML, XSLT

Migration of a Scheduling System

We were moving from a vendor's system of scheduling tutors to an internal tool. This system was used by applications in two separate branches of the organization.

I built a reverse proxy for the service and had all client's applications point to it instead of the vendor service. Then, I began converting the calls so that the proxy would write to both scheduling services while reading from the vendor service. By implementing this process, I could synchronize the data in both scheduling services without any downtime.

After the full data synchronization, I reconfigured the service to read from the service and convert the results to match the API of the vendor service. At this point, the development teams from both departments were able to integrate with the new service when they wanted while maintaining full uptime and data integrity.

Debugging the Degradation of a Service

Our app users were encountering a degraded experience, and I tracked down the cause: increased latency in the logging of a vendor's back-end service. Through historical data found in MongoDB, I discovered that logins took less than ten seconds on average before the degradation, and afterward, they took more than 20 seconds.

Faced with the data, the vendor agreed that the problem was on their end and rebooted their servers, which temporarily addressed the issue. I set up a script to monitor the average login latency of the service, and thereby we noticed degradation before users started complaining and would then ask the vendor to reboot.

Data Visualization of Skipped Activities

One of our apps presented users with activities designed to improve their performance on specific tasks. Users were allowed to skip an activity if they did not want to do it, and if they skipped three in a row, they left that set of exercises altogether.

I developed a visualization of the skipping patterns that showed how the method of selecting the next activity exacerbated user frustration and increased the likelihood of skipping out of the section altogether. My work led to a correction in the algorithm that selected activities for users.

Reversible Data Migration

Our organization was moving from a vendor tool to an in-house device with a different data model. I built a service that allowed users to convert their data into discrete units from one model to another. The service first ran heuristics on the existing data to show how cleanly the conversion would go, allowing owners of the data to choose which parts of the conversion to do first.

For the most part, the migration was seamless, but on occasion, the converted data would need to be manually validated and potentially altered to continue desired behavior. This process was completely reversible, so if the conversion went too far, the owners could go back to using the old system while determining their best path forward.

SVG Representation of a Dependency Graph

One of our tools ran batch jobs based on a set of conditions. The successful completion of a job could kick off another job, while its failure could trigger a different job altogether.

The data model for these job networks was a collection of nodes and edges that were bound together by a common naming standard. So one record would say: "A triggers B on success," and another record would say: "B triggers C on success." The system would know by the names A, B, and C that they were all part of the same job network.

My task was to take these collections of nodes and edges and render a directed graph in SVG so that users could easily visualize the dependencies of their job network.
1996 - 2002

PhD Degree in History

University of Texas, Austin - Austin, TX, USA

1986 - 1990

Bachelor of Arts Degree in Geography

University of Chicago - Chicago, IL, USA

Libraries/APIs

Ruby on Rails API, Matplotlib, Pandas, FFmpeg, ImageMagick, PIL, Stripe API

Tools

Emacs, Vim Text Editor, RSpec, RuboCop, RabbitMQ, Git, Subversion (SVN), Perforce, Jenkins, Splunk, Adyen Payments, TeamCity, VCR, DataViz

Frameworks

Ruby on Rails (RoR), Scaled Agile Framework (SAFe), RStudio Shiny

Languages

SQL, Ruby, Python, Java, NATURAL, R, Bash, XSLT, XPath, XML

Storage

MySQL, ADABAS, Amazon S3 (AWS S3), CouchDB, MongoDB, JSON, PostgreSQL

Paradigms

Scrum, Test-driven Development (TDD), ETL Implementation & Design, ETL

Platforms

RStudio, Linux Mint, Ubuntu, Docker

Other

RSync, Pdf2xml, Tesseract, APIs, SVG, Scrum Master

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring