
Prioritizing user experience to build valuable web services.
Writing code with a focus on scalable architecture and performance optimization.
Tech Stack
Experience
PlusX
Frontend Developer
2020 - 2020

Built a strong foundation in frontend development and UI·UX at a design agency.
- –Developed interactive web experiences using GSAP, Canvas, and other technologies.
SchoolBell
Frontend Developer
2021 - 2025
Led frontend development for SchoolBell, a notification service platform (Web & App).
- –Refactored legacy code and resolved technical debt
- –Migrated Cordova app to Capacitor, improving performance and maintainability
- –Introduced Nx monorepo to resolve dependency issues across multiple projects
- –Implemented i18n internationalization to support multi-language content across the platform
- –Established Angular-based internal coding conventions, wrote guides, and trained new hires

Ported the legacy Cordova-based application to Capacitor and Ionic.
Freelancer
Full Stack Developer
2026 - Present
Providing personal chess coaching and developing chess-related web services.
- –Full-stack web application development
- –Designed data structures using PostgreSQL
A project that produces chess educational videos using frontend technologies.
- –Code-based video production: Video scenes are defined as React components and rendered frame-by-frame by Remotion.

Building an interactive chess learning platform for chess learners tired of passive, traditional learning methods.

A real-time interactive drawing engine prototype built to gain a fundamental understanding of digital drawing. It allows multiple users to draw simultaneously on a single canvas, optimized for smooth performance even as stroke count grows.
- –O(1) Rendering Performance: Introduced PixiJS RenderTexture to prevent main thread blocking caused by accumulating Bézier curve computations, eliminating frame drops as stroke count increases.
- –SSOT Architecture & State Sync: The server acts as the single source of truth for all stroke vector data. Snapshots every 50 strokes let late-joining users instantly reconstruct the full canvas state.
- –Optimistic UI: Client strokes are rendered locally immediately without waiting for server responses, maximizing user experience. However, an interview question helped me realize that concurrent drawing by multiple clients could cause race conditions, leading to inconsistent stroke order and mismatched canvas states across clients. To resolve this, I plan to update the architecture so the server broadcasts a confirmed stroke buffer at each snapshot interval, automatically reconciling stroke order across all connected clients.
Contact
Feel free to contact me for any inquiries.
fireonmac@email.com