TeamCity Kotlin REST Client
Jun 23, 2019, 8:00 PM
Whichever CI server you use for development, being able to access it programmatically via REST API is an essential capability for implementing all kinds of automation. In this article you will learn how to utilize TeamCity REST API using...
Xcode Build Settings in Depth
May 11, 2019, 8:00 PM
Getting to the rock bottom of Xcode build settings.
If you have ever done any Mac OS or iOS development, you eventually had to deal with Xcode build settings.
So what are those are what do we know about them?
For a standard iOS...
Fastlane for Enterprise
Apr 6, 2019, 8:00 PM
Learn how to use Fastlane in enterprise environment.
In case you were wondering, no - Fastlane doesn’t have an Enterprise offering. It always was and I hope will be an open-source product.
What the article really is about is how to use...
Xcode Build Phases and Environment
Apr 3, 2019, 8:00 PM
How to teach Xcode to respect the Environment.
If you’ve ever done iOS development you’ve surely used Xcode Build Phases. One of the tasks that a build phase can perform is running a shell script, and that’s where you can face one...
Swift Refactoring - Summary
Feb 5, 2019, 7:00 PM
A summary for the series of articles about implementing Swift Local Refactoring action.
If you came here after going through previous 6 articles, you may have a few questions to ask:
Was it worth it?
Sure it was.
I learned the basics...
Swift Refactoring - Debugging
Feb 4, 2019, 7:00 PM
Debugging implementation for Swift Local Refactoring action.
Previous - Implementation Part 2
Ninja
If you have built swift-refactor tool using ninja, then you’d have to use command line lldb debugger to debug the code.
So after...
Swift Refactoring - Implementation - Part 1
Feb 3, 2019, 7:00 PM
Implementing Swift Local Refactoring action.
Part 1 of 2.
Previous article - Tests
Add Refactoring Kind
The chosen “Collapse Nested If Statement” refactoring is a cursor-based refactoring, so the first thing to do is to add this code...
Swift Refactoring - Implementation - Part 2
Feb 3, 2019, 7:00 PM
Implementing Swift Local Refactoring action.
Part 2 of 2.
In the previous part we’ve implemented isApplicable check.
The very same findNestedIfStatements can be reused to implement refactoring transformation.
// 1
The first thing...
Swift Refactoring - Tests
Feb 2, 2019, 7:00 PM
Using TDD approach to implement Swift Local Refactoring action.
Previous article - Setup
TDD or Test-driven development is a perfect approach when you face a new and unfamiliar code base.
It surely helped me, I was able to wind up a...
Swift Refactoring - Setup
Feb 1, 2019, 7:00 PM
Getting Swift sources and setting up build environment to implement Swift Local Refactoring action.
Previous article - Intro
When it comes to cloning source code and building it, there’s not that much that I can add to the Swift...
Swift Refactoring - Intro
Jan 31, 2019, 7:00 PM
Introduction to a series of articles detailing how to implement a new type of Swift Local Refactoring.
So you thought about contributing to Swift code base but never knew where and how to start? Well then, Swift Local Refactoring is a...
Async Swift Scripting
Oct 7, 2015, 8:00 PM
A trick to use asynchronous callbacks in Swift scripts.
I was really inspired by this talk by Ayaka Nonaka. I personally believe that writing scripts in Swift will become A Thing very soon. It’s already happening for Mac OS X, the...
Code Coverage for iOS (Xcode 7)
Sep 20, 2015, 8:00 PM
Create code coverage reports for iOS unit tests using new Xcode 7 code coverage feature.
The Old Way
I’ll start with back reference to another post I wrote earlier, which describes the process of getting code coverage reports using...
Equatable NSObject With Swift 2
Jun 20, 2015, 8:00 PM
[Swift 2.0]
Subtle differences in implementing Equatable protocol for NSObject subclasses in Swift 1.2 and 2.0.
The best way to read this post is in Xcode playground, so go ahead and Download Playground
Equatable
Instances of the...
JIRA ID in Git Commit Messages
Jun 3, 2015, 8:00 PM
A quick tip on how to automatically add JIRA ID in each git commit message.
What & Why
JIRA or not, if you use some kind of issue tracker and want to get a certain level of integration with Git, it is a good idea to include ticket...
App Store Version Territory
May 31, 2015, 8:00 PM
Homegrown research on iOS app short and bundle version strings and how to specify them properly in respect to iTunes Connect and TestFlight.
Version Strings Intro
A typical iOS app needs 2 version strings to be defined. This is an...
Jenkins Job DSL - Configure Block
May 29, 2015, 8:00 PM
A hands-on experience with Configure Blocks in Jenkins Job DSL.
Jenkins Job SDL is a crown jewel of all the Jenkins plugins. I had a basic write up about it already, and another one in regards to DSL script properties.
This post is an...
Fix Objective-C File Header Comment
May 28, 2015, 8:00 PM
A simple way to fix file headers in your Objective-C (an not only) files.
Might be worth to clean up confusions, if any. By “file header” in this case I mean the C-style header comment like this
//
// Copyright (c) 2015 NSBogan. All...
Fix Objective-C Imports
May 28, 2015, 8:00 PM
A way to change Objective-C #import <Framework/Framework.h> to modern @import Framework;.
Modules Syntax
Objective-C modules were first introduced with iOS 7. Modules came to live for a reason, for lots of reasons. They are...
Jenkins Job DSL - Properties
May 16, 2015, 8:00 PM
Learn how to work with global properties in DSL Groovy script, and how to handle missing properties.
If you are not familiar with Jenkins Job DSL, this post may be a good starting point;
Properties
When you are working with main...
Provisioning Profiles, Sigh...
May 14, 2015, 8:00 PM
In this article you will find out why iOS provisioning profiles are a nightmare and if there is a way to automate provisioning profiles management.
Provisioning Profiles
Anyone who calls themselves an iOS Developer, knows what this is...
Hacker Rank in Swift - Reuse Code
Mar 16, 2015, 8:00 PM
[OUTDATED]
Reuse Swift IO code for multiple HackerRank assignments.
If you have read this article, you have probably noticed that code to read from stdin must be copied to each assignment file. Even though you need to copy-paste entire...
HackerRank in Swift - Makefiles
Mar 15, 2015, 8:00 PM
A basic makefile to help you with testing your HackerRank solutions locally.
So you are into HackerRank and want to be able to run the code locally before submitting it. This is useful when you have one of the test cases failing and you...
HackerRank in Swift - StdIn
Mar 14, 2015, 8:00 PM
[OUTDATED]
A way to read standard input for HackerRank assignments in Swift.
HackerRank is an amazing resource. It features lots of programming assignments from multitude of domains. This is a perfect place to prep yourself up for...
Password Generator in Swift
Feb 22, 2015, 7:00 PM
Simple password generator in Swift.
One day I was chatting with other iOS devs and someone posted an example of password generator code. The code featured “for-i-in” loops and other things which didn’t look much swifty to my eye.
I...
What's your destination?
Feb 17, 2015, 7:00 PM
Few hands on tricks about -destination option of xcodebuild.
Destination option (-destination) was a new addition to Xcode 5 release. It is documented on xcodebuild man page and you get the same by running man xcodebuild. This option...
Install Java on Mac OS X
Feb 14, 2015, 7:00 PM
A short how-to for installing and configuring Java Development Kit on Mac OS X.
Java is core technology used by CI servers like Jenkins, Bamboo and others. It is also used by Atlassian CLI Client. In fact installing and configuring JDK...
CocoaPods for Enterprise
Feb 14, 2015, 7:00 PM
A practical example of using CocoaPods for enterprise projects.
The “Enterprise” definition isn’t that clear and is not something standard. I will define it as follows.
Enterprise is a company that builds more that one app on the...
Bitbucket Branches and Jenkins Job DSL
Feb 7, 2015, 7:00 PM
A simple example of applying Jenkins Job DSL Plugin in real life.
For any real life application of any tool you have to start with real life problem or a goal you want to achieve. In this case, the goal is to generate Jenkins build...
Code Coverage for iOS (gcov)
Feb 7, 2015, 7:00 PM
Create code coverage reports for iOS unit tests using gcov tool.
Note that this approach may not work with Xcode 7 and future Xcode updates. For information on how to generate test coverage reports using new Profdata format, check this...
Clang Static Analyzer
Feb 7, 2015, 7:00 PM
A brief post about Clang Static Analyzer and scan-build tool.
Clang Static Analyzer is a source code analysis tool that finds bugs in C, C++, and Objective-C programs. Yep, no Swift yet.
Xcode and xcodebuild
You may have used it...
OCLint
Feb 7, 2015, 7:00 PM
OCLint is a fantastic static code analysis tool for improving quality and reducing defects by inspecting C, C++ and Objective-C code.
I’m not going to copy-paste the rest of oclint.org here, check it out to see what the tool can do. In...