Principal Software Engineer
2/1/2021 to present
Assignment at Apple
Technical lead of a cross-functional team (BA, backend, frontend, QA, and DevOps) creating an
internal web microservices application.
Led software development process by introducing code reviews and automated testing.
Met with business stakeholders and BA to define requirements and sprint plans then break down into technical stories.
Our application consists of a Java 17 Spring Boot Webflux backend with Angular frontend,
DynamoDB and
MySQL (via RDS) databases,
hosted in AWS utilizing load balancers (NLB),
S3,
EKS,
OpenSearch,
Lambdas, and
CloudWatch.
- Built an automated CI/CD process using Apple-internal tooling. Introduced Kubernetes by
migrating from ECS to EKS and built scripts to
automatically build and deploy on push. The system supported pull
request builds and branching to support parallel hotfix and feature development automatically.
Documented this system so that it could be
applied to another project in our same organization and trained devops team on its configuration. Initially
using CloudFormation, worked with internal team to shift later to
Pulumi/Python.
- Initial development or maintenance of integrations with multiple Apple-internal systems.
- Evaluate Karate for API and UI end-to-end
tests and build prototype involving authentication and train team on its use. Later, we ended up switching to
Cypress for UI testing, and for that I also
built a prototype and trained team on its use.
- Optimized settings of DynamoDB, RDS, EC2 (EKS nodes), and OpenSearch to reduce AWS costs.
- As the team and stakeholders were widely distributed (India, US, Ireland),
I would ensure appropriate documentation for all
requirements and helped team to re-organize Slack channels
and commit to using Slack and wiki consistently.
Via: Nespon IT Services
Contract - Software Engineer; 4/2020 to 1/2021
Lead Developer and Architect for enterprise sales quoting applications team.
Development of code and team best practices for supporting microservices:
- Research, prototype, and implementation of migration of REST (Spring MVC) microservices from custom embedded
Tomcat to Spring Boot 2 architecture. Developed Gradle plugin to share common configuration
implementing CI in Windstream's specific environment. The services support the quoting applications and
utilize Redis, MongoDB, and Oracle databases.
- Led team's migration from microservices on VMs to Docker images on Kubernetes (Rancher) deployed via
Azure DevOps pipelines. Built and documented template containing technologies relevant to the team.
- Set up and maintain Jenkins continuous integration server on Linux and Sonatype Nexus 3 for proxying and
publishing npm, NuGet, Docker and Maven artifacts. Assisted management of TeamCity CI jobs.
- Led team's migration of Mercurial/Atlassian/TeamCity/Jenkins toolset to new company-wide standard on
git and Azure DevOps. Built scripts to convert Mercurial to git and template projects and Azure pipelines. The
Nexus 3 server I set up was migrated to the organization-wide architecture team as it was adopted in the
microservices and Azure DevOps infrastructure.
Main quoting application used by direct sales:
- Primary team contact for architectural design and integrations with other applications. Assist business
stakeholders in requirements design for our application to ensure a cost-effective solution that meets
business needs.
- Rewrite JSF-based UI of the company's primary internal sales quoting application to AngularJS
with JSON backend implemented in JAX-RS+Groovy on Weblogic. The new backend also allowed replacing
Selenium-based integration testing with direct API testing, reducing automated testing times from hours to
minutes.
- Part of a team to integrate the application with Salesforce, converting some existing code utilizing Oracle
PL/SQL to SOAP/SOQL queries
- Plan, architect, and implement a Groovy rules framework to replace proprietary usage of IBM JRules
system. Manage and implement the actual migration with a few other developers.
- Performance optimization project involving Oracle table and index design, Guava and Redis caching. For Redis
I was involved with technology selection/justification, configuration and deployment scripts on Linux.
- Team lead for project working with IT infrastructure to move main application and all supporting microservices
to a different data center at a different domain. Included assisting RHEL OS upgrade and Oracle RDBMS upgrade including
writing and testing initial datapump script.
Simplified portal for external (indirect) sales:
- Selected technologies, design and build backend and frontend for a sales quoting application used by
external sales users and API for quoting aggregators
- Backend provided SOAP (JAX-WS) and REST (JAX-RS) web services using Jetty and CXF, implemented in Groovy
- Frontend written in JavaScript, using AngularJS and Bootstrap with Grunt, Bower, and npm
- Configure services and Apache on Linux development and production servers
Senior Staff Engineer
11/2011 to 08/2013
Staff Engineer
12/2003 to 10/2011
- Lead software design and development process for multiple projects primarily under Office of Naval Research funding:
- Java framework for a modular vehicle diagnostics and telematics
system. Used Java 1.7, JDBC, SQL, XML, and networking standards SAE J1587, J1708, J1939, and CAN.
US patent 8175848 granted for this project.
- Java Swing-based maintainer's interface, and data synchronization software
- Android version to collect and store data from light vehicles (OBD-II / J1979)
- Projects have been deployed in US Marine Corps, commercial applications, and a spin-off company,
Vnomics
- Introduced and facilitated Agile programming
(Scrum model)
- Work with MySQL databases on Linux and SQL Server databases (100s GB+ size) in Windows.
- Developed and implemented team workflow and release management processes (continuous integration).
- Interview, hire and manage student co-ops (paid internships).
- Evaluated, configured and maintained development services (SVN,
Trac,
Apache, ScrumWorks, TeamCity,
and MySQL) on a Linux Ubuntu server.
Software Co-op
5/2002 to 11/2002 + 5/2003 - 8/2003
- Started design and coding for vehicle monitoring application and maintainer's interface, described above.
Web Application Developer Co-op
5/2001 to 8/2001 + 11/2001 to 2/2002
- Used JSP, JDBC, Oracle DB, JavaScript, CSS, and HTML to create intranet
web applications
-
Worked in a project to redesign the
Tulsa Historical Society website (since
redesigned)