Concept to Completion

One Man's Journey to Learn Swift

Finis!

Dec 05, 2014

To all of you who signed up for this site or newsletter, I thank you! Obviously, there has been little activity from here and there are far better (and more active) resources for learning how to create apps for OS X and iOS.

The reason for the silence? 2 months after launching this site, I was offered a position with the team at InVision. Although I was very excited about the app I was hoping to build, this opportunity was too good to pass up. And so I accepted the position as the Director of Customer Success and started on Sept. 29th.

For me, this was a great change. My job is to ensure that each customer gets the most from using InVision. And since our customers are designers themselves, I find myself in the enviable position of supporting and enabling the industry I have come to love.

The sad news? Because I’m pouring myself into this position and working slightly more hours each week, there is little time left for side projects. So rather than keep an empty site running and watching people subscribe each week, I will be shutting this blog down. But again, you’re all in good hands with the amazing resources that are available elsewhere. I once again refer everyone to Meng’s great site. You can go to no better place than this page!

Again, thank you for subscribing and all the best as you each seek the finish line of your own apps. Be well!

A Complete Picture

Aug 22, 2014

The Internet has been about teaching from the beginning. It’s a resource that allows us all to learn, to explore, to try. And there is no shortage of resources to educate yourself on almost any topic.

That being said, there are gaps …

In illustration, this joke has made the rounds on Twitter in recent weeks:

After several weeks of scouring over different resources, I certainly feel the painful truth to this humour. It’s easy to find online tutorials that address one very specific situation. Others give you such a barebones outline that only someone already knowledgable and comfortable in the technology being used can grasp the tutorial enough to fill in the blanks.

As someone with no programming experience, I’ve had a hard time finding just the right teaching tool to help me move forward. Along with the resources I’ve listed on this site, I’ve also looked into various books, courses, and communities. There seemed to be issues with all of them. The courses are expensive and take you away from home. The text books can be too advanced (although it can be hard to tell), requiring a base knowledge before you get started. And my biggest stumbling block: many tutorials that might be helpful are written in an older version of Xcode than what I have installed now.

I realized I needed something like my college programming classes. Here are your tools. Here are the basic types, commands, and terms. Here is an exercise that is as basic as can be.

The place that I found this type of environment, for a decent price, was Treehouse.

Although they do not have a Mac programming course, I believe their iOS track is my best bet. It will make me familiar with Xcode, with Objective-C concepts, Cocoa frameworks, and the terminology around developing for Apple devices.

The sessions I’ve been through are well done. Videos are short, usually around the 5 minute mark, and the media player cleverly includes the ability to increase or decrease the speed the videos are played at. That is a fantastic addition!

And during your session, learning points are followed up by quizzes. Nothing is as helpful as working on actual code, but this is a great way to help you at least get the syntax down.


Learning is enjoyable. But it can be frustrating when the tools are lacking or incomplete. Treehouse has been better than I expected and if you’re an absolute beginner like me, it’s a great option!

First Steps

Jul 24, 2014

Now that I’ve started to dig into various resources, I’ve started to see the different areas of learning ahead of me. Again, this project is about a lot more than just learning Swift. There’s also general programming principles, available frameworks, and the required tools.

In addition to all that, I also have to learn more about designing apps. In all my years of dabbling in web design, I have never been a Photoshop fan. I always design on paper, then straight to the browser. I own a copy of Photoshop, but I haven’t had it installed on my machine for the past two years. Because of this, I’m not all that comfortable with these programs and would never call myself a graphic designer.

And so I wonder what is the next best step. Dig into the development side of things? Read another book on programming (I’m currently working through Meng’s books now)? Or start designing the look and feel of this app?

There are a few thoughts running through my head as I consider the next steps:

  1. As I’ve mentioned, I already had a vision of this app and a working theme running on WordPress. But designing for a Mac desktop app is a totally different game. A desktop interface is not a website and I suddenly feel a lack of constraints. To be sure, there are constraints with desktop applications, but they are different than the web and I’m not familiar with them.

  2. Designing in the browser is not an option here. To use Xcode, I need an idea of what I want this thing to look like first.

  3. Do I create a custom UI in Sketch, or attempt to build this app with Interface Builder and the common elements that are available? Or with a custom UI kit? Is that even possible? I don’t know enough yet …

And with all these thoughts and questions whirling through my head, I started at the beginning, where most projects should start. Pen and paper. What screens will be required for this tool? What will each look like? How should the content be structured?

Thankfully, I’ve gone through this exercise when I was building the idea out for the web. I have a good handle on the content and a picture of how it should be laid out. Even before I started sketching, I collected a number of desktop UI examples in Ember for review.

Because interfaces for OS X apps can be so varied, this was a useful exercise is narrowing down the style I’m looking for. Should this app be one, two, or three paned? I used examples like Mail, Simplenote, and Day One to envision the structure of the content. Does it require an inspector style interface element (like OmniFocus), or will small text based metadata suffice (like Day One)?

These are all questions I’d rather ask up front. The thinking that is required before jumping into design or code. In the end, Day One sports the type of interface that fits most for this app. It’s note based, each note fitting into a type category and including bits of metadata.

This will be a tool that should stay out of your way, allow for easy data entry, and allow you to find results with speed and ease.

No small feat, right?

Resources

Jul 09, 2014

With a project like this, knowing where to start can be hard. There are so many options. Choose a demo project and jump into Xcode. Read these 10 articles on Swift. Read a book on how to design iOS apps. Sketch!

Personally, I don’t do well with just jumping into code or design. I feel a sense of panic when I do this because I have no grasp of the higher level plan. That probably sounds obvious!

And so the first thing I started on is organizing all the materials I’ve been collecting on the subject. The good news is there are a lot of resources available on designing and developing apps for OS X and iOS. And even for Swift, despite it only being available for a month now. The bad news is that there is so many resources available that, again, it’s hard to know where to start.

If you’re considering jumping into this arena yourself, here are some great places that might be a good first step!

Meng To

Not so much a place, but a person. Meng has written a book, possibly the best book on the subject, plus started a community, and writes a weekly newsletter focused on this area. You can read about each on his site, Design+Code.

I’ve never liked Photoshop and it’s Adobe brethren apps, so Sketch was my design tool of choice. I’ve been using it occasionally this past year and Meng’s book and focus is on this tool. And so his book is the first purchase I made and I expect it will be one of my most oft used resources. He’s currently adding content for Swift as well and it will be free for all who have already purchased the book.

Before purchasing the book, I signed up for the newsletter and received it for a couple of weeks. It’s also a great resource as he shares articles and resources from around the web in each issue. Many of the links I’ll be sharing below I first came across in this newsletter.

If you’re time is limited, Meng’s site can be your one stop shop.

Other Resources

Apple

Tutorials

Courses

Articles

Lists of resources

Truly, this is just a short list of the total material out there. I cannot speak for the quality of each as I have not yet dug in … but these looked to be the best overall content from all the materials I’ve come across. I’ll be keeping this list updated as I find more materials — check out the Resources page from time to time.


The Internet: it’s about learning. If interested, you can follow along my Swift tag on Pinboard. And if you have any additions for the list, lemme know!

The Beginning

Jul 01, 2014

Being the first day of the first half of the year, it seems fitting to start a new adventure. Of course, when starting a new adventure, you’re only focused on the excitement and allure. Experience and age remind me that there will be tough days ahead.

This particular journey may be more than I can handle.

An Idea

There’s been a tool I’ve been missing for some time. To be fair, I already have a tool that somewhat does what I need, but it’s lacking. For the past 6 months, I’ve designed and built a replacement. Unfortunately, my solution, while an improvement, is also lacking.

This tool would best suit my needs (and hopefully others) as a native app. My problem? I have no idea how to build an app for OS X and iOS. And so I’ve been building my idea as a WordPress theme, all the while knowing that the end product would not be ideal for my usage.

WWDC started me thinking about other options.

Swift

It’s not every day that a company announces a new programming language. But with a focus on making creating apps easier and more accessible, I couldn’t help but come away from WWDC with the feeling that if there was ever a time to learn to program, this is it.

And with an idea to bring to fruition, why not take advantage of the tools and frameworks Apple makes available to all?

The Journey Begins

This is not like many of the ideas I’ve had over the years. It’s massive! It’s not like a front end dev learning Angular, or a graphic designer moving from Illustrator to Sketch. Those folks already have honed skills and moving from one tool to another, or learning a new framework are, relatively speaking, small steps.

I have to learn both a programming language, a set of tools, and now to program …

TL;DR I am not a programmer.

A little bit of backstory. I have a background in IT, starting with a Diploma in Computer Information Systems. This is a more generalized education, focused on systems analysis overall, not programming. And while we had programming courses, this was nothing like getting a Computer Science degree.

In school, I always excelled in the language and socially focused classes. English, history, and biology were no problem at all. Physics and math? Terrible. Higher level math classes in college were almost my undoing. I struggle with theoretical mathematical constructs and writing algorithms is an area of weakness for me.

When I started my career working for the IT department of a healthcare organization, the closest I ever got to programming was writing CCL reports for our medical information system. This stretched my abilities. Since then, I’ve focused more on front end web development, where technical understanding is required, but not necessarily the ability to program.

Let’s just say my HTML and CSS is a lot stronger than my JavaScript! The truth of it is, the address of this site will likely have nothing to do with the speed of this project …

In It for the Long Haul

My lizard brain has a full blown meltdown when I think of trying to make this idea a reality as a Mac/iOS app. I hear a lot of, “You can’t do this! You’ll never get it finished! It would take you five years!” And there’s some truth to what the lizard has to say.

As a husband and father of six with a full time job, I have to approach this with the long term in mind. Will I have an app submitted to the App Store by Christmas? Not a chance. In a year? Doubtful … it’s hard to make any estimate when you’re still at the point where you don’t know what you don’t know.

But if I consider this as a three or five year goal, it makes more sense:

In three years, I want to understand how to build an app for OS X.

That is a whole lot more palatable. And attainable.

Why Share?

What is this site about? Simply, I want to share what I’m learning, where I’m learning it from, and how others can get started on becoming a developer for Apple’s platforms. My career on the web started with writing and teaching and that will continue.

My hope is that others can see what I’m doing and be encouraged. As well, this site will become a resource for those who also decide to take the plunge in Swift development. If you’re interested at all, you can sign up (below) to receive the newsletter.

I’ll be sharing how the project is going, what I’m reading, and where all the best tutorials and resources are on the web. I also hope to pick the brains of some great Mac developers and have them share their thoughts and advice on how to get started.

Feedback and thoughts are always welcome. Hit me up anytime!