I finished a big rewrite/solidification tonight and after some initial on device testing it looks like the most robust iteration yet. A distillation of about 6 different approaches over the past few weeks. #prosedev
1055777
I'm quite pleased with the solution. In previous iterations trying to adhere to the DRY principle got the better of me. Now that I have a solution it's easier to see where I can refactor things into shared code paths.
1055779
Swift Playgrounds continues to be very useful, especially in conjunction with the Magic Keyboard. Some ergonomic flaws have become evident but for the first version of its kind, it's surprisingly light and functional.
1055780
Congratulations @shawn, you are now a member of #PnutClub 🥜 (2016+ posts)! Next: ☎️ at 2600 posts
1055786
1055799
@33MHz I always speak too soon, it betrays my excitement
1055860
1055925
@33MHz progress is underway again, which means I’m waiting for another let down in… lets say… two hours?
1056121
I've been confident in my solutions before but since eliminating some framework warnings last week my goal was to silence the rest. I've never accomplished that until tonight.

So naturally the pessimist in me is still watching the console... #prosedev
1055782
Confidence was short lived. I'm still confident this is the correct direction though. The good thing about state machines is it's easy to adjust each case individually
1055795
After a big high and another swooping low last night, I stepped back and realized the state machine was actually functioning as intended.

I opened a new project and started with a new layout model and it’s going better than expected. #prosedev
1056115
I solved the DRY problem from earlier by creating a custom Sequence type. It means I can use the calling scope, break/continue keywords, and tuple deconstruction. Plus, any iteration state is written once and hidden by the for-in loop.
1056120