Experiences

EDGE PRO

  • Built and maintained flagship app Edge Pro and other dashboards using AngularJS and Angular 8.
  • Incorporated Google's reCAPTCHA enhancing data security.
  • Incorporated third party libraries such as Highcharts for consistent, high-qaulity charts.
  • Created automation tools using C#, reducing manual data entry and allowing for instant client onboarding.
  • Integrated Google APIs for generating spreadsheet reports.
  • Setup liqubase for database migrations allowing for the creation of seperate developer environment.

These are some of the highlights working at GPN Technologies:

EdgePro - Helped build and maintain EdgePro. The eye care industry's leading analysis software provides easy-to-use dashboards and reports on practice performance, so eyecare practices can make smart, profitable decisions. EdgePro is powering over 10,000 locations, analyzing over 350 million transactions. The legacy version of EdgePro was built using AngularJS, while the modern version was built using Angular 8. Worked on both versions, taking advantage of Highcharts for quality and consistent charts. Worked on both site responsiveness for use on all devices, as well as site print view for clean pdf reports. Added in Google's reCAPTCHA protecting GPN Technologies from fraud and abuse while keeping legitimate user experience unhindered.

Developer Environments - Before working at GPN Technologies, there was no environment setup for developers. This led to more bugs as develops couldn't test out their code till it hit production. After working at GPN Technologies, there are now environments for developers to work in knowing that their local results will match production. This was accomplished by adding in Liquibase, a database migration tool. This allowed for a developer environment with the same database schema and initial data as that of the production database. Started a test driven developement by creating unit test for existing code and starting an initiative to add tests going forward for all new code.

Acuity to NetSuite - GPN Technologies used Acuity Scheduling for client onboarding, and NetSuite for Cloud based business management. Employees would have to manually copy data from the Acuity Scheduling system to the NetSuite system. The took a long time and was prone to human error. By building the Acuity to NetSuite automation tool, GPN technologies saved many hours a week by automating the process. This also led to more accurate results. This was built using a .NET Console App. The Acuity to NetSuite automation tool was complex requiring integration with multiple systmes. In addition to integrating with Acuity Scheduling and NetSuite, it needed to integrated with Google Sheets for generated reports and Jira for controlling for onboarding status. This was achieved by using Google APIs for Google Sheets integration and Jira webhooks for Jira integration. This also required the use of Fuzzy Matching to match up clients from Acuity to Clients in our database.


U.S. Citizenship and Immigration Services
CPMS

  • Designed and implemented REST APIs. Using the Java Spring Boot framework, to create Spring Applications.
  • Created and edited Database tables in Oracle interfacing with it using JPA and Hibernate as an ORM.
  • Rewrote legacy services written in .net to our modern system written in Groovy.
  • Automated manual processes aiding in reduced costs and improvements to accuracy.
  • Built smart functionality to anticipate applicants intentions, saving costs, increasing applicant throughput, and overall customer satisfaction.
  • Documented all work in Confluence for clear communication and knowledge transfer within the team and for anyone else who will eventualy work on CPMS.

These are some of the highlights working at USCIS's Customer Profile Management System:

CPMS - Helped build and maintain CPMS 2.0. USCIS's Customer Profile Management System or CPMS for short, serves as a person-centric repository of biometric and associated biographic information provided by applicants, petitioners, requestors, and beneficiaries who are issued a secure card or travel document identifying the receipt of an immigration benefit. CPMS was built with a micro service design pattern. Written in Groovy, leveraging Spring Boot to easily create Spring Applications, and using JPA and Hibernate as an ORM to integrate with Oracle. Working on CPMS can be broken down into four parts:
  • Creating new REST endpoints as well as modifying existing endpoints.
  • Writing queries for both data insertions as well as data retrievel.
  • Integration with external partners.
  • Rewriting legacy Services.
Endpoints had to take into account authorization, as well as being able to handle failures at each step of the process. Queries were written for saving data in both Oracle for relational primitive data, and Amazon Simple Storage Service (S3) for more complex Biometric data such as Photos and Fingerprints. We integrated with our external partners using Apache Kafka while leveraging Amazon Simple Queue Service (SQS) for sending messages and retrying failed messages. Rewriting services from our legacy system entailed tracking down functionality written in .net using a stored procedure approach and converting it in our new system building the Entities and and queries to replace those stored procedures.
Automated G-1273 Data Edit requests - Information in CPMS is derived from other USCIS systems and there is a process to update records during the adjudication process. During the adjudication process, an officer may request a data edit. If a data correction to CPMS is deemed necessary, the officer submits a G-1273 Data Edit request form to the Biometrics Division, which then makes the necessary update to the CPMS database. Whenever incorrect data was present, it was up to the officer to sumbit the G-1273 request. This wasted a lot of their time as well as relying on them to catch these errors. Many of these error can be detected in our system as they come in and a request can be automatically entered into the system. That's where the Proactive G-1273 Automation came in. By catching discrepancies within an applicant's data, we were able to create the requests without the need for human intervention.
Smart Functionality - CPMS is used at hundreds of USCIS offices worldwide having applicants come in for many different reasons. To save on cost and time, USCIS wanted smart functionality were we can figure out the purpose of an applicant's visit as well as filling out any information we had on the applicant simply based on the applicant's data and which office the applicant was at. This would reduce the amount of questions officers would need to ask applicants as well as prevent inaccuracies in their applications.

U.S. Citizenship and Immigration Services
myAccount

  • Helped build the myAccount identity provider in React.
  • Added in responsiveness for mobile devices as well as for the USCISNow app.
  • Wrote UI to be 508 Compliant for accessibility as well as usability.
  • Redesigned entire site navigation for use internally and externally.
  • Built the UI for the Identity as a Service (IdPaaS) system.
  • Created the performance testing suite for myAccount using JMeter and Node.js.
  • Identified key areas of improvement for increased Security as well as ideal user Experience.
  • Created smart reusable components for cleaner code and backwards compatibility.

These are some of the highlights working at USCIS's myAccount identity provider:

myAccount - Helped build and maintain the modern version of myAccount. myAcount is an Identity Provider providing accounts and authentication to public facing sites and apps across USCIS. Built as a Single Page Application in React, myAccount loads the UI once and then only loads data when pages change. The means for faster page loads and less network traffic leading to smoother user experiences. Section 508 of the Rehabilitation Act mandates that Federal agencies must ensure that their technology is accessible to employees and members of the public with disabilities to the extent it does not pose an “undue burden.” This requirement creates an additional challenge when developing the user interface. Some of these requirements include making sure the site is fully keyboard accessible and designed with color blindness, screen readers, and people with physical impairments in mind.
Rewrote site Navigation - Navigation on the site had many flaws. It required loading data under certain circumstances, there were many rules and exceptions, and many exceptions to those exceptions. We were constantly needing to fix it. One day I took it upon myself to tack this problem. I broke down the problem in to two simpler problems. They were:
  • What assumptions can I make about a user that will determine where they belong on the site?
  • Should a user be directed to a specific page?
By breaking down the problem, I was able to find a clean solution. To the first question, I was able to make sure that all the relevant user data was loaded before any navigation takes effect. With that in mind, I only needed to tackle the second problem. Although that was more complex, I was able to break down that problem as well. All I needed to do was go through each page that a user can be directed to and simply list the conditions under which they would be redirected there. If they were under those conditions, they would be redirected, if they weren't they'd move on the the next page in question. If they weren't redirected to any of the pages, that meant they were allowed to be where they tried to go in the first place. This simple system allowed us to add in many more conditions since it has been implemented and hasn't failed since.

Created performance testing suite - myAccount is used by every immigrant filing forms online. In order to make sure it would hold up to such usage, I was tasked with creating a performance testing suite that we can run to simulate such usage. I used JMeter for the task. Although it was able to accomplish 90% of the job. Since we need to confirm emails as part of account creation, I couldn't simulate that with JMeter alone. To solve this problem, I wrote a Node.js script to generate the new account and confirm the account. Then before we ran the JMeter scripts, we would run the Node.js scipt and use the confirmation tokens from those emails. This allowed us to fully simulate a user creating a new account.

Created smart reusable components - One of the things I love most about coding is building things that last. One specific thing that I had the opportunity to code while working on myAccount, was a smart table component. The was a table that was meant to allow for easy formatting of columns as well as sorting, pagination, visibility and useability. I designed it to work directly from an api response, so you can send the information straight to the table with the correct column structure and formating rules. Making the lives of myself and my fellow developers that much easier.


Capital Technology Group

  • Worked under the BDSO and APIS contracts while working for CTG.
  • Helped prepare for the IBM and CTG Joint Falcon technical challenge, a contract worth $279M which we ended up winning.
  • Mentored for the CTG summer inernship program.
  • Achieved all my quarterly learning goals some of which include learning Groovy, Git, Docker, Ruby on Rails, JMeter, S3 and Managing Skills.

These are some of the highlights working at CTG:

Contracts - CTG is proud to support a diverse array of federal government customers who value innovation, creativity, and excellence. Their clients appreciate their commitment to delivering high-quality services that enhance operational efficiency and drive mission success. To aid in this process I worked as a federal government contractor on both the BDSO contract and the APIS contract.

Technical challenges - In order to win contracts CTG needs to compete in technical challenges. CTG will work with other companies on these challenges. I helped prepare for the Falcon technical challenge. This required putting in extra hours during both nights and weekends. In the end along with IBM, we were awarded the contract.

Mentoring interns - CTG runs a summer internship program. I was lucky enough to be selected to be one of the mentors for our interns. As part of the program I worked with interns teaching them some of the programing tips I've learnt throughout the years, as well as show them how to avoid some of the mistakes I had made in my early years. It was quite a rewarding experience, one that I'm glad to have had, and one that I look forward to having again in the future.

Continued education - CTG puts a lot of emphasis on continued learning. It has pushed me to learn a lot and I'm thankful for it. I have always known how to use Git, but there were a lot of commands I didn't know. I also did not have a fundemental understand of how Git opperated behind the scenes. After taking the course The Complete Git Guide: Understand and master Git and GitHub, I felt like I got a much deeper understanding of Git. I also learned Docker using the Docker & Kubernetes: The Practical Guide course. When I was tasked with created a performance testing suite, I used Learn JMETER from Scratch on Live Apps -Performance Testing. When I was going to mentor for the internship program, I read The Effective Manager CTG also has expressed interest in my mastering AWS. To achive this, I started by learning Amazon Simple Storage Service (S3). I did this by building a User Interface with S3, that would show me all my folders and files, allow for me to upload new folders and files, delete them, move them and rename them.


Technical Skills

Programming languages:
JavaScript/TypeScript
Java
Ruby
C#
Programming frameworks:
React.js
Node.js
Express.js
AngularJS
Angular 8
Java Spring
.Net
Querying languages and tools:
PostgresSQL
MySQL
Oracle
Redis
Sequelize
Cloud tools:
AWS Simple Storage Service (S3)
Other languages and tools:
HTML5
CSS
Tailwind
Google APIs
Highcharts
Git
Kafka