RSSAmplifier

Blog

Joris Kluivers

joris.kluivers.nlRSS feed ↗20 posts

Latest posts

HomeKit

At WWDC last summer Apple introduced HomeKit , the iOS 8 framework to communicate with connected devices in your home. Unfortunately half a year later asking Siri to turn off my lights doesn t have the desired effect yet. So far there is no actual hardware available with HomeKit support. However this is about to change quickly. Upcoming hardware Just this week a number of products with support for…

Tracking AppleScript progress in Yosemite

The Yosemity update for OS X brings several advances in OS automation. A few people have written about this already, and as usual Michael Tsai provides a nice overview. New in AppleScript is the ability to report progress. This enables the Finder or other UI in Yosemity to show progress indicators while your script is running. 1 2 3 4 5 6 7 8 set n to 10 set progress total steps to n repeat with i…

Findings UI design iterations

Last week Findings was launched, it is a new app to manage your experiments in the lab. I ve been working on this together with Charles Parnot for the past 1.5 years and I m very happy the Mac version is finally available. The iOS version is still in development and will be available later this year. On his weblog Charles writes about the Making of Findings . The original mockups are dated 5 years…

LLVM unrecognized command line options

The LLVM compiler in Xcode 5.1 now treats unrecognized compiler options as errors by default. Building Python or Ruby modules using unrecognized flags will now cause the build to fail. I ran into this when trying to build lxml for Python recently. This failed with the following error message: clang: error: unknown argument: '-mno-fused-madd' Google or stackoverflow provided no answer to this…

The builder pattern in Objective-C Foundation

In a recent blog post Klaas Pieter Annema wrote about using the builder pattern in Objective-C . Inspired by his post I created two categories that bring similar functionality to NSURL and NSDate. An example: 1 2 3 4 5 NSURL * url = [ NSURL URLWithBuilderBlock: ^ ( NSURLComponents * builder ) { builder . scheme = @"http" ; builder . host = @"joris.kluivers.nl" ; builder . path =…

Generating constants for storyboard identifiers

After I mistyped yet another segue identifier string this week my application once again suffered from a familiar crash: Receiver (<JBWMasterViewController: 0x8cbd540>) has no segue with identifier 'showDetial' You have probably seen a similar crash yourself, caused by a call to -[UIViewController performSegueWithIdentifier:sender:] with an unknown identifier. To prevent having hard-coded strings…

Model identifiers

Some statistics data I recently worked with included model identifiers for Apple devices. These identifiers are strings like iPad2,1 or MacBookPro10,2 and indicate what device variant and generation the software was used on. The raw identifier is not something you usually display in a user interface directly, instead you show a more friendlier name. Unfortunately a way to translate iPad2,1 to iPad…

NSURLComponents

Along with the new URL loading classes ( NSURLSession & family) iOS 7 and Mavericks also bring a new way of constructing URLs. Similar to what NSDateComponents provides for a NSDate we can now use NSURLComponents to inspect, build and modify NSURLs . An example: NSURLComponents *components = [NSURLComponents new]; components.scheme = @"http"; components.host = @"joris.kluivers.nl"; components.path…

Playing with iBeacon and Estimote in iOS 7

My Estimote Developer Preview kit arrived this week. The kit contains 3 small devices that broadcast a signal over Bluetooth LE, to be used for proximity detection. Most interesting is that the devices are compatible with iBeacon, the new microlocation & proxity feature in iOS 7. Unboxing The developer kit contains 3 soft rubber shell devices, each in a different color. The bottom side has some…

My current side projects

Like many developers I like working on my own side projects next to my usual daily activities. This gives me some distraction and also the opportunity to use new technologies I would t use normally. However the number of projects I started and never finished is growing. Sometimes I get bored with a project or even forget about it and just start something new. Inspired by Matt Swanson I decided to…

UIKonf presentation: Software interactions with the real world.

At UIKonf I gave a talk about Bluetooth LE on iOS (and Mac). The videos for the conference are now available online. Checkout my presentation or any of the other great talks. Liquid error: undefined method `[] for nil:NilClass An earlier post I published lists the source code for the demos in the talk. I also maintain a list of gadgets using Buetooth Smart in case you are looking for some hardware…

Quartz Composer for iOS

While not nearly completed I decided to publish my implementation of Quartz Composer for iOS. This project intends to provide a rendering & interaction framework for .qtz on your iPhone or iPad. Similar to what the Quartz Composer framework provides on OS X. Why? Let me make one thing clear, I don t see QC as a tool to create iOS applications. After some recent Facebook Home & Quartz Composer more…

Animation easing functions

Animating things from A to B using linear motion is easy, but boring. Much more interesting and realistic animations are created using different easing curves. Core Animation and UIKit have nice API s to do this, but when interpolating yourself you ll have to resort to some math. A quick search ( goog , duck ) returns a set of animation curves implemented by Jeff LaMarche . However as I found out…

Require a call to super in overwritten methods

Learned about a useful LLVM feature recently, which I tweeted about yesterday: TIL: Warn when required calls to super are missing: - (void) someMethod __attribute((objc_requires_super)); &mdash; Joris Kluivers (@kluivers) 22 mei 2013 When trying this out for the first time in one of my projects it immediately warned me about a potential bug, where I forgot to call super. Usage Add the attribute…

Code for my UIKonf demos

Earlier this month I was in Berlin to present at the first edition of UIKonf . This turned out to be a really well organized conference with a lot of interesting technical iOS related talks. The video of my talk on Bluetooth Smart in iOS and Mac apps will be posted online soon. However because the demos in my talk are not easily reproduced from video I published the code for the projects online.…

Quartz Composer

This is a call to action for anyone with the ability to file radars. My goal is to send some kind of signal indicating there are still people out there that love Quartz Composer. Which in my opinion is an amazing tool, but unfortunately didn t receive an update since 2011. While relatively unknown, Quartz Composer (QC) is a versatile tool that is quite big in certain niche scenes. One of which is…

Hidden shortcuts through gestures

As Gruber wrote last year; on iOS the highest priority is obviousness . While gestures are used more often in apps they are the opposite of obviousness. In most iOS software there is a default way of doing things using buttons. Gestures merely act as shortcuts for advanced users, and remain invisible to the regular user. While I consider myself a power user I was pointed to two for me previously…

PARStore: A Key-Value store created with syncing in mind

Last week at NSConf 5 my colleague Charles Parnot presented a 15 minute blitz talk titled Rethinking Syncing . In this talk he details PARStore : a key value store designed to work on top of syncing mechanisms like iCloud and DropBox. To make syncing as transparent as possible this store s functionality is kept as limited as possible. It is definitely not a fits all solution but works well in our…

Airwaves: 1 month in the Mac App Store

Last month I quietly launched my first Mac app: Airwaves ( Mac App Store ). The app was created to solve a single problem: stream system audio to multiple AirPlay speakers at the same time. For an app created purely for myself it s doing surprisingly well. Here s an overview of past months downloads: While not going into the exact number of downloads, it s certainly an interesting graph to look…

Custom view controller transitions using UIStoryboardSegue

In this post I ll show how to create a custom segue that animates an image to a new full screen view controller when tapped. This effect is similar to what you see when the Facebook iOS app makes a photo fullscreen. Segues make it easy to abstract view controller transitions into reusable objects. Instead of having all the animation logic in your view controller the segue is now responsible for…