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

Jeffrey A. Dettmann

Verified Expert  in Engineering

Software Developer

Location
Washington, DC, United States
Toptal Member Since
September 23, 2019

Jeff has broad experience using multiple technical stacks. Where he excels is data migration, ETL, and resolving difficult problems, 例如调试不熟悉的应用程序和集成设计为独立工作的系统. 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.
  • 在可用时设置更新到收费功能,并在故障时无缝回退. 最初的系统向客户收取象征性的费用,并在完成乘车后产生新的费用. Updating the existing charge improved the collection rate.
  • 添加了一个Rake任务来更新与团队相关的测试套件的VCR磁带. 现有的应用程序是一个整体,因此该任务不能影响其他团队的流程.
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
  • 从在客户机托管的Python应用程序上使用配置文件过渡到从服务器检索配置.
  • Ported the notification logic from Python to Ruby on Rails.
  • 增加了从客户端系统中删除同步数据的重复检查.
Technologies: Ruby on Rails (RoR), Ruby, Python, Bash

Software Developer

2010 - 2018
Rosetta Stone
  • 将69个语言学习活动模型的内容从两个系统转换为具有偶数模型的单个系统,并构建托管这些新模型的服务器.
  • 使用shim服务器协调将调度服务从供应商转移到内部,没有停机时间,也没有更改调度服务客户端软件.
  • Built a server in R for evaluating courseware efficacy.
  • Developed a performance monitoring system using Splunk.
  • 用Python编写多个脚本,用于可视化软件使用统计.
  • Built and maintained multiple microservices, including authorization, authentication, and content servers.
  • 在Python中创建了一个迁移工具,该工具对多个服务进行经过身份验证的REST调用,以构建新的配置文件, with associated privileges, in a new application.
  • 开发与外部供应商系统的多个定制集成.
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
  • 为众多客户定制开源内容管理系统.
  • 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.
技术: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.
  • 构造了一个工具来生成JCL作业队列有向图的SVG.
  • Added a secure storage system to an internal storage tool.
  • 使用NATURAL和ADABAS开发和维护大型机应用程序.
  • 构建实用程序以生成大型机应用程序的测试代码.
Technologies: ADABAS, NATURAL, Java, XML, XSLT

Migration of a Scheduling System

我们正在从供应商的安排导师的系统转向内部工具. 该系统由该组织的两个独立分支的应用程序使用.

我为该服务构建了一个反向代理,并让所有客户端应用程序都指向它,而不是指向供应商服务. Then, 我开始转换调用,以便代理在从供应商服务读取数据的同时写入两个调度服务. By implementing this process, 我可以同步两个调度服务中的数据,而不需要任何停机时间.

After the full data synchronization, 我重新配置了服务,以便从服务中读取数据,并将结果转换为与供应商服务的API相匹配. At this point, 两个部门的开发团队都能够在他们需要的时候集成新服务,同时保持完整的正常运行时间和数据完整性.

Debugging the Degradation of a Service

Our app users were encountering a degraded experience, 我找到了原因:供应商后端服务的日志记录延迟增加. Through historical data found in MongoDB, 我发现登录在降级前平均花费不到10秒的时间, and afterward, they took more than 20 seconds.

Faced with the data, 供应商同意问题出在他们这边,并重新启动了他们的服务器, which temporarily addressed the issue. 我设置了一个脚本来监控服务的平均登录延迟, 因此,在用户开始抱怨并要求供应商重新启动之前,我们就注意到了性能下降.

Data Visualization of Skipped Activities

我们的一个应用程序向用户展示了旨在提高他们在特定任务中的表现的活动. 如果用户不想做某项活动,可以跳过它, and if they skipped three in a row, they left that set of exercises altogether.

我开发了一个跳转模式的可视化图,显示了选择下一个活动的方法如何加剧了用户的挫败感,并增加了完全跳过该部分的可能性. 我的工作导致了为用户选择活动的算法的修正.

Reversible Data Migration

我们的组织正在从供应商的工具转移到具有不同数据模型的内部设备. 我建立了一个服务,允许用户将他们的数据转换成从一个模型到另一个模型的离散单元. 该服务首先在现有数据上运行启发式算法,以显示转换的清晰程度, 允许数据所有者选择首先执行转换的哪个部分.

For the most part, the migration was seamless, but on occasion, 转换后的数据需要手动验证,并可能进行修改以继续所需的行为. This process was completely reversible, so if the conversion went too far, 业主可以回到使用旧系统,同时确定他们的最佳前进道路.

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.

这些作业网络的数据模型是节点和边的集合,这些节点和边通过通用命名标准绑定在一起. So one record would say: "A triggers B on success," and another record would say: "B triggers C on success.“系统会通过名字A、B和C知道他们都是同一个工作网络的一部分.

我的任务是获取这些节点和边的集合,并在SVG中呈现有向图,以便用户可以轻松地可视化其作业网络的依赖关系.

Frameworks

Ruby on Rails (RoR),缩放敏捷框架(SAFe), RStudio Shiny

Languages

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

Libraries/APIs

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

Storage

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

Tools

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

Paradigms

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

Platforms

RStudio, Linux Mint, Ubuntu, Docker

Other

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

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