Â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.

NextCareer
  • Career · today, then back to the start

    Where I’ve built things.

    7 companies since 2008. Scroll sideways for each one.

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

    Kinaxis

    Principal developer · Ottawa, Canada

    What I built

    A large TypeScript and React web app for supply chain planning. I 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
    • Jest
    • Jasmine
    • TestCafe
    • webpack
    • styled-components
    • Sass
    • Ramda
  • 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.

  • 20072018

    Freelance

    Independent developer

    What I built

    Systems and websites for SMS messaging, gyms, e-commerce and companies, alongside every full-time job. Clients and projects included Staffgeist, Hive, Empório Viña Real, APM and the first Jump Over Jump.

    • C#
    • .NET MVC
    • AngularJS
    • TypeScript
    • Node.js
    • SQL Server
  • 20112015

    Total On Demand · POL

    São Paulo, Brazil · one company, renamed

    What I built

    Incentive-campaign and rewards platforms for big brands: a social network for each campaign, games, goals and results, quizzes and photo galleries. Then POL, an e-commerce platform where people redeem their points for products from retail partners. I built its search engine on Lucene.

    For Vivo · Telefônica · BASF · Volkswagen · Sony · L’Oréal · B2W · Magazine Luiza · Walmart · Casas Bahia

    • C#
    • .NET MVC
    • Web API
    • WebForms
    • WCF
    • Entity Framework
    • Lucene
    • RabbitMQ
    • SQL Server
    • PostgreSQL
    • jQuery
    • DDD
    • TDD
  • 20102011

    Empresário Cobrança

    São Paulo, Brazil

    What I built

    A debt-negotiation system for people and companies across Brazil, with complex financial calculations, barcode generation and imports of millions of records. Also access control with photo capture, and internal HR, finance and CRM systems.

    • C#
    • WCF
    • WPF
    • WebForms
    • Windows Services
    • Ext.NET
    • SQL Server
  • 2010

    Media W

    São Paulo, Brazil

    What I built

    Point-of-sale software for the Cadê o Nenê stores, talking to fiscal printers and card machines.

    • C#
    • Windows Forms
    • MySQL
  • 20082010

    Upgrade Consultoria

    São Paulo, Brazil

    What I built

    PriManager, a web system for managing construction projects for clients like Eletropaulo and CDHU; an infrastructure system for São Paulo state schools (FDE); and an in-house ERP and CRM.

    • C#
    • .NET
    • Telerik
    • Web Services
    • Flash · ActionScript
    • Google Maps API
    • SQL Server
NextPosts
NextSay hello.