Author Image

Hi, I am Peter

Peter Boling

Coding Bootcamp Instructor at edX, Michigan State University
Principal Cloud Engineer at Vital Connect
FLOSS Author & Maintainer at Tidelift
Co-founder & Researcher at Word Tree Foundation
Co-founder & Advisor at Hope For Tomorrow (Liberia)

For over 18 years I have been building web-based applications, primarily with Ruby. I am passionate about building FLOSS tools to help humanity accomplish more good things with fewer resources.

Skills

 
Ruby

Language of choice for most tasks, on both professional and personal projects. Love writing scalable, testable, and maintainable code.

 
Project Mgmt

Jira 🦖 is preferred issue tracker; administrator since 2016. Skilled at project setup & data migrations. Also familiar w/ Clubhouse, Pivotal, Redmine, and others.

 
Cloud

Familiar with AWS, GCP, Azure, Heroku, Digital Ocean, and Dreamhost cloud services.

 
Linux & MacOS

Career in IT began as Linux System Administrator; have loved simplicity of GNU toolchain ever since. I’ve been a Mac addict since 1991.

 
SCM / VCS

Experienced with git-based development, workflows and tools. Contributor to git-reflow, but now favor trunk-based. Additionally have experience with svn and cvs.

 
Shells

Bash is my favored tool for portable scripting, and Zsh is my current shell. Checkout my dotfiles, and other shell projects, on Github.

Experience

1
Full Stack Flex Boot Camp Instructor
Michigan State University

Dec 2022 - Present, Detroit, MI

Teaching remote, online, coding course

Responsibilities:
  • Teaching students to build, and refactor, modern, accessible, responsive, performant websites
  • Stack: HTML, CSS, Javascript, React, Git, GitHub, GitLab, Heroku

Principal Cloud Engineer
Vital Connect

Dec 2022 - Present, San Jose, CA

Anywhere Patient Monitoring

Responsibilities:
  • Building, maintaining, and upgrading vital signs monitoring solutions in support of the VitalPatch RTM.
2

3
Director of Engineering
Riviera Partners

Feb 2020 - Dec 2022, San Francisco, CA

Engineering, Product, & Design Recruiting. Minimized Hiring Risk. Predictable Success.

Responsibilities:
  • Lead Engineering organization of 20, and directly manage backend team of 5 and devops team of 2
  • Design migration paths toward increased data security, lower systems costs, fewer wasted resources
  • My team leverages CQRS+ES (event sourcing), and GitOps for infrastructure-as-code, automation, monitoring, APIs, services, and data processing
  • Maintain the legacy Grape/Rails app, and work on the Hasura Read Model, KNative Eventing, GraphQL APIs, Data Models, Ingestors, Denoramlizers (Projections), and Command APIs, in the new NodeJS CQRS+ES distributed system
  • Event Storming to determine what we need to build; maps perfectly to CQRS+ES, and abides the principles of Domain Driven Design
  • Primary Jira administrator for all company projects

Technical Advisor, Principal Software Engineer
Karuna Health, acquired by Commure, Inc

Nov 2018 - Apr 2020, San Francisco, CA

Karuna connects patients with healthcare guides through streamlined communication and automation.

Responsibilities:
  • Advising on technology and hiring decisions at Karuna Health.
  • Built the email gateway, much of the notification services, and helped plan the architecture of the system.
  • Created automated tools that correct many forms of data corruption.
4

5
Principal Software Engineer
Group 1001

Nov 2018 - Nov 2019 (6 month contract, extended), New York, NY

We are a family of insurance companies offering accumulation and protection solutions

Responsibilities:

Principal Software Engineer
Intricately, acquired by HG Insights

May 2016 - Nov 2018, San Francisco, CA

Authoritative Product Adoption, Usage, And Spend Data. Get detailed insights into the cloud infrastructure of 7 million companies.

Responsibilities:
  • Created time-series data collection & analytics; Generates events to track change on internet
  • Scaling systems and creating devops tools to better utilize infrastructure
  • Advanced math to transform non-scalar data from AWS Alexa into a scalar digest
  • Monitor, log, benchmark, and automate the internet monitoring robots
  • Build data pipelines for enterprise customers exposing the internet sliced in different ways
  • Primary Jira administrator for all company projects
6

7
Principal Software Engineer
Bolt Threads

Sep 2017 - May 2018, San Francisco, CA

Bolt Threads is a material solutions company. Taking nature as our inspiration, we invent and scale cutting-edge materials that put us on a path towards a more sustainable future – and that starts now.

Responsibilities:
  • Maintenance of a legacy, custom, in-house built, Lab Information Management System
  • Analysis of potential replacement third party LIMS systems
  • Interviewed candidates for Software Engineering leadership team (VP, Director, Sys Admins)
  • Integration of Windows-based OPC DA services with LIMS via data sampling mechanisms
  • Translate garment designs to instrumentation for a Stoll industrial knitting machine
  • Left when the in-house LIMS system was replaced with off-the-shelf software
  • Primary Jira administrator for all company projects

Principal Software Engineer Team Lead
Invoice2Go, acquired by Bill.com

Jan 2016 - Feb 2017, Jakarta, Indonesia

Send professional invoices and estimates in minutes. Invoice on the spot, right when you finish the job. Spend less time on paperwork and more time doing what you love.

Responsibilities:
  • Lead the web team in developing a revamped web app, now at https://invoice.2go.com/invoice-generator/
  • Laid the groundwork for new service architecture, implementation and continuous integration
  • Designing and implementing git branching strategy and supporting toolchain
  • Implementing sandboxed dev env and tiered deployed environments
  • Design and implement feature flags allowing synchronized feature release across clients
  • Tech Lead role in Jakarta office
  • Primary Jira administrator for all company projects, and integration with ZenDesk
8

9
Staff Software Engineer
Trumaker & Co

Apr 2014 - Apr 2016, San Francisco, CA

Personalized service and bespoke made-to-measure fashion.

Responsibilities:
  • Rebuilding architecture of entire tech stack
  • Extracting front-end parts to ember-cli and react thin clients
  • Building structured, authenticated, performant APIs, utilizing versioning and caching
  • Modernizing versions of Ruby, Rails, and many critical gems
  • Implementing backend to support launches of new product lines (blazers, ties, belts, pants, sweaters, tees, etc), fulfillment processes, factories, and shipping methods
  • Designed and created a fully spec’d 12-state Lead CRM tool
  • Integrated Salesforce with internal Lead CRM via my celluloid-io-pg-listener gem
  • Built a commissioned sales attribution framework that supports point-in-time history
  • Fixed the factory pattern and rewrote the spec suite, adding thousands of additional tests
  • Setup new deployed environments, created Thor deployment tool for automation of the many deployment related sub-tasks

Staff Software Engineer (9mos contract, extended)
Church Pension Group Services Corporation

Aug 2013 - Nov 2014 (9 month contract, extended), New York, NY

Provides resources and services to sustain the operations of the Episcopal Church worldwide.

Responsibilities:
  • Forensic analysis of 5 year old ruby service layer
  • Upgrade from Ruby 1.8.7 to 2.0, then 2.1
  • Created ruby service APIs to support many varied clients, & regression test suite
  • Implement account lock and token expiry security measures & automated enforcement
  • Upgrade daemon infrastructure and trading systems, improve software stack / make system
  • 10x performance enhancement of internal services
10

11
Co-founder, Chief Technology Officer
Acquaintable, acquired by Reveal (MS Ventures-backed)

Nov 2012 - Nov 2013, New York, NY

Socially curated dating through Friends of Friends

Responsibilities:
  • Built the app, hired specialists to assist with some niche projects & made all tech decisions
  • Advised on product and design decisions
  • Created matching engine with Neo4j + PostgreSQL data analysis algorithms
  • SPA, mobile first, responsive design, with intuitive, touch-enabled mobile interface
  • Designed to provide an immediate experience to each new user
  • Accepted into Entrepreneurs Roundtable Accelerator Winter 2013 class (ERA - NYC)
  • Fully automated and self-correcting, no intervention required for 4 months.

Senior Software Engineer Team Lead
Bloomberg Black

Aug 2010 - Nov 2012, New York, NY

Personal Wealth Management

Responsibilities:
  • 1st Employee, and lead developer of Bloomberg Black, a personal wealth management startup
  • Interviewed and built a team of 15 engineers
  • Built internal tools, e.g. VCR extensions that automated management & recording of soap interactions outside test env
  • Spec suite with thousands of tests to enforce style guide, validate ruby namespace against collisions
  • SOAP services interface, generators for SOAP models and test fixtures; created version dependency resolution between Ruby layer and Java services
  • Rack middleware for fast custom logging => Splunk, 10ms per request improvement
  • CMS presentation code for the dynamic content on the site with all content available via static route or ajax widgets
  • Designed project structure - ajax widgets built out of reusable RequireJS modules, cells for componentized features, presenters for single instance variable, and logic free views
  • Spec infrastructure - created custom rspec matchers, acceptance tests, JS unit tests
  • Javascript - flyout menus, internally tabbed ajax pages, scrollspy, breadcrumbs
  • Javascript - Built the CMS backend for the content entry in the 100% javascript Rapid IDE
  • Maintained platform interoperability – Windows & RedHat & MacOS
  • What started as Bloomberg Black eventually became CircleBlack.com
12

Projects

oauth2
oauth2
Lead Maintainer Dec 2017 - Present

Oauth 2.0 for Ruby

oauth
oauth
Lead Maintainer Oct 2020 - Present

Oauth 1.0 for Ruby

oauth-tty
oauth-tty
Author & Maintainer Aug 2020 - Present

OAuth 1.0 TTY Command Line Interface

flag_shih_tzu
Lead Maintainer Apr 2012 - Present

Bit fields for ActiveRecord

dynamoid
Maintainer May 2016 - Present

Ruby ORM for Amazon’s DynamoDB.

omniauth-identity
omniauth-identity
Maintainer Sep 2020 - Present

A simple login and password strategy for OmniAuth.

sanitize_email
Author & Maintainer Nov 2008 - Present

An Email Condom for your Ruby Server

gem_bench
Author & Maintainer Apr 2013 - Present

Static Gemfile Analysis; A Toolkit for working with 3rd party libraries in Ruby

debug_logging
Author & Maintainer Mar 2017 - Present

Unobtrusive, configurable, drop-in debug logging useful when a call stack gets unruly

resque-unique_in_queue
Author & Maintainer Aug 2017 - Present

Resque plugin allowing configuration of queue-time job uniqueness

resque-lonely_job
Maintainer Aug 2017 - Present

[WIP-Deprecating] Resque plugin allowing configuration of run-time job uniqueness

resque-unique_at_runtime
Author & Maintainer Apr 2017 - Present

Resque plugin allowing configuration of run-time job uniqueness

resque-unique_by_arity
Author & Maintainer Apr 2017 - Present

Magic hacks which allow integration of job multiple Resque plugins providing different types of job uniqueness

anonymous_active_record
Author & Maintainer Jan 2018 - Present

Faux Anonymous AR Models for testing Concerns, Observers, Decorators

month-serializer
Author & Maintainer Oct 2018 - Present

Serialize Month objects to Integer

rspec-stubbed_env
Author & Maintainer Oct 2018 - Present

Unobtrusively stub ENV keys and values during testing

activerecord-tablefree
Author & Maintainer Nov 2017 - Present

TableFree ActiveRecord w/ associations and nested attributes

react-rails-benchmark_renderer
Author & Maintainer Jun 2015 - Present

Benchmarking instrumentation of the sort found in Rails’ view rendering

each_in_batches
Author & Maintainer Nov 2008 - Present

Allows reverse batching, which means it can handle many types of destructuve blocks!

destination_errors
Author & Maintainer Apr 2015 - Present

Mixin providing management of error surfaces within the familiar territory of ActiveModel

cacheable-flash
Lead Maintainer 2011 - 2017

(ARCHIVED) Gets the Rails flash object working with page cacheing.

controller_validator
Author & Maintainer Nov 2014 - Present

Simple Validations in the Controller

analog-reshaper
Author & Maintainer Oct 2018 - Present

Analog (gem) plugin allowing non-linear rescale of numbers

dry_views
Author & Maintainer Aug 2012 - Present

Keep the views dry with content_for_with_default and friends!

letter_group
Author & Maintainer Apr 2015 - Present

Organize data results from raw sql queries (as with PGresult, or Dossier) intelligently.

csv_pirate
Author & Maintainer Mar 2009 - Present

100 Pirates agree creating CSVs is boring. Pirates prefer lazy. Pirates use CsvPirate.

rails_env_local
Author & Maintainer Mar 2016 - Present

Where the rails environment for local development can be named anything it desires!

status_tag
Author & Maintainer Aug 2015 - Present

Provides a method signature that can be splatted to Rails’ content_tag_for to create labels.

capistrano_mailer
Author & Maintainer Aug 2008 - Present

A Gem For Capistrano Deployment Email Notification

strict_states
Author & Maintainer Nov 2015 - Present

State machine typos are the worst. Never again! Compatible with most state machines.

include_with_respect
Author & Maintainer Dec 2019 - Present

Find out if your include and extend hooks are misbehaving!

require_bench
Author & Maintainer Sep 2018 - Present

Benchmark Ruby’s require for Debugging Glory

rspec-block_is_expected
Author & Maintainer Oct 2018 - Present

Simplify testing of blocks in RSpec

celluloid-io-pg-listener
Author & Maintainer Oct 2015 - Present

Allows you to LISTEN for NOTIFY events from PostgreSQL and asynchronously handle the payload

rspec-pending_for
Author & Maintainer Oct 2015 - Present

Mark specs pending or skipped for specific Ruby engine / version combinations

activerecord-transactionable
Author & Maintainer Mar 2016 - Present

Properly Implement ActiveRecord Transactions

silent_stream
Author & Maintainer Sep 2018 - Present

ActiveSupport Stream Silencing (STDOUT & STDERR) - Without ActiveSupport

rack-toolbar
Author & Maintainer Apr 2015 - Present

Provides an easy way to create Rack Middleware that injects things into the response body

dotfiles
Author & Maintainer Apr 2012 - Present

My personal dotfiles for Bash and Zsh

bsfl
Maintainer Nov 2013 - Present

Bash Shell Function Library (FORK)

bash_step
Author & Maintainer Nov 2013 - Present

Bash Step Function Library

rack-insight
Author & Maintainer Aug 2012 - Present

Debugging toolbar for Rack applications implemented as middleware

super_exception_notifier
Author & Maintainer Aug 2012 - Present

Super Exception Notifier Gem/Plugin for Rails

jquery.environment
Author & Maintainer Nov 2012 - Present

jQuery plugin that is analogous to the config/environments files in Rails.

jquery.ellipsis
Author & Maintainer Aug 2012 - Present

Yet Another jQuery Ellipsis Plugin… only better.

js-cookie-calibre
Author & Maintainer Jul 2015 - Present

A simple, lightweight JavaScript API for handling and namespacing configuration cookies

shiftable
Author & Maintainer Oct 2021 - Present

Change ActiveRecord associations in a structured manner

snaky_hash
Author & Maintainer Aug 2022 - Present

A Hashie::Mash joint to improve #snake_life for everyone

version_gem
Author & Maintainer Jun 2022 - Present

Versions are good. Versions are cool. Versions will win.

undrive_google
Author & Maintainer Oct 2022 - Present

🏴 Liberate files from your Google Drive

simple_column-scopes
Author & Maintainer Jun 2017 - Present

Dynamic modules define dynamic methods from array of column names

service_actor-promptable
Author & Maintainer Jun 2017 - Present

TTY User Input plugin for service_actor gem

sequential_file
Author & Maintainer Feb 2014 - Present

Create Files Named Sequentially Intelligently

seed_migration
Maintainer Mar 2022 - Present

Seed Migration

qfill
Author & Maintainer Mar 2013 - Present

Create Files Named Sequentially Intelligently

pretty_feed
Author & Maintainer Mar 2022 - Present

Pass/Fail logging colorization

gitmoji-regex
Author & Maintainer Mar 2022 - Present

A regular expression matching Gitmoji symbols only

archivist-client
Author & Maintainer Dec 2013 - Present

Query archive.org for book data and download some things