Search: wenderlich

New iOS programming books iOS programming books: 'Data Structures & Algorithms in Swift', 'Realm: Building Modern Swift Apps with Realm Database', and 'Design Patterns by Tutorials'.

If you’re an iOS developer with some experience and looking to boost your skills, you’re in luck:, the go-to place for tutorials and books on iOS programming, has three new books for intermediate to advanced Swift programmers:

  • Realm: Building Modern Swift Apps with Realm Database: The perfect introduction to Realm Database and Realm Platform. Learn how to set up your first Realm database, see how to persist and read data, find out how to perform migrations and more.
  • Data Structures and Algorithms in Swift: Learn how to implement the most popular and useful data structures, and when and why you should use one particular data structure or algorithm over another.
  • Design Patterns by Tutorials: Explore the usefulness of design patterns, moving from the basic building blocks of patterns into more advanced patterns and completes the lesson with less common but incredibly useful patterns.

Illustration: Advance Swift Spring Fling.

Normally, these books sell for $54.99 each (and they’re worth it), but right now, they’re on sale as part of their Advanced Swift Spring Fling, where all 3 books are available as a bundle for $99.99, a 40% discount! This event lasts for just two weeks, so if you want these books at a cheaper price, get them now.

New Android programming books Android programming books: 'Android Apprentice' and 'Kotlin Apprentice'. has long been known as the go-to place for tutorials and books on iOS programming, but over the past year, they’ve expanded to cover Android programming as well (in fact, I’m actually on their Android writing team — here’s the one article I’ve written so far). They’ve published Android programming articles, and now there are two new books:

  • Android Apprentice: If you have prior programming experience — say, with Swift, Java, Python, or JavaScript — this book will help you get up to speed with Android development in short order. You’ll learn by building 4 complete Android apps from scratch:
    • Timefighter: You’ll get started with Android development by creating a game with a simple goal: tap a button as fast as you can, within a set time limit.
    • CheckList: Make a simple TODO app with multiple lists. Along the way, learn about layout managers, activities, saving data, and notifications.
    • PlaceBook: Keep track of your favorite places with photos and maps. Along the way, learn about Google Play services, Room, Google Maps API, and working with photos.
    • PodPlay: You’ll round out the book by building a podcast manager with a built-in media player. You’ll cover Android networking, job scheduling, media browser, notifications, and media playback.
  • Kotlin Apprentice: This one’s written with a couple of audiences in mind:
    • People with no prior programming experience, but who want to learn how to program in Kotlin, presumably in the hopes of taking up Android programming.
    • People who have prior programming experience and are looking to get up-to-speed quickly with Kotlin.

Both books span hundreds of pages — Android Apprentice is 652 pages long, and Kotlin apprentice, which is still in the process of being written, is already 200 pages. Like other books, they sell for $54.99 in PDF form and come with starter and finished code. This may seem expensive, but again, like other books, they’re worth it. Having read a good number of their books, gone through the writing and editing process for an article on the site, and six hours’ worth of presentations and having tech edited one of their upcoming books, I can say that with confidence that they’re worth every penny.


If you’ve even considered doing iOS development, chances are that you’ve heard of (their home page is pictured above). They’re a site with over 1600 programming tutorials to date, a dozen iOS programming books (pictured below)…

…600 video lessons, and a consistently sold-out annual iOS developer tutorial conference. They are the go-to place for new and experienced iOS developers to learn programming languages and techniques for developing apps for the iPhone, iPad, Apple TV, Apple Watch, and even MacOS. When I learned iOS development, I learned it from It’s a great honor to be invited to join them!

And here’s the article I wrote for them:

That’s right: its title is Augmented Reality in Android with Google’s Face API. Android and Google, not iOS and Apple.

Give the article a look! With a provided “starter” app, it walks you through the process of using Google’s Mobile Vision suite of libraries and its Face API to create Snapchat Filters-like app that draws googly eyes, a pig nose, and a moustache over any face detected by your device’s camera:

If you’ve been reading this blog for a while, you might be surprised that I signed up to join the Android team. After all, here in Tampa, I run this meetup, not the Android one…

I have an app in the App Store, but nothing in Google Play, and most of my recent mobile development articles are about iOS and Swift, not Android and Java. Plus, while I have an Android Phone — a Moto G4 — my primary phone is an iPhone 6S.

So why would I join the Android team, and on a site where fewer than 30 of its 1600+ tutorials are Android tutorials?

Because it’s a move towards a need and my discomfort.

Talk about moving towards your discomfort!

In January, announced that they were looking for a co-maintainer for their open source project, Swift Algorithm Club. I applied for the position (you can see the text of the email I sent them here), but didn’t get it. However, as one of the top four applicants, they offered me the chance to submit an “audition” for some part of their site. The choices included:

  • iOS team: writing tutorials or tech editing them
  • MacOS team: writing tutorials or tech editing them
  • Android team: writing tutorials or tech editing them
  • Video team: making or editing their video courses or screencasts

The “smart” move would’ve been to audition for the iOS team. After all, iOS is their stock in trade, whether it’s on their site, books, videos, podcast, and conference, and the vast majority of their audience is there for the iOS content.

But they’re also expanding their scope to include Android programming, and out of over 1600 tutorials, they currently have fewer than 30 for Android. Android, as clunky and Windows-y as it feels to iOS users, runs on 2 billion monthly active devices as of May 2017 (that’s double Apple’s count in January 2016). It has deep penetration outside the affluent bubble of the First World and even within the First World’s less well-off corners (for one example, check out this article: The Accidental Classism and Unintentional Racism Of iOS Development for Children). And finally, the promotion of the Swift-like programming language Kotlin to first-class status as an Android development language with Android Studio 3.0 made it a more tempting platform for development.

The thought of writing Android tutorials is a little discomforting. I have more iOS programming practice than Android practice, but I’m counting on that discomfort to push me to be better. Comfort is nice, but comfortable people stagnate.

There’s also the matter of “the protegé effect” — I wanted to get better at Android programming, and the best way to learn something is to teach it to someone else. Besides, as a seasoned tech evangelist, I’m an old hand at picking up new technologies and then teaching others how to use them.

This is from a couple of years ago — there are probably more people on the team now.

Ray tells me that they’ve got some great plans for Android on I’m looking forward to helping bring about those plans, and to the challenges that come with them. Follow me here — or on — and see what happens!

In case you were wondering, Global Nerdy will remain an ongoing concern. I’ll still post articles here regularly; it’s just that I’ll also be posting Android programming tutorials on, and getting paid for them too.

{ 1 comment }

For the benefit of anyone who’s out there who’s trying to apply for a technical communication position, here’s the email I sent in response to’s call for a co-maintainer for their open source project, Swift Algorithm Club. It didn’t land me the position, but it got me the opportunity to audition for their Android team, of which I’m now a member.

I’m Joey deVilla, and I’d like to become a co-maintainer for Swift Algorithm Club! I’m a technology evangelist by day, and rock-and-roll accordion-playing mobile developer and bon vivant by night, as well as a long-time reader of I think I’d be well-suited for the role, and as proof, I have submitted my answers to the questions you posed in the article calling for co-maintainers.

Why do you want to be a co-maintainer on the Swift Algorithm Club?

I’ll admit it: a big part of my reason for wanting to be a co-maintainer on the Swift Algorithm Club is to be able to say “The first rule of Swift Algorithm Club is…to get ’em as close to O(1) as possible.”

But seriously, I’d like to be a co-maintainer of the Swift Algorithm Club for the following reasons:

  • I’ve been a big fan (see all the references on my tech/programming blog) and beneficiary of over the past few years and have always wanted to join the gang.
  • I’ve been doing tech evangelism since 2000 (you can see my LinkedIn profile here), and in my current position as Technology Evangelist for Smartrac (an RFID company pivoting to an RFID-plus-software-platform kind of company), establishing good relations with the developer community is part of the job. I’d even be able to contribute to Swift Algorithm Club on company time!
  • I like helping out developers, which is why I’m in my line of work. Some evidence: My Stack Overflow profile, where my reputation score puts me in the top 6%.
  • As a tech evangelist, I don’t work directly on code with my company, and they currently don’t do iOS development anyway. Working on Swift Algorithm Club would give me a chance to keep learning, exercise my coding skills, and work with a language I love.

Please tell me a little about your experience with Swift.

Please tell me a little about your experience with algorithms.

The boring stuff: I have a degree in Computer Science from Queen’s University, which is one of Canada’s nicer schools. I learned algorithms and data structures from Dr. Robin Dawes (4.2 rating on RateMyProfessors), and we’ve stayed in touch. I know my depth-first searches from my breadth-firsts, I can pronounce Euler properly (it’s “oiler”), and I know where the word “trie” comes from (retrieval).

I once had to explain to some art students why they couldn’t represent all the possible states of their game using individual QuickTime cells. It was a “Virtual Bubble Wrap” game with 95 bubbles, which meant that it would take 2^95 cells to represent every possible state (for comparison’s sake, the estimated number of photons in the universe is a smaller number: 10^89).
The more interesting experience: I am “internet famous” for using P=NP to figure out that I was dating a con artist. The story is on my personal blog under the title What happened to me and the new girl (or: “The girl who cried Webmaster”), and ended up in print in an anthology titled Never Threaten to Eat Your Co-Workers: Best of Blogs.

Please link to any articles/tutorials you have written online.
I’ve been blogging since November 2001, with my personal blog, The Adventures of Accordion Guy in the 21st Century. I started my personal tech blog, Global Nerdy, in August 2006, and since then have written over 3,000 posts which have acquired over 8.6 million pageviews.

Here’s a small sampling of what I’ve written:

I should also mention that while working at Microsoft as the Windows Phone evangelist (the second-hard evangelism job in mobile), I had a short-lived children’s show, complete with puppet co-host. Here’s the first episode:

Please link to your GitHub account page.

I’ll admit that it’s not as fat as I would like, but here it is:

If you have any questions or need additional information about me and my qualifications, please feel free to contact me!

{ Comments on this entry are closed }’s iOS development video tutorials

by Joey deVilla on February 12, 2014

ray wenderlich tutorial videos

Click the image to see the video on its page. has long been home to some of the best iOS development tutorials out there. They regularly publish tutorials that you can read online for free (here’s a categorized list), as well as more in-depth ebooks such as The iOS Apprentice, which they sell at very reasonable prices, especially considering the depth to which they cover their topics. If you’re serious about iOS development, and especially if you’re just getting started, you should visit regularly.

In response to readers’ requests, is introducing video tutorials. These videos focus on a particular iOS or Objective-C development topic, dive deep into it, end with some kind of hands-on challenge (and provide a solution), and are generally run about 15 minutes. The first video tutorials will cover the basics, such as:

  • Core concepts
  • Data types
  • Foundation
  • Storyboards
  • Auto Layout

As time goes on, they’ll add other topics, such as OpenGL, iCloud, Sprite Kit, networking, GCD (Grand Central Dispatch), Mac programming, in-app purchases, Unity, and even Android. In the intro video, Ray says that even if you’ve been doing iOS development for a while, you should watch these videos, as there’s a good chance that you’ll learn something new, and even if you don’t, it’s always good to brush up on the material, as there’s just so much.

In order to give people a taste of what these videos — which are currently “in beta” — are like, they’ve made these four viewable for free:

In keeping with’s tradition of providing good tutorials at a decent price, you’ll eventually need to sign up for a video tutorial subscription for $19/month. As a reward for early birds, you can lock in a rate right now for $15/month. Having read much of the site and purchased The iOS Apprentice and iOS by Tutorials, I believe that the tutorials will give you, the iOS developer, a lot of bang for the buck.


{ 0 comments }’s job interview article series

by Joey deVilla on November 15, 2013

job interview, one of my go-to sites for iOS development, recently published a series of articles on resumes and job interviews. While they’re writing primarily for iOS developers, most of the advice they give applies to developers of all stripes. Check ’em out:

i has the dumb

If you’ve just come from a job interview and didn’t think it went well, you can console yourself by reading about a recent job interview of mine that I blew six ways from Sunday. It’s covered in this article, with this follow-up.


weather app

Whether you’re new to iOS programming or a long-timer, is a valuable resource for the iOS developer. They regularly publish tutorials, tips, tricks and other goodies that you’d be crazy to do without if you’re serious about writing apps for iDevices. In addition to articles on the site, they go deeper with their books, which are excellent. recently published an article titled AFNetworking Crash Course, which covers how to write networking apps using AFNetworking, a library created by the folks at Gowalla that simplifies iOS network programming. In this tutorial, you build a weather app that uses AFNetworking to get its data from the World Weather Online service. Check it out; AFNetworking’s useful, and the tutorial’s pretty nice.

In order to reach the widest possible audience, the tutorial was written for iOS 5 and earlier versions of Xcode. If you’re developing with the current version of Xcode and for iOS 6 (which accounted for 83% of all iOS traffic in North America in February), you might want to make a few changes to the code in the tutorial. I’ve listed the changes below:

Use Modern Array Notation

Here’s the old way to get at the element of an array whose index is theIndex in Objective-C:

It’s a little clunky, and as I wrote in an earlier article, Objective-C’s New NSNumber, NSArray and NSDictionary Syntaxes Mean Less “Yak Shaving” for iOS and OS X Developers, there’s a much nicer way to do it:

In AFNetworking Crash Course, where you see code like this:

change it to this:

Use Modern Dictionary Notation

Here’s the old way to get at the item in a dictionary whose key is theKey:

Again: it’s clunky. Also again, in my earlier article, I showed the modern way to access dictionary items:

Setting items for a dictionary used to be like this:

Now, it’s like this:

So, in the places where you see code like:

change it to:

…and where you see code like:

change it to:

Update the Deprecated Location Manager Delegate Method

If you use the code as-is with iOS 6, you’ll get an error message that looks like this:

Deprecated in iOS 6.0
Tells the delegate that a new location value is available. (Deprecated in iOS 6.0. Use locationManager:didUpdateLocations: instead.)

Instead of using the deprecated locationManager:didUpdateToLocation:fromLocation: method, use the current locationManager:didUpdateLocations: method instead:


Joey deVilla’s augmented reality portfolio

by Joey deVilla on August 1, 2019

Beginning ARKit video course (, April 2019)

Beginning ARKit is a video course offered at the premier mobile development tutorial site, It introduces iOS developers to building augmented reality apps for iOS with Apple’s ARKit library. In 41 bite-sized videos spanning 2 hours and 22 minutes, I take you from the AR version of Hello, World! and show you how to build:

  1. Happy AR Painter: A Bob Ross-themed AR painting app that lets the user “paint” in 3D space using geometric shapes that can be animated.
  2. Raykea: A version of the popular IKEA Place app that not only lets you place AR furniture in the room you’re in, but also draws posters on vertical surfaces.
  3. BaedekAR: An AR guidebook, or Baedeker, for paintings and photos in galleries, museums, or any place that displays 2D art. It does this using ARKit’s ability to recognize and detect known 2D objects.
  4. Into the Third Dimension: In which we take the BaedekAR app and turn it into an app that can recognize and detect known 3D objects.

Not only did I narrate the videos, but I created the script, and all the code and most of the graphics for the course.

The course is available only to subscribers, but some excerpts have been made available for online preview. I’ve included them below:

ARKit workshop and Getting started with ARKit tutorial (RWDevCon conference, April 2018)

RWDevCon 2018 was a mobile development tutorial conference covering iOS and Android development held from April 5th through 7th, 2018 in Alexandria, Virginia. I was the only speaker to have two sessions:

  • A four-hour pre-conference workshop on ARKit, and
  • A two-hour introductory tutorial on ARKit.

These sessions were the two highest-rated ones at the conference, based on attendee feedback forms. It was this feedback that got me an offer to create the Beginning ARKit video course.

The four-hour conference is available only to subscribers, but the two-hour tutorial was made freely available online and shown above.

Augmented Reality UX presentation (Tampa Bay UX, June 2018)

Based on the success of the ARKit sessions at RwDevCon 2018, I did a presentation at a Meetup of the combined Tampa Bay User Experience / Front-End Design Meetup with my wife, Anitra Pavka. We talked about build good user experiences for augmented reality, using both commercial applications as well as the applications I made for the RwDevCon presentations.

The slides from our presentation are below:

Tech editor on ARKit by Tutorials, first and second editions (2018 and 2019)

I was a tech editor on the first and second editions of the book ARKit by Tutorials, and am currently tech editing the third edition, due for release this fall.

Augmented Reality in Android with Google’s Face API (July 2017)

My AR portfolio isn’t limited to just iOS — I also have an article on Android AR: Augmented Reality in Android with Google’s Face API, a tutorial in which I show readers how to build Snapchat-style filters that draw comic images over detected faces.

Would you like to know more about my augmented reality work? Feel free to contact me at