Skip to content
View fjtrujy's full-sized avatar
🏠
Working from home
🏠
Working from home

Organizations

@ps2dev @pspdev

Block or report fjtrujy

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
fjtrujy/README.md

Francisco Javier Trujillo — from pixels to platforms. Rendering, performance, open source.

Senior Software Engineer at Goodnotes  ·  Cross-platform graphics & systems  ·  Málaga, Spain

LinkedIn  ·  X / Twitter  ·  Merged open-source PRs

I like working where layers meet.

I'm Francisco, a software engineer who enjoys getting from a product idea all the way down to the platform that makes it possible.

At Goodnotes, I work on cross-platform rendering: bringing together Swift, WebAssembly, native graphics APIs, and web GPU backends to build fast, consistent drawing experiences. Before that, my work spanned iOS engineering and technical leadership. Across both, I care about performance, maintainable architecture, and helping other engineers ship confidently.

Outside work, I build and maintain open-source projects around emulation, graphics, console homebrew, and developer tooling. I especially enjoy the kind of bug that starts as "the screen occasionally flickers" and ends in a deep dive through memory, timing, drivers, or a compiler.

Where I spend my time

  • Pixels: Metal, WebGL / WebGPU, graphics pipelines, rendering correctness, and frame-time performance.
  • Platforms: Swift, C, C++, TypeScript, WebAssembly, constrained devices, and cross-platform architecture.
  • Tools & teams: CMake, CI, profiling, regression tests, SDKs, code review, and making complex systems easier to work on.

Things I've built and maintain

NJEMU — one arcade emulator, several very different machines

A shared C codebase for PSP, PlayStation 2, PlayStation Vita, and desktop, running classic Capcom and SNK arcade systems. Much of the interesting work is below the surface: platform drivers, memory-aware caching, graphics backends, audio, timing, and testing across hardware generations.

Explore the code · Downloads & project site

ps2_drivers — less boilerplate, more building

A C library that simplifies loading and managing PlayStation 2 IOP/EE drivers. Its goal is practical developer experience: make a famously low-level platform more approachable without hiding how it works.

Library & examples

OpenVCL — keeping a graphics toolchain alive

Helping modernize the open-source VCL compiler for PlayStation 2 vector units, with a focus on scheduling, measurable output quality, and compatibility with the current PS2 graphics toolchain. Originally created by Jesper Svennevid and Daniel Collin.

Compiler source · PS2GL toolchain integration

Kid Maze — a small, different kind of engineering problem

An interactive learning game where children draw directions, letters, or numbers to guide a character through a maze. Built as a lightweight web app, with pen/touch input and on-device recognition.

Try it · See the source

GitHub activity

GitHub contribution calendar for the last 365 days, current contribution streak, and primary languages across my public original repositories.

The heatmap shows contributions recorded by GitHub over the last 365 days. Language percentages represent each repository's primary detected language across my public, original, non-archived repositories—not the languages I use most at work.

Open-source impact

Public authored pull requests, merged pull requests, external repositories with merged contributions, and GitHub-counted commit contributions.

Upstream repositories are distinct repositories outside my account where I have a merged public pull request. Commit contributions follow GitHub's contribution rules; they are not a raw count of all Git commits (forks, non-default branches, and private work may not appear). These graphics are generated from GitHub's API every day, so the displayed counts reflect the last successful refresh.

Open source, with receipts

I contribute upstream as well as maintaining my own projects. Here are a few merged pull requests that show the kinds of problems I work on:

Project What changed
PS2SDK Fixed speculative block-cache read-ahead and recovery; exposed useful file I/O block-size information.
PSP SDK Improved profiling support for PBP and PRX builds; improved stdio block-size handling.
PS2GL Migrated builds to CMake and integrated an open VU compilation pipeline.
RetroArch Integrated ps2_drivers into the PS2 frontend; added PS2 resolution changes.

Browse all my merged pull requests →


I believe good engineering is equal parts curiosity, measurement, and collaboration. If you're building something involving graphics, performance, emulation, or cross-platform systems, I'd be happy to compare notes.

Connect on LinkedIn · Find me on GitHub · Follow on X

Pinned Loading

  1. cosmicfools/ModuleServices cosmicfools/ModuleServices Public

    Reusable ViewController with TableView, split in Sections (called here modules) that help you to develop faster in Swift

    Swift 22 8

  2. module-examples module-examples Public

    Example App that is implemented following the Modules Paradigm

    Swift 12 2

  3. ios-cleaner ios-cleaner Public

    Library that provide helpers to clean and let your app as was after a clean instalation

    Swift 2 2

  4. RetroArch RetroArch Public

    Forked from libretro/RetroArch

    Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

    C 11

  5. capricornCNFirmware capricornCNFirmware Public

    Firmware for Xiaomi Mi5s extracted from the official China Developer Roms

    66 6

  6. ps2_drivers ps2_drivers Public

    A library for making easier the usage of the IO drivers (`.IRX` + `EE .a`)

    C 30 5