[raywenderlich.com]( Weekly Newsletter Issue 331 · Jul 21 2021 Hello {NAME} ð Wanting to get up to speed with TDD? We've got that book for you. We've also got fresh new conent on SceneKit 3D, Firebase, destructuring declarations in Kotlin, Flutter Code Generation, and animating keyboards and managing WindowInsets on Android! Books [Android Test-Driven Development by Tutorials](
[Android Test-Driven Development by Tutorials]( [Android Test-Driven Development by Tutorials]( Android & Kotlin [A book that teaches you to write sustainable, testable apps, as well as to apply testing strategies to legacy projects via Espresso and UI tests, code coverage and refactoring.]( [Check out the book â]( [Check out the book â]( Articles [SceneKit 3D Programming for iOS: Getting Started](
[SceneKit 3D Programming for iOS: Getting Started]( [Learn how to use SceneKit for 3D graphics programming by building an app modeling the solar system.]( iOS & Swift · 29 min  [bookmark](  [Read now â]( [Learn how to use SceneKit for 3D graphics programming by building an app modeling the solar system.]( [Read now â]( [Firebase Tutorial: Getting Started](
[Firebase Tutorial: Getting Started]( [Learn Firebase fundamentals including saving data, real-time sync, authentication, user status and offline support.]( iOS & Swift · 34 min  [bookmark](  [Read now â]( [Learn Firebase fundamentals including saving data, real-time sync, authentication, user status and offline support.]( [Read now â]( [Destructuring Declarations in Kotlin](
[Destructuring Declarations in Kotlin]( [Destructuring declarations is a Kotlin feature that gives you a tool for easily extracting data from a collection in a simple and clean way.]( Android & Kotlin · 24 min  [bookmark](  [Read now â]( [Destructuring declarations is a Kotlin feature that gives you a tool for easily extracting data from a collection in a simple and clean way.]( [Read now â]( [Flutter Code Generation: Getting Started](
[Flutter Code Generation: Getting Started]( [Learn how to use code generation to automatically create Dart models, eliminating tedious and repetitive tasks.]( Flutter · 26 min  [bookmark](  [Read now â]( [Learn how to use code generation to automatically create Dart models, eliminating tedious and repetitive tasks.]( [Read now â]( SPONSORED [Better, Faster Gigs for Software Developers]( [Gun.io acts like your personal freelancing and job seeking concierge (for free). They match you with vetted companies, pitch you for projects and set up your interviews, handle your contracts and billing, and get you paid consistentlyâno reminders or client invoices required. Plus, you get paid the rate you set for yourself, without the usual negotiation dance.]( Fun fact: Did you know you could reach over 100K+ subscribers with our newsletter, if you sponsored it? [Show me how!]( Videos (Pro) [WindowInsets Handling & Keyboard Animations](
[WindowInsets Handling & Keyboard Animations]( [Until now keyboards and Androids seemed to go in opposite directions. There was no API you could query to learn if the keyboard was open or to know its size. When the keyboard popped up, the screen and views would automatically rearrange themselves without a smooth transition. In this course learn how to interact with the keyboard via WindowInsets. Read its properties, know if itâs open, and create smooth, synchronous, animations.]( Android & Kotlin · 35 min  [bookmark](  [Watch now â]( [Until now keyboards and Androids seemed to go in opposite directions. There was no API you could query to learn if the keyboard was open or to know its size. When the keyboard popped up, the screen and views would automatically rearrange themselves without a smooth transition. In this course learn how to interact with the keyboard via WindowInsets. Read its properties, know if itâs open, and create smooth, synchronous, animations.]( [Watch now â]( [raywenderlich.com Subscription]( [raywenderlich.com]( To make sure you keep getting these emails, please add newsletter@raywenderlich.com to your address book or put us on your email allow list. Want out of the loop? [Unsubscribe](. Our postal address: 1882 Hawksbill Rd, McGaheysville, VA 22840 [facebook]([twitter]( {"mode":"full","isActive":false}