Nov 21, 2015

Mapping Learning

I'm currently writing an app for OSX.  I started it over a year ago, but when XCode ate my project, I gave up.  Before the XCode Apocalypse happened, I had a working prototype built.

In early April, while at DroidCon Montreal, someone asked me what my 'startup idea' was.  I told them about my XCode project that got eaten.  They said it was a good idea, so when I got home I tried to open XCode again.  No luck.

In early October, I was inspired by a tweet about to finish a project in October.  Or at least work on one.  So I opened XCode again.  It worked this time. (Huzzah).

I've been working on it, off and on, since then, just a little over a month.  The prototype no longer works, but instead I'm currently focusing my efforts on making the GUI look and work how I want it to.

I don't know Objective-C.  I've never done any OSX app programming before.  I have done .NET and a fair amount of Android programming, however.  Both of which are GUI-esque systems.  I've been having a hard time grokking how the new system (Interface builder, wtf?) works, so here's a short documentation of things I've learned so far that have been helpful for getting a footing on writing my first OSX app.

- Reading the Apple documentation.  Fairly helpful, but not the right granularity for the most part.  Either too much of a 10,000 foot view or way too granular 1ft view.
- Googling shit / searching for help on Stack Overflow.  Hard to do at the beginning because I don't know what I'm supposed to be Googling for.  What's the proper name for the text input field things?
- Doing an Apple tutorial. I found a really basic, pictoral tutorial in the Apple docs.  This was really helpful for learning the layout of XCode.  But I had mostly forgotten it a few weeks later when I went to do my own GUI.  I can't find the link to it now, either.  However, I did find this repository of sample code.
- Reading articles that are too hard for me.  This is actual a pretty decent strategy for getting a grounding in what the lay of the land is, provided you can hold the fuzzy/frustrated feeling at bay and work on building a relational map of unknown words.  Example: this article.
- Finding the right words.  I finally figured out that Cocoa is the name of the GUI system for Mac OSX applications.  I don't recall exactly what the name for the UI system is for iOS apps.  But it's not Cocoa.
- Asking friends for help. I found this to be slightly helpful, but mostly frustrating.  I asked for help via chat, and I really needed someone in person to show me what buttons to click on the Interface Builder.  Both people I asked were helpful, but neither of them were able to point me to the silver bullet for understanding Mac App programming that I was hoping for.  (One probably doesn't exist).
- Reading the Table of Contents of books.  I find this really helpful for giving the lay of the land - what topics are there to explore?  How are things called?  Sadly, I didn't think to do this until today.  Table of Contents are often available free of charge for any book listed on Amazon (or otherwise).

Something I'm considering trying:
- Buying/borrowing a book. Books are so good at starting at step A and explaining the lay of the land (which is usually what I need the most when working in a totally new paradigm/system.)

I still feel like I'm struggling because the thing that I wanted to have done is not done yet.  The reality is that I may not be moving very fast, but things are making more sense.  That's progress!  I'll take it :)

No comments:

Post a Comment

sound reflecions: observations from SF MOMA's Soundtracks exhibit

karthik and i went to the SF MOMA today to check out the last few bits of the soundtracks exhibit. we saw this great video work that i can&...