Skip to content
md ~/projects/odd-lives
Remembering Atatürk with Respect and Longing

November 10 · 88th anniversary

Remembering Atatürk with Respect and Longing

Mustafa Kemal Atatürk, founder of the Republic of Turkey, passed away at 09:05 on 10 November 1938 at Dolmabahçe Palace in Istanbul. Every year at this time the whole country stands in silence.

Keeping alive the Republic he entrusted to us is a duty we all share.

My humble body will one day turn to dust, but the Republic of Turkey will stand forever.Mustafa Kemal Atatürk
Project archive

2026In progress

Odd Lives: Walking Game

  • React Native
  • Expo
  • TypeScript
  • React Native Skia
  • HealthKit
  • App Attest
  • Fastify
  • PostgreSQL
  • Drizzle ORM
  • Docker Compose
  • Caddy
  • Oracle Cloud
  • GitHub Actions
  • EAS Build

Overview

An iPhone game about a pixel character that grows with your real-life steps. As you walk, the character earns XP, levels up and improves its attributes, then races players of a similar level and friends in a night stadium, from 60 metres to the marathon. Every season the character moves on to a different life, starting with running. Steps are the only fuel: there is no energy system and no power for sale.

01 · Problem

Step counters show the day's number but give no reason to walk again tomorrow. And when a game that turns steps into play adds an energy cap or power bought with money, progress depends on waiting and paying rather than walking.

02 · Solution

I read steps from HealthKit; XP, levels and attributes come from steps alone. Race times come from a real physiology model: the Furusawa model for 60 and 100 metres, critical speed from 800 metres to 5 kilometres and Riegel's formula from 10 kilometres up, so a world record cannot be broken even with the best reaction. I wrote these formulas in a single TypeScript package shared by the app and the server, so the prediction on the phone never drifts from the server's result. All pixel art is drawn in code: the same drawing works for every one of the 2,419,200 appearance combinations and renders to React Native Skia on the phone and to PNG on the computer. I synthesized the sounds from square waves, triangle waves and noise, like old console chips. The server runs Fastify, PostgreSQL and Drizzle on Docker Compose in Oracle Cloud, and Sign in with Apple and App Attest are verified on the server.

03 · Outcome

Development is ongoing. Character creation, the step track and friendly races already work on the phone: a race starts with a starting pistol, a flash and a vibration, is run over 8 lanes in a night stadium and ends with a photo finish and commentary. The server is live; every change to the server code is deployed automatically with GitHub Actions, and the database is backed up every night. The game is for iPhone only and will be released on the App Store in Türkiye.