Projects:

Panda Pocket

Description:
Panda Pocket is an app that allows users with a GitHub or Google account to keep track of a their monthly expenses. There are various charts that allow Users to see any expense data they may be curious about at a glance.

Tech Details:
Frontend: React, Tailwind, Recharts, Lucide, HeadlessUI
Backend: NextJS, Prisma DB, MongoDB

Contributions:
I worked with a friend on this project, we both were involved in various E2E processes, creating several pages and RESTful APIs from scratch.

Takeaways:
NextJS is a valuable library based on the face it can support both Server Side Rendering (SSR) and Client Side Rendering (CSR). It is also nice being able to use javascript in the entire stack. TypeScript is invaluable for the strict type checking it provides. Prisma was an ORM that was quite easy to use and MongoDB was also relatively straightforward for what the project itself required.

Links:
Repository Live Deployment

Portfolio Website

Description:
This is currently the site you are on. This project was created to provide a platform to showcase any future projects.

Tech Details:
This project is aimed on focusing on refining the fundamentals, involving understanding and writing basic boilerplate from scratch. The site itself is built purely off of HTML and CSS. Seeing as there is minimal user interactivity and the site itself is not very complex, other complex libraries and frameworks were not necessary. SVG Icons were taken from Lucide.

Contributions:
This is a project that I have completed from scratch by myself.

Takeaways:
Reviewing several HTML and CSS fundamentals was incredibly useful. It was an eye opener how far HTML and CSS can take you without involving Javascript.

Links:
Repository

Forcepoint Hackathon Third Place: PolicyAI

Description:
Forcepoint Hackathon involving AI, where my team worked on an AI chat bot to help users work through Forcepoint ONE's most complex page - the Policy Page.

Tech Details:
A project involving AWS bedrock and LLama, configured to take in a user's structured prompt and generate a policy that aligns with what the user wants.

Contributions:
One of the members of my hackathon team, I mainly worked on the chat overlay as well as helping engineer the prompt that users would enter in order to generate a policy.

Takeaways:
I was able to experience deploying on AWS for the first time, as well as interact with a LLM more deeply other than basic github copilot use at work. Though hackathons are stressful due to their very short deadlines, it is extremely rewarding once you get your POC working and allows you to see the potential in the product if more time was allocated. This influenced Forcepoint's future annual roadmap, with our hackathon project being added to it.

Forcepoint ONE cloud DLP integration with Forcepoint onprem

Description:
Worked on key annual roadmap item to unblock customers migrating from Forcepoint legacy DLP to Forcepoint ONE cloud DLP.

Tech Details:
A complicated project that involved coordination from my team as well as Forcepoint's overseas DLP team. The solution was very specific and worked only under the conditions that we currently operated; The idea was to have a text file that contained the Forcepoint DLP pattern identifiers and descriptions. Utilizing this text file we could populate the front-end and send out a request to Forcepoint's DLP engine utilizing the specificied ID to process data. This was smart as it reduced cost because it did not require us to poll their endpoint to retrieve their patterns. This only worked because Forcepoint's DLP patterns very rarely changed, thus allowing us to very rarely update the text file.

Contributions:
In charge of the project on my Team. Involved in setting up sync up meetings between members of the Forcepoint DLP team and me. Had to work on a solution on how to fetch and utilize Forcepoint's special DLP patterns.

Takeaways:
Coordinating with cross-organizational teams is difficult. Each team has a different culture. It is important to be adaptable and understanding of the differences in order to work well together.

Rich Text Editor Alerts

Description:
Adding support for a WYSIWYG (what you see is what you get) editor for admin users to customize our previously plain text block pages for Forcepoint ONE.

Tech Details:
This was a deceptively complex project at work, where I updated our frontend with a new rich text editor (quilljs). This was a lot more involved as it required me to also update our endpoints to comply with standards to keep any stored code safe through sanitization, which disallowed any dangerous HTML which would run unsafe code, such as the <script/> tag. This involved a lot of changes across the back-end and front-end from me, which I believe was a good experience learning parts of our application that were not part of my specialty, allowing me to become a more versatile engineer.

Contributions:
Sole contributor to this project. Had to research which sanitization libraries we utilized in our front-end and back-end to ensure that we had correct validation for out REST endpoints.

Takeaways:
Never underestimate simple tasks, as it may involve code written by people no longer with the company. Taking in to account best practices and security could further extend the time to completion.

DLP Redesign

Description:
A complete revamp of the front-end of Bitglass/Forcepoint's DLP (Data Library Pattern) Page.

Tech Details:
This was my first major project at work, where I worked on updating a complex, legacy jQuery page to React. I was not comfortable with jQuery, having never really used it before and getting up to speed to release this project in a timely manner was challenging.

Contributions:
Worked with mentors to tackle the complex challenge of maintaining existing functionality on the page while allowing for easy extension for any projects in the future. Completed the work mainly by myself but mentor guidance was provided along the way.

Takeaways:
Collaboration is key to success. Learning a new technology is not trivial. I was able to reduce the time to interactive metric by 5 seconds down to 2, greatly improving the end user experience.