Pablo Montenegro

Portfolio

Things I shipped, and the posts that prove it

Almost everything I build starts with something annoying me. Then I fix it, put the code on GitHub and write a post about it, so most of what's here comes with a receipt: a live site, a repo, or a write-up on this blog. The day jobs are here too, minus the internal stuff I can't share.

years building for the web, since 2007
19
projects on this page
21
blog posts, each one in English and Portuguese
104

Rarely just one thing at a time

There was almost always a day job, a business and a side project running at the same time. Some years, also a trip to E3.

Scroll sideways to see all of it.

Day jobs

Restaurant site cleanup: 2007
C#/.NET intern: 2009 to 2010
WordPress agency: 2010
Muxi: 2016 to 2018
Studocu: 2018 to today

My own business

FingerStore & NanoBoards: 2010 to 2020
Zenkai Zone: 2025 to today
Fingerboard Supply: 2025 to today
Freelance web dev: 2010 to 2015

Side projects

Chatbots: 2016 to 2018
Resume Builder: 2018
Game dev: 2019 to 2021
JAMStack & automation: 2020 to 2023
Magento 2 extensions: 2024 to 2025
Musclog: 2024 to today

Writing & games press

This blog: 2008 to today
Nintendo Blast videos: 2009 to 2012
Press at E3, Gamescom, SGF: 2012 to 2023

What annoyed me: Paying a monthly fee to log a squat.

Musclog

2024 to today

An offline-first workout and nutrition tracker. No servers, no account, no subscription. It's my main open-source product, on Google Play and on the web from the same codebase.

  • React Native and Expo Router, with WatermelonDB on top of SQLite on Android and LokiJS on the web.
  • Real food databases (USDA and Open Food Facts), barcode scanning, and OCR for nutrition labels.
  • Weight, body fat and nutrition encrypted at rest, with a key that never leaves the device.
  • Ported to a real Game Boy Color cartridge in C with GBDK-2020: no floats, no malloc, 517 foods packed into ROM banks.
  • Counts barbell reps from a €20 Bluetooth sensor with a random forest exported to plain JavaScript, published as a work in progress.
  • React Native
  • Expo
  • TypeScript
  • WatermelonDB
  • SQLite
  • C

What annoyed me: Tailoring my resume for every job listing.

Resume Builder

2018 to today

Builds a resume from a spreadsheet or from a form generated out of the JSON Resume schema. A recruiter found the repo, asked if I knew React, and that's how I ended up in the Netherlands.

  • The form is generated recursively from the JSON Schema, so a schema change needs no code change.
  • Download links are base64 data URIs, so exporting needs no server.
  • Still the tool I use for my own resume, years later.
  • React
  • Gatsby
  • Formik
  • JSON Schema
  • Material UI

What annoyed me: Knowing nothing about making games.

Super Ollie vs Pebble Corp

2020 to 2021

A Phaser 3 skate platformer where the villain is a corporation trying to ban skateboarding. It's not finished, but every step of it is documented in 23 public devlogs.

  • Game rules live in Tiled tile and object properties, and colliders, triggers and AI paths are generated from them at runtime.
  • Rewrote the enemy AI from per-frame tile probes to colliders calculated once, because the first version didn't scale.
  • Wrote my own build tooling: sprite atlas generation, tileset extrusion, and a Webpack transform that inlines Tiled tilesets.
  • Ladders, monkey bars, moving platforms, checkpoints, weather, translations and a mobile build with on-screen controls.
  • Phaser 3
  • JavaScript
  • Tiled
  • Webpack
  • Cordova

What annoyed me: Finding a place to rent in Amsterdam.

Home Finder

2022 to 2023

Free rental alerts for seven Dutch real estate websites, built because paying for alerts in the middle of a housing crisis made me angry.

  • GitHub Actions does the scraping every hour, a Google Form does the signup and a Google Sheet is the database.
  • The infrastructure costs €0, on purpose: the free tier was the architecture.
  • Started as funda-scraper, my own Puppeteer and Telegram script from when I was looking for a place.
  • Node.js
  • Puppeteer
  • GitHub Actions
  • Google Sheets
  • Gatsby

Everything else

Where I've worked

  1. Zenkai Zone

    January 2025 to today

    Founder, and everything else · Netherlands

    My store for collectibles and retro games, started in January 2025. Same deal as the first time around: one person, so the code, the products, the photos and the packing are all mine.

    • Runs on Magento 2, with my own extensions on top of it, like the retro RPG shop page.
    • Wrote about how pricing works in the collectibles world, from the seller side.
  2. Fingerboard Supply

    January 2025 to today

    Founder, and everything else · Netherlands

    A fingerboard store, started in January 2025. It's the FingerStore idea again, this time from Europe and with fifteen years more of knowing what I'm doing.

  3. Studocu

    May 2018 to today

    Full-stack developer · Amsterdam, Netherlands

    A study platform used by students all over the world. I joined as the 5th developer and stayed while it grew into a much bigger engineering team.

    • My first task was migrating the frontend from CoffeeScript to JSX. Later it went to TypeScript and React 18, and I was the one willing to touch the Webpack config.
    • Moved pages from the Laravel monolith into Next.js one by one, with gradual cookie-based releases and a way back to Laravel if something broke.
    • Made Laravel and Next.js read and write the same encrypted session cookies by reimplementing Laravel's AES-256-CBC and HMAC format with the Web Crypto API.
    • On the engineering on-call rotation since 2022, and migrated error reporting from Bugsnag to Sentry across both apps behind a feature flag.
    • Owned A/B tests end to end: build them, read the results, decide, then delete the losing variant.
    • Ran the frontend guild from 2021 and did technical interviews that helped hire around 10 people.
    • React
    • Next.js
    • TypeScript
    • Laravel
    • PHP
    • Kubernetes
    • Sentry
  4. Muxi

    2016 to April 2018

    Software developer · Brazil

    Software for payment terminals, in a JavaScript-like language running on a native C runtime. Most of it for Cielo, the company's biggest client.

    • Delivered two Cielo certifications, sitting with their QA team in São Paulo, and shipped through a staged rollout to a fleet of up to 8 million terminals.
    • Tech lead on the Cielo Look and Feel redesign, owning the whole UI.
    • Built ISO-8583-Breaker, which became the company's official debugging tool, and a font tool that generates terminal bitmap fonts from a font file.
    • Took Bitcoin payments on terminals from a proof of concept shown in Las Vegas to a product, and became its product owner.
    • JavaScript
    • C
    • ISO 8583
    • React Native
  5. FingerStore & NanoBoards

    October 2010 to 2020

    Founder, and everything else · Brazil

    Brazilian fingerboarders had no shop at all, so I made one. It ran for a decade and I did all of it alone: code, imports, photos, packing, support and the community.

    • Launched the first fingerboard e-commerce in Brazil on Magento 1.4, about three months from idea to live store.
    • Created NanoBoards in 2012, my own brand, with graphics licensed from big Brazilian skate brands, and exported it to the US and Europe.
    • Custom Magento theme and modules, a multi-store setup, a build-your-own-setup configurator, and a version upgrade every year for five years.
    • Accepted Bitcoin from 2014, long before that was normal for a small shop.
    • Magento
    • PHP
    • PagSeguro
    • Mercado Pago
  6. Freelance

    2010 to 2015

    Web developer · Brazil

    Other people's websites, at the same time as my own store. Mostly WordPress.

    • Custom WordPress themes and plugins, including WooCommerce work.
    • Shopify API integrations for clients.
    • WordPress
    • WooCommerce
    • PHP
    • Shopify API
  7. First jobs

    2007 to 2010

    Intern, then web developer · Brazil

    Two weeks cleaning up restaurant data in Dreamweaver in 2007, then my first real programming job in C# and .NET, then a few months of hotel websites at a WordPress agency.

    • Built a realtor website with an admin area for listing properties.
    • Built a directory of local taxi drivers with a profile page each, made to rank on Google. It did.
    • C#
    • .NET
    • WordPress
    • PHP

Prizes, articles and press badges

  • 2024

    Sharing encrypted Laravel cookies with Next.js

    Article on the Studocu Tech blog about making both apps share one session.

  • 2022

    Studocu hackathon, 1st place

    A GPT-3 chatbot inside the document viewer that answered questions about the document you were reading, before ChatGPT came out.

  • 2021

    Studocu hackathon, 3rd place

    Third place in the company hackathon, which I entered most years.

  • 2016

    VanHackathon winner

    Won with Team WeRules and Shop Botifier, a Telegram bot factory for Shopify stores.

  • 2012

    Games press, as "Pablo Pirata"

    Covered E3 in Los Angeles for Brazilian outlets and planned the trip for the team, later Gamescom and Summer Game Fest 2023. Unpaid, on top of the day job.

Got something annoying that needs fixing?

Tell me about it. The contact form goes straight to my inbox, and the code for most of what's above is on GitHub.