POPULARITY
In this podcast episode, we have the pleasure to host Fred Porciúncula, a Google Developer Expert (GDE) known for his work with Kotlin Inject and his invaluable contributions to the Android development community. Fred offers his expertise on Dependency Injection (DI), Kotlin Multiplatform (KMP), and how they intersect.We kick off the conversation by discussing Dependency Injection (DI), its importance, and the options available to developers, including Dagger, Hilt, Anvil, Koin, and Kotlin-Inject. Fred explains the use and impact of DI in the Kotlin Multiplatform (KMP) world, considering Dagger's current lack of KMP support and debating whether one should use separate DI tools for Android apps and KMP components.Delving further into Kotlin-Inject, we explore its features, usage, and how it differentiates itself from other DI solutions. Topics discussed include its unique handling of Scopes, its support of constructor injection, and its utility in building dependency graphs. Furthermore, we examine the timeless debate of Dependency Injection versus Service Locator.Toward the end of the episode, Fred presents his thoughts on the advantages and disadvantages of exclusively using Kotlin-Inject throughout an application. We also tackle the concept of “Vanilla Injection” - refraining from using DI libraries at all.For further learning, we recommend resources like Fred's insightful article on transitioning from Dagger/Hilt to Kotlin-Inject, a Dagger issue discussing KSP support, and a Kotlin-Inject discussion on Anvil-like features. Links to these resources, among others, are provided below. Don't miss out on this engaging and informative episode with Fred Porciúncula!LinksKotlin Inject LibraryFred's Kotlin Inject ArticleTesting with Kotlin InjectKotlin Inject Scope IssuePulling code out of the platform classDI vs Service LocatorsDagger KSP SupportKotlin Inject Anvil Like FeaturesMaking Your Android Application Work on iOS (Touchlab mentioning interfaces over expect)Moko ResourcesKlima EngineeringFind Fred Online HereTwitter - @tfcporciunculaandroiddev.social/@fredKlima Engineering BlogDonn's Git CourseNeed to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.AndroidJobs.IOJob postings are FREE on AndroidJobs.IO
An airhacks.fm conversation with Ondrej Mihályi about: starting programming with Logo, Pascal, C, Pentium 386, Scratch, minecraft, delphi and Java, pointers and destructors, participating in programming competitions, learning programming with Java, GWT, JSF and Primefaces over GWT, Eclipse, NetBeans, Java EE 5 introduced Dependency Injection (DI), Nitra is the oldest City in Slovakia, "Enterprise needs to be complicated", code generation with xdoclet in J2EE, simplifications with Java EE 5 in 2006, starting at Payara, running a JUG in Prague, Sun Grid Engine, serverless WARs, ideas for productive Clouds 2.0, serverless Java EE applications, early clouds with Google App Engine, Docker and Kubernetes for application packaging, making cloud services injectable, AWS lambdas are distributed commands, improving developer experience in the clouds with DI instead of singletons, Payara Source To Image (S2I) for server configuration in the clouds, separating the immutable servers from application logic with docker and clouds, cloud vendors are evaluating microprofile, repeatable and reproducible builds with Java EE in private clouds, Java EE deployment model became accidentally "cloud ready", with ThinWARs there is nothing to (security) scan, with ThinWARs there is no conceptual difference to lambda functions, cloud vendors participation in Jakarta EE, Payara is evaluating GraalVM and native compilation. Ondro's blog and @OndroMih / twitter.
Go check out JS Remote Conf! 02:14 - Pascal Precht Introduction Twitter GitHub Blog 03:03 - Getting Involved with the Angular 2 Documentation thoughtram Blog 05:10 - Deciding Where to Contribute 06:16 - Contributors and Contributions Dependency Injection (DI) 15:41 - APIs 18:02 - Reactions to Trainings 20:15 - ngUpgrade @teropa (Tero Parviainen) 25:34 - View Caching 26:53 - “Chapters” (Documentation Format) angular.io/docs/ Developer Guides 29:26 - Giving the Broad Overview of Angular 2 32:02 - Approaching Documentation 34:18 - Contributing to the Documentation Project wardb@ideablade.com Picks Heart of a Dog (Ward) Chrome Dev Summit codelabs (Aaron) Toastmasters (Chuck) Nexus 5X (Pascal) @robwormald (Pascal) thoughtram Blog (Ward)
Go check out JS Remote Conf! 02:14 - Pascal Precht Introduction Twitter GitHub Blog 03:03 - Getting Involved with the Angular 2 Documentation thoughtram Blog 05:10 - Deciding Where to Contribute 06:16 - Contributors and Contributions Dependency Injection (DI) 15:41 - APIs 18:02 - Reactions to Trainings 20:15 - ngUpgrade @teropa (Tero Parviainen) 25:34 - View Caching 26:53 - “Chapters” (Documentation Format) angular.io/docs/ Developer Guides 29:26 - Giving the Broad Overview of Angular 2 32:02 - Approaching Documentation 34:18 - Contributing to the Documentation Project wardb@ideablade.com Picks Heart of a Dog (Ward) Chrome Dev Summit codelabs (Aaron) Toastmasters (Chuck) Nexus 5X (Pascal) @robwormald (Pascal) thoughtram Blog (Ward)
Go check out JS Remote Conf! 02:14 - Pascal Precht Introduction Twitter GitHub Blog 03:03 - Getting Involved with the Angular 2 Documentation thoughtram Blog 05:10 - Deciding Where to Contribute 06:16 - Contributors and Contributions Dependency Injection (DI) 15:41 - APIs 18:02 - Reactions to Trainings 20:15 - ngUpgrade @teropa (Tero Parviainen) 25:34 - View Caching 26:53 - “Chapters” (Documentation Format) angular.io/docs/ Developer Guides 29:26 - Giving the Broad Overview of Angular 2 32:02 - Approaching Documentation 34:18 - Contributing to the Documentation Project wardb@ideablade.com Picks Heart of a Dog (Ward) Chrome Dev Summit codelabs (Aaron) Toastmasters (Chuck) Nexus 5X (Pascal) @robwormald (Pascal) thoughtram Blog (Ward)
02:07 - Victor Savkin Introduction Twitter GitHub Blog 02:30 - Dependency Injection (DI) “Inject By Type” Other Project Use di.js 06:54 - How Angular Uses Dependency Injection Angular 1 vs Angular 2 Annotations Decorating Classes to Become Injectables Example Injectable Class Mechanisms in Angular 1 13:06 - Lazy Loading 16:14 - Testing 18:02 - Change Detection Victor Savkin: Change Detection in Angular 2 [YouTube] Change Detection Reinvented by Victor Savkin @ ng-conf 2015 24:33 - Components & Immutability immutable-js 28:08 - Scope zone.js [YouTube] Zones by Brian Ford @ ng-conf 2014 angular/zone.js 30:28 - Binding Action Phase/Control Phase Production Mode/Dev Mode Victor Savkin: Two Phases of Angular 2 Applications Picks My Story by Elizabeth Smart (Aaron) Shawarma (Joe) Home (Katya) Mulan (Katya) How to Win Friends & Influence People by Dale Carnegie (Chuck) WorkFlowy (Chuck) Habit Stacking: 97 Small Life Changes That Take Five Minutes or Less by S.J. Scott (Chuck) Mini Habits: Smaller Habits, Bigger Results by Stephen Guise (Chuck) Android: Netrunner Card Game (Victor) Mechanical Keyboards (Victor)
02:07 - Victor Savkin Introduction Twitter GitHub Blog 02:30 - Dependency Injection (DI) “Inject By Type” Other Project Use di.js 06:54 - How Angular Uses Dependency Injection Angular 1 vs Angular 2 Annotations Decorating Classes to Become Injectables Example Injectable Class Mechanisms in Angular 1 13:06 - Lazy Loading 16:14 - Testing 18:02 - Change Detection Victor Savkin: Change Detection in Angular 2 [YouTube] Change Detection Reinvented by Victor Savkin @ ng-conf 2015 24:33 - Components & Immutability immutable-js 28:08 - Scope zone.js [YouTube] Zones by Brian Ford @ ng-conf 2014 angular/zone.js 30:28 - Binding Action Phase/Control Phase Production Mode/Dev Mode Victor Savkin: Two Phases of Angular 2 Applications Picks My Story by Elizabeth Smart (Aaron) Shawarma (Joe) Home (Katya) Mulan (Katya) How to Win Friends & Influence People by Dale Carnegie (Chuck) WorkFlowy (Chuck) Habit Stacking: 97 Small Life Changes That Take Five Minutes or Less by S.J. Scott (Chuck) Mini Habits: Smaller Habits, Bigger Results by Stephen Guise (Chuck) Android: Netrunner Card Game (Victor) Mechanical Keyboards (Victor)
02:07 - Victor Savkin Introduction Twitter GitHub Blog 02:30 - Dependency Injection (DI) “Inject By Type” Other Project Use di.js 06:54 - How Angular Uses Dependency Injection Angular 1 vs Angular 2 Annotations Decorating Classes to Become Injectables Example Injectable Class Mechanisms in Angular 1 13:06 - Lazy Loading 16:14 - Testing 18:02 - Change Detection Victor Savkin: Change Detection in Angular 2 [YouTube] Change Detection Reinvented by Victor Savkin @ ng-conf 2015 24:33 - Components & Immutability immutable-js 28:08 - Scope zone.js [YouTube] Zones by Brian Ford @ ng-conf 2014 angular/zone.js 30:28 - Binding Action Phase/Control Phase Production Mode/Dev Mode Victor Savkin: Two Phases of Angular 2 Applications Picks My Story by Elizabeth Smart (Aaron) Shawarma (Joe) Home (Katya) Mulan (Katya) How to Win Friends & Influence People by Dale Carnegie (Chuck) WorkFlowy (Chuck) Habit Stacking: 97 Small Life Changes That Take Five Minutes or Less by S.J. Scott (Chuck) Mini Habits: Smaller Habits, Bigger Results by Stephen Guise (Chuck) Android: Netrunner Card Game (Victor) Mechanical Keyboards (Victor)
Testing, Testing, 1.2.3! (All about Unit Testing, And Dependency Injection) For those Unit Testers out there (and those who want to do more unit tests), this podcast is for you! We cover JUnit in general, and explain how to shoe-in unit tests in current (and legacy code). We talked about Dependency Injection (and the Concern of Creation), and Mocking (what it is, and how is it used). In all, if you ever wondered why creating unit tests in your current code is hard, or why are people talking about Dependency Injection (DI), come in, and listen! Questions, feedback or comments! comments@javapubhouse.com Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss) ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329) Java 7 Recipes book! (http://www.amazon.com/Java-7-Recipes-Problem-Solution-Approach/dp/1430240563)