LmCast :: Stay tuned in

What I've Learned (So Far) Building Online Mini Games with Elixir and Swift

Recorded: May 27, 2026, 2 a.m.

Original Summarized

What I've Learned (So Far) Building Online Mini Games with Elixir and Swift

Calvin Flegal

About | Latest Writing |
Music |
Twitter

What I've Learned (So Far) Building Online Mini Games with Elixir and Swift

24 May 2026
My most recent side project is a little social arcade called Migo Games. You can check it out on the App Store for Mac and iOS. You can also play one of the games on the web at migo.games.
It goes without saying that a lot has changed in the age of AI coding. I really can’t say I wrote any of the code. Keep in mind the date of publication of this post as well. Whatever I say about AI is likely to be out of date within weeks or months.
I do read the code, well, mostly. I certainly understand its design. I think that’s still really important with AI.
The tech stack of Migo Games is Elixir on Phoenix and Swift with SpriteKit. That’s really it. The back end runs on Fly.io. It’s got a managed Postgres database on Crunchy Bridge. One of the things I’m really proud of is the app’s lean binary size. At the time of writing it’s just a few megabytes. I think I added one Swift dependency so far, and that’s a Phoenix socket client library. I’m old enough to remember Nintendo 64. Mario 64 was like 8 MB, and I think most of it was music. My God is that amazing software. Anyway, I think AI reduces the need for so much bloat if one is mindful, and I think that’s really great.
Elixir has been awesome. It’s been so neat to have the core game unit, the room, exactly match the back-end process model. Talk about a good way to scale software. I remember reading a Cloudflare post about their Durable Objects that mentioned such an idea. I can’t easily find the link. Anyway, I’m confident the games could be fairly easily scaled because of this match. Then there are all the other benefits of Elixir such as the fault tolerance of this model. One room having a problem is not going to crash my whole system. I’m not really qualified to speak to all the cool parts of Elixir, but I’ll say I’ve been very happy with my decision to try it. If I need to add admin functionality or background tasks or anything else, I have all of the BEAM and Phoenix features right there waiting for me. I’m happy I didn’t just go with Node or Bun as would have been the default choice for a guy whose best language is TypeScript.
I could and maybe should say more about the architecture, but I’ll leave that for some other post.
Also, I would encourage others to target Mac in addition to iOS for a reason you might not expect: build times. The simulators and Xcode are really pretty slow. It’s all a lot faster if you’re targeting Mac.
In the times before AI, I probably would have principally targeted the web. But in truth, and this is especially true of the iPhone, the web has really disappointed me in terms of performance when compared to native. It’s always outdone by native. You can even try this yourself with Migo! Play Arrow on the web then go try it on the native iPhone version. The cute haptics, the full screen, the animations, it’s really just not close.
Really none of this would have been possible without AI, so really I’m pretty grateful to be building software in this era. There are things I miss about the before times. Coaching clankers isn’t as prone to flow as writing syntax yourself. Oh well.
This isn’t to say that AI has solved everything. All the hardest parts of making successful software are still here. One of them is of course finding users/distribution. The clanker can’t really match my software to people from my repo. Bummer. In fact, there’s so much more software being written now that this problem is actually harder! I saw a chart showing tge explosion of number of apps in the app store from AI. Crazy stuff.
That’s all for now I guess. Give the games a shot. Leave a nice review in the App Store if you’re up for it. Happy building. Discuss on HN if you’d like.

All Posts

What I've Learned (So Far) Building Online Mini Games with Elixir and Swift

Comparing Online Music Mastering Services (e-mastering)

Building Paper Audio with NestJS, Jovo, and React

The Things You Do Once Barely Matter, But That's a Good Thing

What I learned from building my first iOS app

Ember.js (Ember CLI) and Jekyll on GitHub Pages


This page was generated by GitHub Pages.

Calvin Flegal discusses his experience building a social arcade called Migo Games, detailing the technology choices and architectural considerations involved. The project utilizes a technology stack centered on Elixir with the Phoenix framework for the backend and Swift with SpriteKit for the frontend. The backend infrastructure is hosted on Fly.io and utilizes a managed PostgreSQL database via Crunchy Bridge. A point of pride for the author is the application's lean binary size, which is measured in just a few megabytes, an achievement he attributes partly to mindful coding aided by artificial intelligence.

Flegal emphasizes the inherent advantages of using Elixir in this context. He finds that the architectural design of Elixir allows the core game unit, or room, to directly correspond to the backend process model, which facilitates excellent software scaling. This architectural alignment contributes to the fault tolerance of the system, as a failure in a single room does not lead to a system-wide crash. The author expresses satisfaction with this choice, noting that Elixir provides built-in features from the BEAM and Phoenix ecosystem for implementing additional functionalities like administrative features or background tasks. He contrasts this choice with using languages like TypeScript or Bun, which he felt were the default options for those familiar with those environments.

The author also provides specific development advice, recommending that developers target Mac systems in addition to iOS for building the application. This is because simulators and Xcode experiences are significantly faster on a Mac. Furthermore, Flegal reflects on the trade-offs between web development and native development, noting that performance on the web has disappointed him compared to native applications. He illustrates this by comparing the web experience of playing a game to the native iPhone version, emphasizing the superior performance, haptics, and animations offered by native platforms.

Regarding the role of artificial intelligence, Flegal acknowledges that AI has been instrumental in making the project possible, although he concedes that the most challenging aspects of software development, such as finding users and distribution, remain unsolved problems. He notes that the explosion of available applications generated by AI suggests that while AI aids in creation, tackling real-world distribution complexities remains a significant hurdle, even in an era of abundant generated code.