Resume
Back to portfolio

Selected Work

Builds / Systems / Experiments

A proof-led tour of shipped and portfolio-ready work: game systems, local data tools, browser performance utilities, simulations, automation, and interfaces that make technical ideas easier to use.

01

GAME

Godot 4.6 / C++ GDExtension

Perk the Star

Perk the Star is a Godot 4.6 orbital tower-defense game about defending the Sun with satellites placed on concentric rotating rings. The project uses C++ GDExtension for reusable data, math, HUD, audio, and helper systems, while GDScript coordinates scene flow, input, drawing, and waves.

What it does

Players build towers on orbital slots, start waves, fire Solar Flare, earn Tech XP, and unlock permanent upgrades across Campaign, Boss Rush, Daily Seed, Draft Defense, Endless, and No-Flare Challenge.

What I built

I built the core gameplay loop, wave modes, tech-tree progression, scoring bonuses, saved records, and native extension helpers that keep the Godot project easier to maintain.

Why it matters

It shows game systems thinking: readable architecture, replayable modes, native performance helpers, and player-facing progression in one project.

Evidence & outcomes

  • Six playable modes with scaling waves, boss pressure, daily seeds, and draft perks.
  • C++ GDExtension split for reusable game data, math, HUD, audio, and helper classes.
  • Tech XP progression, Perfect Orbit bonuses, fast-kill combos, and saved best records.
Godot 4.6C++GDExtensionGDScriptGame Systems
Perk the Star main menu preview
02

DATA

Streamlit Market Analytics

Stock Backtester and Simulator

A Streamlit market analytics dashboard for downloading market data, comparing tickers, running strategy backtests, testing safe Quant Lab snippets, and practicing manual trades in a paper-trading simulator. It is educational software and does not place live trades.

What it does

The app loads Yahoo Finance, Stooq, or deterministic demo data; charts indicators; runs MA, RSI, and Bollinger strategies; compares benchmarks; and tracks portfolio risk.

What I built

I built a broker-style dashboard, backtest modules, paper-trading flows, safe strategy-code checks, risk views, and tests around the data and simulator pieces.

Why it matters

It turns finance concepts into an inspectable local tool with guardrails, repeatable demo data, and practical analytics.

Evidence & outcomes

  • Backtests moving-average crossover, RSI, and Bollinger Band strategies against buy-and-hold.
  • Quant Lab blocks imports, filesystem, network, subprocess, reflection helpers, and unsafe pandas writes.
  • Portfolio views include Sharpe ratio, drawdown, VaR, CVaR, rolling risk, and monthly returns.
PythonStreamlitPandasBacktestingRisk Metrics
Stock Backtester dashboard preview
03

MAPS

Local-First Choropleth Studio

Philippine Demographic Mapper

A local-first web app for creating infographic-style Philippine demographic choropleths. It supports geography scopes, PSGC-coded CSV joins, match review, palette controls, project JSON save/load, and publication-ready export while keeping caveats around sample fixtures visible.

What it does

Users select region, province, city, municipality, or scoped barangay levels, import CSV data, review match issues, style choropleths, and export map images.

What I built

I built the static app workflow, validation panels, export options, boundary-source selector, and scaffolded data pipeline for generated normalized GeoJSON.

Why it matters

It shows data product judgment: local-first workflows, validation before visualization, and careful handling of geographic data limits.

Evidence & outcomes

  • CSV import uses PSGC joins with duplicate, wrong-level, parent-scope, and value issue review.
  • Exports PNG/SVG in square, portrait, and report presets with title, subtitle, and source notes.
  • Includes no-dependency boundary fetch and normalization scripts for open Philippine boundary data.
JavaScriptGeoJSONPSGCSVGData Validation
Philippine Demographic Mapper choropleth preview
04

EXTENSION

Manifest V3 Browser Tool

ChatGPT Thread Optimizer

A Manifest V3 browser extension that keeps recent ChatGPT turns fully live and parks older lengthy turns into lightweight placeholders. The extension works client-side, does not send chat data anywhere, and restores parked turns in-place when clicked.

What it does

It watches the conversation with MutationObserver, applies content-visibility and containment, keeps the newest turns live, and reduces layout and paint pressure from older heavy messages.

What I built

I built the content script, settings flow, placeholder restoration, local long-thread fixtures, and simulated live tests for extension behavior.

Why it matters

It solves a real browser performance pain with reversible DOM changes instead of destructive shortcuts.

Evidence & outcomes

  • Includes local long-thread and live-simulated tests for regression checks.
  • Keeps original conversation content intact and expands parked turns immediately on click or keyboard activation.
  • Uses content-visibility, containment, and compact placeholders to reduce long-thread rendering cost.
JavaScriptManifest V3DOM APIsPerformanceChrome Extension
ChatGPT Thread Optimizer browser extension preview
05

PHYSICS

Interactive Browser Simulation

Projectile Motion Lab

An interactive browser-based physics lab for exploring projectile motion with and without air resistance. It turns projectile equations into a graphing-calculator style experience with live charts, presets, validation, share links, image export, and CSV output.

What it does

Students adjust object, environment, gravity, air density, speed, angle, and time step, then compare range, apex, flight time, energy, and drag effects.

What I built

I built the numerical simulation, Desmos-style controls, chart updates, animation scrubber, shareable URLs, CSV export, and per-chart PNG downloads.

Why it matters

It makes a physics model concrete, inspectable, and reusable without a backend or build step.

Evidence & outcomes

  • Ships as a live GitHub Pages app with a lightweight syntax-check workflow.
  • Includes object presets, environment presets, validation, animation, CSV export, and PNG chart export.
  • Compares ideal motion with quadratic drag using adjustable gravity and air density.
JavaScriptHTMLCSSPhysicsCharts
Projectile Motion Lab interactive chart screenshot
06

AUTOMATION

Consent-First Outreach Tool

Auto Response Email

A local, CSV-driven command-line tool for consent-first outreach. It sends personalized messages, collects replies, detects unsubscribe requests, maintains suppression lists, prepares response drafts, and keeps CSV logs for auditing and deduplication.

What it does

Users initialize local data, run setup checks, review contacts and replies in a dashboard, preview outreach, collect replies, and send only after explicit confirmation.

What I built

I built the CLI workflows, dashboard review surfaces, consent gates, dry-run defaults, suppression handling, scheduling, drafts, and audit logs.

Why it matters

It treats automation as a trust-boundary problem: local-first, review-first, capped by default, and explicit about consent.

Evidence & outcomes

  • Outreach is capped at 25 messages per run unless deliberately overridden.
  • Dry runs are the default and real sends require confirmation flags.
  • SMTP, IMAP, dashboard review, suppression lists, reply drafts, schedules, and CSV audit logs live locally.
PythonSMTPIMAPCSVLocal Dashboard
Auto Response Email dashboard and CLI preview
07

PYTHON

Standard-Library CLI Suite

Python Automation Toolkit

A practical Python automation portfolio project with file organization, CSV reporting, folder backups, tests, GitHub Actions, and step-by-step learning notes. The implementation sticks to the standard library.

What it does

The toolkit sorts files into useful folders, reads sales CSV data to generate Markdown summaries, and creates timestamped ZIP backups.

What I built

I built the reusable modules, argparse CLI, unittest coverage, sample data, lessons, and GitHub Actions validation.

Why it matters

It demonstrates clean beginner-friendly automation with tests and documentation, without unnecessary dependencies.

Evidence & outcomes

  • Standard-library implementation using argparse, unittest, csv, pathlib, and zipfile.
  • Includes file organizer, CSV report generator, and folder backup commands.
  • Ships with sample files, learning notes, tests, and CI.
PythonargparseunittestGitHub ActionsCLI
Python Automation Toolkit terminal preview
08

CLI

Local Markdown Journal

Terminal Journal

A minimal terminal journal for fast daily logging without opening a full notes app. It stores Markdown entries locally, supports titles, moods, tags, favorites, templates, filters, review tools, export formats, backup, restore, validation, Git sync, and single-file encryption.

What it does

Users create timestamped entries, search and filter notes, review streaks and calendars, export Markdown/JSON/HTML, extract todos, and back up or restore journal folders.

What I built

I built the command set, local file workflow, metadata filters, export paths, backup/restore helpers, themes, and utility commands.

Why it matters

It shows product thinking in a small CLI: fast capture first, then review, export, backup, and privacy-oriented local storage.

Evidence & outcomes

  • Supports titles, moods, tags, favorites, templates, search, stats, streaks, and calendar review.
  • Exports Markdown, JSON, or HTML and can back up, restore, archive, validate, and Git-sync entries.
  • Keeps notes in a simple local folder so the data stays inspectable.
PythonCLIMarkdownLocal FilesProductivity
Terminal Journal sample CLI session showing list, search, and stats output
09

WEB

Next.js Portfolio

Personal Portfolio Website

This portfolio is a statically exported Next.js app with reusable content data, project screenshots, dedicated About/Projects/Skills/Contact routes, scroll reveal behavior, section tracking, and automated GitHub Pages deployment.

What it does

It presents my profile, education, skills, project case studies, resume, and contact routes in one responsive web presence.

What I built

I built the Next.js structure, content model, project cards, route pages, responsive CSS, image handling, and portfolio data updates.

Why it matters

It acts as the public hub for the rest of the work and keeps project content easy to maintain.

Evidence & outcomes

  • Centralized profile and project data in app/siteData.ts and app/projectData.ts.
  • Dedicated routes for About, Projects, Skills, and Contact.
  • Uses local screenshots, static export, and a GitHub Actions workflow for GitHub Pages.
Next.jsReactTypeScriptCSSGitHub Pages
Personal portfolio website screenshot
10

GAME

DOST Game Dev / Disaster Simulation

Bagyo Command

A Godot 4.6 and C++ GDExtension city-builder simulation for disaster readiness. Players study a procedural coastal barangay map, place evacuation and mitigation infrastructure, then survive escalating disaster chains across flood, typhoon, tsunami, earthquake, and landslide scenarios.

What it does

Players make preparedness decisions on a generated coastal map and watch those decisions tested by escalating hazards.

What I built

I worked on the systems framing for procedural maps, disaster scenarios, infrastructure placement, and simulation feedback loops.

Why it matters

It connects interactive systems work with disaster-readiness education.

Evidence & outcomes

  • Procedural coastal barangay map concept with seeded replayability.
  • Multiple disaster types and mitigation infrastructure decisions.
  • Godot and C++ GDExtension stack matching my strongest game-systems work.
Godot 4.6C++GDExtensionSimulationProcedural Maps
Bagyo Command disaster-response city-builder preview
11

MOBILE

Offline-First Finance App

Flownance / FinanceFlow Mobile

A mobile-first personal finance tracker designed to work without a backend or required account. It includes local SQLite persistence, income/expense/transfer handling, account and category management, monthly budget progress, dashboard summaries, spending analytics, demo data, backup export, and PIN or biometric locking through Expo security APIs.

What it does

Users track balances, income, expenses, transfers, budgets, categories, and spending analytics while keeping data on-device.

What I built

I built the local-first app flow, storage model, budget summaries, transaction handling, demo data, backup path, and app-lock behavior.

Why it matters

It shows mobile product work around privacy, local persistence, and daily-use finance workflows.

Evidence & outcomes

  • Offline-first SQLite persistence with no required backend account.
  • Income, expense, transfer, account, category, monthly budget, and analytics flows.
  • Optional PIN or biometric locking through Expo security APIs.
ExpoReact NativeTypeScriptSQLiteSecureStore
FinanceFlow offline finance tracker mobile preview
12

MAPS

Desktop Map Utility

Geohash Studio

A desktop-style JavaScript geospatial utility for encoding coordinates, decoding geohashes into coordinate ranges, estimating cell size, selecting points from a street map, and plotting multiple geohashes. It includes a tested geohash algorithm, Leaflet map integration, local world data, and a quiet desktop launcher.

What it does

Users encode coordinates, decode geohashes, inspect bounds and cell sizes, pick map points, and plot multiple cells.

What I built

I built the geohash logic, validation states, map integration, recent history, and desktop-like UI flow.

Why it matters

It turns a compact spatial encoding algorithm into a practical visual tool.

Evidence & outcomes

  • Encode/decode flow with coordinate ranges and cell-size estimates.
  • Leaflet map selection and multi-geohash plotting.
  • Local world data and a desktop launcher workflow.
JavaScriptLeafletOpenStreetMapNode.jsGeoJSON
Geohash Studio coordinate encoder and decoder screenshot
13

MEDIA

Gradio / FFmpeg / Real-ESRGAN

Local Video Ad Pipeline

A local Gradio app for assembling short videos from one or more clips. FFmpeg handles trimming, reframing, color grading, stitching, and export presets; portable Real-ESRGAN NCNN-Vulkan upscales frames. Project settings and previews stay local.

What it does

Users inspect frame thumbnails, trim and crop clips, upscale them, compare previews, and export aspect-ratio presets.

What I built

I built the Gradio project flow, FFmpeg render steps, Real-ESRGAN integration, progress controls, and local preview and export tools.

Why it matters

It shows a practical local video workflow with visible processing steps and no platform credentials required.

Evidence & outcomes

  • A generated four-frame demo completed GPU upscale, FFmpeg rendering, color grade, and export locally.
  • Frame thumbnails, before/after preview, saved project settings, and aspect-ratio presets.
  • Local-only processing; no social-platform credentials or automatic posting.
PythonGradioFFmpegReal-ESRGANVideo Pipeline
Private sourceView Demo Capture
Video Ad Pipeline Gradio app completing an upscale of a generated test clip; local paths redacted

01 - project notes

Godot / Native Extensions

Game Systems Work

Perk the Star is the strongest current proof point: Godot gameplay, C++ GDExtension helpers, replayable modes, tech-tree progression, scoring rules, and saved records working together.

Data Product Design

Local-First Data Tools

The stock dashboard, demographic mapper, Geohash Studio, FinanceFlow, and Projectile Motion Lab all favor inspectable local workflows where users can validate inputs and export results.

Trust Boundaries

Conservative Automation

The email automation and browser extension projects are intentionally cautious: dry-run defaults, reversible DOM changes, local data handling, explicit consent, and tests around risky behavior.

02 - open source

Godot / C++

Perk the Star

A public game project with native extension systems, multiple modes, tech-tree progression, wave data, docs, and asset-credit hygiene.

View Source

Python / Streamlit

Stock Backtester and Simulator

A market analytics workstation with strategy backtests, Quant Lab safety checks, paper trading, risk metrics, tests, and clear education-only framing.

View Source

JavaScript / Mapping

Philippine Demographic Mapper

A local-first choropleth studio with PSGC joins, match review, generated boundary workflows, and PNG/SVG export.

View Source

Manifest V3

ChatGPT Thread Optimizer

A privacy-conscious browser extension with reversible DOM changes, settings, docs, and local long-thread performance tests.

View Source

Python / Automation

Auto Response Email

A consent-first outreach tool with dry-run defaults, confirmation gates, suppression lists, local review flows, schedules, and CSV audit logs.

View Source

Python / CLI

Python Automation Toolkit

A standard-library automation repo with a CLI, unit tests, GitHub Actions, learning notes, and practical file/report/backup examples.

View Source

These projects show native game logic, data analysis, browser performance, maps, simulations, automation, local-first product thinking, and responsive web delivery.

Contact Me