July 19, 2018
I've been teaching folks how to write iPhone and Mac apps for ten years.
There are other things I do as well, but I love teaching and really love being in this space.
About a dozen years ago I was coding in Java and writing about it for various magazines and in a handful of books. I was one of those who loved the Mac and loved Java and developed in Java on the Mac. I didn't love the combination.
A couple of guys took me out to lunch and quietly convinced me that if I loved the Mac and wanted to work on that platform that I should really learn the language of the Mac: Objective-C.
I really liked Objective-C. I loved the community.
My introduction to Mac programming was on System 7. In those days you bought your compiler and tools. I started with a few small programs in Pascal and then I took an online course in C from Metrowerks Ron. That together with books on Numerical Methods and some help from the Graphic Gems collection was enough that I could write some small programs to help me with my research in Differential Geometry.
I don't remember why I jumped over to Java. It felt exciting. There was a lot of energy there and the community was great. People were trying new things and sharing ideas with each other.
Well, maybe not "new" things. Every time someone would share something new, the Smalltalkers would say, "oh, yeah, we've been doing that for twenty years."
I didn't yet know about Objective-C which seems to be the language that bridged Smalltalk to Java.
In any case, after ten or more years in the Java world, I moved over to Objective-C.
The Objective-C we wrote in those days is not the same as the Objective-C we wrote ten years later.
Header files were large. We didn't have properties. We relied on inheritance more than we should (although the same was true initially in Java). We didn't have class extensions.
I loved the ride.
By the time I felt that I'd gotten the hang of Objective-C, it started to change.
Bill Dudney and I started teaching a four-day class for Mike and Nicole Clark's Pragmatic Studio. I loved teaching with Bill - I learned so much from him. I loved teaching for Mike and Nicole - they made everything so easy for me as an instructor and I was really sad when then decided to focus on their video business. Not sad for them - sad for me. They sent me all over the world to teach iOS.
When Matt Drance left Apple, Bill applied for the vacancy in evangelism and joined the company.
Matt and I co-taught and it was like being in school all over again. I learned so much from Matt about coding, teaching, and - I don't know how to explain it - from the example he set.
When Mike and Nicole decided to move on from running public classes, I started teaching on my own.
One thing I loved about this world was that Objective-C and iOS were constantly changing. I updated the materials before each class that I taught. We had a Magic 8 Ball example that we taught for many years. The eight ball did the same things, but the way in which it did it changed constantly.
It reminded me of a conversation I had with a professor before my math qualifying exams. He told me the questions were the same but the answers changed.
As Objective-C changed, you could sense that there was an underlying reason. Apple was working towards something. As it turned out, they were working towards Swift.
The change in materials was a big one.
I could have just changed the examples from being written in Objective-C to being written in Swift, but it seemed to me that if you write in Swift then what you write and the way you write it would change as well.
It took a while to understand what Swift wanted to be. In many ways, I'm still learning it.
My workshops and courses are where we explore the language and its uses together.
Lately, I've been teaching a lot about Functional Swift on my way to a new book on Functional Swift.
I love thinking in public.
I'm not embarrassed by the code I wrote a few years ago so much as humbled by the knowledge that the code I write today will soon feel that awkward and dated.