Day 2 at the Ranch

So day 2 of class content has wrapped up and I am moving onto my other work and taking a moment to update this.  Today’s class felt a lot less exhausting.  It could be because I slept better last night.  However I really think the content, meals, and surprises of the day kept us energized.

Today was pretty much fantastic all the way around!  Not only did we cover Core Audio which is a topic that I am extremely interested in due to my musical background, but this afternoon the founder and leader of the Big Nerd Ranch IMG_1011-1024x768dropped by as a special guest to teach Quartz.  Yes it was the chief – Aaron Hillegass.  In terms of classroom training I have to say this course really has been world class!

The food today was truly OUTSTANDING for every meal.  Breakfast was as good as yesterday with that same delicious bacon that I am already looking forward to having again tomorrow.  Lunch was PASTA!!!  If you know me, you know how much I love pasta (red sauce only of course)!  It was great!  Tonight’s dinner was also fantastic and the best meal yet.  It was flank steak, some of those excellent little red potatoes, and the best asparagus I have ever eaten.  While eating, I came to realize that I have probably had more vegetables this week than any other time in my life.  I have had salad for lunch and dinner every day and vegetables on the side.  I hope my wife is reading this and is proud of my well roundedness!  🙂  For dessert tonight we had a delicious cherry cobbler thing.  I’m usually not into cobbler but this was quite good.

IMG_1013-768x1024Today’s hike was quite a bit longer than yesterday which was quite cool as the weather was beautiful.  It was also led by Mr. H.  We walked past several more of the scary zip-line stands and today there were people on them.  I had no idea they could move that fast – up to 60 miles an hour.  YIKES!  Many of these lines cross the big stream and are several feet up.  Check out the pictures.  I was told on the hike that the folks here pride themselves on having one of the best zip courses in the world.  It is a truly a sight to behold.

 

So now more about the technical parts of the day.  Again we covered a lot.  This morning was quite a bit of very low level stuff from Core Audio.  We did some real time voice effects and then later some pitch modulation.  I have always wanted to look into audio processing on the iPhone but never gotten around to it.  There are many options for getting sound out of an iOS device and the option we looked at today was about as low level as it gets since we were recording and playing back plus modifying that stream in real time.  Consequently the amount of boiler plate looking code to do all of this was PDU (pretty damned ugly).

This afternoon we focused a lot of time on Quartz, Core Text, and printing (air print).  The exercises here were great but again required a lot of low level coding.  Aaron led this section and showed us the Objective-C APIs followed by the C ones.  The C ones are what we focused on as they appear to have the most power but man are some of the interface calls ugly!

For example, some of the core text function calls require a CFDictionaryRef.  Creating it is the ugliest thing I have seen yet in iOS development.

CFDictionaryRef attrs = CFDictionaryCreate(kCFAllocatorDefault,
                     (const void**)&keys,
                     (const void**)&values, 2,
                     &kCFTypeDictionaryKeyCallBacks,
                     &kCFTypeDictionaryValueCallBacks);

I love OO development – Objective-C, Python, Groovy, and Java and thought I had pretty much seen the last of C years ago when I was writing CAD/CAM software but today proved that I was wrong!  As you have now seen we had to mix C, C++, and Objective-C in today’s exercises.  Yes folks malloc and free still are still in heavy use even in 2012.  I would like to see Apple improve and simplify some of this stuff though.  I’ll be anxious to see what they announce at the next WWDC.

Anyway, day 2 rocked!

 

Leave a Reply

Your email address will not be published. Required fields are marked *