This repository has been archived by the owner on Aug 14, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
feed.xml
1 lines (1 loc) · 98.3 KB
/
feed.xml
1
<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>mokacoding</title><description>A blog about testing, iOS development, productivity, and blabber about software in general.</description><link>https://mokacoding.com</link><atom:link href="https://mokacoding.com/feed.xml" rel="self" type="application/rss+xml"></atom:link><language>en-US</language><pubDate>Fri, 06 Aug 2021 12:03:27 GMT</pubDate><lastBuildDate>Fri, 06 Aug 2021 12:03:27 GMT</lastBuildDate><item><title>Test-Driven Development in Swift is now available</title><description>My book, Test-Driven Development in Swift, is now available in online bookstores everywhere. You'll learn Test-Driven Development writing a real-world SwiftUI application, including events-flow management with Combine, networking, local storage, and third-party libraries.</description><pubDate>Thu, 15 Jul 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/tdd-in-swift-book-launch</link><guid isPermaLink="true">https://mokacoding.com/blog/tdd-in-swift-book-launch</guid><category>Books</category><category>TDD</category><category>Swift</category><category>XCTest</category></item><item><title>WWDC21: What's New in Testing</title><description>A roundup of the testing-related new features announced at WWDC 2021. Including Xcode Cloud, how to test code using async/await, the new XCTExpectFailure and addTearDownBlock APIs, and the new Test Repetition configuration in Test Plans.</description><pubDate>Thu, 17 Jun 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/wwdc21-whats-new-in-testing</link><guid isPermaLink="true">https://mokacoding.com/blog/wwdc21-whats-new-in-testing</guid><category>Testing</category><category>XCTest</category><category>Swift</category><category>Talks</category></item><item><title>How to test Swift async/await code with XCTest</title><description>Swift 5.5 and Xcode 13 introduce the async/await pattern for concurrent code. This tutorial post shows how to write unit tests for asynchronous code in Swift using the XCTest framework.</description><pubDate>Mon, 07 Jun 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-test-async-await-code-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-test-async-await-code-in-swift</guid><category>Xcode</category><category>XCTest</category><category>Testing</category><category>Swift</category></item><item><title>How to write better tests for Swift date comparisons</title><description>Testing Swift date comparison code with XCTest can result in indeterministic tests because of the passage of time. To make tests robust and deterministic, decouple them from the system clock by injecting the reference date.</description><pubDate>Fri, 04 Jun 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/better-swift-date-compare-tests</link><guid isPermaLink="true">https://mokacoding.com/blog/better-swift-date-compare-tests</guid><category>Testing</category><category>Swift</category><category>XCTest</category></item><item><title>On the benefits of distributed work</title><description>Working from home doesn't have to be lonely. Going from remote to distributed can bring massive benefits to employees satisfaction and company productivity.</description><pubDate>Wed, 26 May 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/distributed-working</link><guid isPermaLink="true">https://mokacoding.com/blog/distributed-working</guid><category>Distributed</category><category>Productivity</category></item><item><title>How to manage complex inputs in your Swift tests with Scenario Builders</title><description>When writing unit tests in Swift for complex objects, you may need to write a lot of setup boilerplate code in the arrange phase. Scenario Builders are a pattern that extracts and encapsulated all that logic in a single component with an English-like API. This tutorial shows how to build a Scenario Builder in Swift and looks at its pros and cons.</description><pubDate>Wed, 28 Apr 2021 20:21:00 GMT</pubDate><link>https://mokacoding.com/blog/scenario-builders-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/scenario-builders-in-swift</guid><category>Testing</category><category>Swift</category></item><item><title>A World Without Slack</title><description>How to establish a workflow that minimizes unscheduled, unstructured communication and maximizes focus and productivity.</description><pubDate>Mon, 19 Apr 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/a-world-without-slack</link><guid isPermaLink="true">https://mokacoding.com/blog/a-world-without-slack</guid><category>books</category><category>productivity</category><category>processes</category></item><item><title>A distributed asynchronous release process</title><description>My latest post on mobile.blog explores two simple conventions Automattic uses to remove the need for synchronous meetings in their app release process.</description><pubDate>Sat, 13 Mar 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/distributed-app-release-process</link><guid isPermaLink="true">https://mokacoding.com/blog/distributed-app-release-process</guid><category>Distributed</category><category>Processes</category></item><item><title>Working Backwards</title><description>How working your way backwards from your desired outcome can make you more productive, focused, and motivated.</description><pubDate>Sat, 06 Mar 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/working-backwards</link><guid isPermaLink="true">https://mokacoding.com/blog/working-backwards</guid><category>Productivity</category></item><item><title>How waiting in line can improve your focus</title><description>Embrace boredom to train your brain to sustain focus when working on demanding tasks</description><pubDate>Tue, 16 Feb 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-waiting-in-line-can-improve-your-focus</link><guid isPermaLink="true">https://mokacoding.com/blog/how-waiting-in-line-can-improve-your-focus</guid><category>Books</category><category>Productivity</category></item><item><title>Unit Testing Combine Publisher Cheatsheet</title><description>Snippets to test the behavior of Combine Publishers in XCTest ready to copy and paste into Xcode</description><pubDate>Thu, 11 Feb 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/testing-combine-publisher-cheatsheet</link><guid isPermaLink="true">https://mokacoding.com/blog/testing-combine-publisher-cheatsheet</guid><category>Testing</category><category>Combine</category><category>Xcode</category><category>XCTest</category></item><item><title>Boring Iterations. Interesting Steps.</title><description>Camille Fournier encourages us to "Make Boring Plans" and move in small iterations.</description><pubDate>Sat, 30 Jan 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/boring-iterations-interesting-steps</link><guid isPermaLink="true">https://mokacoding.com/blog/boring-iterations-interesting-steps</guid><category>Strategy</category><category>TDD</category></item><item><title>How to migrate from SwiftUI to UIKit App Delegate Life Cycle in Xcode</title><description>This free tutorial shows how to migrate an existing app with SwiftUI life cycle to use UIKit App Delegate instead</description><pubDate>Thu, 21 Jan 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-migrate-from-swiftui-to-uikit-life-cycle</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-migrate-from-swiftui-to-uikit-life-cycle</guid><category>SwiftUI</category><category>Xcode</category></item><item><title>How to stick with your New Year resolutions</title><description>The start of a new year is a great time to work on self-improvement, but unless you take the right steps, your New Year resolutions might not stick.</description><pubDate>Fri, 01 Jan 2021 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-stick-with-your-new-year-resolutions</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-stick-with-your-new-year-resolutions</guid><category>Productivity</category></item><item><title>How to set default values in Swift compiler-generated initializers</title><description>You can get the Swift compiler to generate an initializer with default values for your structs, if you're willing to put up with a bit of mutability.</description><pubDate>Wed, 23 Dec 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-set-default-values-in-swift-compiler-generate-init</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-set-default-values-in-swift-compiler-generate-init</guid><category>Swift</category><category>Espresso</category></item><item><title>How to improve your Test-Driven Development workflow by asking "Do I need this yet?"</title><description>The "You Don't Need It Yet" technique to ship software on a schedule results in fast real-world feeback. The same mindset can be applied with Test-Driven Development to move between the Red, Green, and Refactor stages faster.</description><pubDate>Thu, 17 Dec 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/tdd-and-ydniy</link><guid isPermaLink="true">https://mokacoding.com/blog/tdd-and-ydniy</guid><category>Testing</category><category>TDD</category></item><item><title>Write better Swift unit tests with custom XCTest assertions</title><description>The XCTest Swift testing framework has a limited offer of assertions. There's only so much you can do with XCTAssertTrue and XCTAssertEqual. This XCTest tutorial shows how to create custom assertions to make your unit tests and UI tests shorter and clearer.</description><pubDate>Thu, 10 Dec 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/write-better-swift-tests-with-xctest-assertions</link><guid isPermaLink="true">https://mokacoding.com/blog/write-better-swift-tests-with-xctest-assertions</guid><category>XCTest</category><category>Xcode</category><category>Swift</category><category>Testing</category></item><item><title>How to write unit test assertions for Swift Result values</title><description>Result is one of the most useful types in the Swift language. Learn how to write better unit tests using Result in this XCTest tutorial.</description><pubDate>Wed, 02 Dec 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-write-tests-for-swift-result</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-write-tests-for-swift-result</guid><category>Swift</category><category>Testing</category><category>XCTest</category></item><item><title>When experiments go wrong</title><description>Scientist can learn a lot from failed experiments. To do so, they must be methodical and collect all sorts of information. Softwar developers can learn a lot from failures, too. What are the practicies that can make learning easier?</description><pubDate>Wed, 25 Nov 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/when-experiments-go-wrong</link><guid isPermaLink="true">https://mokacoding.com/blog/when-experiments-go-wrong</guid><category>Books</category><category>Testing</category><category>Learning</category></item><item><title>How to merge pull requests with a commit that improves your Git history</title><description>When merging a pull request on GitHub, it helps to replace the default merge commit title with the PR title or an equally descriptive one. This will make your Git history more informative, and developers will understand the changes in the Git log faster.</description><pubDate>Fri, 20 Nov 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/better-merging-for-github-pull-requests</link><guid isPermaLink="true">https://mokacoding.com/blog/better-merging-for-github-pull-requests</guid><category>GitHub</category><category>Git</category></item><item><title>How to bypass the SwiftUI App when running unit tests</title><description>How to make the unit tests of your SwiftUI app safer and faster by preventing them from running the program startup flow. This will avoid all of the launch operations like network requests or reads from the local storage that would affect the global state.</description><pubDate>Thu, 12 Nov 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/prevent-swiftui-app-loading-in-unit-tests</link><guid isPermaLink="true">https://mokacoding.com/blog/prevent-swiftui-app-loading-in-unit-tests</guid><category>Swift</category><category>SwiftUI</category><category>Xcode</category><category>Testing</category></item><item><title>How to rename a file in Vim</title><description>There are many ways to rename a file in Vim. Here's three.</description><pubDate>Fri, 06 Nov 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/vim-rename-file</link><guid isPermaLink="true">https://mokacoding.com/blog/vim-rename-file</guid><category>Espresso</category><category>Vim</category></item><item><title>How to remove trailing whitespaces from all files in a folder</title><description>Here's a shell command to trim all the trailing whitespaces in all the files of the current folder.</description><pubDate>Thu, 05 Nov 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/remove-trailing-whitespaces-in-folder-files</link><guid isPermaLink="true">https://mokacoding.com/blog/remove-trailing-whitespaces-in-folder-files</guid><category>Espresso</category><category>Terminal</category><category>Automation</category></item><item><title>How to make the View to ViewModel relationship clear</title><description>Using Swift's nested types helps making it clear that a view model belongs to a view.</description><pubDate>Wed, 04 Nov 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/nested-type-view-models</link><guid isPermaLink="true">https://mokacoding.com/blog/nested-type-view-models</guid><category>Swift</category><category>SwiftUI</category></item><item><title>Dependency Injection in SwiftUI</title><description>This post shows two ways of achieving dependency injection in SwiftUI: using @EnvironmentObject or a View Model Factory.</description><pubDate>Wed, 28 Oct 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/swiftui-dependency-injection</link><guid isPermaLink="true">https://mokacoding.com/blog/swiftui-dependency-injection</guid></item><item><title>What can a pipe wrench teach us about software engineering?</title><description>With his famous pipe wrench lecture, Vannevar Bush taught young MIT engineers the value of precision. The same teaching holds true for software developers.</description><pubDate>Wed, 21 Oct 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/pipe-wrench</link><guid isPermaLink="true">https://mokacoding.com/blog/pipe-wrench</guid><category>Books</category><category>Software Design</category><category>Swift</category></item><item><title>Hyperfocus by Chris Bailey</title><description>Hyperfocus will teach you how to concentrate effectively and let your mind wander to reach creative insights.</description><pubDate>Mon, 12 Oct 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/hyperfocus-review</link><guid isPermaLink="true">https://mokacoding.com/blog/hyperfocus-review</guid><category>Productivity</category><category>Books</category></item><item><title>You Don't Need It Yet</title><description>YDNIY is a purposeful restraint of what you decide to build in the interest of delivering value to the users as soon as possible and consistently.</description><pubDate>Wed, 07 Oct 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/you-dont-need-it-yet</link><guid isPermaLink="true">https://mokacoding.com/blog/you-dont-need-it-yet</guid><category>Software Design</category></item><item><title>"That's funny…" moments are learning opportunities</title><description>The most exciting phrase to hear in science, and software development, the one that heralds new discoveries, is not "Eureka!" but "That's funny…"</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/thats-funny-moments-are-learning-opportunities</link><guid isPermaLink="true">https://mokacoding.com/blog/thats-funny-moments-are-learning-opportunities</guid><category>Software Design</category><category>Quotes</category></item><item><title>Will iOS 14 Destroy Your Productivity?</title><description>iOS 14 introduces Widgets, a feature that makes it incredibly easy to get distracted.</description><pubDate>Mon, 21 Sep 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/will-ios-14-destroy-your-productivity</link><guid isPermaLink="true">https://mokacoding.com/blog/will-ios-14-destroy-your-productivity</guid><category>Productivity</category></item><item><title>Replace Triple-state Boolean with Enumeration</title><description>Triple-state Booleans can be ambiguous to work with. Replace them with an enum to make the code clearer.</description><pubDate>Mon, 14 Sep 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/replace-triple-boolean-with-enum</link><guid isPermaLink="true">https://mokacoding.com/blog/replace-triple-boolean-with-enum</guid><category>Swift</category></item><item><title>How to decouple unit tests from values that change frequently</title><description>When the output value of a function changes often but the logic to pick it doesn't, adding a separation layer will make unit tests easier to maintain.</description><pubDate>Tue, 01 Sep 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-decouple-tests-from-frequently-changing-values</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-decouple-tests-from-frequently-changing-values</guid><category>Swift</category><category>XCTest</category><category>Testing</category></item><item><title>How to add co-authors to a Git commit</title><description></description><pubDate>Tue, 25 Aug 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-add-coauthors-to-a-git-commit</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-add-coauthors-to-a-git-commit</guid><category>Espresso</category><category>Git</category><category>GitHub</category></item><item><title>How to check if macOS app is notarized</title><description></description><pubDate>Mon, 24 Aug 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-check-if-app-is-notarized</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-check-if-app-is-notarized</guid><category>Espresso</category></item><item><title>How to reverse a file in the terminal</title><description></description><pubDate>Sat, 22 Aug 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-reverse-a-file-in-the-terminal</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-reverse-a-file-in-the-terminal</guid><category>Espresso</category></item><item><title>How to verify your SSH private key password</title><description></description><pubDate>Thu, 20 Aug 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-verify-ssh-key-password</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-verify-ssh-key-password</guid><category>Espresso</category></item><item><title>How to check if array contains element with block in Ruby</title><description></description><pubDate>Tue, 18 Aug 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-check-if-ruby-array-contains-element</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-check-if-ruby-array-contains-element</guid><category>Ruby</category><category>Espresso</category></item><item><title>Honesty-Oriented Programming</title><description>If you focus on writing honest code, you'll end up with software that is easier to understand and work with.</description><pubDate>Sun, 12 Jul 2020 15:00:00 GMT</pubDate><link>https://mokacoding.com/blog/honesty-oriented-programming</link><guid isPermaLink="true">https://mokacoding.com/blog/honesty-oriented-programming</guid><category>Software Design</category></item><item><title>Referential Transparency in Swift</title><description>An explanation of what referential transparency means with examples in Swift</description><pubDate>Sun, 12 Jul 2020 14:00:00 GMT</pubDate><link>https://mokacoding.com/blog/referential-transparency-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/referential-transparency-in-swift</guid><category>Swift</category></item><item><title>Should you change your branch name to "main"?</title><description>In Xcode 12, the default branch name is main instead of master. This little language change has deeper implications and stirred up an hornets' nest.</description><pubDate>Wed, 24 Jun 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/main-vs-master-xcode-12</link><guid isPermaLink="true">https://mokacoding.com/blog/main-vs-master-xcode-12</guid></item><item><title>The Indistractable Developer</title><description>The quality of your focus time is directly proportional to your value in the market. Become Indistractable to maximize it.</description><pubDate>Wed, 27 May 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/the-indistractable-developer</link><guid isPermaLink="true">https://mokacoding.com/blog/the-indistractable-developer</guid><category>Productivity</category></item><item><title>How to use CocoaPods as a CLI tools manager</title><description>CocoaPods can be configured to only resolve and download dependencies, making it a great manager for vendored CLI tools</description><pubDate>Tue, 17 Mar 2020 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/cocoapods-ci-setup</link><guid isPermaLink="true">https://mokacoding.com/blog/cocoapods-ci-setup</guid><category>iOS</category><category>CocoaPods</category><category>Tooling</category></item><item><title>How to manually generate Devise reset password link</title><description></description><pubDate>Sun, 28 Jul 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-manually-generate-devise-reset-password-link</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-manually-generate-devise-reset-password-link</guid><category>Ruby on Rails</category><category>Ruby</category></item><item><title>Midwives with the Apple Watch</title><description></description><pubDate>Mon, 03 Jun 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/midwives-with-the-apple-watch</link><guid isPermaLink="true">https://mokacoding.com/blog/midwives-with-the-apple-watch</guid><category>Productivity</category><category>Deep Work</category></item><item><title>How to use social media productively</title><description>Social media can be a valuable source of news and interactions, or a disruption to our focus. The difference is in how we approach using these technologies.</description><pubDate>Tue, 30 Apr 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/social-media-operating-procedures</link><guid isPermaLink="true">https://mokacoding.com/blog/social-media-operating-procedures</guid><category>Productivity</category></item><item><title>How to run a single test in Xcode</title><description>A collection of ways to run a single test or a subset of tests using Xcode.</description><pubDate>Tue, 23 Apr 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/running-one-test-in-xcode</link><guid isPermaLink="true">https://mokacoding.com/blog/running-one-test-in-xcode</guid><category>Xcode</category><category>Testing</category><category>Productivity</category></item><item><title>How to test view controllers navigation</title><description>The answer to "How can I test that a view controller presents another view controller when something happens?" is as simple as defining a delegate.</description><pubDate>Tue, 16 Apr 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/navigation-delegate-pattern</link><guid isPermaLink="true">https://mokacoding.com/blog/navigation-delegate-pattern</guid><category>Swift</category><category>Testing</category><category>iOS</category><category>Software-Design</category></item><item><title>Take care of your tools</title><description>"You take care of your tools, your tools take care of you."</description><pubDate>Tue, 09 Apr 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/take-care-of-your-tools</link><guid isPermaLink="true">https://mokacoding.com/blog/take-care-of-your-tools</guid><category>Productivity</category></item><item><title>Code Like A Chef</title><description>Professional chefs keep their benches clean because clutter will get in the way of their work. Software developers should do the same.</description><pubDate>Tue, 02 Apr 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/code-like-a-chef</link><guid isPermaLink="true">https://mokacoding.com/blog/code-like-a-chef</guid><category>Productivity</category></item><item><title>Top 10 Productivity Books</title><description>A running list of the top 10 most impactful books on productivity I've encountered so far</description><pubDate>Tue, 26 Mar 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/top-10-productivity-books</link><guid isPermaLink="true">https://mokacoding.com/blog/top-10-productivity-books</guid><category>Productivity</category><category>Books</category></item><item><title>Why I'm cutting back on podcasts and audiobooks</title><description>I realized I was on a path to remove time for reflection from my life, mainly by filling every available moment with podcasts and audiobooks. These are the steps I'm taking to cultivate more solitude, and the benefits I'm already seeing.</description><pubDate>Tue, 19 Mar 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/podcast-addiction</link><guid isPermaLink="true">https://mokacoding.com/blog/podcast-addiction</guid><category>Productivity</category><category>Podcasts</category><category>Books</category></item><item><title>Better tests for delegates</title><description>When testing delegates, we are asserting rigid implementation details. Here's a way to make those tests more flexible.</description><pubDate>Tue, 12 Mar 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/better-tests-for-delegates</link><guid isPermaLink="true">https://mokacoding.com/blog/better-tests-for-delegates</guid><category>Swift</category><category>Testing</category></item><item><title>3 Lessons on Software Development from the New England Patriots</title><description>By looking at how the consistently successful New England Patriots operate we can learn useful lessons to apply to our job as software developers.</description><pubDate>Tue, 05 Mar 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/3-lessons-from-new-england-patriots</link><guid isPermaLink="true">https://mokacoding.com/blog/3-lessons-from-new-england-patriots</guid></item><item><title>The value of decluttering and optimizing your software</title><description>Digital minimalists believe that clutter is costly and optimization is important. Let me show you how these ideas apply to software development as well.</description><pubDate>Tue, 26 Feb 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/clutter-and-optimization</link><guid isPermaLink="true">https://mokacoding.com/blog/clutter-and-optimization</guid><category>Books</category><category>Productivity</category><category>Software Design</category></item><item><title>Code Coverage Is A Broken Metric</title><description>But you should track it anyways.</description><pubDate>Tue, 19 Feb 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/code-coverage-is-broken</link><guid isPermaLink="true">https://mokacoding.com/blog/code-coverage-is-broken</guid><category>Testing</category><category>Refactoring</category></item><item><title>Write Less Code</title><description>The best thing you can do as a software developer is not writing code, but removing it. Here's why.</description><pubDate>Wed, 13 Feb 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/wirte-less-code</link><guid isPermaLink="true">https://mokacoding.com/blog/wirte-less-code</guid><category>Productivity</category><category>Refactoring</category><category>Software Design</category></item><item><title>How to TDD in Swift, a step by step guide</title><description>With test driven development you can write high quality software in small shippable steps. Here's how to get started.</description><pubDate>Fri, 08 Feb 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/step-by-step-tdd-in-swift-part-1</link><guid isPermaLink="true">https://mokacoding.com/blog/step-by-step-tdd-in-swift-part-1</guid><category>TDD</category><category>Swift</category></item><item><title>The Productivity Project - by Chris Bailey</title><description>My notes and quotes from The Productivity Project by Chris Bailey</description><pubDate>Tue, 29 Jan 2019 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/the-productivity-project-notes</link><guid isPermaLink="true">https://mokacoding.com/blog/the-productivity-project-notes</guid><category>Productivity</category><category>Books</category></item><item><title>Test doubles in Swift: dummies, fakes, stubs, and spies.</title><description>An overview of the different kind of doubles we can use in our tests, and how to write them in Swift.</description><pubDate>Tue, 27 Nov 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/swift-test-doubles</link><guid isPermaLink="true">https://mokacoding.com/blog/swift-test-doubles</guid><category>Testing</category><category>Swift</category></item><item><title>How to become drastically faster at using the terminal</title><description>Using the terminal might seem slow and cumbersome because every command needs to be typed. Learn how to drastically reduce the amount of typing you have to do by configuring aliases for your most used commands, making them only a few keystrokes long.</description><pubDate>Tue, 20 Nov 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/terminal-aliases</link><guid isPermaLink="true">https://mokacoding.com/blog/terminal-aliases</guid><category>Productivity</category><category>Terminal</category></item><item><title>How to split decision and action logic with the Swift type system</title><description>There is a subtle way to overload software components, by making them both take decision and act on them. We can simplify these bloated components by separating the responsibility of taking decisions from the one action on them. This will result in leaner and easier to maintain software, and is made simple by the Swift type system.</description><pubDate>Tue, 13 Nov 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-split-decision-and-action-logic-with-the-swift-type-system</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-split-decision-and-action-logic-with-the-swift-type-system</guid><category>Swift</category><category>Testing</category><category>Refactoring</category></item><item><title>How to remove duplication from Swift tests with helper functions</title><description>Some code ends up requiring a lot of duplication to be tested. You can remove it by using helper functions encapsulating the shared assertion logic.</description><pubDate>Tue, 06 Nov 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-remove-duplication-from-swift-tests-with-helper-functions</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-remove-duplication-from-swift-tests-with-helper-functions</guid><category>Testing</category><category>Xcode</category><category>Swift</category><category>XCTest</category></item><item><title>Stephen King's Advice To Software Developers</title><description>In "On Writing" Stephen King shares invaluable lessons for aspiring novelists which can be applied to software development too.</description><pubDate>Tue, 30 Oct 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/stephen-king-advice-to-software-developers</link><guid isPermaLink="true">https://mokacoding.com/blog/stephen-king-advice-to-software-developers</guid><category>Books</category><category>Quotes</category><category>Productivity</category></item><item><title>Where to start to become more productive</title><description>What does it take to be productive? What does it event mean? Here's a introduction to the pillars of productivity, with many resources to start from.</description><pubDate>Tue, 23 Oct 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/where-to-start-to-become-more-productive</link><guid isPermaLink="true">https://mokacoding.com/blog/where-to-start-to-become-more-productive</guid><category>Productivity</category></item><item><title>How to write code faster using snippets</title><description>Leveraging "snippets" is a way to get faster at writing code and free mental resources for problem solving. Most IDEs and text editor offer this feature, where you can write code scaffolding with a keyboard shortcut.</description><pubDate>Tue, 16 Oct 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-write-code-faster-using-snippets</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-write-code-faster-using-snippets</guid><category>Productivity</category><category>Xcode</category><category>Automation</category></item><item><title>Streamlining tests setup with fixtures in Swift</title><description>Keeping tests short and focused is important for the health of the test suite. A fixture method to generate instances with default values in the tests helps keeping the setup code short, focused, and readable</description><pubDate>Tue, 09 Oct 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/streamlining-tests-setup-with-fixtures-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/streamlining-tests-setup-with-fixtures-in-swift</guid><category>Testing</category><category>Swift</category></item><item><title>Invest in your terminal to become a better developer</title><description>One of the best things you could do to improve as a software developer is constantly investing in your terminal setup and skills.</description><pubDate>Tue, 02 Oct 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/invest-in-your-terminal-to-become-a-better-developer</link><guid isPermaLink="true">https://mokacoding.com/blog/invest-in-your-terminal-to-become-a-better-developer</guid><category>Productivity</category><category>Tooling</category><category>Shell</category></item><item><title>What software developers can learn from Leonardo da Vinci</title><description>Leonardo da Vinci's life as told by Walter Isaacson in his biography is a source of inspiration for anyone working in a technical and creative field.</description><pubDate>Tue, 25 Sep 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/what-software-developers-can-learn-from-leonardo-da-vinci</link><guid isPermaLink="true">https://mokacoding.com/blog/what-software-developers-can-learn-from-leonardo-da-vinci</guid><category>Books</category></item><item><title>Red, green, and don't forget refactor</title><description>Test driven development works at its best when you refactor as you go. Write the failing test, write just enough code to make it pass, then and only then focus on making that code good.</description><pubDate>Tue, 18 Sep 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/red-green-and-dont-forget-refactor</link><guid isPermaLink="true">https://mokacoding.com/blog/red-green-and-dont-forget-refactor</guid><category>TDD</category></item><item><title>Action focused protocols enhance testability</title><description>Using protocols describing a single capability or action that can be performed is a way to enhance local reasoning and facilitate testability</description><pubDate>Tue, 11 Sep 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/action-focused-protocols-enhance-testability</link><guid isPermaLink="true">https://mokacoding.com/blog/action-focused-protocols-enhance-testability</guid><category>Testing</category><category>Swift</category></item><item><title>How to choose what to refactor</title><description>A way to identify the areas of code to refactor with the highest return of investment using the "focusing question" technique.</description><pubDate>Tue, 04 Sep 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-choose-what-to-refactor</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-choose-what-to-refactor</guid><category>Refactoring</category><category>Books</category><category>Productivity</category></item><item><title>How to get better at setting priorities</title><description>The focusing question, a tool devised by Gray W. Keller, is a simple yet effective way to identify work to focus on with the highest return of investment.</description><pubDate>Sat, 25 Aug 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/the-focusing-question</link><guid isPermaLink="true">https://mokacoding.com/blog/the-focusing-question</guid></item><item><title>If you're not writing tests first you're missing out</title><description>A look at the benefits of writing unit tests before production code, in other words TDD.</description><pubDate>Fri, 17 Aug 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/if-youre-not-writing-tests-first-youre-missing-out</link><guid isPermaLink="true">https://mokacoding.com/blog/if-youre-not-writing-tests-first-youre-missing-out</guid><category>Testing</category><category>TDD</category></item><item><title>"Does Software Understand Complexity?" via Michael Feathers</title><description>Thoughts on a Michael Feathers post on how the understanding of complexity in software development compares to other fields.</description><pubDate>Sun, 12 Aug 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/does-software-understand-complexity-m-feathers</link><guid isPermaLink="true">https://mokacoding.com/blog/does-software-understand-complexity-m-feathers</guid></item><item><title>Apps and Tools</title><description>A list of the apps and tools I use everyday and help me getting stuff done.</description><pubDate>Sat, 28 Jul 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/apps-and-tools-i-use</link><guid isPermaLink="true">https://mokacoding.com/blog/apps-and-tools-i-use</guid><category>Apps</category></item><item><title>4 books to kick start 2018</title><description>Books suggestions to start 2018 with the right mindset and tools.</description><pubDate>Mon, 01 Jan 2018 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/books-to-start-2018</link><guid isPermaLink="true">https://mokacoding.com/blog/books-to-start-2018</guid><category>Books</category></item><item><title>Symbolic links in Git</title><description>Here's how to track symbolic liks in a Git repository, in a way suitable for teams.</description><pubDate>Tue, 12 Sep 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/symliks-in-git</link><guid isPermaLink="true">https://mokacoding.com/blog/symliks-in-git</guid><category>Espresso</category><category>Git</category></item><item><title>Quick beforeSuite and afterSuite behaviour</title><description>A look at how beforeSuite and afterSuite behave in the Quick testing framework, and the dangers of using them</description><pubDate>Thu, 11 May 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/quick-beforesuite-aftersuite-behaviour</link><guid isPermaLink="true">https://mokacoding.com/blog/quick-beforesuite-aftersuite-behaviour</guid><category>Quick</category><category>Espresso</category><category>Testing</category></item><item><title>Quick beforeEach and afterEach behaviour</title><description>A look at how nested beforeEach and afterEach behave in the Quick testing framework.</description><pubDate>Mon, 08 May 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/quick-beforeeach-aftereach-behaviour</link><guid isPermaLink="true">https://mokacoding.com/blog/quick-beforeeach-aftereach-behaviour</guid><category>Quick</category><category>Espresso</category><category>Testing</category></item><item><title>Nimble: when to use waitUntil or toEventually</title><description>The Nimble matchers framework provides two ways assert expectations on asynchronous code, this post explores when to use one or the other.</description><pubDate>Fri, 05 May 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/waituntil-vs-toeventually</link><guid isPermaLink="true">https://mokacoding.com/blog/waituntil-vs-toeventually</guid><category>Testing</category><category>Nimble</category><category>Swift</category></item><item><title>Unless.swift</title><description>Porting Ruby's unless operator into Swift via a function.</description><pubDate>Tue, 04 Apr 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/unless-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/unless-swift</guid><category>Swift</category><category>Espresso</category></item><item><title>XCTest closure based expectations</title><description>Testing async code is not simple, but XCTest provides us with all the required tool. This post shows how to wait for an expectation to be fulfilled based on a Swift closure.</description><pubDate>Wed, 22 Mar 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xctest-closure-based-expectation</link><guid isPermaLink="true">https://mokacoding.com/blog/xctest-closure-based-expectation</guid><category>Swift</category><category>XCTest</category><category>Testing</category></item><item><title>How to use dependency injection for classes in Swift</title><description>In Swift it is possible to pass a reference to a type itself, not just to an instance of it. This post shows how to use this capability to test legacy code.</description><pubDate>Wed, 01 Mar 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/dependency-injection-for-classes-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/dependency-injection-for-classes-in-swift</guid><category>Swift</category><category>Testing</category></item><item><title>Lessons learned working on danger-switlint selective linting</title><description>A little post to share some things I learnt while working on a PR for danger-swiftlint to allow selective linting.</description><pubDate>Thu, 26 Jan 2017 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/lessons-learned-working-on-danger-swiftlint-selective-linting</link><guid isPermaLink="true">https://mokacoding.com/blog/lessons-learned-working-on-danger-swiftlint-selective-linting</guid><category>Espresso</category><category>Ruby</category><category>Open Source</category></item><item><title>Your Git Log Should Tell A Story</title><description>A look at the practical benefits of writing descriptive commits</description><pubDate>Mon, 19 Dec 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/your-git-log-should-tell-a-story</link><guid isPermaLink="true">https://mokacoding.com/blog/your-git-log-should-tell-a-story</guid><category>Git</category></item><item><title>Better Xcode Run Script Build Phases</title><description>Practical tips to write "Run Script" build phases in Xcode.</description><pubDate>Mon, 07 Nov 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/better-build-phase-scripts</link><guid isPermaLink="true">https://mokacoding.com/blog/better-build-phase-scripts</guid><category>Xcode</category></item><item><title>Setting Up Firebase Without Using CocoaPods</title><description>A guide on how to configure your Xcode project to use Google Firebase without using CocoaPods.</description><pubDate>Mon, 15 Aug 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/setting-up-firebase-without-cocoapods</link><guid isPermaLink="true">https://mokacoding.com/blog/setting-up-firebase-without-cocoapods</guid><category>Xcode</category><category>Firebase</category><category>Espresso</category></item><item><title>Implicitly vs Force Unwrapping Swift Optionals</title><description>A look at what implicitly unwrapping and force unwrap a Swift Optional mean, and how they differ from each other.</description><pubDate>Tue, 09 Aug 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/impliticly-vs-force-unwrapping-swift-optionals</link><guid isPermaLink="true">https://mokacoding.com/blog/impliticly-vs-force-unwrapping-swift-optionals</guid><category>Swift</category></item><item><title>Cloud 66 Postfix Deploy Hook</title><description>A deploy hook to configure Postfix every time a Cloud 66 stack is built</description><pubDate>Mon, 01 Aug 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/cloud-66-postfix-deploy-hook</link><guid isPermaLink="true">https://mokacoding.com/blog/cloud-66-postfix-deploy-hook</guid><category>Espresso</category><category>Cloud 66</category><category>DevOps</category></item><item><title>Why Implicitly Unwrapping Swift Optionals Is Dangerous</title><description>A look at what implicitly unwrapping an Optional value means and why it should be avoided.</description><pubDate>Tue, 26 Jul 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/why-implicitly-unwrapping-swift-optionals-is-dangerous</link><guid isPermaLink="true">https://mokacoding.com/blog/why-implicitly-unwrapping-swift-optionals-is-dangerous</guid><category>Swift</category></item><item><title>Swift Either enum</title><description>This post introduces the Either type and shows a practical application of it in Swift, injecting extra cells in a table view.</description><pubDate>Mon, 18 Jul 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/swift-either</link><guid isPermaLink="true">https://mokacoding.com/blog/swift-either</guid><category>Swift</category><category>Haskell</category></item><item><title>Strong Opinions Loosely Held</title><description>Strong opinions loosely held, and other cornerstones for a winning mindset</description><pubDate>Fri, 08 Jul 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/strong-opinions-loosely-held</link><guid isPermaLink="true">https://mokacoding.com/blog/strong-opinions-loosely-held</guid><category>Podcasts</category><category>Espresso</category><category>Quotes</category></item><item><title>Writing your own Swift "if let"</title><description>An exercise to understand Swift's optional type: reimplementing the if let functionality</description><pubDate>Thu, 07 Jul 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/writing-your-own-swift-if-let</link><guid isPermaLink="true">https://mokacoding.com/blog/writing-your-own-swift-if-let</guid><category>Swift</category><category>Espresso</category></item><item><title>What is an optional value in Swift</title><description>This post looks into one of Swift's most powerful feature: optionals</description><pubDate>Thu, 30 Jun 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/what-is-an-optional-value-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/what-is-an-optional-value-in-swift</guid><category>Swift</category></item><item><title>Maintaining Sanity with Multiple Versions of Xcode</title><description>Working with Xcode and Xcode-beta on the same machine can sometimes be confusing, this post shares some tools to help make it less so.</description><pubDate>Mon, 20 Jun 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/maintaining-sanity-with-multiple-versions-of-xcode</link><guid isPermaLink="true">https://mokacoding.com/blog/maintaining-sanity-with-multiple-versions-of-xcode</guid><category>Xcode</category><category>Productivity</category></item><item><title>How to make Swift methods unavailable</title><description>A quick post showing how to use the Swift availability attribute to mark objects and functions as unavailable.</description><pubDate>Tue, 07 Jun 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/swift-unavailable-how-to</link><guid isPermaLink="true">https://mokacoding.com/blog/swift-unavailable-how-to</guid><category>Swift</category><category>Espresso</category></item><item><title>Functional Core Reactive Shell</title><description>This is a blogpost version of the content of my talk "Functional Core, Reactive Shell"</description><pubDate>Wed, 01 Jun 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/functional-core-reactive-shell</link><guid isPermaLink="true">https://mokacoding.com/blog/functional-core-reactive-shell</guid><category>Functional Programming</category><category>Functional Reactive Programming</category><category>Talks</category><category>Swift</category><category>Software Design</category></item><item><title>Language Agnostic Automation Setup</title><description>Every project can benefit from having a set of scripts to automate tasks such as running tests or distributing to testers. When setting up automation for your projects you can use a language agnostic setup. This will make it easier for new team members to get started, and allow you to change the setup without having to change the way the scripts are invoked.</description><pubDate>Tue, 17 May 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/language-agnostic-automation-setup</link><guid isPermaLink="true">https://mokacoding.com/blog/language-agnostic-automation-setup</guid><category>Automation</category><category>Continuous Integration</category><category>Productivity</category></item><item><title>NSDateFormatter format for JSON dates</title><description>How to configure NSDateFormatter to work with JSON API dates.</description><pubDate>Thu, 12 May 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/nsdateformatter-json-date</link><guid isPermaLink="true">https://mokacoding.com/blog/nsdateformatter-json-date</guid><category>Swift</category><category>Foundation</category><category>JSON</category><category>Espresso</category></item><item><title>"Functional Core, Reactive Shell" Resources</title><description>Links from my "Functional Core, Reactive Shell" talk</description><pubDate>Fri, 15 Apr 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/functional-core-reactive-shell-resources</link><guid isPermaLink="true">https://mokacoding.com/blog/functional-core-reactive-shell-resources</guid><category>Espresso</category><category>Talks</category></item><item><title>Getting Started With Automation</title><description>A collection of tips to get you started with workflow automation, increase productivity, and save time.</description><pubDate>Tue, 29 Mar 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/getting-started-with-automation</link><guid isPermaLink="true">https://mokacoding.com/blog/getting-started-with-automation</guid><category>Automation</category></item><item><title>Using Swift protocols to abstract third party dependencies and improve testability</title><description>Third party code can be hard to test, but you can use Swift's protocols to abstract its details and improve testability</description><pubDate>Wed, 02 Mar 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/using-swift-protocols-to-improve-testability</link><guid isPermaLink="true">https://mokacoding.com/blog/using-swift-protocols-to-improve-testability</guid><category>testing</category><category>swift</category></item><item><title>How to update all plug-ins for the latest version of Xcode and Xcode-beta</title><description>An handy script to update all Xcode plug-ins to be compatible with the latest version of Xcode and Xcode-beta.</description><pubDate>Wed, 24 Feb 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/update-all-xcode-plugins-for-latest-version</link><guid isPermaLink="true">https://mokacoding.com/blog/update-all-xcode-plugins-for-latest-version</guid><category>Espresso</category><category>Xcode</category></item><item><title>Getting Started With OHHTTPStubs</title><description>Good unit tests are fast and deterministic. Testing code that hits the network could undermine this goal, but using OHHTTPStubs we can take back control of our tests. This post explores the advantages of stubbing the network, and provide a guide on how to do it with OHHTTPStubs.</description><pubDate>Tue, 23 Feb 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/ohhttpstubs</link><guid isPermaLink="true">https://mokacoding.com/blog/ohhttpstubs</guid><category>Testing</category><category>iOS</category></item><item><title>Why hitting the network is bad for your test, and what to do about it</title><description>In this post we are going to look at why hitting the network from your unit tests is a bad thing, and introduce some way to solve the problem.</description><pubDate>Tue, 16 Feb 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/why-hitting-the-network-is-bad-for-your-tests</link><guid isPermaLink="true">https://mokacoding.com/blog/why-hitting-the-network-is-bad-for-your-tests</guid><category>Testing</category></item><item><title>Ruby for iOS Developers - Managing Ruby Tools with Bundler</title><description>Between CocoaPods and Fastlane, Ruby is an important part of the iOS developer toolchain. How can we reliably control the versions of the tools our project's automation is using in Ruby? Bundler is a simple way to specify Ruby dependencies and automate their setup.</description><pubDate>Wed, 10 Feb 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/ruby-for-ios-developers-bundler</link><guid isPermaLink="true">https://mokacoding.com/blog/ruby-for-ios-developers-bundler</guid><category>Ruby</category><category>Automation</category></item><item><title>Ruby for iOS Developers - Managing Ruby Versions</title><description>Between CocoaPods and Fastlane, Ruby is an important part of the iOS developer toolchain. Managing versions and gems can be a challenge for developers outside of the Ruby community, but it doesn't have to be. In this two parts post we will see how to simply and reliably handle our Rubies.</description><pubDate>Tue, 02 Feb 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/ruby-for-ios-developers</link><guid isPermaLink="true">https://mokacoding.com/blog/ruby-for-ios-developers</guid><category>Ruby</category><category>Automation</category></item><item><title>How To Fix Fabric Crashing On Startup When Installed Via CocoaPods</title><description>If you are experiencing crashes with a version of Fabric and Crashlytics installed via CocoaPods chances are you are missing required information in the Info.plist. This post shows how to solve this issue.</description><pubDate>Thu, 28 Jan 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-fix-fabric-startup-crash</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-fix-fabric-startup-crash</guid><category>Espresso</category><category>iOS</category></item><item><title>Async Testing with Quick and Nimble</title><description>A look at how to write tests for async code when using the Quick and Nimble Swift frameworks. This post is part of the Practical Testing in Swift series.</description><pubDate>Wed, 27 Jan 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/async-testing-with-quick-and-nimble</link><guid isPermaLink="true">https://mokacoding.com/blog/async-testing-with-quick-and-nimble</guid><category>Swift</category><category>Testing</category></item><item><title>Testing Delegates in Swift with XCTest</title><description>In this second post of the Practical Testing in Swift we a look at strategies to test how objects call their delegate methods or set property on them.</description><pubDate>Tue, 19 Jan 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/testing-delegates-in-swift-with-xctest</link><guid isPermaLink="true">https://mokacoding.com/blog/testing-delegates-in-swift-with-xctest</guid><category>Swift</category><category>Testing</category><category>XCTest</category></item><item><title>Testing callbacks in Swift with XCTest</title><description></description><pubDate>Tue, 12 Jan 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/testing-callbacks-in-swift-with-xctest</link><guid isPermaLink="true">https://mokacoding.com/blog/testing-callbacks-in-swift-with-xctest</guid><category>Testing</category><category>XCTest</category><category>Swift</category></item><item><title>Prevent Unit Tests from Loading AppDelegate in Swift</title><description>How to prevent the unit test target from loading the AppDelegate and have faster tests execution.</description><pubDate>Fri, 08 Jan 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/prevent-unit-tests-from-loading-app-delegate-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/prevent-unit-tests-from-loading-app-delegate-in-swift</guid><category>Xcode</category><category>Swift</category><category>Testing</category></item><item><title>How to use a double slash in xcconfig files</title><description>A short post showing how to use a double slash in xcconfig files, for example to write URLs like https://mokacoding.com</description><pubDate>Sat, 02 Jan 2016 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/double-slash-xcconfig</link><guid isPermaLink="true">https://mokacoding.com/blog/double-slash-xcconfig</guid><category>Xcode</category><category>Espresso</category></item><item><title>2015 Retrospective</title><description>A retrospective on my consulting business in 2015. What when well, what didn't and how to act on it, how to move forward in 2016. I think my personal experience could be valuable for every iOS freelancer, I have done a couple of things right that helped my business a lot.</description><pubDate>Wed, 30 Dec 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/2015-retrospective</link><guid isPermaLink="true">https://mokacoding.com/blog/2015-retrospective</guid><category>Retrospective</category></item><item><title>Opening a PR to Bitbucket from the terminal</title><description>A simple script you can run to open a PR on BitBucket for your current branch.</description><pubDate>Thu, 26 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/bitbucket-pr-from-command-line</link><guid isPermaLink="true">https://mokacoding.com/blog/bitbucket-pr-from-command-line</guid><category>Espresso</category><category>Automation</category><category>BitBucket</category></item><item><title>How to update an Xcode plug-in for the latest version of Xcode</title><description>A simple command to run in your terminal to make sure you can use your favourite plugins on the latest version of Xcode</description><pubDate>Wed, 25 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xcode-plugins-update</link><guid isPermaLink="true">https://mokacoding.com/blog/xcode-plugins-update</guid><category>Espresso</category><category>Xcode</category></item><item><title>Hacker News Button</title><description>How to add an Hacker News button to your blog</description><pubDate>Tue, 24 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/hacker-news-button</link><guid isPermaLink="true">https://mokacoding.com/blog/hacker-news-button</guid><category>Espresso</category></item><item><title>Installing Xcode plugins from the terminal with Fastlane</title><description>How to install Xcode plugins from the terminal using Fastlane, and persist them across machines.</description><pubDate>Tue, 17 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/install-xcode-plugin-with-fastlane</link><guid isPermaLink="true">https://mokacoding.com/blog/install-xcode-plugin-with-fastlane</guid><category>Xcode</category><category>Fastlane</category></item><item><title>Injecting environment variables from a file with xargs</title><description>How to provide environment variables stored in a .env file as an input for a command execution without having to export then, with a deep look at the shell commands used.</description><pubDate>Fri, 13 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/env-xargs</link><guid isPermaLink="true">https://mokacoding.com/blog/env-xargs</guid><category>Espresso</category><category>Shell</category><category>Tooling</category></item><item><title>How to configure Travis CI for iOS testing</title><description>A practical guide on how to configure Travis CI to run iOS, and OS X, tests.</description><pubDate>Tue, 10 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/travis-ci-ios-testing</link><guid isPermaLink="true">https://mokacoding.com/blog/travis-ci-ios-testing</guid><category>Continuous Integration</category><category>Travis CI</category><category>Xcode</category></item><item><title>How to use Homebrew in CI</title><description>A quick guide on how to safely use Homebrew in CI.</description><pubDate>Wed, 04 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/homebrew-in-ci-script</link><guid isPermaLink="true">https://mokacoding.com/blog/homebrew-in-ci-script</guid><category>Continuous Integration</category><category>Homebrew</category><category>Espresso</category></item><item><title>How to configure CircleCI for iOS testing</title><description>A practical guide on how to configure CircleCI for to run iOS, and OS X, tests.</description><pubDate>Tue, 03 Nov 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/circle-ci-ios-testing</link><guid isPermaLink="true">https://mokacoding.com/blog/circle-ci-ios-testing</guid><category>Continuous Integration</category><category>CircleCI</category><category>Xcode</category></item><item><title>Fixing Bugs Driven By Tests in Swift</title><description>Unit and acceptance test are powerful tools that can be used to identify and fix bugs. Let's see how using a bugged Swift app as an example.</description><pubDate>Wed, 28 Oct 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/fixing-bugs-driven-by-tests-in-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/fixing-bugs-driven-by-tests-in-swift</guid><category>Testing</category><category>Swift</category><category>Acceptance Testing</category><category>UI Testing</category></item><item><title>How To Sharpen Your Software Developer Tools</title><description>Practical advices on how to keep your tools sharp, master them, and become more productive.</description><pubDate>Tue, 20 Oct 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/tools-sharpening</link><guid isPermaLink="true">https://mokacoding.com/blog/tools-sharpening</guid></item><item><title>Xcodebuild Destination Cheatsheet</title><description>A collection of tips on how to configure the -destination option for the xcodebuild tool.</description><pubDate>Tue, 13 Oct 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xcodebuild-destination-options</link><guid isPermaLink="true">https://mokacoding.com/blog/xcodebuild-destination-options</guid><category>Xcode</category></item><item><title>The best free RSS reader app ever: IFTTT + Pocket</title><description>By using the powerful automation provided by IFTTT we can make deliver the latest posts of your favourite blogs to Pocket. This is the most powerful RSS reader ever, and it is free.</description><pubDate>Thu, 08 Oct 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/ifttt-pocket-rss</link><guid isPermaLink="true">https://mokacoding.com/blog/ifttt-pocket-rss</guid><category>Automation</category><category>Espresso</category></item><item><title>When to use map, flatMap, or for loops in Swift</title><description>Swift allows us to natively iterate over arrays using map. Map could be used to replace every for loop in your code, but that's not a great idea. Map and for have different purposes and should be used appropriately</description><pubDate>Mon, 05 Oct 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/when-to-use-map-flatmap-for</link><guid isPermaLink="true">https://mokacoding.com/blog/when-to-use-map-flatmap-for</guid><category>Swift</category></item><item><title>How to display relative line numbers in NERDTree</title><description>Vim's relative line numbers are great for jumpin around files, and once you get used to them you want to enable them everywhere. Here's how to have NERDTree use relative line numbers</description><pubDate>Thu, 01 Oct 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/NERDTree-relative-numbers</link><guid isPermaLink="true">https://mokacoding.com/blog/NERDTree-relative-numbers</guid><category>Vim</category><category>Espresso</category></item><item><title>Automated Xcode version and build numbering via Git</title><description>How to configure Xcode to automatically set the version and build number of your projects using Git.</description><pubDate>Tue, 29 Sep 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/automatic-xcode-versioning-with-git</link><guid isPermaLink="true">https://mokacoding.com/blog/automatic-xcode-versioning-with-git</guid><category>Xcode</category><category>Automation</category><category>Productivity</category></item><item><title>How to always use the latest Simulator with Xcodebuild</title><description>There is a simple keyword you can use in the destination option of an xcodebuild command to always run the most recent Simulator version.</description><pubDate>Fri, 25 Sep 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-always-run-latest-simulator-cli</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-always-run-latest-simulator-cli</guid><category>Xcode</category><category>Automation</category><category>Espresso</category></item><item><title>Swift Optionals, Functional Programming, and You</title><description>This is the post version of a talk I've been given in the past months. In this post we will demystify functional programming terms like monad and functor, and see how those concepts can be brought back to the every day Swift development, in particular how they can help to deal with optionals in a leaner way.</description><pubDate>Tue, 22 Sep 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/demistifying-swift-functor</link><guid isPermaLink="true">https://mokacoding.com/blog/demistifying-swift-functor</guid><category>Swift</category><category>Functional Programming</category></item><item><title>An even lighter way to use Carthage</title><description>Among the options Carthage, an iOS and OS X dependency manager, provides there is the --no-build one. Using this we can integrate dependencies in the form of Xcode projects rather than frameworks, keeping the repository slimmer and the CI time low. This approach is lighter than than the usual way to work with Carthage, but comes with some disadvantages too.</description><pubDate>Tue, 15 Sep 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/carthage-no-build</link><guid isPermaLink="true">https://mokacoding.com/blog/carthage-no-build</guid><category>Carthage</category><category>Xcode</category></item><item><title>How to install Xcode Command Line Tools without GUI or Xcode</title><description>Here's a little script that will allow you to install the Xcode Command Line Tools without having to install Xcode, nor having a logged GUI. This can come pretty handy in automated scripts or when provisioning virtual machines.</description><pubDate>Wed, 09 Sep 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/how-to-install-xcode-cli-tools-without-gui</link><guid isPermaLink="true">https://mokacoding.com/blog/how-to-install-xcode-cli-tools-without-gui</guid><category>Espresso</category><category>Xcode</category><category>Automation</category></item><item><title>/dev/world/2015 notes of a testing fanboy</title><description>I attended /dev/world/2015 in Melbourne this week. It has been a great conference, full of very friendly and smart people. Being a test and automation fanboy I attended as many talks related to that topic as I could. These are my notes.</description><pubDate>Tue, 08 Sep 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/devworld2015-notes-of-a-testing-fanboy</link><guid isPermaLink="true">https://mokacoding.com/blog/devworld2015-notes-of-a-testing-fanboy</guid><category>Testing</category><category>Tooling</category><category>Automation</category><category>Conferences</category></item><item><title>Enhancing XCTest test cases with Nimble matchers</title><description>Nimble is a matchers framework built for Swift that provides powerful and versatile expectations. Writing test within the standard XCTest harness but using Nimble assertions is easier and productive, and a good combination of tools to introduce testing and TDD to colleagues and teams in a frictionless way.</description><pubDate>Tue, 25 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xctest-nimble</link><guid isPermaLink="true">https://mokacoding.com/blog/xctest-nimble</guid><category>Swift</category><category>TDD</category><category>Nimble</category></item><item><title>AFNetworking custom response serializer to add error information</title><description>How to implement a custom AFNetworking response serializer to read the failure response data and populate the callback error with it.</description><pubDate>Wed, 19 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/custom-afnetworking-response-serializer-for-errors</link><guid isPermaLink="true">https://mokacoding.com/blog/custom-afnetworking-response-serializer-for-errors</guid><category>Espresso</category><category>iOS</category><category>Objective-C</category></item><item><title>Explicit Dependencies, Swift Edition</title><description>A look at how to write classes and structs that expose their dependencies as initialization arguments in Swift.</description><pubDate>Tue, 18 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/explicit-dependencies-swift</link><guid isPermaLink="true">https://mokacoding.com/blog/explicit-dependencies-swift</guid><category>Testing</category><category>Software Design</category><category>Swift</category></item><item><title>How to have multiple iTunes Connect accounts, and submit apps</title><description></description><pubDate>Sat, 15 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/itunes-connect-multiple-accounts</link><guid isPermaLink="true">https://mokacoding.com/blog/itunes-connect-multiple-accounts</guid><category>Espresso</category><category>iTunes Connect</category></item><item><title>Swift array of characters from String</title><description>How to get an array of single characters String from a multiple characters String. From foobar to [f, o, o, b, a, r].</description><pubDate>Wed, 12 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/swift-array-string-characters</link><guid isPermaLink="true">https://mokacoding.com/blog/swift-array-string-characters</guid><category>Swift</category><category>Espresso</category></item><item><title>Explicit Dependencies for Code with No Surprises</title><description>Sometimes the idea we get when reading a class interface is different from what is actually going on inside its implementation, for example there could be several hidden dependencies. Making a class dependency explicit in its interface is a useful technique to make the code simpler to understand, and easier to test.</description><pubDate>Tue, 11 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/explicit-dependencies</link><guid isPermaLink="true">https://mokacoding.com/blog/explicit-dependencies</guid><category>Testing</category><category>Objective-C</category><category>Software-Design</category></item><item><title>How to reuse the last parameter in a terminal command</title><description>When typing a shell command it is possible to reuse the last argument of the previous call without having to type it. Let's see how.</description><pubDate>Wed, 05 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/terminal-reusing-last-command-parameter</link><guid isPermaLink="true">https://mokacoding.com/blog/terminal-reusing-last-command-parameter</guid><category>Shell</category><category>Espresso</category></item><item><title>Keep Your Bench Clean</title><description>Like good chefs keep their benches clean to make delicious dishes all day long in the restaurants' kitchens, so good developer keep their codebase clean. It all comes down to little habits, the result of which when summed up together is a tidy, clean and easy to maintain software.</description><pubDate>Tue, 04 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/keep-your-bench-clean</link><guid isPermaLink="true">https://mokacoding.com/blog/keep-your-bench-clean</guid><category>Productivity</category></item><item><title>Packaging an ipa with Swift files from the terminal</title><description>If you are having problems with xcodebuild failing to export your apps with either Swift or Watch Kit support here's the solution, with a handy custom script.</description><pubDate>Mon, 03 Aug 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/packaging-swift-ipa</link><guid isPermaLink="true">https://mokacoding.com/blog/packaging-swift-ipa</guid><category>Espresso</category><category>Swift</category><category>Automation</category><category>TestFlight</category></item><item><title>How to test UI changes in Xcode 7</title><description>One of the characteristic of the UI is that it changes, and there are scenarios in which writing UI tests to assure that the change has happened correctly can be very valuable for the reliability of our apps. Writing such a test is a bit harder than normal, let's see how to do it.</description><pubDate>Sat, 25 Jul 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xcode-ui-test-view-changes</link><guid isPermaLink="true">https://mokacoding.com/blog/xcode-ui-test-view-changes</guid><category>Acceptance Testing</category><category>UI Testing</category><category>iOS</category></item><item><title>How to add testing dependencies using Carthage, with Swift 2 and Xcode 7</title><description>In this little tutorial we will see how to use Cathage, an OS X and iOS depencendy manager, to install libraries written in Swift 2 and Xcode 7, with a focus on the process to get testing dependencies.</description><pubDate>Tue, 21 Jul 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/setting-up-testing-libraries-with-carthage-xcode7</link><guid isPermaLink="true">https://mokacoding.com/blog/setting-up-testing-libraries-with-carthage-xcode7</guid><category>Xcode</category><category>Carthage</category><category>Tooling</category></item><item><title>Swift Functors, Applicatives, and Monads in Pictures</title><description>In this port to Swift of the great of Haskell's "Functors, Applicatives, And Monads In Pictures" we are going to look at these functional programming concepts aided by some very helpful pictures.</description><pubDate>Tue, 14 Jul 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/functor-applicative-monads-in-pictures</link><guid isPermaLink="true">https://mokacoding.com/blog/functor-applicative-monads-in-pictures</guid><category>Swift</category><category>Functional Programming</category></item><item><title>XVim, harnessing the king of text editor's power in Xcode</title><description>An introduction to the XVim plugin, that adds most Vim keybindings and features to the Xcode IDE, and how this can make you more productive as a developer.</description><pubDate>Tue, 07 Jul 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xvim</link><guid isPermaLink="true">https://mokacoding.com/blog/xvim</guid><category>Productivity</category><category>Xcode</category></item><item><title>Testing Realm apps</title><description>Realm is a mobile database that, unlike CoreData, is easy to test. In this post we will discuss some ideas on how to test an app using Realm as its database.</description><pubDate>Tue, 30 Jun 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/testing-realm-apps</link><guid isPermaLink="true">https://mokacoding.com/blog/testing-realm-apps</guid><category>Testing</category></item><item><title>The value of acceptance testing for mobile projects</title><description>Companion blogpost for Gio's talk "Talking myself into the value of acceptance testing" at Melbourne CocoaHeads meetup</description><pubDate>Tue, 23 Jun 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/the-value-of-acceptance-testing</link><guid isPermaLink="true">https://mokacoding.com/blog/the-value-of-acceptance-testing</guid><category>Acceptance Testing</category></item><item><title>Xcode 7 UI testing, a first look</title><description>How to get started with UI testing in Xcode 7, recording tests and using the new APIs to assert the state of the application under test.</description><pubDate>Tue, 16 Jun 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xcode-7-ui-testing</link><guid isPermaLink="true">https://mokacoding.com/blog/xcode-7-ui-testing</guid><category>Acceptance Testing</category><category>UI Testing</category><category>Xcode</category></item><item><title>MailChimp automated workflow for mokacoding weekly</title><description>At mokacoding we're big on automation, and we eat our own dog's food! The workflow to write and send new issues of our newsletter, mokacoding weekly, is (partially) automated thanks to some simple Ruby scripting and Mac command line utilities.</description><pubDate>Tue, 09 Jun 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/automating-mokacoding-weekly</link><guid isPermaLink="true">https://mokacoding.com/blog/automating-mokacoding-weekly</guid><category>Automation</category><category>Productivity</category></item><item><title>Automation with pre-commit hooks</title><description>Git provides a mechanism to run one or more scripts before a commit is actually added to the history called pre-commit hook. We can use this hook to run scripts that validate or sanitise the changes to be committed automatically, saving time and brain power, and assuring the quality of the codbase and git log.</description><pubDate>Wed, 03 Jun 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/pre-commit-hooks</link><guid isPermaLink="true">https://mokacoding.com/blog/pre-commit-hooks</guid><category>Git</category><category>Automation</category></item><item><title>xUnique: a tool to avoid Xcode project merge conflicts</title><description>How many times when working on a Mac OSX or iOS app with a team have you had a merge conflict on the project.pbxproj file? I guess more than a few, a lot more than a few. Lucky for you there is an handy tool called xUnique that will make the chances of this happening way smaller.</description><pubDate>Tue, 12 May 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xunique</link><guid isPermaLink="true">https://mokacoding.com/blog/xunique</guid><category>Xcode</category><category>Automation</category><category>Productivity</category></item><item><title>Writing an Expecta custom matcher</title><description>Not only Expecta is a simple to use library that allows us to write highly readable code, but it can also be extended by the users with custom matchers. Let's see how to write a custom matcher to gain readability and reuse code in our test suites.</description><pubDate>Tue, 05 May 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/expecta-custom-matchers</link><guid isPermaLink="true">https://mokacoding.com/blog/expecta-custom-matchers</guid><category>Specta</category><category>Expecta</category></item><item><title>Expecta, a matcher library that speaks English</title><description>A test that express is intent clearly is arguably twice as effective as one that doesn't. Writing test in an xSpec style is a good first step to express behaviour clearly, and when matched with a matcher library such as Expecta the results are test that are easy to read and reason about</description><pubDate>Tue, 28 Apr 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/expecta</link><guid isPermaLink="true">https://mokacoding.com/blog/expecta</guid><category>Specta</category><category>Expecta</category></item><item><title>Specta global before and after each hooks (Updated)</title><description>An interesting and powerful, yet not at all documented feature of Spetca are global beforeEach and afterEach hooks. In this post we'll see how to configure them, and how to blacklist classes from running them. Updated for version 0.5</description><pubDate>Fri, 24 Apr 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/specta-global-before-after-each-updated</link><guid isPermaLink="true">https://mokacoding.com/blog/specta-global-before-after-each-updated</guid><category>Testing</category><category>Specta</category></item><item><title>Job stories acceptance tests using KIF and Specta</title><description>When writing tests it's very important do be declarative, aiming to have tests that explain how a class is supposed to behave as good as its documentation would do. When talking about acceptance tests we can achieve this kind of clarity by having a 1:1 relationship between the tests and the acceptance criteria for the application. A very effective way to express acceptance criteria is through _job stories_. In this post we'll see how to write acceptance tests that map job stories for our iOS apps, using KIF and Specta.</description><pubDate>Tue, 21 Apr 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/job-stories-acceptance-tests-with-KIF-and-specta</link><guid isPermaLink="true">https://mokacoding.com/blog/job-stories-acceptance-tests-with-KIF-and-specta</guid><category>Acceptance Testing</category><category>KIF</category><category>Specta</category></item><item><title>Better tests with Specta</title><description>Writing unit tests for our iOS and OS X projects not only is important, but should be always part of the development cycle. As such the way we write the tests is as important, and having the option to write tests that easily explain their purpose can drastically increase the quality of the suite. Specta and Expecta are two libraries that provide a different way to writing tests than XCTest, let's see what we can gain by using such approach.</description><pubDate>Tue, 14 Apr 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/better-tests-with-specta</link><guid isPermaLink="true">https://mokacoding.com/blog/better-tests-with-specta</guid><category>Testing</category><category>Specta</category><category>XCTest</category></item><item><title>Xcode keyboard shortcuts for testing</title><description>Keyboard shortcuts are easies way to start increasing your productivity. Let's look at how to run tests in Xcode without ever touching the mouse.</description><pubDate>Tue, 07 Apr 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xcode-testing-shortcuts</link><guid isPermaLink="true">https://mokacoding.com/blog/xcode-testing-shortcuts</guid><category>Testing</category><category>Xcode</category><category>Productivity</category></item><item><title>Setting up KIF for iOS acceptance testing</title><description>A guide on install and use the KIF framework for iOS acceptance testing.</description><pubDate>Tue, 31 Mar 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/setting-up-KIF-for-ios-acceptance-testing</link><guid isPermaLink="true">https://mokacoding.com/blog/setting-up-KIF-for-ios-acceptance-testing</guid><category>Acceptance Testing</category><category>KIF</category></item><item><title>The state of iOS testing in 2015</title><description>In this post we'll look at the main tools and libraries available to write unit and acceptance tests for iOS and OS X applications, as well as the solutions to host Continuous Integration for our projects.</description><pubDate>Tue, 24 Mar 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/ios-testing-in-2015</link><guid isPermaLink="true">https://mokacoding.com/blog/ios-testing-in-2015</guid><category>Testing</category><category>Acceptance Testing</category><category>Continuous Integration</category></item><item><title>Specta global before and after each hooks</title><description>An interesting and powerful, yet not at all documented feature of Spetca are global beforeEach and afterEach hooks. In this post we'll see how to configure them, and how to blacklist classes from running them.</description><pubDate>Thu, 19 Mar 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/specta-global-before-after-each</link><guid isPermaLink="true">https://mokacoding.com/blog/specta-global-before-after-each</guid><category>Testing</category><category>Specta</category></item><item><title>How to run Xcode tests from the terminal</title><description>How to invoke xcodebuild to run the tests from the command line and how to format its output using xcbeautify or xcpretty</description><pubDate>Mon, 09 Mar 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/running-tests-from-the-terminal</link><guid isPermaLink="true">https://mokacoding.com/blog/running-tests-from-the-terminal</guid><category>Testing</category><category>Xcode</category><category>Terminal</category><category>Automation</category></item><item><title>How to simplify Calabash acceptance testing with Rake</title><description>Rake, the Ruby build utility, can lift off all the typing involved in running the Cucumber/Calabash acceptance tests, saving us a lot of typing time.</description><pubDate>Wed, 25 Feb 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/simpler-calabash-testing-with-rake</link><guid isPermaLink="true">https://mokacoding.com/blog/simpler-calabash-testing-with-rake</guid><category>Acceptance Testing</category><category>Calabash</category><category>Productivity</category></item><item><title>Git-iquette</title><description>Every team and every project should have a Git-iquette: a set of common practices for managing the git repository.</description><pubDate>Sun, 15 Feb 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/gitiquette</link><guid isPermaLink="true">https://mokacoding.com/blog/gitiquette</guid><category>Git</category></item><item><title>Setting up Calabash for iOS projects with Cocoapods and Build Configurations</title><description>A simple guide that shows the simplest way to install Calabash on an iOS project, by using Build Configurations and CocoaPods.</description><pubDate>Sun, 25 Jan 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/calabash-ios-with-cocoapods-and-build-configurations</link><guid isPermaLink="true">https://mokacoding.com/blog/calabash-ios-with-cocoapods-and-build-configurations</guid><category>Acceptance Testing</category><category>Calabash</category></item><item><title>5 habits that will make you a better software developer</title><description>By implementing these 5 small habits you'll kickstart your 2015 and become a better software developer.</description><pubDate>Wed, 07 Jan 2015 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/5-habits-that-will-make-you-a-better-software-developer</link><guid isPermaLink="true">https://mokacoding.com/blog/5-habits-that-will-make-you-a-better-software-developer</guid><category>Productivity</category></item><item><title>Security Tips for Freelance Software Developers</title><description>Tips for freelance software developers (and non) to improve the security of laptops, smartphones and website accounts, to keep your and your clients data safe.</description><pubDate>Wed, 29 Oct 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/security-tips-for-freelance-software-developers</link><guid isPermaLink="true">https://mokacoding.com/blog/security-tips-for-freelance-software-developers</guid></item><item><title>Why I don't work on Fridays</title><description>Some time ago I learned the hard way that I shouldn't work on Fridays. I've been applying an alternative schedule to my week, and it's working out pretty well.</description><pubDate>Fri, 29 Aug 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/why-i-dont-work-on-friday</link><guid isPermaLink="true">https://mokacoding.com/blog/why-i-dont-work-on-friday</guid><category>Productivity</category></item><item><title>In-App Purchase Debugging Lessons</title><description>A couple of tips learnt the hard way on how to develop and debug In App Purchase support in an iOS app.</description><pubDate>Tue, 26 Aug 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/in-app-purchase-debugging-lessons</link><guid isPermaLink="true">https://mokacoding.com/blog/in-app-purchase-debugging-lessons</guid><category>iOS</category></item><item><title>Why I (shouldn't have) stopped blogging with Jekyll</title><description>I recently decided to move my blog from Ruby and Jekyll, to Metalsmith and Javascript. It turned out to be not as easy as I thought, and a quite stupid choice, but not because of the tech.</description><pubDate>Fri, 08 Aug 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/why-i-shouldnt-have-stopped-blogging-with-jekyll</link><guid isPermaLink="true">https://mokacoding.com/blog/why-i-shouldnt-have-stopped-blogging-with-jekyll</guid><category>Ruby</category><category>Javascript</category></item><item><title>CocoaPods and custom Build Configurations</title><description>Some tips on how to use CocoaPods and customs build configurations without headaches.</description><pubDate>Wed, 16 Apr 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/cocoapods-and-custom-build-configurations</link><guid isPermaLink="true">https://mokacoding.com/blog/cocoapods-and-custom-build-configurations</guid><category>CocoaPods</category></item><item><title>2014 resolutions review</title><description></description><pubDate>Wed, 09 Apr 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/2014-resolutions-review</link><guid isPermaLink="true">https://mokacoding.com/blog/2014-resolutions-review</guid></item><item><title>Gradient Backgrounds Studio: Lessons Learned</title><description></description><pubDate>Thu, 03 Apr 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/gradient-backgrounds-studio</link><guid isPermaLink="true">https://mokacoding.com/blog/gradient-backgrounds-studio</guid><category>iOS</category></item><item><title>A caveat when upgrading a Podfile</title><description></description><pubDate>Fri, 28 Mar 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/upgrading-podfile</link><guid isPermaLink="true">https://mokacoding.com/blog/upgrading-podfile</guid><category>CocoaPods</category></item><item><title>Sharing assets across iOS projects with CocoaPods, Resource Bundle, and dynamically loaded fonts</title><description></description><pubDate>Thu, 13 Feb 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/sharing-assets-with-cocoapods-resource-bundle-and-dynamically-loaded-fonts</link><guid isPermaLink="true">https://mokacoding.com/blog/sharing-assets-with-cocoapods-resource-bundle-and-dynamically-loaded-fonts</guid><category>iOS</category><category>CocoaPods</category></item><item><title>Automating iOS Enterprise Deployment with shenzhen</title><description>A way of automating the deployment of an iOS app for enterprise distribution using the shenzhen gem.</description><pubDate>Mon, 06 Jan 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/automating-ios-enterprise-deployment</link><guid isPermaLink="true">https://mokacoding.com/blog/automating-ios-enterprise-deployment</guid><category>Automation</category></item><item><title>2013 retrospectives... and 2014 propositions</title><description>Taking a look back at 2013, to find good propositions for 2014</description><pubDate>Thu, 02 Jan 2014 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/2013-retrospectives-and-2014-propositions</link><guid isPermaLink="true">https://mokacoding.com/blog/2013-retrospectives-and-2014-propositions</guid></item><item><title>Podcasts, grow your brain through soundwaves</title><description>A list of the tech podcasts I follow</description><pubDate>Wed, 20 Nov 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/podcasts</link><guid isPermaLink="true">https://mokacoding.com/blog/podcasts</guid></item><item><title>Rails: adding a new has_many association to an existing model</title><description>A little guide on how to edit an existing model adding a new has_many association</description><pubDate>Wed, 13 Nov 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/rails-add-has_many-association-to-existing-model</link><guid isPermaLink="true">https://mokacoding.com/blog/rails-add-has_many-association-to-existing-model</guid><category>Ruby</category><category>Ruby on Rails</category></item><item><title>Some things I learned in October</title><description>A quick summary and memo of interesting things I've learned in October - iOS screen capture, HTML5 game development, ways to improve your coding.</description><pubDate>Tue, 12 Nov 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/things-learned-in-october</link><guid isPermaLink="true">https://mokacoding.com/blog/things-learned-in-october</guid><category>Life long learning</category></item><item><title>A dive into Xcode projects and workspaces</title><description>A look at how Xcode stores information about the project and the workspace</description><pubDate>Thu, 31 Oct 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/Xcode-projects-and-workspaces</link><guid isPermaLink="true">https://mokacoding.com/blog/Xcode-projects-and-workspaces</guid><category>Xcode</category></item><item><title>October's Questions</title><description>Introducing mokagio's monthly questions, related to iOS, Objective-C, Xcode, xctool, AFNetworking, CocoaPods.</description><pubDate>Sun, 06 Oct 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/october-questions</link><guid isPermaLink="true">https://mokacoding.com/blog/october-questions</guid><category>Life long learning</category></item><item><title>Some things I learned in September</title><description>A quick summary and memo of interesting things I've learned in September</description><pubDate>Wed, 02 Oct 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/things-learned-in-september</link><guid isPermaLink="true">https://mokacoding.com/blog/things-learned-in-september</guid><category>Life long learning</category></item><item><title>Sharing some thoughts on iOS 7</title><description>Sharing thoughts by some lead designers on iOS 7.</description><pubDate>Tue, 24 Sep 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/ios7-ux-designers-verdict</link><guid isPermaLink="true">https://mokacoding.com/blog/ios7-ux-designers-verdict</guid><category>iOS</category><category>UX</category></item><item><title>Setting a Mac for Development</title><description>A simple checklist of the basic tools to setup a Mac for development.</description><pubDate>Mon, 23 Sep 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/setup-a-dev-machine</link><guid isPermaLink="true">https://mokacoding.com/blog/setup-a-dev-machine</guid><category>OS X</category></item><item><title>Bringing font icons in iOS with MTFontIcon</title><description>Introducing MTFontIcon, a CocoaPod library for iOS to improve application development efficiency by using font icons.</description><pubDate>Tue, 17 Sep 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/mtfonticon</link><guid isPermaLink="true">https://mokacoding.com/blog/mtfonticon</guid><category>iOS</category><category>Objective-C</category><category>Ruby</category><category>Layout</category><category>CSS</category><category>Open Source</category></item><item><title>A workaround to Xcode 5 GM crash on app submission</title><description>A workaround for the unusual crash of Xcode 5 GM during the App Store submission process.</description><pubDate>Mon, 16 Sep 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/xcode5-crash-on-submission</link><guid isPermaLink="true">https://mokacoding.com/blog/xcode5-crash-on-submission</guid><category>Xcode</category></item><item><title>Some things I learned in August</title><description></description><pubDate>Tue, 03 Sep 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/things-learned-in-august</link><guid isPermaLink="true">https://mokacoding.com/blog/things-learned-in-august</guid><category>Life long learning</category></item><item><title>Some things I learned in July</title><description>A summary of the things I learned in July 2013.</description><pubDate>Thu, 01 Aug 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/things-learned-in-july</link><guid isPermaLink="true">https://mokacoding.com/blog/things-learned-in-july</guid><category>Life long learning</category></item><item><title>What I did in a week...</title><description>A recap of what I developed during an unusual week left by myself without neither girlfriend nor friends.</description><pubDate>Fri, 26 Jul 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/what-i-did-in-a-week</link><guid isPermaLink="true">https://mokacoding.com/blog/what-i-did-in-a-week</guid></item><item><title>A week of time...</title><description>A declaration of purposes for what I'm gonna do in the next week.</description><pubDate>Wed, 17 Jul 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/a-week-of-time</link><guid isPermaLink="true">https://mokacoding.com/blog/a-week-of-time</guid></item><item><title>CocoaPods: the $(inherited) flag</title><description>A self memo on how to set the $(inherited) flag on a project using CocoaPods on Xcode.</description><pubDate>Tue, 09 Jul 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/cocoapods-the-inherited-flag</link><guid isPermaLink="true">https://mokacoding.com/blog/cocoapods-the-inherited-flag</guid><category>CocoaPods</category><category>iOS</category></item><item><title>Some things I learned in June</title><description>A summary of the things I learned in June 2013.</description><pubDate>Sat, 06 Jul 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/things-learned-in-june</link><guid isPermaLink="true">https://mokacoding.com/blog/things-learned-in-june</guid><category>Life long learning</category></item><item><title>mokagio's self memo for Facebook Integration on iOS - Part 1</title><description>Step by step guide on how to integrate the Facebook SDK in an iOS app, the right way. Part 1: Facebook Login.</description><pubDate>Tue, 25 Jun 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/mokagios-self-memo-for-facebook-integration-on-ios-part-1</link><guid isPermaLink="true">https://mokacoding.com/blog/mokagios-self-memo-for-facebook-integration-on-ios-part-1</guid><category>iOS</category></item><item><title>OSX, a scanner, and the drivers drama</title><description>The link to the Samsung Printer Drivers, enclosed in a ranting post.</description><pubDate>Tue, 11 Jun 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/osx-a-scanner-and-the-drivers-drama</link><guid isPermaLink="true">https://mokacoding.com/blog/osx-a-scanner-and-the-drivers-drama</guid><category>OS X</category></item><item><title>Multiple builds of the same app and TestFlight</title><description>How to distribute multiple builds of your iOS app, such as stable, QA and development builds, via TestFlight.</description><pubDate>Wed, 29 May 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/multiple-builds-of-the-same-app-and-testflight</link><guid isPermaLink="true">https://mokacoding.com/blog/multiple-builds-of-the-same-app-and-testflight</guid><category>Automation</category><category>TestFlight</category></item><item><title>CocoaPods - How to create your own Pod</title><description>A step by step guide to create a basic CocoaPod.</description><pubDate>Mon, 21 Jan 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/cocoapods-how-to-create-your-own-pod</link><guid isPermaLink="true">https://mokacoding.com/blog/cocoapods-how-to-create-your-own-pod</guid><category>CocoaPods</category><category>iOS</category></item><item><title>CocoaPods!</title><description>A brief introduction to CocoaPods, the Objective-C dependencies manager.</description><pubDate>Sat, 05 Jan 2013 00:00:00 GMT</pubDate><link>https://mokacoding.com/blog/cocoapods</link><guid isPermaLink="true">https://mokacoding.com/blog/cocoapods</guid><category>CocoaPods</category><category>iOS</category></item></channel></rss>