<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tools on miqu.me</title><link>https://miqu.me/blog/categories/tools/</link><description>Recent content in Tools on miqu.me</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 21 May 2017 22:30:00 +0100</lastBuildDate><atom:link href="https://miqu.me/blog/categories/tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Automatic bridging from Swift to Objective-C using Sourcery</title><link>https://miqu.me/blog/2017/05/21/automatic-bridging-from-swift-to-objective-c-using-sourcery/</link><pubDate>Sun, 21 May 2017 22:30:00 +0100</pubDate><guid>https://miqu.me/blog/2017/05/21/automatic-bridging-from-swift-to-objective-c-using-sourcery/</guid><description>&lt;p&gt;I recently read a &lt;a href="http://blog.benjamin-encz.de/post/bridging-swift-types-to-objective-c/"&gt;great post&lt;/a&gt; by &lt;a href="https://twitter.com/benjaminencz"&gt;Benjamin Encz&lt;/a&gt; about bridging Swift to Objective-C by creating bridging types that can be exposed to the older language. I wondered if his idea can be improved and automated using meta-programming with &lt;a href="https://github.com/krzysztofzablocki/Sourcery"&gt;Sourcery&lt;/a&gt; by &lt;a href="https://twitter.com/merowing_"&gt;Krzystof Zablocki&lt;/a&gt;. The answer is a very impressive ObjC-like uppercase &lt;strong&gt;YES&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Reducing the pain of git bisect with Xcode</title><link>https://miqu.me/blog/2017/01/22/reducing-the-pain-of-git-bisect-with-xcode/</link><pubDate>Sun, 22 Jan 2017 11:49:01 +0000</pubDate><guid>https://miqu.me/blog/2017/01/22/reducing-the-pain-of-git-bisect-with-xcode/</guid><description>&lt;p&gt;There&amp;rsquo;s times when you need to investigate regressions in your project, and you don&amp;rsquo;t know have any clue as why something is happening. &lt;a href="https://git-scm.com/docs/git-bisect"&gt;Git bisect&lt;/a&gt; is the best tool for this cases, but it can be painful to use in non small projects using CocoaPods and Xcode. I want to share what I&amp;rsquo;ve been doing to ease the pain.&lt;/p&gt;</description></item><item><title>App extensions, Xcode and Cocoapods, OMG!</title><link>https://miqu.me/blog/2016/11/28/app-extensions-xcode-and-cocoapods-omg/</link><pubDate>Mon, 28 Nov 2016 09:44:54 +0000</pubDate><guid>https://miqu.me/blog/2016/11/28/app-extensions-xcode-and-cocoapods-omg/</guid><description>&lt;p&gt;Have you encountered this error when upgrading to the latest CocoaPods (1.1.0), or sharing a library between your iOS App and your extension?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;sharedApplication&amp;#39;&lt;/span&gt; is unavailable: not available on iOS &lt;span style="color:#f92672"&gt;(&lt;/span&gt;App Extension&lt;span style="color:#f92672"&gt;)&lt;/span&gt; - Use view controller based solutions where appropriate instead.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If yes, continue reading, as you might have encountered same issue as myself. I&amp;rsquo;ve recently had to upgrade a project to using Cocoapods 1.1.0. Things stopped compiling, and I had to investigate the root cause of the problem. It has to do with iOS App extensions, unavailable APIs and how fragile our tooling is ;).&lt;/p&gt;</description></item><item><title>Easy localization management with Google spreadsheets</title><link>https://miqu.me/blog/2016/11/19/easy-localizations-management-with-spreadsheets/</link><pubDate>Sat, 19 Nov 2016 16:50:18 +0000</pubDate><guid>https://miqu.me/blog/2016/11/19/easy-localizations-management-with-spreadsheets/</guid><description>&lt;p&gt;Last thursday I gave a talk at &lt;a href="https://www.meetup.com/NSLondon/"&gt;NSLondon meetup&lt;/a&gt; called &amp;lsquo;Minimum Viable Tooling&amp;rsquo;. The topic was examples of approaching tooling and automation for small teams. I showed real examples of what we do at &lt;a href="https://www.peak.net"&gt;Peak&lt;/a&gt;, where I currently work. One of the things people showed interest in after the talk was how we deal with localizations.&lt;/p&gt;
&lt;p&gt;In this post I will replicate the simple solution from scratch, so you can follow along and get started with your own projects. And we will be using Swift for the scripting, just because we can!&lt;/p&gt;</description></item><item><title>Controlling time in the app</title><link>https://miqu.me/blog/2016/10/26/controlling-time-in-the-app/</link><pubDate>Wed, 26 Oct 2016 19:38:37 +0100</pubDate><guid>https://miqu.me/blog/2016/10/26/controlling-time-in-the-app/</guid><description>&lt;p&gt;Today I want to share a small utility we&amp;rsquo;ve been using for a while at &lt;a href="https://www.peak.net"&gt;Peak&lt;/a&gt;, my current workplace, to control the system time inside the application and save time while testing or debugging.&lt;/p&gt;</description></item><item><title>Xcode 8: New build settings and analyzer improvements</title><link>https://miqu.me/blog/2016/07/31/xcode-8-new-build-settings-and-analyzer-improvements/</link><pubDate>Sun, 31 Jul 2016 21:50:16 +0100</pubDate><guid>https://miqu.me/blog/2016/07/31/xcode-8-new-build-settings-and-analyzer-improvements/</guid><description>&lt;p&gt;I always like to check the new build settings and analyzer improvements of every Xcode release. And this year&amp;rsquo;s main release includes a couple of goodies. Let&amp;rsquo;s check them out!&lt;/p&gt;</description></item><item><title>Dear SDK developer</title><link>https://miqu.me/blog/2016/04/22/dear-sdk-developer/</link><pubDate>Fri, 22 Apr 2016 12:50:32 +0100</pubDate><guid>https://miqu.me/blog/2016/04/22/dear-sdk-developer/</guid><description>&lt;p&gt;As an application developer I get to use many third party code to integrate it into my current project. I want to share a checklist of things a user of an SDK really appreciates.&lt;/p&gt;</description></item><item><title>Xcode 7.3 analyzer improvements</title><link>https://miqu.me/blog/2016/01/21/xcode-7-dot-3-analyzer-improvements/</link><pubDate>Thu, 21 Jan 2016 20:39:53 +0000</pubDate><guid>https://miqu.me/blog/2016/01/21/xcode-7-dot-3-analyzer-improvements/</guid><description>&lt;p&gt;The &lt;a href="https://developer.apple.com/xcode/download/"&gt;latest xcode beta&lt;/a&gt; is available for downloading. There are many improvements, and the usual problems with stuff that stops working&amp;hellip; Ah the love of Apple for it&amp;rsquo;s developers :). But I want to tell you about a feature that caught my attention: &lt;strong&gt;New analyzer settings!&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="new-analyzer-settings"&gt;New analyzer settings&lt;/h1&gt;
&lt;p&gt;From the &lt;a href="https://adcdownload.apple.com/Developer_Tools/Xcode_7.3_beta/Xcode_7.3_beta_Release_Notes.pdf"&gt;release notes&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The static analyzer warns when nil is returned from a method or function with a nonnull return
type or is passed to a parameter marked nonnull.&lt;/p&gt;</description></item><item><title>Building Swift on OSX</title><link>https://miqu.me/blog/2015/12/05/building-swift-on-osx/</link><pubDate>Sat, 05 Dec 2015 00:38:35 +0000</pubDate><guid>https://miqu.me/blog/2015/12/05/building-swift-on-osx/</guid><description>&lt;p&gt;Swift is finally &lt;a href="https://swift.org"&gt;open source&lt;/a&gt;! This is great because of many reasons, namely the transparency and chances to learn from the people responsible of building the foundational language you work on. I&amp;rsquo;ve been checking how easy was to build the runtime, REPL and compiler, and it turns out the team made an excellent job to make the process very easy. Let&amp;rsquo;s see how to do it.&lt;/p&gt;</description></item><item><title>Three months with XVim</title><link>https://miqu.me/blog/2015/11/19/three-months-with-xvim/</link><pubDate>Thu, 19 Nov 2015 22:19:24 +0000</pubDate><guid>https://miqu.me/blog/2015/11/19/three-months-with-xvim/</guid><description>&lt;p&gt;&amp;lsquo;Know your key shortcuts&amp;rsquo; is the mantra of the productive programmer. I&amp;rsquo;ve chosen to try using the same keybindings everywhere, investing time and learning Vim. And using &lt;a href="https://github.com/XVimProject/XVim"&gt;xvim&lt;/a&gt; in Xcode. In this article I&amp;rsquo;m going to try to explain why I did this, and I&amp;rsquo;ll share my experience of the process.&lt;/p&gt;</description></item><item><title>Jumping into existing codebases</title><link>https://miqu.me/blog/2015/11/15/jumping-into-existing-codebases/</link><pubDate>Sun, 15 Nov 2015 18:55:18 +0000</pubDate><guid>https://miqu.me/blog/2015/11/15/jumping-into-existing-codebases/</guid><description>&lt;p&gt;I’ve recently changed workplace - &lt;a href="https://peak.net"&gt;we’re hiring!&lt;/a&gt; - and I’ve jumped into an existing codebase. This is a good time to review what I like to do when I start to work on a project in these circumstances.&lt;/p&gt;</description></item><item><title>Adopting Objective-C generics</title><link>https://miqu.me/blog/2015/06/09/adopting-objectivec-generics/</link><pubDate>Tue, 09 Jun 2015 22:53:14 +0100</pubDate><guid>https://miqu.me/blog/2015/06/09/adopting-objectivec-generics/</guid><description>&lt;p&gt;This year in &lt;a href="https://developer.apple.com/wwdc/"&gt;WWDC&lt;/a&gt;, Apple introduced Objective-C ‘lightweight’ &lt;a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID35"&gt;generics&lt;/a&gt; for XCode7. This builds upon the improvements to Objective-C to document the code and improve the interoperability with Swift. I wrote previously about &lt;a href="https://miqu.me/blog/2015/04/17/adopting-nullability-annotations/"&gt;nullability annotations&lt;/a&gt; and I continue to be delighted by these changes to the language. Here’s what I think.&lt;/p&gt;</description></item><item><title>Fragmentation</title><link>https://miqu.me/blog/2015/05/27/fragmentation/</link><pubDate>Wed, 27 May 2015 15:16:50 +0100</pubDate><guid>https://miqu.me/blog/2015/05/27/fragmentation/</guid><description>&lt;p&gt;As an iOS developer or Apple-centric developer, &lt;a href="https://developer.apple.com/wwdc/"&gt;WWDC&lt;/a&gt; is a time of excitement and news. The yearly event at Apple offers many networking opportunities, but most importantly sets the stage for the next year of development in the company&amp;rsquo;s platform. As this year event is closing in, I wanted to write my thoughts on a related, and often overlooked topic; &lt;a href="https://en.wikipedia.org/wiki/Fragmentation_(programming)"&gt;fragmentation&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Code injection: Continued</title><link>https://miqu.me/blog/2015/01/29/code-injection-continued/</link><pubDate>Thu, 29 Jan 2015 17:33:30 +0000</pubDate><guid>https://miqu.me/blog/2015/01/29/code-injection-continued/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently done a short talk &lt;a href="https://badoo.com"&gt;@Badoo&lt;/a&gt; about code injection. Summarized and gave a demo of my previous &lt;a href="https://miqu.me/blog/2014/11/23/ios-code-injection/"&gt;blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=VEardIxgZNE&amp;amp;feature=youtu.be"&gt;Check it out&lt;/a&gt; if you are interested. Feedback on the talk is more than welcome, &lt;a href="https://twitter.com/miguelquinon"&gt;contact me&lt;/a&gt;&lt;/p&gt;</description></item><item><title>iOS Code Injection</title><link>https://miqu.me/blog/2014/11/23/ios-code-injection/</link><pubDate>Sun, 23 Nov 2014 12:21:36 +0000</pubDate><guid>https://miqu.me/blog/2014/11/23/ios-code-injection/</guid><description>&lt;p&gt;Write code, compile, &lt;strong&gt;wait&lt;/strong&gt;, navigate to screen in application. Fix problem, recompile &lt;strong&gt;wait&lt;/strong&gt;. Oh it was not fixed, start again&amp;hellip; Does it sound familiar? For compiled languages there seems to be no workaround this bottleneck. Even though this is true, there are situations where we can reduce the waiting time, increasing our productivity and happiness. Enter code injection.
&lt;br/&gt;&lt;/p&gt;</description></item></channel></rss>