Your Browser Don't Support Canvas, Please Download Chrome ^_^``

Let's build something great together!

After years and years of only skimming the surface of computer science and programming, I finally made the choice to take the deep plunge and begin learning all there is to know about developing software and web applications.

Below are just a few of my latest developments built on this new journey. If you would like to know more on some of my past work, feel free to contact me and I would be happy to share as much as I can on the software I created and implemented with my past company.

Certifications

Certification #1
Java Programming Masterclass for Software Developers

Udemy See Certificate

Below are just some of the skills learned:

Java 8 & 11
Object-Oriented Programming
Java API
IntelliJ IDEA IDE
JavaFX
Debugging
Unit Testing
Networking
Multi-Threading
I/O and SQL Databases
Preventing SQL Injection Attacks
Certification #2
Web Developer Bootcamp

Udemy See Certificate

Below are just some of the skills learned:

HTML5
CSS3
Flexbox & Responsive Design
Javascript
Async and AJAX
Bootstrap 4/5, Semantic UI, & Bulma
DOM Manipulation
NodeJS & ExpressJS
Templating, REST, & CRUD
NoSQL Databases (Local & Cloud)
Authentication & Authorization
Image Upload and Storage
Maps and Geocoding
Deploying Apps

Projects

Project #1

Quality Tools

This site contains a web application built using the React library with Next.js as the framework and Bootstrap for the design components. It has been deployed on Vercel under my own domain with an SSL certificate for data encryption and security. The application utilizes Auth0 for user authentication and Next-Auth for user authorization. To help with the user experience, custom 403 and 404 pages have been created if something goes wrong with a user request. The 403 page utilizes a fun animation to alert the user that they are trying to access data they do not have authorization for, while the 404 page promptly informs the user of missing page and provides them with the option to play an audio clip of a dial-up modem as it tries to connect them to the resource they are looking for. Both pages also has added information to help explain why this issue may have occurred and what the user's next steps should be to find what they are looking for. Utilizing SWR and Serverless MySQL data is stored and fetched from the SQL database at serverless scale, which is hosted on Google Cloud

The Five-Why tool within the application itself uses complex JavaScript logic and CSS formatting to allow a user to work through their investigation and determine the root cause of an issue based off their problem statement. Several textareas are used to capture basic information about the investigation while a custom React component is utilized for the submission and display of answers during the investigation. Event listeners and custom logic is coded into the React component to allow for the submission of an answer from the provided button or hitting the Enter key, which then transfers the answer to the answer list and displays it as an indented list. By hovering over each individual answer, an edit and delete button are also presented to the user to modify their 5-Whys without having to start over from the beginning. Through the use of the Tiny MCE library, users are also allowed to create rich text notes as they proceed through their investigation, complete with formatting, bulleted/numbered lists, symbols, and links to external webpages. After logging into the system, the user is allowed to save their Five-Whys for future editing, deleting, and printing in a clean format. This save function captures all relevant information, on the investigation, including the title, problem statement, root cause, answer list, and notes. The application also provides an authenticated user to search through their saved Five-Whys using a convenient search bar or sort them all by various criteria. All of this is built with a minimilistic mindset to avoid clutter and help the user and their team stay focused on the issue and work through the process efficiently and effectively.

Project #2

YelpCamp

This website was built following the final tutorial from the Web Developer Bootcamp course on Udemy and is my first offically deployed application. Utilizing a combination of Express, EJS, Node.js, and Bootstrap for the framework, this site has been deployed on Heroku with a domain name provided by them. The application utilizes Passport for user authentication and custom built middleware for user authorization with sessions for tracking necessary user information across the site. A simple 404 page is utilized to inform the users that they have reached a page that does not exist. All images are stored in Cloudinary for quick retrieval of images cropped and scaled as needed using Virtual Schemas. A NoSQL database was choosen for this project through MongoDB, which is utilized to store all information related to the authenticated user and campgrounds on the website. Mongoose handles the object modeling of our database and the retrieval of data, as needed. Joi and Sanitizie-HTML helps ensure that the data being entered into the database is clean and meets the necessary requirements.

YelpCamp is a comprehensive tool designed to capture campgrounds anywhere within the world based off user's inputting basic information, such as title, location, price, description, and images. Utilizing user authentication and authorization, the site captures who submitted the campground and prevents other users from updating the information without approval. This also allows for the submission of reviews on the individual campgrounds with a rating system as well. Full CRUD functionality is available on the campgrounds and reviews, with all reviews related to a specific campground being removed on deletion of the campground itself. When entering the site, a clean, minimilistic landing page is shown, giving the user the option to view the current camprgrounds or login/register for additional features. Upon viewing all campgrounds a clustermap is provided, through MapBox, which showcases a quick breakdown of all campgrounds currently saved in the database. From the view page, you can scroll through the list of all campgrounds or click on the clusters of the map to view campgrounds in a specific area. When a specific campground is found on the map, clicking its pin will provide you with the name of the campground, a truncated section of the description, and a link to take you to the campground's page.

Project #3

Personal Blog

Utilizing many of the same back-end and front-end technologies as the YelpCamp application, this application takes some of those tools a step further to improve a user's experience and simplify the design. This website was also built with Express, EJS, Node.js, and Bootstrap, with Passport for user authentication and custom built middleware for user authorization. Cloudinary is utilized to store all images and Virtual Schemas retrieve the images in a formatted state. MongoDB is utilized to store the posts created on the website and Mongoose handles the object modeling retrieval of data. Joi and Sanitize-HTML helps ensure that the data being entered into the database is clean and meets the necessary requirements. To make this site more applicable for a personal blog, the ability to register has been removed so that only the owner of the site has access to the CRUD functionality of the posts. While this ensures only the owner of the site can create content, a solution was needed to still allow for comments from other users. To solve this issue, Facebook's Comment Social Plugin was implemented so that users can leave comments on each individual post.

This personal blog website is a simple, yet effective tool to allow an individual to express their ideas and opinions without fear of others gaining access to their content and making unauthorized changes to it. A simple, minimilistic user interface helps the blog creator and readers of the content find what they are looking for without distractions and comfortably move throughout the site. When creating an individual blog post, the user has the ability to add basic information, such as title, date, rating, body of the post, and multiple images. From the main page of the posts, a single image is displayed but, when viewing the individual post from the show page, a carosuel is utilized to cycle through the images, as well as providing the user buttons to manually scan through them as they read. While blog posts are sorted from newest to oldest by default, a simple dropdown selector allows the users of the site to sort the posts by posted date, title, and rating. After selecting the desired blog post, a user can leave comments on the content utilizing Facebook's Comment Plugin. With this simple tool, users can share their feedback directly within the site as well as within their own Facebook profile, if so desired.

Soft Skills:

  • Strong member in any team-setting with a collaborative and open mindset
  • Excellent problem-solving skills with an eye always on the future
  • Extensive knowledge of lean and agile methodologies
  • Effective written and verbal communication
  • Solid ability to manage time and resources
  • Practicing of mindful meditation to manage stress
  • Efficient organization skills, both physically and digitally
  • Adaptable to changing environments and situations
  • Impecable ability to critically think and apply solutions through effective decision-making
  • Proven leadership abilities with a strong ability to manage conflicts
  • Always open to receive and provide positive and useful feedback
  • Passion for learning and building up others for everyone's success

Hard/Technical Skills:

  • Java
  • HTML
  • CSS
  • JavaScript
  • React
  • Bootstrap
  • Next.js
  • Gatsby
  • Express
  • Node.js
  • Git
  • MySQL
  • MongoDB
  • Google Cloud Platform
  • Microsoft Office
  • SharePoint
  • SAP
  • Familiar with jQuery
  • Familiar with TypeScript
  • Familiar with PHP
  • Familiar with Python
  • Familiar with React Native
  • Familiar with C and C++