@kenryall@mastodon.world avatar

kenryall

@kenryall@mastodon.world

Engineer building apps and tools at Apple in Austin. Formerly Evernote, Skitch, Scannable, Nokia, CodeWarrior. I fly an M20E at KHYI.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

kenryall, to random
@kenryall@mastodon.world avatar

Last week of school and suddenly our kids discover how to get up and get ready on time.

christianselig, to random
@christianselig@mastodon.social avatar

SwiftUI noob question: I understand why my ViewModel is being initialized twice, but why is it not being deinitialized?

It's created, then a second later when appState.show is changed, the view is recomputed, and view, and its ViewModel, are created anew. Cool! But why is the old one not deinitialized? What's holding onto it?

Sample code: https://gist.github.com/christianselig/d88b1a4d1989b973689ae62d4691162f

kenryall,
@kenryall@mastodon.world avatar

@christianselig @tclementdev @alpennec Yes, remember that SwiftUI owns the View and you have no control over its life cycle. I find it best to keep Views light and thin. Create an observable model that you control and let the View bind to that. Design so that View creation has no effect outside the View. Don't write your own init. Code with the assumption that your View may be unpredictably created and tossed out for no apparent reason.

simonbs, to random
@simonbs@mastodon.social avatar

For the longest time I've been working on refactoring Runestone to support macOS but had to pause it to focus on other things. Now I'm resuming the work but have decided to start getting rid of Combine.

I started adopting Combine in Runestone early this year but never published a version that uses Combine. However, I no longer feel like publishing a version with Combine. It seems outdated already.

kenryall,
@kenryall@mastodon.world avatar

@simonbs Doing the same thing while I overhaul some code. If you can try replacing it with the new AsyncStream stuff.

paul, to random
@paul@tapbots.social avatar

Can someone help me decide which HomeKit Doorbell to get? All the choices are overwhelming.

kenryall,
@kenryall@mastodon.world avatar

@paul Mine works great with HomeKit secure video. Has survived three Austin summers in the direct sun with no problems.

kenryall, to random
@kenryall@mastodon.world avatar

Painters scheduled to start masking and doing prep work on our garage. I check the camera to see if they have started. I think this means they have.

film_girl, to random
@film_girl@mastodon.social avatar

FYI for the few remaining people who pay for Evernote: it’s time to love to Bear or Notion or OneNote (which is excellent and free) or even Apple Notes. https://news.ycombinator.com/item?id=36609641

kenryall,
@kenryall@mastodon.world avatar

@pilky @film_girl I loved working on Evernote for iOS, Skitch, and Scannable and wish I could have worked with @pilky longer. I joined during the VC fueled growth phase and left when new leaders sneered at usability and abandoned our native apps. Even after the initial shine wore off it was a successful business, but not successful enough to satisfy the investor's outsized expectations.

kenryall,
@kenryall@mastodon.world avatar

@film_girl @pilky Yes. I was hired to work on the new Skitch with @Keitho who told us exactly how to draw its distinctive arrow shapes. After it was internally parked we continued to work at it on the side and would occasionally invent reasons to push out updates.

kenryall, to random
@kenryall@mastodon.world avatar

I was trying out Xcode 15 when this bug appeared. It crawled away before I could file a radar.

collin, to random
@collin@ruby.social avatar

This might controversial. I don’t like or use view models in the way I’ve seen iOS or macOS apps use them. I’m pretty much entirely resistant to any object which mostly exists to shuttle data around between other things.

I’m also increasingly against implementing things a certain way because a “thought leader” wrote it down that way at some point in the past.

kenryall,
@kenryall@mastodon.world avatar

@pilky @pgor @collin

Yep - suppose your data model has a Date. Your ViewModel turns that into a String which might be a localized date or something like "Today" or "Yesterday". The View just gets the String and doesn't need to know about the rest of it.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • InstantRegret
  • mdbf
  • osvaldo12
  • magazineikmin
  • cubers
  • rosin
  • thenastyranch
  • Youngstown
  • tacticalgear
  • slotface
  • khanakhh
  • kavyap
  • DreamBathrooms
  • provamag3
  • Durango
  • everett
  • ethstaker
  • modclub
  • anitta
  • cisconetworking
  • tester
  • ngwrru68w68
  • GTA5RPClips
  • normalnudes
  • megavids
  • Leos
  • lostlight
  • All magazines