Automation BDD DevOps Featured iOSDev

10 Things I Rocked in 2017: A Year End Review of XCBlog

On New Year’s Eve, I badly need to finish this end of review post for XCBlog to thank 2017. If you are a reader or follower of XCBlog, either on my personal blog or Medium or DZone then you must be passionate about iOS Engineering beyond development in Xcode. There are millions of developers who write Swift or Objective-C code in Xcode but real passion comes in picture when you think out of box and love to go to the bottom of the iOS geeky things. XCBlog covers crazy iOS engineering activities which includes

  • Deep Understanding  iOS Infrastructure/ecosystem
  • Scripting for Build Automation, Release Automation, Test Automation and Infrastructure Automation
  • Setting up Continuous Integration, Continuous Delivery Pipelines
  • Dealing with Code Signing, iOS Build Settings from command line
  • Packages and Dependency Management for Swift
  • Provisioning and Setting macOS Servers for CI/CD
  • Understanding Command-Line Apple Developer tools
  • Understanding Cloud Continuous Integration Services
  • Understanding Apple’s Continuous Integration system i.e Xcode Server
  • iOS DevOps

Dealing with those things needs a courage and brevity, that’s the reason XCBlog is here. I love to see how other geek iOS engineers solve these challenges learn from them, write about it and share the knowledge.

Ok. Back to topic, 2017 was the best year for XCBlog, I can’t thank enough to 2017. It offered me the lot that I may not explain in the words, but I will try to explain what I achieved, learned, gained in 2017. I am very excited to share with you few things that I feel my achievements of 2017.

PS: Apologies in advance if you feel something in this post is self-praising, self-applauding or self-promoting etc but I need this to keep my enthusiasm in 2018 to do my best.

10 Achievements of 2017

1] Published 65+ Blog Posts

I got surprised to see that, I have published 63 including this post on my personal blog and 2 guest posts on Moonpig Engineering blog in the year 2017. This means 65+ posts of the year, 5 posts per month and 1+ every week. I clearly wrote a lot this year and will carry on writing. I started 2017 with the blog post on Swift Package Manager-Deep Dive which I scheduled to publish midnight of 31st December. Since then I never stopped and posted 10 articles in January and carried on all over the year.

I wrote 10 articles in January and June and 9 in September which means half of the articles I have covered in these three months. I also published two articles on Moonpig engineering blog on iOS Continuous Delivery with Fastlane here and iOS Continuous Integration with Ansible here. It means, I wrote 65+ posts last year.

2] Published iOS App for XCBlog

One of my resolution for 2017 was to publish an iOS app for XCBlog and I started working on it. Luckily, I managed to do it in April and I wasn’t expecting that I can make such a nice and good looking app. You can download ‘XCBlog‘ app from App Store for iOS.

XCBlog iOS app has some of the cool features to read posts offline, bookmark posts and search within entire blog etc.

3] Got Published in Apple News, Medium, and DZone

XCBlog has been published on various other channels this year. The main channels are Apple News, DZone, and Medium. You can read all the XCBlog posts on these sources as well. In Apple News, you can search for the XCBlog channel to get all content on Apple News.

XCBlog has dedicated channel on Medium as well, you can find the Medium channel here

XCBlog is also getting published on DZone regularly, I have achieved Most Valuable Blogger badge on DZone for the post on iOS DevOps and Continuous Delivery. You can read all the XCBlog Posts on DZone here

I also publish posts on LinkedIn and Facebook so that It can reach to more people. Please note I never had intention to get more traffic to the website by posing content to multiple channels. I don’t earn the single penny from my blogs. I feel that content of my blogs is more valuable than Google or anyone else paying peanuts for ads and views. My intention is to learn from others and share my knowledge.

4] Published XCFit Swift Package for Protocol Oriented BDD in iOS

This year I have published Swift Library and RubyGem called XCFit to support BDD Style Testing in the iOS world without using any third party framework. XCFit is only based on Apple’s UI Testing framework XCUITest. You can read more about XCFit on GitHub here 

XCFit got 82 stars and 21 forks which means people are paying attention to it. I will look forward to improving XCFit in future as Apple releases new features.

5] Established My position as the expert in Xcode Server & iOS CI/CD Pipelines

I hesitate to call myself expert as nobody in this world is expert but go to your favorite browser and Google/Bing search for following

  • iOS Continuous Integration
  • iOS DevOps
  • Xcode Server

I bet you will find 7+ results outs of 10 from XCBlog in the first page of google/bing search. Don’t take my words try it now.

I wrote several blog posts on setting up CI/CD pipelines using Xcode Server and other CI Services like TravisCI, BuddyBuild etc. I found that most of the people contacting me saying “Thanks” for the posts and them successfully setup the release pipelines by following my posts. Apple still doesn’t have documentation for latest Xcode Server but I wrote a post to setup CI/CD using latest Xcode Server features here which got very popular and some people found it very useful. I won’t say myself the expert but a lot of people contacting me in case of issues on LinkedIn, Disqus and Email and I feel very happy to answer the queries. Some good comments on Medium as well here.

6] Established My position as the expert in XCUITest

Similar to above, I managed to be the pioneer in adopting XCUITest for iOS Apps. If you look online there might be few other posts about XCUITest but there is nothing covering the latest features of XCUITest that Apple announced in WWDC 2017. XCBlog has a most popular post on ‘Hands on XCUITest‘ which covers latest features. I wrote a lot about XCUITest and started using new features in my projects. I am also giving the talk on XCUITest on Automation Guild Conference 2018. You can find the preview here

I also ran a workshop on BDD Exchange conference, London to demonstrate XCUITest and BDD. The workshop hasn’t been recorded but people who attended provided good feedback.

7] Pioneered DevOps tooling and practices in iOS World

We faced some challenges this year to stabilize the CI servers for iOS some of them I shared in this blog post. It gives me an opportunity to explore some DevOps tools for configuration management of iOS Continuous Integration. I explored few options like Chef, Puppet, and Ansible and integrated Ansible with iOS Development. We have done it in my last role at Photobox group. You can read it about it here. Recently I have created Xcode Server Ansible role so that you can provision any macOS server to use as Xcode Server. You can read about Xcode Server and Ansible here. I am just wondering who can think of getting Ansible into iOS workflow? but we did it and I would like to say big thanks to my colleagues at Photobox to support this. I have also done some talks on iOS DevOps internally within the company which I will share early next year.

8] Published Open Source Libraries( Fastlane Plugins, Ansible Roles, Swift Packages)

In 2017, I have published some Fastlane Plugins, Ansible roles and Swift Packages. I pushed many demo projects on Github but here is the list of major open source libraries published this year.

Fastlane Plugins

This Fastlane plugin allows us to confirm the Swift version before running the CI build. You can find the documentation on Fastlane docs here

This Fastlane plugin can be used to setup and parallelize the XCUITests using LinkedIn’s Bluepill tool. You can find the Bluepiller documentation on Fastlane docs here 

Ansible Roles

I published a couple of Ansible roles on Ansible Galaxy this year. These are

This role can be used to provision any mac to be used as Xcode Server machine. You can read more about this role here 

I also another role which is very similar but can be used to setup local iOS development environments for new iOS engineer joining team. You can find more information about this role here 

Swift Packages

The only Swift Package published in 2017 is XCFit which is already mentioned above. XCFit support Cocoapods, Carthage and Swift Package Manager, you can read more XCFit here 

9] Spoken at Conferenced and Meetups

This year, I have spoken at few conference and meetups in London.

I ran the workshop on BDD Exchange 2017, London on the topic Getting Started with BDD in Swift for iOS Apps where I demonstrated how to implemented BDD for iOS Apps.

Given a talk and live coding demonstration on Full Stack BDD inside Xcode. You can watch full video of the session here 

Automation Guild

I am also giving a talk on XCUITest at online conference something called Automation Guild Conference 2018 on Getting Started with XCUITest for iOS Apps.

10] Ran Cloud iOS CI Olympics

There are multiple cloud-based Continuous Integration services available in the market at the moment. It’s very important to select the right one that suits the team or project. I have done the critical evaluation of the top 5 iOS CI services using some pre-defined criteria. There is series of blog post on this topic. You should definitely take a look at it if you looking to choose cloud-based CI service. Note that this evaluation is carried out against XCFit project so Winner is not necessarily the best choice as it can vary project to project. The final medal table looked like this out of 20 medals.

I hope, things I did in 2017 has been useful for some people and I look forward to writing and share more things all about iOS DevOps, CI/CD, and infrastructure.

Little bit of XCBlog 2017 Analytics

Now that, I have covered some of the achievements in 2017. Let’s talk about the analytics of XCBlog to see what are the top posts and who is interested in the XCBlog. There might be different stats for posts published on Medium and DZone but we will cover analytics on original posts. XCBlog has nearly 5-6K monthly views. This is a screenshot from the home page for the entire year.

There is the increasing number of new users of XCBlog every month.

Top Posts

I had a look at most viewed posts during an entire year and I found the following posts got very popular.

As you can see that the posts on XCUITest and Xcode Server with Xcode 9 integration performed much better in short duration. Below is the link to top 3 posts

How users finding XCBlog

Although XCBlog posts are getting published on different channels like Medium, DZone, LinkedIn etc, the main traffic is from organic search.
As you can see, users are finding XCBlog posts through google search. Other mediums like Medium, Facebook, and LinkedIn also help but most people finding the posts through Google search.

Where is XCBlog popular?

The maximum number of sessions for XCBlog are coming from United State followed by India and United Kingdom.
I am surprised to see the interests of engineers based in the United States in XCBlog as there are more than 20K sessions coming from the United States. There is the almost similar amount of sessions (9K) coming from India and United Kingdom. Glad to see that XCBlog is getting viewed all across the globe.
That’s all about 2017. I learned a lot in this year and I would like to thank 2017 again for the great ride. I am looking forward to doing my best in 2018 as well.

Welcome, 2018!

Whether you are a first time reader or someone who has read every single one of my posts, I hope you enjoyed this wrap up of 2017. This blog will turn 6 years old on New Year’s day 2018. I will keep my writing torch burning in years coming ahead. I have some resolutions for 2018 which are tough but I will try my best to achieve these.

Thanks a lot for reading happy new year!