Categories
Humor Programming

The truth about programming for Apple platforms

This is old news to iOS/macOS/iPadOS/watchOS developers, but it’s worth repeating. That’s all right; I’d rather code in Swift than Objective-C.

Given the fight between Google and Oracle, I’m certain that if Google was the mother in the comic, Java would be Objective-C and Kotlin would be Swift.

Categories
Current Events Design Programming Tampa Bay

Our presentation at the Tampa Bay UX Group meetup: “iPhone Accessibility: What’s New?” (January 30, 2020)

Last night, Anitra and I gave Tampa Bay UX Group’s first presentation of 2020: An overview of the accessibility features in iOS 13, the latest version of Apple’s mobile operating system.

A good crowd — including a handful of people new to the Tampa Bay area — were in attendance at the event, which took place at Kforce, who have a very nice meetup space. I’ll have to talk to them about using their space for Tampa iOS Meetup:

Anitra and I tag-teamed for our presentation. She presented from the ux/ui specialist point of view, while I presented from the programmer/implementer angle:

Photo by Beth Galambos. Tap to see at full size.

Here are the slides from our presentation:

We started with a couple of definitions of accessibility:

  • The ISO 9241-20 definition: “The usability of a product, service, environment, or facility by people within the widest range of capabilities.”
  • A more general definition, and a good way of approaching the topic: Accessibility is making your apps usable by all people.

We then provided a set of personas, around which we based the demos:

  1. Jacob, a 32 year-old paralegal who has been blind since birth. As a paralegal, he’s college-educated and writes case law summaries. He lives with a roommate. He’s tech-savvy and an early adopter with the latest gear.
  2. Emily, a 24 year-old college student with cerebral palsy. She finds it difficult to use her hands and has occasional difficulty speaking clearly. She wants to be independent and lives in a small, independent living facility.
  3. Trevor, an 18 year-old student with autism spectrum disorder who is uncomfortable with change. He loves videogames, but strongly prefers ones with which he is familiar. In fact, he prefers having an established routine.
  4. Steven, a 39 year-old graphic artist who is deaf. He is annoyed by accessibility issues, which include video without captions and other systems that require hearing.

Our first demo was of VoiceOver, the gesture-based screen reader. We demonstrated its ability to not only read text on screen, but to facilitate navigation for people who have no or low vision, as well as to describe images — even if no “alt text” is provided. If you’re curious about using VoiceOver, you should check out this quick video guide:

Our second demo was of Voice Control, the new voice command system, which is separate from Siri. It offers an impressive amount of control over your device using only your voice; I was even able to demonstrate playing Wine Crush, a Candy Crush-style app that I wrote from Aspirations Winery, using only my voice. To find out more about Voice Control, see this promotional video from Apple:

We also wanted to show that accessibility can be aided using iOS features that weren’t specifically made for that purpose. We demonstrated this with an app that allows users to click on buttons using a head-tracking user interface based on the face-tracking capability built into Apple’s augmented reality framework:

I’ll post of video of this demo in action soon, but if you’d like to try it out for yourself, you can find it on GitHub: it’s the HeadGazeLib project.

We followed these feature demos with a couple of coding examples, where I showed how you can use SwiftUI’s accessibility features to further enhance the accessibility of your apps:

One of the coding examples from our presentation. Tap to see at full size.

And finally, we closed the presentation with links to the following resources:

We’d like to thank Krissy Scoufis and Beth Galambos for inviting us to present at the Tampa Bay UX Group meetup. They’re a great group that promotes an important — yet often neglected — part of application development, and we’re always happy to take part in their events. We’d also like to thank everyone who attended; you were a great audience with fantastic questions and comments!

More photos from the event

Joey deVilla and Anitra Pavka present to the Tampa Bay UX Group Meetup. Taken January 30, 2020 at Tampa Bay UX Group meetup at the Kforce office in Tampa.

Photo by Krissy Scoufis. Tap to see it at full size.

Joey deVilla and Anitra Pavka present to the Tampa Bay UX Group Meetup. Taken January 30, 2020 at Tampa Bay UX Group meetup at the Kforce office in Tampa.

Photo by Krissy Scoufis. Tap to see it at full size.

Joey deVilla and Anitra Pavka present to the Tampa Bay UX Group Meetup. Taken January 30, 2020 at Tampa Bay UX Group meetup at the Kforce office in Tampa.

Photo by Krissy Scoufis. Tap to see it at full size.

Close-up of the presentation screen, showing Joey deVilla demonstrating the head-tracking app. Taken January 30, 2020 at Tampa Bay UX Group meetup at the Kforce office in Tampa.

Photo by Beth Galambos. Tap to see it at full size.

Close-up of the presentation screen, showing the presentation title slide: 'iPhone accessibility: What's New? by Anitra Pavka and Joey deVilla'. Taken January 30, 2020 at Tampa Bay UX Group meetup at the Kforce office in Tampa.

Photo by Krissy Scoufis. Tap to see it at full size.

Recommended reading

You might also want to check out the other presentations we did at Tampa Bay UX Group’s meetups:

  • Building Augmented Reality Experiences: Our presentation on building AR apps for iOS devices using ARKit
  • Apple TV: Our presentation on building good interfaces for Apple TV apps. I had to attend a work event that evening, so Anitra ended up presenting this one solo.
Categories
Current Events Programming

Pulling my old “Frogger / Crossy Road”-style game out of mothballs

Screenshot from the game. Tap to see it at full size.

Pictured above is Dale Mabry, a “cross the road”-style videogame in the style of Frogger, or its later cousin, Crossy Road. It gets its name from Dale Mabry Highway, a busy north-south six-lane “stroad” in Tampa. I wrote it back in 2016 as part of learning iOS game programming in Swift and SpriteKit.

Here’s a sample of the gameplay:

I lifted the code for moving the player character from the raywenderlich.com book 2D Apple Games by Tutorials. It’s from the Zombie Conga game, pictured below:

I then wrote code to move the cars and handle the gameplay.

After getting the basic gameplay working, I got busy with other projects and forgot about the game for a couple of years. I recently pulled it out of mothballs just before Wednesday’s “Share Your Mobile App” with Others meetup, because organizer Edwin Torres asked attendees to show off any apps they’d worked on.

I wrote it back in 2016, when Swift was at version 3. It took me about a half hours’ worth of work to get it up and running in the current versions of Swift and SpriteKit, which was considerably less time than I thought it would take. I compiled it, put it on my iPad, and showed it to the group at the meetup.

Now that it’s out of mothballs, my plan is to polish it and put it in the App Store later this year. and it’s going to be one of my 20 Projects in 2020.

Want to see the code for the game? You can! It’s posted on my Github.

 

Categories
Meetups Programming Tampa Bay

“Share your mobile app with others” meetup — Wednesday, January 15, 7:00 p.m. at Fuzzy’s Taco Shop

Tomorrow — Wednesday, January 15 — is the very first Share your mobile app with others meetup! It takes place at Fuzzy’s Taco Shop in Temple Terrace (at the corner of E Fowler and 56th), and it’s for anyone who:

  • Wants to show their mobile app to other locals, or
  • Wants to see mobile apps written by locals. That’s right, you don’t have to be a developer to attend!

From the meetup page:

Network with other inspired entrepreneurs/developers/app lovers about experiences whether it’s:

  1. App ideas
  2. Hiring developers
  3. Learning to code
  4. App marketing/advertising
  5. Comparing journeys
  6. Creating a team

I am personally not a developer but have an IT background and have hired app developers of my own and would love to share my experience with others.

I’ll be there with a couple of apps to show, and to see who else is doing mobile development in town. I’ll also answer any questions that people may have about mobile development.

The meetup page says that they’ll set up on the long island table in the middle of Fuzzy’s (pictured above). I’ll see you there!

Categories
Meetups Programming Security

Threat Angler’s “Intro to Docker” online seminar: Friday, Jan. 10, 12:00 p.m.


If you’ve heard of Docker but don’t quite know what it is or why it’s used, check out this upcoming online seminar that Tampa Bay cybersecurity company Threat Angler is putting on this Friday:

This event will provide you with an intro level understanding of containers and how to work with containers using the Docker platform. All skill levels are welcome, but the target audience is those who have no prior exposure to Docker. We look forward to the opportunity to share this knowledge with you!

The webinar happens on Friday, January 10, 12:00 to 1:00 p.m.. You’ll need Zoom to access it.

Categories
Programming What I’m Up To

I’m building 20 projects in 2020!

Photo: 20 Projects in 2020, featuring a white Apple Watch and White iPhone outdoors on a wooden picnic table.

Here’s my personal challenge for this year: I will try to complete at least 20 small software projects in 2020 and document them here on Global Nerdy. The number of projects I’ve chosen to attempt this year comes straight from the way the year is commonly pronounced: twenty-twenty.

Why am I doing this? Because now that I’m back to writing code for a living — after a good long period of time as a product manager or owner, a developer evangelist, or a marketer — and I want to up my game. Yes, I’ll get lots of practice at work, but as those of you who code for a living know, the projects you do at work tend to focus on a narrow segment of what’s possible with code, and largely about solving a business problem instead of learning a new technology, language, or skill.

There’s also another reason: quantity leads to quality.

Photo: Cover of “Art & Fear: Observations On the Perils (and Rewards) of Artmaking” by David Bayles and Ted Orland.

There’s a pretty good chance that you’ve heard the “ceramics class quantity vs. quality” story. It’s from the book Art & Fear: Oberservations on the Perils (and Rewards) of Artmaking, and it’s appeared many times over the past couple of decades on sites that techies are likely to read. In Cool Tools, Kevin Kelly included it in a list of excerpts from the book way back in 2003, Jeff Atwood wrote about it in Coding Horror in 2008, then Jason Kottke wrote about it in 2009, Ben Thompson cited it in Stratechery in 2015 when writing about Buzzfeed’s success, and in 2016, it’s referred to in a Hackernoon post.

Here’s the story, with emphasis added by me:

The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality.

His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the “quantity” group: fifty pound of pots rated an “A”, forty pounds a “B”, and so on. Those being graded on “quality”, however, needed to produce only one pot – albeit a perfect one – to get an “A”.

Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the “quantity” group was busily churning out piles of work – and learning from their mistakes – the “quality” group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.

Here’s Jeff “Coding Horror” Atwood’s take-away from this story:

Quantity always trumps quality. That’s why the one bit of advice I always give aspiring bloggers is to pick a schedule and stick with it. It’s the only advice that matters, because until you’ve mentally committed to doing it over and over, you will not improve. You can’t.

When it comes to software, the same rule applies. If you aren’t building, you aren’t learning. Rather than agonizing over whether you’re building the right thing, just build it. And if that one doesn’t work, keep building until you get one that does.

In short, it boils down to the old adage “Practice makes perfect,” or more accurately, “Practice makes progress.”

Most of these projects will be built for “toy” systems: mobile devices, wearables, the Raspberry Pi and set-top boxes. I’ve made this choice for a number of reasons:

  1. I got an Apple Watch for Christmas! Sure, it does neat things like track my exercise and tell the time, but the real reason I got it was to write apps for it.
  2. “Toy” projects allow me to constrain them so that they don’t take an excessive amount of time to build, which is key when you aim to put together 20 projects in a year.
  3. My day-to-day work is mobile development. Anything that makes me better at it is a good thing.
  4. I need topics for my meetup, Tampa iOS Meetup. Yup, that’s making a grand comeback shortly.
  5. I’ve already got an interesting side project that involves the Apple Watch.
  6. I also got a mini-screen for my Raspberry Pi, which has been neglected as of late.

6. Finally, and most importantly, I’m doubling down on the philosophy that I talked about on The 6-Figure Developer podcast: “Always bet on the toy.”

Creative Commons photo by Chris Cox. Tap to see the source.

Chris Dixon wrote about this ten years ago in an article titled The next big thing will start out looking like a toy. Here are the opening paragraphs:

One of the amazing things about the internet economy is how different the list of top internet properties today looks from the list ten years ago.  It wasn’t as if those former top companies were complacent – most of them acquired and built products like crazy to avoid being displaced.

The reason big new things sneak by incumbents is that the next big thing always starts out being dismissed as a “toy.”  This is one of the main insights of Clay Christensen’s “disruptive technology” theory. This theory starts with the observation that technologies tend to get better at a faster rate than users’ needs increase. From this simple insight follows all kinds of interesting conclusions about how markets and products change over time.

Disruptive technologies are dismissed as toys because when they are first launched they “undershoot” user needs. The first telephone could only carry voices a mile or two. The leading telco of the time, Western Union, passed on acquiring the phone because they didn’t see how it could possibly be useful to businesses and railroads – their primary customers. What they failed to anticipate was how rapidly telephone technology and infrastructure would improve (technology adoption is usually non-linear due to so-called complementary network effects). The same was true of how mainframe companies viewed the PC (microcomputer), and how modern telecom companies viewed Skype. (Christensen has many more examples in his books).

He also points out that something being toy-like doesn’t necessarily mean that it will become the next big thing. He’s saying that initially they seem like toys, but due to external forces, they become useful in ways that seem obvious in hindsight but invisible at the time. It’s yet another example of William Gibson’s cyberpunk maxim: “The street finds its own uses for things.”

Dixon closes his article about the next big thing being a toy with this paragraph, which mentions the new decade:

But startups with sustaining technologies are very unlikely to be the new ones we see on top lists in 2020. Those will be disruptive technologies – the ones that sneak by because people dismiss them as toys.

Watch this space as I post about these projects throughout 2020! The first — a simple Apple Watch app that’s also a “How to write an Apple Watch app” article in disguise — will be here on Global Nerdy soon.

Categories
Podcasts Programming What I’m Up To

I’m on episode 123 of “The 6 Figure Developer” — “iOS Apprentice & Accordions w/ Joey deVilla”!

Last month, the folks at The 6 Figure Developer podcast interviewed me, and that interview was published this morning! It’s titled iOS Apprentice & Accordions w/ Joey deVilla, and you can find it right on the 6 Figure Developer site, or through your favorite way to find podcasts.

You can also use the player below:

The topics covered in the interview:

  • How I got started in the industry and where I am now. I started as a developer, then a developer evangelist, then marketing, then product owner, and now I’m a developer again!
  • My new job at Lilypad, which I like to describe as “a CRM for the alcohol industry”, and how much fun I’m having being a developer again.
  • My tech strategy: “Always bet on the toy.” The technology that people dismiss as a toy today often becomes tomorrow’s indispensable tool.
  • Working on the 8th edition of iOS Apprentice for raywenderlich.com. It was an adventure, what with having to cover the new SwiftUI framework in a beginner-friendly way. I also talk about being honored to work on this edition of the book, as I learned iOS programming from an earlier edition written by the original author, Matthijs Hollemans.
  • Cross-platform vs. native mobile development and the challenges with each approach. When do you use each approach?
  • The people whose primary way of getting online is their mobile device. I talk about a key demographic — about 8% — whose smartphone is pretty much their only gateway into the online world.
  • Taking an active role in the Tampa Bay tech scene. I explain that it’s a habit I picked up from the Toronto tech scene in the early 2000s, during the era of DemoCamp Toronto. This work helped turn Toronto into one of the top 5 tech powerhouses in North America, and I think Tampa Bay can borrow a few of those tricks.
  • Don’t forget that two Tampa Bay authors have iOS books! It’s not just me, but Craig Clayton as well.
  • Recommended meetups and resources for Tampa Bay mobile developers. There’s Tampa iOS Meetup, the Suncoast Google Developers Group, and of course, the Coders, Creatives, and Craft Beer meetup.
  • My one piece of career advice: It’s actually Eleanor Roosevelt’s advice — “Do the thing you think you cannot do.”

Who interviewed me?

The hosts of The 6 Figure Developer who interviewed me are:

John Callaway: An International Speaker, Author, and Microsoft MVP, John has been a professional developer since 1999. He has focused primarily on web technologies and currently focuses on C# and .NET Core in Azure. Clean code and professionalism are particularly important to him, as well as mentoring and teaching others what he has learned along the way.

Clayton Hunt: Clayton has been programming professionally since 2005 doing mostly web development with an emphasis on JavaScript and C#. He has a focus Software Craftsmanship and is a signatory of both the Agile Manifesto and the Software Craftsmanship manifesto. He believes that through short iterations and the careful gathering of requirements that we can deliver the highest quality and the most value in the shortest time. He enjoys learning and encouraging other to continuously improve themselves.

Jon Ash: Jon has been a web developer since 2011 and a professional consultant since 2006. Coming from the aerospace industry he brings a passion for professionalism and excellence. He has a broad experience in current web technologies, with a strong foundation in C# and JavaScript. Though working knowledge of technologies are important, he takes pride in practicing and promoting clean code, adherence to the SOLID principles, and disciplines such as Test Driven Development.