Posts tagged 'android'

My Last Three Years in Numbers

I am coming to the end of three years of working on a long running contract on a 'quantified self' system for a client, enquos. This is a system to help people measure and track their nutrition, exercise and wellbeing in order to effect change in their life. It has been a fascinating three years, but gave me an idea for a blog post: Some of the numbers of the last three years of some of the work I've been doing. Both for enquos, and also side-projects I've been working on.

So here we go...

enquos team sprint

I've been working on enquos for 1117 days. In that time I built our mobile development team from scratch and I have found/hired/managed a total of 12 developers. We have built 6 apps in total across both iOS and Android platforms. I set up a continuous integration test and build server that has started at least 3876 complete signed, distributable builds of the apps.

The iOS app has been developed over two languages (Swift and Obj-C) and three major version of Xcode (7,8 9).

Between the Android and iOS versions of the latest app 'enquos Total Health', we have over 1250 automated tests.

enquos mobile app jenkins pipeline view

The final iOS app take approx 37 minutes to build, test, package and deploy. The Android app takes approx 8 minutes to build test, package, and deploy. So assuming we built the same number for each, and over the life of the app the build time average is half the final time, then the build server has spent a total of 31 days solid building the app. Our build numbering system changed halfway through, so I reckon that 3876 is only half the number of builds we have done. And the total time and number of builds is likely double that, more like 2 months solid building.

I introduced Slack into the company and in that time there have been a total of 324,964 messages sent on Slack between us.

When I first started, the iOS app I inherited from an outsourced app development company in another country, was over 1 GB in size. It is now 84 MB, yet still retains a complete offline searchable database of nutrition items. Each entry containing up to 160 different nutrients.

enquos iOS app screenshots

In this time I have given five talks at 3 conferences and 2 user groups. I have also given four talks at schools and universities as a STEM Ambassador.

Speaking at SWMobile on automating iOS code signing

I now know more about iOS app signing and provisioning profiles than any sane human should.

Global Festival of Ideas conference game

In other projects, I built the Python back end for a budget simulation game for a UN conference on sustainable development. The game was used by 450 people at the conference over 3 days and processed a peak of 10,000 financial transactions per second. It was a collaboration between three different companies, one doing the mobile apps, one the overall idea and strategy and myself doing the backend.

Ripple trading bot app screenshot

I have also stared to learn Node.js and get more interested in cryptocurrencies. Specifically, the real-time settlement network, Ripple. You know how an international SWIFT payment takes four days to complete? Ripple does the same in 4 seconds. So fast, you can actually try and make money foreign exchange trading by sending currency back and forth across the network. I wrote a bot to do just that, which is currently trading £1.2 million per month between eight currency pairs. And making a small profit in the process.

Oh, and I've lost 10kg in weight in this time.

So if any of this experience sounds like it would benefit your project, then get in touch and let's chat! For more background on me and past experience in Plone and Python, then see my bio or linkedin profile

Automating Feature Branch Builds on iOS and Android

This is a talk given at Codemobile 2017 conference in Chester, UK. It was a 5 minute lightning talk detailing how to automate the building of apps for each and every feature branch created as part of a git-flow workflow.

Uploading Git Changelog to Fabric Beta for Android Gradle Builds in Jenkins

The git changelog is not exposed as a variable in Jenkins for pipeline builds to use. This is how we got it and send it via Gradle to Fabric Beta when we distribute our automated builds