CP
Carlos Piñán
Staff Android Engineer · Kotlin & AI-augmented engineering · Lima, Peru
Staff Android Engineer · Kotlin e ingeniería aumentada con IA · Lima, Perú
I build Android software at 2B-user scale — and games on the side.
Construyo software Android a escala de 2B usuarios — y juegos en el camino.
14+ years building and leading mobile software. Most recently
Staff Engineer (IC6) at Meta, on WhatsApp's media infrastructure —
photos, videos, files and stickers for more than 2 billion users. As tech lead I shipped
Sticker Maker for Android end to end, from architecture to global launch,
reversing a long-standing decline in sticker usage.
Más de 14 años construyendo y liderando software móvil. Recientemente
Staff Engineer (IC6) en Meta, en la infraestructura de medios de WhatsApp —
fotos, videos, archivos y stickers para más de 2 mil millones de usuarios. Como tech lead
entregué Sticker Maker para Android de punta a punta, de la arquitectura al
lanzamiento global, revirtiendo una caída sostenida en el uso de stickers.
I work with Kotlin, Jetpack Compose, Clean Architecture and KMM, and use AI tools and agents
daily for design decisions, coding and problem-solving. Outside work I maintain
95+ open-source repos, ship apps on Google Play, and build small games.
Based in Lima, open to senior / staff Android and KMM roles remotely.
Trabajo con Kotlin, Jetpack Compose, Clean Architecture y KMM, y uso herramientas y agentes de
IA a diario para decisiones de diseño, código y resolución de problemas. Fuera del trabajo
mantengo más de 95 repos open source, publico apps en Google Play y hago
juegos pequeños. Radico en Lima y estoy abierto a roles senior / staff de Android y KMM en remoto.
- 14+years shippingaños entregando
- 2B+users reachedusuarios alcanzados
- 95+open-source reposrepos open source
- 5apps on Google Playapps en Google Play
What I doEn qué trabajo
Four things I keep being paid forCuatro cosas que hago bien
Consumer Android at scale, the architecture underneath it, the graphics work I do for fun, and the people side of engineering.
Android de consumo a gran escala, la arquitectura debajo, el trabajo gráfico que hago por gusto y el lado humano de la ingeniería.
Android at scaleAndroid a gran escala
Media pipelines, gallery and picker surfaces, ExoPlayer, Android 13 granular media permissions, Google Photo Picker as a native entry point. Reliability work: ANR fixes and deadlocks in download, cursor and sticker pipelines. 50+ A/B experiments authored and managed.
Pipelines de medios, galería y pickers, ExoPlayer, permisos granulares de Android 13, Google Photo Picker como punto de entrada nativo. Confiabilidad: correcciones de ANR y deadlocks en descarga, cursores y pipelines de stickers. Más de 50 experimentos A/B diseñados y gestionados.
- Kotlin
- ExoPlayer
- A/B testing
- ANR & deadlocks
Architecture & KotlinArquitectura y Kotlin
Clean Architecture, modularization of monolithic media stacks into independent modules, XML-to-Compose migrations, server-driven UI for banking apps, and Kotlin Multiplatform. Plus build automation: custom Gradle tasks and Python scripts that cut compile times.
Clean Architecture, modularización de stacks de medios monolíticos en módulos independientes, migraciones de XML a Compose, server-driven UI para apps bancarias y Kotlin Multiplatform. Además automatización de builds: tareas Gradle propias y scripts en Python que reducen tiempos de compilación.
- Jetpack Compose
- KMM
- Clean Architecture
- Gradle
Graphics, games & on-device MLGráficos, juegos y ML en dispositivo
Led the migration of an on-device ML model from PyTorch to ExecuTorch across the Family of Apps — lower memory, zero regressions across A/B rounds. On my own time: OpenGL ES renderers, Godot 4 games, cocos2d-x in C++, and game loops written from scratch on a canvas.
Lideré la migración de un modelo de ML en dispositivo de PyTorch a ExecuTorch en toda la familia de apps — menos memoria, cero regresiones en varias rondas A/B. Por mi cuenta: renderizadores OpenGL ES, juegos en Godot 4, cocos2d-x en C++ y game loops escritos desde cero sobre un canvas.
- ExecuTorch
- OpenGL ES
- Godot 4
- cocos2d-x
Leadership & mentoringLiderazgo y mentoría
Mentored engineers from IC3 to IC5 on architecture and career growth, ran technical interviews, wrote milestone plans and built team wikis so knowledge outlives the project. Certified Scrum Master, former GDG Lima organizer and speaker.
Mentoría a ingenieros de IC3 a IC5 en arquitectura y desarrollo de carrera, entrevistas técnicas, planes de hitos y wikis de equipo para que el conocimiento sobreviva al proyecto. Certified Scrum Master, ex organizador y ponente de GDG Lima.
- Tech lead
- Mentoring
- Hiring
- GDG Lima
ShippedPublicado
Apps on Google PlayApps en Google Play
Five are live on the store; each one has its landing page and privacy policy hosted here.
Cinco están publicadas en la tienda; cada una tiene su página y su política de privacidad alojadas aquí.
Pokémon stat calculator across all nine generations — DVs and Stat Exp for Gen I–II, IVs/EVs/natures from Gen III on. 1,025 species cached offline, build comparison, formula reference, six languages.
Calculadora de estadísticas Pokémon para las nueve generaciones — DVs y Stat Exp en Gen I–II, IVs/EVs/naturalezas desde Gen III. 1,025 especies en caché offline, comparación de builds, referencia de fórmulas, seis idiomas.
- React Native
- Offline
- 6 languages
Open-source call blocker for Peru and beyond. Rule engine with wildcard patterns, country matching, quiet hours, repeat-call rules and a bundled offline spam list. It does not declare the internet permission, so it cannot phone home.
Bloqueador de llamadas open source para Perú y más allá. Motor de reglas con comodines, coincidencia por país, horas de silencio, reglas de llamadas repetidas y una lista de spam offline incluida. No declara el permiso de internet, así que no puede enviar nada.
- Kotlin
- MIT
- No internet permission
The Windows 95 maze screen saver rebuilt for Android as four things in one: screen saver, playable game, live wallpaper and Daydream. Eleven maze algorithms, five sizes, texture packs drawn at runtime.
El protector de pantalla del laberinto de Windows 95 rehecho para Android como cuatro cosas en una: protector, juego, fondo animado y Daydream. Once algoritmos de laberinto, cinco tamaños y texturas dibujadas en tiempo de ejecución.
- Kotlin
- OpenGL ES
- Live wallpaper
Endless tunnel runner: three difficulties, Play Games leaderboards and achievements. Rewritten in Godot 4 from a cocos2d-x game I shipped years ago — and it runs in the browser, no install.
Runner de túnel infinito: tres dificultades, tablas de líderes y logros de Play Games. Reescrito en Godot 4 a partir de un juego en cocos2d-x que publiqué hace años — y corre en el navegador, sin instalar nada.
- Godot 4
- Play Games
- Web build
Peru Combi Rush
Drive a Lima combi: pick up passengers, dodge traffic, survive the route. A love letter to Peruvian public transport, built in Godot.
Maneja una combi en Lima: recoge pasajeros, esquiva el tráfico y sobrevive la ruta. Una carta de amor al transporte público peruano, hecha en Godot.
Sight-reading and music theory drills. Eight modes covering treble and bass clef notes, chords, intervals, scales, the circle of fifths and an interactive keyboard. Do-Re-Mi or C-D-E naming, streaks, fully offline.
Ejercicios de lectura a primera vista y teoría musical. Ocho modos: notas en clave de sol y fa, acordes, intervalos, escalas, círculo de quintas y un teclado interactivo. Nombres Do-Re-Mi o C-D-E, rachas y todo offline.
No installSin instalar
Open it in a browserÁbrelo en el navegador
These run straight from a URL — no store account, nothing to download.
Corren directo desde una URL — sin cuenta de tienda ni descargas.
The full Godot game exported to WebAssembly. Arrow keys or touch, same physics as the Android build.
El juego completo de Godot exportado a WebAssembly. Flechas o toque, con la misma física que la versión Android.
A memorial site for pets — installable PWA, works offline, photo collages per pet, all driven by JSON files.
Un sitio memorial para mascotas — PWA instalable, funciona offline, collages por mascota y todo definido con archivos JSON.
A 19-chapter written tutorial that builds Atari's Tempest from an empty Compose project up to a finished game.
Un tutorial escrito de 19 capítulos que construye el Tempest de Atari desde un proyecto Compose vacío hasta el juego terminado.
Open sourceCódigo abierto
Repositories I wroteRepositorios que escribí
95+ public repos on GitHub, 60 of them written by me, 150+ stars, Arctic Code Vault contributor. These ten are the ones worth your time, ordered by how much use they've seen — the rest are listed by theme below.
Más de 95 repos públicos en GitHub, 60 escritos por mí, 150+ estrellas y contribuidor del Arctic Code Vault. Estos diez son los que valen tu tiempo, ordenados por el uso que han tenido — el resto está listado por tema más abajo.
-
Cocos2dX_GooglePlayGamesServices
64 ★ · 48 forks · C++
Android plugin wiring Google Play Games Services — sign-in, achievements, leaderboards — into cocos2d-x through a C++/JNI bridge. My most-used repo, and the reason strangers still email me about JNI.
Plugin de Android que conecta Google Play Games Services — inicio de sesión, logros, tablas de líderes — con cocos2d-x mediante un puente C++/JNI. Mi repo más usado, y la razón por la que aún me escriben desconocidos sobre JNI.
-
Android-Jetpack-Compose-Documentation
23 ★ · Kotlin
Working notes and runnable samples from learning Jetpack Compose while it was still in beta — layout, state, animation and theming, each as compiling code rather than prose.
Notas y ejemplos ejecutables de aprender Jetpack Compose cuando aún estaba en beta — layout, estado, animación y theming, cada uno como código que compila y no como prosa.
-
OpenGLES-Compendium
13 ★ · Kotlin
A compendium of 3D rendering on Android: canvas and OpenGL ES examples building up from a triangle to lit, textured meshes.
Un compendio de renderizado 3D en Android: ejemplos con canvas y OpenGL ES que van del triángulo a mallas texturizadas con iluminación.
-
BTEndlessTunnel
9 ★ · 10 forks · C++
The original Turbo Race: a cocos2d-x game that shipped on both the App Store and Google Play, with Game Center, Play Games and Facebook wired in. MIT-licensed, and the ancestor of the Godot rewrite.
El Turbo Race original: un juego en cocos2d-x publicado en App Store y Google Play, con Game Center, Play Games y Facebook integrados. Licencia MIT, y el antecesor de la versión en Godot.
-
Tempest-Jetpack-Compose
Kotlin · tutorialtutorial
Atari's Tempest (1981) rebuilt for Android: the vector tube drawn on a Compose Canvas, state through a pure MVI reducer, and the whole build documented as a 19-chapter tutorial.
El Tempest de Atari (1981) rehecho para Android: el túnel vectorial dibujado sobre un Canvas de Compose, el estado en un reducer MVI puro y todo el proceso documentado en un tutorial de 19 capítulos.
-
Corta-Spam
Kotlin · MIT · on Google Playen Google Play
The call blocker above, in full. A rule engine over Android's CallScreeningService with an offline spam list — and no internet permission at all.
El bloqueador de llamadas de arriba, completo. Un motor de reglas sobre el CallScreeningService de Android con lista de spam offline — y sin ningún permiso de internet.
-
BrickBreakerAndroidProject
6 ★ · Kotlin
A brick breaker written from scratch on an Android canvas — no engine, no physics library. Collision, levels and the game loop are all hand-rolled.
Un brick breaker escrito desde cero sobre un canvas de Android — sin motor ni librería de física. Colisiones, niveles y game loop hechos a mano.
-
Raycasting-Android-Kotlin
5 ★ · Kotlin
A Wolfenstein-style raycasting renderer in pure Kotlin: DDA ray traversal, wall texturing and a first-person camera, drawn column by column.
Un renderizador por raycasting estilo Wolfenstein en Kotlin puro: recorrido DDA de rayos, texturizado de muros y cámara en primera persona, dibujado columna por columna.
-
turbo-race-godot
GDScript · plays in browserjuega en el navegador
The Godot 4 remake of Turbo Race: GDScript gameplay, Play Games integration on Android and a WebAssembly export served from this same site.
El remake de Turbo Race en Godot 4: gameplay en GDScript, integración con Play Games en Android y una exportación a WebAssembly servida desde este mismo sitio.
-
mis-mascotas
JavaScript · PWA
Static memorial PWA for pets: mobile-first, installable, offline via a service worker. Adding a pet is a folder and a JSON file — no backend, no build step.
PWA memorial estática para mascotas: mobile-first, instalable y offline con un service worker. Agregar una mascota es una carpeta y un archivo JSON — sin backend ni build.
Also on GitHub
También en GitHub
The other 49 repositories I wrote, by theme. Some are talk and workshop sources, some are practice — where a repo follows a book, a course or someone else's game, it says so.
Los otros 49 repositorios que escribí, por tema. Algunos son fuentes de charlas y talleres, otros son práctica — cuando un repo sigue un libro, un curso o el juego de otra persona, lo dice.
Graphics & 3D on AndroidGráficos y 3D en Android
Maze-3D ·
OpenGLES-32-Samples-App ·
OpenGLES2-Android ·
Android-Cube-OpenGLES-2 ·
Android-Canvas-Spritesheet ·
3D-Graphics-Engine ·
Frogger ·
AndroidStudioAndengine ·
OpenGL-ES-2.0-Android-to-Kotlin (book, ported to Kotlin)(libro, portado a Kotlin) ·
Mobile-3D-Game-Development (book source)(código de libro)
cocos2d-x & the C++ yearscocos2d-x y los años de C++
Turbo-Race (the 2012 game, updated to cocos2d-x 4.0)(el juego de 2012, actualizado a cocos2d-x 4.0) ·
TweeJumpCocos2dx (12 ★ — my cocos2d-x port of haqu's TweeJump)(12 ★ — mi port a cocos2d-x del TweeJump de haqu) ·
SneakyInput-Cocos2dx-2.0.x (2 ★, 13 forks — my fix of the joystick lib for v2.0.x)(2 ★, 13 forks — mi arreglo de la librería de joystick para v2.0.x)
Talks & workshops — GDG Lima, 2012–2019Charlas y talleres — GDG Lima, 2012–2019
DevFestLima2012_AndroidGame ·
GameDevConferenceLima15Julio ·
WorkshopAndroidGame2012 ·
GDayX ·
AndroidPE ·
DartSaltarin ·
CalculadoraDart ·
01-Introduccion-SRC,
02-Fisica-Basica,
03-Colisiones-Basicas
(my "game dev from zero" course, in Spanish)(mi curso «desarrollo de juegos desde cero», en español) ·
Android-Jetpack-Composer ·
CameraX-and-MLKit (Kotlin Everywhere)(Kotlin Everywhere)
HTML5 games, 2013–2014Juegos HTML5, 2013–2014
SnakeHTML5 ·
TetrisHTML5 ·
Bomberman ·
PlatformerExampleHTML5 ·
box2d
Compose, Android platform & webCompose, plataforma Android y web
Basic-Bluetooth-Compose-Chat ·
Jetpack-Compose-Challenge-Week-1,
Week-2 ·
AndroidDevChallenge ·
Pokedex (follows a video series)(sigue una serie de videos) ·
Android-Template-Libraries ·
Android-Associate-Developer-Training ·
AugmentedReality ·
GoogleMobileVision ·
pokestats-pwa ·
Ionic-Practice
Algorithms & courseworkAlgoritmos y cursos
Algorithms-Practice ·
Leetcode-Solutions ·
Kotlin-for-Java-Developers ·
AndroidNanodegree,
CapstoneProject,
android_spotify_streamer ·
Advanced-Android-Updated,
Android-Kotlin-Advanced
(Udacity courses, updated to current APIs)(cursos de Udacity, actualizados a APIs actuales)
Browse all 60 repositories I authored on GitHub
Ver los 60 repositorios que escribí en GitHub
ExperienceExperiencia
Where I've beenDónde he estado
From cocos2d-x games in Lima to WhatsApp media infrastructure in London.
De juegos en cocos2d-x en Lima a la infraestructura de medios de WhatsApp en Londres.
-
2022 — 2026
Meta · Software Engineer IC4 → IC6 (Staff) · LondonSoftware Engineer IC4 → IC6 (Staff) · Londres
WhatsApp media infrastructure: photos, videos, files and stickers for 2B+ users. Tech lead for Sticker Maker (global launch Apr 2024). Modularized the media stack, migrated Android 13 granular media permissions, shipped Google Photo Picker, led a PyTorch → ExecuTorch on-device model migration, fixed ANRs and deadlocks, ran 50+ A/B experiments, mentored IC3–IC5 engineers.
Infraestructura de medios de WhatsApp: fotos, videos, archivos y stickers para más de 2 mil millones de usuarios. Tech lead de Sticker Maker (lanzamiento global en abril de 2024). Modularicé el stack de medios, migré los permisos granulares de Android 13, publiqué Google Photo Picker, lideré la migración de un modelo en dispositivo de PyTorch a ExecuTorch, corregí ANRs y deadlocks, corrí más de 50 experimentos A/B y mentoricé a ingenieros IC3–IC5.
-
2021 — 2022
Distillery · Android Engineer, embedded with Thrive Market · LimaAndroid Engineer, integrado en Thrive Market · Lima
Implemented Clean Architecture across the codebase, migrated key screens from XML to Jetpack Compose, and designed the full Amplitude analytics system — events, user properties, funnels. Fixed bugs upstream in Amplitude's Android SDK with their team.
Implementé Clean Architecture en todo el código, migré pantallas clave de XML a Jetpack Compose y diseñé el sistema completo de analítica con Amplitude — eventos, propiedades de usuario y funnels. Corregí bugs upstream en el SDK Android de Amplitude junto a su equipo.
-
2020 — 2022
Globant · Android Mobile Architect · LimaAndroid Mobile Architect · Lima
Architect on a large white-label banking platform for FIS, deployed across major US financial institutions. Automated build and release with custom Gradle tasks and Python, cut compile times, and set the Android technical standards across Location, Payments, Withdrawals, Login and Accounts.
Arquitecto en una gran plataforma bancaria white-label para FIS, desplegada en varias instituciones financieras de EE. UU. Automaticé build y release con tareas Gradle propias y Python, reduje tiempos de compilación y definí los estándares técnicos de Android en Location, Payments, Withdrawals, Login y Accounts.
-
2015 — 2020
Belatrix Software · Senior Android → Subject Matter Expert · LimaSenior Android → Subject Matter Expert · Lima
Android SME on FIS. Designed the Android architecture, implemented server-driven UI for backend-configured screens, led technical interviews across the organization, and ran production monitoring with Firebase Crashlytics and Jenkins CI/CD.
SME de Android en FIS. Diseñé la arquitectura Android, implementé server-driven UI para pantallas configuradas desde el backend, lideré entrevistas técnicas en toda la organización y monitoreé producción con Firebase Crashlytics y CI/CD en Jenkins.
-
2011 — 2015
NorthSouth Studios · Game Developer → Lead Mobile Developer · LimaGame Developer → Lead Mobile Developer · Lima
Cross-platform games in C++ with cocos2d-x, HTML5 games with cocos2d-html5, and Android development. Where the graphics and game-loop work started.
Juegos multiplataforma en C++ con cocos2d-x, juegos HTML5 con cocos2d-html5 y desarrollo Android. Donde empezó todo el trabajo de gráficos y game loops.
-
2005 — 2009
Universidad Privada TelesupUniversidad Privada Telesup · Ingeniero de Sistemas — Computer Software EngineeringIngeniero de Sistemas
Also: Certified Scrum Master, Kotlin for Java Developers (JetBrains), Algorithmic Toolbox and Advanced Data Structures in Java (UC San Diego). Spanish native, English full professional.
Además: Certified Scrum Master, Kotlin for Java Developers (JetBrains), Algorithmic Toolbox y Advanced Data Structures in Java (UC San Diego). Español nativo, inglés profesional completo.