Ben Northrop

Software Architect and Full Stack Developer
  • 20 years of experience in designing and developing software applications on over 25 different engagements, focused primarily on enterprise­scale Java systems and components.
  • Proficient with concepts and techniques of BDD, TDD, OOA, OOD, AOP, Design Patterns, and agile development processes like XP, Scrum, Kanban, and Lean.
  • Dedicated to producing quality work; implemented two open source tools for analyzing and reporting on internal code quality.
  • Enjoys challenges, thrives in teams, hard worker, excellent communicator, and strong writing skills.
ArchitectureJavaMicroservicesSpring BootRabbitMQ
Pittsburgh, PA 26 years professional experience
BS in Information and Decision Systems
Research Programmer
Senior Consultant
Euclidean Geometry Theorem Checker
Principal Architect
Principal Technical Consultant and Owner
Gym Database
Gym Database
Java Developer
MS in Philosophy: Logic, Computation and Methodology
External Web App
Custom CRM
PMD Reports
Education Web App
Internal Web App
Distinguished Technical Consultant
2016 Present
Work Experience
Principal Technical Consultant and Owner Oct 2018 - Present
Full-stack Development
  • Designed and implemented critical menu configuration structures and logic as well as front-end web views for the rewrite of an online ordering system. React SCSS Java Spring Boot MyBatis Groovy SQL Server
  • Investigated a business critical legacy component with a history of reliability and quality concerns and then planned for and led an incremental rewrite based on the Strangler design pattern. Architecture Java Microservices REST Spring Boot MyBatis SQL Server RabbitMQ Shedlock SQL
  • Integrated a proprietary ordering system for a food service client with over 500 locations with the Uber Eats API, designing for maximum resilience and up-time. Java Microservices Spring Boot REST Splunk
  • Embedded with an architecture team for a large health insurance provider, helping to investigate and prototype key architectural and devops improvements. Architecture OAuth2 Git Docker
  • Led a team of four to build a daily sweepstakes content for an online ordering platform, optimizing for security and monitorability to prevent fraud. Java Microservices Spring Boot REST Splunk
  • Performed architecture for a variety of small to mid-size companies with varying goals, from rewrite-or-refactor to MVP feasibility. Architecture
  • Built out the backend foundation and devops pipeline for a commercial real estate application, including security, logging, persistance, and business logic. NodeJS ExpressJS Javascript OAuth2
  • Worked with a higher-education client to optimize their DevOps pipeline, building custom Git hooks, modifying build scripts, and tweaking application code. Python Git Gitlab CI Maven Java Jenkins
  • Assisted with strategy, prototyping, and rollout of an effort to containerize an ecosystem of 30+ services formerly hosted on virtual machines. OpenShift Microservices
Distinguished Technical Consultant Jun 2007 - Oct 2017
Convenience Store Client
  • Led a development team of 7 to build from scratch the in­store ordering platform which is used in 500+ stores and handles over 250k orders per day. Java JAX­RS Spring RabbitMQ Javascript Angular SCSS Event Driven
  • Designed and implemented a flexible menu authoring framework that allows Sheetz to customize food and beverage offerings, promotions, cross­sells, and up­sells based on location, time of day, weather, order history, and other contextual factors. Java
  • Helped in the design and implementation of a new, responsive, single­page web app for online ordering; ported over components from the in­store menu framework to ensure reuse and maintainability. Java JAX­RS Spring Boot MyBatis Javascript Angular SCSS Responsive
  • Architected a data lake to capture online and in­store order data, and from which key business insights were mined to improve customer experience and cross­sell conversions. RabbitMQ Splunk
  • Led the discovery and implementation of a major release to deliver personalization features to the in­store ordering experience, allowing customers to log in, view order history, mark “favorite” items, and see recommendations. Architecture Java Spring Boot Microservices
  • Built a recommendation engine to deliver personalized recommendations to customers, using a item­based collaborative filtering algorithm. Java Mahout
  • Implemented a voice­based user interface for accepting orders using Amazon's Alexa platform. Java Alexa EC2 Lamda OAuth
Higher Education Client
  • Led a development team of 9 to modernize a proprietary Student Information System, a legacy application which is the backbone for all student related business processes including admission, registration, graduation, scheduling, and accounting. Java Spring MyBatis Maven Ingres Oracle
  • Designed a frontend framework based on the MVP pattern on top of which more than 100 screens were written. GWT
  • Spearheaded an exploratory effort to analyze Carnegie Mellon’s unique and rich requirements for authorization, investigating different open source and proprietary products. Upon finding no suitable solutions, designed a custom, enterprisestrength authorization engine to manage both role based and attributebased access controls. Java Spring JavaCC MyBatis
  • Helped map out and then implement a strategy for automating testing at both a unit and integration level. Junit Groovy Spock Cucumber Gherkin Selenium
  • Implemented a Person Matching component used to prevent the duplicate entry of students, prospects, and applicants, and students for any of Carnegie Mellon’s campuses. Java Spring
  • Analyzed and then assisted in the optimization of the business critical, online student registration logic to ensure it met key performance and scalability demands. Java Grinder
  • Integrated Carnegie Mellon’s information systems with both internal and external systems, including health insurance, housing and dining, ID cards, and authentication. Spring REST CXF SAML
  • Implemented the business logic for registering and scheduling classes for students. Java
  • Led a team of 4 to modernize the Student Information Online application, a portal for students to view and manage their grades, schedule, accounts, contact, and health insurance information. Java GWT Spring MyBatis Ingres Maven
  • Conducted multiple rounds of usability tests to help understand the intentions and behavioral patterns of students when interacting with the student portal application. Usability Testing
  • Helped modernize the student billing and aging processes, including creating the first online bill for students. Java GWT Spring MyBatis Ingres
Financial Client
  • Worked along side a team of 5 to architect, design, and implement a greenfield Software as a Service (SaaS) product for the client built for universities to manage their payments to students and faculty. Helped deliver the system on time and under budget. Java Spring MyBatis SQL JSP
  • Created and configured a Spring Web Services module and created an endpoint that accepted messages about new client accounts opened by students. Java Spring JDOM
  • Designed and maintained the relational data model consisting of over 40 tables. Oracle
  • Created and configured the infrastructure for an automated unit and integration testing framework and helped maintain 100% pass rates throughout the course of the construction phase. Java JUnit DbUnit Spring
Telecom Client
  • Led the design and development of a web-based system used to manage the process of customers opting out of license agreements with the client. Java JSP Struts Oracle EJB SQL
  • Implemented key enhancements to a proprietary workflow engine, allowing the client to track license requests from customers. Java JSP Struts Oracle SQL
  • Designed, garnered consensus on, and then implemented a key refactoring to an infrastructure piece responsible for managing configuration files. Java EJB JMS
  • Helped implement enhancements to the client's Online Application system to support a critical business goal of increased agility and responsiveness to customer requests. Java EJB Struts JSP SQL
Senior Consultant Jan 2005 - Jul 2007
SDLC Partners
Logistics Client
  • Led the analysis, design, and development of the Delivery Locations feature for Vocollect’s VoiceLink 3.0 product. Utilized the dependency injection design pattern to improve testability and extensibility of business logic, and used ORM techniques to achieve portability and better maintainability of database persistence code. Java Spring Hibernate WebWork Ajax SQL
  • Managed the implementation of the reporting module, which entailed integrating a proprietary reporting component and open-source reporting frameworks with the VoiceLink 3.0 system. Jasper Reports Spring Hibernate
  • Served as the lead consultant of 13, helping to coordinate tasks and manage knowledge.
  • Helped to coordinate, administer, and analyze a usability test of the VoiceLink 3.0 product and helped to pinpoint and then eliminate over two dozen critical usability issues. Usability Testing
Media Client
  • Played a key role in an architecture assessment of MSA’s Gabriel product, a 5 million line ERP system for the Media industry. The assessment spanned functional, organizational, and technical domains to discover the extent to which each architectural element supported critical business goals.
  • Implemented a performance instrumentation solution utilizing Aspect Oriented Programming to achieve better maintainability and extensibility. AspectJ Ant Java
  • Analyzed and refactored a critical core component that was responsible for system-wide performance problems. Java Stored Procedures PL/SQL Java
  • Acted as a mentor to junior Java developers, performing code reviews, holding consistent brown-bag learning sessions, and offering general support and assistance.
  • Developed a tool used to visualize Ant target workflows for the purposes of understanding complex Java build scripts. Java Ant
Research Programmer Apr 2004 - Jan 2005
Carnegie Mellon University
  • Collaborated with Information Visualization specialists from the Human Computer Interaction Institute to design an effective interface for searching and navigating large, multi-faceted, hierarchical data sets. JSP Struts MySQL Java
  • Implemented a web-based portal and discussion engine used in Pittsburgh’s 2004 Deliberation Day. The portal was used to host and facilitate political conversations among citizen participants toward the goal of strengthening democratic discourse MySQL PHP Flash
Java Developer Jun 2002 - Jan 2004
  • Created a Notification hub used by different J2EE applications to send messages to subscribers in different file formats and via different delivery channels. Implemented based on the Publish-Subscribe design pattern JavaMail EJB Struts
  • Maintained two key business components for calculating prices of different product configurations of steel and for checking inventory availability for these products. EJB Oracle
  • Designed and developed a generic reporting framework which provided common functionality for displaying and manipulating read-only data, like sorting, paging, filtering, and file conversion. Struts Custom Tags Java
  • Led the development effort for an online contract management tool used by customers to manage their own accounts. Developed utilizing core J2EE design patterns including the Business Delegate, Session Facade, Value Object, MVC, and Service Locator patterns Java EJB Struts WebSphere Oracle
  • Designed and developed a core logging and exception handling framework used by multiple application teams within Straightline. Java Struts JavaMail
  • Built custom extensions to the Struts framework providing common functionality for session management, resource lookup, and data caching. Struts EJB Java
Consultant Jun 2001 - May 2002
  • Implemented key business components within the EJB specification for an internet application used by Railroad operators for placing railcar orders Java EJB DB2 WebSphere
  • Built a JSP Custom Tag library used in the presentation tier to encapsalate and reuse complicated client-side logic for validation, filtering, and complex input fields. Java JSP Javascript
Programmer Sep 1999 - May 2001
Adclip Networks
  • Led the development effort for a web-based administration system used by online publishers and advertisers to configure and deploy digital coupons Java JSP Servlets XSL XSQL
  • Developed the beta version of AdClip’s first wireless product, the Wireless Wallet Perl WML XML
MS in Philosophy: Logic, Computation and Methodology Aug 2004 - May 2011
Thesis: Automated Diagrammatic Reasoning: A proof­checker for the language of E
Logic Game Theory Computability Theory Decision Theory Philosophy of Mind Data Structures
BS in Information and Decision Systems Aug 1995 - May 1999
3.67 QPA (4.00 scale)
Data Structures Algorithms Systems Design Database Theory Software Engineering Organizations Statistics Empirical Research Methods Policy Analysis SQL Java
Publications and Presentations
Trainings and Certifications
Sun Certified Programmer 2000
Awards and Accolades
Contractor VIP Award - Retail Client 2017
Side Projects
Created a web app for hosting interactive resumes geared for the tech industry.
Spring Boot Java React Javascript JQuery Elastic Beanstalk CloudWatch S3 IAM RDS MySQL
Created a static source code analysis tool which reports on the maintainability (or "cruftiness") of your Java code. Whereas other tools generate an unwieldy list of maintainability violations from which it's difficult to know what to do, Cruft4J generates one score which is based on just two things: cyclomatic complexity and copy-paste.
Java Maven
Collaborating with Dr. Jeremy Avigad and Dr. John Mumma, I built an automated theorem checker for a formal system of Euclidean Geometry. A user enters facts about a diagram, and the tool generates a list of logical entailments - i.e. conclusions that could be deduced using pre-defined logical rules.
Java JavaCC
CodersCV 2008
Created a better visualization of a developer's skills than the traditional resume, and captured 2,000+ sign-ups in 3 months
Java MyBatis Spring JSP
Built a wrapper around the popular open-source Java code analysis and bug detection tool, PMD. Whereas PMD generates and displays code quality statistics at a source code level, PMDReports persists and aggregates these statistics so that code quality can be viewed from a more macro, component level.
Java XSL
Internal Web App 2007
Rewrote an existing web application used to manage internal banking documents using Java-based technologies to keep consistent with IT standards. The site was used by 200+ users located in different FHLB branches around the country.
Java Webwork Hibernate MySQL Javascript
Custom CRM 2005
Designed and implemented a web-based system to help a local fire protection business track inventory and route technicians to customer sites. The system was intended to reduce operational costs and increase customer retention, thereby increasing revenue.
Java Struts Hibernate JSP Javascript SQL
External Web App 2002
Created a basic web site for a local small business that distributes statistical reports on real estate transactions in Allegheny county. The site provides potential customers the ability to generate sample reports online, demonstrating the power of the RealSTATs data set.
Education Web App 2002
Developed a very simple web site to showcase their distinguished faculty. The site consisted of two parts: the web site itself, containing instructional videos and teaching resources, and an administrative console where the web site content could be updated.
BUMP 2001
Created an intelligent MP3 player that learns your music preferences and then optimally plays songs based on your current mood and tastes using a basic statistical algorithm to select an optimal group of songs to play for you at that time.
Java JMF Swing
Gym Database 1998
Built a database for a local gymnastics gym to track their customers, inventory, and sales.
Filemaker Pro
Gym Database 1997
Wrote a database management system for a local rock climbing gym to manage daily passes, memberships, and other purchases.
Filemaker Pro
Spring BootHibernateMyBatisNodeJSExpressJSRabbitMQSpring
MavenGitGitlab CIDockerKubernetesOpenShiftJenkinsSplunkElastic SearchAnt
Data Stores
OracleSQL ServerMongoDBMySQLIngres
Tools and Libraries
Patterns and Specs
OAuth2ResponsiveMicroservicesEvent DrivenReactive
Elastic BeanstalkS3CloudWatchLamdaEC2RDS