John Naegle
github.com/johnnaegle | www.linkedin.com/in/johnnaegle
Saint Louis, MO or Remote; United States Citizen.
Overview
Seventeen years of professional software development experience; developing full stack web applications since 2004.
Experience
2011 – PRESENT
Good Measures LLC, Boston MA (Remote) – Senior Software Engineer
Full stack web developer responsible for architecting, designing, implementing, testing, and deploying the Good Measures software platform — a scalable, HIPAA compliant system for Registered Dietitians to coach people to better health.
- Developed user-facing and internal web interfaces with Ruby on Rails, jQuery, Bootstrap, HTML (Haml) / CSS (Sass).
- Championed API first development to simultaneously support Web, iPhone, Android, and 3rd party integration with the Good Measures platform. Closely worked mobile developers to specify, implement, version and document APIs.
- Worked with Registered Dietitians and other internal users to shape product direction set priorities, design user interfaces, and conceptualize and implement clinical patient management and outreach.
- Integrated platform with third party applications and data to automate workflows, expand platform capabilities and monitor system performance. Integrations included: Canvas LMS, Amazon (SQS, S3, Lambda), Urban Airship, APNS, Comfortable Mexican Sofa, Slack, National Provider Identifier Database, PaperTrail,, New Relic, and Trizetto.
- Replaced JavaScript polling with ActionCable/Websockets to reduce web server load and improve site performance.
- Developed Ansible playbooks, targeted for EC2 or Vagrant, for reliable automated infrastructure creation, scaling, and maintenance. Vagrant systems enabled mobile developers develop against local installations with minimal effort.
- Automated browser testing using Selenium / RSpec / Capybara. Wrote model, integration, functional and integration tests enabling confidence in software upgrades and system changes.
- Monitored and optimized site performance for better scaling, lower costs and improved user experience: optimized SQL queries, removed N+1 queries, added caching (fragments, query results, e-tags, etc) , optimized back end delayed job calculations, implemented capistrano deployment optimizations, tuned API performance with Rabl templates and JSON generation optimizations, and replaced Rails models with direct SQL queries.
- Deployed and extended Hubot (a Slackbot) with EC2 integration and other capabilities (Node/Heroku) to automate operational tasks. Integrated Slack with AWS Autoscaling Notifications, PaperTrail queries, email delivery failures and other monitoring tools.
- Mentored and coached development team members through code reviews, design reviews, and pair programming.
2004 – 2011
Varolii Corporation, Burlington MA – Principal Engineer, Team Lead
Principal Engineer and Team Lead for Varolii Profiles, a multi-tenant SaaS platform providing inbound and outbound employee and business continuity communications over phone, email, SMS and other transports. Varolii Profiles provided a Web UI and SOAP API for data management, decisioning, and reporting for time-critical mass communications.
- Led requirements gathering, design and implementation of upcoming release layering finer grained security on top of existing customers applications and data while maintaining backwards compatibility.
- Led requirements gathering, design, and implementation of Varolii Contact Manager which added efficient data integration capabilities and significantly lowered customer integration costs.
- Led design and implementation of Varolii Message Center which added rich inbound communications, a unified web and phone interface and provided a rich administrator interface.
- Implemented rich web user interfaces using AJAX, JavaScript, HTML, and CSS.
- Implemented business logic, database access, Soap API additions, and framework improvements using C++ and SQL.
- Developed UI infrastructure and standards that streamlined and standardized web development.
- Developed an ASP.NET web application used internally by Customer Support and Operations to monitor site health, diagnose customer issues, and access log files.
- Diagnosed and addressed performance and resource issues including: inefficient SQL queries, slow web page rendering, and memory leaks.
- Represented Varolii at trade shows.
2000 – 2004
Quicksilver Technology, Seattle WA – Software Engineer
Developed software tools supporting hardware design and application development for the Adaptive Computing Machine — an integrated circuit for audio, video and wireless applications running on mobile devices. Primary technologies: Java, C/C++, assembly languages, and Verilog.
- Developed software tools to support application development, debugging, and testing for software running on a custom hardware platform.
- Implemented hardware simulator and assembly language for VLIW processor. Extended simulator to generate basic hardware representation used for chip synthesis.
- Implemented build system to perform automated builds upon source control check-in.
Public Software Contributions
Repositories and Blogs
www.software-thoughts.com – My infrequently updated blog on software topics.
github.com/GoodMeasuresLLC/trizetto-api – Ruby gem for checking health insurance coverage.
github.com/johnnaegle/hubot-ec2 – Lists EC2 instances in Hubot / Slack.
github.com/GoodMeasuresLLC/inherited-attributes – Extends ancestry gem to allow attributes to be inherited.
github.com/GoodMeasuresLLC/activerecord-has_one_defaults – Provides defaults to has_one associations.
github.com/GoodMeasuresLLC/calendar_to_queue – Mountable endpoint for push notifications from Google Calendars.
github.com/johnnaegle/rails_weak_etags – Converts strong e-etags to weak to pass through nginx with gzip compression.
github.com/johnnaegle/jquery-visibility-rails – Provides the jQuery visibility library as a gem.
Sample Pull Requests
github.com/rack/rack/pull/814 – Fixed a bug with Rack and open file counts.
github.com/Apipie/apipie-rails/pull/524 – Have ApiPie generate documentation for delete request parameters.
github.com/Apipie/apipie-rails/pull/521 – Fix bug with API documentation generation
github.com/stve/silencer/pull/15 – Made log silencer thread safe in Rails 4.2.6+
github.com/comfy/comfortable-mexican-sofa/pull/639 – Fixed asset URL generation when CMS is not mounted at root
github.com/saml-idp/saml_idp/pull/59 – Fix invalid SAML generation.
github.com/saml-idp/saml_idp/pull/64 – Rails 4 upgrade change.
github.com/atomicjolt/omniauth-canvas/pull/3 – Documentation and Usage
github.com/snikch/jquery.dirtyforms/pull/76 – Fix dirty form checking in JavaScript focus events
github.com/collectiveidea/delayed_job/pull/689 – Fixed test failures under Rails 4.2.0.beta1
github.com/grocer/grocer/pull/39 – Fail APNS push notifications if the payload is too large
github.com/anthonator/dirigible/pull/14 – Made parameters optional in Urban Airship API Wrapper
github.com/rails/rails/issues/9351 – (bug report) Rails 3.2 issue with millisecond differences in timestamps.
Education
University of Washington, Seattle WA – Masters of Computer Science, 2004.
University of Washington, Seattle WA – Bachelors of Science in Computer Engineering, Mathematics Minor, 2000.
Other Interests
Running, camping, hiking, taekwondo, photography, and cycling.