Hi, my name is Ikenna Porter
and I'm a Full-Stack Developer.

Get in touch

About Me

Profile Image

I can still recall the first time I opened my first IDE to write a program and the excitement I felt from using it to write my own algorithms. This marked the first time in my professional career that I felt intellectually stimulated. The drive I had back then to learn and grow is what continues to propel me forward as a software engineer, particularly in my pursuit to learn new technologies and time-tested, design principles. I firmly believe that my previous work as an educator is what kindled this growth mindset, along with the collaborative and communication skills that are essential on any development team.

View Resume

Projects

Mr. Librarian

Project Image

Technologies Used

  • Vanilla Python
  • Requests Library
  • Postman
  • Argparse Library
  • Unittest Library

Description

Mr. Librarian is a command-line application that uses the Google Book's API to retrieve book information for users. The application also allows users to store their favorite books in a reading list for access in the future.

Project Difficulties

The most difficult part of this project involved writing the unit tests for the database queries and for the function responsible for making the API call. When running the tests, I noticed that they actually made interacted with the database and that they made the API call. This resulted in erroneous data in the database and it meant that my tests were dependent on the state of external dependencies.

My Solution

The solution to this problem was to introduce patches from the unittest.mock library. These patches essentially allowed the tests to create a mock object that would act as a substitute for the database and the request call. Now, instead of actually The creation of these "dummy" objects allowed the unit tests to isolate and test the functionality of each method, without having to worry about the behavior of the external dependencies.

Notable Features

  • Object-Oriented Programming
  • SOLID Design Principles
  • Third-Party API Integration
  • Unit Tests
  • SQLite Database
  • Paw Wow

    Project Image

    Technologies Used

    • HTML5
    • CSS3
    • Javascript
    • React
    • Python
    • FastAPI
    • PostgreSQL
    • Websockets
    • Docker

    Description

    Paw Wow is a social media platform for dog owners. It's basic functionality include authentication, direct messaging, profile creation and friend requests. I worked on a team with four other developers to create this application.

    Project Difficulties

    The greatest difficulty I faced for this project was designing the database, particularly for messaging. Trying to figure which tables I would need, and more importantly, how those tables would relate to one another was quite challenging. The fact that this was also my first time working with SQL made the task that much more difficult.

    My Solution

    In the end, I decided the best approach would be to create a messages table and a conversations table. The conversations table would reference a conversation between two users, while the messages table would store instances of every message sent within the application. Each message instance also has a foreign key that links it to a particular conversation (using the conversation's ID). This way, whenever a user accesses their chats, an API call would be made to retrieve a list of all their conversations. Likewise, once a user selects a conversation, all of the messages associated with that conversation will be fetched.

    Notable Features

  • Microservices
  • React Hooks
  • Authentication
  • Direct Messaging
  • RESTful APIs
  • Unit Tests
  • Car Buffs

    Project Image

    Technologies Used

    • HTML5
    • CSS3
    • Javascript
    • Python
    • Django
    • React
    • Docker
    • Bootstrap
    • Insomnia

    Description

    Car Buffs is a car services platform that facilitates new car purchases and the scheduling of vehicle repairs. The application's back-end was divided into three distinct microservices (inventory, sales, services)--each one modeled to match the business domain of a car services business.

    Project Difficulties

    The most challenging aspect of this project was enabling message passing between the microservices. Since each microservice occupied its own container, it took a while for me to establish a connection between them so that they could effectively communicate with one another. More specifically, the sales and services microservices needed to communicate with the inventory microservice to determine whether a particular vehicle was in stock and whether or not it originated from the dealership.

    My Solution

    In order to solve this problem my teammate and I implemented a short polling function within the sales and services microservices (both of which acted as clients). These functions used RESTful APIS to make requests to the inventory microservice every minute. Once they received the response body--which comprised of a list of all the cars in stock --they would parse through it to retrieve and update all relevant information.

    Notable Features

  • Domain-Driven Design
  • MVC Build
  • Microservices
  • Message Passing
  • React Class Components
  • RESTful APIs
  • Task-Done

    Project Image

    Technologies Used

    • HTML5
    • CSS3
    • Bootstrap
    • Python
    • Django

    Description

    Task-Done is a task management application that performs all four of the CRUD functionalities. It does so using Django's ORM, which interacts with a SQLite database.

    Project Difficulties

    Given that this was my first project that used any kind of framework, the most difficult part was definitely acclimating myself to Django--which can be very opinionated at time.

    My Solution

    My solution to this problem was simply to study the MVC design pattern, so that I could have a deeper understanding of what was happening on a step-by-step basis as the user interacted with the application.

    Notable Features

  • MVC Build
  • Templates
  • Django's Object Relational Mapper
  • Authentication
  • Class/Function-Based Views
  • CRUD Functionality
  • Contact

    To discuss future opportunities...

    write me!