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 22 years professional experience
Timeline
BS in Information and Decision Systems
Programmer
Consultant
Research Programmer
Distinguished Technical Consultant
Principal Technical Consultant and Owner
Java Developer
MS in Philosophy: Logic, Computation and Methodology
Principal Architect
Senior Consultant
1995
2001
2007
2013 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.
    ReactSCSSJavaSpring BootMyBatisGroovySQL 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.
    ArchitectureJavaMicroservicesRESTSpring BootMyBatisSQL ServerRabbitMQShedlockSQL
  • 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.
    JavaMicroservicesSpring BootRESTSplunk
Architecture
  • Embedded with an architecture team for a large health insurance provider, helping to investigate and prototype key architectural and devops improvements.
    ArchitectureOAuth2GitDocker
  • Led a team of four to build a daily sweepstakes content for an online ordering platform, optimizing for security and monitorability to prevent fraud.
    JavaMicroservicesSpring BootRESTSplunk
  • Performed architecture for a variety of small to mid-size companies with varying goals, from rewrite-or-refactor to MVP feasibility.
    Architecture
DevOps
  • Built out the backend foundation and devops pipeline for a commercial real estate application, including security, logging, persistance, and business logic.
    NodeJSExpressJSJavascriptOAuth2
  • Worked with a higher-education client to optimize their DevOps pipeline, building custom Git hooks, modifying build scripts, and tweaking application code.
    PythonGitGitlab CIMavenJavaJenkins
  • Assisted with strategy, prototyping, and rollout of an effort to containerize an ecosystem of 30+ services formerly hosted on virtual machines.
    OpenShiftMicroservices
Distinguished Technical Consultant Jun 2007 - Oct 2017
Summa
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.
    JavaJAX­RSSpringRabbitMQJavascriptAngularSCSSEvent 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.
    JavaJAX­RSSpring BootMyBatisJavascriptAngularSCSSResponsive
  • 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.
    RabbitMQSplunk
  • 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.
    ArchitectureJavaSpring BootMicroservices
  • Built a recommendation engine to deliver personalized recommendations to customers, using a item­based collaborative filtering algorithm.
    JavaMahout
  • Implemented a voice­based user interface for accepting orders using Amazon's Alexa platform.
    JavaAlexaEC2LamdaOAuth
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.
    JavaSpringMyBatisMavenIngresOracle
  • 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.
    JavaSpringJavaCCMyBatis
  • Helped map out and then implement a strategy for automating testing at both a unit and integration level.
    JunitGroovySpockCucumberGherkinSelenium
  • 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.
    JavaSpring
  • Analyzed and then assisted in the optimization of the business critical, online student registration logic to ensure it met key performance and scalability demands.
    JavaGrinder
  • Integrated Carnegie Mellon’s information systems with both internal and external systems, including health insurance, housing and dining, ID cards, and authentication.
    Spring RESTCXFSAML
  • 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.
    JavaGWTSpringMyBatisIngresMaven
  • 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.
    JavaGWTSpringMyBatisIngres
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.
    JavaSpringMyBatisSQLJSP
  • Created and configured a Spring Web Services module and created an endpoint that accepted messages about new client accounts opened by students.
    JavaSpringJDOM
  • 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.
    JavaJUnitDbUnitSpring
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.
    JavaJSPStrutsOracleEJBSQL
  • Implemented key enhancements to a proprietary workflow engine, allowing the client to track license requests from customers.
    JavaJSPStrutsOracleSQL
  • Designed, garnered consensus on, and then implemented a key refactoring to an infrastructure piece responsible for managing configuration files.
    JavaEJBJMS
  • Helped implement enhancements to the client's Online Application system to support a critical business goal of increased agility and responsiveness to customer requests.
    JavaEJBStrutsJSPSQL
Senior Consultant Jan 2005 - Jul 2007
Consulting Company
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.
    JavaSpringHibernateWebWorkAjaxSQL
  • 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 ReportsSpringHibernate
  • 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.
    AspectJAntJava
  • Analyzed and refactored a critical core component that was responsible for system-wide performance problems.
    Java Stored ProceduresPL/SQLJava
  • 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.
    JavaAnt
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.
    JSPStrutsMySQLJava
  • 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
    MySQLPHPFlash
Java Developer Jun 2002 - Jan 2004
Straightline
  • 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
    JavaMailEJBStruts
  • Maintained two key business components for calculating prices of different product configurations of steel and for checking inventory availability for these products.
    EJBOracle
  • 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.
    StrutsCustom TagsJava
  • 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
    JavaEJBStrutsWebSphereOracle
  • Designed and developed a core logging and exception handling framework used by multiple application teams within Straightline.
    JavaStrutsJavaMail
  • Built custom extensions to the Struts framework providing common functionality for session management, resource lookup, and data caching.
    StrutsEJBJava
Consultant Jun 2001 - May 2002
Ciber
  • Implemented key business components within the EJB specification for an internet application used by Railroad operators for placing railcar orders
    JavaEJBDB2WebSphere
  • 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.
    JavaJSPJavascript
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
    JavaJSPServletsXSLXSQL
  • Developed the beta version of AdClip’s first wireless product, the Wireless Wallet
    PerlWMLXML
Education
MS in Philosophy: Logic, Computation and Methodology Aug 2004 - May 2011
Thesis: Automated Diagrammatic Reasoning: A proof­checker for the language of E
LogicGame TheoryComputability TheoryDecision TheoryPhilosophy of MindData Structures
BS in Information and Decision Systems Aug 1995 - May 1999
3.67 QPA (4.00 scale)
Data StructuresAlgorithmsSystems DesignDatabase TheorySoftware EngineeringOrganizationsStatisticsEmpirical Research MethodsPolicy AnalysisSQLJava
Publications and Presentations
Trainings and Certifications
Sun Certified Programmer 2000
Java
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 BootJavaReactJavascriptJQueryElastic BeanstalkCloudWatchS3IAMRDSMySQL
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.
JavaMaven
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.
JavaJavaCC
CodersCV 2008
Created a better visualization of a developer's skills than the traditional resume, and captured 2,000+ sign-ups in 3 months
JavaMyBatisSpringJSP
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.
JavaXSL
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.
JavaWebworkHibernateMySQLJavascript
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.
JavaStrutsHibernateJSPJavascriptSQL
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.
PHPMySQLSQL
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.
PHPMySQL
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.
JavaJMFSwing
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
Skills
Backend
Spring BootHibernateMyBatisNodeJSExpressJSRabbitMQSpring
Frontend
ReactAngularSCSSJQueryGWT
Languages
JavaGroovyJavascriptPythonPHPSQL
Devops
MavenGitGitlab CIDockerKubernetesOpenShiftJenkinsSplunkElastic SearchAnt
Data Stores
OracleSQL ServerMongoDBMySQLIngres
Tools and Libraries
MahoutShedlockGrinderSeleniumCucumberJUnitJavaCC
Patterns and Specs
OAuth2ResponsiveMicroservicesEvent DrivenReactive
AWS
Elastic BeanstalkS3CloudWatchLamdaEC2RDS