Nerds!

.flickr-photo { border: solid 1px #000000; }.flickr-frame { float: left; text-align: center; margin-right: 15px; margin-bottom: 15px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }

7128.jpg
7128.jpg,
originally uploaded by pmcgavin.

Here’s a photo of the nerd herd at The Big Nerd Ranch. The tall one in the middle is our instructor, Aaron Hillegass. I am trying to write a review about the class (outside my experience), so expect one coming soon. I haven’t written any Cocoa code since then, but plan to as soon as I get a better schedule.

Big Nerd Ranch: Day 4.5

Final day is just half a day. What can be crammed in too my brain in this last 4 hours. It seems plenty already, but we have barely scratched the surface. We learn about NSTextView. The class I really need to get familiar with in order to get my program out and running.

We get a quick overview of some advanced Objective-C. It’s a little bit too much to know about. It seems that the reference count is not handled by the root NSObject but shuttled off into a data structure that holds only those of retained by 2 or more objects. We also learn about the mysterious way key-value observing works. It seems that at runtime Objective-C creates a proxy object to handle the object observing. This is rather scary, but it works. And we also learn that even though your instance variables are supposedely protected, they can be accessed through key-value coding. Bye-bye protected. Hello globally available.

We also built a framework and a palette. Things that may not be useful now but in the future when I become a Cocoa master. It will be a long road. I must get started.

Anyway, we finished the class with lunch, put on the bus to the airport, and are ready to bring our new skills to our daily tasks. I still have to wait several hours before my flight. I am sitting in the atrium of the ATL airport. It is now 4:00PM, five hours before my flight. I am watching young christian missionaries gather to go spread the word of God wherever. They are like us pilgrims to Aaron’s class. Cocoa addicts who must now evangelize the greatest that is Apple. Let me tell you about it when I ship my software.

Big Nerd Ranch: Day 4

Finally, I discussed my program with Aaron. Not as bad as I thought. Basically, he explained that I should have delegate of the NSTextView handle changes to NSAttributedString. How this may work is very confusing to me. I guess I’ll have to start pushing the bits. Hopefully this will be working out very well. Soon. If I just only…

Anyway class is winding down and my mind is basically full of Cocoa goodness. Full to the brim. Today we did some OpenGL and more CoreData. I hate both of these. OpenGLis just plain confusing, and CoreData has not too much programming. CoreData looks to be there version of CORBA.

There has been a lot to learn. Frameworks are always so hard to pick up because of the depth and breadth of them. I program in C++ without any crutch like a framework, but that is the way we are going. Away from the raw and onto something more plastic and man made. It takes real programmers to create a framework. OS X has plenty. Even though it’s summed up in Cocoa. there is a great deal to learn. Printing, graphics, sound, widgets. There’s a lot to it. Frameworks is the next thing. This is the first chance I have gotten with one. It’s been fun, but somewhat intimidating.

Also, staying here are a group of journalists taking a “Hostile environment” survival course. Most of the journalists are from CBC (Canada), CNN, NPR (?!) and are on there way to many hot spots of the world. We pass each other at meal times. They call us nerds. It’s funny. We almost had a rumble: they wanted to challenge us to a volleyball game. We may have done it if it was virtual volleyball, but the game neveer came to be. It was stupid. I think we just wanted there chicks. The one from CNN was kind of cute (on air personality I think name of Jace something?).

Turns out Aaron is also a fellow Cane. He was there for a couple of years left when I got there and stayed in the same residential colleg as me. Rather interesting.

Tomorrow we wind down. I really need to get things working on my program.

Sleep.

Big Nerd Ranch: Day 3

Hump day and the time here is getting short. We’ve so far covered another seven chapters in the book plus and additional CoreData chapter that Aaron has put together. A lot of it today being keyboard input, mouse events, and custom views. Unfortunately, my application is not coming along as I don’t have the heart to dive into the TextStorageLayer or discern the intricacies of NSTextContainers. I really wanted to learn the design of a GUI application, but I don’t feel that I have gotten it so far. Do you put objects in their proper place through code or through design? I feel that writing an application like the way we’ve been learning will result in a massive re-write or re-factoring for a 2.0 version. This is a mystery. I need it solved.

Also, on the daily hike, we enjoyed a nice dip in the river out back. We froliced in the shallows enjoying the cool cascade of water after the hike. On each daily hike the mass of Big Nerds has been dwindling. Today, with the announcement of a swim after the hike, we had a wholesale bailout of about a almost half of our numbers, and even then it was only six of us who braved the river. I like doing these things. Swimming in a local place is always much fun. It feels like I had been there. There are no pictures because the batteries of my camera died.

I have finished “Spin.” It has been a very good read. I hadn’t read science fiction in a long time, but this book is as thrilling as any of the classics. It was a Hugo Award finalist. I’ll lend it to you when I get back.

Sleep.

Big Nerd Ranch: Day 2

Another day. Another byte in the program. We’ve so far gone through another 5 chapters of Aaron’s book. Will we get to the finish in time? There are another 20 or so chapters left and I haven’t gotten to the last few during the time I tried his book. If we don’t, I think I will be somewhat disappointed.

My fellow classmates are an interesting bunch. They are a geekiness that I did not know existed. They are a more worldly geek. They know lots of differing programming paradigms, because they come from various industries and worked on many different projects throughout there work. But it is a beautiful sight to see all these Macs pounding out code.

My TiBook is the grandfather in the place. Besides the ancient cube running as a server and a few of the Big Nerd Ranch’s iMacs, everyone has a more recent Apple computer. Several Mac Book Pros are in the crowd. There rest are AlBooks. I even think that some of the iMacs are recent. Needless to say my compile time is definitely slower than the rest.

I did work on my project. It’s not going so well. I have read some of his code, but I am still stuck on the design of a GUI program. My first attempt at it I hated. This time I am starting from the data structures up. GUI and desktop applications are a strange beast. You seem to be constrained by the layouut and functionality inherent in your GUI. It is what it is and it drives how the program can work.

One of the reasons for a programming vacation was to learn more about GUI and desktop application design. I feel that I have not yet reached that point. I had broached that subject with Aaron and he did bring it up in class (“start with the windows”), but it all seems wrong. I am trained as a software engineer. I don’t think I can get the hang of this very well. Let’s see about today.

We’ve been introduced to CoreData. It’s rather neat. We first built up an application without CoreData. It used some bindings and NSArrayControllers but it took some time to code. The CoreData version started off with a model. Using ER notation we modeled the data of our application. Then we dragged and dropped our entity onto a window and voila, our application was done. Compile and link and it had the same functionality as our previous version.

We hiked in the woods again, but this time the humidity was down so it was not so bad. Again, I must complain about how out of shape I am. I feel this activity in my legs. Food was good today. Steak for dinner.

I am almost done reading “Spin.” I should’ve brought another book. I had one at home but feared that I wouldn’t get through this one. How wrong I was.

Sleep.

Big Nerd Ranch: Day 1

Up early for a vacation: 7:00 AM. I am so ready to do some programming. Breakfast was adequate. It’s sausage, eggs, bacon, grits and a biscuit. Is grits a southern thing. It’s not bad. It’s edible.

Then it’s off to start the programming. For those playing along, we did the first five chapters of Aaron’s Cocoa Programming book. I’ve already did it, but the code is on my mini at home, so I miss all my programming tricks to do. I like Cocoa. Anyway the class so far has been an introduction to Cocoa. It’s just what you can do with the tools and the framework. I have some experience.

I also asked Aaron about my application. He tells me it may be over my head. Whatever. How hard is programming? Not really hard. You just have to know how things are put together.

We also get food and lodging. The food so far is okay. Everything tastes good. The deserts though are awesome. I thought that I would lose some weight while I was here, but I am eating a lot and drinking plenty of soda. The accomodations are cool. It’s at Banning Mills, a restored paper mill. I keep thinking that there are ghosts around here. It gets dark in the room, and some noises creep me out. I wonder if the ghosts will ever come around.

We also went for a hike. I am out of shape as I felt it going up a hill. This summer’s bike riding will be brutal. Hopefully, when I get back, I’ll be training and lose these extra pounds.

“Spin” has been a fun read. I am almost half way through it.

Sleep.

Big Nerd Ranch: Day 0

Arrived in Atlanta around 3:00 pm. Watched the luggage carousel revolve for 20 minutes before my bag finally fell off the conveyor. Met the nerds around 5 minutes later. It’s just a bunch of guys, programmers and fellow Apple enthusiasts. After a ride in a rickety bus, we make it to the Historical Banning Mill. We mill about the place, eat dinner at 6:30, shoot some pool and go to back to our rooms around early. I end up reading my book, Robert Wilson’s “Spin.”

Sleep. Then onto several days of pure Cocoa pleasure.

Jihad

As you know, I am going to school for a masters in software engineering. One of the classes I am taking this semester is Human Computer Interactions. A very social-sciency type of subject. Tonight’s lecture topic was software tools. Programs that create other programs. This relates back to HCI, because these types of programs aid the developers in crafting the software. The lecture was just a categorization of the various types available.

This topic is a virtual grenade for software developers. Ask ten different software developers their favorite editor and you may get ten different answers. Ask them their preferred language and get a myriad of names. Ask them favorite platform and watch the whole thing explode in your face.

Tonight, the instuctor let slip that Java was faster than Visual Basic. I ran for cover. I was expecting a total flame war to break out, live in class. It happened.

We have a mix of developers in class. There are the web services folks, me the embedded systems guy, a lady who has to do COBOL, a Java dude and a few MS developers. One in particular has been a consultant/programmer on the MS Windows platform for about 15 years. He knows his Windows stuff and had to respond back to the Java versus VB jab. The Java dude had to respond back. I think if the instructor was not a woman it would’ve gotten ugly real fast. I, being a MacAddict, stayed out of this fight. Everyone knows that Macs rule.

Tempers simmered, and we ended up agreeing to disagree. That is the best tact.

Ports

For all you Mac heads, programming nerds, and code monkeys read this article about porting BBEdit from PPC to x86 for the big, unfortunate Apple switch to Intel. Interesting stuff. The most being that it took them 24 hours to make their app cross-platform! Guh!

And that is why BBEdit rulez! As well as programming for the Mac. I need to get on the bandwagon.