An Insightful Conference for Mobile Developers
We love building apps so we are excited to attend events such as mDevCamp, an excellent conference for mobile app developers. This year was the second time we attended the conference (the first time back in 2018 when we were on team building in Prague) and we can say that it is among our favourite ones.
Since the beginning of Cobalt Sign, we’ve been focusing on developing apps that we’re proud of. To do this, we continuously learn and improve ourselves and our techniques to build better apps for our clients.
Attending conferences for mobile app developers such as mDevCamp are always a great way for us to keep up with the latest news and developments in the industry. The conference has numerous, relevant technical talks about real problems developers can encounter but also nice tweaks and tools we can use.
3D Virtual World for the 2020 Edition
The conference was held online, moreover, the organizers created an open 3D world for it, which was a really nice touch. We could join the virtual world where we had our own characters and we could network, watch the presentations, visit partner stands or just get together and hang out.
The 3D world for the conference resembled a game. It had some really cool features such as choosing different profiles for your characters, messaging, flying and visiting any place in the 3D world. Unfortunately, the world worked a bit slow when everyone was online so we decided to watch the presentations on the web.
Day 1 @ mDevCamp
The conference started off with the usual welcome and keynote sessions. During these, we found out more about the event and what the organizers prepared for us.
Next, we found out about a few apps which were built/updated with cool features to help their users during COVID-19. Mapy.cz, for example, introduced location-sharing features. Using the app, users can see if they might have come in contact with someone who tested positive for coronavirus.
Then, it was time to start the presentations. The speakers covered topics related to business, dev life, iOS/Android & multi-platform app development. The talks were mostly focused on Swift, Kotlin and Flutter. Read below a summary of our favourite ones:
Refactoring Legacy Code with Kotlin
Ash presented several Kotlin features such as nullability checks, beans, extensions.
Then, he talked about offensive and defensive code and what are the differences between them. When you write defensive code, you add a lot of null checks but using offensive code makes it easier to detect errors, as they do not get propagated.
And finally, here’s something to keep in mind when converting a class to Kotlin. Sometimes, the conversion can cause the file history to be lost, which can often be a problem.
Here’s how you can do it so the history is preserved: change the file name extension to .kt, commit the new file and convert the file to Kotlin.
Smile, it is CameraX
CameraX is a library which can help you add camera capabilities to your apps. As we are taking more and more photos with our devices, we need better solutions for apps which have camera features.
CameraX solves some of the problems we might encounter during development. Some of these helpful features are device compatibility (supports about 90% of current devices), lots of tests and a large device farm, low complexity and easy implementation.
Building a Realtime Video Processor with Swift and Metal
This was a very insightful talk about app architecture, performance and working with image data in apps.
Among the main issues affecting our apps’ performance is memory. We can improve the performance of our iOS apps by keeping data in the first two levels (L1 & L2) of memory cache when rendering graphics. CPU is pretty fast nowadays but L3 and the main RAM memory are pretty slow.
Create data-oriented design instead of focusing on object-oriented programming. Instances don’t have to be class instances, they can be named with a reference ID.
From there, you can add data to your instances (colour, shape, name). To know how each piece of data can be updated and rendered, add logic for each.
- Apply gaussian blur to your images after you scale them down 50%. Apply the blur, then scale it back up to save time & processing power.
- Our eyes are more sensitive to changes in dark tones than they are to changes in bright tones. Apply gamma correction to images in your app so that our eyes will perceive this as we expect.
For a great example, check out the Spectre app, awarded by Apple as the app of the year in 2019.
Auth, Security, and Data in Mobile Apps
Richard talked about problems with client caches (Programming Models), problems with concurrency (Convergence and Correctness), the role of GraphQL and understanding & using Amplify DataStore.
The Amplify Framework provides a set of open-source libraries, a command-line interface and UI components that allow the user to develop backends faster and integrate them with cross-platform (iOS, Android, Web and React Native) apps.
Using Amplify you don’t need to worry about online and offline data access, synchronization, manipulation, and retrieval.
The Amplify DataStore is one of the features provided by the Amplify Framework.
It uses a multi-platform on-device persistent storage engine that automatically synchronizes data between mobile/web apps and the cloud, powered by GraphQL.
Through a GraphQL request, you can specify how to structure the data when it’s returned by the server so you can query only the data you need, in the format you need.
Day 2 @ mDevCamp
Praveen Kumar Pendyala
Effortless, Effective Navigation With Less Code
During this talk, we learned about new ways we can implement effortless navigation in our Android apps.
We started with the Principles of Android navigation:
- Fixed start destination;
- Navigation state is represented as a stack of screens;
- Up and back buttons are identical within the app’s task.
- The Up button never exits the app.
- Deep linking simulates manual navigation.
Then, we discussed Android’s Jetpack navigation component. This is a collection of libraries which handle navigation, are compliant with Principles of navigation and support UI components.
Tips: use the Navigation Graph for a clear overview, use global actions if multiple pages have the same destinations and download destinations on-demand using the dynamic navigator.
If you want to start migrating to the Navigation component, you should start by slimming down activities by moving their content to UI logic to fragments. Also, you should merge activities which have a common layout.
Speed up Your Project With Code Generation
Tomas discussed ways we can improve our apps with code generation. Using code generation saves time, increases code quality and speeds up the entire development process.
The first step is to find some patterns in code, anything written twice is a boilerplate code or is missing an abstraction.
Then, as a solution, you can use GenGen, a template-based code generator. The main goal of this tool is to create a code generator for anything the user might want to generate.
Marc Obrador Sureda
Reversing Android Apps
To successfully reverse an app, there are 3 main steps you can take. First, you have to get to know the app pretty well. Then, you should perform static analysis and finally a dynamic one to understand the code structure of the app.
Protecting against these steps:
- Adding Proguard or other paid alternatives for code obfuscation;
- Writing sensitive code in native (NDK);
- Implementing root/debugging checks;
- Using SSL certificate pinning;
- Preventing repackaging by checking the signing certificate when the app is launched and closing the app if the certificate does not match.
There is no 100% secure way of protecting your apps, so you should always avoid storing sensitive information in your apps.
With everything going on right now, we’re happy to have been able to participate, learn and improve ourselves at this event. The mDevCamp conference for mobile app developers was really insightful and full of pleasant surprises.
The organizers decided to make the tickets from the online edition available for next year as well. This was a nice touch as we were really looking forward to traveling to Prague this summer. We’re looking forward to participating at the 10th edition of the conference, next year in Prague. 🤩
Join Our Newsletter
App news, know-hows and updates. Every few months, read our stories right in your inbox.