important » Dealing with bad tooling, architecture or boilerplate » Creates a disconnect between our work and the end result » Makes us inefficient, creates roadblocks in our way » Makes it easy for us to make simple mistakes
into many frameworks » + Improves modular architecture design » Each framework has its own test suite that can run fast » Enables use of playgrounds or small projects » - Longer launch times due to dylib loading » Leverage cocoapods-aminomo plugin or static libs » - Might be complicated to do in existing projects
/ Codable » - Lack of control over the generated implementation » Not supportive of non-default cases » - Not a generic solution for Boilerplate maintenace, solves only a small subset of common algorithms
works like a pre-processor » Used in over 30 000 apps » Adds annotation support to Swift language » Allows fine-grained control over the generation » Sourcery can generate any boilerplate code if you can describe the algorithm once
templating languages: Swift, Stencil, and EJS » Bundled with: Equality, Hashing, Codable, Lenses, Mocks, Decorators, LinuxMain, Diffing » Powers up projects like ObjectBox and SwiftMocky » Enables real-time programming of templates » Can be used to generate so much more...
whole application reacts to specific data changes but the backend isn't ready? » Easily load external data to the application » Sim ? loading from mac file would be preferred » Device? we need to load from a network server » We need real-time updates
Swift and Objective-C » FileWatcher.Local useful for observing local file changes e.g. observe file on the developer desktop. » FileWatcher.Remote can be used to observe files on the web, both Etag headers and Last-Modiﬁed-Date are supported.
» Always save your data at Data Provider level to file » if the user decides to send a bug report, send those files to the cloud » You can use file watcher provider to load it on another device and re-execute almost all code paths you have » Need more power? leverage unidirectional architecture/view state to implement time travel
core goals of architecture design » Investing time into improving your team developer experience can yield huge efficiency wins for your business and save the sanity of your developers » If a mythical 10x developer exists it would be the person that makes 10 team members more efficient