Principles and Practices, Project Management

This week I worked on defining my final project idea and started getting used to the documentation process. The assignment focused on two main parts: Principles and Practices (sketching a potential final project) and Project Management (building a personal website and setting up version control).

Website Development Process

I used Kiro AI assistant to build this website, which significantly streamlined the development process. Kiro helped me set up a modern, responsive website with proper documentation structure and version control integration.

Setting Up Kiro

Kiro is an AI-powered development assistant created by Amazon Web Services (AWS) that helps developers build applications more efficiently. It provides intelligent code generation, debugging assistance, and project management capabilities.

The setup process involved installing Kiro on my Mac M4 Pro and configuring it for web development:

What is Kiro?

Kiro is Amazon's AI-powered coding assistant that integrates directly into development workflows. It can understand natural language descriptions of what you want to build and generate appropriate code, handle complex project setups, and provide intelligent suggestions throughout the development process. This made it particularly valuable for setting up a comprehensive website with modern web standards and responsive design.

Development Workflow

Working with Kiro allowed me to focus on content and design while the AI handled much of the technical implementation:

Challenges and Solutions

During the website development process, we encountered several challenges:

Challenge 1: GitLab Integration

Initially had difficulty connecting the local development environment to the GitLab repository. This was resolved by properly configuring SSH keys and setting up the remote repository connection.

Challenge 2: Responsive Design

Ensuring the website worked well on all device sizes required careful CSS media query implementation. Kiro helped create a mobile-first responsive design system.

Challenge 3: Performance Optimization

The initial website was loading slowly due to large images and unoptimized code. We implemented image compression, CSS/JS minification, and lazy loading to improve performance.

Server Configuration & The Service Workers Problem

A critical lesson learned during this project was dealing with service workers and implementing a proper development server configuration.

The Service Workers Issue

Initially, service workers were added to the website for caching and offline functionality. However, this created major problems during development and testing:

The Solution: No-Cache Server Implementation

The solution was to completely remove all service workers and create a simple server configuration that explicitly disables caching with headers:

Why This Approach Works Better

Key Lesson: Service workers should never be used in development or educational projects where frequent updates are expected. They're better suited for production applications with stable, infrequently-changing content. This approach is particularly important for Fab Academy documentation where content updates frequently and users need to see changes immediately.

Git Repository Setup

The GitLab repository was already set up for me as part of the Fab Academy program. I only needed to configure SSH keys to connect my local development environment to the remote repository.

SSH Key Configuration

Setting up SSH authentication was essential for secure communication with the GitLab repository. Here's the detailed process I followed:

Step 1: Generate SSH Key Pair

On my Mac M4 Pro, I opened Terminal and generated a new SSH key pair using the following command:

ssh-keygen -t ed25519 -C "oliverabbott@icloud.com"

This created two files in my ~/.ssh/ directory:

Step 2: Add Public Key to GitLab

I copied the public key to my clipboard using:

cat ~/.ssh/id_ed25519.pub | pbcopy

Then I navigated to GitLab Fab Cloud, went to my profile settings, selected "SSH Keys," and pasted the public key. I gave it a descriptive title like "Mac M4 Pro - Fab Academy 2026" so I could identify it later.

Step 3: Test SSH Connection

To verify the SSH connection was working, I ran:

ssh -T git@gitlab.fabcloud.org

A successful connection returned a welcome message confirming authentication.

Git Configuration

Before making my first commit, I configured Git with my identity:

git config --global user.name "Oliver Abbott"
git config --global user.email "oliverabbott@icloud.com"

Cloning the Repository

With SSH configured, I cloned my Fab Academy repository to my local machine:

git clone git@gitlab.fabcloud.org:academany/fabacademy/2026/labs/charlotte/students/oliver-abbott.git

This created a local copy of the repository where I could work on my website and documentation.

GitLab Workflow

I'm using GitLab for version control and continuous integration:

Basic Git Commands I Use

Here are the essential Git commands I use regularly:

# Check status of files
git status

# Add files to staging area
git add .

# Commit changes with a message
git commit -m "Add week 1 documentation"

# Push changes to GitLab
git push origin main

# Pull latest changes from GitLab
git pull origin main

File Management

All project files are stored in the GitLab repository following the Fab Academy structure:

Final Project Proposal

My final project idea is a Pulse Jet Engine that explores the principles of pulse jet propulsion through proper engineering design and testing methodologies.

Initial Design Sketch

Pulse Jet Engine Technical Sketch

Technical sketch showing the Lockwood-Hiller inspired valveless pulse jet design with characteristic U-shaped intake and straight exhaust tailpipe. Drawn on iPad and compressed by 91% using imagecompressor.com.

Project Description

The pulse jet engine project focuses on understanding the fundamental principles of intermittent combustion propulsion. The design will incorporate proper safety measures and testing protocols while exploring the thermodynamics and mechanical aspects of pulse jet operation.

Who Will Use It

This pulse jet engine system is designed as a propulsion technology with applications across multiple sectors:

Design Approach

The project will follow standard engineering practices:

Tools and Technologies Used

Kiro AI Assistant

AWS-powered AI development tool for website creation and intelligent code generation

GitLab

Version control and repository hosting on Fab Cloud infrastructure

Web Technologies

HTML, CSS, and JavaScript for responsive design and modern web standards

Simple Server Setup

No-cache server configuration that ensures immediate updates without service workers

Learning Outcomes

This week provided valuable experience in:

Fab Academy Student Agreement

The Fab Academy is responsible for:

  • Teaching principles and practices of digital fabrication
  • Arranging lectures, recitations, meetings, and events for the class
  • Evaluating and providing feedback on student work
  • Offering clear standards for completing assignments
  • Certifying and archiving student progress
  • Supervising class preparation
  • Reviewing prospective students, instructors, and labs
  • Providing central staff and infrastructure for students, instructors, and labs
  • Fund-raising for costs not covered by student tuition
  • Managing and reporting on the program's finances, results, and impacts
  • Publicizing the program
  • Promoting a respectful environment free of harassment and discrimination
  • Encourage a diverse, accessible, and equitable community

I am a Fab Academy student, responsible for:

  • Attending class lectures and participating in reviews
  • Developing and documenting projects assigned to introduce and demonstrate skills, in enough detail to be able to reproduce them
  • Honestly reporting on my work, and appropriately attributing the work of others (both human and machine, including AI prompts)
  • Being prepared to answer questions about my work
  • Allowing the Fab Academy to share my work (with attribution) in the class for purposes compatible with its mission
  • Working safely
  • Leaving workspaces in the same (or better) condition than I found them
  • Participating in the upkeep of my lab
  • Ensuring that my tuition for local and central class costs is covered
  • Following locally applicable health and safety guidance
  • Recognizing limits on lab and staff time
  • Promoting a respectful environment free of harassment and discrimination

Signed by committing this file in my repository,
Oliver Abbott

Useful Links