My Portfolio

Here are some of the projects I’ve worked on that showcase my skills in software development, DevOps, and system administration. Each project reflects my commitment to building efficient, scalable, and secure solutions.

Inception Project - Docker and Service Management

  • Brief Description:
    The Inception project is a system administration exercise focused on creating a secure, containerized infrastructure from scratch within a virtual machine. This setup involved manually building and configuring a web server, content management system, and database as individual containers, ensuring modularity, security, and control over each service.
  • Key Technologies:
    VirtualBox, Docker, Docker Compose, NGINX, MariaDB, WordPress, Alpine Linux
  • Key Features:
    • Secure entry point managed by an NGINX server with TLS encryption
    • Custom-built containers for WordPress (with PHP-FPM) and a database, avoiding pre-built images to maintain complete control over configuration
    • Persistent storage volumes for data durability and recovery across restarts
    • A private Docker network for secure inter-container communication
  • Challenges & Solutions:
    This project gave me extensive experience in setting up and managing containerized services from scratch within a virtualized environment. By building each container manually, I gained a deep understanding of Docker configurations, secure networking, troubleshooting services and persistent storage.
  • Link: View Project on GitHub

Transcendence Project - Multiplayer Pong Game with Real-Time Monitoring

BeePong_vision_240615
  • Brief Description:
    Transcendence, or BeePong, is a real-time multiplayer Pong game developed as a group project at Hive Helsinki. Designed for an engaging experience, the game features multiplayer functionality, AI-driven opponents, and modular infrastructure supporting real-time monitoring and logging.
  • My Role:
    “I led the implementation of the ELK stack to enable real-time monitoring and analytics, logging key components including NGINX, the Django backend, the ELK stack itself, and the PostgreSQL database. I also introduced end-to-end testing with Cypress to ensure seamless interaction across critical features.”
  • Key Technologies:
    Docker, Django, PostgreSQL, NGINX, ELK (Elasticsearch, Logstash, Kibana), Cypress, GitHub, 
  • Project Highlights:
    • Real-Time Multiplayer Gameplay: Supports gameplay against other users or an AI opponent.
    • Lobby and Tournament System: Organizes player interactions and structured tournaments.
    • Monitoring & Analytics: ELK stack provides real-time insights into game activity and system health.
  • Challenges & Solutions:
    Through configuring ELK for dynamic monitoring and implementing Cypress for testing, I gained expertise in real-time analytics and quality assurance for web applications.
  • Link: View Project on GitHub

ft_irc Project - C++ IRC Server

  • Brief Description:
    ft_irc is an Internet Relay Chat (IRC) server built from scratch in C++ as part of the Hive Helsinki curriculum. The server handles multiple clients simultaneously, supporting essential IRC functionalities such as user authentication, nickname management, private messaging, and channel operations.

  • My Role:
    “Throughout the group project, we collaborated closely, leveraging pair programming and peer debugging to ensure a seamless, well-integrated IRC server. Using GitHub issues and a project board, we structured our workflow with organized task management and clear ownership for each feature. My primary contributions included developing the Message class to accurately parse IRC messages and implementing SendMessage for consistent, protocol-compliant communication between server and clients. I also set up unit tests using Catch2 to validate core functionality. To maintain code quality, we adhered to strict modular design principles using C++14, and followed a GitHub Flow workflow with short-lived feature branches and mandatory code reviews.”

  • Key Technologies:
    C++ (C++14 standard), TCP/IP, Non-blocking I/O with poll(), Catch2 (unit testing)

  • Project Highlights:

    • Multiple Client Handling: Supports concurrent users and channels.
    • Core IRC Commands: Authentication, nickname, and channel controls.
    • Message Parsing and Sending: Custom classes to parse and send IRC messages according to RFC standards.
  • Challenges & Solutions:
    Building the message parsing functionality required strict adherence to RFC standards for IRC communication. Using poll() for non-blocking I/O and implementing Catch2 unit tests allowed me to verify message accuracy and ensure the server’s stability under high load.

Dockerized WP Portfolio Site - Oracle Cloud Self-Hosting of Inception Project

  • Brief Description:
    This project involves deploying a self-hosted portfolio site built from scratch using Docker. Hosted on an Oracle Cloud VM, the site runs on a Dockerized infrastructure with NGINX, MariaDB, and WordPress. This setup demonstrates my skills in Docker, cloud hosting, and end-to-end system configuration.

  • Key Technologies:
    Docker, NGINX, MariaDB, Oracle Cloud, WordPress

  • Key Features:

    • Self-Hosted and Secure Setup: Configured NGINX with TLS for secure access.
    • Scalable Docker Environment: Modularized services for easy updates and scalability.
  • Challenges & Solutions:
    This project allowed me to gain hands-on experience in cloud deployment, covering container configuration, security hardening, and network management within Docker. Managing the setup independently taught me the importance of scalability and efficient resource management.

  • Link: You are on it ; )

Minishell Project - A Simplified Bash Shell in C

Minishell Project – A Simplified Bash Shell in C

  • Brief Description:
    Minishell is a simplified version of Bash, built entirely in C as part of the Hive Helsinki curriculum. This project focuses on process management, file descriptors, and building core shell functionalities like command execution, piping, and redirection.

  • My Role:
    I focused on implementing the command parsing system, breaking down raw user input into tokens compatible with the Abstract Syntax Tree (AST) format designed by my peer. This included handling tokenization for commands, arguments, and redirection symbols. Additionally, I implemented several built-in commands and collaborated extensively on debugging and optimizing the shell for stability and memory management.

  • Key Technologies:
    C (C99 standard), Readline Library, Unix System Calls (fork, execve, pipe)

  • Project Highlights:

    • Command Execution: Supports external programs and built-in shell commands (cd, pwd, export, etc.).
    • Piping and Redirection: Handles multi-stage pipelines and input/output redirections (<, >, >>, <<).
    • Environment Variable Expansion: Expands variables dynamically during command execution.
    • Signal Handling: Implements behavior similar to Bash for Ctrl-C, Ctrl-D, and Ctrl-\.
  • Challenges & Solutions:
    Designing a robust parsing system to feed the Abstract Syntax Tree was a significant challenge, requiring careful consideration of syntax edge cases and modular implementation. Additionally, memory management and debugging ensured the shell could handle multiple commands without leaks or crashes.

  • Link: View Project on GitHub

cub3D Project - A Raycasting Maze Simulator in C

  • Brief Description:
    cub3D is a first-person maze simulator inspired by the classic Wolfenstein 3D game. Developed as part of the Hive Helsinki curriculum, it utilizes raycasting techniques to create a 3D-like perspective in a 2D maze, offering an immersive and interactive walking simulator experience.

  • My Role:
    I was responsible for implementing the map parsing system and rigorous error handling for .cub configuration files. This involved creating a robust validation process to ensure that invalid maps or configurations would gracefully terminate the program with appropriate error messages and exit codes. Additionally, I contributed to debugging across the project, ensuring stable and consistent functionality.

  • Key Technologies:
    C, MLX42 (graphics library), Mathematics for Raycasting Algorithms (DDA), Unix File Handling

  • Project Highlights:

    • Map Parsing and Validation: Designed and implemented a system to read and validate .cub map files, including detecting invalid configurations, missing elements, and incorrect file formats.
    • Error Handling: Ensured the project could handle a wide range of input errors gracefully, outputting meaningful error messages and exit codes.
    • Raycasting Engine: Simulates a 3D perspective in a 2D maze, dynamically rendering walls and textures.
    • Interactive Features: Supports real-time movement (WASD keys) and camera rotation (arrow keys).
  • Challenges & Solutions:
    Designing the map validation system required simulating edge cases and rigorously testing invalid inputs to ensure no configuration could cause undefined behavior or crashes. Debugging graphical artifacts and ensuring seamless integration with the raycasting engine required extensive peer collaboration and iterative testing.

Skills and Tools

  • Programming Languages: C, C++, Bash, and introductory Python.
  • DevOps & Cloud Infrastructure:
    • Hands-on experience with Docker and Docker Compose for containerization.
    • CI/CD Pipelines: Basic knowledge of GitHub Actions and manual deployments.
    • Cloud Platforms: Oracle Cloud, including setup of NGINX, MariaDB, and WordPress.
    • Monitoring & Analytics: ELK stack (Elasticsearch, Logstash, Kibana) for log management.
  • Software Development:
    • Debugging and testing with Catch2 (unit testing) and Cypress (E2E testing).
    • Command-line tool creation, shell scripting, and system-level programming.
    • Collaborative coding practices: peer coding, Agile methodologies, and Git-based workflows.
  • Database Management:
    • Relational databases: PostgreSQL (log ingestion) and MariaDB (configuration and persistence).
    • Legacy systems: FileMaker Pro.
  • Operating Systems & Infrastructure:
    • Linux (Ubuntu, Debian, Red Hat) system administration and networking basics.
    • Experience with virtualization tools like VMware, Hyper-V, VirtualBox, and KVM.
  • Security Awareness:
    • Familiarity with security fundamentals, including secure network configurations.
    • Practical insights into social engineering and cybersecurity principles.

Ongoing Learnings

  • Advanced DevOps:
    • Deepening knowledge of Terraform for infrastructure as code and Kubernetes for orchestration.
    • Experimenting with CI/CD automation pipelines using GitHub Actions.
  • Cloud Expertise:
    • Completing AWS Cloud Practitioner certification to understand secure, scalable solutions.
  • Software Development:
    • Exploring Java and expanding Python skills for backend development.
    • Strengthening database query optimization and PL/SQL knowledge.
  • Cybersecurity:
    • Studying threat detection techniques and experimenting with prompt engineering for AI tools like Luminen.
  • Testing:
    • Enhancing test automation techniques, focusing on robust, maintainable solutions.

Interested in learning more about my work? Feel free to reach out, or check out my GitHub for additional projects.

Scroll to Top