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.

Ice swimming
Blocks, butterfly and the club

Lifting
First powerlifting meet

Woodworking
Building my board-game table

Ice swimming
Another sunny day at the frozen beach! ❄️🌅☀️🏊♂️

Camping
Sunset in the lake

Snow days
swimming in the snow + snow angel ❄️🏊♂️🥶👼🌨️

Ice swimming
freestyle + butterfly = 50m 🏊♂️🥶 -12°c, feels -19°, wind 30km/h. Today was hard, I almost gave up on going 😅

Lifting
1 year ago :D I'm almost recovered after the pandemic :/

Woodworking
First Japanese-style woodwork, no screws

Ice swimming
-16°C scared most away, but 4 brave souls showed up to take the plunge today 🥶🧊💪🦵🏊♂️

Lifting
First time climbing, it was fun 🤩, but painful 😅

Food
bbq all year! burgers at 7am on -19° 🍔🥶

Ice swimming
What should I do? I love butterfly 😭🥶🧊🏊♂️

Lifting
🔝

Snow days
A refreshing snow angel 😇 and swim after shoveling for more than 1 hour

Ice swimming
Building the resistance up again 🙏 it was so cold today🥶 -18c, wind gust 24km/h but the sun and the day were beautiful 😍

Lifting
🧗🔝💪

Woodworking
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

Ice swimming
Cold 🥶❄️

Lifting
🙏 #altitudegymkanata

Food
🔥🔥🔥

Ice swimming
beautiful day to go to the beach 🏖️😍🥶❄️

Lifting
Still far from the goal of 10 reps in 2025 but happy with the progress, started the year with 1 rep 🦵🏋️♂️🔥

Snow days
First snow storm of the season ❤️❄️🌨️ best time to go to the gym 😅

Ice swimming
Cold 🥶❄️

Lifting
Deadlift

Food
cassava and chicken thighs on the grill, will it turn out well?

Ice swimming
ice to heal the pain

Lifting
Heavy back squat

Food
#ribs #dutchoven #bbq

Ice swimming
Cutting ice is a lot of work 🥵 glad it worked out and now we have a long hole to swim ❤️

Lifting
My new gym in Brazil lol

Food
#ribs

Ice swimming
TBT from yesterday 😅, first time 3 laps (150m), my back was frozen and barely moving on the last lap

Lifting
My new gym in Brazil lol

Food
Tortillas on the charcoal grill

Ice swimming
100m 🏊♂️🥶

Lifting
Last set of the best exercise for chest

Food
Sausages smoking on the grill

Ice swimming
I forgot to were goggles today 🤦 It was really hard when doing the butterfly swim 🥶🥶🥶

Lifting
I'm back to deadlifts after a long time without doing it :D

Food
Steaks searing over charcoal

Ice swimming
Swimming past blue ice blocks

Lifting
oh no 🤣

Music
shopify summit - Roots, Weezer, Girltalk.

Ice swimming
First ice swimming of the season with my legend friend Tom 🥶😍🧊🏊♂️🩲

Lifting
#basketball #trampoline

Nature
meditation, snake and frog.

Ice swimming
First ice swim of the season, 15m pool 🥶🏊♂️🧊

Lifting
leg workout 🔥🦵

Travel
NYC

Ice swimming
lots of people today and I had the pleasure to help cut the ice 🔪🧊❄️🥶🏊♂️

Lifting
Is this the hardest leg exercise? 🦵

Food
Brazilian hot dog 😋🇧🇷🇨🇦

Ice swimming
Sawed +2 feet, 3 reps shoulder press 😅, failed butterfly swim (my head froze and I started drinking water and I couldn't stop it 🤦😅)

Lifting
T-bar rows 🐎💪🦵🔥

Music
shopify summit - Roots, Weezer, Girltalk.

Ice swimming
best pool ever 😅🥶🏊♂️

Lifting
Old-school barbell rows in the middle of a long back workout

Nature
🐧🐧🐧 fight Calgary zoo

Ice swimming
🧊🥶 the pool is getting longer, we extended it more today, now it is over 8 meters on the way to 20~25m 🙏

Lifting
leg day 🔥

Travel
Toronto sunset from CN Tower

Ice swimming
Oh no, the perfect ice block broke 😭

Lifting
Leg and chest day in Brazil

Food
Feijoada 😋

Ice swimming
Butterfly in the ice pool

Lifting
slow and steady wins the race 🔥💪🦵

Nature
So cute 🥹

Ice swimming
No swimming today

Lifting
happy new year! last leg day of the year, trying out pistol squats on the Smith machine, they are so hard 🤯🦵💪

Food
first bbq of the snow season 🥶🔥🥩❄️

Ice swimming
What a beautiful and warm (-1c) day to go to the frozen beach! 🏖️ 🥶❤️🏊♂️

Lifting
new squats record 🤯🔥😁🦵

Nature
Seahorse among coral

Ice swimming
Getting into the frozen lake

Lifting
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 😭😅🙏🦵

Food
sushi & bacon is this a crime?

Ice swimming
Walking out onto lake ice

Lifting

Nature
Sea anemones in aquarium

Ice swimming
Wading into icy lake

Food
Ketchup, mustard and relish on Costco’s pepperoni pizza

Lifting
The best way I found out to workout traps without pain in the neck

Nature
Sand tiger shark gliding

Ice swimming
so windy today 🌬️🥶❄️

Food
Slicing grilled steak

Lifting
Deep barbell squats

Nature
Kelp forest aquarium tank

Ice swimming
-8°, feels like -15°, wind 29 km/h, water moving fast... hardest cold plung of this season 🥶🏊♂️🧊

Food
Firing up the grill in snow

Lifting
Heavy dumbbell rows

Nature
Tropical fish over coral reef

Ice swimming
Deadlifting ice blocks for a swim 🧊💪

Lifting
Some new weights unlocked today 🔥

Nature
Jellyfish under blue light

Ice swimming
3 more ice blocks out today, the pool is now over 10 meters 🧊❤️💪🏊♂️🩲

Lifting
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 😅

Nature
Stingrays gliding in aquarium

Ice swimming
4h to reopen 70% of the ice pool at -20ish°c 🥶🧊🏊♂️🌤️

Lifting
last week I failed but today 1.5 reps, on the way to 10 reps 2025 🙏🦵🔥

Nature
Shark swimming overhead

Ice swimming
Swimming between ice floes

Lifting
first time 5 plates, but I'm not ready yet 😅 maybe next time 🙏

Nature
Drifting jellyfish

Life
bowling 🎳

Lifting
One-arm dumbbell row

Snow days
First sleeding of the season 😍🥶

Travel
Riding my Moto in brazil after 2 years, I didn't forget how to do it :D

Lifting
Leg extensions at the gym

Food
#ribs #airfryer

Nature
🐒🐒🐒 calgary zoo

Lifting
bridge the hardest of all. Help! I can't get up after this 😅⚰️

Nature
Fish in aquarium tank
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














It already knows what’s next.
Suggests your next workout, fills in weights and reps, and logs whole sets from one sentence.




Log a set from your wrist.
Rest timer, heart rate and PRs, without reaching for your phone between sets.

The big picture.
History, body measurements and records, laid out on iPad.

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.
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
jump over jump
Ⅱ Pause demoTwo sides, one race: first to bring all eight across wins.
Make your
next leap.Play it →
jump over jump
Make your next leap.
Two sides, one race: first to bring all eight across wins.
Play it →
- BeginnerA gentle start
- 2014My first hand-coded bot
- ClassicPreserved from an early version
- ExpertPlans several moves ahead
- MasterDeeper thinking, up to 3 seconds
- 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.
jump over jump
Make your next leap.
Two sides, one race: first to bring all eight across wins.
Play it →
✓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.
EveryonePlayersAIs
- 1Your name here🏆
- 2NeuralAI
- 3MasterAI
- 4ExpertAI
Win 3 · Draw 1
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/JumpOverJump2014
C# + Phaser
The first version, hand-coded to learn a game engine.

2016
C# + AngularJS
The version that lived on jumpoverjump.com for years.

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.

2026
Rebuilt with AI
A neural opponent, online rooms for friends, and the 2014 bot still there to beat.
Career · today, then back to the start
Where I’ve built things.
7 companies since 2008. Scroll sideways for each one.
2021NowToday
Shopify
Staff software engineer · Ottawa, Canada
What I built
On every team I joined I was the team lead: I championed the projects, designed their architecture and brought together the people they needed, across Shopify teams and partner companies like Amazon, to ship them for millions of merchants.
- Rollouts ↗Launch theme, checkout and account changes on a schedule, roll them out gradually, or run them as A/B experiments against the live store.
- SimGym ↗AI shoppers that visit a store before real buyers do. They browse, add to cart and say what confused them, so merchants can compare a new theme with the live one before shipping it.
- Delivery promise ↗Delivery dates buyers can trust, on product pages and in checkout, worked out from where the stock is, where the buyer is and real transit times.
- Buy with Prime ↗The Amazon integration that brings Prime delivery options to Prime members in Shopify checkout, paying with their Amazon or Shop Pay wallet.
- Shopify Fulfillment NetworkOrders, then Growth and Activation: getting merchants’ orders into Shopify’s warehouses, and helping new merchants get set up to ship with the network.
- Ruby
- TypeScript
- Rust
- GraphQL
- React
- Remix
- MySQL
- BigQuery
Shopify · Highlights
01 Rollouts ↗
Launch theme, checkout and account changes on a schedule, roll them out gradually, or run them as A/B experiments against the live store.
02 SimGym ↗
AI shoppers that visit a store before real buyers do. They browse, add to cart and say what confused them, so merchants can compare a new theme with the live one before shipping it.
03 Delivery promise ↗
Delivery dates buyers can trust, on product pages and in checkout, worked out from where the stock is, where the buyer is and real transit times.
Shopify · Highlights
04 Buy with Prime ↗
The Amazon integration that brings Prime delivery options to Prime members in Shopify checkout, paying with their Amazon or Shop Pay wallet.
05 Shopify Fulfillment Network
Orders, then Growth and Activation: getting merchants’ orders into Shopify’s warehouses, and helping new merchants get set up to ship with the network.
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.
- Our own state libraryInspired by Redux, Reselect and Recoil, built for the size and speed the app needed.
- Reviews and mentoringMore than 100 pull requests reviewed a month, and always around to help the team.
- 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
01 Our own state library
Inspired by Redux, Reselect and Recoil, built for the size and speed the app needed.
02 Reviews and mentoring
More than 100 pull requests reviewed a month, and always around to help the team.
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
Posts
Notes I wrote along the way.
Kept as they were first published, from C# video tutorials in 2015 to React in 2020. New ones are coming: how track2.fit and Jump Over Jump were built.
2020
Mar 29, 20203 min read
Why useMemo instead of useState + useEffect?
I frequently see useState and useEffect being used together where only useMemo would be enough to handle the same task, and as a bonus it is even faster! Checkout this…
- React
2018
Aug 24, 20183 min read
Making async reasonable with redux saga
<img style="max width: 100%; display: block; margin: 3rem auto;" alt="Redux Saga Logo" src="https://angeloocana.com/imgs/Redux Saga Logo Landscape.png" title="Redux saga…
- JavaScript
- ES6
2017
Oct 16, 20171 min read
Learn English links
Tests, correct pronunciation, tips and more. Learn and contribute to this collection of free content to learn English. (New links weekly!) Links Level Test & answers…
- Language
- English
2017
Sep 21, 20171 min read
10 tips to Start using Github and Command line
Do NOT lose your files anymore! Keep track of the history change, save to the cloud and be safe. Here you are going to learn simple tips to become a NINJA using Github…
- Git
- version control
2017
Sep 3, 20171 min read
Fix ENOSPC error
This error happens when your are watching to many files on linux. You can get an error message like this: error UNHANDLED EXCEPTION Error: watch…
- Linux
- Arch
2017
Aug 30, 20171 min read
How to setup ssl https:// for your site
How to setup https / ssl for surge.sh and ssl.com, It was hard to grab all the pieces, So I hope I can help who is in trouble. You can follow the oficial tutorial at…
- Gatsby
- surge.sh
- ssl.com
2017
Aug 30, 20171 min read
How to use Word and Excel on Linux or maybe not...
Do you need Word and Excel on linux? Follow my steps to install LibreOffice an open source option for linux distros. Install LibreOffice Official guide:…
- Linux
- Arch
- Word
2017
Aug 28, 20171 min read
Access and Backup Android Files and Photos
Is your Android mobile FULL? Backup your data to your Arch Linux. It is easy following my steps (I hope hahaha). I had some trouble with other programs (android file…
- Linux
- Arch
- Android
2017
Aug 26, 20171 min read
How to install Yaourt on Arch linux
Yaourt is the community packager manager for Arch Linux. When you are using pacman (official packager manager), you do need to use sudo , when you are using yaourt , you…
- Linux
- Arch
2017
Aug 12, 20171 min read
Install Arch linux + wifi and xfce4
If you want to learn Linux for real, Arch is my favorite distribution, be prepared for lots of commands and research, but keep calm, you are goin to learn! Boot Arch…
- Linux
- Arch
2017
Aug 8, 20171 min read
French Movies
I love French Movies. They are so close to real life, real people. They talk about sex, drugs and other taboos openly. Jeune & jolie en: Young & Beautiful pt: Jovem e…
- Language
- French
2017
Aug 8, 20172 min read
Vim Help Commands
Vim is a old school text editor, It runs in the console, It is the faster of all. It's the best option for accessing servers through line command. Basic commands Y Copy…
- Text Editor
2017
Aug 3, 20171 min read
Learn French links
If you want to learn this amazing language, here you can find my link collection of free content. Links Learn French with Vincent
- Language
- French
2017
Jul 31, 20171 min read
Extract Files in Arch linux
Extract .rar Extract .zip Install unzip Extract file
- Linux
- Arch
- Extract files
2017
Jul 31, 20171 min read
Install fonts in Arch linux
Move your font files to /usr/share/fonts/
- Linux
- Arch
2017
Jul 30, 20171 min read
Setup dev env Arch linux
Install git Install Nodejs Install NPM Fix global permissions error https://docs.npmjs.com/getting started/fixing npm permissions Make a directory for global…
- Linux
- Arch
- NodeJs
2017
Jun 23, 20171 min read
Advanced Git commands
Enable Auto Complete, Commit with title and description, create alias, navigate history, update fork and more! Enable Auto Complete while typing git commands on terminal…
- Git
- version control
2017
Jun 23, 20171 min read
Functional Programming Examples
- Functional Programming
2017
Jun 23, 20171 min read
Install ZSH and oh-my-zsh
Install ZSH https://github.com/robbyrussell/oh my zsh/wiki/Installing ZSH Install oh my zsh Download Install Make it your default shell: (You must logout to see the…
- Terminal
- ZSH
- Command line
2017
Jun 23, 20171 min read
JS Spred Operator Examples
- JavaScript
- ES6
- ES2015
2015
Aug 15, 2015VideoIn Portuguese
Parte 6 App do Projeto Completo C# MVC Migrations StructureMap DDD TDD
Parte 6 'App' do do curso de criação passo a passo de um projeto completo com CleanCode, C , MVC, SQL Server, EntityFramework, Migrations, UnitTest, DDD, TDD, Moq, IOC,…
- C#
- .net
2015
May 7, 2015VideoIn Portuguese
Parte 5 Repositories do Projeto Completo C# MVC Migrations StructureMap DDD TDD
Parte 5 'Repositories' do do curso de criação passo a passo de um projeto completo com CleanCode, C , MVC, SQL Server, EntityFramework, Migrations, UnitTest, DDD, TDD,…
- C#
- .net
2015
Apr 29, 2015VideoIn Portuguese
Parte 4 EnityFramework e Migrations do Projeto Completo C# MVC Migrations StructureMap DDD TDD
Parte 4 'Entity Framework e Migrations' do do curso de criação passo a passo de um projeto completo com CleanCode, C , MVC, SQL Server, EntityFramework, Migrations,…
- C#
- .net
2015
Apr 17, 2015VideoIn Portuguese
DicaRapida 2 Por um código MELHOR!
Dicas para cria um excelente código, que vai aumentar sua produtividade, evitar muitas dores de cabeça, e colaborar para um mundo melhor!
- C#
- .net
2015
Apr 14, 2015VideoIn Portuguese
Parte 3 Entities do Projeto Completo C# MVC Migrations StructureMap DDD TDD
Parte 3 'TDD e Entities' do do curso de criação passo a passo de um projeto completo com CleanCode, C , MVC, SQL Server, EntityFramework, Migrations, UnitTest, DDD, TDD,…
- C#
- .net
2015
Apr 10, 2015VideoIn Portuguese
DicaRapida 1 Melhorar Performance MVC
A dica rápida de hoje é de como melhorar a performance do seu projeto MVC com uma alteração simples!
- C#
- .net
2015
Apr 7, 2015VideoIn Portuguese
Parte 2 ValueObjects do Projeto Completo C# MVC Migrations StructureMap DDD TDD
Parte 2 'TDD e Value Objects' do do curso de criação passo a passo de um projeto completo com CleanCode, C , MVC, SQL Server, EntityFramework, Migrations, UnitTest, DDD,…
- C#
- .net
2015
Mar 27, 2015VideoIn Portuguese
Parte 1 Base Projeto do Projeto Completo C# MVC Migrations StructureMap DDD TDD
Parte 1 do curso de criação passo a passo de um projeto completo com CleanCode, C , MVC, SQL Server, EntityFramework, Migrations, UnitTest, DDD, TDD, Moq, IOC,…
- C#
- .net