ÂO

  • Software engineerBrazilOttawa

    Ângelo Ocanã

    Software engineer at Shopify, in Ottawa. I’ve been learning and building for the web since 2007, and I still try to learn something new every day. I like making hard things feel simple for the people who use them.

  • Blocks, butterfly and the club
  • First powerlifting meet
  • Building my board-game table
  • Another sunny day at the frozen beach! ❄️🌅☀️🏊‍♂️
  • Sunset in the lake
  • swimming in the snow + snow angel ❄️🏊‍♂️🥶👼🌨️
  • freestyle + butterfly = 50m 🏊‍♂️🥶 -12°c, feels -19°, wind 30km/h. Today was hard, I almost gave up on going 😅
  • 1 year ago :D I'm almost recovered after the pandemic :/
  • First Japanese-style woodwork, no screws
  • -16°C scared most away, but 4 brave souls showed up to take the plunge today 🥶🧊💪🦵🏊‍♂️
  • First time climbing, it was fun 🤩, but painful 😅
  • bbq all year! burgers at 7am on -19° 🍔🥶
  • What should I do? I love butterfly 😭🥶🧊🏊‍♂️
  • 🔝
  • A refreshing snow angel 😇 and swim after shoveling for more than 1 hour
  • Building the resistance up again 🙏 it was so cold today🥶 -18c, wind gust 24km/h but the sun and the day were beautiful 😍
  • 🧗🔝💪
  • I can't believe I made this board gaming table! I started 1 month ago, it was a lot of work but I'm really happy with the results :D I'm looking forward for the next project! :D
  • Cold 🥶❄️
  • 🙏 #altitudegymkanata
  • 🔥🔥🔥
  • beautiful day to go to the beach 🏖️😍🥶❄️
  • Still far from the goal of 10 reps in 2025 but happy with the progress, started the year with 1 rep 🦵🏋️‍♂️🔥
  • First snow storm of the season ❤️❄️🌨️ best time to go to the gym 😅
  • Cold 🥶❄️
  • Deadlift
  • cassava and chicken thighs on the grill, will it turn out well?
  • ice to heal the pain
  • Heavy back squat
  • #ribs #dutchoven #bbq
  • Cutting ice is a lot of work 🥵 glad it worked out and now we have a long hole to swim ❤️
  • My new gym in Brazil lol
  • #ribs
  • TBT from yesterday 😅, first time 3 laps (150m), my back was frozen and barely moving on the last lap
  • My new gym in Brazil lol
  • Tortillas on the charcoal grill
  • 100m 🏊‍♂️🥶
  • Last set of the best exercise for chest
  • Sausages smoking on the grill
  • I forgot to were goggles today 🤦 It was really hard when doing the butterfly swim 🥶🥶🥶
  • I'm back to deadlifts after a long time without doing it :D
  • Steaks searing over charcoal
  • Swimming past blue ice blocks
  • oh no 🤣
  • shopify summit - Roots, Weezer, Girltalk.
  • First ice swimming of the season with my legend friend Tom 🥶😍🧊🏊‍♂️🩲
  • #basketball #trampoline
  • meditation, snake and frog.
  • First ice swim of the season, 15m pool 🥶🏊‍♂️🧊
  • leg workout 🔥🦵
  • NYC
  • lots of people today and I had the pleasure to help cut the ice 🔪🧊❄️🥶🏊‍♂️
  • Is this the hardest leg exercise? 🦵
  • Brazilian hot dog 😋🇧🇷🇨🇦
  • Sawed +2 feet, 3 reps shoulder press 😅, failed butterfly swim (my head froze and I started drinking water and I couldn't stop it 🤦😅)
  • T-bar rows 🐎💪🦵🔥
  • shopify summit - Roots, Weezer, Girltalk.
  • best pool ever 😅🥶🏊‍♂️
  • Old-school barbell rows in the middle of a long back workout
  • 🐧🐧🐧 fight Calgary zoo
  • 🧊🥶 the pool is getting longer, we extended it more today, now it is over 8 meters on the way to 20~25m 🙏
  • leg day 🔥
  • Toronto sunset from CN Tower
  • Oh no, the perfect ice block broke 😭
  • Leg and chest day in Brazil
  • Feijoada 😋
  • Butterfly in the ice pool
  • slow and steady wins the race 🔥💪🦵
  • So cute 🥹
  • No swimming today
  • happy new year! last leg day of the year, trying out pistol squats on the Smith machine, they are so hard 🤯🦵💪
  • first bbq of the snow season 🥶🔥🥩❄️
  • What a beautiful and warm (-1c) day to go to the frozen beach! 🏖️ 🥶❤️🏊‍♂️
  • new squats record 🤯🔥😁🦵
  • Seahorse among coral
  • Getting into the frozen lake
  • My goal for this year is to squat with 3 45lbs plates each side for 10 reps. It is already May and I'm still at 2 reps 😭😅🙏🦵
  • sushi & bacon is this a crime?
  • Walking out onto lake ice
  • Barbell rows from floor
  • Sea anemones in aquarium
  • Wading into icy lake
  • Ketchup, mustard and relish on Costco’s pepperoni pizza
  • The best way I found out to workout traps without pain in the neck
  • Sand tiger shark gliding
  • so windy today 🌬️🥶❄️
  • Slicing grilled steak
  • Deep barbell squats
  • Kelp forest aquarium tank
  • -8°, feels like -15°, wind 29 km/h, water moving fast... hardest cold plung of this season 🥶🏊‍♂️🧊
  • Firing up the grill in snow
  • Heavy dumbbell rows
  • Tropical fish over coral reef
  • Deadlifting ice blocks for a swim 🧊💪
  • Some new weights unlocked today 🔥
  • Jellyfish under blue light
  • 3 more ice blocks out today, the pool is now over 10 meters 🧊❤️💪🏊‍♂️🩲
  • Using every weight in the hotel gym on the leg press 🦵🔥 and I'm a weakling, a real bodybuilder would just warm up with this 😅
  • Stingrays gliding in aquarium
  • 4h to reopen 70% of the ice pool at -20ish°c 🥶🧊🏊‍♂️🌤️
  • last week I failed but today 1.5 reps, on the way to 10 reps 2025 🙏🦵🔥
  • Shark swimming overhead
  • Swimming between ice floes
  • first time 5 plates, but I'm not ready yet 😅 maybe next time 🙏
  • Drifting jellyfish
  • bowling 🎳
  • One-arm dumbbell row
  • First sleeding of the season 😍🥶
  • Riding my Moto in brazil after 2 years, I didn't forget how to do it :D
  • Leg extensions at the gym
  • #ribs #airfryer
  • 🐒🐒🐒 calgary zoo
  • bridge the hardest of all. Help! I can't get up after this 😅⚰️
  • Fish in aquarium tank
Nexttrack2.fit
  • Personal projects · track2.fit

    Train hard. Log easy.

    A workout tracker I design and build end to end, on iPhone, Apple Watch, iPad and the web, always in sync.

    Open track2.fit How we built it · soon

    The track2.fit website: Train hard. Log easy.
    track2.fit on iPhone: the week, a live session, history and body measurements
    Logging a bench press set on Apple Watch
  • track2.fit on iPhone: the week, a live session, history and body measurements

    It already knows what’s next.

    Suggests your next workout, fills in weights and reps, and logs whole sets from one sentence.

  • Logging a bench press set on Apple Watch

    Log a set from your wrist.

    Rest timer, heart rate and PRs, without reaching for your phone between sets.

  • Workout history with a heatmap and muscle breakdown on iPad

    The big picture.

    History, body measurements and records, laid out on iPad.

  • The track2.fit website: Train hard. Log easy.

    And on the web.

    The same workouts in any browser, always in sync.

  • Offline first.

    Every device keeps its own copy and syncs when it can: watch to phone, phone to cloud, cloud to everything else.

  • TRACK2.FITAndroidcoming soon

    Android and Wear OS.

    On the way. Free, no ads.

NextJump Over Jump
  • Personal projects · Jump Over Jump

    Make your next leap.

    Like checkers, but nobody gets captured. Hop over any piece, chain your jumps and race all eight home, in any browser.

    Hand-coded in 2014. Rebuilt with AI in 2026.

    Play it How we built it · soon

    1. BeginnerA gentle start
    2. 2014My first hand-coded bot
    3. ClassicPreserved from an early version
    4. ExpertPlans several moves ahead
    5. MasterDeeper thinking, up to 3 seconds
    6. NeuralPure intuition · 5.8M parameters

    Six bots, from gentle to Neural.

    A beginner, the two bots from my hand-coded versions, search bots that plan moves ahead, and Neural: it looks at the board once, searches nothing, and still beat Master in 19 of 24 games.

  • Room link copied

    You vs Friend

    Play a friend online.

    Open a private room, send the link, and play live from any phone or browser. No sign-up, and the server checks every move.

  • Room at the top.

    Three points a win, one a draw, for people and bots alike. It’s early, so a few wins go a long way.

    • 4 lessons
    • 30 languages
    • Works offline
    • 3D board
    • Light & dark

    Learn it in a minute.

    Four short lessons teach the rules by playing. The board is animated in 3D, it speaks 30 languages, and it works offline.

  • Behind the scenes

    Twelve years of rewrites.

    Every time I wanted to learn a language, I rebuilt the same little game.

    Bots from beginner to a neural network, online rooms for friends, and the original 2014 bot still waiting for a rematch.

  • $ git log --reverse --date=short
    2014-10-25  Init
    2014-10-27  Board
              …
    c_sharp_phaser/JumpOverJump

    2014

    C# + Phaser

    The first version, hand-coded to learn a game engine.

  • The 2016 board, bright green and teal

    2016

    TypeScript, Angular 2, Meteor

    One language for the client and the server.

  •   a b c d e f g h
    8 ● ● ● ● ● ● ● ●
    7 · · · · · · · ·
    6 · · · ● · · · ·
    5 · · · · · · · ·
    4 · · ○ · · · · ·
    3 · · · · · · · ·
    2 · · · · · · · ·
    1 ○ ○ · ○ ○ ○ ○ ○
    > c1 → c4

    2017

    Functional TypeScript

    The rules rewritten as pure functions, with a simple AI and a terminal UI.

  • JumpOverJump/
    ├── bend/   # massively parallel
    ├── c/      # tiny + fast
    ├── typescript/
    ├── c_sharp_angularjs/
    └── c_sharp_phaser/

    2024

    Bend and C

    Massively parallel code, and the smallest, fastest engine I could write.

  • Choosing a Neural opponent in the 2026 version

    2026

    Rebuilt with AI

    A neural opponent, online rooms for friends, and the 2014 bot still there to beat.

NextTic Tac Toe AI
  • Personal projects · Tic Tac Toe AI

    Beat my AI.

    I built it by hand in 2017 for my interview at Kinaxis, whose challenge was a game on the HTML5 canvas: three days from the first commit to the demo. The AI came after, with six more weeks of polish.

    You 0 × 0 AI

  • Built in 2017 with

    How it plays

    Simple rules make the moves: win if it can, block if it must, otherwise any free square. A small neural network (18 inputs, 9 hidden, 9 out) trains on every game too. That was the experiment, and it never learned to play: it always reaches for the same square, and the rules step in.

    The game here is the same code, ported to TypeScript.

    Code on GitHub

    • HTML5 Canvas
    • Web Workers
    • Synaptic
    • React
    • Redux
    • Ramda
    • Gatsby
    • GraphQL
    • styled-components
    • Jest
    • ESLint
    • Babel
  • From the commit log · 2017

    Three days, by hand

    • Sep 23The challenge arrives. First commit, and a board on a canvas by the afternoon.
    • Sep 24–25Lines that draw themselves frame by frame, then X, O and the winning line.
    • Sep 26The interview, at 11:30. The last commit before it, a test, went in at 11:28.
    • Sep 27–28After it: an AI that wins and blocks, and a neural network wired in.
    • Sep 30–Oct 6It takes turns starting, keeps the score and thinks in a web worker.
    • Oct 8The board rewritten as bits: two per square, one number for the whole game.
    • Nov 5–7Type signatures, docs and memoized animations.
NextCareer
  • Career · today, then back to the start

    Where I’ve built things.

    7 companies since 2007. Scroll sideways for each one.

    1. Shopify2021–Now
    2. Kinaxis2018–21
    3. Freelance2015–18 · the comeback
    4. Total On Demand · POL2011–15
    5. Empresário Cobrança2010–11
    6. Media W2010
    7. Upgrade Consultoria2008–10
    8. Freelance2007–10 · the start
  • 20182021

    Kinaxis

    Principal developer · Ottawa, Canada

    What I built

    The web app for RapidResponse, Kinaxis’s supply chain planning platform, in TypeScript and React. I helped move it off AngularJS, designed its monorepo, hunted down performance problems and memory leaks, and wrote our own state management library, inspired by Redux, Reselect and Recoil.

    1. Our own state libraryInspired by Redux, Reselect and Recoil, built for the size and speed the app needed.
    2. Reviews and mentoringMore than 100 pull requests reviewed a month, and always around to help the team.
    3. Tech talksRegular internal talks, and close work with UX and product to shape new features.
    • TypeScript
    • React
    • Redux
    • RxJS
    • Angular
    • C#
    • .NET MVC
    • Node.js
    • Jest
    • Jasmine
    • TestCafe
    • TDD
    • webpack
    • Gulp
    • styled-components
    • Sass
    • Ramda
    • Azure
  • Kinaxis · Highlights

    1. 01 Our own state library

      Inspired by Redux, Reselect and Recoil, built for the size and speed the app needed.

    2. 02 Reviews and mentoring

      More than 100 pull requests reviewed a month, and always around to help the team.

    3. 03 Tech talks

      Regular internal talks, and close work with UX and product to shape new features.

  • 20152018

    Freelance the comeback

    Independent developer

    What I built

    Back on my own after POL: web and mobile apps for startups and investors, websites, more work for POL, and my own board game.

    1. InnovativeA website for Innovative and BBM Brasil, in HTML, CSS and JavaScript.
    2. StaffgeistA web and mobile app in Angular and Ionic, on C#, MongoDB and Elasticsearch in Azure.
    3. HiveProject management software I spent a few months building for a group of investors, with Angular, Ionic, D3 and C#.
    4. Empório Viña RealThe store’s website, in plain HTML, CSS and JavaScript.
    5. APM For the Associação Paulista de Medicina, with Sorocabacom, in C#, .NET MVC, WCF and SQL Server.
    6. budbuds.usA US startup that helped growers monitor and control their plants’ growth with QR codes. Built with React Native, GraphQL and Node.js. No longer online.
    7. POLMore work on the rewards platform I helped build, this time as a freelancer.
    8. Jump Over JumpMy own board game, on the side: the C# and AngularJS version that lived on jumpoverjump.com for years, then its TypeScript rewrites.
    • TypeScript
    • AngularJS
    • Ionic
    • Cordova
    • React Native
    • Redux
    • GraphQL
    • Node.js
    • D3
    • C#
    • .NET MVC
    • WCF
    • MongoDB
    • PostgreSQL
    • Redis
    • Elasticsearch
    • SQL Server
    • Docker
    • Kubernetes
    • Azure
  • Freelance · the comeback · Highlights

    1. 01 Innovative

      A website for Innovative and BBM Brasil, in HTML, CSS and JavaScript.

    2. 02 Staffgeist

      A web and mobile app in Angular and Ionic, on C#, MongoDB and Elasticsearch in Azure.

    3. 03 Hive

      Project management software I spent a few months building for a group of investors, with Angular, Ionic, D3 and C#.

    4. 04 Empório Viña Real

      The store’s website, in plain HTML, CSS and JavaScript.

  • Freelance · the comeback · Highlights

    1. 05 APM

      For the Associação Paulista de Medicina, with Sorocabacom, in C#, .NET MVC, WCF and SQL Server.

    2. 06 budbuds.us

      A US startup that helped growers monitor and control their plants’ growth with QR codes. Built with React Native, GraphQL and Node.js. No longer online.

    3. 07 POL

      More work on the rewards platform I helped build, this time as a freelancer.

    4. 08 Jump Over Jump

      My own board game, on the side: the C# and AngularJS version that lived on jumpoverjump.com for years, then its TypeScript rewrites.

  • 20112015

    Total On Demand · Peela · POL

    Lead senior C# developer · São Paulo, Brazil · one company, renamed twice

    What I built

    Incentive-campaign and rewards platforms for big brands, then POL, our own e-commerce platform where people redeem the points they earn.

    1. Incentive campaigns5 to 8 a year, with 5 thousand to 9 million users: a social network for each campaign, games, goals and results, a news feed, quizzes and photo galleries.
    2. Campaign clientsVivo · Telefônica, BASF, Volkswagen, Sony, L’Oréal, Johnson, Net, FMC, FTD, Sky, Oi, BRF, Syngenta, Cury and Tenda.
    3. POL · Prêmios OnlineOur own e-commerce platform, connected to retail partners like B2W, Magazine Luiza, Walmart, Casas Bahia, FastShop and Avon. I built its search engine on Lucene.
    4. Working with clientsMeeting clients to understand what they needed and plan the strategy for each campaign.
    • C#
    • .NET MVC
    • Web API
    • WebForms
    • WCF
    • Entity Framework
    • StructureMap
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • SQL Server
    • PostgreSQL
    • jQuery
    • Heroku
    • AWS
    • DDD
    • TDD
    • Scrum
  • Total On Demand · Peela · POL · Highlights

    1. 01 Incentive campaigns

      5 to 8 a year, with 5 thousand to 9 million users: a social network for each campaign, games, goals and results, a news feed, quizzes and photo galleries.

    2. 02 Campaign clients

      Vivo · Telefônica, BASF, Volkswagen, Sony, L’Oréal, Johnson, Net, FMC, FTD, Sky, Oi, BRF, Syngenta, Cury and Tenda.

    3. 03 POL · Prêmios Online

      Our own e-commerce platform, connected to retail partners like B2W, Magazine Luiza, Walmart, Casas Bahia, FastShop and Avon. I built its search engine on Lucene.

  • Total On Demand · Peela · POL · Highlights

    1. 04 Working with clients

      Meeting clients to understand what they needed and plan the strategy for each campaign.

  • 20102011

    Empresário Cobrança

    Lead C# developer · São Paulo, Brazil

    What I built

    Systems for a debt-collection company: debt negotiation for people and companies across Brazil, data imports, access control and internal tools.

    1. Debt negotiationA web platform for negotiating the debts of people and companies across Brazil, with interest-rate algorithms and our own barcode generator for payment slips.
    2. Millions of recordsImports that cleaned up millions of records in many file formats, and fast queries on a 500 GB SQL Server database.
    3. Access controlAccess control that takes a photo with a webcam, built in WPF.
    4. Internal systemsHR, finance and CRM systems for the company itself.
    • C#
    • WCF
    • WPF
    • WebForms
    • Windows Forms
    • Windows Services
    • Ext.NET
    • jQuery
    • SQL Server
  • Empresário Cobrança · Highlights

    1. 01 Debt negotiation

      A web platform for negotiating the debts of people and companies across Brazil, with interest-rate algorithms and our own barcode generator for payment slips.

    2. 02 Millions of records

      Imports that cleaned up millions of records in many file formats, and fast queries on a 500 GB SQL Server database.

    3. 03 Access control

      Access control that takes a photo with a webcam, built in WPF.

    4. 04 Internal systems

      HR, finance and CRM systems for the company itself.

  • 2010

    Media W

    C# developer · São Paulo, Brazil

    What I built

    PDV TED, point-of-sale software for the Cadê o Nenê stores, built to Brazil’s tax rules and talking to Bematech fiscal printers and card machines.

    • C#
    • Windows Forms
    • MySQL
  • 20082010

    Upgrade Consultoria

    Junior C# developer · São Paulo, Brazil

    What I built

    Web systems for big construction projects and for São Paulo’s public schools, and the company’s own ERP and CRM.

    1. PriManagerSistema Pri’s web system for managing large construction projects, for clients like Eletropaulo and CDHU, and, in 2009, Mapa de Obras for AES Eletropaulo.
    2. FDE For the Fundação para o Desenvolvimento da Educação: a system to manage the infrastructure of São Paulo state’s public schools.
    3. ERP and CRMOur own system for running the company: cash flow, clients, suppliers and the relationship with each.
    • C#
    • .NET
    • WebForms
    • Windows Forms
    • Windows Services
    • Telerik
    • Web Services
    • jQuery
    • Flash · ActionScript
    • Google Maps API
    • SQL Server
  • Upgrade Consultoria · Highlights

    1. 01 PriManager

      Sistema Pri’s web system for managing large construction projects, for clients like Eletropaulo and CDHU, and, in 2009, Mapa de Obras for AES Eletropaulo.

    2. 02 FDE

      For the Fundação para o Desenvolvimento da Educação: a system to manage the infrastructure of São Paulo state’s public schools.

    3. 03 ERP and CRM

      Our own system for running the company: cash flow, clients, suppliers and the relationship with each.

  • 20072010

    Freelance the start

    Independent developer

    What I built

    Where it all started: my first websites and systems, for a church, a gym and local companies, then side work alongside my first jobs.

    1. Academia Corpus S&AMember sign-up and access control for the gym.
    2. Igreja Cristã de AlphavilleThree websites, for the church, its youth group and its branch in Portugal, and a system to show song lyrics on the projector.
    3. FRP InstalaçõesThe company’s website, in PHP and MySQL.
    4. RIS Security The website for a security and automation company in Itapevi, near São Paulo.
    5. BBM BrasilA system for sending SMS messages, in C#, ASP.NET MVC and SQL Server, built in 2009–10 alongside my job at Upgrade.
    • PHP
    • MySQL
    • jQuery
    • Flash · ActionScript
    • Adobe Flex
    • VB.NET
    • MS Access
    • C#
    • ASP.NET MVC
    • SQL Server
  • Freelance · the start · Highlights

    1. 01 Academia Corpus S&A

      Member sign-up and access control for the gym.

    2. 02 Igreja Cristã de Alphaville

      Three websites, for the church, its youth group and its branch in Portugal, and a system to show song lyrics on the projector.

    3. 03 FRP Instalações

      The company’s website, in PHP and MySQL.

    4. 04 RIS Security

      The website for a security and automation company in Itapevi, near São Paulo.

  • Freelance · the start · Highlights

    1. 05 BBM Brasil

      A system for sending SMS messages, in C#, ASP.NET MVC and SQL Server, built in 2009–10 alongside my job at Upgrade.

NextEducation & more
  • Education · courses · languages

    Never stopped learning.

    School and college around São Paulo, courses ever since, the languages I speak, and side projects along the way.

  • 20132014

    UNIP

    Universidade Paulista

    Analysis and systems development: the degree I started at FIAP, finished here in 2014.

  • 20102011

    FIAP

    Faculdade de Informática e Administração Paulista

    Where I started my degree in analysis and systems development.

  • 20072009

    ITB · FIEB

    Instituto Técnico de Barueri

    A technical course in web design, with an emphasis on digital media.

  • 2012

    Pluralsight

    Design and technology courses

    Online courses ever since. A few from the early years:

    • ASP.NET MVC 4 Fundamentals
    • Build Your Own Application Framework with ASP.NET MVC 5
    • AngularJS: Get Started
    • Domain-Driven Design Fundamentals
    • Introduction to Ruby on Rails 3
  • Online learning

    Besides Pluralsight, I keep learning from:

  • 20082009

    Inglês 200h

    AMPM · Aliança Mundial Idiomas

    A 200-hour intensive English course.

  • Certificates

    • FIAP Certified System Developer
    • Desenvolvedor .NET 5 EstrelasMicrosoft’s five-star .NET developer program.
    • Workshop MSDN Visual Studio 2010Microsoft
    • Certificado de Qualificação Profissional em Programação de ComputadoresA professional qualification in computer programming.
  • Languages

    • PortugueseNative
    • EnglishFluent
    • SpanishProficient
    • FrenchBasic
  • Side projects

    • Polutz Open-source, reusable and tested modules to share between projects, in React, GraphQL and Node.js.
    • angeloocana.com v22017: the second version of this site, in Gatsby, React and GraphQL.
    • angeloocana.com.br2014–15: my first site, in Angular and C#.
NextPosts
NextSay hello.