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:


Last night, Anitra and I enjoyed delivering our presentation on building user experiences for mobile augmented reality apps to the combined Tampa Bay User Experience and Front-End Design meetups at Bank of the Ozarks’ Innovation Lab in St. Pete.

Photo by Beth Galambos.

Augmented reality is still relatively new territory for most mobile app developers and designers. Until recently, if you wanted to build AR apps for smartphones and tablets, you were faced with the task of doing a lot of programming in order to “roll your own” capabilities, including:

  • Overlaying virtual images over camera images and displaying both on the screen
  • Detecting changes to the device’s location and orientation in real-world space
  • Re-orienting virtual images and drawing new ones in response to changes in the device’s location and orientation
  • Detecting and responding to objects in the real world as seen by the device’s camera and other sensors

This has changed in the past year, with the introduction of built-in augmented reality frameworks by Apple into iOS (ARKit) and Google into Android (ARCore). With these, you don’t have to be an expert low-level programmer to built AR apps; even if you can build basic web or mobile applications, building AR apps is now something within your reach.

Photo by Joey deVilla.

Augmented reality is also relatively new territory for users. Desktop and laptop computers have had the processing power to do AR for many years, but in order to be truly useful, AR needs the kind of portability that comes with tablets, smartphones, and wearable devices. For the longest time, these portable devices lacked the power to do usable AR.

The past year has seen the introduction of the A11 “Bionic” processor in the iPhone 8 and iPhone X, and the Snapdragon 845 or Exynos 9810 processor in the Samsung Galaxy S9. We now have flagship smartphones and tablets with processing power that rivals the processor in the current MacBook Pro. These devices are now powerful enough to deliver practical AR experiences.

Photo by Beth Galambos.

With augmented reality now within easy reach of developers and users, it’s time for UX specialists and front-end designers to start thinking about building AR experiences. AR interactions are quite different from those for desktop applications, and expand upon plain mobile applications.

It’s AR’s early days. Think of AR today as being at the same point as…

  • Personal computers in the mid- to late 1980s
  • The GUI, multimedia, and CD-ROMs in the early 1990s
  • The internet and web in the mid- to late 1990s
  • Web 2.0 in the early 2000s
  • Mobile apps in the late 2000s and early 2010s

If you take the leap, you can make a splash.

The presentation

AR’s a big topic, and we had a big presentation — 99 slides! We had a lot of ground to cover, as you can see from the SlideShare above.

For those of you who want to download your own copy of our slides, here they are in a couple of formats:

Apple Keynote (131MB)

PDF (101MB)

The presenters

In case you don’t know who we are, here’s a quick summary…

Anitra Pavka

  • Technical Product Manager at Malwarebytes, working on the consumer anti-malware product used by almost 15 million people.
  • Contributing author to O’Reilly’s book, HTML5 Cookbook.
  • Technical editor for O’Reilly’s book, Universal Design for Web Applications.
  • Three-time speaker on accessibility and usability issues at SXSW Interactive.
  • Previous Tampa Bay UX Meetup speaker about Apple TV UX. | @APavka | LinkedIn


Joey deVilla

  • Lead Product Manager at Sourcetoad, overseeing the design and implementation of mobile applications.
  • Contributing author at the mobile developer tutorial site
  • ARKit session and tutorial presenter at RWDevCon 2018.
  • Technical editor for the book ARKit by Tutorials.
  • Tampa iOS Meetup organizer.
  • Former Microsoft dev evangelist; tried to make Windows Phone 7 happen. | @AccordionGuy | LinkedIn

Learn to build your own ARKit apps!

If you’d like to try your hand at building AR apps for iOS, take a look at the tutorial session that I gave at RWDevCon 2018 in April. In it, I walk the audience through building two of the apps that we demoed last night:

  • Happy AR Painter, which lets you “paint” augmented reality shapes in real-world space.
  • Raykea, a scaled-down version of the IKEA Place app.

Not only does this page contain the video of the entire tutorial session, it also has links to the starter and final projects for both these apps. All you need is Xcode (available for free from Apple) and an AR-ready iDevice (iPhone 6S or later).

If you’d like to get even further into AR development for iOS, there’s no better book than ARKit by Tutorials, which not only teaches you all sorts of things about ARKit, but shows you how to build 5 AR apps:

  • Tabletop Poker Dice
  • Immersive Sci-Fi Portal
  • 3D Face Masking
  • Location-Based Content
  • Monster Truck Sim

I was part of the technical editing team for the book, and I can say with certainty that it’s a fantastic resource for the AR developer.