How I learn

How do you learn a new programming language?  How to you learn anything new for that matter?
I usually start by reading and researching – web sites, books, manuals.  Anything I can get my hands on.  But there comes a point when you need to get your hands dirty.  Doing is a great way of learning.  And when it comes to learning a programming language the only complaint you will get is from the compiler reporting a syntax error.  No real harm there.
So what I was after was a series of exercises that would take me through developing a program in Objective-C and iOS.  And I found an easy winner fairly quickly.
The Big Nerd Ranch books are an excellent choice.  I have lost count of the number of times I have created a new empty iOS application and then created the first UIVIewController and so on.  Almost always hand coding from scratch, though they cover the Interface Builder as well.  Repetition is a great way to learn.  I have both the Objective-C book and the iOS book.  I have been working through both of them in parallel.
I have yet to find an error nor any explanation or instruction that was hard to understand.  A few times I have repeated the exercise to make sure I understood what they were suggested.  I have also eschewed their instruction of always using BNR as the class prefix to save confusion (or compilation/build errors).  I have a fair idea where and when I need to change BNR to my own prefix – and it keeps me on my toes.
So far I have about half way through both books.  Its taken a while, life has got in the way this year.  But small steps in progress regularly has certainly paid off.  I am confident that if I ever had to write a loan amortisation program, I would be able to do a better job …

My inspiration

I have had a few mobile phones in my life – from one that had an aerial that always protruded and weighed my jacket down (UNIDEN, as I recall); through to a small, silver, Alcatel, with a very cute alarm tone; and now the iPhone.  Of all of them the iPhone is the only one where I had the opportunity to program it.  That was never really a consideration when I decided on the iPhone.  I just wanted a phone that worked, and had these new-fangled ‘apps’.
My inspiration was when I downloaded an app for working out mortgage repayment figures.  It was the sort of thing I was calculating regularly when I was studying so to have an ‘app that did that’ sounded a great idea.  The app was disappointing, if you played nice it would work out the right figures.  But it usually had a random number of digits after the decimal point.  And any suggestions invalid data resulted in “NaN” or a weird error on the screen.  Fortunately the app was free.  It was removed from my phone shortly after.  (No, I won’t name the application).
So now I want to develop some apps.
This blog will details how I am learning, what I am learning and some useful links I have found.  It will, eventually, describe the apps I have developed.  My approach to software development in general is to break problems down into small manageable chunks and to solve those problems before putting things together.
There was a post (via Reddit) entitled “Software Dev Without Estimates, Specs or Other Lies” which resonated with my experience of committing to an estimate based on a vague notion of the solution.  Unfortunately the link is now dead and I am sure that software estimation is worthy of a blog post of its own.
So for now, lets say that the time required to develop my ‘apps’ is not important.
Next time, I’ll detail my approach to learning.

Welcome (again)!

Welcome again the the Lighthouse Computing Blog!  It now has it’s own new domain and a vision.

Of course the blog is not a life form; it is more of a puppet.  An extension of its authors voice.

And that author is me.  I have been in the IT industry for longer than I care to remember.  In that time I have done a few things – programming, testing, application design, systems architecture, consultancy, team leader, business owner, troubleshooter; and in various environments – COBOL, Basic, Fortran, Pascal, Java, Lotus Notes, SQL and a few others I have forgot.

So here I am on a new adventure.  I’d like to do some iPhone development.  I have a few ideas for apps that I’d like to see in the App Store (with my name on them).  But first I need to learn a new language, a new environment.  It’s a challenge and it’s exciting.

This blog will include some of the lessons I learn along the way as well as references to useful posts that already exist out there.  I’m happy to learn from the wisdom of others and to acknowledge their skills as best I can.

In between I will provide some other posts related to other work projects, experiences, blogging and technology.