Skip to main content

Β· 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.