Abacus
GoL-icon-1024x1024.png

Joel's Game of Life

Project information

This is my app for the Computer Science track's Build Week at Lambda School. It is an iPad-specific implementation of Conway's Game of Life cellular automata simulation.

Run this app (iPad only) via TestFlight: https://testflight.apple.com/join/Ubfi6E8s


GitHub, iOS app: github.com/joelgroomer/Game-Of-Life

Product demo

Tech stack

This app was build for iOS 14 beta 5 using Swift 5 and SwiftUI 2 beta on Xcode 12 beta 5.

I chose to use SwiftUI because I hadn't had a chance to use it much yet, as all of the previous projects at Lambda were done in UIKit. I further decided to use SwiftUI 2 beta because it will be released very soon and it seemed more reasonable to learn the latest version, and because I wanted to make use of the LazyVGrid, which doesn't exist in SwiftUI 1.

Because this was written using beta software, it is not on Testflight yet. I will make an effort to add it once iOS 14 is released. In the meantime, feel free to clone the repo and run it on an iPad running iOS 14 beta. The simulator with Xcode 12 beta has been unreliable, but the app runs great on my device.

gol-big-x-gen-15.PNG

Challenges faced, lessons learned

SwiftUI

Learning SwiftUI was a great, albeit frustrating at times, experience. It is definitely a paradigm shift, but one that isn't completely foreign to me having dabbled in React in the past. The most difficult part for me is knowing where exactly certain things are "allowed" in SwiftUI, and having to refactor what I was thinking would work to fit the realities of how components interact with state.

I believe that all of this will get easier with time and continued use. It's just a different way to think about the same thing, but in the end it's going to be a great technology to know and work with.