Sitemap
Rick Perez

Rick Perez

Android developer and computer scientist who studies art and creates games. While the world dies with Coronervirus recover safely!

I Made a Tiny Compose App. Then I Asked Better Questions.

3 min readSep 7, 2026

--

I had a simple Android idea: tap, drag, and leave shapes that fly across the screen.

https://www.youtube.com/watch?v=1dp4sCYTYIQ

The first version was already Compose. Squares, a vsync loop, a date in the corner. It worked. It just wasn’t fun to look at, and I had no idea when the phone was struggling. Cursor IDE has helped.

This is how that demo turned into TouchMoveCompose — teal cubes, a live FPS HUD, and a version that’s actually useful for learning Android.

Press enter or click to view image in full size
Press enter or click to view image in full size
Press enter or click to view image in full size

What I started with

  • One screen, Jetpack Compose, no game engine
  • Drag to spawn squares
  • Squares only moved after you lifted your finger
  • A small HUD: date, counts
  • The important bit I already had: a loop that ticks every frame (withFrameNanos)

That’s enough. You don’t need Unity to learn drawing, touch, and performance.

https://youtu.be/7PH5siWsLJM

What we changed

I used Cursor as a pair programmer. I didn’t ask it to “make a 3D game.” I asked for the next small step.

Cubes, still 2D. Real 3D would mean OpenGL or Filament. We stayed on Compose Canvas and drew isometric cubes instead. Same loop, better look.

A HUD that tells the truth. FPS, frame time, CPU, memory. That’s when I learned two things:

  • “CPU 200%” can just mean two cores, not a dying phone
  • FPS drops when the UI thread misses vsync, not when the whole chip is busy

Why it died at ~400 cubes. Each cube was many little draw calls. Engines stay fast because they batch. We packed every cube into two draws per frame. Then we added a simple rule: if FPS falls under about 55, stop spawning for a bit.

Get Rick Perez’s stories in your inbox

Join Medium for free to get updates from this writer.

Move as soon as it exists. We already had a frame loop. Cubes didn’t need to wait for finger-up.

One theme. Teal cubes, dark/mint background, pink text. The colors you set in the theme are the colors you see on screen.

Press enter or click to view image in full size
Press enter or click to view image in full size

How to ask for this (the useful part)

Don’t ask: “Make it 3D” or “Make it production-ready.”

Ask:

  1. Keep my vsync loop. Make the squares look like cubes without a new engine.
  2. Show FPS and UI CPU on screen.
  3. Why is FPS falling? Change that, not everything.
  4. Don’t stay below ~55 FPS. Slow down spawning if you have to.
  5. Use my theme: primary = shapes, secondary = background, accent = text.

One change at a time. If you can’t see it on the HUD, you didn’t learn it.

https://www.youtube.com/watch?v=1dp4sCYTYIQ

Why it’s a good learning project

In one small app you touch:

  • Compose UI and gestures
  • A game loop without SurfaceView
  • Custom drawing
  • Why phones differ (60 Hz vs 120 Hz)
  • Measuring before “optimizing”

Creativity here isn’t more effects. It’s watching the HUD and thinking: what is this phone actually doing?

Tap, drag, read the numbers, then ask the next small question.

TouchMoveCompose is on GitHub. The short README is the landing page; docs/OVERVIEW.md is the full map if you want to dig.

--

--

Rick Perez
Rick Perez

Android developer and computer scientist who studies art and creates games. While the world dies with Coronervirus recover safely!