Education

Masters of Science, Computer Science

Old Dominion University

Thesis: To Relive the Web - A Framework for the Transformation and Archival Replay of Web Pages

Bachelors of Science, Computer Science

Old Dominion University

Minor: Computer Engineering

Experience

JavaScript Developer - IPConfigure, Inc

-

Apart of an Agile engineering team developing Angular/AngularJS hybrid apps for web-based, cross-platform video surveillance and video surveillance management products Orchid Core and Orchid Fusion.

  • Design and development of features and system components with an emphasis on balancing business and technology requirements. (JavaScript, Typescript)
  • Provide time and resource estimates including risk assessment and mitigation strategies
  • Developed Unit Tests via Karma/Jasmine and QA/Integration tests via Testpad
  • Aid in migration off of AngularJS to Angular
  • Triage customer issues
  • Reduced application memory usage by 7.4%
  • Migrated code base from Angular 10 to 12, Webpack 4 to 5, and Typescript 3 to 4
  • Lead on application internationalization (i18n)
  • One of two lead engineers for feature providing the capability to create and view interactive maps displaying video surveillance cameras and their feeds on geographic or indoor maps

Back-End Software Developer - Webrecorder (Remote)

-

Designed, developed, and maintained software projects for Webrecorder a non-profit web archiving service and open-source project anyone can use to save web pages

  • Implemented browser-based Q/A testing framework for determining replayability of web archives and integrated it into CI pipeline (Python, JavaScript)
  • Developed the system used in production for preserving web page assets associated with response design (JavaScript)
  • Developed and designed the web archiving framework for imitating human behavior during preservation used as webrecorder.io's Autopilot feature (Node.js, JavaScript)

  • Developed and designed high-fidelity browser based web crawlers and crawling system specific for web archiving for use by browsertrix (Python, asyncio).
  • Maintained and improved the web archiving replay system, pywb, used by webrecorder.io, perma.cc, UK National Web Archive, and Portuguese Web Archive (Python)
  • Re-wrote pywb's client-side URL rewriting system in order to: ensure the overrides applied to the JavaScript execution environment of the browser conform to web specifications, testable, and performance of modern web pages does not degrade when captured and replayed (JavaScript)
  • Improved pywb's default web interface and improved per-collection search performance

Graduate Research Assistant - Web Science and Digital Libraries Research Group

-

Worked on grant funded software projects (Python, Node.js)

  • Created an open-source Node.js high fidelity, user scriptable, archival crawler that uses Chrome or Chromium with or without a head (Node.js)
  • Created full-stack application that would test the web archiving capabilities of a web archive and or web archiving service / software. (Node.js, JavaScript, React.js)
  • Rewrote and improved a python desktop application for managing personal collections of web archives into a cross-platform Electron & Node.js desktop application (React.js)
  • Maintained and improved WARCreate, a Chrome extension that would create WARC files for any web page (JavaScript)
  • Maintained and improved MINK, a Chrome extension that would indicate if the viewed web page was archived and if the page was not archived provided a means to preserve the page (JavaScript)
  • Wrote eight posts on the groups blog covering own research, conference attendance and presentations, and software project updates (JavaScript)

Software Development Intern - Newport News Shipbuilding

May - August 2014 & 2015

Virtual Carrier Model, USS Gerald R. Ford (CVN 78)
  • Created application to mine databases or data sets to aid in analysis (2015)

  • Updated monitors that checked for implementation dependent conditions during application execution (2015)
  • Designed and built an data set validation API with accompanying Eclipse plugin (2014)

IT Consultant - Capital Consultants Inc

December 1, 2013 - May 5, 2014
  • Provided on call computer support and troubleshooting

  • Upgraded network infrastructure, implemented backup and computer security systems

  • Trained employees on computer software usage and network safety

Technical Skills

Languages

JavaScript (ES6) | Typescript | Python (3.5+) | Bash | Java

Web Technologies & Frameworks

Angular & AngularJS | React.js | Redux | HTML5 | CSS / SCSS | JSON | Webpack | Rollup

Backend

Node.js | Fastify | FastAPI | Redis | REST | Microservices | SQL | MongoDB

Testing & Continuous Integration

Karma/Jasmine | Pytest | MOCHA | AVA | Travis CI | Testpad

Containers

Docker | docker-compose

Version Control

Git | Github

Talks / Presentations

Web Archiving for All with Webrecorder.io

Long talk and workshop at Domains 2019 Conference - Durham North Carolina

Swimming In A Sea Of JavaScript Or How I Learned To Stop Worrying And Love High-Fidelity Replay

Presented at the Web Archiving and Digital Libraries Workshop - University Of North Texas

WAIL

Presented at the IEEE/ACM Joint Conference on Digital Libraries (JCDL) - University Of Toronto

Web Archiving Interface Layer (WAIL)

Talk/Workshop at Personal Digital Archiving (PDA) - Sanford University

Are Wails Electric?

Lightning talk at Archives Unleashed 2.0 Web Archive Hackathon - Library of Congress, Washington DC

Publications

Mohamed Aturban, John A. Berlin, et al. "ArchiveNow: Simplified, Extensible, Multi-Archive Preservation"

In: Proceedings of the 18th IEEE/ACM Joint Conference on Digital Libraries. Fort Worth, Texas, 2018

John A. Berlin, et al. "WAIL: Collection-Based Personal Web Archiving"

In: Proceedings of the 17th IEEE/ACM Joint Conference on Digital Libraries. Toronto, Canada, June 2017

Awards / Recognition