Day 3 at the ranch – Development is exciting again! Bezier Curves, FFTs, Matrices oh my!

Time for my end of day ponderings for day 3 at the Big Nerd Ranch.

I thought about this a bit yesterday but today it really struck me.  This class and really the power that the iOS framework provides really taps into every major point of interest I have in software development and technology.  I have not gotten to think about some of the concepts we have discussed here since my days studying electrical engineering at UC or my time at ITI working with graphics modeling and Open Inventor.  For me, this week has truly been a wonderous trip down memory lane.  I feel like I am in the Land of Oz.  Thanks to the instructors – Jonathon Blocksom, Jonathon Saggau, and Michael Ward for that trip!

While we have covered the Cocoa frameworks in a broad, sweeping sense, the Jon’s and Mikey have added interesting historical viewpoints and perspectives.  Bezier curves and surface normals take me back to fond memories struggling with the challenges of writing CAD/CAM data translation software and 3D model viewers.  Those days were really the most challenging and fun in my career and while I still have fun today, I miss some of that excitement!  I left the engineering software realm  to go into corporate IT web development many years ago.  Now with my present focus on mobile development and the driving market forces of the day I find that I may be ready to go full circle.

How and why?  Demands for advancement in software development in the corporate IT field used to drudge along – typically held back by operations and security teams not wanting to move forward so as to protect things the way they are.  With so many people now owning iPhones, iPads, and Android devices consumer expectations towards technology and above all the user experience has totally changed.  This demand will drive us in the IT field to do better! The boring days of Windows and the status quo are thankfully over!  Note this is an opinion piece and certainly I am sure some of you have a different one.  Regardless, it is my belief that the opportunity to develop really cool, engaging, and challenging apps will now be forced upon every business entity or the consumers will simply move somewhere else.  So to the simple, boring, 1980s style web forms and ugly web pages of the 90s I bid you adieu.  To developers without passion, you are going to miss out on a lot of fun!

Today one Jonathan led us thru the power of OpenGL ES and GLKit.  Yes I know OpenGL has been around for years, but most developers have never had to worry about it.  Unless you are writing video games why would you care?  Again, I can see a lot of people caring about this a whole bunch as we are forced to develop solutions that become more engrossing and more 3D.  Good grief Dominoes Pizza even has a game now.  I have been looking forward to a business need to get back to 3D development and this is it!

FFTs?  What is that?  Fast Fourier Transforms are something I haven’t looked at since my Signals and Systems class at UC.  I use pitch shifting (just one of many uses for FFTs) quite a bit as a musician but never had the chance to work on incorporating that into a development project until yesterday.  Again, it was great to have this discussion appear in the class.  The possibility and capability afforded by today’s consumer grade hardware is truly astounding!

More than anything this week I have began to appreciate the parallels at the technical level between two of my favorite things – audio (MUSIC, MUSIC, MUSIC!) and video and the power that Apple’s collection of frameworks has given today’s developer to create new things using both.  The mathematics using linear algebra, modifications with filter chaining, and low level patterns for hardware acceleration are common to both.  I haven’t been this energized about development for many, many years!  It was pretty hard to get excited about SOAP and EJBs.  Yesterday I tweeted that I had spent more time in this computer lab than any other time since college and I have truly enjoyed every minute of it.

The one sad note for the day…  It rained so unfortunately no afternoon hike and thus no new pictures.

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!

 

Day 1 at the ranch

Day 1 –

So day one of our training is wrapping up.  Yeah there are a bunch of us still in the lab at 9:30pm after starting at 9am.  This is the very first time they have offered the advanced iOS class and consequently we have discovered several small problems with the materials but that is to be expected.  To compensate, we have not one but three excellent instructors here with us and I have to say despite the exhaustion of the long day I am learning a lot.

We took a short break around 3:30 to hike around outside.  The weather is such that I almost didn’t need a jacket which totally ROCKS since it is January.  The weather here really makes me want to move south.  In terms of ground covered, I didn’t really cover any new territory than what I saw by myself last night but it was great to get outside, enjoy the beautiful surroundings, and rest my mind.  Every time I go outside I am staring up at those zip-line cables.  I have yet to see anyone on them but man are they impressive.  Some of the stands are WAY up in the air and some are literally just a few boards wrapping a huge tree with no ladder or stairs.  It looks like it would be fun and terrifying.

IMG_1007-1024x768What about the food?  Anytime I travel anywhere I always panic about food since I have the gourmet palette of a 12 year old.  The folks that run the Banning Mills facility have been awesome for accommodating my crazy cheese-free, simple, diet.  Right off the bat, they had a salad prepared for me without cheese!  Woo-hoo!  The main course last night was some sort of stuffed chicken and mine came without the cheese sauce!  Again I was impressed but really didn’t care for it since it had the stuffing.  Today’s food however has been great starting with a very good breakfast with fresh fruit and bacon.  Lunch was chicken legs and corn on the cob both which were very good.  Dinner was something new (for me) called Souvlaki.  It was a pork loin with greek seasoning on skewers.  It was actually pretty good!  Dessert was apple crisp which I decided to try since I am being adventurous and it was good too!  All said, I am eating well and I am really thankful they have honored my strange requests.

So what did we cover today?  We started with Storyboards and in particular custom segues.  This gave me a chance to experiment with some Core Animation effects I had never seen yet.  We then moved into the core image framework and filtering.  The variety of options available in this API is impressive especially since it is new with iOS 5!  We did a nice lab with face detection.  We also applied various filters (like sepia) to any photo picked from the photo library.  I finished the lab early so was able to experiment with some other filter effects.  Note that filters can also be chained together which can give you a lot of power.

We continued with more Core Animation and then wrapped up with Core Motion and using the 3rd party Core Plot framework.  Both labs involved a lot of typing and debugging but ended up with sample apps that were quite awesome.  Yes that was a LOT of stuff to cover in one day but every part of it was cool and revealed something new that I hadn’t seen.

The lessons and labs are interspersed with some great productivity tips.  For example control->command->up and down arrow are shortcuts for flipping between your header and implementation files.  Simple tip, but I have probably used it 50 times since it came up this morning.  It is one of those conveniences that is etched in my mind now.

Though we have seen a few issues with the lab manual, they are kind of a blessing in disguise.  The best way to get deep knowledge of anything is to challenge yourself and wrestle with a problem.  These minor issues, when they have occurred,  have caused us to dig deeper.  Looking forward to another great day tomorrow!

Hello from the Big Nerd Ranch

IMG_0996-768x1024Howdy partner!

It was a long day of driving but we are here! We left around 9 am and drove straight from Cincinnati to the south-west side of Atlanta only stopping for gas and a short lunch at Fazolis.

The last several miles were just 2 lane roads which seemed to take forever but we had a nice marathon session of audiobooks and NSBrief podcasts to listen to.

After driving deeper into the middle of nowhere we ended up at the red dot on the iPhone GPS – Historic Bannning Mills. When we got here, we weren’t sure we were in the right place. There were a bunch of cabins in the woods and zip-line tree stands all over the place. It looked like a fun place – really not what you’d expect from typical training – though we are not expecting typical training – this is an Advanced iOS bootcamp after all!

IMG_0998-768x1024At the bottom of a hill was the main lodge building which I’ve got to say is really cool inside. I love lodge-style architecture and this one has the essential heavy exposed wood beams, large stone fireplace, cool spiral wood and wrought iron stair case, and the quintessential nice assortment of stuffed animals. Some nice soft bluegrass music is playing here as I type this.

My cabin is pretty nice too! I don’t like cold so I was very pleased to see that I have my own gas fireplace. Actually it looks more like an old wood IMG_0971-1024x768burning stove but it can generate heat! The corner of the room has a big whirlpool tub which I really doubt I will have time to use but it makes the room look nice. The balcony in back has a great view of the stream in the valley below complete with the nice subtle roar of the small waterfalls. If it was warmer, I would leave the door open!

IMG_0987-768x1024Before dinner I took about 15 minutes to quickly explore the nearby trails. From the map, it looks like there are trails everywhere. I love hiking and exploring so this is really cool! There are ruins of old buildings and an old dam.

All kidding aside, this looks like a great place to focus and learn isolated from the hustle of the nearby city. I doubt I am going to have any time for ziplining or much time to hike though I will try to get out for a few minutes if we have breaks!

 

The syllabus looks broad and intense. It covers a lot of things that I am really looking forward to hearing more about. Class begins tomorrow at 9am sharp!

I am still here!

Hey everyone! It has been a while since I have written anything yet I have been hearing nice comments from many of you regularly for several days. Thanks EVERYONE for stopping by. How you find this site is a serious mystery but somehow you find it. The number of visits and diversity of locations from which you are from is very cool! It is really meaningful to see things have started to take off.

So what have I been doing? I have been working a LOT of hours lately both with my day job and some other side projects. Also my wife had knee surgery so I have been quite busy helping out around the house. Consequently my writing time has been lacking. It hasn’t been bad though. The work has been a lot of fun! I have been learning a lot about core animation and listening to the Stanford University Advanced iPhone classes during my daily commute. These are a great FREE resource if you are interested in learning more about iOS. Apple development is a blast and the tools and API really give us developers a lot of power.

I did take a break a couple weeks ago from the development activities to meet again with the band. We hadn’t practiced in months but wanted to meet and record some demo material in case we do try to play out later this spring. The recording sessions went quite well overall and my buddy and bandmate Steve has been mixing the songs all week. We recorded seven and of those he thinks 3 or 4 sound really good so I am anxious to hear the final mixes and figure out how to share some of them with you.

So what’s coming up? I started writing an article on “A day in the life of my iPhone” that I hope some of you will enjoy. It is close to being done and I am anxious to share it and hear back from you. I am also packing up to head out to the Big Nerd Ranch near Atlanta next week for their Advanced iOS Boot Camp and really can’t wait. I have been looking forward to this class ever since it was announced!