My favorite iOS Keyboard: Kaomoji
iOS 8 is finally out and everyone and their moms are making custom iOS keyboards to sell on the app store. Even me, yes. I have tried pretty much every keyboard available but have only found one that I truly love.
Today my friend, and colleague at Robocat, Ulrik released his latest creation Kaomoji. Kaomoji is an custom iOS Keyboard that let's you quickly browse and send kaomoji (e.g. japanese text emoticons) to all your friends. The keyboard also let's you build your own kaomoji from scratch with a fun interface. The app is beautifully designed and feels very native for something that his very different from an Apple keyboard.
In full disclosure I had the pleasure of making the website for Kaomoji which means I am totally biased. But everyone should check out Kaomoji. It's free on the App Store.
A workflow for scaling retina assets
Yesterday I published a small Automator workflow for OS X that I use to generate @2x and @1x scaled versions of my @3x assets. Apparently it generated a bit of fuzz on twitter, so I thought it might be worth posting here too.
I have been using this workflow for ages for downscaling @2x assets to @1x. It only made sense to update the workflow for @3x assets and share it with other lazy developers who hate manual work as much as me.
You can get the workflow right here:
As pointed out by several people on Twitter it is not the ideal solution to downscale image assets for iOS apps. The ideal solution is to use vector images in PDF files that Xcode can automatically upscale without artifacts. It is however often not possible to generate vector graphics for all parts of an app which is why I use this script for those assets.
The state of testing iOS apps
I've been spending more and more time researching and thinking about testing apps in the past few months. At the university they teach you that testing (in particular Unit Testing) is an integral part of the development process that you must not skip. I've heard from many fellow students that they use testing rogoursley in their development jobs using C#, Java, etc. This is far from my experience writing iOS Apps. You can practically see the tumbleweeds crossing the testing dessert in Objective-C land.
Almost all fellow iOS developers I talk to about this are outright dismissive of the idea that testing is important. "Just write code that works", they say. This is not the kind of development culture I pride myself of being part of. With that said, let's look at the resources and tools that are availble to us.
Apple made a huge push toward testing with their release of Xcode 5 with the better integration for testing. They introduced XCTest which is their own clone of SenTestingKit and Xcode Bots for Continous Integration practices. Using these tools you can actually get very far with testing since everything you need to get started is baked right into your standard installation of Xcode.
"Alright, so I have the tools. How do I get started then?". Well, this is where I'm at a loss. In my research I have only managed to find one single book about testing as it relates to Objective-C which is Test-Driven iOS Development by Graham Lee. The book itself is pretty good but after reading it cover to cover I still feel like there is much more to be said about testing iOS apps.
Where I really started to catch on to how I approach testing is when I discovered all the great material produced by Jon Reid. Jon has a series of great posts with video tutorials about how to test-drive your MVC structure. But where things really clicked is when I watched his talk at MCE 2014 about Test-Driven Development for iOS. I embeded it below
If you have found any good resources I would love to hear about them! Catch me on Twitter.
Podcasts for Cocoa Developers
As any good Copenhagen citizen I commute to and from work/university on my bike which adds up to an average 22 km per day (that's 13 miles for you americans). This gives me a great excuse and opportunity to listen to podcasts. I subscribe to a total of 29 podcasts, which seems like a lot but is really not with 10 hours of commute every week.
If you're a iOS/OS X developer this a golden time in the podcast area. There is so much greatly produced content out there. Here I present in descending order the list of my favourite development or technology related podcasts:
1. Build Phase
This is my new favourite podcast that I look forward to all week. I listen to it as soon as I get the notification! It is hosted by Mark Adams and Gordon Fontenot who are both Cocoa developers at thoughtbot. The show sticks to pretty much one topic each week and give great insights into iOS development subjects.
2. The Record
Currently in its first season the show is dedicated to tell the story of developers in Seattle before the launch of the iPhone in 2007 and how it changed the development scene. This show has already (now by its 7th episode) many great developers onboard. Each episode a new developer is interviewed about their history in development. This is a great show if for nothing else, nostalgia.
Hosted by infamous Rene Ritche and Guy English this is another show that interviews cool developers in the Cocoa development community and discuss history and timely topics.
4. Edge Cases
I recently started listening to this show and currently in the processes of listening through the backlog of 80 episodes. In this show Andrew Pontious and Wolf Rentzsch discuss timeless topics in Cocoa development and how to how to solve difficult topics.
5. Notification Center
Formed as a casual conversation between Ash Furrow and Top Copley this shows touch on timely topics. The show is very casual end very enjoyable.
6. Accidental Tech Podcast
If you haven't heard about ATP by now you must be living under a rock. Staring John Siracusa (long known for Hypercritical), Marco Arment (known for his blog; formerly of Instapaper, Tumblr and The Magazine) and Casey Liss (known for.. Who the hell is casey?). This show is always a hoot and a half to listen to. Mostly the topics surround Apple and technology but other subjects have included Software Methodologies and Sexism in the tech world.
7. Core Intuition
There is something profoundly funny about listening to Daniel Jalkut (aKa. Daniel Punkass) ranting about stuff with his buddy Manton Reece. This podcasts mostly covers the world of indie software development and Apple related news.
In this podcast Ash Furrow (who also co-hosts Notification Center) interviews developers in the Mac and iOS community while focusing on new developers entering the field.
9. Developing Perspective
David Smith (aKa. underscore) takes a refreshing look at various topics in developing apps for the iOS platform. Each podcast is under 15 minutes and always gives great food for thought.
10. iPhreaks Show
This podcast is the most recent addition to my many subscriptions and I have only managed to listen to a few episodes so far. This show is also based on interviewing developers and discussing interesting development topics in Cocoa. I can warmly recommend their episodes on Concurrency with Jeff Kellyey and 64-bit with Mike Ash.
Some of these podcasts are very topical and touch on may different and interesting subjects and try to give some insights. Others are interview based where they focus more on the historical aspects of technology and development. Either way I find that each of these shows are definitely worth listening to.
I also listen to some non-development related podcasts and here are my favourite ones:
If you have some suggestions for good podcasts on your own I'd love to hear about them!
For the ones who haven't quite settled on a preferred podcast client you should try Castro. Its elegantly designed, simple and it works every time!.
The AppCode Resistance
I first came to learn about AppCode in February of 2013. At the time I was blisfully unaware that there were any other way to compile and run an iOS app other than use Xcode directly from the mothership. I was thrilled to try something other than the buginfested forever crashing editor that Xcode was at that point. I found that AppCode had many cool features and I quickly invested in a license. After using AppCode for a couple of days my interest quickly vanished as I was missing essential features from Xcode and as AppCode was constantly throwing me errors when compiling. I put away AppCode and went back to my daily routine with Xcode.
Two months ago I got an email from JetBrains telling me that my AppCode support license was about to expire. I had totally forgotten about AppCode and went to see what had happened in the last year. It seemed that much had changed. Stability and compatability was improved and many great features, like native CocoaPods integration, improved refactoring tools and Clang integration. I decided to give AppCode another try and I was pleasantly surprised.
I've been using AppCode on a daily basis for two months now and rarely open Xcode for anything other than quickly editing a Storyboard. Thanks to the high speed of the editor, the vast variety of refactoring tools and keyboard shortcuts my development speed has gone up significantly. I can tame my editor to my liking, something I was never able to do with Xcode.
So why did I resist so much in the first place? Like most iOS developer I know, I really hate Java with a passion. I dislike the language, the horrible insecure platform and the terribly slow interpretor. It is very obvious to developers that launch AppCode for the first time that is written in Java. It has familiar look and feel that most Java editors have. Unlike other editors written in Java, AppCode is fast though. Another of my big concerns about using AppCode was using something that wasnt part of the official Apple ecosystem. It felt like Apple was secretely condeming for using a third-party editor.
But what it comes down to in the end is being a pragmatic programmer. Choosing the right tool for the job. The tool that gets you to the finish line fast and reliably. For me, that tool is AppCode for now