Potato Pounder
ArchivedSeptember 1, 2024
A Flutter animation app where a potato punches a punching bag potato — built to animate some drawings I did. At one point, it was tied to a gamification system: punch the potato the exact right number of times (a random number between 0 and the day's active user count on hotpotatogames.com) and win an HPG award. Silly, fun, and peak Potatuhs.
Purpose
Drew some potato characters — one potato boxing a punching bag potato — and wanted to see them animated. Built the animation in Flutter, then experimented with a gamification layer: connected to hotpotatogames.com accounts, and if you punched the potato the exact number of times matching a hidden daily target (random between 0 and the number of people online that day), you received an HPG award.
Stack
What I Learned
- Flutter's animation system (AnimationController, Tween, CurvedAnimation) is powerful enough for character animation when combined with frame-by-frame sprite rendering. Each drawing of the potato in a different punch position becomes a frame. The AnimationController drives the frame index. The result: a hand-drawn potato throwing punches in a mobile app. The pipeline from sketchbook to animated app is shorter than most people realize.
- The gamification mechanic — punch the potato the exact hidden number of times — is a distilled example of the variable reward system discussed in the NumberPicker and carousel entries. The player does not know the target number. They punch and hope. The uncertainty creates engagement. Finding the exact number creates a dopamine spike disproportionate to the actual reward. It is a slot machine wearing a potato costume.
- Tying the hidden target to the number of active users that day was a clever design: the target changes daily, it is unknowable without inside information, and it scales with community activity. More users online = higher possible target = harder to guess = more punches = more engagement. The game mechanic and the community metric feed each other.
- Silly projects are not throwaway projects. Potato Pounder taught Flutter animation, gamification mechanics, API integration with the HPG platform, and real-time user counting. The skills transferred. The potato boxing animation became part of the Potatuhs visual library. The gamification pattern informed future reward systems. Fun is a valid engineering objective.
Key Insights
- The Potatuhs brand gives permission to build things that are purely fun. Potato Pounder has no business case, no revenue model, no target market. It is a potato punching another potato. But within the Potatuhs ecosystem, it serves a real purpose: it adds texture to the brand, gives the community something to play with, and demonstrates that the company does not take itself too seriously while taking its craft very seriously. Absurd premise, earnest execution.
- Gamification works best when the reward is social rather than monetary. An HPG award — visible on your hotpotatogames.com profile — is worth zero dollars but creates real motivation because it is scarce (random target), public (visible to other users), and earned (you put in the punches). The most engaging games reward status, not money. Money is fungible. Status is personal.
- Animating your own drawings in code is one of the most satisfying creative loops available to a developer-artist. You draw the character. You scan or photograph it. You import the frames. You write the animation code. You see your creation move. There is no committee, no approval process, no Jira ticket. Just: draw, code, animate, smile. More developers should try it.
This post was composed through a conversation between Brett Owers and Claude Code (Anthropic). The content reflects Brett's recollection of each project and the lessons drawn from it. Some details may be approximate or omitted — the purpose is to paint an honest picture of a software engineer's development over time, not to serve as a precise historical record.