Full Stack Engineer
Seeking Full Time and Contract roles
Blog
Django Templates Language : Simple & Powerful
May 24, 2024
As always, check out the design doc for my current project, CS Profiles!
Beginning Implementation of New Site
I recently implemented the skeleton for my redesigned professional website! Teased in my previous post, I've implemented the Home Page along with a placeholder page to display some of what's
to come with the other pages. You can check it out in the video below, or check out some of the code on GitHub.
You'll notice that all of the placeholder pages follow a similar format. '[Page Title] - Coming Soon!', with a picture of the mockup below. As a first draft for the website, I just wanted
to get the Home Page ironed out and simply showcase what the other pages would be. At first, I thought I had to create HTML/CSS for each Experience, Project, Passion, and Blog page. But
through the power of Django's Template Language, I was able to create these four separate pages all out of one template!
It's really interesting how this works. It all starts with your URLs. In Django, when you describe a URL, you define a pattern for it, and associate a view which will load with whatever
data you pass to the pattern. Demonstrated below on Line 8 for my Placeholder template page, I specify one path which expects a string. I pass this along to the view as the variable page_name.
The view I've defined is called placeholder, which you can see on Line 14. Here we can do some validation* to check if
the page_name we're given is valid. If it is, then we setup our context with the necessary information. If it's not, then we load our context with an error message. Armed with our updated
context, we render the specified HTML template.
*Of course instead of checking directly for each valid page name, we could externally define an enum of valid page names and reference that, but since this placeholder route will be
overridden in future revisions, this is fine for demonstration purposes.
Below is the HTML for our placeholder template. It contains some unfamiliar syntax which comes from the Django Template Language. I'm able to inject logic with the use
of {% [logic] %}, or Line 14, and access context variables directly with {{ [context variable] }}, or Line 15. This enables me to ask, "Did I receive an
error_message?", in which case, render the error message and a link back to the home page. Otherwise, I can access the image_link and page_name and render
the appropriate 'Coming Soon' message and page preview.
There are a couple other things going on here, but that's the main power that I wanted to highlight. By defining a single generic URL, view, and template, I'm able to render multiple
pages! This is the ideal setup you'd want to use if you have a lot of pages which may load similar structured data. Think individual product pages for an e-commerce store, blog pages, etc.
Just define a generic template, and voila, all those many pages collapse into one.
What's Next
I'm currently working on learning / re-learning languages and technologies necessary for CS Profiles. To that end, I want to continuously publish any major learnings along the way.
So my next major step will be completing the Blog page for my new site, then hosting it with the Home / Blog pages completed. This way, my new portofilio site can stand on its own,
and I can show my activity / learning.
Next week, look for a post on getting started with Django in AWS / updates on the blog.
Initial Django Site Redesign, + The Usual
May 10, 2024
As always, check out the design doc for my current project, CS Profiles!
Really exciting week this week. Busted through a lot of interview problems, now I feel like an expert on Dynamic Programming. Found a site called WellFound which centers
around Startup job postings, so I've started to shoot out applications for Full Stack positions on there. It feels like the perfect place to search since I really value ownership,
independence, and a fast paced environment.
Also, decided on a great introductory Django project : A redesign of this site with Django! I've been meaning to reformat this for a while, so with all the content already there,
it'll be a great chance to extract some of it and create a new structure with Django. I've setup all the necessary Models and Views to support the Home page. It's been a lot of
fun figuring out Django, and I'm excited to showcase my progress with it next week! I've included some early mockups for the site below.
Mostly Interview Prep with a little bit of Learning
May 3, 2024
As always, check out the design doc for my current project, CS Profiles!
This week was mostly filled with all sorts of interview prep. I'm interviewing for full stack positions, so I'm covering quite a range of content in my preparation : anything and everything
to do with data structures and algorithms. My favorites right now are Dynamic Programming problems, since they've given me trouble before. Alongside these fundamentals, I'm consistently brushing
up on my SQL and Javascript interview questions as well.
Alongside this preparation, I completed the Django tutorial this week, and have begun to experiment with it on my own. Planning to release a sample Django project by the end of next week.
As always, good progress towards interview readiness, as well as my project. Stoked for what's next!
HTML / CSS Fun and Interview Prep
April 26, 2024
First Certification Project
This week I completed the first certification project for the Responsive Web Design course from FreeCodeCamp. A nice fun way to go back over some
of the frontend building blocks! It's a simple exploration into HTML forms and basic CSS styling. Check out the site, or the code if you're so inclined. Again, this is in support of development for CS Profiles!
Interview Prep
More interview prep also! There's a nice range of full stack roles and more backend focused, so I'm tailoring my interview prep to each of them.
Centering on a mix of Javascript/React and Python at the moment.
Learning for CS Profiles, Leetcode-ing for Interviews
April 19, 2024
Recently, fortunately, I have had some interviews so I've spent a bit less time on the project and more time on Leetcode and general interview prep. It's always fun refreshing on algorithms / data structures. I enjoy the time constrained problem solving where you need to not only logic your way to a solution, but code it out too.
Besides that I've started to iteratively learn / refresh myself on the technologies I need for CS Profiles. Notably right now I'm working through the starter documentation for Django, and I feel excited to design a basic toy application with that soon. Also I worked through some HTML/CSS fundamentals and am excited to develop a small toy site with that as well. The general plan : learn enough to make the project; along the way, learn enough to make little projects to showcase my learning, then repeat! Overall, learning a lot, and enjoying it :)
CS Profiles : Design Decisions, Scope, Development Plan
We are moving forward into development! I spent time researching UI Frameworks, Application Server / Web Frameworks, Hosting Services, Databases, Web Servers, and all their integrations to get a hold on what technologies I want and how they would all work together. With this information, I’ve scoped out a development plan with a Beta Phase, MVP, and additional features. Below is the architecture diagram for the beta phase, which includes all the major technical components. I’ve opted for a non-scalable approach at first just to get the logic of everything out of the way, then will add that in for the MVP. If you care to see more about the development plan and architecture decisions, visit the Design Doc!
High priority is learning and developing, but something to get in the works early is a survey to gather Profile data from current engineers. This survey is dependent upon the database ‘schema’, so I’m working with django now to get a hold on how that interacts with the database. This will inform how I want to structure my database. Once I’ve got the structure sorted out, then I’ll be able to move forward with the survey, and further focus on development!
I’m very excited to architect an entire application from end to end, and it certainly has been an incredible learning process so far. There is so much that goes into building a full stack application, and the research / decision making is part of what makes the process so exciting. Stay tuned for weekly updates!
I've wanted to keep a blog for a while, and since I have a major project to track, I feel like now's the perfect time to start blogging!
I'm actively growing and learning as a full stack engineer, so as I find topics that interest me, I'll share my thoughts here.
That's it! A place to track projects and discuss interesting topics / ideas.
CS Profiles
Speaking of projects, I'm currently working on an exciting full stack project of my own creation! As I've personally been searching for my next Software Engineering role, I've wondered, "What KIND of software engineer am I?" There are so many variations : Full Stack, Backend, Game Dev, Machine Learning Engineer, the list goes on. Each one has a different skillset required, and a different kind of person who would best succeed in them. I've been able to determine for myself that I prefer Full Stack roles, since I love the adventure involved in the system design process, I derive joy from creating an engaging user experience, and I find fulfillment from solving the interesting technical challenges that come from the backend. Though in order to figure that out, I had to ask myself, "Where do I derive fulfillment from in work?", "What do these different roles actually look like?", "What technologies do they use / what should I focus on now?", etc. I imagine since I asked myself these questions, people in similar situations must be grappling with them too! Why not make something that could remove all the ambiguity and uncertainty when choosing a CS career path? A solution that guides you towards the career where you'll find the most success and greatest sense of fulfillment? Introducing : CS Profiles!
CS Profiles is a Computer Science personality test to determine what career path you're most likely to find success and fulfillment from. After taking a short quiz and getting matched to one of many Profiles, users can learn about what best suits them, and what makes up various CS careers. The project is currently in the late design stage. Next update will be end of this week with a couple of the next few Design Phase Milestones completed. Once the Design Doc is complete, I'll post a formal update on LinkedIn to request help with gathering data for the project!
You can find the Living Design, which contains the Philosophy, Architecture, Initial Logic, Design Tradeoffs, Timeline and more, here : Design Doc : CS Profiles
Website Improvements
I'm planning to overhaul the appearance and technical design of this site, so expect some changes and blog posts pertaining to that! Namely, I want to reformat this Blog section so it's easier to filter posts and each post has its own minipage. I also want to separate out a lot of the statically stored info from the index file and place it in a database; a practice that I'm going to employ with CS Profiles. I've had this site since the start of college, so it's about time I upgraded!
Experience & Leadership
Amazon : Software Development Engineer
April 2022 to September 2023 - Seattle, WA
Led architecture and development of a web application displaying Alexa skill routing model metrics. Onboarded Alexa scientists to offline llm experimentation platform. Enabled hundreds of API's to work with evolving LLM orchestration system. Worked with TypeScript, JavaScript, React, Python, Java, LangChain, and AWS CDK
Amazon : Software Development Engineer Intern
June 2021 to August 2021 - Seattle, WA
Implemented a generic benchmark framework to monitor resource utilization for Alexa’s HypRank and Shortlister models.
Enabled scientists and engineers to more efficiently develop iterations on the training stages for these models.
Integrated the benchmark framework with another intern's project to visualize the resource utilization.
Wayfair: People Analytics Co-op
January 2021 to June 2021 - Rochester, NY
Owned analytical reports on employee data, providing insight into employee performance based on company goals.
Used R, Python, SQL, analytical tools, and statistical methods to answer open ended questions about employee performance.
MITRE : Technology and Innovation Intern
May 2019 to August 2019 - Bedford, MA
Led and contributed to projects utilizing text, speech, and data analytics to improve efficiency of internal tools and employee performance.
Focused on gathering data, analyzing the data, and implementing algorithms to meet dynamic needs and design choices.
CSH : Evaluations Director
August 2021 to December 2021- Rochester, NY
Oversaw operation of CSH's (Computer Science House) Introductory Evaluations process. Introduced students to the organization, and assisted them
through their completion of the process's requirements. Served as a directional voice on the Executive Board for CSH as effectively the vice president.
Resolved various conflicts relating to behavioral or organizational concerns between members in order to foster a collaborative and inclusive
community.
CSH : Financial Director
September 2020 to Present - Rochester, NY
Supervise financial administrators and transactions involving house projects, maintain financial and inventory records of House capital and assets.
Plan and enforce a budget, hold a weekly meeting to discuss any financial activity of House. Meet with RIT administration to discuss financial plans
and activities, generate monthly reports on House spending.
CSH : Active Member
November 2018 to Present - Rochester, NY
Actively involved in a Special Interest Housing community at RIT called Computer Science House, which specializes in collaborating around and
developing skills which are crucial to becoming a strong individual and a valued team member. Contribute to weekly technical seminars and social
meetings, constantly immersed in all fields of computer science and engineering.
RIT : AI Club President
August 2019 to March 2020- Rochester, NY
Bring together students around a passion for learning and using AI by fostering connections and encouraging project collaboration.
Prepare weekly presentations and discussions on topics such as regression, neural networks, and natural language processing.
RIT : Brick City Boppers President, Vice President
August 2020 to December 2021- Rochester, NY
Oversee planning and operation of lessons for RIT's Swing Dancing club. Assist in administrative responsibilities, plan social events, attend weekly
lessons.
RIT : CS Department Student Amabassador
August 2018 to Present - Rochester, NY
Represent the Computer Science Department and Program to current and prospective students. Assist in Open Houses, prospective student meetings,
and various administrative meetings.
RIT : New Student Orientation Supervisor
August 2019 , August 2020 - Rochester, NY
Managed well being and performance of 20 Orientation Leaders who each led their own groups of new students for RIT's New Student Orientation.
Organized and assisted with various events and activities throughout Orientation. An incredible test of perserverance and time management due to
long days of nearly endless social interaction and management.
RIT : New Student Orientation Leader
August 2018 - Rochester, NY
Led a group of new students through RIT's New Student Orienation. Organized icebreakers as well as other social and academic activities.
Developed leadership, communication, and team building skills.
RIT : Supplemental Instruction Leader
August 2018 to October 2019 - Rochester, NY
Develop weekly study sessions for students in Python and Java based courses to provide a more practical approach to course content.
Collaborate with students in class and support their efforts in problem solving and team dynamics.
A personality quiz to determine your ideal Computer Science career based off of what is interesting and
important to you in the CS industry. Developed as a full stack web application. Recently completed Design phase, now in early development.
Please reference the Design Doc
for complete details on the project.
[WIP] An Alexa skill that increases your productivity by answering : What should I do with my free time? Cosmo listens to your Goals, Interests,
and Reminders, and prioritizes them so you have enough time in each day for all of them. Check out more on the Github.
Tertiary classification model created and trained using simple numpy / scipy with data curated and cleaned from Postgres server. Predicts the evaluation
result of a new applicant to the Computer Science House intro process. Extensive testing done with performance of various hypothesis functions, currently
experimenting with effects of regularization and feature scaling.
An independent study with Dr.Homan of the CS Department at RIT to determine which real world events are the most reliable factors for predictive models
to use. We analyse models for their overall performance, and dates when they perform the best and worst. With these insights, and a thorough understanding
of how the models work, we can determine what features are the best predictive measurements. This would ideally culminate in a new ensemble model, or at
the very least advise the public which models are most reliable.
These insights would ideally support political, healthcare, and general lifestyle decisions.
A personal investigation into the effect that collegiate prestige has on monetary success afterwards. This project analyzes salary data from Payscale
associated with major, school, and school type. It is ongoing and has already determined, unsurprisingly, that Ivy League graduates seem to perform
significantly better than graduates from other types of schools. Research currently going into classifying 'prestigious' schools, and determining
what margin of those schools are in the top earning groups.
An LED board turned personal assistant with the aid of a Raspberry Pi, Arduino, and Alexa. Currently automatically updates the date, and there are plans
to integrate Alexa to allow for display of weather and daily reminders. The arduino serves as the main driver for the board, while the pi maintains
functionality for getting any data necessary before rewriting the sketch on the Arduino and reuploading.
Solutions to Andrew Ng's Machine Learning Coursera course. The GitHub repo explains this more in depth, but essentially these are all implementations
of core machine learning concepts such as linear regression, logistic regression, neural networks, backpropagation, etc. There you will find my explanations
of these concepts.
Project at MITRE, a Microsoft Bot Framework bot implemented in Microsoft Teams which utilizes Microsoft Graph to intelligently pair employees with
project managers based off of shared interests and other criteria. A project lead starts a conversation with the bot, describes in natural language what
skills they are looking for, availability, etc. The bot reaches out to potential employees with this proposal, then gets back to the project lead with
those who would like the position.
Check it out at hapi-0.appspot.com! Partner hackathon project made at RIT's Brickhack.
Simple flask app that reads in a handle or hashtag, uses the Twitter API and Tweepy library to pull tweets from that source, then engages
Google Cloud Platform's Sentiment Analysis API to derive a sentiment score on each of those tweets. We serve this information back to the user in an
aggregated fashion by displaying statistics such as their average sentiment, most positive tweet, number of negative tweets, and more.
Never before worked with R, or done the Advent of Code event, so taking this opportunity to become familiar with both. See GitHub for updates on
what I've learned about R as each day goes along.
Group hackathon project made at Hack Dartmouth. Alexa skill which prompts the user for a rap, then creates a response utilizing parts of the user's utterance.
The response is formulated using nltk and a pickled version of a naive bayes classifier, which tags parts of speech. This tagger parses the user's input for
words to use in the response. Then, a context free grammar structures the response and Lambda serves the response back to the end user.
Displayed at RIT's Presidents' Alumni Ball as part of the Computer Science House Smart Dorm Room exhibit. It is a 32x32 LED matrix which is held onto the top
of a desk lamp stand by a 3D printed mount. An Arduino Mega drives the display, which displays one of four designs. A bluetooth module accepts serial
communication to toggle between the various displays and their respective speeds / colors. All designs custom made.
Part of the elevator lobby entertainment system on Computer Science House. Integrated with another house service, HAROLD, such that anytime a member
scans their iButton, this light display turns into a rainbow party. The display is a 150 LED strip of individually addressable LED's, which are driven
by an arduino. A raspi is hooked up to the arduino for remote update abilities.
Project at MITRE, a helpdesk assistant which streamlined employee requests and questions. Accessible by phone or web, employee engages in conversation
driven by Watson Assistant, where they are appropriately redirected to the correct department. Frees up time of helpdesk agents and gets employees to
solutions faster.
Discuss mathematical foundations of machine learning and their various applications. Implement the various concepts in Python and / or Matlab.
Subjects studied were : linear and logistic regression, neural networks, superivsed and unsupervised learning, gradient descent, among others.
Seminars & Presentations
Automating the Intro Process
Discussion of project which automates the CSH Intro Process using logistic regression. Given to CSH.
Intro to Neural Networks in Tensorflow
Discussion of Neural Network concepts and live implementation in Tensorflow. Given to CSH.
What is AI and how to use it
Presentation on common AI algorithms, process for choosing a model, and tools to implement them. Given to CSH.
Intro to Linear Regression
Interactive workshop covering an implentation of linear regression using python and numpy. Given to CSH.
Recommender Systems
Discussion on collaborative and content based filtering and their real life applications. Given to RIT AI Club.
Enterprise NLP Offerings
Pros and cons of NLP API's from IBM, Microsoft, Amazon, and Google. Focus on one use case implementation. Given to RIT AI Club.
Intro to Regressions and Neural Networks
Mathematical and intuitive discussion of these topics. Approached from both high and low level, given to RIT AI Club with
Vice President, Perry Deng.
Mathematical Foundations of Machine Learning
Interactive seminar discussing applications of and in-depth mathematical basis of linear/logistic regression, neural networks,
and backpropagation. Given to Computer Science House.
CSH Meets AI
High level overview of the power of AI, presented in a light-hearted, comedic fashion. Given to Computer Science House.
Definitions of AI Buzzwords
Very brief overview of AI buzzwords so that people can actually use them with some intuition. Given to Computer Science House.
RIT AI Kickoff Fall 2019
Introductory meeting to RIT's AI Club, discussing the power of AI using the classic horse example. Comedic and light-hearted
presentation, aimed at generating interest and understanding about the club.
Applications of NLP
How NLP is used in virtual assistants, smart home devices, and social media. Also contains brief discusion of personal project. Given
to RIT AI Club.
Natural Language Processing
What is NLP, an introduction into semantic spaces and semantic relatedness, as well as how words are turned into vectors. Demo of
NLTK abilities.