Hello! My name is Kenneth Donahue
and I'm a Software Engineer focusing on web development.
About Me
As a musician, I crave opportunities that allow me to be creative.
Some would say that it's because I'm a Virgo, but I’m thrilled when I get to put on my analytical thinking
cap.
After working with software engineers to manage their aged ticket queues, I started thinking to myself, "I would much rather be doing your job than mine!" Fortunately, I had the opportunity to solve problems on the job by coding and automating reports--every issue or bug that I ran into was an opportunity to teach myself more. I loved that feeling and I've kept chasing it.
I'm grateful to have found passion in creating beautiful, logical front-end applications in React
and, of course, designing and implementing back-end frameworks and databases with Flask and Express.
Portfolio
rBoard
Combine your refrigerator space and whiteboard into one application--making it easy to manage chores, reminders, and other oddities in your household or for school.
Built with:
JavaScript, React / Redux, Python, Flask, PostgreSQL, SQLAlchemy
Features:
- Single-page application with a simple splash page for user authorization.
- Draggable UI components that monitor and track MouseEvents, manipulate absolute positioning in Styled Components, and store updated position data in a PostgreSQL database.
- Toggle-able editing system using Styled Components that mimic target elements. Users can update information without being taken to other pages or forms.
Pseudogram
Pseudogram
Pseudogram allows users to post images and view/comment on the images posted by their friends. This project is inspired by Instagram, a website where individuals can upload their images, like and leave comments on other's images.
Built with:
JavaScript, React / Redux, Python, Flask, PostgreSQL, SQLAlchemy, AWS
Features:
- AWS S3 utilized in a reusable React image upload modal allowing for easy implementation during development on any authorized front-end route while also reducing server load.
- Like/unlike status can be toggled using a reusable modal that requires only one prop to dispatch the correct Redux thunk action creator depending on the current Redux store state.
gravyNcurds
gravyNcurds
Users can view poutine dish options and see what others thought about them. Users can also check-in and rate poutine dishes so they can remember what they have tried and what they thought of it. This project is inspired by Untappd, a website where individuals can search for beer, check-in and leave reviews on beer they try and unlock achievements by trying new and different beer styles.
Built with:
Javascript, React / Redux, Express, CSS, PostgreSQL, Sequelize
Features:
- Login and signup forms were restructured with dedicated space for validation error messages from the Express Validator library, visually identifying the field causing the error and avoiding resizing elements to display the applicable message.
- Javascript conditionals dynamically update the timestamp display on each check-in with the most pertinent time unit to display, calculated based on the total time since the check-in was created.
GoodGames
GoodGames
Users can view a library of video games and organize a custom selection of games into shelves. Users can also view reviews of each game as well as publish their own. This project is inspired by Goodreads, a website where individuals can search for books from an existing library, catalog books into custom shelves, and write & discuss reviews.
Built with:
JavaScript, Express, Node.js, CSS, Pug, HTML, PostgreSQL, Sequelize
Features:
- Express serves up Pug templates to render data from the PostgreSQL database.
- RESTful endpoints using only GET and POST methods implemented in Express use unique URI's to accomodate HTML form submissions, content creation, and content updates and deletion.
Skills & Technologies
JavaScript
JavaScript
Projects:
React
React
Projects:
Python
Python
Projects:
Redux
Redux
Projects:
Express
Express
Projects:
Also enjoyed using:
- Express Validator library in combination with Javascript regular expression checks to validate form submission on login and signup in order to verify user information before submitting to the SQL database.
Flask
Flask
Projects:
Also enjoyed using:
- flask-wtf and wtforms libraries to create secure forms with csrf protection and form input validation before submitting new data to the database.
Docker
Docker
Projects:
Node.js
Node.js
Projects:
Sequelize
Sequelize
Projects:
Also enjoyed using:
- Sequelize-CLI to create, migrate, upgrade, and seed databases.
PostgreSQL
PostgreSQL
Projects:
Also enjoyed:
- Planning out relational database schemas based on project requirements and implementing them with psql or by utilizing an applicable ORM.
HTML
HTML
Projects:
Also enjoyed using:
- PUG templating engine in combination with express to render data pulled from the PostgreSQL database.
CSS
CSS
Projects:
Also enjoyed using:
- Styled Components in React for addressing concerns with CSS style overlap and inheritance.
- CSS Transition from react-transition-group for animating a fly-out navbar.
Heroku
Heroku
Projects:
Also enjoyed using:
- Heroku PostgreSQL add-on database as a service, managing migrations and seeding through the Heroku CLI.
- CSS Transition from react-transition-group for animating a fly-out navbar.
History
By honing my soft-skills, enabling collaboration within and outside of my teams, and ferociously searching for and filling gaps, I provide value wherever my focus is set. Please check out my resume for more detailed information!
Experience
Customer Care Manager | Renaissance Solutions
Boulder, CO | Oct 2019 - Feb 2021
General Manager | Terrapin Care Station
Boulder, CO | Nov 2018 - Oct 2019
Assistant Store Manager | Terrapin Care Station
Boulder, CO | Aug 2018 - Nov 2018
Supervisor | Terrapin Care Station
Boulder, CO | Mar 2018 - Aug 2018
Team Focal | IBM
Boulder, CO | Jun 2017 - Mar 2018
Education
appAcademy
Software Engineering | 2021
University of Colorado at Boulder
Bachelor of Music | 2009 - 2012
Contact
I'd love to hear from you - here's how to get in touch!