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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
These projects show native game logic, data analysis, browser performance, maps, simulations, automation, local-first product thinking, and responsive web delivery.