BNR Day 7: Just Hoping for Clear Skies

It’s the end of the last full day at the ranch. The day was another great one: more iOS, more Cocoa Touch, a game of mini-golf, and southern style ribs with a whole chicken breast for garnish.  I’ve pre-packed everything I can in my little cabin, making it feel even more lonely.  Tomorrow I fly home and my time at Big Nerd Ranch comes to an end.  Today felt like everyone definitely had turned a corner and gone from falling to flying, pulling up to see nothing but clear skies ahead.

Today we covered some deeper subjects such as low-level touch events and layers, the underlying architecture that Cocoa Touch uses for drawing and animation.  These are areas that have analogous .Net Windows Applications capabilities, such as System.Drawing to cover manipulation down to the pixel; however, their lack of analogs in ASP.Net means this area might be a big challenge for someone without any previous applications experience.  It’s hard to be a programmer, but areas like this really lay bare how diverse a toolset we’ve forged and how different the skillsets between the wielders can be.

When extolling the boundless possibilities of the web, we often celebrate the (sometimes annoyingly) balkanized technology can be in building a web app.  Having three client-size languages, HTML, CSS, and JavaScript, plus a server-side language to realize a design, is a lot of effort in the eyes of most applications programmers.  They usually need only one language and one framework to make everything happen; in the case of iOS with the optional help of an interface builder to help them with visual content.

I recall missing the simplicity of homogeneous code when coming to web from applications.  For all of the conflicting perspective I might have from previous experience, it feels good to be back in the mode of only deciding where to put my Objective-C code rather than puzzling over exactly what kind of code to write.  Oddly enough, .Net WebForms was written as a way to ease application programmers into the web, but I really always felt it was such a leaky abstraction that fails at that task.

For all the waffling criticism I have placed on Objective-C and Cocoa Touch framework this week, I would need a month to share all my thoughts on the quality of the ASP.Net framework.  In insulating the programmer from the real web, but not being on a platform where its core architecture is seamlessly applicable, ASP.Net actually seems the worst of both worlds.  It controls the HTML and styles for a page (badly), while supplying an event model that can just as easily hurt as help you, was designed from the ground up without JavaScript in mind (to have some changes bolted on later), and continues to persist in my daily repertoire despite far superior alternatives (Microsoft can do web services and MVC too everybody).

I accept that web programming is about mastering a diverse and specialized palette of skills, applying each with consideration like a painting.  I accept that applications programming is about using a discerning eye to mold something from a single substance like a clay sculpture.  Both have offered me challenge and reward.  Unfortunately, ASP.Net is about slathering clay on a canvas and calling it art.

I’ve highlighted many issues with coming to Objective-C from ASP.Net over the week.  I’ve tried to draw a line on a map around each mountain I’ve seen, but the bitter truth just might be that ASP.Net is a bad place to start from for any destination.  It strives to cloud up your perception of what’s really going on to the point where you can’t find your bearings to fly out.