I wrote a post detailing how to use my library #HttpMocker. Thanks @ktdotacademy for publishing it.
New post about HttpMocker - new HTTP mocking library to handle offline modes by @speekha
@kotlin #kotlin
blog.kotlin-academy.com/http…
David Blanc #blacklivesmatter #StandWithUkraine retweeted
🎉 Nouveau speaker !
Nous sommes fiers d'accueillir @speekha au #DevFestToulouse2026 🚀
🎤 ANOM, l'Android qui a fait tomber 1000 criminels (Conférence)
👉 L’histoire vraie d’une opération d’infiltration numérique menée via un Android modifié et une application prétendument ultra-sécurisée.
Hâte de découvrir cette conférence sur scène le 19 novembre !
Just a warning that I'm slowly moving out by unsubscribing from as many Twitter feeds as possible. So if you're also present on 🦋, I'll only follow you over there.
You can find me there at speekha.bsky.social
David Blanc #blacklivesmatter #StandWithUkraine retweeted
derivedStateOf is an important function in Compose that limits the number of recompositions. Let me show you how it works and when it should be used. 👇 (1/5)
David Blanc #blacklivesmatter #StandWithUkraine retweeted
💠 Here's a sneak preview of something that I've been working on in Haze: overlapping areas
With this you'll be able to implement those classic glassy card effects. I still need to run the performance benchmarks, but it seems to be working nicely...
🔗: github.com/chrisbanes/haze/p…
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Transforming lists into arrays can sometimes help us have a crazy amount of memory❗ Of course, such optimizations make sense only in very specific cases.
The size of IntArray is typically 5 times smaller than an array or a list of ints. The reason is simple: IntArray uses primitives that need only 4B. In other cases, we need a wrapped type that needs 16B for an object and 4B for reference.
Wrapped types also add a cost of accessing the underlying values and garbage collecting all the objects. That is why one of the first optimizations we do when we make performance tuning is optimizing for primitives.
Though this optimization only works for primitives. A typical list of object will need similar amount of memory as an array, because default list in Kotlin is just a wrapper over array. A wrapper that allows much simpler use.
That is why such an optimization should only be done on performance-critical parts of our code, where performance is more important than simplicity, as it often complicates our code and makes it less idiomatic.
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Optimizing performance is a cornerstone of engineering. Over the past 15 years, I've enhanced performance across various mobile apps. Performance is challenging, but here are my top tips to develop a performance-oriented mindset
A thread 🧵
David Blanc #blacklivesmatter #StandWithUkraine retweeted
GlobalScope is a poor practice and it should be avoided. ⚠️
Let me explain why and what we should use instead. (1/7)👇
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Clickable modifier can be disabled by argument, do not use conditional modifier for that!
David Blanc #blacklivesmatter #StandWithUkraine retweeted
This is what the map, filter, and onEach from Kotlin Coroutines look like under the hood. Yes, it's that simple. Flow under the hood is as simple and efficient as it can be.
David Blanc #blacklivesmatter #StandWithUkraine retweeted
My daughter (still) studies Java in university. Watching her struggles gives me a unique insight into the language design. I can definitely tell that Java 9's decision to have "unspecified" iteration order in Map.of method is a mistake.
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Have you ever wondered why toUpperCase and toLowerCase were deprecated in Kotlin? The original reason was the Turkish language. Thread 👇🧵
David Blanc #blacklivesmatter #StandWithUkraine retweeted
🚀 Big news for Kotlin devs! K2 mode is now Stable in IntelliJ IDEA 2024.3!
✨ Better performance
📊 Improved memory efficiency
💪 Kotlin 2.1 support
🔥 Code analysis stability
Learn more in our blog post.👇
blog.jetbrains.com/idea/2024…
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Vous l’avez réclamée, elle est enfin là : la playlist du #DevFestToulouse 2024 sur Spotify ! 🎶
Pas besoin d’attendre 2025 pour replonger dans l’ambiance unique du #DevFestToulouse. Cliquez ici 👉 open.spotify.com/playlist/0T… et laissez-vous emporter !
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Almost embarrassed to post this, but I've always used Fiddler or Burp for capturing things like this..
I didn't have admin rights and was trying to capture network traffic from a pop-up, so Dev Tools wasn't working
Apparently this is built into Chrome/Edge!
edge://net-export/
David Blanc #blacklivesmatter #StandWithUkraine retweeted
I can't believe I didn't know about this feature before 🤯
"Cyclic Expand Word" in IntelliJ takes the word your cursor is on and cycles through all possible completion tokens within your current file. So cool!
David Blanc #blacklivesmatter #StandWithUkraine retweeted
The way how static dependency injection works is actually very simple, and I can explain it in two minutes! Let me show you 👇🧵
David Blanc #blacklivesmatter #StandWithUkraine retweeted
Configuring KSP for a #Kotlin #Multiplatform project involves a few additional steps compared to Android. Make sure to add the required KSP targets and link the kspCommonMainKotlinMetadata task. For a full setup guide, refer to the official documentation. #AndroidDev
C'est toujours impressionnant de voir ce qu'on peut faire à la volée avec les notebooks dans @intellijidea ! Super tour d'horizon et démo par @fbe64. #DevFestToulouse
Super présentation de @almouro sur Flashlight et comment monitorer une app Android facilement avec des commandes systèmes et adb. #devfestToulouse






















