Jonathan Lynch, Developer in Morgantown, WV, United States
Jonathan is available for hire
Hire Jonathan

Jonathan Lynch

Verified Expert  in Engineering

LDAP Developer

Location
Morgantown, WV, United States
Toptal Member Since
August 30, 2017

Jonathan has been working in automation and infrastructure his entire career. His experience in a number of technologies enables him to go above and beyond in every job he’s taken.

Portfolio

Tenable, Inc
Bamboo, Systemd, Microservices, Kubernetes, Docker
WVNET
BigBlueButton, NGINX, Apache, Bash, Blackboard, Apache Tomcat, Puppet, VMware...

Experience

Availability

Part-time

Preferred Environment

Git, Vim Text Editor, Linux

The most amazing...

...project I worked on was a backwards-engineered integration engine between two related products. So many moving parts!

Work Experience

Sr. Software Developer

2017 - PRESENT
Tenable, Inc
  • Contributed to critical cross-platform cloud migration.
Technologies: Bamboo, Systemd, Microservices, Kubernetes, Docker

Systems Programmer Lead

2013 - 2017
WVNET
  • Rolled out new streaming and web conferencing services to meet client demand.
  • Spearheaded puppet deployment across linux infrastructure.
  • Created custom Nagios alerts to support software as needed.
  • Built custom man-in-the-middle server in Python to work around issue with vendor software.
  • Developed custom academic crisis early warning system for teachers.
  • Maintained Blackboard Learn (Tomcat+Oracle) for over a dozen state community colleges.
  • Developed custom LDAP authentication method for Banner using PL/SQL.
Technologies: BigBlueButton, NGINX, Apache, Bash, Blackboard, Apache Tomcat, Puppet, VMware, Linux

Consultant / Webmaster

2012 - 2016
Canadian Institutional Research and Planning Association
  • Maintained website cirpa-acpri.ca for customer on per-request basis.
  • Oversaw transition to Drupal from previous website.
  • Implemented online payment gateway, mail system, election system, and conference organizing distribution.
  • Created conference archival process to record institutional history.
  • Developed membership tracking system.
Technologies: MySQL, Drupal, PHP

Systems Integrator

2008 - 2013
Fairmont State University
  • Maintained Blackboard Vista (weblogic) cluster and Oracle database.
  • Developed custom integration platform between Banner and Blackboard.
  • Re-wrote print audit infrastructure, automating three people's jobs.
  • Oversaw transition to Blackboard Learn, providing key debugging and systems programming support.
  • Served as 'linux guy' for applications & networking teams.
Technologies: PL/SQL, Bash, Oracle, Apache Tomcat

Research Assistant

2008 - 2008
West Virginia University
  • Oversaw server management, log collection, data storage, virtualization, and data analysis.
  • Created and managed honeynets.
  • Researched web security and vulnerabilities.
Technologies: Honeynet, Syslog, VMware, Python, Bash

Systems Tech

2005 - 2007
West Virginia University
  • Remotely managed 50+ servers and 100+ dual-boot desktop machines.
  • Contributed to custom-developed linux-based deployment system.
  • Oversaw network infrastructure, revision control, issue tracking, and SPAM filtering.
Technologies: Debian Packaging, Ubuntu, Python, Bash

Notejam Mini Database Conversion Driver

To enable the Notejam application to use MySQL in dev while still using SQLite in test, I wrote a mini conversion driver that made the same object compatible with either database. This reduced code duplication (and was also fun).

var settings = require('./settings');
if(settings.env == "dev") {
var db = require('mysql').createConnection(settings.dsn);
// mini sqlite -> mysql conversion driver
db.run = function (sql, params, cb) {
sql = sql.replace("AUTOINCREMENT", "AUTO_INCREMENT");
sql = sql.replace(/default current_timestamp/g, "timestamp default current_timestamp");
references = /,([a-z_]+) ([A-Z ]+) REFERENCES ([a-z(]+\))/g;
foreignkeys = [];
while(match = references.exec(sql)) {
foreignkeys.push("FOREIGN KEY (" + match[1] + ") REFERENCES " + match[3]);
}
if(foreignkeys.length > 0) {
sql = sql.replace(/REFERENCES [a-z(]+\)/g, "");
sql = sql.replace(");", "," + foreignkeys.join(',') + ");");
}
this.query(sql, params, cb);
};
db.close = function (err) {
this.end(err);
};
}
else
var db = new sqlite3.Database(settings.db);

Syslogipy

https://github.com/jimethn/syslogipy
An old script I put together to help centralized logging. Some applications don't play nice with syslogd, so I wrote a Python program that can "syslog-ify" any application. The first thing I pointed it at was an oracle database, which likes to spit out a separate trace file for every event.

Languages

Bash, Python, Java, PHP, CSS, HTML, C++, SQL, JavaScript

Platforms

Linux, Oracle, Blackboard, BigBlueButton, Ubuntu, Docker, Kubernetes, Amazon Web Services (AWS), Drupal

Other

Linux Administration, Linux Server Administration, Learning Management Systems (LMS), Debian Packaging, Honeynet, LDAP, F5 Networks, Networks

Tools

Apache Tomcat, Puppet, Vim Text Editor, Git, Apache, NGINX, Syslog, Systemd, Bamboo, VMware vSphere, VMware, AWS CloudFormation, Vagrant, Nagios

Storage

PL/SQL, Hiera, LVM, MySQL

Libraries/APIs

Node.js, jQuery

Paradigms

Microservices

2004 - 2008

Bachelor's Degree in Computer Science

West Virginia University - West Virginia

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