Unpacking Android Security: Part 4 — Insecure Authentication | by Ed Holloway-George | Sep, 2023
Photo Credit: Felipe Furtado 👋 Hi and welcome to the fourth post in this series where we deep-dive into Android Security (Part 1, 2 and 3). This series focuses on the Top 10 Mobile security threats as determined by The Open Web Application Security Project…
Migrating an Android app to iOS with KMP — Part I: First steps and architecture | by Igor Escodro | Aug, 2023
Since I started Alkaa, a task management open-source app, I have dreamt of also releasing it on iPhone. However, I don’t have experience in developing apps for iOS, and porting all the features to Swift would be an exhaustive job. Imagine how surprised I was…
Writing Swift-friendly Kotlin Multiplatform APIs — Part VIII: Generics | by André Oriani | Aug, 2023
Learn how to code libraries that your iOS teammates will not frown upon using them. In this chapter: generics An Android head encapsulating an apple — DALLE-2 My initial plan was that an article on Flows would follow the chapter about Coroutines, and then I…
More Accessible Graphs with Jetpack Compose Part 3: Differentiating without Color | by Eevis Panula | Aug, 2023
This blog post is the third one in my series on more accessible graphs with Jetpack Compose. You can find the previous two from the following links: The third topic we will cover is differentiating data by other means than color. Color is a convenient…
Let Kotlin do the code for you — Part II: Retrofit and Proxy | by André Oriani | Aug, 2023
Learning how to create a simple version of Retrofit from scratch A line of robots typing code in computers, pencil art — DALLE-2 Retrofit is undoubtedly one of the most important libraries for Android development. It allows implementing REST APIs by just specifying an interface,…
Translating Objects along a Path (Part 2) | by Nikhil Mandlik
In the previous article, I explained how we can create a different path inside a canvas and animate shapes along that path. In this session, I’ll explain how we can use the same concept to animate any compose view from one position to another on…
Writing Swift-friendly Kotlin Multiplatform APIs — Part VI: Enum and Sealed Classes | by André Oriani | Aug, 2023
Learn how to code libraries that your iOS teammates will not frown upon using them. In this chapter: enums and sealed classes. Androids enumerating apples: green, orange, and red apples — DALLE-2 I love Swift enums, even though I am a Kotlin developer. And iOS…
Persist Access to User Folders Across Launches (Part 2)
In Part 1 we saw how to use the sandbox and how to ask the user permission to read from and write to folders outside the app container. In this article we will see how to persist the user’s permissions across app launches. Since, once…
Read and Write Data in a Sandboxed App (Part 1)
If you are developing a Mac app you may need to read and write files to the user’s Mac folders, outside of the app container. I found myself in the same situation many times. So in this guide I want to share what is my…
Writing Swift-friendly Kotlin Multiplatform APIs — Part IV: Convenience | by André Oriani | Jul, 2023
Learn how to code libraries that your iOS teammates will not frown upon using them. In this chapter: providing convenience. Android under an apple tree like Isaac Newton — DALL·E 2 In the previous chapter, we saw that using interfaces sometimes renders unexpected results. In…