Márton Braun @zsmb13@androiddev.social Profile Banner
Márton Braun @zsmb13@androiddev.social Profile
Márton Braun @[email protected]

@zsmb13

Followers
7,562
Following
555
Media
908
Statuses
4,718

Kotlin Developer Advocate @JetBrains . GDE for Kotlin & Android. Ex- @Google . Instructor @ BME-VIK. Co-organizer @androidbudapest and @androidww_ .

Budapest, Hungary
Joined July 2010
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@zsmb13
Márton Braun @[email protected]
2 months
Okay, hear me out: ❌ Jetbrain ❌ Jetbrains ❌ Jet Brains ✅ JetBrains While we're here: ❌ Kotlin Multi-platform ❌ Kotlin MultiPlatform ❌ KMM ✅ Kotlin Multiplatform ✅ KMP And also: ❌ Compose multi platform ❌ JetBrains Compose ✅ Compose Multiplatform
24
30
265
@zsmb13
Márton Braun @[email protected]
2 years
Time for some bio updates... I'm excited to announce that I'm no longer a GDE, as this is my first week as an Android Developer Relations Engineer at Google! 🎉 Really looking forward to contributing to @AndroidDev , focusing on Kotlin.
101
17
708
@zsmb13
Márton Braun @[email protected]
2 years
Are you using sealed classes that don't store any properties themselves? Consider making them sealed interfaces instead!
Tweet media one
14
59
432
@zsmb13
Márton Braun @[email protected]
11 months
Career update - yesterday was my last day as a Googler (to be clear: by choice). It's been great working in the MAD team in Android DevRel, with all the wonderful people there, but now it's time for a change. Before that though... a month+ of funemployment!
Tweet media one
38
7
389
@zsmb13
Márton Braun @[email protected]
2 years
Check out our new coroutine testing guide, hot off the press! 🧵🧪 In this guide, you'll learn how to use the testing APIs new in kotlinx.coroutines.test 1.6, as well as the best practices you'll need to test your Android code!
6
102
369
@zsmb13
Márton Braun @[email protected]
4 years
I got mail.
43
3
338
@zsmb13
Márton Braun @[email protected]
10 months
Been so busy lately that I haven't even done a proper bio update yet... Happy to share that as of this week I am a Developer Advocate at @jetbrains ! Super excited to continue working on making Kotlin awesome.
33
9
336
@zsmb13
Márton Braun @[email protected]
2 years
I've heard a few complaints about range syntax being hard to remember in Kotlin. While I never felt that it was confusing (and rarely use ranges in my code), you can now be relieved: there are now inlay hints to help with range bounds! You can try it in Android Studio Dolphin.
Tweet media one
9
33
320
@zsmb13
Márton Braun @[email protected]
2 years
Are you using the OnLifecycleEvent annotation to hook into lifecycle events? This is now deprecated; use DefaultLifecycleObserver instead, simply overriding its appropriate methods. The best part? You can remove the lifecycle-compiler annotation processor from your project! 🥳
Tweet media one
5
47
263
@zsmb13
Márton Braun @[email protected]
2 years
It's mandatory to post this, right? 🤠 #noogler @lifeatgoogle @AndroidDev
Tweet media one
11
1
247
@zsmb13
Márton Braun @[email protected]
10 months
itshappening.gif Dagger's latest release is the first one with KSP support for both Dagger and Hilt!! 🎉 This is a good time to completely get rid of KAPT...
5
49
236
@zsmb13
Márton Braun @[email protected]
4 years
Wrote a bit about representing view state as a single object. Learn how to design your state classes, and how to actually use them in practice - lots of small tips in this one! #AndroidDev #Kotlin Designing and Working with Single View States on Android
Tweet media one
6
48
207
@zsmb13
Márton Braun @[email protected]
2 years
The media playback UI on Android is in a really good place now. It looks great, and it also contains lots of useful info and controls, even more than I'd expect it to have.
Tweet media one
20
11
201
@zsmb13
Márton Braun @[email protected]
4 years
Pro tip: Kotlin lets you check whether a given class is fun or not. For example, Strings are just *not* fun.
Tweet media one
5
13
197
@zsmb13
Márton Braun @[email protected]
1 year
Story time with @Kotlin
Tweet media one
2
28
190
@zsmb13
Márton Braun @[email protected]
2 years
It works! @Airbnb
Tweet media one
13
3
186
@zsmb13
Márton Braun @[email protected]
1 year
We finally shipped this small improvement that I've been lobbying for: the Compose / Kotlin compatibility error message now includes the link to the compatibility map in the Android docs!
Tweet media one
8
9
164
@zsmb13
Márton Braun @[email protected]
2 years
Android development is officially Kotlin-first, and you should use Kotlin for Android development. Just putting that out there, as this still comes up as a question every week somehow. See this page for details about Android's commitment to Kotlin:
5
30
157
@zsmb13
Márton Braun @[email protected]
4 years
I'm looking for my next job. Some params: 👨‍💻 Should use my Android/Kotlin expertise 📱 Product work preferred, SDK/tooling/enablement also cool 📚 Happy to do lots of knowledge sharing and mentoring 🇭🇺 Budapest based, happy to remote Please share / DM me if you got something 🙏
5
68
155
@zsmb13
Márton Braun @[email protected]
11 months
With @androidstudio Giraffe finally out, I can now share some small things I've added to this release! 1. For processors included with kapt that also work with KSP, you now get prompted to migrate to KSP (with a quick fix if KSP is already in the module)
5
23
156
@zsmb13
Márton Braun @[email protected]
3 years
Well, @intellijidea is still awesome.
Tweet media one
8
6
152
@zsmb13
Márton Braun @[email protected]
3 years
Spent 30 minutes trying to figure out why a RecyclerView wasn't displaying items that I've put into its adapter. Checked everything. Debugged inside the adapter, checked that the View has width and height, a LayoutManager... I just never called setAdapter on the RecyclerView.
21
7
153
@zsmb13
Márton Braun @[email protected]
2 years
Did you know you can right-click a #JetpackCompose Preview to copy it as an image? Pretty useful for grabbing a quick screenshot to share instead of trying to clip it neatly with the OS-provided tools.
Tweet media one
1
27
153
@zsmb13
Márton Braun @[email protected]
2 years
What an excellent feature in @androidstudio to find and import a dependency based on what I'm trying to use - makes getting started in a new project way simpler!
10
13
145
@zsmb13
Márton Braun @[email protected]
3 years
Quick @intellijidea / @androidstudio text editing tip: you can sort lines quickly by using the aptly named Sort Lines action.
5
13
149
@zsmb13
Márton Braun @[email protected]
2 years
Today I learned that Kotlin's groupBy function can take an additional parameter which is used to transform each value of the original List before it gets placed in the newly created Map. Really neat!
Tweet media one
3
16
152
@zsmb13
Márton Braun @[email protected]
3 years
So it turns out that having a const value inside a private companion object will end up generating a public field that's accessible from Java. So it's worth making these values doubly-private!
Tweet media one
Tweet media two
5
15
148
@zsmb13
Márton Braun @[email protected]
5 years
Earlier today, I gave the first lecture for our university subject that teaches the @kotlin language (without Android!), where about 100 students showed up. Does anyone know if there's another university where the language is being taught?
14
10
143
@zsmb13
Márton Braun @[email protected]
11 months
Aaaand now I've come full circle. I'm once again a GDE for Kotlin and Android!
Tweet media one
7
2
146
@zsmb13
Márton Braun @[email protected]
3 years
Kotlin 1.5 will bring exciting new features, among them improvements to sealed classes and an introduction of sealed interfaces. Let's take a look at what that will look like! Sealed goodies coming in Kotlin 1.5 #Kotlin #AndroidDev #GDE
Tweet media one
2
45
142
@zsmb13
Márton Braun @[email protected]
11 months
K2 support is arriving to Android tools, which now includes Jetpack Compose. Time to try K2 in your Android apps and report any issues you find!
2
27
131
@zsmb13
Márton Braun @[email protected]
1 year
🗞️ KSP news 🗞️ We now have a page that helps you migrate from using kapt to KSP: In Giraffe canary 7, you'll also find a new Lint warning that assists you in migrating where possible. Check these out and please send any feedback about it my way!
3
23
130
@zsmb13
Márton Braun @[email protected]
2 years
Achievement unlocked
Tweet media one
4
2
132
@zsmb13
Márton Braun @[email protected]
4 years
New #AndroidDev blog post! In this one, I take a look at a WIP implementation of an Android concept app which was trending very high on reddit last week. Jetpack, Kotlin, and more inside - take a look! Let's Review: Pokedex
Tweet media one
7
21
124
@zsmb13
Márton Braun @[email protected]
4 months
Do you use Retrofit and kotlinx.serialization? Good news: the kotlinx converter has been upstreamed and is now a proper Retrofit artifact: There's also a BOM now and other goodies.
4
18
122
@zsmb13
Márton Braun @[email protected]
3 years
First flight in a looooong while, let's go @droidconBerlin ✈️
Tweet media one
7
1
121
@zsmb13
Márton Braun @[email protected]
2 years
GitHub providing these instructions is just awesome.
Tweet media one
4
8
112
@zsmb13
Márton Braun @[email protected]
2 years
I know we're a bit late for the actual anniversary, but it's time to celebrate 5 years of official Kotlin on Android! 🎉🥳 It took a lot of work to make this possible, and there's plenty more work on Kotlin ongoing today. Read the full story:
1
10
103
@zsmb13
Márton Braun @[email protected]
3 years
So, @_aurimas has done it first, but I was also already working on it too 😃 Here's a neat Compose Clock, as the very first steps of my #JetpackCompose learning experience. Hope you learn something from it too! Compose O'Clock #AndroidDev #GDE
6
16
102
@zsmb13
Márton Braun @[email protected]
3 years
Spotify vs wrap_content in a RecyclerView - happens to everyone!
5
5
100
@zsmb13
Márton Braun @[email protected]
3 years
Sometimes @androidstudio is just pure evil.
Tweet media one
12
4
99
@zsmb13
Márton Braun @[email protected]
3 years
I've been building some #JetpackCompose things this week and noticing that some code changes like dp amounts or text changes are applying on my device live as I'm making them, no rebuild or re-run required. Is this a new feature? Is it described somewhere?
11
10
96
@zsmb13
Márton Braun @[email protected]
3 years
Look what finally arrived! 👀 #androidsbook
Tweet media one
13
2
93
@zsmb13
Márton Braun @[email protected]
2 years
If you're designing a checkbox, please, please, please make the text next to it also clickable and have it toggle the checkbox.
5
2
94
@zsmb13
Márton Braun @[email protected]
4 years
Quick career update: my involuntary job search that started back in the summer is over. As of last month, I am working on making the @getstream_io Android SDK an amazing experience for devs to integrate 😃
11
0
92
@zsmb13
Márton Braun @[email protected]
2 years
@github_skydoves Ah yeah, that's a bad one 😄. Luckily you can fix this yourself in Studio by excluding it from completion (IDE or project-wide, the latter writes it into the .idea folder so you can check it into git!). The one that always got me was the non-Compose Color class.
Tweet media one
2
12
91
@zsmb13
Márton Braun @[email protected]
2 years
Fun fact: you can download the Kotlin language documentation as a 1158-page pdf file. If you want to.
Tweet media one
6
10
88
@zsmb13
Márton Braun @[email protected]
2 years
Speaking of importing Modifier... If you're autocompleting a Modifier parameter in Studio, you can just type the name of a modifier, without first typing out "Modifier." - it will add that for you & import it if needed!
@github_skydoves
Jaewoong Eum
2 years
@zsmb13 Another trap in Jetpack Compose.
Tweet media one
7
6
67
3
6
90
@zsmb13
Márton Braun @[email protected]
4 years
With so many things cancelled this week, it only makes sense to publish this now... Here's an article on the basics of coroutine cancellation that you should know about. 🧵❌ Coroutine Cancellation 101 🧵❌
3
24
90
@zsmb13
Márton Braun @[email protected]
8 months
I was wondering: "Which apps on my phone use Ktor?" So I picked up the stackzy project from @theapache64 , hacked three new screens into it, and it can now decompile all apps over ADB to analyze their contents together. It's not quick, and the code is awful, but it works great!
8
10
89
@zsmb13
Márton Braun @[email protected]
4 years
Following up on the state handling articles, it's now time to talk about events. Here are my... Thoughts about Event Handling on Android
Tweet media one
3
21
88
@zsmb13
Márton Braun @[email protected]
3 years
Look, Google, I fixed your issue tracker.
Tweet media one
5
5
88
@zsmb13
Márton Braun @[email protected]
1 year
The latest alpha of WorkManager allows you to observe the status of work using Flows!
1
21
88
@zsmb13
Márton Braun @[email protected]
4 years
I kept running into discussions of different Fragment lifecycles, and especially how you can work with them in Jetpack. So here's a detailed, illustrated rundown: Fragment Lifecycles in the Age of Jetpack
Tweet media one
1
22
85
@zsmb13
Márton Braun @[email protected]
2 years
Uh-oh
Tweet media one
9
2
86
@zsmb13
Márton Braun @[email protected]
2 years
A fun test about coroutines and coroutine testing: how long does this test take to execute? Optional follow-up question: what does it print?
Tweet media one
14
5
86
@zsmb13
Márton Braun @[email protected]
2 years
Here we go again...
Tweet media one
6
9
86
@zsmb13
Márton Braun @[email protected]
3 years
In other very specific API news: I like how extensive the Kotlin stdlib is, but maybe, just maybe firstNotNullOfOrNull is where it went too far 😃 Really though, say it five times quick
7
7
84
@zsmb13
Márton Braun @[email protected]
2 years
Working from an office for a bit, for a change (also, *of course* that's the logo)
Tweet media one
5
0
84
@zsmb13
Márton Braun @[email protected]
2 years
Reminder: starting in Kotlin 1.8, the Kotlin Android Extensions Gradle plugin (which supplies synthetics for Views and Parcelize) will be gone. Screenshot here is using the 1.8 Beta. Read this blog post about how to migrate:
Tweet media one
3
23
83
@zsmb13
Márton Braun @[email protected]
4 years
I've been writing a lot about architecture lately, and today I'm finally ready to reveal the 1.0 of a project that's been in the works quietly for two years. Introducing RainbowCake, a modern Android architecture framework 🌈🍰 #AndroidDev
1
13
84
@zsmb13
Márton Braun @[email protected]
2 years
Like previous technical writing courses by Google, this one about Writing Helpful Error Messages is brilliant, and everyone should read it: After that, as a practice exercise: how would you change this Compose error message? 😃
2
7
82
@zsmb13
Márton Braun @[email protected]
5 years
I've been using requireNotNull quite a bit lately. For me, !! always seems like someone just wanted to quickly make code compile and didn't think nullability through, while this function signals the exact same intent more clearly.
Tweet media one
8
6
81
@zsmb13
Márton Braun @[email protected]
9 months
Just learned that kotlinx.serialization can automatically perform polymorphic serialization on a sealed interface and its implementations, with no additional code required. Just throw `Serializable` on it and it works. It's so simple and smooth 🤯
5
5
81
@zsmb13
Márton Braun @[email protected]
1 year
Lots of love to JetBrains (specifically @Belosnegova ) for restocking me and my students with these great @Kotlin stickers!
Tweet media one
3
1
79
@zsmb13
Márton Braun @[email protected]
4 years
One of the best things that Kotlin has done for us is the safe call operator, because it eliminates the kind of inherently incorrect re-fetching of values after performing checks on them that we do all the time in Java for some weird reason.
Tweet media one
6
15
79
@zsmb13
Márton Braun @[email protected]
2 years
Multipreview annotations for Compose are so awesome. We're working on adding them to the Now in Android sample now, check out how much they simplify preview configuration:
4
12
78
@zsmb13
Márton Braun @[email protected]
3 years
Closing a chapter today, as this was my last day working at @getstream_io . Had an amazing time there, have nothing but good things to say of the Android and devrel teams. Shout-out to Sam who pointed me there last summer 🙏 Now, a break until next year.
9
1
78
@zsmb13
Márton Braun @[email protected]
2 months
New sample arriving to the Android KMP sample repo too, using Room, DataStore, and Ktor:
@joreilly
John O'Reilly
2 months
Room Multiplatform!! #KMP
9
62
314
1
11
77
@zsmb13
Márton Braun @[email protected]
3 years
Here's a late article for today, looking at some bits of Gradle config for Android that you can probably clean up in your project! A Bit of Gradle Housekeeping 🧹 #AndroidDev #GDE
Tweet media one
4
20
77
@zsmb13
Márton Braun @[email protected]
10 months
Just wrapped up my talk at DroidKnights 2023! You can grab the resources mentioned in the talk here:
Tweet media one
0
7
77
@zsmb13
Márton Braun @[email protected]
4 years
Android Studio has now caught up with IntelliJ versions enough to support rendered documentation comments 🎉 (1). Includes awesome support for Kdoc [refs] too! You can enable this globally in Preferences (2), or toggle it on/off for individual comments in the gutter icons (3).
Tweet media one
Tweet media two
Tweet media three
1
7
76
@zsmb13
Márton Braun @[email protected]
11 months
Anyone hiring Android engineers? Asking for a friend who's: - Looking for an EU-remote role - Active in the community - Caught up on the latest frameworks - Been working on the platform for almost a decade Drop links in the replies - they'll see them!
3
19
75
@zsmb13
Márton Braun @[email protected]
3 years
Looking to publish to MavenCentral after hearing the news about JCenter going away? I have good news! I spent the better part of a day updating this massive publication guide for you: #AndroidDev #GDE
6
17
75
@zsmb13
Márton Braun @[email protected]
3 years
Reminder (including to myself): upvote useful StackOverflow answers before closing the tab.
4
6
74
@zsmb13
Márton Braun @[email protected]
3 years
Today I looked at some Swift code and it took me a solid minute to realize that it's not Kotlin. Can't tell yet if that's a good thing or not.
7
1
74
@zsmb13
Márton Braun @[email protected]
3 months
Just caught the drama around this post You have to be pretty out of touch to conduct yourself like this in such a great community. And especially to put down the work of @skydoves who's done an incredible amount of valuable open-source work.
14
3
74
@zsmb13
Márton Braun @[email protected]
4 months
New blog post! First one in a while. Join me on a journey of creating a custom macOS screen saver using Kotlin! P.S. The journey is pretty long and complicated. Maybe just download and enjoy it.
1
16
74
@zsmb13
Márton Braun @[email protected]
2 years
Received the #GDE swag package today, immediately took the jacket for a test run - works great! Loving the streaks of colours on it.
Tweet media one
3
0
74
@zsmb13
Márton Braun @[email protected]
3 years
Here's a story of iterating on upload progress code on Android, solving various problems along the way. I especially enjoyed learning about the OkHttp Tag API to get to the final solution. Adventures in Tracking Upload Progress With OkHttp and Retrofit
1
15
73
@zsmb13
Márton Braun @[email protected]
3 years
New article now out: a tutorial for building a functional chat app with #JetpackCompose and @getstream_io ! Detailed, step-by-step guide. Contains a lot of small tips about Compose APIs along the way. Feedback welcome! #AndroidDev #GDE
Tweet media one
0
28
71
@zsmb13
Márton Braun @[email protected]
4 years
The previous article about single view states did really well, so let's see if we can continue the trend. Here are some... Thoughts about State Handling on Android
Tweet media one
4
19
70
@zsmb13
Márton Braun @[email protected]
8 months
A #JetpackCompose confession: I still need to guess the order for Modifiers every time, and then I just fix it in the next iteration when I inevitably get it wrong. Does anyone have a smart way of remembering how Modifier ordering works?
11
2
71
@zsmb13
Márton Braun @[email protected]
3 years
Contributed a Chat feature in 15 minutes using the @getstream_io #JetpackCompose SDK into the @ZeThreeApp that @Berlindroid are building #dcbln21
Tweet media one
Tweet media two
5
4
69
@zsmb13
Márton Braun @[email protected]
2 years
Two weeks into this gig, one thing is really clear: the people I get to work with are amazing.
3
0
69
@zsmb13
Márton Braun @[email protected]
3 years
The API Guidelines doc by Google is hands down the most important resource for #JetpackCompose out there. It explains conventions in great detail, and will also help you find out what parts of Compose you don't know yet. Give it a read 👇 #AndroidDev
Tweet media one
0
11
69
@zsmb13
Márton Braun @[email protected]
1 month
I think I was first in queue for a signature here! #KotlinConf
Tweet media one
Tweet media two
2
2
68
@zsmb13
Márton Braun @[email protected]
1 year
Oh come on.
Tweet media one
5
1
69
@zsmb13
Márton Braun @[email protected]
3 years
Got some great news for the end of the week: I'm now a book author at @rwenderlich 🎉 I jumped in as an author to update @MateiSuica 's original chapters in the Data Structures & Algorithms in Kotlin book for the Second Edition. Check out the book here:
Tweet media one
1
6
68
@zsmb13
Márton Braun @[email protected]
4 years
I've been sitting on this announcement for a bit, because it just didn't feel right to celebrate given everything going on, but... As of a month ago, I am a Kotlin GDE, and as of this Monday, also an Android GDE! 😊 #Kotlin #AndroidDev #GDE @GoogleDevExpert
13
0
67
@zsmb13
Márton Braun @[email protected]
2 years
That's a wrap, everyone! #dcbln22
Tweet media one
3
3
67
@zsmb13
Márton Braun @[email protected]
2 years
I am wrapping up "Untangling Coroutine Testing" at #AM22 ! All the slides and resource links are available here:
Tweet media one
1
13
66
@zsmb13
Márton Braun @[email protected]
2 months
Just gave a talk at Google I/O Extended Budapest about Building with Kotlin for Android and Beyond! Slides and links are this way:
Tweet media one
0
2
66
@zsmb13
Márton Braun @[email protected]
1 year
My hobby: stopping the debugger at the point in the file where I want to add new code, and implementing as much of it as I can within the "Evaluate expression" feature.
4
3
66
@zsmb13
Márton Braun @[email protected]
5 years
Has anyone else noticed the crazy quick startup time of @intellijidea recently? When launching it from @JBToolbox , I have it up and running in roughly 3-4 seconds. Props to @jetbrains for working on this!
4
2
65