Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
174 lines (139 sloc) 8.58 KB

Paul Sadauskas

Senior Web Application Engineer

Contact Info

Passionate about the craft of creating software

My passion is creating software that is a joy for fellow developers to both use and contribute to. I am motivated to hone my craft of software development, to learn as much as I can about better ways to accomplish complicated tasks, and to build tools that are elegant, robust, and reliable.

Notable Professional Skills

  • Full-Stack Web Application Development
  • Expert in Ruby & Rails
  • Strong background in Unix/Linux DevOps
  • Web APIs/services, ReST, JSON+LD, Hydra
  • Service Oriented Architecture & Distributed systems
  • System Administration & Large-scale deployments, AWS, Heroku, Docker
  • Javascript & ES2016, CSS & SASS, Elm, Ember.js, React & Flux
  • Familiarity with Rust, Go, Haskell, Clojure
  • Open Source Contributor & Maintainer
  • PostgreSQL, Elasticsearch, CouchDB, Riak, MongoDB and other relational and non-relational databases.
  • Proficient at Bash scripting and Unix CLI tooling

Major Open Source Projects

  • Resourceful Co-Creator

    • Implementation of a fully RFC2616-compliant HTTP/1.1 client in Ruby
    • Includes support for advanced features of HTTP, including support for redirects and caching with pluggable backends
    • Used to build other abstractions, such as object mappers for REST/Hypermedia APIs
  • progress_bar Creator

    • A very simple implementation of a CLI progress bar, similar to the output of cURL
    • Mentored contributors to keep their pull requests small, focused, and well-tested
    • It was originally intended primarily for personal use, but is now a dependency of several popular projects
  • DataMapper Core Team

    • Heavily involved in design and implementation of DataMapper, and preparing for release of 1.0
    • Responded to issues and pull requests, and mentored new developers to get involved
    • Redesigned and implemented DataMapper Adapters interface
    • Designed and implemented Migrations plugin
  • Merb Contributor

    • Heavily involved in design and implementation of Merb, preparing for release of 1.0
    • Implemented support for conditional GET requests (304 response/Etag)
    • Implemented correct handling of HTTP Accept header including negotiating client and server priorities
  • Collectd Contributor

    • Contributed the tokyo-tyrant collection plugin
    • Contributed the write-http plugin, which will submit collected measurements via libcurl to an HTTP server

Additionally, I have made small code contributions to numerous other OSS projects, including Rails, Rack, Awesomewm, and Arch Linux.

Conference Talks

  • Forms Don't Have to be this Complicated Mountain.rb - Oct 2010
    In this talk, I lament how difficult it is to build complicated nested form in Rails & UJS. I offer a few solutions, including Form Objects. More recently, pure front-end apps in React or Ember have supplanted the need for a comprehensive solution in Rails itself.

  • How HTTP Already Solved All Your Performance Problems 20 Years Ago MountainWest RubyConf - Mar 2010
    I describe several of the more powerful features provided by the HTTP protocol, which are supported by most basic HTTP clients in languages' stdlib, but not taken advantage of by most advanced client libraries.

  • Writing Adapters for DataMapper MountainWest RubyConf - Mar 2009
    As a member of the core team, I gave a tutorial on how to write custom adapters for the DataMapper ORM. Several adapters for other databases and web services were contributed as a result of this talk.

Professional Experience

  • ==Senior Engineer== Kapost Feb 2015 - Present

    • Architected and implemented an application to collect and present analytics data. Utilized CouchDB and eventually Elasticsearch for analytics storage and aggregation, and SQS for background workers.
    • Transitioned to a DevOps role, assisting other teams in building out multiple apps in a microservices architecture.
    • Built scripts and configs to create a Docker-based development environment to simplify developing against other teams' apps.
    • Collaborated with teams to develop their features and products in a way that integrated well with existing projects.
    • Built Chat-Ops bots to allow team members to inquire about the state of the system, and deploy & provision ad-hoc staging environments.
  • ==Senior Engineer== RainforestQA Aug 2014 - Feb 2015

    • Wrote a full-stack Rails application (Postgres, Ruby, CSS, JS) to provide testers with a one-time use email address
    • Added features to the open-source QueueClassic and QueueClassicAdmin gems
    • Troubleshooted performance issues relating to load from a "stampeding herd" effect from testers
    • Prototyped a replacement for a core component of the UI in Ember.js
  • ==Senior Engineer== Librato Dec 2012 - Aug 2014

    • Architected and implemented a queue/worker system in Ruby to import users' AWS Cloudwatch data into Librato Metrics
    • Contributed to and coordinated feature development on the Librato open-source client libraries
    • Drove greater adoption of hypermedia concepts in the Librato API, both external and internal
    • Took charge of a website security audit and fixes to user-facing websites and APIs
    • Evaluated various JavaScript frameworks to use in a new frontend dashboard
  • ==API Developer== GitHub Jun 2012 - Nov 2012

    • Design and implemented hypermedia APIs for extracted micro-apps to communicate with the main app and each other
    • Made upgrades to various aspects of the GitHub API, and communicated those changes to users
    • Improved tooling for generation of documentation of the GitHub API
  • ==Senior Software Engineer== LivingSocial Nov 2011 - Jun 2012

    • Took part in upgrades and enhancements to the email newsletter and notification delivery system
    • As a member of the API team, drove adoption of hypermedia APIs as part of a SOA refactor
    • Helped refactor a large Rails app by following the principles of TDD and Martin Fowler's Refactoring
  • ==Senior Software Engineer== Strobe May 2011 - Oct 2011

    • Implemented a "ChatOps" continuous deployment system using Campfire and Chef
    • Created from scratch the Chef cookbooks and recipes to deploy the entire Strobe infrastructure to AWS
    • Set up a JenkinsCI cluster for continuous builds of Ruby/Rails, C++ and Clojure applications
    • Assisted other team members in getting their projects in CI and Chef for deployment
    • Helped implement a CDN/Caching proxy for customer assets in Clojure and Riak
  • ==Senior Software Engineer== Absolute Performance 2006 - May 2011

    • Rewrote an existing monolithic Perl web application into multiple Rails applications
    • Architected and developed new applications to interact with the main apps by hypermedia APIs
    • Accomplished an order of magnitude improvement in capability by implementation of HTTP caching
    • Revamped procedures to ship and deploy applications in various languages to remote customer sites
    • Implemented new features in various NoSQL databases, TokyoTyrant, MongoDB, and Redis
    • Encouraged the team to adopt automated Unit and Functional testing, as well as agile methods
    • Engaged in continuous deployment on non-cloud physical hardware at various customer locations
    • Invovled as primary architect of all layers of the stack, from Javascript UIs to database schemas
  • ==Senior Web Developer== InputOutput Unlimited 2002 - 2006

    • On a contract basis, implemented numerous web applications in PHP and later in Rails
    • Created specifications and designs from (sometimes ambiguous) customer and stakeholder requirements
You can’t perform that action at this time.