LexonTech

Tech, mostly Apple, from Lex Friedman.

MembershipBecome a Lex on Tech member for bonus perks and to support the site.See the perks
•Apple •Indie Developer Spotlight

Indie developer spotlight: AltStore’s Riley Testut can feel Cupertino thawing

The AltStore and Delta developer knows Apple hasn’t always been his biggest fan. But Apple is increasingly acting like a partner.

Riley Testut built his own app store because Apple wouldn’t let him play Pokémon on his iPhone.

AltStore
AltStore

That’s an oversimplification, but barely. But the early App Store rejection Riley dealt with became his origin story, and it doesn’t get more indie than this: A man wants one app to exist, a gatekeeper says no, and the guy decides he’ll skip the gate entirely.

You probably know Riley’s work. He makes Delta, the gorgeous Nintendo emulator that finally landed in the App Store in April 2024, after more than a decade of Apple blanket rejecting emulators.

Riley is also the force behind AltStore, the alternative app marketplace that launched in the European Union that same month, the moment the EU’s Digital Markets Act forced Apple to allow such stores. If you want the whole saga, Riley told it at Deep Dish Swift, and his talk is worth watching in its entirety. Riley goes deep on his early back-and-forths with Apple, his pain in launching AltStore, and the chapter where he unexpectedly spent an extra month living in Europe to get AltStore launched, which struck me as living large. Riley assured me it was, in fact, mostly stressful.

Riley reached out to me, and we talked. He wanted to share some perspectives on distributing apps outside the App Store. He did not need much prompting.

From a third bedroom to Union Square

AltStore was, for years, Riley and his co-founder Shane Gill, working out of the spare bedroom of Riley’s home in Texas. It’s now a real company: eight people, most of them in New York, in an actual office near Union Square. A year ago, the company took outside funding for the first time, with a goal that Riley states plainly: They want to be a real app store, in every country, not just in the EU, and they want developers to feel confident that AltStore will stick around.

But the business is still, at its core, a Patreon. Riley and Shane’s Patreon has been the entire income source since the beginning, and he really seems to appreciate that. (Patreon supporters are kicking in $20k+ per month. I understand Riley’s appreciation.) Users love the Patreon, he told me, because they’re supporting developers, not just buying a software product. And he can issue refunds himself, which is a thing Apple has never let a developer do.

“I just wanted to play Pokémon on my phone”

I asked Riley why — as an American who can’t even access international third-party app stores — he was the guy to build AltStore. Why did building an alternative to the App Store become one of his projects?

“I literally feel like I didn’t choose it,” he told me. “I just wanted to play Pokémon on my phone.” Pokémon Emerald, specifically. It’s perfect for a phone. The controls aren’t hard. So he built an emulator, first as an open-source project he released in high school for people to compile themselves. Then he attempted to release it as Delta, which he submitted to the App Store, and which Apple in turn rejected, as Apple did with all emulators at the time.

Riley told me that while dealing with that App Store rejection, he concluded that if he felt this strongly about this one app of his own, other developers surely felt the same way about theirs. And they couldn’t ship some of them, either. “That was the eye-opening moment for me,” he said. “I should build something not just for me, but for others.” When the EU passed the DMA, he said, “it was like, we have to do it. This is the moment.”

The antagonism years

Delta
Delta

When AltStore launched in Europe, Riley says Apple was openly hostile. Apple was rejecting apps from his store. Reviews took forever. Apple repeatedly kicked up roadblocks, creating friction that didn’t need to exist. “We could just sense from the outside: Apple does not like us,” he said. “We get no special treatment. We are only here because we’re allowed to be.”

That stung, because Riley — who strikes me as a true optimist — hoped to be aligned with Apple. “We’re not trying to take apps from the App Store,” he said. “We’re trying to allow new apps. We think that’s good for everyone.” Apple wasn’t interested in working with him on those terms, so AltStore got more aggressively defensive for a while. (Watch that video I mentioned before, and learn about Riley’s “Notarization Sucks” app. It’s great.)

Riley even has a theory about why Apple suddenly decided to allow emulators in 2024: Apple figured Delta was the whole point of AltStore, and if Delta could be in the App Store, the AltStore project would wither. “I actually think it was a very strong strategic move by Apple,” he said. “Good for them.” It just didn’t work, because by then AltStore was never only about Delta. His thought at the time, when he got the surprising Delta approval: “I don’t want to stop now because my problems are solved.”

The thaw

Earlier this year, something changed in the dynamic between Apple and AltStore.

Within the span of a single week, Riley told me, Apple did several nice things for him: They invited him to WWDC. He’d applied every year for more than a decade and never gotten in. They waived the letter of credit AltStore had been required to maintain to operate as a marketplace. And they quietly fixed a backend problem for Delta that had been nagging him.

“This is interesting. This is new,” he remembers thinking. “They’re actually treating us like partners.”

A couple of weeks later, Apple announced that Tim Cook was stepping aside and John Ternus would become CEO.

Riley is careful here. Nobody at Apple told him, “New boss, new Apple mindset.” He just noticed a tangible shift in Apple’s approach before the company made the big Cook/Ternus announcement, and the timing was, in his words, suspicious.

Riley also believes Tim Cook genuinely thought Apple had to be a hard-ass about all… this. Nobody outside Cupertino can say for sure. Apple also came to terms with the European Commission around the same time, and Riley believes that Apple no longer wants to draw the Commission’s ire by flagrantly hampering the marketplaces the law requires.

Whatever the cause, the effect is real. At WWDC this year, Delta’s icon was up on the wall alongside other app icons, which is a significant milestone for any indie developer — particularly one that Apple spent years rejecting. Riley says that he now finally feels like he can reach out to Apple and ask for help. He’s no longer afraid that any given Delta update will be rejected. “They are acting more like actual business partners.”

He also thinks the arguments have shifted. Apple used to say alternative marketplaces were dangerous: security, stability, battery life, the works. AltStore now has millions of users, and Riley says there hasn’t been a single incident. “Apple has changed their arguments from ‘they’re big and dangerous’ to ‘nobody uses them,’” he said. “Because their security argument was just completely unfounded.” But Riley’s “millions of users” are a pretty solid counter to Apple’s latest claim.

What’s actually in AltStore

I’m in New Jersey. I can’t use AltStore. So I asked Riley what Europeans are actually installing.

Delta, for one. Then the old, pre-DMA version of AltStore, which can install apps that haven’t gone through Apple’s notarization. And then the list gets even more fun.

One of the most popular apps in AltStore right now is a utility for jailbreaking your e-scooter. Riley never would have guessed it, but there are enthusiasts who love it. There’s a Japanese developer whose app lets you remap the Side button so it launches an assistant other than Siri, which Apple allows only in Japan and would prefer nobody talk about. The app is literally available in Apple’s App Store too, but Apple won’t promote it. You know who will? AltStore did, and it took off.

There’s Clip, Riley’s own clipboard manager, which has had to rely on a workaround to capture your clipboard, and which, he told me, iOS 27 finally lets work fully automatically, the way a clipboard manager should. He’s stoked. He uses it all the time. I’m legitimately jealous.

And there’s UTM, a virtual machine app that runs Windows on your iPad, which was on AltStore for years. When Riley tried to make it one of AltStore PAL’s first third-party apps, Apple rejected it. Then Apple called him with “great news”: UTM would be allowed not just in AltStore but in the App Store, too. So now the App Store supports virtual machines. You’re welcome, everyone.

In Europe, Delta itself is about to do something you can’t do in the App Store version: use the volume buttons as L and R shoulder buttons when you hold your phone sideways. App Store rules forbid using the volume buttons for anything but cameras (and, of course, volume). In AltStore, Riley’s philosophy is, “why not?”

Why a US developer should care

I’ll admit, I didn’t realize you could sell your apps in alternative app stores and the App Store. I thought Apple’s rule was you could only be in one or the other. I was wrong.

Riley’s pitch to developers whose apps are already in the App Store is simple. It’s the same binary. There’s an API to detect at runtime where the app was installed from, if you care. You submit through App Store Connect, tick an extra box, and one build gets approved for the App Store and for alternative marketplaces at the same time. (Yes, Apple does human review of AltStore apps. Screenshots, the whole thing. It is not the Mac’s automated notarization. I had no idea. I used profanity when Riley told me this was how it works.) If you’re already putting up with App Review, Riley’s point is that AltStore costs you essentially nothing extra.

What you get is a self-selected audience of enthusiasts who like trying new apps. “It’s much easier to make a name for yourself,” he said, than in an App Store where you’re one of a couple million apps. And, he added, it’s just more fun. Fewer roadblocks. Less stress. I’d add: More Riley.

The in-app purchase Apple is making him sell

Delta is about to ship a big update for the iPhone Duo, and that update will include in-app purchases worldwide, which Riley does not necessarily want, and which Apple is requiring. The story of how that happened is a good illustration of something I’ve complained about before: Apple’s rules are… a lot.

After the Epic ruling, Delta added a link to its Patreon in the US App Store version. Apple’s rules said that if you link out, you also have to offer in-app purchase, so Riley added US-only in-app purchases priced at triple the Patreon tier, essentially labeled please don’t buy this. He told Apple exactly what he was doing. Apple approved it. A year of updates went by.

Then one day Apple said: Wait, you only have in-app purchase in the US! If you want external purchases anywhere, you must offer in-app purchase everywhere! Riley doesn’t believe that rule had ever been stated before. It didn’t matter. No Delta updates until he complied.

So the Duo update will have IAP worldwide, at $5 to Patreon’s $3. “We’re just owning it,” he said. “We’ll only fight so hard.”

When I floated my theory that Apple is sometimes intentionally vague about what’s allowed, Riley mostly agreed. “It allows them leeway,” he said. If Apple doesn’t care, it doesn’t care. If one app gets very popular doing something Apple dislikes, there’s always a rule to point to. “I know they look at Delta very carefully” with every release he submits, Riley told me.

Will AltStore ever come to the US?

The big question I put to Riley was whether he thinks AltStore will ever launch in the US? “I do firmly believe it’ll happen,” Riley said. “It is just a question of time. And I don’t think Apple is going to do it voluntarily.”

His read: Something forces Apple’s corporate hand. The Department of Justice case, a settlement, another lawsuit, something else. Meanwhile, AltStore’s reach keeps growing: Australia opens up to alternative marketplaces later this year, Riley said. The UK is next year. At some point, in his view, keeping the world segmented stops making sense even to Apple. “They get pushed and pushed, they finally are forced to allow it in the US, and then it’s worldwide. That’s how I envision this happening.”

I hope he’s right. I want a clipboard manager on my phone. I don’t need to hack an e-scooter, but still.

The part I admire most

As you’ll see in that video I’m certain you’re heeding my advice to watch, while attempting to get a second app approved for AltStore pre-launch (after Delta), that clipboard manager kept getting rejected by Apple. So he made an app called Notarization Sucks, whose sole purpose was to share the story of how Apple kept rejecting Clip. And so Riley told Apple, essentially, approve Notarization Sucks or approve the other one. Notarization Sucks is very funny, and he is a person whose business Apple could materially hamper at any moment. He made it anyway. Riley isn’t afraid to call Apple out, in public, with his name attached. A lot of folks wouldn’t have the confidence to do that. I admire it.

It also helps that he’s been proven right, repeatedly. UTM got in. Emulators got in. Delta is on the wall at WWDC.

One last thing. Fifteen or so years ago, I had a humor book called The Snuggie Sutra. It was the Kama Sutra, but everyone was wearing Snuggies, so you couldn’t see anything. It did well. A friend and I made an app version, and Apple rejected it, and I appealed all the way up to Tim Cook, who forwarded it along to Phil Schiller, and the answer stayed no. I asked Riley whether that app would be welcome in AltStore. His exact words: “You should do it. We would promote it.”

I’m going to go see if the Xcode project still opens.

Check out Delta and AltStore, and if you’d like to support what Riley and Shane are building, their Patreon is where the money has always gone.

Link •Odds & Ends

Resurrecting iChat audio and video conferencing

Add this to your /etc/hosts file on your old Mac running Leopard or Show Leopard (has not been tested on Tiger or Panther), and iChat should be able to make audio and video calls again.

I mean, no one should do this. But I appreciate that they took the time to figure out that they could do this.

•Apple •iPhone •Opinion

Apple should consider a less tight-lipped approach on occasion

The iPhone 18 Pro Max AT&T issue a recent example

We know Apple likes to keep secrets. The company aims for big, splashy, exciting, and (perhaps most importantly) newsworthy reveals, and secrecy is a big piece of that. (That’s why I remain surprised that Apple’s never been able to plug the leaks that Mark Gurman at Bloomberg seems to get before many Apple announcements.)

A burgundy iPhone Pro with a three-lens camera bump, shown from the back and front side by side.

But sometimes Apple takes too long to say enough. This recent AT&T iPhone 18 Pro Max kerfuffle is a great example.

The short version of the story is: Some iPhone 18 Pro Maxes on AT&T in the US… don’t work. That is to say, they can’t connect to AT&T’s cellular network, and software updates won’t necessarily fix it, and Apple and AT&T are offering replacement phones to affected people.

Imagine being one of those affected people. You spend a boatload of money (or contractually obligate yourself to do so), and you quite likely wipe your old phone, or give/sell it to someone, or trade it in.

Then your shiny new expensive phone only works on Wi-Fi. It’s a big iPod touch.

That’s infuriating. Apple’s statements on this have been minimal — and even, by my read, confusing.

Tom’s Guide:

“We released iOS 27.0.1 earlier this week and strongly encourage all iPhone 18 Pro Max users to update now, and are also issuing a carrier settings update today,” an Apple spokesperson told Tom’s Guide. “These updates together are meant to help prevent this issue from occurring.”

However, if you already have an affected device without service, you can’t reactivate it via software. Apple confirmed that you will need to go to an Apple or AT&T store to get a hardware replacement.

I get that both those things can be true, but it’s confusing.

And here’s what Apple hasn’t said:

  • “We’re sorry.”
  • “Here’s what went wrong.”
  • Here is a single website or phone number where affected users can request overnight replacements.

When John Gruber recently pointed to that old Apple Antennagate conference, the question to which Steve Jobs and other Apple executives had the least satisfying answer was: Why did you take so long to say something? Steve talked about how they needed time to dive in and figure out what was going on, and actually, they did this pretty quickly, and people were working around the clock.

But the smarter move then (and now) would have been for Apple leadership to say loudly and publicly, We are aware of this issue, we are sorry for it, and we are investigating the cause. Here are clear, simple, straightforward instructions for affected users in the meantime.

I’ve heard from more than one AT&T customer affected with this issue who went to an AT&T Store in person, only to be told by staff there that they knew of no issue, and that the customers should talk to Apple if they were having problems with their phones.

That stink rubs off on Apple and the iPhone. It’s avoidable. Say something. Sooner.

•AI •Opinion

Claude writes code; I author the apps

Gotta say it’s a bit suspicious how quickly a one man team is “recreating” existing games, while being “a full time consultant”…

That’s from a post I received on Mastodon after launching The Universe, Controlled, my homage to the sorely-missed early iPhone game Flight Control. I pressed to better understand exactly what the poster was suspicious of. “I wonder how much your LLM is copying the existing game,” the user wrote.

Fair enough.

As I wrote recently, not everyone’s a fan of vibe-coded apps. “Vibe-coded,” in fact, is used as an insult, the coding equivalent of “slop.” I think the term is problematic, but I understand some of the concern: Just as people are using AI tools to write crappy articles, generate crappy posters, and make crappy fake photos, there are folks using LLMs to create crappy websites, apps, and other software.

But there are good apps out there that are made at least in part with help from LLMs. In fact, I think it’s a safe bet that the vast majority of regularly-updated software you use today is made by developers leveraging AI tools in at least some ways.

That’s a hunch. Let me talk in real terms, using me and my actual apps. But let’s take a step back first.

My coding beginnings

Commodore 64 startup screen
Commodore 64 startup screen

I was fortunate growing up: My house had computers. I learned to code initially on a Commodore 64 and then a TRS-80. My parents hired a programming tutor for me from a local Radio Shack when they saw how much I was enjoying coding. I devoured programming books, copied code from magazines, and eventually went to a summer camp where I could study programming, too. (The camp also let me pursue my other two passions: close-up magic and movie making. I was a very cool kid.)

Like many, I started with BASIC and various permutations thereof, then studied Pascal, C, and C++. I released mediocre shareware Mac apps that were not good. I built websites that were fine.

I went to college and majored in Linguistics and Cognitive Science. I decided I didn’t want to major in computer science because I didn’t want to wrestle with computers for the rest of my life. (Hahahaha.)

After college, I moved to LA with my then-fiancée (now wife), got a job at a web-hosting company, and started teaching myself web development when I was finished with my customer support queue each day — first Perl, later PHP.

I got really, really good at web development. I was hired as the first full-time PHP developer at the parent company of MySpace. (I had a cubicle next to MySpace’s Tom for a little while.)

I co-founded a diet-tracking startup in the pre-smartphone era. I was the developer, product guy, and customer service guy in one. My other two cofounders held down other full-time jobs so that they could pay me. This was in the era where you still had to roll your own servers, pre Amazon Web Services. Our stack at a server farm in Seattle would crash at lunchtime when too many people logged meals at the same time. It was a nightmare.

We got acquired by a big Internet company, and I eventually left and went to work at Macworld, and in addition to writing articles, I’d occasionally write tools for the staff there to use for article assignments. At the time, Macworld was using bug-tracking software for article assignments, and I absolutely hated that, so I built a system for us to use instead.

A lot of my software development is inspired by hating existing apps and thus making something that helps others, but also selfishly benefits me.

I share all this to say, I have a healthy coding background.

Apps and downs

I was a web app guy for years. Even when I started my career on the business side of podcasting, when I saw needs for tools, I developed them for myself, and then eventually product managed teams that would make the web-based tools we needed to run the ad sales side of businesses like Midroll/Stitcher, or generate web-based advertising rate cards at Wondery.

But I wasn’t making Mac apps or iOS apps. I wanted to. But it seemed daunting. I read a tutorial or two on using Xcode and SwiftUI and felt out of my depth.

After I launched Lex.Games by accident — a website for daily word games — I eventually felt like I really needed an app. I really wanted to build one. I still felt… daunted.

Then my pals Casey Liss and Ben Rice McCarthy both recommended I take a look at Hacking With Swift, an incredible resource from developer and impressive human Paul Hudson.

100 Days of Swift
100 Days of Swift

I patiently went through his “100 Days of Swift” online course. And by patiently, I mean, without a ton of patience; I went through it in about 30 days, and then started work on the Lex.Games iOS app.

(Quick aside, for both technical and non-technical readers: Lex.Games the app needs Lex.Games the website, to fetch puzzles, sync login states, record gameplays, manage friends, etc. That meant I needed to build an API — a means by which the app could talk to the website back and forth. I’d feel brilliant as I worked on the web side, where I felt like I knew what I was doing, generating JSON payloads for the app to consume. Then I’d feel like an idiot as my Xcode project choked over and over again trying to parse and display the data it got from the app. I’d feel like an idiot trying to make the user interface reasonable. I released many, many betas.)

When I built the Lex.Games app, Xcode offered no integration with AI tools like ChatGPT and Claude. When I got stuck, I’d of course search for answers online, and sometimes I would absolutely go to ChatGPT, share an error I was getting, and ask what it meant. Sometimes I’d paste in chunks of my code. And since I was trying to learn, I’d ask ChatGPT not just how to fix it, but to explain the fixes it was suggesting. They weren’t always good fixes, or even workable ones, but they helped me along.

This wasn’t even that long ago, but it feels like the Stone Age of LLM-assisted coding work: It was a slow, manual process. But I got smarter and released an app! More people play Lex.Games in the app each day than on the web, and I’m pleased by that. Many thousands of games are played across the Lex.Games ecosystem each day, and two-thirds of those plays are in the app.

I’m sharing all this mostly defensively, to say, hey, I’m a real developer. I can do this. I’m not a SwiftUI expert, at all, but I can and have built apps by hand. (After Lex.Games, I launched my Cryptograms app, also built by hand, so I earned that plural apps.)

But Xcode’s integration with LLM agents is a game changer.

The gate keepers and the door openers

I hear from “normal” people who don’t know exactly what’s meant by “agents” when it comes to AI tools. In this context, the easiest way to explain it is this: When I use Claude Code in Xcode today, it can see the full coding project; it can generate, delete, and edit code; and it can do a lot of this surprisingly fast.

Gotta say it’s a bit suspicious how quickly a one man team is “recreating” existing games, while being “a full time consultant”…

The original Strategery
The original Strategery

So back to this. I feel absolutely endowed with superpowers thanks to Claude Code. But no, I didn’t ask Claude Code to “knock off Strategery” or “recreate Flight Control.”

As I said earlier, it’s certainly possible to make a crappy app with instructions like that, without knowing or writing a lick of code. That’s not what I do.

For the record, I now own Strategery after striking a deal with the original developers. Flight Control wasn’t acquirable: EA bought it and then later shuttered it back in 2015; thus, I made The Universe, Controlled an homage instead.

With Strategery, I started by mapping out what I’d want the app to do, and how I wanted it to work. Because I knew I wanted iCloud sync — even before I was sure I wanted online gameplay, which I ended up also building — I thought about how I’d want to generate the maps that game uses, so that they could be seeded and recreated algorithmically. I thought about what rules I wanted the game to have, and how I wanted gameplay to work.

And I crafted an extremely detailed prompt for Claude Code. It was several thousand words.

Strategery 2026
Strategery 2026

I explained in detail what I wanted to create, how it would look, how the game would be played, and the functionality needed. I explained the algorithmic approach I wanted to map generation and sharing, and how I wanted things architected. And then I set Claude to work, telling it I didn’t want the entire app built right away, but rather a specific subset of the game’s functionality, on which we’d iterate.

We did.

I gave specific instructions about how I wanted the project itself shaped, because I wanted various areas of gameplay mechanics extrapolated out so that they’d be easier for me to modify directly.

When I added support for online gameplay, I pointed Claude Code to my Lex.Games API that I’d built by hand. I asked it to use a similar structure and approach — so that I could maintain and understand it — and told it precisely what I wanted, down to naming conventions and database structures.

Claude did a lot of the web-code grunt work, but it’s not as simple as saying “build an API for a game” (of which this instance of Claude had no knowledge). I had to map out the exact API calls needed, the return information needed, what the app would say back, and how the two should interact, authenticate, etc — and then set Claude to work implementing it.

Some developers maybe hate this. It’s different from autocomplete and code snippets. It’s different from going to sites like Stack Exchange and potentially copying and pasting code, and I understand that.

But believe me when I say that even though I’m asking Claude to handle the implementation, I promise you, I’m still doing development work.

The Universe, Controlled

My Mastodon writer asked if I just told Claude to knock off another app. I did not.

The Daytime sky: planets and craft against a bright blue sky and puffy white clouds
The Daytime sky

My initial prompt when I started on The Universe, Controlled was about 1,000 words — more than half the length of this article to this point. And it was explicitly only for a very limited subset of the game’s functionality. I’ve since prompted Claude with tens of thousands of words of additional prompts on the project.

I’m not trying to understate Claude’s work. I literally could not create The Universe, Controlled without Claude’s help. Claude is drawing graphics in code, which I’m atrociously bad at. Claude is implementing features that I’m not good enough to implement without its guidance.

What matters to me is that the app was built with humanity. It’s me. Hi. I’m the human.

I released 44 betas before the game hit the App Store, leveraging my own feedback and intuition on what the game needed — and of course, feedback from beta testers.

I started the game in landscape mode, the way Flight Control was initially built. But I prefer using my phone in portrait mode, and so wanted to come up with a way to make the game work well there, too. I could not just say to Claude, “make this work in portrait orientation”; that’s not a prompt that would yield good results. I promise.

I had to consider the problem and think about what it meant for gameplay. Especially since I wanted the game to handle rotation. Paths you trace for spacecraft in portrait mode must navigate to the same planets, which can’t have moved, when you rotate to landscape. That’s a complicated logic and design problem to think through. Crafting the solution is twofold: It’s figuring out what the hell the right answer is, and also implementing it. I tackled the first half, which I absolutely consider hard work to get right (and I’m pleased with how it works in the game now!) Claude handled the hard work of the implementation. I’m grateful that it did. That’s absolutely challenging work, and I’ll state it again plainly: I couldn’t have done it. I needed Claude’s help.

The Universe, Controlled on iPad in landscape: two craft flash red warning rings as an astronaut floats by
Paths have to land on the same planets whether you’re holding the device in portrait or landscape.

For more than a dozen betas, The Universe, Controlled had an extremely annoying issue: When you traced paths for spacecraft from the bottom of the screen, you’d trigger the iOS “go to the Home Screen” gesture that you get when you swipe up from the bottom of your device. I kept trying to work around the issue:

  • Don’t let craft spawn from the bottom two-thirds of the screen
  • Tell iOS that we should be in game mode
  • Hide the home bar indicator so it requires a more explicit swipe

These things helped a smidgen, but it was still the number one complaint users had while testing the game. It’s fun, but it’s frustrating how frequently I unintentionally pause the game.

The Universe, Controlled on iPhone: a satellite and a UFO following traced flight paths toward their worlds
The score bar lives at the bottom of the screen now, so you never swipe up from there.

Claude did not solve this problem. I didn’t even ask it to. To me, it was a human problem in need of a human solution. And the solution was one that feels extremely obvious to me in retrospect, but it took a while to get there. I literally woke up one morning and realized that if I put the “score” module doohickey (that shows your total craft landed, the pause button, etc) at the bottom of the screen, then you never swipe there, and you never close the app.

Again, this was a human solution. Claude wrote the code change.

I look at Claude’s code. I ask Claude (and sometimes ChatGPT) to explain Claude’s code, because I want to get smarter on what it’s doing. I do manual edits. But I let Claude handle a hefty workload.

Oh, the humanity

Claude has helped me vastly improve the Lex.Games app’s Home Screen, which had never looked quite good enough in my implementation. When I built Gnome, my app for finding and sharing GIFs, I built it on the Tenor API, which is owned by Google. When I was ready to apply for a full API license (vs. the developer one I was testing with), I saw that Google was in fact shuttering that API and not offering future access. That sucked. I found Klipy, pointed Claude to its API documentation, and asked Claude to swap out Tenor for Klipy. That would have taken me a couple days. Claude was done in ten minutes.

But the puzzles in Lex.Games are human-crafted. I’m the human. The conceptual approach in Gnome comes from me, even if the final API implementation was LLM-coded; I wanted something that felt like Spotlight or Alfred but was exclusively for GIFs, lightweight, and stayed out of the way.

Unlockable spacecraft following traced paths between a blue world, a moon, and a striped planet
Spaceships seeking landing

The Universe, Controlled has two soundtracks — one composed by me, the other by my 15-year-old son. I crafted all the sound effects. I brainstormed the obstacles, the spacecraft, and the “game over” messages (e.g., “47 craft landed before you stopped paying attention”).

My point is: I love human creativity, and I’m proud of my own, and I think my apps have a unifying aspect of my sensibility, sense of humor, and Lexishness. Claude makes them possible, but so do I.

Suspicious is as suspicious does

What did my Mastodon writer mean?

Gotta say it’s a bit suspicious how quickly a one man team is “recreating” existing games, while being “a full time consultant”…

Let me be clear: I spend many, many hours on my apps. I make considerably more money with my consulting work — and I neglect that work, perhaps more than I should, because I find making apps so damn fun and rewarding. I’m making the apps that I want, and hoping that they resonate with others, too.

I think there’s an implication here in this question that using LLMs to help with coding projects is cheating. I think there’s even validity to the idea that asking Claude Code to “knock off Flight Control” is, if not cheating, still not great. And maybe it sounds delusional to some that I think what I did is different: crafting the narrative of what my version of such a game would be, vs. talking to the LLM about the original and asking for a clone.

If people are having fun playing Strategery and The Universe, Controlled, and I’ve thus brought them some joy, delight, or distraction — that seems like a good thing to me. If you’re suspicious that my productivity is enhanced by the use of tools like Claude, your suspicion is well-founded.

If you think there’s something inherently amoral to using any LLM for any purpose, I won’t change your mind. But if you think that using LLMs to help bring app ideas to life is cheating or worthy of suspicion, I’d love to help you reshape your thinking.

I know of zero “vibe-coded” apps that started with a single prompt and then were immediately released. There’s a reason we’re not flooded with more amazing apps than ever before. Great apps take time. There is a real problem of too many vibe-coded apps hitting the App Store, lacking in craft, skill, and humanity.

The question, to me, isn’t how much code was written by a human. It’s how much the app was authored by a human, which I think is a more nuanced question. How much care, thought, and humanity went into the app matters far more than tabs vs. spaces or a manually-vs.-machine-built HStack.

Movie editing and newspaper layout aren’t less impressive now that we use software vs. scissors. WYSIWYG text editors don’t make the written word less compelling than typewriters.

And AI-generated prose still sounds like crap.

But this article was proofread by an LLM. It wasn’t allowed to change my word choice, suggest new arguments, or restructure the piece; it was empowered to fix typos and tense mismatches. Spellcheckers don’t make writing worse, and LLM usage on its own doesn’t make apps worse. The person using the tool has direct influence over the quality of the final product.

•Apps I Love •Shameless Self-Promotion

The Universe, Controlled is my love letter to Flight Control

A classic iOS line-drawing game is long gone. So I made a new one — in space.

I have a new game in the App Store. It’s called The Universe, Controlled, it’s free, and you should go download it right now. You can read the rest of this later while nodding vigorously in agreement.

I stole that last line from myself. I’ll explain.

The Universe, Controlled on iPhone: a satellite and a UFO following traced flight paths toward their worlds
Draw the flight path.

The other game I couldn’t stop playing

Last month, I told you about how I relaunched Strategery, the classic iOS game I fell for in 2009, reviewed for Macworld, and — seventeen years later — somehow ended up owning. When I first started work on the app that became Strategery, I couldn’t help thinking about the other games I adored from those early App Store days. And boy oh boy, did I miss Flight Control.

Flight Control came from a Melbourne, Australia studio called Firemint. Planes drifted in from the edges of the screen, and you dragged your finger to draw a path for each to the right runway. That was it. It was excellent.

I reviewed Flight Control for Macworld in June 2009, two months after my Strategery review. Here’s how that review began:

Flight Control, a $1 app from Firemint, wouldn’t exist without the iPhone. The unique gameplay is perfectly suited to the device, and I am hopelessly addicted. When I have a spare minute or two, Flight Control is the game I play. Go spend the buck and start playing — you can read my review later while nodding vigorously in agreement.

And here’s how it ended:

The game takes seconds to learn, and mere minutes to play. That makes it even more impressive that I’ve spent hours guiding planes in Flight Control and can’t wait to go play again.

2009 me knew what he was talking about.

Cleared for departure

Strategery kept working, untouched, for the better part of a decade. Flight Control wasn’t so lucky. Electronic Arts acquired Firemint in 2011, and in September 2015, EA quietly pulled the game from the App Store. You can’t buy it anymore. It’s gone. That sucks.

With Strategery, there were two very nice developers to track down and a game to rescue. With Flight Control, there’s nothing to rescue. It belongs to a giant company that clearly isn’t interested, and I’m fairly certain EA wouldn’t take my calls.

So I didn’t try to bring Flight Control back; giant corporations are tough beasts to crack. I made my own game instead — one that aims to pay tribute to what made Flight Control so lovable, without pretending to be it. Call it an homage. Call it a love letter. Call it The Universe, Controlled.

Space traffic control

In The Universe, Controlled, you’re not landing planes; you’re running space traffic control. Craft soar in — a satellite, a UFO, a rocket — and you guide them to the planets they want. Touch one, trace a path, and it follows your line exactly. Each craft sports its own color and symbol, and needs to land on the matching world. Your job is to bring them all home while keeping them apart. Crashes, in space and in apps, are bad.

Every so often, something else drifts across the sky: a meteor, an astronaut, an alien, a superhero. These are obstacles. You must avoid them.

(If you’d prefer a more peaceful cosmos, you can turn the flying obstacles off in Settings. The game will call you a monster. It’s fine. It says that to everyone.)

The Universe, Controlled on iPad in landscape: two craft flash red warning rings as an astronaut floats by
Red rings mean two things are in danger of crashing. Also: Mind the astronaut.

Embracing modern iOS

Flight Control was a game of its moment. In 2009, an iPhone app targeted exactly one screen size, and you held the phone the way the game told you to hold it — in landscape mode.

I wanted The Universe, Controlled to feel just as simple, but at home on the devices we actually use in 2026. So it plays in portrait and landscape. Hold your iPhone upright and play one-handed, or turn it sideways and settle in. It’s lovely on the iPad, too, where there’s a whole lot more universe to control.

A slew of tributes

I couldn’t help myself: The Universe, Controlled is packed with a few tributes to sci-fi movies and TV shows I love, or that my nerdy friends love and that I’ve heard of. The unlockable craft may look a bit familiar if you’ve ever watched a starship boldly go somewhere, or seen a certain hunk of junk make a certain run in a certain number of parsecs. The bonus obstacles include a gentle visitor with a glowing fingertip who I suspect would like to phone home, and a furry fellow from Melmac who is waving hello and possibly eyeing your cat.

There is also a pterodactyl. In space. It made me laugh. I’m a simple man.

Unlockable spacecraft following traced paths between a blue world, a moon, and a striped planet
Spaceships seeking landing

Free, with extras

Flight Control cost a buck. The Universe, Controlled is free.

The Daytime sky: planets and craft against a bright blue sky and puffy white clouds
The Daytime sky

I mean actually free. You can play forever without paying me a cent. There are no timers, no energy meters, and no levels held hostage. There are some house ads for my other apps.

If you’d like to make the ads go away — and get some fun extras while you’re at it — you can Unlock The Universe for a few bucks. That gets you no ads, ever; three skies (Deep Space, Daytime, and Golden); a bunch more spacecraft; and those extra flying obstacles.

And if you’re feeling especially generous, there’s Platinum Universe for $10, which adds a badge on your menu, your choice of four app icons, and — my favorite — your name in the game’s credits as a Platinum supporter.

Both are one-time purchases, not subscriptions. You know how I feel about paying developers, but I’m also not going to ask you to subscribe to a game about landing UFOs.

Now boarding

The Universe, Controlled takes seconds to learn, and mere minutes to play. I’ve somehow spent hours “testing” it anyway. I really, really like this game. I hope you do, too.

It’s free in the App Store for iPhone and iPad. Space is crowded. Somebody should be in charge. I pick you.

•AI

Vibe-coded apps: The vibes are good for people with specific needs

Apps for an audience of one.

There are folks who use “vibe-coded” as an insult. This app was vibe-coded in a weekend. And those folks are also unhappy, I’m certain, that here’s another article about AI.

I get it. But AI-assisted coding doesn’t mean developers don’t give their creations real care, and love, and attention. How something was made doesn’t tell you whether it’s any good.

I have many, many thoughts on how empowering AI-assisted coding can be. But today I want to talk about a specific category of app that exists only because of tools like Claude Code and ChatGPT Codex. These are apps that are empowering people to get more out of their devices. More specifically, these are apps with just a single user.

I put out a call for vibe-coded apps folks had made to solve specific issues of their own. And I got back a slew of messages with fascinating apps — weird, specific, deeply personal tools that each solve exactly one person’s issue.

One reader, Chris, put it well: We’re now in the age of bespoke personal apps. Here are a bunch of them, loosely sorted by the itch they scratch.

The dog-poop finder

I have to start here. This app puts the “app” in “crapp.”

Tucker has a dog. Tucker also has a lawn. And as anyone with both of those things knows, the lawn and the dog have an ongoing… arrangement.

Here’s Tucker’s problem: He’s mowing. He spots a pile of dog poop. He’s not going to stop the mower, walk to the garage, grab a bag, and deal with it right then. He’ll remember where it is. He’ll come back later. Except, of course, he won’t remember where it is. That’s a crappy problem.

Dog Poop Tracker in a phone browser: a simple yard map with five numbered spots still to clean and two already cleaned.
Tucker’s Dog Poop Tracker, with a few sample spots marked.

So Tucker built an app for it. When you spot the offending deposit mid-mow, you tap to drop a GPS pin right where you’re standing, and you keep mowing. Later, when you’re mower-free and properly equipped, the app shows you every pin on a map of your yard, and you check them off as you clean up.

It’s called Dog Poop Tracker, and its tagline tells you everything: “Mark it now. Find it later. Pick it up.” It’s a web app, so it runs right in your phone’s browser, and all of your data — such as it is — stays on your device. And because phone GPS can be off by several feet, which matters a great deal in this particular line of work, you can skip the GPS entirely and place spots by hand on a simple map of your yard.

Is this the most glamorous use of artificial intelligence? Reader, it is not. Is it useful as hell? Yes.

Nobody at a big company was ever going to build this. It took one guy, one dog, and one too many unpleasant surprises underfoot. It’s a number one app to Tucker. It’s a number two app to everyone.

Tracking what matters, and nothing else

Dogs came up more than once.

Chris’s wife is a college administrator, and she doesn’t use AI. The two of them had been going back and forth about AI disrupting higher education, so to make a point, Chris suggested they find a real problem and attempt to vibe-code a solution together.

The problem they chose: the weekly calendar and Google spreadsheet they’d been using to track their dog’s weight and calorie intake. They wrote a prompt together, let it run, and — to Chris’s wife’s amazement — got basically what she wanted on the first try. Chris has kept polishing it since, and they’ve been using a TestFlight build for a couple of weeks.

Andrew’s tracking is for himself, and the stakes are higher. He builds apps because the ones on the market are too heavy, too ugly, or do too much.

Andrew was recently diagnosed with a rare kidney disease, on top of celiac disease, so he needs to keep an eye on his weight, blood pressure, and sodium. His Wyze smart scale has what he describes as a terrible app, so he built one that just pulls his weight from the scale’s API. A second app gathers the kidney-relevant numbers from Apple Health, so he can track exactly what matters and export everything for his nephrologist.

Then there’s his meal planner. He uploads a recipe PDF (from NYT Cooking, say), a lightweight Claude model parses it and applies his dietary constraints and preferences, and out comes a week of meals. Importing a recipe costs him about a penny. There’s no cruft, and there are no features he doesn’t need.

Goodbye, subscription

A surprising number of personal vibe-coded apps exist because somebody looked at a monthly fee and thought, I’d rather not.

Adam uses Google Calendar at his new job, and needed his personal calendar’s busy times to show up in his work availability. Plenty of services will do that for you — Reclaim, Calendly, CalendarBridge — for what he calls outrageous prices, and in exchange for your calendar data. Kinda gross, he says.

So Adam used Claude Code to build a tool he called iSync, a simple Mac app that reads his iCloud calendars through EventKit and syncs a generic “busy” block to a Cloudflare Worker, which creates a matching event on his work calendar. No public ICS feed, no handing a calendar to a third party, no personal events accidentally leaking into work. It costs him nothing to run, and it’s entirely private. When he discovered that Shortcuts can’t trigger a Focus mode from a calendar event, he just added that to iSync, too. Adam knows enough about EventKit and Workers to know that the code is decent. He just never would have bothered before.

Aaron, a professional iOS and Mac developer, built Invoicy — a Mac app for time tracking and invoicing, now on GitHub — after Harvest jacked up its prices. He’s also building a music player that plays albums off tiny SD cards, automatically, like a record player; the Mac app that generates those albums and writes them to the cards is already done.

Aaron’s feelings about all this are, shall we say, mixed. He’s excited, but he also says he wouldn’t mind if he could magic LLMs out of existence. I get it. But I’m glad he can’t.

Movies, GIFs, and reading, your way

Scott has been a front-end web developer for more than 20 years. He just doesn’t do it for fun. For fun, he builds models and watches movies.

He’d been tracking movies in Airtable until he blew past the free tier’s record limit. He started building a replacement last winter, then stalled; there was too much backend stuff to learn, and not enough spare time to learn it. A couple of months ago, he started using Claude, and he’s since launched his Movielist app. For himself.

Why not just use Letterboxd? Because Letterboxd is about sharing, and ratings, and other people. Scott just wants to know what he wants to see and what he’s already seen. Will it become a real product someday? He doesn’t know. He’s just enjoying building it with Claude in between actual work things. Which, for what it’s worth, is how a lot of great indie apps got started.

Jay admits he’s probably built the same meeting recorder and transcriber as everyone else. But his favorite is something he calls Movie Memes. Feed it the video file of a whole movie, and it uses Whisper to pull out all the dialogue. Then he can make the exact reaction GIF he wants, captioned with the actual line from the movie — or with his own text.

Michael built an offline client for Readwise Reader. It has a fully local database, easy saving and printing in a bunch of formats, and, most recently, tag suggestions based on the tagging system he already uses. His library stays organized the way he organizes it, not the way some algorithm thinks he should.

For the kids (and the fediverse)

Adrian dabbled in iOS development years ago, but never got proficient enough to stick with it; his day job as a product manager let him scratch the itch vicariously. Now he’s making apps on his own with AI tools. Bagtag writes images to small NFC-powered e-ink keychains for his kids. He’s collected a pile of facts, jokes, and comics, and every day, he can beam something new to their tags. It’s a tiny, private, daily surprise. He has no plans to publish it. It’s for his family, and that’s it.

Adrian’s other project is more ambitious: Flightstead, a personal-website app and self-hosted server with fediverse publishing baked in. It’s free and open source, and he’s hoping it clears App Review soon. (Good luck, Adrian. I have thoughts.)

On the clock

Plenty of these vibe-coded apps are built for people’s work.

Tage teaches at a technical college. He built a coworker a locker-and-laptop checkout system. But his pride and joy is a lab system: All of his lab documents live in it, students follow the instructions and drop in their answers and screenshots as they go, and at the end, they download a finished Word document to turn in through the school’s learning management system. That’s real software, used by real students, solving a real headache. And a teacher built it himself, thanks to LLMs.

Chris, of dog-tracking fame, also built a better front end for a physics database he uses constantly for work, because he hates the official interface. Making better, custom versions of tools you use is a classic vibe-coding case for personal use.

David was making personal apps long before AI made it easy. Now, he says, the apps are significantly better. His roster: a budgeting app; an app that records raw camera feeds synced to presentation slide transitions; an app that uses machine learning to track a speaker’s pose and auto-crop video to follow them as they walk around the stage; a background process that sweeps simulator screen recordings off his desktop; and, of course, a Pomodoro timer.

The pros are doing it, too

You might think vibe coding is just for people who can’t code. Nope. Aaron, David, and Adam all know their way around a compiler. So do these two. (The more you know about coding, the better you can use these tools. I’ll have more to say on this in another article.)

Kevin has made so many web and iOS apps for himself that he’s lost count. Most are fun, dumb projects (his terms, not mine). A couple he uses every single day: a home-lab monitoring dashboard built specifically around his hardware, and an iOS app for tracking his physical media that, he says, actually follows Apple’s Human Interface Guidelines. Kevin is a product manager by day, and he credits that for how well it’s gone. He crafts intensely precise prompts and sets the tools to work.

Laurent used Claude Code to build himself an entire shelf of native Mac apps, and tuned his setup specifically so they’d look and feel like true (Mac-assed?) Mac apps. Three of them are just for him: Victor, a video converter and track extractor built on ffmpeg and MKVToolNix; Leon, which adds GPS coordinates to photos (JPEG and RAW) from a location track recorded at the same time; and SSL Toolkit, for everyday certificate wrangling. He’s published those and several others, in case anyone else finds them useful.

There are tons of apps for that, and this and that, and the other thing

Nick made a Mac app to help with his astrophotography projects.

Jann is modernizing Perl scripts he’s been running for more than 30 years, converting some to Objective-C in Xcode (“’cos I’m THAT guy”), translating Python scripts into Perl because he hates Python, and writing his own ffmpeg-based alternative to Handbrake, so he can rip Blu-rays with the Dolby Vision profiles Handbrake won’t handle.

Watson built a Mac app that does exactly one thing — it locks the keyboard so he can clean it — plus an Instagram link-sharing tool that strips the tracking junk off links coming and going.

And Jessie has built several tools for work and home, including a YouTube subscriptions web app and an apartment-watch dashboard.

And then there’s Carlos

Carlos, writing from Spain, apologized for sending me a wall of text. Carlos, I write stuff. Walls of text are a-okay.

Carlos has built more than ten tools, and those are just the ones he remembers offhand. Some highlights:

  • autoclaude is a set of skills that turns Claude Code into a task queue. Drop tasks in an inbox, and it works through them one by one. When a session gets too long, it writes itself a summary and starts fresh. After each step, a second AI model reviews the code, and they keep going until both agree. He used it over the summer on a huge project for his main employer, and it can run for days.
  • Autoclaude Runs is a Mac and iOS app for keeping tabs on all those autoclaude runs, so he can check progress — or hit the brakes — from anywhere. Yes, he built an app to watch the robot that builds his apps.
  • teveport takes the HDMI output of his set-top box, captured on his computer, and streams it to his iPhone or iPad with no lag. He put an IR blaster next to the box, so he can change channels remotely, too. Live sports, anywhere in the house. (An earlier attempt, hlsViewer, had too much delay. Iteration!)
  • espansoConfig is a friendly editor for espanso, the open-source text expander he switched to after getting tired of paying for TextExpander and Typinator subscriptions.
  • OmadaWLANManager exists because he manages a lot of Omada wireless access points at work, and their web interface, in his words, sucks.
  • claude-sync is a command-line tool that keeps his Claude setup in sync across three Macs.
  • googleTrendsComparer helped him trace where an internet panic started, and tinyEvolution is a little web app for playing with evolutionary traits.

My favorite part of Carlos’s email, though, was his honesty about the ones that didn’t stick. He built a reminders app inspired by Marco Arment’s Unforgetful — and then Marco kept adding good features faster than Carlos could keep up, so he gave up and just used Unforgetful. He built spaceSwitcher, a Mac Spaces manager, used it heavily for two weeks, came back from summer break, and never got back into it. It still sits in his menu bar, unused.

He says there are about ten more projects he never finished. (For the record, I have four that I’d consider “still in development.”)

Small software

None of these people set out to disrupt anything. They wanted a list of movies, a healthier kidney, a healthy dog, entertainment for their kids, or a lawn that they could walk across barefoot.

For decades, if the software you needed didn’t exist, you had three options: Learn to code, pay someone, or live without it. Now there’s a fourth option, and people are taking it. They’re not building the next big thing. They’re building the next small thing, for themselves. Sometimes they abandon it two weeks later. That’s allowed, too.

Vibe-coded doesn’t mean subpar. It doesn’t mean bad. And in all these cases, it means empowerment. Computers are meant to help us customize our workflows to the ways we work. LLMs make that more possible than ever.

•Housekeeping •Shameless Self-Promotion

Lex on Tech on shirts

Strategery and Lex.Games, too

Lex on Tech on a purple hoodie
Lex on Tech on a purple hoodie

If you’ve ever thought to yourself, boy, I wish I could wear clothes that had the names of stuff Lex makes on them, have I got exciting news for you!

Today, I launched a small merch store. I’m offering shirts for Lex On Tech, Strategery, and Lex.Games. And I’m offering stickers, too, because stickers are great.

Buy now, before the holidays come and you’re busy spending all your money on somebody else. You deserve this.

Check it out: https://merch.lexfriedman.com.

•Apps I Love •Indie Developer Spotlight

Indie developer spotlight: James Thomson

James Thomson is my friend. He’s also an insanely talented developer and former Apple engineer. He is meticulously focused on making and keeping his apps awesome. You probably know about some of them. Maybe even all! But let’s celebrate James’s greatness regardless.

James sells apps under his TLA Systems umbrella. Though he no longer makes DragThing, for which we should all pour one out, he still makes apps that are focused on numbers large and small.

There’s PCalc for Mac. There’s PCalc for everything else — iPhone, iPad, Vision Pro, and Apple Watch.

You might think to yourself, Hey, at least some of those devices come with a default calculator app from Apple. To you, I say, so what? James’s is better. I promise.

PCalc on iPhone, with a blue theme and a button layout full of scientific functions.
PCalc on iPhone, in one of its many themes.

For starters, James has been making PCalc since 1992. That’s more than three decades of one person thinking very hard about calculators, and it adds up. (Listen, my calculator jokes are going to multiply exponentially. I hope they don’t divide us. That would be a minus.)

PCalc does all the scientific-calculator stuff you’d expect, and then keeps going. There’s an optional RPN mode, with one-tap access to the stack, for those of you who know what that means and thus care. There are hex, octal, and binary modes with all the bitwise operators a programmer could want. There’s a long, editable list of unit conversions, plus constants and functions you can write yourself, all synced across your devices. There’s a paper tape, so you can see what you actually typed. Flick the display one way to undo; flick it the other way to redo. The attention to detail is a real plus.

And you can make PCalc look and work the way you want. It has a slew of themes, and a bunch of button layouts — and if none of them is quite right, there’s a full layout editor, so you can build your own calculator, button by button, and share it with others. (You have calculator friends, right?)

It also goes everywhere you do: a full calculator on your Apple Watch (with a tip calculator, too), a menu bar widget on the Mac so you can do quick math without leaving the app you’re in, Shortcuts support for automation nerds, and Handoff, so a calculation you start on your iPhone can finish on your Mac.

PCalc is $9.99, and one purchase covers iPhone, iPad, Vision Pro, and Apple Watch; the Mac version is a separate $9.99. If you want to dip just a single digit in first, PCalc Lite is free, and you can buy just the extra features you want from inside it.

James also makes Dice by PCalc, and thank goodness he makes calculator apps, because the geometry on display in Dice is bonkers. And that’s not all: Dice isn’t a random number generator with a picture of a die on it. It’s a physics simulation. Near-photorealistic 3D dice tumble, bounce, and clatter around a wooden tray, and when the numbers don’t go your way, you can flick them across the screen in frustration. Beyond the usual D4-through-D20 set, you get coins, D2s, D14s, D16s, D18s, D24s, D30s, percentile dice, and Fate dice. There are a variety of gorgeous dice sets to choose from, and a photo mode for showing them off.

A wooden tray of colorful 3D dice in Dice by PCalc, including a coin, a D30, percentile dice, and a Fate die.
Yes, that’s a D30 down front. Total: 267.

Dice is clearly built by someone who plays tabletop games. Roll with advantage or disadvantage, add a modifier, and Dice adds it all up for you — of course it does; it’s from the PCalc guy. Save named presets for your favorite sword attack. Make custom dice with any text, emoji, or images on the faces, and share them with your party. Write your own roll rules, like rolling four dice and dropping the lowest, or automatically rerolling ones. Dice can read the results aloud, it has interactive widgets, and there’s even an AR mode, so you can roll virtual dice on your actual table. Which, granted, you could also do with actual dice. But then you’d have to pick them up. Gross.

Dice is $1.99, and runs on iPhone, iPad, Apple Watch, and Apple TV; the Mac version is a separate $1.99.

And James also makes About by PCalc. It’s a truly insane app that must be experienced to be believed. It began life as PCalc’s About screen. There’s a Panda King. Said Panda has a castle. The whole thing is, if you will, panda-monium. It’s bonkers. It’s bananas. That’s another bit of wordplay.

About by PCalc: the 42 PCalc icon engulfed by bananas, cereal boxes, coins, dice, and fire.
About by PCalc. That’s the PCalc icon under a barrage of bananas, cereal boxes, coins, and fire. Normal stuff.

Check out James’s apps.

Link •Podcast

David Smith brings back his Developing Perspective podcast

This first episode wrestles through why being an indie app developer right now feels so “pivotal”, in both senses of the word. There’s the constant, week-by-week change in our tools and workflows, and there’s the bigger structural shift in what it even means to “make” apps.

I enjoyed this very much.

•Amazon

Amazon unveils new Kindles and the Kindle Click

I’m not in the market for a new Kindle; my current Kindle works just fine. I use a Paperwhite. I couldn’t tell you which one, but it works and I use it daily. But if I were getting a new Kindle, it would be this purple beauty.

A purple Kindle showing a book's prologue, beside a hand holding a white two-button Kindle Click remote.

Amazon says it’s “ube.” I didn’t know that word. (Turns out it’s a purple yam?) But I know purple. I think that Kindle looks great.

Amazon also unveiled the Kindle Click, which — like the Kobo Remote that came before it — is a standalone Bluetooth page-turning button. I know some folks consider page-turning buttons a must; I’ve never minded tapping screen edges (or swiping) to turn. The idea of a standalone button remote strikes me as the doofiest of the doofy, but hey, if it works for some people, great.

Note that the Amazon links include my affiliate URL.

Link •Apple

Small ways the App Store could be improved for developers

Jeff Johnson:

There are countless small, practical, mostly uncontroversial ways in which Apple could improve the App Store for developers, yet the App Store has changed relatively little in the 18 years since it was hastily cloned from the iTunes Music Store. Below is a list that you can count, numbered for easy reference, though not in any order of importance.

These are excellent.

•Indie Developer Spotlight

Indie developer spotlight: Tangwan’s Sundial shows you where you are in time

Day and year widgets.
Day and year widgets.

A sundial doesn’t tell you what time it is. It shows you where the sun is. That’s the idea behind Sundial, a widget app for iPhone, iPad, and Mac from Tangwan, a solo developer who ships apps under the name Softminilabs.

Sundial takes a stretch of time — today, this week, this month, this quarter, this year — and draws it as a row of marks. Or a circle. Or as trees. The widgets are a visual indicator of the passage of time. There’s no ticking clock, and no seconds counting down. You glance at it, and you get a sense of your time left — in the day, in life. It’s a widget that makes you contemplate mortality. Fun.

You’ve probably seen year-progress widgets before; the ones that tell you 2026 is 75% over, so you can sigh or whistle under your breath about where the hell the time goes. But Sundial takes a unique approach.

First, it can follow the lunar year, and the 24 solar terms of the traditional Chinese calendar, instead of just chopping the Gregorian year into twelve months. So Sundial knows whether today falls in Awakening of Insects or Frost’s Descent. I didn’t know those were things. Now I want to know which one I’m in. (As I write this, it’s the Autumnal Equinox term. I checked.)

There’s also a lifetime view. Enter your birthday and a life expectancy, and your life becomes a progress bar. Whether that’s profound or deeply unsettling or something in between may depend on your mood at the moment. Today, I’m at 51%. This has negatively impacted my emotional state, while also reminding me once again to seize the day. I contain multitudes.

I'll let you know in 44+ years if this was accurate.
I’ll let you know in 44+ years if this was accurate.

Beyond those, you get countdowns (from a start date to a target date), count-ups (how far you’ve come since a date in the past), and an overview that puts today, this week, this month, and this year side by side. There are Home Screen widgets in every size, Lock Screen widgets, and on the Mac, a menu bar icon, so where-you-are-in-time sits right where you already glance a hundred times a day.

And there are a lot of ways to make it look how you want: 26 styles, from a single hairline bar to dot matrices, rings, bamboo, moon phases, and motifs drawn from Chinese ink painting; 57 palettes; and six typefaces. The whole thing has a consistent paper-and-ink aesthetic that feels calm and sophisticated, not cutesy.

The kind of detail that makes me love indie apps: Tangwan put real work into the Chinese serif typeface Sundial uses, trimming the font from about 11.6 MB down to 3 MB per weight, and adding tabular figures so that the percentages in your widgets don’t jiggle around as the numbers change. You’d never notice. Tangwan did. You’re welcome.

Your data stays on your device and can sync via iCloud; the App Store privacy label says the developer collects nothing.

Sundial is free for up to three widgets with the basic styles and palettes. Sundial Pro removes the limit and unlocks every style, every palette, and iCloud sync, for $0.99 a month, $6.99 a year, or $9.99 once for a lifetime license. That last one’s the easy call. One purchase covers iPhone, iPad, and Mac.

More from Softminilabs

Sundial is the newest of 15 apps in the Softminilabs catalog, all built around the same idea: small apps that do one thing well, in both English and Chinese. A handful of highlights:

Days Since is a gentle reminder app for birthdays and anniversaries, with a small ink-drawn card for each person. It has the lunar calendar built in, which matters a great deal if you have a grandmother whose birthday is the 15th of the 8th moon.

DareAlarm rings through Silent Mode and Focus settings, and won’t stop ringing until you beat a wake-up game. Oversleep, and it sends a failure report to people you preselected. I wish I slept soundly enough to need this app. I… do not.

AHHH! buries a little paper buddy under stress words (“overtime,” “exams,” “your ex”), and you yell at your phone to blast them away. The louder you yell, the bigger the blast. I have not tried this at home. My family is grateful.

Lull offers 62 ambient sounds for sleep and focus that you can layer in a mixer. Rain on a roof plus coffee-shop hum plus lo-fi piano. Are you sleepy yet?

Tangwan makes a slew of apps, and they have personality and even whimsy without lacking maturity.

Check out Sundial, and the rest of the Softminilabs apps.