Stephen Pastore

Stephen Pastore

Passionate & driven full stack developer
Reply rate:
-
Availability:
Hourly ($/hour)
Location:
Stamford, Ct, United States
Experience:
3 years
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.
Get your freelancer profile up and running. View the step by step guide to set up a freelancer profile so you can land your dream job.