Lucas Prado Coelho

Operating systems, alternative interfaces, and low‑level experiments.

GenesisOS BARE METAL OS

A lightweight, 32‑bit x86 graphical operating system built from scratch. It features a custom hard disk filesystem (GFS) over IDE/ATA, physical PS/2 mouse driver, real‑time CMOS clock tracking, dynamic double buffering, and movable modular docks. Inspired by early 2000s skeuomorphic and Frutiger Aero design paradigms.

Download GenesisOS Bootable ISO

MIT License · Bare-metal C & x86 Assembly codebase.

Kernel Core (VFS & ATA Sector Read)

// Dynamic filesystem table synchronizing memory (RAM) with disk sectors (LBA1)
void ata_read_sector(unsigned int lba, unsigned short* buffer) {
    while ((inb(0x1F7) & 0x80) != 0); // Wait until drive is ready

    outb(0x1F6, (0xE0 | ((lba >> 24) & 0x0F))); 
    outb(0x1F2, 1);                             
    outb(0x1F3, (unsigned char)lba);            
    outb(0x1F4, (unsigned char)(lba >> 8));     
    outb(0x1F5, (unsigned char)(lba >> 16));    
    outb(0x1F7, 0x20); // ATA LBA28 Read Sectors Command

    // Wait for the drive sector buffer to fill up
    while ((inb(0x1F7) & 0x80) != 0);           
    while ((inb(0x1F7) & 0x08) == 0);           

    for (int i = 0; i < 256; i++) {
        buffer[i] = inw(0x1F0);
    }
}

// Redraws desktop, rounded windows, and clocks on top of the double buffer
void redraw_screen(unsigned int* fb, int screen_width, int screen_height, int win_open, int st_menu_open, int mouse_x, int mouse_y) {
    draw_desktop_background(screen_width, screen_height, aero_color_mode);
    
    for (int i = 0; i < 4; i++) {
        draw_dock(&docks[i], aero_color_mode);
    }

    if (win_open) {
        draw_aero_window(window_x, window_y, window_width, window_height, "GENESIS OS 1.0", aero_color_mode);
    }

    draw_cursor(mouse_x, mouse_y);

    // Blit (fast copy) full buffer block to memory-mapped framebuffer
    for (int i = 0; i < screen_width * screen_height; i++) {
        fb[i] = backbuffer[i];
    }
}

MIT License — Copyright (c) 2026 LucasPR

Sweetie Assistant DESKTOP PET

Sweetie Assistant is a desktop companion built with Python and PyQt6. It lives on the user's desktop as a mascot, capable of reacting to application launches, displaying animated speech bubbles, searching Wikipedia, telling jokes, reporting system information, and interacting through a contextual menu.

Python · PyQt6 · Requests · Psutil

Download Sweetie Assistant

Features

  • Transparent desktop mascot
  • Always-on-top companion
  • Animated typewriter dialogue
  • Wikipedia integration
  • Application launch detection
  • System information utility
  • Random jokes and facts
  • Interactive context menu
  • Built with Python and PyQt6

Wikipedia Search Example

def wikipedia_search(self):

    text, ok = QInputDialog.getText(
        self,
        "Wikipedia Search",
        "What should I explain?"
    )

    if not ok or not text:
        return

    search_url = (
        "https://en.wikipedia.org/w/api.php"
        "?action=opensearch"
        "&limit=1"
        "&format=json"
        f"&search={text}"
    )

    search_data = requests.get(
        search_url,
        timeout=10
    ).json()

    page_title = search_data[1][0]

    summary_url = (
        "https://en.wikipedia.org/api/rest_v1/page/summary/"
        + page_title.replace(" ", "_")
    )

    summary = requests.get(
        summary_url,
        timeout=10
    ).json()

    self.say(summary["extract"][:350])

MIT License — Copyright (c) 2026 Lucas Prado Coelho

Really Small Projects Micro

A collection of tiny, self‑contained tools born from curiosity. Each fulfills a single purpose with minimal code.

WikiSearch PowerShell

A terminal‑based Wikipedia browser. Type a term and get the article summary instantly. If the exact term isn't found, it searches for the closest match using Wikipedia's API.

Runs on any Windows machine with PowerShell — no extra installation required.

while ($true) {
    $query = Read-Host "Search For a Term (or 'Exit')"
    if ($query -eq "exit") { break }

    Write-Host "`nSearching For '$query'..." -ForegroundColor Cyan

    try {
        $encodedQuery = [uri]::EscapeDataString($query)
        # Uses REST API v1 to get the main page summary
        $url = "https://en.wikipedia.org/api/rest_v1/page/summary/$encodedQuery"
        $response = Invoke-RestMethod -Uri $url -Method Get -ErrorAction Stop

        Write-Host "`n===== RESULT =====" -ForegroundColor Green
        Write-Host "`n--- $($response.title) ---" -ForegroundColor Yellow
        Write-Host $response.extract
        Write-Host "`n====================="
    }
    catch {
        # If it fails (e.g., page not found), try opensearch and pick the first result
        try {
            $urlSearch = "https://en.wikipedia.org/w/api.php?action=opensearch&format=json&search=$encodedQuery&limit=1"
            $searchResponse = Invoke-RestMethod -Uri $urlSearch -Method Get
            $firstResult = $searchResponse[1][0]
            if ($firstResult) {
                $encodedFirst = [uri]::EscapeDataString($firstResult)
                $urlSummary = "https://en.wikipedia.org/api/rest_v1/page/summary/$encodedFirst"
                $summary = Invoke-RestMethod -Uri $urlSummary -Method Get -ErrorAction SilentlyContinue
                if ($summary) {
                    Write-Host "`nClosest Term: $firstResult" -ForegroundColor Magenta
                    Write-Host "`n===== RESULT =====" -ForegroundColor Green
                    Write-Host "`n--- $($summary.title) ---" -ForegroundColor Yellow
                    Write-Host $summary.extract
                    Write-Host "`n====================="
                } else {
                    Write-Host "Nothing Found." -ForegroundColor Red
                }
            } else {
                Write-Host "Nothing Found." -ForegroundColor Red
            }
        }
        catch {
            Write-Host "Error to ask API: $_" -ForegroundColor Red
        }
    }
}