Blog
Notes from behind the scenes: how our puzzle games are built, where classic puzzles come from and what we learn while making them.
- Why My App Store Link Returned 404 and the Page Showed 2018 ScreenshotsDev notes on two surprises with an old iPhone app that got a new version: a generic App Store link that returned "not found" outside one country, and a store page that kept showing screenshots from 2018.
- App Store Review Guideline 2.1 "Information Needed": What I SentDev notes: three of my nine recent iPhone submissions came back as Rejected with Guideline 2.1 Information Needed. It was a request for information, not a bug report. Here is what Apple asked for in my case and what I sent.
- App Store Screenshots Without a Phone: Robolectric, a Fake Image Loader and a Headless BrowserDev notes: how I make 1206x2622 App Store screenshots for my iPhone apps on a Windows laptop, with no device and no cloud build minutes, by rendering the shared Compose UI inside Robolectric unit tests.
- One QR Code for Two App Stores: A Tiny Redirect PageDev notes: how my website went from one Google Play QR code to a single universal QR that sends an Android phone to Google Play and an iPhone to the App Store, with a short redirect page, the traps I hit and the downsides.
- Rewriting for Kotlin Multiplatform Without Changing Behavior: Old Code as a Test OracleDev notes: how I replaced XmlPullParser, HtmlCompat, SimpleDateFormat and java.util.Random with pure common Kotlin for iOS, keeping the old code in the tests to prove the output stayed identical, and what that proof does not cover.
- A Serverless Remote List for "More Games": One JSON File on GitHub PagesDev notes: how a cross-promotion list for a dozen Android games moved from the app code to one JSON file on GitHub Pages, with a cache, an offline fallback and strict checks, so a new game needs no updates to the others.
- Debugging an iPhone From Windows Over USB: Screenshots and Logs With PythonDev notes: how I take screenshots, launch an app and read its log on an iPhone 7 from a Windows laptop with the Apple Devices app and the pymobiledevice3 Python tool, plus a real example of finding out why an ad banner was empty.
- Moving an Android App to Kotlin Multiplatform With AGP 9: Seven TrapsDev notes: seven things that broke or went quiet when I moved a Compose Android game to a shared Kotlin Multiplatform module with Android Gradle Plugin 9, and how a screenshot comparison caught one of them.
- Shipping an iPhone App Without a Mac: Kotlin Multiplatform, a Cloud Mac and TestFlightDev notes: how I took a Kotlin and Compose Android game to TestFlight and App Store review from a Windows laptop, using Kotlin Multiplatform, a macOS runner on GitHub Actions and an App Store Connect API key.
- Game Feel in Jetpack Compose Without a Game EngineSquash, stretch, particles, synthesized sound and haptics in Jetpack Compose: how a block puzzle gets its game feel with one Canvas and one frame loop.
- Catching a Stuck Interstitial Ad on Android With Event LogsA player says the screen froze after an ad, yet no crash is logged. How logging the AdMob ad lifecycle to Firebase Analytics exposed a stuck interstitial.
- Keeping Two Dozen Android Apps Maintainable as a Solo DevHow one developer shares update prompts, cloud saves, a remote cross-promo list and a generated website across roughly two dozen Android apps.
How a Tombala Card Is Generated: Six Cards, Ninety NumbersDev notes: how Tombalings builds a Tombala card set where six cards cover 1 to 90 exactly once, and how the rivals are timed to feel human.
How We Build Pentomino Levels with Dancing LinksA developer story: how exact cover and Knuth's Dancing Links solve and generate Pentolings levels, from 63 piece positions to unique puzzles and hints.
Pentominoes: The Story of the 12 Pieces and GolombWhat a pentomino is, how Solomon Golomb named and studied them in the 1950s, how Martin Gardner made them famous and why a 6x10 board has 2339 solutions.- Leap Day Birthdays: How Do You Count Age on 29 February?How people born on 29 February count age and celebrate: the leap year rule (4, 100, 400), leaplings, 28 February or 1 March, and how age apps treat it.
- How to Calculate Exact Age in Years, Months and DaysHow to work out exact age in years, months and days by hand, with borrowing examples, days until your next birthday and how month lengths cause confusion.
- BMI Mistakes and Limits: Athletes, Age, Pregnancy, UnitsCommon BMI mistakes and limits: why athletes, older adults, pregnancy and children need care, and how cm/kg and ft/lb mix-ups ruin a result.
- What Is BMI? How to Calculate It and Read the ResultWhat body mass index (BMI) is, the kg/m2 formula, the WHO adult categories, worked examples and how a healthy weight range for your height is found.
- Where Does Earthquake Data Come From? AFAD, Kandilli, USGSWhy do two agencies report different magnitudes for the same earthquake? How AFAD, Kandilli and others publish, revise and update recent earthquake lists.
- Earthquake Preparedness: Before, During and After (AFAD)A calm checklist based on AFAD guidance: prepare a disaster bag, Drop-Cover-Hold On during shaking, and what to do after an earthquake in Turkey.
- Earthquake Magnitude vs Intensity: What Is the Difference?Magnitude measures the energy released by an earthquake, intensity measures the shaking at a place. Learn how Richter, Mw and Mercalli scales differ.
- Tic-Tac-Toe: A Solved Game, an Early Computer and Its VariantsFrom OXO on EDSAC in 1952 to Ultimate Tic-Tac-Toe: why it is a solved game, how small its game tree is and which bigger variants keep it interesting.
- How Hundreds of Puzzle Levels Are Generated and CheckedHow puzzle games create hundreds of levels without drawing each by hand: generators, solvers, measuring difficulty, working backwards and hill climbing.
- How a Daily Puzzle Can Be the Same for Everyone, No ServerHow a game can give every player the same daily puzzle without a server: date seeds, deterministic randomness, time zones and what cheating looks like.
Mahjong Solitaire History and How It Differs From MahjongA short history of Mahjong Solitaire, from a 1981 computer game to today's phones, and how this one-player tile puzzle differs from classic Mahjong.
How We Guarantee a Mahjong Solitaire Board Is SolvableA developer's look at how Tilelings builds every Mahjong Solitaire deal backward from an empty board, so that a solution always exists.