Eric George, Developer in Denver, United States
Eric is available for hire
Hire Eric

Eric George

Verified Expert  in Engineering

Software Developer

Denver, United States

Toptal member since October 19, 2018

Bio

Eric is an expert Java software engineer specializing in back-end and microservice development as well as workflow/release engineering. Comfortable with a broad set of libraries and environments, he is also skilled in CI/CD and cloud deployment. Additionally, Eric focuses on test-driven, domain-driven, and object-oriented design.

Portfolio

Computershare
Java, Spring, Spring Boot, Oracle, SQL, React, REST, Control-M, Spring Data JPA
Exclamation Graphics, Inc.
HTML, Java, Spring, Node.js, React, Docker, Java 11, Spring Boot, PostgreSQL...
U.Group
Java, PostgreSQL, Kotlin, JSON Web Tokens (JWT), Spring, Spring Boot, REST...

Experience

  • Java - 19 years
  • SQL - 16 years
  • PostgreSQL - 8 years
  • REST - 7 years
  • Git - 7 years
  • Spring - 7 years
  • Docker - 6 years
  • REST APIs - 3 years

Availability

Part-time

Preferred Environment

Git, MacOS, Spring, IntelliJ IDEA, Java, SQL, PostgreSQL

The most amazing...

...project I've built on my own was an event scheduling service which was later licensed and used as part of a database synchronization product.

Work Experience

Senior Full-stack Engineer

2023 - 2024
Computershare
  • Ported a set of legacy Java applications from a corporate acquisition into a Spring Boot/Oracle application. Processes consumed pricing data from vendors such as IDC, Bloomberg, and JP Morgan and calculated daily pricing variances.
  • Tuned performance for a React/Spring Boot/JPA/Oracle application. I analyzed performance on slow sections of the UI and tuned SQL queries. Also, I consolidated wasteful loops and shifted the API to be more RESTful.
  • Participated in multiple projects, some using Scrum and some Kanban. Used Azure DevOps for ticketing, source versioning, CI/CD pipelines, and deployment.
  • Performed production support for crucial, time-sensitive processes. Support required knowledge of Linux command line, Control-M scheduling, and Oracle/SQL.
Technologies: Java, Spring, Spring Boot, Oracle, SQL, React, REST, Control-M, Spring Data JPA

Java Web Developer

2022 - 2023
Exclamation Graphics, Inc.
  • Worked in a team, building new features into the company's flagship Identity access management product. Added new features, including automating a large part of the users' workload. Worked at every level of the stack, but mostly Java and SpringBoot.
  • Stabilized codebase by introducing Spring best practices, Lombok annotations, and Java Stream notation. Simplified and sped up unit tests by introducing better mocking strategies and test data management.
  • Identified and corrected a major security vulnerability that affected every REST endpoint, including creating robust integration tests to be certain of the fix.
  • Mentored several new-to-Java programmers who had come from a Node.js background and showed them how to avoid basic mistakes.
Technologies: HTML, Java, Spring, Node.js, React, Docker, Java 11, Spring Boot, PostgreSQL, Spring Data JPA, HATEOAS, REST, GitLab CI/CD

Senior Software Engineer

2018 - 2021
U.Group
  • Developed an application to allow DoD Intelligence officers to track international financial transactions to determine national security risks from foreign investments. Utilized Spring REST microservices, Postgres, Elasticsearch, GraphQL, and React.
  • Developed an application to help experienced government contractors mentor small companies who aspire to be government contractors. Used Spring REST microservices, Postgres, and React/TypeScript.
  • Developed a large data aggregation service that pulled data from government databases such as FPDS and SAM and correlated it with public financial data sources such as Factset. Utilized NiFi, Postgres, and AWS API Gateway.
  • Built and managed CI/CD pipelines using Concourse for several projects triggered by private GitHub repositories and sent notifications to Slack. Used Bash scripting as well as customized Docker images delivered with AWS ECR.
  • Redesigned a large, monolithic Terraform deployment script to be more modular with less repetition and faster deployments to AWS (S3, ECS, ECR, RDS, Secrets Manager). Integrated this with a newly rebuilt Concourse pipeline.
Technologies: Java, PostgreSQL, Kotlin, JSON Web Tokens (JWT), Spring, Spring Boot, REST, GraphQL, Microservices, Amazon S3 (AWS S3), Amazon Elastic Container Service (ECS), Amazon Elastic Container Registry (ECR), Amazon API Gateway, AWS Lambda, Terraform, Concourse CI, Apache NiFi, Spring Data Elasticsearch, Spring Data JPA, SQL, JUnit, Testcontainers, Docker, Docker Compose, React, TypeScript, Python, PostGIS, APIs, JavaScript

Senior Software Engineering Consultant

2012 - 2018
I.S. Consulting
  • Built a large enterprise application using Java, Postgres, and GWT from prototyping through maintenance. Made design and architectural decisions and provided guidance and code reviews for several offshore teams.
  • Facilitated a migration into a cloud architecture by building REST-based microservices with Java8, Spring Boot, Redis, and RabbitMQ. Created templates and scripts for building and deploying services into an OpenShift/Kubernetes cluster.
  • Implemented single sign-on with Keycloak and LDAP to function across multiple applications using Spring Security and OpenID. Authentication of REST endpoints utilized the same mechanism but created JWT bearer tokens.
  • Performed performance analysis and optimization of Java and SQL code to improve the application's overall responsiveness for an event-sourced data structure. Created documentation and guidelines for the team to use for performance tuning.
  • Created an Android application for receiving payments and streaming advertisements on a tablet deployed into taxi cabs. The application interfaced with both REST-based data service and the taxi meter.
Technologies: Groovy, Keycloak, Kubernetes, OpenShift, PostgreSQL, Hibernate, JPA, Spring, Enterprise Java Beans (EJB), SQL, Java, APIs

Senior Software Engineer

2006 - 2007
OpenLogic
  • Built testing and installation scripts for various collections of different open source projects. The scripts would configure different applications to work together so users could install a whole technology stack.
  • Updated the Swing-based Java user interface for displaying and manipulating currently installed software stacks.
  • Tested submissions for bug bounties the company awarded for solutions to interoperability problems with open source software.
Technologies: Bash, Sh, Groovy, Java

Senior Software Engineer

2001 - 2005
Computer Research Inc.
  • Designed, implemented, and deployed a Java/JSP-based web application for conducting online purchases of municipal bonds. Interfaced with legacy COBOL code and DB2 databases. The application handled multi-million-dollar transactions securely.
  • Designed and implemented a system for handling orders and order allocation requests from FIX data sources to legacy COBOL applications. The application used Java and Python, raw socket programming, and Sparc/Solaris and Linux deployments.
  • Collaborated with developers on a project for handling high volumes of financial purchase orders via SOAP web services. Utilized Java, customized ant tasks, XML, XML-Schema, FIXML, Axis 1.1, JBoss, Apache, and Linux.
  • Acted as the primary system admin for five production Linux systems and one Sparc/Solaris. Set up and served as the administrator for our internal CVS repository. Designed and documented source repository branching and merging strategies.
  • Mentored junior developers and led them on a project using screen-scraping technology to interface modern web applications with legacy COBOL applications.
  • Worked closely with the QA department to develop, document, and implement release management for projects which required multiple components in different languages (e.g. Cobol, Java, and Jython).
Technologies: IBM Db2, Solaris, AS/400, SOAP, Jakarta Server Pages (JSP), HTML, Python, Java

Technical Team Lead

1999 - 2001
Exactis.com
  • Led a team of developers working with Swing, JSP, and Java-RMI to develop sophisticated user interfaces for content management.
  • Spearheaded the effort to bring test-first techniques to the development team and to provide infrastructure for running automated tests.
  • Worked on R&D team to find newer and faster templating tools for building high-volume email mailings.
  • Supported QA and Perl development teams to interface with Java and Linux-based products.
Technologies: Solaris, Linux, LDAP, Oracle, Jakarta Server Pages (JSP), Swing, Java

Software Engineer

1996 - 1999
I.T.I.C.
  • Developed client/server applications and 3-tiered applications for Windows with Delphi, MS SQL Server, and Paradox databases.
  • Contributed to a large, multi-threaded C++ application for handling huge collections of scanned images.
  • Performed network and email server maintenance for the company.
  • Built audio capture application for recording voice content in high-fidelity, then encoding and sending the audio files via email.
  • Created reusable authentication and authorization framework for Delphi applications allowing for enabling, disabling, or hiding screen components dynamically.
Technologies: SQL, HTML, Delphi, Java

Source to Image Builder for Dropwizard

https://github.com/egeorge-nolab/s2i-dropwizard
I created a builder image and associated OpenShift templates for deploying Dropwizard REST services into an OpenShift cluster.

This allows for the creation of CI/CD pipelines for this type of application in a Kubernetes context.

Enterprise LDAP Integration

As part of my work building an enterprise application for a healthcare software company, I set up the security for the app to utilize the existing LDAP server for authentication.

I designed the LDAP schema to meet the needs of the new project, and also be compatible with the structure of the existing LDAP server, which was relied upon by other legacy apps. I configured Spring Security in the new app (which was EJB-based) to use LDAP.

Once the code was complete, I created scripts and LDIF files to bootstrap new installations as well as automate Dev and QA deployment with a standard set of test and demo user credentials.

Mobile Payment and Ad Streaming App

I designed and built an Android application that accepted card-swipe payments for taxis on a tablet mounted in the backseat. The application integrated with the taxi meter using raw serial communications to capture trip duration information.

During the trip, the tablet would play video advertisements. It would receive push updates of both the application as well as the advertising content.

Migrated Multple Web Applications to use a Single Sign-on Solution

We had several web applications, some running Spring Boot and one using EJBs and Spring Security. In order to make these applications function seamlessly together without users having to log into each, I implemented a single sign-on solution to consolidate the authentication.

I configured Keycloak as my identity provider, using an existing LDAP server for its data store. Since all of the applications used Spring Security, I was able to configure that using the appropriate OpenID adapter.

One of the challenges with this migration was that the EJB application needed to maintain the ability to authenticate directly against LDAP. This was to allow for a smooth migration in case the new authentication scheme did not work.

Event Management System

I worked for a startup that had to process a huge number of incoming emails. The emails would be sorted by one script, pushed to various servers where a cron job would pick them up and create database records for some of them. Then a similar cycle would send the data along further.
With all of the cron jobs polling and checking, it took over 30 minutes to process something that took only a few seconds of computer time.

I saw there was a better way, so I built an event management system with Java that could trigger a task remotely when it was needed, eliminating all of the wasteful polling and waiting. The product used Java-RMI to communicate between servers and XML to define the jobs (both new technologies at the time).

I eventually licensed the product to a company who made software to synchronize data between disparate relational databases. We enhanced the product to allow for embedded Jython scripts and wrote connectors for the transaction logs of major database systems.
1998 - 2003

Bachelor's Degree in Mathematics

Metropolitan State University of Denver - Denver, CO

Libraries/APIs

REST APIs, React, Spring REST, Java Message Service (JMS), Node.js

Tools

IntelliJ IDEA, Git, Concourse CI, Jira, Postman, Keycloak, Shell, Terraform, Amazon Elastic Container Service (ECS), Amazon Elastic Container Registry (ECR), Apache NiFi, Docker Compose, RabbitMQ, GitLab CI/CD, Control-M

Languages

SQL, Java, Groovy, Bash Script, Java 8, Sh, Bash, Delphi, Kotlin, GraphQL, TypeScript, HTML, JavaScript, Python, CSS, Java 11

Frameworks

Spring Boot, Spring Security, Spring, JSON Web Tokens (JWT), Hibernate, JPA, Jakarta Server Pages (JSP), Swing, JUnit, Ant Design, Angular, Spring MVC

Storage

PostgreSQL, Relational Databases, Databases, Spring Data JPA, PL/SQL, IBM Db2, Amazon S3 (AWS S3), Spring Data Elasticsearch, PostGIS, MySQL

Paradigms

Microservices, REST, Test-driven Development (TDD)

Platforms

Amazon Web Services (AWS), OpenShift, Docker, Eclipse, MacOS, AS/400, Solaris, Oracle, AWS Lambda, Kubernetes, Linux

Other

LDAP, Shell Scripting, APIs, SOAP, Mathematics, Amazon API Gateway, Testcontainers, Domain-driven Design (DDD), Enterprise Java Beans (EJB), HATEOAS

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring