Designing apps for cold weather use

Designing for cold weather might not seem like a topic that is going to be applicable to someone living in Miami or Brisbane. But it actually is because it will benefit almost all of an apps user base. What I talk about here can be just applicable to users who find themselves in rain, or high wind, or some other weather condition where long term use of your phone or tablet is not a desirable experience. It just so happens that, living in Canada, and in the prairies, cold weather is a reality for 4 – 5 months of the year and has lead to a lot of thinking of how apps work in those conditions.

So what are the challenges cold weather causes? This is pretty straightforward and I am sure most people could come up with most of these on their own.

Read More

tvOS: Is this is a good choice for beginners?

After my last post on tvOS I started thinking about it from a beginners perspective and decided to write a few words about it. Up until a few months someone learning Swift would have most likely been doing so in order to get into iOS development, with a small number of those people interested in OSX development. Now, there is another reason someone might have the desire and will to learn Swift! While tvOS is, in a manner of speaking, an extension of iOS, and though they do share many similarities, there are enough differences between the two that even for someone who is already experienced in Swift for iOS there will be a learning curve to it.

There is a short answer to the question of whether this is a good choice for beginners, and it is no. But, you could still very well make tvOS your starting point. If you are willing to accept that, relative to learning iOS, you will have additional obstacles along the way  then there is nothing stopping you. So if you are genuinely interested in developing for tvOS, or just curious about what some of those challenges might be then by all means keep reading and I will tell you.

Read More

tvOS: Never stop thinking about the couch

Last night, after my brain had given up on coding for the day, I decided to spend the rest of the night brainstorming apps ideas for tvOS. This was in large part brought on by having been in Toronto earlier this week for Apple’s tvOS Tech Talks. With the various discussions I heard still very much on my mind I let my imagination take over and see what it could come up with.

I won’t bore you with all the ideas I came up with and the resulting thinking around them and instead go straight to the end result; I came up with no good ideas. I didn’t even come up with okay ideas. Every idea hit a roadblock, be it technical or experience related.

At this point you might be thinking “Yeah great story. You told us nothing and the end result was fauilure. Thanks buddy”. Well just hang in there because it leads to a key point that I want to make about designing an app for tvOS.

Read More

Where to run to when trouble strikes.

By now after working through your reading and videos you have probably started to do some coding on your own, and already run into some walls. Troubleshooting, problem solving, debugging…they are basically all the same words for “I don’t get it! This should work! Why wont this work?!”.

Well my friends, now you are truly learning the joys of coding! Yes from now until infinity you will find yourself having moments where something should work but doesn’t, or where you know you can do something but don’t know how yet, or where you need to create avuncular or method to do something that is not yet possible. For all the knowledge you need of sytnax and structure and understanding the Swift language in depth (or any programming language for that matter) much of your time is going to be spent on learning and researching.

This is where having a tool box of resources is going to make the difference between coding being challenging, but fun or, flat out frustrating, and unenjoyable. Over time you will develop a collection that best suits your needs. However the list that follows includes resources that most Swift programmers will use on a near daily basis.

Read More

getting Started (05): Some basic guidelines for coding

So here you are. At this point you are probably starting to do some of your own coding. Maybe it’s a Hello World app (everyone does a Hello World app in the beginning), a music player, or something you are trying out on your own. It is pretty exciting isn’t it! And you may well have already started to run into bugs with your program, scratched your head about unwrapping an optional, or forgotten a curly brace at the end of a function and wasted more time then you would like to admit trying to track down such a small problem. This is all great and soon we will start to look at the specifics of Swift and get into understanding the language itself.

Before we do though, there are some general rules and guidelines that I will discuss that are really worth thinking about and implementing to some degree, even in the early days of programming. These have come from my own experience, and learning, and the frustrations I dealt with as part of my own effort to make my work time more efficient!

Read More

Take a break, set up your workspace, and then get back to work?

If you are not comfortable you will not be productive. Simple as that. With all the time you are going to spend sitting in front of your computer having the right work-space is key.

I do not need to go into great detail about what works and what doesn’t. What works is whatever you find to be comfortable, reduces your distractions, and lets you work in an efficient way. You can see my set-up above. Its small, compact, and simple. For me that is ideal and just what I need. But maybe you want a big sprawling desk and large chair and all kinds of other crazy things. It is your space so you decide. But the key thing is to figure out what works for you sooner rather than later so that your time isn’t needlessly wasted in an inefficient set-up. It seems obvious but it is something that is easily over looked so really give it some thought (but not too much thought since, again, this isn’t a particularly complicated problem to sort out). Read More

“So You Want to Learn to Program with Swift” posts

Since the primary purpose of the site is to help people as they first start learning Swift and iOS development I have created this post and stuck it to the top of the page. Below you will find all the posts dedicated to “So You Want to Learn to Program with Swift”, in sequential order, for your reading enjoyment!

Welcome to Manitoba Ninja

getting Started (1): So you say you want to learn Swift?

getting Started (2): Why are all these videos so bad?

getting Started (3): Take a break, set up your workspace, and then get back to work.

getting Started (4): Where to run to when trouble strikes.

 

 

Why are all these videos so bad?

At this point you have now set up an Apple Developer account, installed Xcode, and spent many many hours reading about Swift and programming and iOS design fundamentals. Your head may well be spinning a bit as you try to make sense of everything. Perfect! You will experience this often as you learn to program and if that didn’t make you walk away then you have already started to understand the important skills of resiliency and stubborness!

So lets take a step back and start a more structured approached into our learning. We will do that by watching some videos.

People learn in all kinds of different ways. Some can simply read a book and get on with things. Some need one on one instruction. But I suspect many, if not most, learn through a combination of styles. Being able to stream videos from the internet to help in your learning is a powerful and invaluable tool. The structure of having someone explaining the concepts and writing out code on the screen and explaining each line is a very effective means of learning.

But there is a lot of rubbish out there. Low production value or more often then not tutorials that assume the user has a great deal of prior knowledge and do not fully explain what is going on, is the norm for videos you find. If you start searching for videos and tutorials in Google the list will be very long but few will actually be of any value. And I will pick on YouTube as being among the worst offenders of terrible videos. In the course of a year I can think of only one video I found on YouTube that was actually useful to me (and even then it was largely useful because it was very very specific and not because it was a greatly produced video).

Read More

So you say you want to learn Swift?

So you say want to program? Fantastic! I am sure you are hyped up and thinking about the app you want to build and how it will look and function. Your first instinct is probably to rush out, download Xcode and start diving in.

Well, just hold on a moment. By all means start your Xcode download since that will take a while anyways. And you might as well brew a coffee or grab some other tasty beverage while your at it. Before you dive into programming and working in the IDE (integrated development environment) there are two documents you should read. The first is Apple’s Swift Programming Language book. This can either be viewed online or downloaded as a PDF for reading offline or through iBooks. This is not going to be an easy read. In fact you may get through it and realize you did not understand most of it. That’s okay and too be expected. There is a lot packed into this book. It covers concepts from the beginner level to the advanced. While it is hoped that you will understand some of the basics (like was is the difference between a variable and constant), the primary reason to read through this book at the get go is to give you an introduction to the concepts and terms that are at the core of the Swift programming language.

You are likely going to re-read this book a few times and consult it numerous times as you are learning. It is also a living document which changes to reflect the evolution of Swift as it becomes more robust and mature. And a great exercise several months down the road when you’ve really start to feel comfortable programming is to go back and re-read it. Not only will you feel great about how much you have learned and understand but will also find a lot more concepts starting to make sense and fall into place. Programming is complex. Don’t expect learning to be linear, and do expect to go back over some resources over and over until you have that light-bulb moment where you finally get it!

The second document to read is Apple’s Human Interface Guidelines. Like the Swift guide this can be read online or downloaded as a PDF. Unlike like that guide there is no discussion of code what so ever. The Human Interface Guidlines (HIG) focuses on design, user experience, and best practices. All those small little elements that create the iOS experience are covered, like when an alert sound can or cannot play, or what size a Spotlight icon needs to be. It is not difficult to read at all and actually provides a lot of fascinating insight into what makes a great app. Because the design of an app and its code are not independent of each you are going to be thinking of the one element as you are working on the other. There is no better time to instill this way of thinking then at the very beginning!

These two documents really form the basic foundation to start from. If after some time you are able to say that, yes, I really understand and can follow these two documents you will have achieved a massive success!

One last bit of housecleaning before we move on. Why not take the time now and set up your Apple Developer account. It’s what all he cool kids are doing so you know you want to! This is a pretty simple process. Head on over to developer.apple.com/register/ and follow the steps. All you need is an Apple ID and you can be set up in no time. You will notice that there is an option to pay for the yearly membership. Unless you are ready to put one of your apps on a device to try it out in the real world or submit an app to the App Store you don’t need to pay anything right now. But, keep in mind, as you progress and start to get closer to actually publishing and testing apps out on devices you might want to get your paid account set up in advance. It can take a few days to get authorized and ready to submit apps so setting it up before that point will prove quite helpful!

And with that you can also continue to install Xcode, maybe grab another beverage, and start some reading. Once you have all that done then come back here and read on to see what excitement comes in the second step!

Welcome to Manitoba Ninja

Hello and welcome to the opening post of Manitoba Ninja!

The purpose of this site is to be a place for newcomers to Swift and iOS development. Learning how to program, without any previous experience can be a hugely daunting task. There either seems to be way too much information, or not enough. And with Swift being such a young programming language it comes with its own unique set of challenges as even the most experienced programmers work their way through trying to understand and master the language.

I started to learn how to program just a few days after Swift was released. The only real resource at the time was the official Apple documentation. Since then the wealth of knowledge has expanded and my own personal knowledge and understanding has grown rapidly. Along the way there have really been two learning curves to tackle. The first is actually learning how to program, and the second is learning how to learn, finding resources, and developing a network and base of sites and reference material to go to that allow you to work through problems and learn new concepts.

My aim is to help people learn both these tasks in the most efficient way possible. The more time someone can save from not having to spend hours digging through rubbish sites the better! And writing this from the perspective of someone who only delved into the field recently means I can understand the challenges beginners face that someone who has programmed for years might not even think about anymore.

Enjoy the site and if you have any feedback or comments find me on twitter @third_beach or email as well. Cheers!