24-Hour Product Challenge

Inspired by the 24-hour product challenges that Nathan Barry and Amy Hoy recently did (and Just Fucking Ship, which is awesome), I’m doing one of my own. I’m committing to shipping my Beginning Swift video course by Friday at 5 PM. I’m not going to be too strict about tracking hours, but it should be close to 24 total since it’s over the course of 3 work days.

Update: The course is finished!

I finished the challenge just before 5:00 on Friday, and feel great. I’m excited to have a new product, and a new way to help people learn Swift. If you’re an iOS developer and you want to start learning Swift, check out the Beginning Swift course.

Since the challenge ended, I’ve been editing video, emailing customers, creating a Course Guide, and more – so I’ve spent far more than 24 hours on the course now. But I was able to ship an initial version in just 24 hours, which is awesome.

Day 1

Morning: the email that started it all

The day started out normal, like any other day. I got up and read my email in the morning. But today I got an email from someone who watched an old video of mine and told me it helped him get his app started. I was so excited and inspired that I decided to take the lesson from that video, re-record it (so it’s up to date with Swift 1.1 and Xcode 6.1), and add a few other lessons. I hope I’ll be able to help more people get started with Swift with this new course.

Around noon: Decided for sure that I’m doing it

I’m in a community of 30×500 alumni where I started asking others what they thought about this course. I was encouraged by Pat Maddox and others to go for it, so I started working on the landing page and published it.

Afternoon: Recording & Gumroad

Recorded the first video lesson without audio. Tried to add audio – the mic on my computer isn’t working.

Created the new product on Gumroad so people can pre-order. I’m planning to have the first video finished tonight or tomorrow, so if they pre-order now, they should get it tomorrow.

Late afternoon: Created another landing page

I started working on another landing page for the course. Actually, I intended it to just be an article about how to annihilate massive view controllers using MVVM but then decided that rather than try to write out how to use MVVM, I’d just show it in the video lesson. I later realized my original page might actually be a better description of the entire course, whereas this new one only describes what you’ll learn from the first lesson. So I published it but didn’t tell anyone about it (until now).

6:18 PM: My first tweet about the course

I decided I’d put out a tweet about the course I’m working on so my followers can preorder if they want to. Thanks to my friend Randy for retweeting it so more people could hear about it.

Evening: Troubleshooting mic problems

My mic still isn’t working on my computer and after countless DuckDuckGo searches and trying several wacky Terminal commands, I’m giving up and assuming it’s a problem with a recent OS X Yosemite update.

Day 2

8:47 AM: Made my first sale!

Woohoo! I have an awesome new customer, and I’m really excited and motivated now to get the first video finished so they can have something to watch.

10:00 AM: Finally recording audio

Borrowed my wife’s computer to record the audio for Lesson 1. Installed a few apps I need (Screenflow, Deckset, and Xcode, most importantly) and hit the ground running. Finished recording the audio just before lunch at 11:30.

12:30: Resolved mic problems on my computer

Oops… I realized that the cause of my mic problems was user error – not some strange issue with Yosemite. I use an app called Shush that allows me to toggle my mic on & off with a keyboard shortcut. Super convenient when I’m on conference calls. Turns out I had my mic muted. Oops.

1:30 PM: Finalizing, exporting, uploading Lesson 1

Made the finishing touches on the first lesson and exported the video. Uploading to Gumroad took way too long on my slow internet connection at home, but it’s there now.

2:51 PM: Released the first lesson

The first lesson is now available on Gumroad, so past & future customers can get that immediately when they buy the course at the reduced price.

4:00 PM: Decided to start writing this post :)

And spent about 45 minutes on it. It’s good enough for now – I’m back to planning the second lesson.

5:00 PM: Emailed my subscribers about the challenge

Just after 5:00, I sent out an email to my subscribers about this challenge with a link to this page so they could follow along.

End of Day 2

I’m excited – I made a few more sales. Thanks to my subscribers for their purchases and to Nathan Barry, Alex Hillman, and others for retweeting my tweet about this post. If you want to help, you can retweet, too! :)

Day 3

Morning: Not feeling well

I had a headache this morning that knocked me out for a bit, but I’m feeling better now and back at it. I have just over 4 hours to finish up the two lessons that I want to add today. At this point, I’m sure I can get it done by the end of the day, but it’ll still be unpolished, beta quality. I’ll spend next week polishing and improving it.

1:00 PM: Planning the Alamofire lesson

As much as I love NSURLSession (actually, I don’t), I typically use AFNetworking on Objective-C projects. And with Swift, Alamofire (from the creator of AFNetworking) is my networking library of choice. It’s cleaner, easier to use, and provides an easy way to make type-safe HTTP requests.

2:15 PM: Finished recording the Alamofire lesson

Lesson 2: Making Requests with Alamofire is now finished! Uploading to Gumroad now, so current customers will get it soon! Next up: plan and record Lesson 3, on creating a type-safe model layer.

3:30 PM: Lesson 3 recorded

I’ve just finished recording Lesson 3: Creating a Type-Safe Model Layer, so you can learn how to turn your JSON dictionaries into model objects, making for happier ViewModels. :) With this lesson, your ViewModels no longer need to know the structure of your JSON – they can just work with the model object’s properties.

3:50 PM: Final lesson uploaded to Gumroad

And with that, the lessons are complete! There are some finishing touches to do, and I’ll clarify some explanations to make the course even better, but I’m excited to have the vast majority of the work finished, with just over an hour left!

4:30 PM: Published an updated landing page

The Beginning Swift course is really about giving you a foundation in Swift so you can build and ship your own Swift apps to the App Store. It’s about saving you time over hacking on your own, and it’s about giving you practical knowledge of Swift so you can use it in apps. It’s one thing to read The Swift Programming Language and understand the theory – it’s another thing entirely to build your first app in Swift. When you build your first app, you’ll struggle with unwrapping optionals from the Cocoa Touch API, defining properties, overriding methods, and a host of other things. The Beginning Swift course will teach you those things and help you establish a foundation so you’re not fighting the compiler when you build your own app. Here’s the updated landing page.

Update: The course is finished!

I’ve spent the past couple weeks editing and updating the course material, and it’s much better now than the initial version. But I’m so glad I shipped the initial version when I did – I made several sales, and having a released version 1.0 helped me to buckle down and do the editing that needed to be done to make it even better.

Get the Beginning Swift course for just $19, and start learning Swift today.