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.
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.
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.