Skip to main content

· 5 min read
Emmanuel Muturia™
MamboBryan
SheeWrites

Hi Droids and Droidettes! How are you? As the DroidCon Kenya 2023 event approaches, we are proud to announce the launch of the last Newsletter of the year! Yes, you heard us correctly. This is the final installment of the Kotlin Kenya Monthly Newsletters for the 2023 season and how best to do it than to have our fan favorite speakers lead the sessions? 🥺 Wanna find out more? 😮 Then grab a popcorn, take a mug or more of coffee like the Techie you are, and brace yourself for this is Newsletter #14, The October Edition:

The October Meetup

Android254, in liaison with Kotlin Kenya, hosted the October Meetup which was spearheaded by Jacquiline Gitau, Abdulfatah Mohammed, and Jane Waitara. They each gave their presentations on the following topics that demonstrated the diversity of Android App Development (AAD):

The Art of Testing Composable Layouts

The Droidette kicked off by introducing the audience to the different kinds of Testing, namely: Unit Tesing, Integration Testing, and UI Testing. She added onto that by going over Semantics in Compose and how they aid in testing Compose elements. She supplemented that by discussing API Tetsing, which incorporated:

  • Finders
  • Assertions
  • Actions
  • Matchers

Jacquiline finalised her session by showcasing a demo project which implemented the libraries used in testing Compose elements...

Why I Have Come To Love Feature Modularization

Following that, we had The Modularizer taking over and explaining the motivations behind Modularization. They were but not limited to:

  • Presence of many moving parts in most fetaure packed Android apps
  • Rapid replacement of libraries...
  • Difficulty in connecting knowledge
  • Adherance to good architectural practices

He supported his argument by mentioning how Modularization results in freedom to work on more features, increased productivity, easier onboarding, and opportunities for experimentation. He utilised his personal project to demonstrate the magic behind Modularization by Feature. Abdulfatah concluded by insisting that for a Modularization driven approach, it was best to always prioritise the UI over Architecture when structuring the Android app...

Composing with Accessibility in Mind

To mark the day complete, we had Mumbi Codes enlighten the attendees regarding the prioritisation of Accessibility when working on UI/UX. She began by acknowledging WHO's statistics which stated that between 15% to 20% of the world's population is categorised as people living with disabilities. She also cited some types of diabetes to give context on their need for specialised adjustments as far as Accessibility in Android was concerned. She listed the following as solutions to improving Accessibility in Android apps through Jetpack Compose:

  • Visual Elements
  • Headings
  • Semantics
  • Click Labels
  • Touch Target Size
  • Toggleable Selections
  • Text

Jane signed off the session by modelling a practical approach to teach the above concepts by use of a Jetpack Compose project...

DroidCon Kenya

Here's a rundown of everything you need to know about DroidCon Kenya with respect to the upcoming event:

DroidCon Kenya 2023 Tickets

Alright, if you have not yet signed up for DroidCon Kenya 2023 then what are you doing? Don't you want to be part of something that catapaults your understanding of Android? Aren't you afraid that if you wait too long then the discounted tickets will be gone and you will have to sell your house or something to afford the regular tickets? Don't worry, just click me and this can be our little secret 😉...

DroidCon Kenya X Spaces

Over the last few weeks, DroidCon Kenya has been hosting its weekly X Spaces hosted by Emmanuel Muturia™ whose sole purpose is to fill in the gaps you may have on DroidCon Kenya and its commitment towards delivering the best DroidCon events in Africa. Want to catch up with our latest conversations? The just click me to get access to more than a handful of quality banter...

The DroidCon Kenya Android App (Kotlin)

Are you an Android (Kotlin) developer looking to flex your Open Source Contribution muscles? Want to show off your Problem Solving skills by contributing to the community? Worry not for the DroidCon Kenya team has released the latest issues for the DroidConKE2023 Android app for you to pick up and solve. In fact, click me to head over to the GitHub repository and squash those bugs like the wizard you are...

Call For Speakers (Monthly Meetup)

Interested in becoming a speaker for the upcoming monthly meetups? For real for real? Then stop what you are doing and head over here to make your aspiration a reality!

Dear Reader...

It is at this point, our dear reader, that we say thank you. We are deeply grateful for your support and engagement. As we mark the final Newsletter of the year, we usher you to our DroidCon Kenya 2023 event from the 8th to 10th of November, but you knew that, didn't you? 😏 With that said, don't miss us too much for we will be back before you know it. See you on the 8th 👌

TUTORIAL
Detect Screenshots in Android 14

Got any other resources that you want to have featured? That's alright, cause all you have to do is click me and that's it. Congratulate yourself for being a winner!

You can also suggest any article, library, video or podcast for upcoming newsletters. Click here to submit!

Enjoyed reading this episode of our Kotlin Newsletter? Worry not, for we will be back soon with another one so stick around, will ya? Until next time (or next year, perhaps), happy coding & HAVE A NICE KOTLIN!


· 4 min read
Emmanuel Muturia™
MamboBryan
SheeWrites

Hey there Droids and Droidettes! We know you missed us and we did too 🥺 We hope that you are excited for this episode as we have quite the comeback. From Machine Learning to Cyber Security, our speakers really outdid themselves by showing us just how versatile Android is. Wanna find out more? Grab a popcorn, take a coffee like the Techie you are, and brace yourself for this is Newsletter 13, The September Edition:

September Meetup

Android254, in liaison with Kotlin Kenya, hosted the September Meetup which featured a new flavour of speakers: Musyoka Muasya, Oscar Karuga, and Emmanuel Muturia®. They each gave their presentations on the following topics that demonstrated the diversity of Android App Development (AAD):

Work in OfflineFirst Apps - Sync Data Sources with Work Manager

Musyoka Muasya, the best Mathematical Developer in Kenya, gave a talk on Work Manager. He started off by reiterating on the functions and importance of Work Manager in the Android App Development workflow. Musyoka described the application of Work Manager in an offline-first environment through the use of a Closed Loop Control System which consisted of:

  • Input
  • Controller
  • Process
  • Output
  • Feedback

Muasya supplemented his demonstration with a Test and Optimization Case that incorporated Mathematical functions. Do you think you are capable of mastering the Mathematics behind Work Manager? Well then, here is Musyoka's presentation for you to knock yourself out: Click Me

Enhancing Android Apps with Machine Learning

Following that, Oscar Karuga took the stage and introduced the audience to Machine Learning in Android. The son of Jupyter gave an elaborate walkthrough on the use of accurate but comprehensive data sets to train a customised AI model. He concluded by showcasing his Android application that wowed the audience by accurately differentiating between various images based on the model that he had trained...

Unlocking Passkeys in Android (feat Credentials Manager)

Wrapping up the presentation set was the Android Security maverick himself Emmanuel Muturia®, who gave a stellar presentation on Passkeys in Android using Credential Manager. Emmanuel began by educating the audience on Passkeys, and why they should be considered a necessary asset in modern Authentication. He then went over the high-level implementation of Passkeys in Android using the Credential Manager API as well as things to consider when doing so. To spice up his presentation, Emmanuel posed three questions to the audience and rewarded the winners so don't say we didn't warn you against missing his talks... 😌

DroidCon Kenya 2023

Alright, if you have not yet signed up for DroidCon Kenya 2023 then what are you doing? Don't you want to be part of something that catapaults your understanding of Android? Aren't you afraid that if you wait too long then the discounted tickets will be gone and you will have to sell your house or something to afford the regular tickets? Don't worry, just click me and this can be our little secret...

NB: Hey, psst! Are you a little low on cash and would like to be sponsored for the DroidCon Kenya 2023 event? Then click me to sign up for a sponsorship courtesy of Juma Allan...

Oh and last but not least, be on the lookout for the announcement of tetsing our open source DRoidConKE2023 app coming soon...

Call For Speakers (Monthly Meetup)

Interested in becoming a speaker for the upcoming monthly meetups? For real for real? Then stop what you are doing and head over here to make your aspiration a reality!

Dear Reader...

If you have made it this far, then please give yourself a high five! Seriously though, we deeply appreciate your support in growing the Android community in Kenya. You guys are the reason we are tightly knit and we definitely look forward to nothing but better in everything we do...

REPOSITORIES
BridgingTheGap
BioFinger
BeeTablesCompose
LIBRARIES
Floaty
COURSES
Building a Todo app using Firebase Cloud Firestore

Got any other resources that you want to have featured? That's alright, cause all you have to do is click me. That's it. Congratulate yourself for being a winner!

You can also suggest any article, library, video or podcast for upcoming newsletters. Click here to submit!

Enjoyed reading this episode of our Kotlin Newsletter? Worry not, for we will be back soon with another one so stick around, will ya? Until next time, happy coding & HAVE A NICE KOTLIN!


· 6 min read
MamboBryan
SheeWrites
Emmanuel Muturia™

Hey there Droids and Droidettes! How are you? Hopefully you are able to read this newsletter as we hear some of our brothers and sisters are suffering Web Dev, sorry DDoS issues. Nevertheless, Episode 12 is finally here and we cannot wait to share with you the highlights of July as recorded:

July Meetup

Android254, in liaison with Kotlin Kenya, organised the July Meetup which hosted the three legends namely: Somet Kipchilat, Peter Chege, and our esteemed Droidette Michelle Wainaina. They each gave quite the talks that covered the latest hacks (pun intended, iykyk) in developing for a modern era. Here is a rundown of their talks in order of appearance:

Building for The Next Billion Users

Somet, Africa's Okayest Developer, kicked off the meetup by introducing the audience to the concept of building products for the next billion users. He provided the case study of Native Languages as an example of factors that largely contribute to the success of a product (app) in a large sacle market. Somet supported his point by mentioning Android 13 Go as a product that prioritizes users with less capable devices with respect to system resources and specs. He summarised his session by reminding the audience that their products should prioritize:

  • Accessibility and Localization
  • Affordability and Usability
  • Resilience and Low Bandwidth Connections
  • Multilingual Support

Somet concluded by asking the audience to think about 'Glocalization', a term denoting the merging of Global and Local markets for your products, MPESA being an example...

SealedX

The next talk was given by the man himself (Peter Chege) and was about the SealedX library in Kotlin. He introduced it by mentioning the agony that comes with repeatedly writing Sealed Interfaces in your Compose project such as those used to define UI States. Peter highlighted that besides using the Kotlin Symbol Processor (KSP), the SealedX library also used two annotations to automatically generate Sealed Classes/Interfaces: @ExtensiveSealed (For code that is meant to be generated multiple times) and @ExtensiveModel (To wrap around your Data Classes). His last activity (puns for days) was showcasing a demo on the same using a custom project that consumed REST APIs...

Firebase Firestore: A Coroutines Story

The July Meetup speaker session was remarkably concluded by the legendary Droidette (Michelle Wainaina) who talked about the introduction of Coroutines in Cloud Firestore. She kicked off by recapping Coroutines and how they affect app performance in Android (Kotlin obviously, J*va people please click off) before announcing their introduction in Firebase's Cloud Firestore. She also used a demo project to not only present the use of Coroutines in Cloud Firestore but to also teach the audience why it was important to first include a Coroutine Scope before anything else. As a bonus, Michelle used a Chat App use case to demonstrate how the choice between Cloud Firestore and Realtime DB in Firebase among other products was just a matter of tradeoffs...

Google I/O Extended (Pwani Edition -> Android)

Hayawi hayawi huwa! This segment takes us all the way to the Coast where the Google I/O Extended: Pwani Edition event was held at the Aga Khan Academy. The Android community was well represented as it starred a hot line of speakers:

Android Keynote

The Android Keynote was given by Annunziata Kinya, who eloquently went through the latest features and developments in Android, the most exciting one being the stable release of Android Studio: Giraffe. Annunziata also detailed the release of various Jetpack Compose libraries and features such as Compose for TV (Now in Alpha), Support for Compose by other libraries such as Glide and the Jetpack Glance library which allows you to develop highly customizable yet elegant widgets optimized for Android phones, tablets and foladable homescreens using Jetpack Compose...

Building A Data Layer That Fits Your Overall App Architecture

The first Android session was spearheaded by our dear Droidette Co-Captain and WTM Ambassador, Jacquiline Gitau. She took the audience through the steps and factors to consider when building a data layer that was congruent with the best practices of Clean Architecture. Her recommendations included both a Local and Network Data Source that were synched to allow for a single source of truth, mapping Internal Models to External Models, and the use of Mutex which as she explained was a Kotlin-first approach to allow for synchronized sharing of resources within your application...

What's New in Kotlin for Android

The final talk in the Android segment was given by none other than the Chief Dish Washer, Mambo Bryan. He gave a session that introduced the latest exciting features and developments in Kotlin, starting with the Kotlin 2.0 compiler which was said to reduce build time by half! He also mentioned the Kotlin DSL for Gradle which oversaw the introduction of Kotlin as the default language for Gradle in new projects leading to precise code hinting, realtime syntax errors and which has a rich and available documentation for reference...

DroidCon Kenya 2023

Alright, if you have not yet signed up for DroidCon Kenya 2023 then what are you doing? Don't you want to be part of something that catapaults your understanding of Android? Aren't you afraid that if you wait too long then the Early Bird Tickets will be gone and you will not have caught the worm? Don't worry, just Click Me and this can be our little secret...

Call For Speakers (Monthly Meetup)

Interested in becoming a speaker for the upcoming monthly meetups? For real for real? Then stop what you are doing and head over here to make your aspiration a reality!

ARTICLES
Getting more concise with Kotlin Generics
Experiment #1 (Genesis)
Experiment #2 (Fire Away)
Experiment #3 (Service Denied)
VIDEOS
Pinterest UI
Advanced Kotlin: Advanced Functions
APPS
Ewave
REPOSITORIES
SafePass
KomposeCountryCodePicker
BeeTablesCompose
COURSES
Mastering MVVM Architecture in Android Development using Kotlin

Got any other resources that you want to have featured? That's alright, cause all you have to do is click me. That's it. Congratulate yourself for being a winner!

You can also suggest any article, library, video or podcast for upcoming newsletters. Click here to submit!

Enjoyed reading this episode of our Kotlin Newsletter? Worry not, for we will be back soon with another one so stick around, will ya? Until next time, happy coding & HAVE A NICE KOTLIN!


· 4 min read
Emmanuel Muturia™
SheeWrites

Hey there Droids and Droidettes! I don't know about you but I could sure use a hot cup of coffee cause this weather...Anyway, whether you're reading this from Amsterdam or not, Newsletter 11 is already here!!!

June Meetup

Android254 & Kotlin Kenya hosted the monthly Meetup (June Edition) which was spearheaded by three speakers: Kenn Jr, Dennis Githuku and Kenneth Mathari. They each gave amazing talks on three insightful concepts in modern Android Development:

Notifications

Kenn Jr kicked off by introducing the audience to Notifications in Android. He differentiated Push and Local Notifications and engaged the audience by asking them to give examples of modern Android applications that use Notifications and how it impacts their users. Kenn emphasized the need for Android Developers to implement Notifications to result in the following:

  • Re-Engage their users.
  • Have higher retention rates...
  • Facilitate direct marketing to their users...
  • Understand their users' behaviours...
  • Branding and Visibility...

Kenn concluded by demonstrating the impact of Notifications through a case study on Duolingo based on his personal use of the app.

GraphQL

The Sherehe (Party) Master followed by orienting the audience to GraphQL, the alleged replacement for REST APIs. Kenneth's presentation largely involved a demo on how to implement GraphQL in an Android project. He also supported his demo by advising the audience to check out GraphQL's official documentation and the Apollo Developer Hub to learn more about GraphQL. Kenneth concluded by outlining the main benefit of GraphQL i.e The ability to only get the resources you want.

Side Effects

Composers were in for a treat as the last session had Dennis Githuku talk about Side Effects in Jetpack Compose. He started off by debunking the myth that portrays Side Effects as the toughest concept to grasp in Jetpack Compose and how most Android Devs are using them without even knowing! He went on to give a Description-Demo sort of presentation on the following Side Effects:

  • LaunchedEffect
  • rememberCoroutineScope
  • rememberUpdatedState
  • DisposableEffect
  • derivedStateOf
  • SideEffect (Composable)
  • produceState
  • snapshotFlow

Dennis wrapped up his session by assuring the audience that contrary to how intimidating Side Effects appear, they really depend on an individual developer's use case and more often than not, using Side Effects in Jetpack Compose is unnecessary.

Kotlin Challenge

As per the usual we have this month's challenge for those who'd like to test their mettle in the Kotlin language.

info

This month we're giving away two Jetbrains licenses for the first two people to solve this month's challenge

import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertTrue

fun main() {
val attendee = Attendee(sessions = listOf("Android","Kotlin"))

assertEquals(
true, // expected
attendee is Collection<String> // actual
)

assertEquals(
true, // expected
attendee.contains("Android") // actual
)

println("Everything Passed!!!")
}

/**
* Without changing anything above
* Make the two test cases pass.
* - you should only use class delegations
* - you should NOT create any function inside the Attendee class
*/

data class Attendee(val name: String = "a", val sessions: List<String>)

tip

You can start by making sure the Attendee class extends the Collection interface 😉 😉

DroidCon Kenya 2023

We were also reminded the meetup's attendees to RSVP for the DroidCon Kenya event that is set to run from 8th November to 10th November. We were urged not to delay as the Early Bird tickets are limited, after which any interested attendees may probably need to find a sponsor to finance their tickets. Have you RSVPd for the event? No? Are you even serious? Anyway, get your Early Bird tickets here and share with your friends cause this year we be happening: Click Me

Call For Speakers (Monthly Meetup)

Interested in becoming a speaker for the upcoming monthly meetups? For real for real? Then stop what you are doing and head over here to make your aspiration a reality!

ARTICLES
Reactive Programming with Kotlin
Accessibility in Android (Jetpack Compose)
Let's Create A Notification Reminder App in Jetpack Compose)
VIDEOS
Harun Wangereka (Android Developers Feature)
Full Guide to ViewPager in Jetpack Compose: Android Studio, Kotlin
REPOSITORIES
Project Tracking

Got any other resources that you want to have featured? That's alright, cause all you have to do is click me. That's it. Congratulate yourself for being a winner!

Enjoyed reading this episode of our Kotlin Newsletter? Worry not, for we will be back soon with another one so stick around, will ya? Until next time, happy coding & HAVE A NICE KOTLIN!


· 5 min read
MamboBryan
SheeWrites

Hey there Droids and Droidettes! You've heard it all, yes? AI, Bard, at this rate we might just be starring in another episode of Love, Death and Robots (Well, especially the Love bit after Jack Siro's confession 😏)

Google I/O Recap

The Google I/O Recap featured two speakers: Theophillus Kibet and Mambo Bryan. They gave presentations detailing the fresh and new updates made in Android:

Android Highlights

Theo started off by highlighting the well-recieved Android 14 (Beta Version) which boasts susbstantial improvements, the main one being enhanced Privacy and Security. This was backed up by the Credential Manager which is set to utilise passkeys and passwords for a more security-driven sign in experience. Theo also talked about the latest updates and improvements in Jetpack Compose:

  • Text improvements, mainly the native inclusion of Emojis 😜
  • Flow Layout improvements in both the Row and Column dimensions.
  • Tooling enhancements which has teased the release of several tools, the most notable one being Studio Bot (Take that ChatGPT!)
  • Introduction of Date and Time Pickers in Material Compose as well as Animations in Predictive Navigation.

Theo concluded by outlining and illustrating the newly released features of Google Play including the Update Prompt, Data Deletion (Privacy and Security), Ad Campaigns (Marketing), Inactive Users and Translations (Insights).

Kotlin Updates

Mambo Bryan lit up Kotlin developers' hearts by announcing the new approach taken to build the latest Kotlin Compiler involving the full adoption of Kotlin as opposed to the 'J' word. He emphasized how Kotlin 2.0 is projected to reduce build and compilation times, thus reiterating Kotlin's agenda of having fun while coding. Mambo discussed the new Kotlin DSL features: Precise code hinting, optional version catalogs integration, more documentation and probably the most important one, real time error handling without need to sync the project (Groovy had it coming). Mambo finalised by announcing the importance of using KSP in future code generation as opposed to KAPT.

Other Business

As if the talks weren't enough, the speakers joined by Tamre Frank, participated in a AMA (Ask Me Anything) which was moderated by Harun Wangereka who posed them juicy questions from Slido.com to which they heartily answered. BY THE WAY, the call for speakers for the monthly meetups is still on. Interested in giving a talk? Then feel free to submit an abstract of your preferred topic here

May 2023 Kotlin Challenge

As per the usual we have this month's challenge for those who'd like to test their mettle in the Kotlin language.

info

This month we're giving away two Jetbrains licenses for the first two people to solve this month's challenge

import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertTrue

class PrintingScope(val separator: String = "|")

context(PrintingScope)
fun <K, V> Map<K,V>.customPrint(): String = this.map { (k,v) -> "$k:$v" }.joinToString("$separator")

fun main() {
val scope = PrintingScope()
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
assertEquals(
"a:1|b:2|c:3", // expected
evaluate(scope, map) // actual
)
println("Everything Passed!!!")
}

/**
* Without changing anything above
* Write an evaluate function that makes the test case pass
*/

tip

You can start by creating the evaluate function

Droidcon Kenya Updates

The largest android developer event in Africa has finally announced it's dates. This year droidconke is happening from the 8th to 10th November 2023. Ensure you clear your calendars and also look forward for the Call For Speakers (CFS). Follow DroidconKE here for more future updates. If you'd like to sponsor 💸 💸 this event head over to this page.

KotlinConf'23 Videos

KotlinConf'23 happened a few months ago and we got a chance to listen to Kotlin updates along with very nice technical sessions. Incase you didn't have the opportunity to livestream it, the recorded sessions have been uploaded on YouTube and you can watch them. Click here for more.

Saving The Best For Last 🎉

And this last one is truly the best news. We'd like to congratulate 🎉 one of our community members Beatrice Kinya on becoming an Android GDE (Google Developer Expert) 🤩. We're looking forward to more amazing contributions... 🎉 You can also join us in congratulating her here. 🥳🥳🥳

ARTICLES
An In-depth overview of Android's Recyclerview - with Example
Animating Content Size in Compose
Firebase in Jetpack Compose (Authentication & Adding Data To Cloud Firestore)
Android Development with Jetpack Compose: The Future of Android UI Development
Custom Theming in Jetpack Compose
Exploring Kotlin's Abstract Classes and Specialized Class Types
HTTP Requests in Android (Behind The Scenes)
REPOSITORIES
ML Kit Sample
Gamepedia
CookIt
Simple TODO List Ktor Backend
OnBoarding
VIDEOS
Migrating to Kotlin Scripts and Version Catalog
Error Handling and Unit Testing: MVI Compose Weather App
Apps
Palette Lab

You can also suggest any article, library, video or podcast for upcoming newsletters. Click here to submit!

That's it folks till next time, happy coding & HAVE A NICE KOTLIN!


· 4 min read
MamboBryan
SheeWrites

Hello 👋 there droids and welcome back to another newsletter edition for March 2023. We hope you enjoy it and won't speed through it like the CX-5 😉 😉

Monthly Meetup

Starting us off is our monthly meetup. Given that international women's day came around not that long ago, it was an all-ladies affair with just female speakers taking the stage.

Testing Our Endpoints: Ktor

The first session led by Rachel Nafula shed light on the importance of Ktor for any developer. We learned a lot from how it simply connects the client to the server by making a request and ensuring an appropriate response is returned. In the same breath, we were reminded the importance of testing our code before pushing to production, to ultimately prevent inevitable disaster. It was also brought to our attention that there two types of tests ie: manual & automated. For demonstration purposes, she used Insomnia but postman(and the like) is also viable.

Compose Modifier

The second session by Beatrice Kinya hailed Compose Modifiers from the word go. As the great migration from the traditional view system to compose is ongoing it was refreshing to understand a little bit more about Compose Modifier. We got to learn a few concepts we can use to change the appearance and behavior of composables.ie the order of precedence and constraints. We then proceeded into the types of Modifiers (add content). Lastly, we learnt of the three phases of compose which are; Composition, Layout and Drawings!

Let's Animate In Compose

Last but not least the final session by Jacqui Gitau was all about animations. It is imperative to mention how animations bring our apps to life and the little interactions contribute to a great user experience. In the final session, we learned how to animate, why we should animate and the overall benefits of adding animations to our apps. From sliding in to fading out, we enjoyed how simple she made animations feel.

We enjoyed this month's meetup and thank all the speakers and attendees. We're looking forward to the next meetup!

Kotlin Quiz

After a few jokes and not-so-few laughs the stage was set for a brief Kotlin quiz to warm up the afternoon. Droids tried to attempt the quizes one after the other with no winner was in sight, until Victor Kabata and Jane Waitara emerged victorious to take the win home.

If you'd also want to attempt the two question shared during the meetup, here they are 👍.

import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertTrue

/**
* Without changing anything in the main function.
* Ensure all the test cases pass
*/

fun main() {

assertEquals(
"Welcome to Android254!", // expected
sayHello { "Android254" } // actual
)
assertEquals(
listOf(2,4,7), // expected
listOf(1,1,2,3,3,3,4,5,5,6,6,6,7).getNonRepeated() // actual
)

println("Everything Passed!")

}
tip

You can start by creating the sayHello & getNonRepeated function

KotlinConf'23

The official conference devoted to the Kotlin Programming Language is finally here. From April 12th to 14th join the Livestream and benefit from the array of topic to boost your Koltin skills.

We can't mention KotlinConf without celebrating our two community members who'd be attending the conference in person. Brian Mbigo was one of the winners of the Kotlin Multiplatform contest with his amazing VisioZoezi app and Harun Wangereka with an excellent talk Transforming Farmer's Lives Using Android In Kenya on April 13th from 6:15 pm to 7:00 pm EAT.

We'll also have a KotlinConf 2023 Global - Nairobi Edition to learn more about what went down at KotlinConf'23 and share your opinions... don't forget to RSVP and watch out for the upcoming CFS...

KotlinBits

Sometimes all you need is a different perspective when learning the Kotlin language. KotlinBits aims at trying to explain every Kotlin concept in small bits and sizes. Watch out for even more content from their website and YouTube channel.

ARTICLES
Introduction To Kotlin Programming by Dbraine.
Custom Compose Layouts by Beatrice Kinya.
REPOSITORIES
NFT-App by Stephen Muindi
Mars Rover Photos by Victor Kabata
Fibonacci by Jane Waitara
Harry Porter API by Ken Starry
VIDEOS
Mastering the Fundamentals of Android App Development
Getting Started as an Android Developer: Tips and Tricks for Success
Becoming an Android Developer
Foreground Location : MVI Compose Weather App Pt.1
Apps
CarRental by Chienja Dev
Mingle - Find Singles by Felix Kariuki
MealTime by Joel Kanyi

You can also suggest any article, library, video or podcast for upcoming newsletters. Click here to submit!

That's it folks till next time, happy coding.

info

We'd love to hear your feedback. Click here to submit any feedback.


· 3 min read
MamboBryan
SheeWrites

Hola👋 gritty engineers! As we've come to start of another month, we would like to bring you all up to speed with things that have been happening around our amazing android community.

Starting us off is…

1. Compose Camp Things.

After many years of imperative UI using Java and XML to render views on a screen, compose came to make it easier and simpler. Its not only declarative, but also saves time while creating the said components.

In February KotlinKenya, Android254 and WomenTechMakers Nairobi sought to focus more on UI frameworks by organizing interactive and helpful weekend sessions on compose. These sessions got the audience acquinted with common way of using compose and also the Kotlin language.

tip

There is an ongoing challenge for the compose camp session. Click here to find out more!

2. DroidConKE Android App.

As we eagerly anticipate this year’s Droidcon, nothing gets us more fired up as collaboratively developing the app. This year the team has decided to open source the app early in advance so that anybody can contribute!.

The app is a treasure trove even for the most seasoned developers. From excellent modularization to integrated testing. There are a number of issues added and we would love to see you add yours as well! To do so, head on over here to contribute.

3. KotlinKenya/Android254 call for speakers.

As a community, we usually host monthly meet up sessions which we would be delighted to have you guys apply as speakers.If you are wondering who is legible to do so, it’s anyone who considers themselves as either; a beginner, intermediate or expert. If you fit into any of the categories, head on over here to apply. We are looking forward to receive them.

There are tons of content around the internet for Android and Kotlin. This year, we’ve added this new section to shine light upon a list of interesting; articles, sessions, libraries and videos we’ve come across in our Kenyan community.

ARTICLES
Dependency Injection with Hilt by Victor Irungu.
In-App purchase In Jepack Compose by Felix Kariuki.
LIBRARIES
Daraja Multiplatform by Victor Kabata
Compose Signature Pad by Joel Kanyi
VIDEOS
Unit testing navigation in Jetpack compose by Breens Mbaka
How to make a cross-platform movie app by using Kotlin Multiplatform by Patrick Dipchumba

You can also suggest any article, library, video or podcast for upcoming newsletters. Click here to submit!

That's it folks till next time, happy coding.

info

We'd love to hear your feedback. Click here to submit any feedback.