So after a long hiatus from writing, I’ve decided to try and be a bit more disciplined and write more frequently. This is the first in a series around how we have introduced build time tracking across our CI environments, and how we track it in our development tools.
As you can tell from my last post, my focus of late has been on iOS development with a mixture of Objective-C and Swift.
Something that might go by a lot of people is that the support for generics includes all types, structs, primitive types, objects, everything. Why bring this up I hear you wonder, well my background is primarily from working in Java. Where I first learned to put generics to work in a meaningful way. The subtle gotcha that tripped me up, I will try and explain.
This is a short post to share something neat I thought about this week and wrote. We are working in a codebase which contains a mixture of Obj-C and Swift. We faced a code smell in a new View Controller we are building, which was facing down the barrel of a giant if/else combination.
In Zendesk our API is provided by a Rails application and as such enums are represented as strings when they are serialised in JSON. Looking at our Developer Portal where you can find about all things Zendesk Rest API. We see this example, ticket fields
As part of our goal to constantly improve our app, we decided to review out permissions and look to reduce the number of items we request our users to approve.
Android hasn’t helped the cause with it’s old permission model, what has been introduced in M aka Marshmallow is a vast improvement for users and developers. It offers developers the opportunity to explain to users why and what we are asking from them in terms of access to their device and or data.
So it took me the best part of a day of hunting and hair pulling to catch this issue.
As part of some day to day development work and trying to make my colleagues subsequent work easier I wanted to create a Utility class which would provide him with a simplified way of interacting from one app to another. In order todo this we landed on Intent juggling and relying onActivityResult
Here is the code, before the fix:
PackageManager manager = context.getPackageManager();...
intent = manager.getLaunchIntentForPackage(APP_PACKAGE_NAME);
The problem, onActivityResult was returning before the called Activity had even…
This being my first blog post I am going to try and make the post small and concise and hopefully as I practise my writing I will be able to refine the process further and further and hopefully deliver content people will want to read.
This first blog post is hoping to save people the time and effort it took me to figure this stuff out, while straight forward once you know how, there is a distinct disconnect in the documentation I was using.
Google Analytics SDK Documentation (v3, because thats the version I’m currently working with)
Google Analytics offers…
Tech Lead Mobile Apps team @ Zendesk and gadget fan!