How and when did you get into programming? And into iOS?
You are asking me to go way, way back. I started programming before there was such a thing as Computer Science. In 1969 I started university to get my degree in Mathematics and the Math department offered courses in programming. I took every course I could, using punch cards to code in FORTRAN and PL1. I got my degree in Mathematics and then went on to teaching.
I eventually got a computer for my classroom in 1981 (an Apple II+) and started writing utilities to help me teach math concepts. I then started teaching computer science and eventually became the Director of Technology for a large School District.
I took an early retirement and worked for a Software Company but not as a developer, although I did develop some customer-facing value-added tools using proprietary language as well as JavaScript. I got made redundant just before Swift 1.0 was released and that is where this journey all began. So a long answer but my iOS journey started with WWDC in 2014.
Amazing! What was the primary reason to start learning iOS?
I have always been an Apple die hard, though I did live in the PC world for a while. I tried learning ObjC but it just didn't click for me. When Swift was introduced, it just seemed so familiar. I had an iPhone, no job, so time on my hands and a couple of ideas for apps, so I just jumped in and created my first app with Swift 1.0 and had it accepted in the App Store. It is important for me to keep my brain active.
What was the first app you published to the App Store?
I wrote a strategy came called Nimtastic, based on the game of Nim. It is still available for free on the App Store. Nim is a mathematical game of strategy in which two players take turns removing (or "nimming") objects from distinct heaps or piles. On each turn, a player must remove at least one object, and may remove any number of objects provided they all come from the same heap or pile. Depending on the version being played, the goal of the game is either to avoid taking the last object or to take the last object.
I learned it in a bar and lost a lot of money playing it before I understood how it works. Once you understand, you seldom ever lose. I use to play with my students (not for money) and would have 10 or more games going at one time. With the app, you can play against the device or an opponent. There are tips and instructions on how to win the game.
Do you remember what was challenging to grasp when learning iOS/Swift in the beginning?
There were probably a lot of things because I had no real training in current coding principles. I was familiar with asynchronous events in javaScript but my understanding was weak. My method of learning was copy and paste someone else's code and then tweak it until it worked for me, not really understanding what I was doing. As soon as I got my head around closures and trailing closures in Swift, I really started to understand what I was doing and was able to start to understand what others were sharing as well so I could apply that to my own code.
Did some resources particularly help you in the beginning? Some you would recommend?
I had a lot of time on my hands so I became a bit of a sponge. I took a couple of Udemy Courses and purchased many books and online resources. In retrospect, I think that a most of Udemy courses really didn't do me any favours. The courses that claim to promise that by taking their course you will become a senior developer are very misleading. Frequently, they show you how to build several apps, but they make a lot of assumptions and often skip key concepts and do nothing to provide real understanding. The knowledge you learn is not necessarily transferrable and the code is poorly structured in many cases.
Had 100DaysOfSwift, or 100DaysOfSwiftUI been available to me then, that would have been a much better introduction. It took me a few years and half a dozen apps of my own before I could really say that I was anywhere competent.
I discovered YouTubers like Sean Allen, Chris Ching and Mark Moeykens who focussed on basic topics and that to me is the most important thing. I have not taken any of Sean Allen's full courses, but from what I understand from reviews, and from watching his videos, I believe that his intro courses like iOS LaunchPad and the take home project would have benefited me more.
The more fundamental knowledge you have the better you can understand the more advanced stuff like what is presented by the Ray Wenderlich team so my recommendation is to really get a good understanding of the basic building blocks of Swift.
I actually had similar experience with Udemy courses. I felt like I learned a lot but in reality haven't. 100 Days of Swift on the other hand was great and convinced me to go full-time into iOS.
I am really curious what was your first Apple product?
My first computer purchase was an Apple II+.
Let's talk YouTube. I think this summer will mark two years of you creating video tutorials. What was the motivation to get started?
I have had a YouTube channel for a while now, as I use to do short videos for my former company, but it sat dormant for quite some time. It was a year ago Jan 12, that I posted my first iOS/Swift related video. I had just completed the 100DaysOfSwiftUI and had connected with someone who I was mentoring. I found that when you start to explain concepts to others, you learn so much yourself. You want to make sure that you know what you are talking about so you do more research.
So, instead of writing things down, I decided to record videos so that I would have a reference for me and others to refer to. The theme initially was to create videos about concepts that I wish I knew when I first started learning swift. Core concepts and best practice. I was a teacher so I think I know something about lesson planning and delivery.
From watching your videos, I have a sense that there is quite a bit of research involved. Do you have a standardized process you use when creating new video?
Each one is different, and it depends on the topic. Every video though is a 2 or 3 day process. When I come up with an idea, I read every blog I can find that has covered the topic and then come up with an idea for a small project or playground that I can use to get the concept across. This takes me quite a while as I want to make sure that I cover the topic in a sequenced way starting with an introduction and then adding more as I go along.
Once I have the project, I start over and write a script as I build it out. I then record the video following my script but without audio. After that, I record the audio separately. Next, I merge the two tracks together and sync them up.
Once that is done, I go back over and add zooms and annotations to the video so that I can focus on the code and make sure that the viewer can see exactly what I am referring to.
I sort of expected the preparation for videos to take quite some time, but this is truly wow. What does your video setup look like? What software do you use for producing videos?
I don't think I am normal in this respect. Others can talk and type at the same time. I can't. This is one reason why you never see my face in a tutorial. I use Camtasia for Mac to record, edit and produce the videos. I have been using it for over 15 years since it was a PC only product so I know it very well. For audio, I use Audacity. There is a LOT of editing to remove and correct both audio and video missteps.
I forgot to mention that I use Typora, a Markdown editor to write my scripts.
I am curious what is the origin stories of the cartoon version of you, which is featured in most of the YouTube thumbnails?
I never show my face on my videos because I am old and not very photogenic. I don’t want to have people dismiss what I have to offer because of my age. I also wanted to have some consistency in my thumbnails so that people would be able to recognize my videos. I use Bitmoji all the time in messaging.
It is a great little keyboard app that is also a standalone app where you can create your own avatar and it has hundreds of different options to pick from. I can usually find something that relates to the topic that I am presenting.
Now for a very different question. You have a magic wand... and can change one thing about iOS development. What?
You know, I am pretty happy with the state of iOS development right now. I would like to see the annual fee removed. Don’t they get enough from us already from the commission they take from the sale of our apps? Apart from that, I am always just a little impatient for the release of new features. The one that I am waiting for is a new Swifty replacement for Core Data.
As someone with just free apps in the App Store, I wish you had that magic wand.. To step away from iOS and code. What do you do to relax?
I am fortunate to live in a part of Canada that is very mild (I only had to shovel snow once this year) so the outdoors plays a big part in my life. I do a lot of hiking and skiing in the winter. (I am 10 minutes from the base of a mountain with a tram up to the ski hill)
My wife an I are avid walkers so we do 3 or 4 10K walks a week and in the spring, summer and fall, we are on our bikes a lot. We love to travel as well so we are hoping that we will be able to resume that again later this year.
That is wonderful! Thanks so much for taking the time! Do you want to give someone or something a shoutout?
I just want to send out my appreciation to all of those content providers who give freely of their time to produce quality Swift/SwiftUI content in either written or video format so that people like me can learn and also encourage us to share our knowledge as well. If I start to list names, I will certainly leave someone out. You know who you are so thank you.