Appbuilders is one of the biggest mobile conferences about mobile technologies in Europe. Appbuilders was a 2 day conference with great speakers and great talks.
There were a lot of good talks during the conference, we summarized the most inspiring and instructive talks for you. All talks were introduced by John Sundell (also known off Swift by Sundell), an iOS developer/blogger and conference speaker. As with every conference, we started with the keynote, that was given by Scott Chacon, co-founder of GitHub and CEO of Chatterbug.
Talk – Github to Chatterbug: Lessons learned by an accidental entrepreneur
Scott is co-founder of Github and he talked about his journey from 2008 to 2016 where Github grew from 4 to 400 people and what is important when you run such a company. First of all it’s very important to use your own product. This maybe seems straight forward but to really have a successful product, you really need to understand the problem space that your product wants to solve. For example, you can still rent the apartment of the founder of airbnb so he understands the problem, airbnb should fix. Listen to your customers to understand the problems of your product and make it very easy to customers to give feedback about your product.
It’s also very important to keep asking ourselves what the human aspect is in our product and we should look how computers and people can work together instead of replacing people with computers. Computers can make sure that we as people can excel in the things we are already good at. Computers are good in things doing over and over, while empathy, what a computer doesn’t have, is evenly important. We really need to find a way to mix the best of both worlds instead of replacing people with computers.
Talk – From problem to solution
Next up was a talk by Soroush Khanlou, a well known iOS developer in the community who is best known for introducing the Coordinator pattern in iOS. We use this pattern for some time now in multiple projects. Soroush talked about the pitfalls and positive things of abstraction.
As every developer knows, code continuous to grow during a project and what once was a beautiful piece of code, now is a horrible very large class with multiple responsibilities and a large cyclomatic complexity count. The question you can ask yourself is “When do I need to take action and abstract some of that code?” You can notice this when you see classes with more than 1 responsibility, a large line length count and next to the happy path, how many execution paths this code has.
Soroush uses the example of a network client and refactors this class with some of the next tips and tricks :
Splicing up code can be done by
- Time (headers, before request, after request in the example of a network client)
- Replacing optional objects with a Empty Struct
- Replacing arrays with objects
So what do we win from abstraction?
- Decoupling : we build strong boundaries that are testable
- You can glance at the code and you can instantly understand what it does
But you have to be careful when using abstraction because you can’t apply it every time. You should use it when you have code that is doing a similar thing but is not looking similar. Abstracting the wrong thing can be your worst nightmare and sometimes duplication is far cheaper than the wrong abstraction.
Talk – Theming, styling, material, …
Theming in Android is pretty hard, there are a lot of places where f.e. a color can be set. What if you will rebrand your app, at this moment if you don’t have a good styling strategy this will become a painful refactor. It was a good talk where the speaker discussed the different possibilities. Style, theming, textAppearance, themeOverlay are all key value stores where you can do something with your UI.
The funny thing is that they all start with a style tag.
- A style is applied on a single view, you should use a style when you want the same UI for related components.
- The textAppearance attribute works only on character level, the nice thing about this attribute is that it can be set programmatically.
- A theme is applied to an app or an activity. Themes needs to be configured at inflating time. The name of the method setTheme can’t be reset after the view is inflated.
This talk was quite interesting because we see that there are many approaches you can use for theming and styling in your android application.
Talk – Ship it safe: Guillerme Rambo
The talk from Guillerme about privacy and how to work with data was a very good talk. Guillerme gave us many tips and tricks about how to work with data and how to convince the user that his data is only used when needed.
Guillerme’s opinion :
- Do not Collect the data you don’t need. Only collect what you really need
- Only ask the user users permissions when he she really needs to use the camera and not on startup
- Be careful with third party SDK’s, every sdk that is linked in the app has also access to the location when given permission
When you ship third party SDK’s, it’s your code your responsibility
- With CloudKit you can store user data and not be responsible for it when stored in the private container
- You can use Cloudkit Rest api in android
- You should process this user data on the device and only send to the server you really need
- You can have a push notification extension that calls CloudKit so that sensitive data is not in the Push notification
- Data protection setting entitlement can be set in plist. When you write a file on disk you can set a data protection level
- os_log can show all or only public data
- Exclude anything from Backups what can be recreated
- Setup HTTPS
- App Transport Security, block unencrypted calls by default, but you can exclude domains when needed
- Http Strict Transport Security for backend can be used
- SSL pinning so that proxy and man in the middle attacks are not allowed
- DeviceCheck make sure that the client is a real device that has the app installed , pass this token to the backend and the backend can check an Apple API to check this device token
Explain in user language (not lawyer language) what you collect, always explain privacy implications. Example NSCameraUsageDescription
- Giving the users control about their data
- You can disable analytics
- Give users access to all their data (GDPR)
- Allow users to remove all their data
Food and Drinks at the conference
Lugano is the Italian part of Switzerland so the morning and break coffee’s were really great. Every morning there were also some croissants with different toppings and for the lunch there was a lunch buffet with a lot of choice.
The conference party was a well organised and cozy event. Oh, I almost forgot to say, THERE WERE FREE DRINKS 🙂
Appbuilders is a great conference, the organisation is great, the speakers are mature and the topics were very interesting and held in a beautiful city around the Lugano lake. We really recommend all native mobile developers to go to Appbuilders. Hope we meet in Lugano next year!