Because I’m in the middle of a job search — like about 1 in 11 techies who’ve been laid off since that start of 2023, I’ve been asked for links to my portfolio. Here’s the current version of my content portfolio as of August 2024, which showcases my developer relations / tech advocate / technical writing experience.
Table of contents
Current projects
Creating the Python for AI course for Kodeco
I’m currently contracted to create the first of several new courses for Kodeco that will be available in October. Kodeco is expanding beyond their usual mobile development tutorials and into tutorials covering the development of AI applications.
My course will be a thorough introduction to Python for experienced programmers who want to get into AI development.
Teaching Python for Computer Coach
I’m nearly done teaching an online 40-hour / five-week / two-nights-per-week introductory Python course for Tampa Bay’s go-to tech training center, Computer Coach (it will conclude on August 14). This course is aimed at people who are new to programming, but by the end of the course, they’ll have built Python applications in Jupyter Notebook, command-line applications, and even web apps in Flask!
The Global Nerdy YouTube channel
I’ve recently been working on building up the Global Nerdy YouTube channel, where I plan to post long-form videos on technology, software development, and life as a developer.
I published this video in July 2024, the first in a series on surviving the recent tech industry layoffs:
In response to the recent CrowdStrike outage, I posted this video explaining how it happened:
Recent work
Unified.to
I had a short contract stint as the Developer Advocate for Toronto-based startup Unified.to during April and May 2024. My first assignment at Unified.to was to write their 2024 State of SaaS APIs, a 44-page white paper on various aspects of how APIs are designed and implemented. It covered a wide range of topics, including:
- API designs and specification formats
- API documentation — generated manually, or with automated tools?
- URLs in APIs: static base URLS, custom domain-/subdomain-based URLs, and versioned URLs
- Data centers
- Authorization and authentication
- Webhooks
- Pagination
- Glossary
Here are a couple of screenshots from the 2024 State of SaaS APIs, which you can download for free from Unified.to:
In addition to the 2024 State of SaaS APIs paper, I wrote articles for their blog at the rate of about one per week, including What is a Unified API?, for which I also made the diagrams (pictured below):
My other articles for Unified.to are:
- 2024 State of SaaS APIs: API Specifications and Documentation
- 2024 State of SaaS APIs: URLs
- How to Associate a Connection ID with Your End-User
- Introducing Unified.to’s Messaging API
- Setting up OAuth 2 Credentials for Greenhouse’s Ingestion API
- Introducing Unified.to’s KMS API
- How to register a HubSpot developer app and get OAuth 2 credentials
I also created a couple of tutorial videos for their channel:
Auth0 by Okta
In my most recent full-time position, I was a member of Auth0 by Okta’s Content team in their Developer Engagement group. I was there for over three years, and my primary responsibility was to create content for mobile developers — articles, tutorials, videos, and other material.
Prior to my arrival at Auth0, there hadn’t been much new content for mobile developers for the prior three years, during which time Apple and Google had made significant changes to iOS and Android.
During my tenure as Senior Developer Advocate, I started writing Auth0’s first new mobile development articles in years, focusing on native iOS and Android development. For React Native and Flutter, I worked with guest authors to produce articles for developers building mobiel apps with those platforms. I also worked with the Developer Experience and SDK teams to update some long-neglected “quickstart” toolkits to help mobile developers become acquainted with Auth0’s “login as a service” more quickly and easily.
In my three years at Auth0, I brought the mobile development section of the Auth0 development blog from 0 pageviews/month to 20,000 pageviews/month.
I ended up producing one long-form article a month that bore my name on the byline (I ended up rewriting or ghost-writing a number of guest articles as well). My Auth0 articles are listed below, with some annotations for notable articles.
Not all of my articles were about the Auth0 platform. I wrote some articles simply to gain the attention from mobile developers and on mobile development topics I felt didn’t receive enough attention.
My series of articles on working with dates and times in the Swift programming language remains popular among iOS developers — in fact, in Google searches for the search terms swift dates times
still rank my articles in the top five:
- Introduction to Date and Time Programming in Swift, Part 1
- Introduction to Date and Time Programming in Swift, Part 2
- Date and Time Calculations in Swift, Part 1
- Date and Time Calculations in Swift, Part 2
I also wrote articles that went outside my usual topic of mobile development, including these two articles, which are still in the top five results for searches on EXIF and Python and EXIF and JavaScript:
- How to Read and Remove Metadata from Your Photos With Python
- JavaScript and Photos: Read, Edit, and Erase Location and Other Exif Metadata
Here are my other Auth0 articles:
- Use Honeytokens and Auth0 Actions to Catch Malicious User Logins
- Ensure Users Log in from Trusted Networks with Auth0 Actions
- Activate Passkeys and Let Your Users Log in without a Password
- Adding passkeys to your apps with Okta CIC powered by Auth0
- ChatGPT Tries to Add Auth0 Authentication to an Android App, Round Two!
- ChatGPT Tries to Add Auth0 Authentication to an iOS App, Round Two!
- Add Progressive Profiling to Auth0 Authentication in Android Apps Built with Jetpack Compose
- Get Started with Jetpack Compose Authentication, Part 1: Jetpack Compose Basics
- Get Started with Jetpack Compose Authentication, Part 2: Adding Authentication
- Working with Auth0 User and App Metadata in iOS Apps
- Working with Auth0 User and App Metadata in Android Apps
- Get Started with Android Authentication Using Kotlin
- Limit User Registration to Specific Dates with Auth0 Actions
- Quick Tips and Tricks for Auth0 Actions
- Use Actions to Show Users an Announcement after Logging in (Or Rickroll Them)
- Working with Auth0 User Profile Information and Metadata in Android Apps
- Get Started with iOS Authentication using Swift and UIKit
- How to Explain Public-Key Cryptography and Digital Signatures to Anyone
- Get Started with Android Authentication Using Kotlin: Part 1
- Get Started with Android Authentication Using Kotlin: Part 2
- Build and Secure an API with Spring Boot and Kotlin
- See What You Coded Last Summer with “Your Year in Code”
- Tips and Tricks for Solving Advent of Code’s Puzzles
- Introducing Auth0 React Native SDK 3.0!
- Get Started with Auth0 Authentication in React Native Android Apps
- Get Started with Auth0 Authentication in React Native iOS Apps
- Get Started with iOS Authentication using SwiftUI, Part 1: Login and Logout
- Get Started with iOS Authentication using SwiftUI, Part 2: User Info, ID Tokens, and JWTs
- How Profile Enrichment and Progressive Profiling Can Boost Your Marketing
- Introducing Auth0 CRAPTCHAs!
Kodeco (formerly RayWenderlich.com)
I learned mobile development from reading the first edition of The iOS Apprentice, a book produced by RayWenderlich.com (which eventually became Kodeco), the premier mobile development tutorial site, and I’ve been a fan ever since.
So when they put out a call for authors for Android articles, I took it as an opportunity to learn Android development so that I could be a contributor to the site. They gave me a choice of assignments that I could take on for my “audition,” and I chose one of the trickier ones: “Write an article showing how to make an augmented reality Android app.”
The result was Augmented Reality in Android with Google’s Face API (screenshots from the app a re pictured above).
Thanks to my success with that augmented reality article, I was selected to be the technical editor for their book ARKIt by Tutorials. I was also selected to make not one, but two presentations at their RWDevCon 2018 conference: a two-hour presentation and a four-hour deep dive:
These presentations were the top two most highly-rated presentations at the conference.
When they sought out authors for the 8th edition of The iOS Apprentice, I threw my hat in the ring because I wanted to revise the book that taught me mobile development. Shortly after I was selected as one of the co-authors, Apple introduced the new SwiftUI framework, which necessitated completely rewriting major portions of the book.
I have also written the following articles for Kodeco, the most recent one in March 2024:
- Layoff to Liftoff: Surviving Downsizing in the Tech Industry
- Jetpack Compose Tutorial for Android: Getting Started
- Create Your Own Kotlin Playground (and Get a Data Science Head Start) with Jupyter Notebook
- Beginning Data Science with Jupyter Notebook and Kotlin
- Kotlin Cheat Sheet and Quick Reference (2019 edition)
- What’s New in Kotlin 1.3
- Kotlin Cheat Sheet and Quick Reference (2018 edition)
Presentations from the past 12 months
In November 2023, I gave an hour-long presentation to the Tampa Devs group that explained how computers work “under the hood.” I starting by explaining what transistors are and how they work, worked up to microprocessors, and finally covered programming in assembly language:
In February 2024, I gave a presentation on getting into AI development at the Civo Navigate North America 2024 conference. My time slot was on Day 1, immediately after the opening keynote:
Based on the success of my AI talk at Civo Navigate North America, the Austin Forum on Technology and Society invited me to give a more in-depth online version of the talk for their “AI April” event in April 2024:
A few days after the “backdoor” to the xz Utils utility was discovered, I proposed giving a last-minute lightning talk about the incident to the organizers of the BSides Tampa 2024 cybersecurity conference in April 2024. It ended up turning into a full presentation:
As a result of the response to my presentation at Civo Navigate North America 2024, Civo also invited me to give a lightning talk at Civo Navigate Local Tampa 2024 in April 2024:
Past work
My tech blog, Global Nerdy
I’ve been publishing Global Nerdy, my personal blog on technology, tech news, and software development since August 2006. To this day, it gets about 30,000 pageviews per month.
Here’s a sampling of articles on Global Nerdy:
- Build your first app for GM’s Next Generation Infotainment (NGI) in-car platform
- “Oblique Strategies” and Tampa iOS Meetup’s February 2017 session
- Just enough React to get you into trouble
- Demonstrating map, filter, and reduce in Swift using food emoji
- Swift 3 text field magic
- How to build an iOS weather app in Swift
- Simple “Shoot ’em up” game with Sprite Kit
- Better to be roughly right than precisely wrong: Rounding numbers with Swift
- How to fix the common “no sound from AVPlayer/AVAudioPlayer” problem in iOS/Swift programming
- Sprite Kit actions tutorial
- How to execute a block of code after a specified delay
- A first look at Swift’s new access levels
- You can use Swift’s “private” access modifier to limit the reach of overrides and extensions, but not monkeypatches
- Updating RayWenderlich.com’s “AFNetworking Crash Course” for iOS 6
- Magic 8-ball tutorial in Objective-C
- Simple weather app in Objective-C
- A Step Forward (or: Objective-C Doesn’t Need Forward Declarations Anymore)
My short-lived children’s show, Developer Jr.
And finally, while this is from a while back, I’m including it in this portfolio simply because I’m sure no other candidate will be able to show you something like this: my short-lived children’s show about technology. Just like Sesame Street, there’s a puppet co-host: