Categories
Career Current Events Programming Tampa Bay

What skills and subjects are you betting your development career on? Let’s meet up about it!

Sure things, maybes, and longshots

Back in November, in an article promoting the Tampa Bay Full Stack Meetup, I wrote about the concept of balancing my skills in the same way some financial people balance their stock portfolio: 70 percent “sure thing” programming languages and technologies, and 30 percent gambles — 20% “maybes” and 10% “longshots”.

Here’s what I wrote about my portfolio:

  • I invest the majority — about 70% — in “sure thing” skills, such as mainstream platforms, programming languages, and technologies. In my case, this is…
    • C#,
    • JavaScript,
    • Kotlin,
    • Mobile operating systems, namely Android and iOS,
    • Python, and
    • Swift.
  • I spent about 20% on “maybe” technologies, and one of these is Flutter, which also involves the Dart programming language.
  • The remaining 10% of my time on sharpening my skills is spent on longshots. For me, this is blockchain technology.

For the most part, with the notable exception of Flutter and Dart, my portfolio’s been pretty stable for the past few years. I’m probably due for a review.

A 70-30 technology skills map for Tampa Bay techies

Here’s a 70-30 tech skills map, which takes a bunch of technologies that Tampa Bay companies are currently hiring for, and divides them into two categories:

  • The 70% category, which consists of things for which local companies are generally hiring for at the moment, and
  • the 30% category, which comprises things for which local companies might hire for in the future, or which might qualify you for an interesting remote job.

Here are the languages and technologies represented by the logos in the 70% category, listed in alphabetical order…

  • Angular
  • AWS
  • Azure
  • Java
  • JavaScript/ECMAScript
  • .NET/.NET Core
  • Node.js
  • PHP
  • React / React Native
  • Ruby on Rails
  • SQL
  • Vue.js

…and here are the languages and technologies represented by the logos in the 30% category, listed in alphabetical order, with some notes for each:

  • Artificial intelligence / machine learning / whatever else you want to call it: The buzzwords of the moment, and the answer to the question “What if we made algorithms that came up with algorithms?”
  • Assembly language and C: Both appear to be making a comeback in the age of IoT devices, where you’re trying to squeeze big performance out of tiny systems.
  • Augmented reality / virtual reality / glasses: Once upon a time, “multimedia” was a specialized subject, now it’s just part of everyday computer interfaces. AR, VR, and glasses may eventually be like this.
  • Dart / Flutter: Dart is an object-oriented, class-based, garbage-collected language with C-style syntax, and Flutter is a cross-platform mobile app development framework.
  • Elixir / Phoenix: Elixir is a functional, concurrent, general-purpose programming language that run on the Erlang virtual machine, and Phoenix is an Elixir-based web development framework.
  • Fuschia: Google’s multi-platform operating system for computing devices of all sizes, from embedded systems, smartphones, tablets, and desktops/laptops.
  • Go: A C-like object-oriented language for systems-level programming
  • “Internet of Things”: Including small systems like the Arduino and Raspberry Pi.
  • Kotlin: An early paper on the language said “Don’t call it ‘Swift for Android’, but that’s pretty much what it is, and that’s not a bad thing. It’s Swift for Android.
  • Python: First eclipsed by Perl in the ’90s and then Ruby in the ’00s, it’s now coming into its own thanks to its math, scientific, and data science libraries and the rise of machine learning, I’m glad to see Python finally being recognized. Out of all the languages in this category, this is the only one I’ve ever been paid to code in.
  • R: A language and environment for statistics. Like Python, it’s become popular because of its applicability to data science and machine learning.
  • Rust: A multiple-paradigm programming language with an emphasis on concurrency. The consistent winner of Stack Overflow’s “Most Loved Programming Language” for the past four years.
  • Scala: The answer to the question “What if Java didn’t suck and had better support for functional programming?”
  • Serverless tech: A refinement of cloud computing that lets you run applications and services on the cloud without thinking about the servers they run on. Amazon’s AWS Lambda, Google’s Cloud Functions, and Microsoft’s Azure Functions are examples of serverless offerings.
  • Smart watches: These are a fantastic platform for what I can “nano-tasks”: little tasks that take ten seconds or less.
  • Swift: Objective-C was getting long in the tooth, so Apple created Swift. It’s a pretty nice language, and pretty much necessary if you’re developing for anything Apple.

This is by no means a complete list — think of it as a starter, and I’m writing it only from a developer point of view.

After viewing this list, you may be asking yourself “So which do I choose?” That’s what I’m doing right now.

Would you like to meet up to discuss your 70/30 plan?

Let me know if you’d like to talk about this at the next Coders, Creatives, and Craft Beer meetup, which I’m looking to schedule for near the end of the month. It’ll still follow the same informal “we’re just here to chat” format, but it might be something to discuss.

Categories
Humor Programming

“This is just to say” (The 2020 edition)

This is just to say

I have fixed
the bugs
in the app

and which
you coded
and probably thought
were features

Forgive me
they were egregious
so basic
and so avoidable

Categories
Humor Programming

What comments are for

Categories
Current Events Programming

Updating Xcode? If you’re on Mojave, you’ll also need to update macOS.

In case you were wondering how long you could keep on using macOS 10.14 “Mojave” as a developer targeting any Apple OS, the answer is “not too much longer.” I was presented with the dialog box above when trying to run the beta for Xcode 11.4 on my MacBook running Mojave.

I was doing all this as part of updating The iOS Apprentice, 8th Edition, a great book for people who want to get started building iOS apps. It’s available in both electronic and dead-tree formats, and when you buy an edition, you get updates of that edition for free!

Categories
Humor Programming

Me, looking at the code written by the previous developer

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.