Stephen Pastore
Full Stack Developer
Email-
LinkedIn https://www.linkedin.com/in/s-past/
GitHub https://github.com/Stephenp1394
Address Stamford, CT 06903
Extremely hard working and passionate Full Stack Developer with proficiency in core web technologies including React, Node.js, Vanilla
JavaScript, and PostgreSQL. Previously an entrepreneur, a technical project I undertook inspired me to learn software programming. After
gaining a very thorough education in web development, I transitioned to the professional world where I have acquired extensive
experience across multiple roles.
Technical Skills/Experience
React
Node.js & Express
Vanilla JavaScript
SQL/PostgreSQL
HTML
CSS
Sass & Tailwind
Elixir/Phoenix/Surface UI
Git & GitHub
Command Line
Browser Developer Tools
Front End Knowledge/Experience (not limited to):
React – function & class components, state hook, effect hook, React context, lifting state up, lifecycle methods, etc.
HTML/CSS/JS – AJAX requests/promises, ES6, importing/exporting modules, regex, Responsive Web Design (employing a variety of
methods), flexbox & grid, semantic & accessible HTML, cross-browser support, technical SEO, debugging (e.g. logging data to the
console, inspecting the DOM, removing code to isolate the issue, etc.). Please view the recommendation I have on my LinkedIn profile
(from an incredibly experienced Web Developer) for evidence of my strong skill set.
Back End Knowledge/Experience (not limited to):
Node.js/Express – parsing requests, middleware, routing, cookies, sessions, token-based authentication, npm packages (e.g. axios,
node-postgres, cookie-parser, nodemailer, etc.), connecting to/interacting with a database from Express, URL parameters/query string,
HTTP headers
Security concepts – SQL stored procedures, encrypted passwords in DB, parameterized queries, secure (HTTP only) cookies, using
helmet to set security-related HTTP headers, client-side form validation (e.g. escape inputs, ensure proper data type), session timeouts,
using HTTPS
SQL/PostgreSQL – all four CRUD operations, CTE, subqueries, joins, procedures, loops, variables, built-in functions (i.e. LEAD(), array
functions, aggregate functions, JSON functions), SQL queries with several conditions, converting data types, CASE statements, RAISE
NOTICE for testing/debugging, temp tables, inserting multiple rows in one query, altering column names/data types/sequences, default
values, primary key/foreign key, auto-incrementing ID column values
Soft Skills
Extreme work ethic – 80-100 hour work weeks the overwhelming majority of the time (for 7 years)
Incredibly high attention to detail/Highly analytical – wrote extensive/detailed notes and practice code during
my initial education in programming
Immense desire for continued learning – eager to learn new languages/technologies
Very organized – created well over 100 documents in Google Docs to compartmentalize
professional/personal data just within past few years
Clear communication – my highly analytical/organized nature is reflected in my communication, I
communicate in a clear and precise manner
Work Experience
Dec 2022 - Mar 2023
Software Developer (Temporary Position)
ChatKitty
Core contributor to a greenfield chat application (but still had to adapt to an existing codebase) comprised of
channels for users to send and receive messages in – Utilized the Phoenix framework and Tailwind CSS for
styles/responsiveness
Made requests to the back end retrieve channel messages and then rendered them in the UI, implemented
fallbacks for channels without any messages (i.e. default styles/message)
Programmed functionality that allowed users to send and receive messages in the UI (i.e. registered messagerelated event listeners, added new messages to the back end, programatically/conditionally scrolled the
messages list down to the current message, etc.)
Enabled users to toggle between the channels list and the channel messages on mobile viewports that could
not support both in the view together, then refactored it to push all of the channels into a scrollable list within the
mobile navbar, styled the currently selected channel with a custom/chiseled underline
Calculated the correct fixed height for the messages list and channels list based on the surrounding elements
dimensions
Utilized the relative time custom element to provide an up-to-date last received message time
Generally refactored some of the pre-exisiting markup and styles for readability and maintainability (e.g.
removed unnecessary container elements and erroneous styles, made the code more modular)
Used server side rendering with Phoenix components and used Surface UI to create dynamic HTML, similar to
the way JSX does for React (e.g. conditionally added or removed elements/CSS classes based on prop values)
– Lifted state up and passed props through the component tree (with minimal "prop-drilling")
Learned about WebSockets for real-time messaging, subscribed to topics for bidirectional communication
Sep 2021 - Aug 2022
Software Developer
SpotChallenge
Working on the full stack of a web application utilizing React, Express, and PostgreSQL
Implemented an SPA structure with React
Initiated a number of AJAX requests via the fetch() method and then parsed the JSON response data from the
server
Wrote a server with Express to handle all HTTP requests and routing – created routes for both POST and GET
requests
Allowed users to create an account and inserted that data into the database (passwords were encrypted with
pgcrypto module)
Authenticated users via verifying their login credentials on the back end and subsequently added secure
cookies
Implemented password reset functionality (verify if the email exists in the database, send an automated email
with the nodemailer NPM package, run an update statement with the users new password, etc.)
Displayed different application features based on the type of user, ensuring the correct features were accessible
to the correct users
Programmed search functionality that also included a search filter
Wrote client-side form validation code for application security and to ensure valid data was being sent to the
server
Matched users based on shared/overlapping availability – built a structure for this in several different ways and
implemented extensive logic to create a reliable matching system:
Matched a group of users together all at once based on shared times they selected with a complex CTE
structure involving subqueries, the LEAD() window function to compare adjacents rows against each other,
CASE statements to dynamically generate columns and their values, converted data types via CAST(), etc.
Matched a group of users together all at once via an SQL procedure that joins a table to itself based on
several conditions to generate all the matches (i.e. an array of matches, per user). Then filtered those
matches to extract one compatible/non-duplicate match per user using a loop/nested loop structure that
evaluates whether or not the current user being processed has already been matched
Programmatically assigned a compatible time based on two different availability windows (e.g. 2-6pm and 37pm) to users who have been matched – achieved via identifying the first matching time between the two
availability windows (i.e. array comparisons with an outer and inner loop structure)
Preprocessed user availability windows by dividing them into pieces before they are inserted into the
database (e.g. 5-10pm is broken down to 5:00-6:30pm, 6:30-8:00pm, etc.)
Identified/isolated incompatible users who could not be matched via array comparisons
Feb 2016 - Aug 2019
Entrepreneur
Greenwich/Stamford, CT
Worked on several different companies – started first company at the young age of 22 – self-funded
entrepreneur
Vetted and hired a freelance data scientist that met the necessary requirements for a unique job search engine
project – learned some concepts within data science at a rudimentary level (e.g. web crawling)
Learned about patent and copyright law, determined patentability of an idea, conducted patent searches for an
entertainment software product, and consulted with IP attorneys
Carefully/methodically designed a website, produced all written content for the website
Determined the need for and secured a unique form of escrow account to safeguard client funds for a company
managing rent related payments
Cold called/cold emailed prospective clients to gauge demand
Generated around a thousand business ideas
Other Experience/Skills
Jul 2006 - Sep 2013
Competitive Golfer
Grew up playing golf, competed in numerous tournaments, golf was the focus of my early life
Ranked in the top 150 in the country as a junior golfer
Played Division I college golf – played all 4 years on my high school varsity golf team
Both of my brothers play professional golf
Education
Self-Taught – Web Development (2019 - 2021)
Self-taught, but treated it in a very formal manner. Wrote down an incredible amount of practice code and notes.
Went through several different courses from Codecademy, but utilized other credible resources as well (such as
Mozilla Developer Network). My education in software development is why I have a work gap.
University of Connecticut, Storrs
I did not complete my degree, but I have no shame or regret. I've worked harder and I've been more serious about
my career than 99% of college graduates. If desired, I can definitely speak on this topic further.