April 29th, 2009 by Mike Fulton
Posted in Apple, iPhone, Mac, Tech

Once upon a time, Steve Jobs was the leader of a company called Apple.  Apple was known for being a technology leader, and their latest products were the envy of the industry.  Sadly, though, Apple’s sales figures didn’t seem to be able to keep pace with their reputation.  The board of directors of Apple, thinking that another style of management might be the way to go, decided that they’d had enough of Steve and handed him his walking papers.  The year was 1985.

Steve’s response to the situation was to start another computer company, called NeXT.  The Apple Macintosh was supposed to be the “computer for the rest of us” but with NeXT, it seemed Job’s goal was to create the “computer for the best of us“.  Largely inspired by his experience with getting the Macintosh into the education market, the NeXT Computer was going to be a powerful workstation designed to meet the needs of the scientific and higher educational community.  At the heart of this new computer was going to be NeXTStep, an object-oriented multi-tasking operating system that included tightly integrated development tools to aid users in quickly creating custom applications.

NeXTStep’s Language Of Choice

At the heart of NeXTStep was a fairly new programming language known as Objective C.  It was basically an extension of the C language to add Smalltalk-style messaging and other OOP features.  Conceptually it’s not too far off from where C++ was at the time, but the syntax is fairly different.  However, that simply didn’t matter at the time because most programmers hadn’t done much, if anything, with C++.

In 1985, any sort of object oriented programming was a relatively new thing to most programmers.  Modern languages like Java and C# were still years in the future, and C++ was still largely an experiment, with no standard in place and drastic differences from one implementation to the next.  In fact, most C++ solutions at the time were based on AT&T’s CFront program, which converted C++ code into standard C code that would then be compiled by a standard compiler.  It would be a few years yet before native C++ compilers became commonplace.

There were other OOP languages around, like Smalltalk or Lisp, but they were largely considered acedemic languages, not something you’d use to create shrink-wrapped products.

Since there simply wasn’t any better solution, the choice of Objective C for NeXTStep was completely reasonable at the time.

What Happened NeXT

The first version of NeXTStep was released in Sept. 1989.  Over the next few years, the NeXT computer and NeXTStep made a number of headlines and gained a lot of respect in the industry, but failed to become a major player in terms of sales.  In late 1996, NeXT had just teamed up with Sun Computer to create a cross-platform version called OpenStep, but before that really took off, something else happened.

In 1996, Apple was floundering.  Their stock price was down.  They’d had layoffs.  They had no clear plan for the future in place, and they were in serious danger of losing their place as the master of the graphic user interface.  Microsoft had just released Windows 95, which was a huge leap forward from Windows 3.1 in virtually every way, and PC video cards offering 24-bit and 32-bit color modes had become easily affordable.

Apple CEO Gil Amelio was fairly sure that updating the Mac to use some sort of object-oriented operating system was key to Apple’s future success, but Apple’s internal development had thus far failed to pay off.  Likewise Apple’s investment in Taligent, a company formed in partnership with IBM for the sole purpose of developing an object oriented operating system.  But then Amelio struck a bargain to purchase NeXT Computer and the NeXTStep operating system, bringing NeXT CEO Steve Jobs back into the fold, first as an advisor and then as CEO several months later when Amelio was shown the door.

It took Apple nearly 4 years to integrate their existing operating system with the NeXTStep tools and libraries, but ultimately NeXTStep formed the basis of the new Macintosh OS X operating system, released in March 2001.

Mac Development Tool History

When the Macintosh was first released in early 1984, you pretty much used either 68000 assembly language or Pascal to create programs.  Pascal had always been a popular language with the Apple crowd.  Apple had a set of development tools known as the Macintosh Programmer’s Workshop, which was essentially a GUI interface wrapper for a variety of commandline oriented tools, including the 68000 assembler and the Pascal language compiler.

It didn’t take long for the C language became available for the Mac.  Apple released a version for MPW, but it really took off with the release of LIGHTSPEED C (later renamed to THINK C), which had a GUI IDE of the sort that would be completely recognizable as such even today, almost 25 years later.  Think’s compiler quickly became the defacto standard development environment for the Mac.  Support for C++ would be added in 1993 with version 6.0, after the product was acquired by Symantec.

Unfortunately, when Apple made the transition from the Motorola 680×0 processor family to the PowerPC processor in 1994 & 1995, Symantec C/C++ failed to keep pace.  It wasn’t until version 8, released in 1997, that their compiler was able to generate native PowerPC code. 

Fortunately, a new player in the game appeared to save the day.  When Symantec bought out Think, some members of the Think C development team started a new company called Metrowerks.  While Symantec was struggling to bring out a PowerPC compiler, Metrowerks released their new CodeWarrior C/C++ environment.  In many ways, Codewarrior was like an upgrade to the Symantec product, and it quickly supplanted Symantec among developers.  Codewarrior would remain at the top of the heap until Apple released OS X.

The NeXT Development Tool

When Apple released Mac OS X in 2001, there were two big paradigm shifts for developers.  The first was that Apple now included their development tools with the operating system, at no additional charge.  After nearly two decades of charging premium prices for their tools, this was a big change.  Plus, the new XCode environment was an actual IDE, unlike the old Macintosh Programmer’s Workshop environment, with support for Objective C, C, C++, and Java.

The second paradigm shift was that everything you knew about programing the Mac was now old news.  You could continue to use an existing C/C++ codebase with the new Carbon libraries providing a bridge to the new OS, but this did not allow you to use the new tools such as the Interface Builder.  If you wanted to take full advantage of the new tools Apple and the Cocoa libraries, you needed to use Objective C instead of the familiar C or C++.

Objectionable C

I had been a Mac programmer since getting my first machine in 1986, and when Apple released Mac OS X in 2001, I was fully expecting to continue that tradition.  However, while I had no problems whatsoever with the idea of learning a new set of API calls, or learning new tools, I saw no good reason why it should be necessary to learn a new programming language.  Still, at one time in my younger days I had enjoyed experimenting with different programming languages, so I figured why not give Objective C a try?

Upon doing so, my first thought was, this was an UGLY language.  My second thought was, why did they change certain bits of syntax around for no good reason?  There were things where the old-style C syntax would have gotten the job done, but they changed it anyway.  The third thing that occurred to me was that this was a REALLY UGLY language.

After a few brief experiments, I pretty much stopped playing around with Cocoa and Objective C.  I started playing around with Carbon.  My first project was to rebuild an old project done in C++.  But the first thing I ran into was frustration that I couldn’t use the new tools like the Interface Builder.  It wasn’t too long before I decided I wasn’t getting paid enough to deal with all this BS.  Objective C had sucked all the fun out of Mac programming for me.

The shift to Objective C marked the end of Macintosh development for many other programmers I’ve talked to as well.  One can only conclude from their actions that Apple simply doesn’t care… if one programmer drops the platform, another will come around.  I’m sure there are plenty of other programmers around who either like Objective C just fine or who simply don’t care one way or the other.

As far as I’m concerned, Objective C is an ugly language, an ugly failed experiment that simply has no place in the world today.  It offers nothing substantial that we can’t get from other languages like C++, C#, or Java.  Nothing, that is, except for access to Apple’s tools and libraries.

Some Mac developers would tell you that the Cocoa libraries depend on some of Objective C’s capabilities like late-binding, delegates (as implemented in Cocoa), and the target-action pattern.  My response is that these people are confusing cause and effect.   The Cocoa libraries depend on those Objective C features because that was the best way to implement things with that language.  However, I have no doubt whatsoever that if Apple wanted to have a  C++ version of the Cocoa library, they could figure out a way to get things done without those Objective C features.

A Second Look

A few years later when I got my first Intel-based Mac, I decided to revisit the development tools.  I wrote a few simple programs.  I’d heard a few people express the opinion that Objective C was sort of like the Ugly Duckling… as I used it more and became familiar with it, it would grow into a beautful swan.  Nope.  Uh-uh.  Wrong.  No matter what I did, no matter what I do, Objective C remains just as frickin’ ugly as it was when I started.

I really wanted not to hate Objective C with a fiery vengeance that burned from the bottom of my soul, but what are ya gonna do?  Personally, I’m looking into alternatives like using C# with the Mono libraries.  No matter how non-standard these alternatives are, they can’t be any more icky than using Objective C.

Could It Be That Apple Doesn’t Care About Making Life Easier For Developers? 

The real question here is why the hell hasn’t Apple created a C++ version of the Cocoa library?  It’s been 12 years since Apple bought out NeXT.  Why hasn’t Apple made an effort in all that time to adapt the NeXTStep tools to use C++?  Or other modern languages like C#?  Microsoft may have invented the C# language, but even the Linux crowd has adopted it for gosh sakes!

Or why not annoy Sun and make a native-code version of Java with native Apple libraries?

Could it be they are trying to avoid the embarrassment that would occur when developers abandon Objective C en-masse as soon as there is a reasonable replacement?

Does Apple think developers are happy with Objective C?  Personally, I’ve yet to find a single programmer who actually even likes the language.  The only argument I’ve ever heard anybody put forth for using it has always been that it was necessary because it was the only choice that Apple offered.  I know that’s the only reason I use it.

Why does Apple continue to insist on inflicting Objectionable C on us?  I can only come to the conclusion that Apple simply doesn’t care if developers would rather use some other language.  It’s their way, or the highway.

, , , , , , , , ,

April 22nd, 2009 by Mike Fulton

Lymelife is a character study of two families, the Bartletts and the Braggs, who live in a semi-rural area of Long Island, far enough away from NYC to be a small town, from all appearances, but close enough to commute. Both families are middle-class, but the Bartletts are on their way up while the Braggs are on their way down.  The two families live near each other, the kids go to school together, and some of the adults work together.

Alec Baldwin plays Mickey Bartlett, a budding real-estate developer trying to launch his own housing development on land adjacent to the Bartlett home.  He’s married to Brenda, a stay-at-home wife played by Jill Hennessy.  They have two sons, Scott and Jimmy, played by the brothers Culkin, Rory and Kieran.  Rory has a friend, Adrianna, played by Emma Roberts, whose mother Melissa works with his dad.  Her dad Charlie used to work in the city, but lost his job awhile back after being diagnosed with Lyme Disease.


Rory Culkin, Alec Baldwin, & Jill Hennessy from Lymelife

Lyme disease is, of course, what the movie’s title refers to.  The official synopsis for the movie says it takes place in the late 70′s, but there are occasional references to things like 1980′s The Empire Strikes Back and the Iran hostage crisis, so I’m going to say it’s set in late 1980. That’s just a few years after doctors first connected the dots between the disease’s various symptoms and a common cause.  Dealing with the symptoms exhibited by Charlie Bragg is an underlying theme, as is the fear of other characters catching the disease.  The movie takes place in a semi-rural area where deer and ticks, the primary ingredients for the disease, are in plentiful supply.

The movie has a big-name cast, but it’s not a typical mass-market movie.  There aren’t any car chases, explosions or accidental crime sprees.  The laughs are gentle and there isn’t really much of an overall plot.  Instead we have a variety of unique, interesting characters with complex relationships that play out and interact with each other. 

The Bartlett parents are having problems with their marriage. She resents him because she was happier living in Queens than out on Long Island, and he’s when he’s not screwing around on her, he’s at work all the time.  As with real life, there’s been so much back and forth over the years that it’s sort of hard to distinguish cause and effect in the relationship.  The only thing they really still have in common is that they both really do care about their kids, even while recognizing their own flaws as parents.

Meanwhile, the Braggs are having problems as well. As a result of losing his job and because of the disease’s effects, Charlie Bragg is in a hardcore depressive state.  Melissa thinks he’s headed into the city on a regular basis to look for work, but actually he’s just been hiding out in the basement.


Rory Culkin & Emma Roberts from Lymelife

The main story is the relationship between Scott and Adrianna. They’ve apparently been friends for awhile, and just as apparently he’s been quietly in love with her for much of that time.  She’s not entirely unaware of how he feels, and she does kind of like him back, but there’s also another boy she likes, who is a bit older and who doesn’t have any problem with expressing his interest. 

A lot of other movies would have made some attempt to paint Scott’s rival for Adrianna’s affection as some sort of yahoo that wasn’t deserving of her.  But that doesn’t happen here, and I think it really helped the movie’s integrity and made things more real.  The bottom line is, Adrianna is a very pretty girl who is naturally going to have boys competing for her attention.  It’s not necessary for them to be jerks in order for us to root for our hero.  In fact, I’ve always thought that when other movies paint the hero’s romantic rival as a jerk, it mostly serves to diminish the girl’s character.  I mean, if it’s so obvious to the audience that the girl should choose the hero but she chooses the jerk anyway, to me that says the girl is either oblivious or just plain shallow.

Older Bartlett son Jimmy is home on leave from the Army for awhile awaiting deployment.  There’s mention of him being sent to the Falkland Islands, which makes no sense.  Argentina’s invasion of the islands was a few years later, and Great Britain dealt with it on their own without the USA’s help. In fact, there was no major US military deployment anywhere in 1980. Jimmy is protective of his younger brother, but not above a little brotherly rivalry. Jimmy’s role in the story is largely as a catalyst for what’s going on in the other relationships, and to a lesser degree, to be the guy that reveals those things that others don’t want to have revealed.

Other than the Bartletts and the Braggs, there really aren’t a lot of other characters here. There are a few other kids who briefly interact with Scott and Adrianna at school, but that’s about it.

The acting is mostly top-notch here.  Timothy Robbins is quiet, disturbing, and occasionally foreshadows a bit of menace to come.  Jill Hennessy is good as the wife who quietly ignores her husbands infidelities until others bring them out where they can’t be ignored any longer.  Cynthia Nixon does a reasonable job with Melissa, who is perhaps the least sympathetic of the main characters in this script.  Her character seems to be mostly reacting to what everybody else is doing, rather than doing something herself.  Kieran Culkin is also good as the elder Bartlett son, though he really doesn’t have as much to do as the others. 

It’s not his best performance, but Alec Baldwin is good as the Bartlett patriarch.  However, I did have a nitpick.  There was a brief moment in one scene where the elder Bartletts were fighting in their kitchen and Baldwin does something that generated a disconnect for me, just for like half a second.  The only thing is, I can’t really put my finger on what it was.  It’s just like for the slightest moment, he broke character in some fashion.  It could just be me, so I’d be interested to see if anybody else noticed something.

One thing that bugged me was that neither of the Culkins look like they could be the offspring of Alec Baldwin and Jill Hennessy.  I know we’re supposed to ignore that sort of thing in movies unless it’s really obvious, but here I thought it was really obvious.  Baldwin and Hennessy are both dark haired and tall while the Culkins are blonde and short.  It was occasionally a bit distracting.

Rory Culkin’s Scott is quiet and shy.  At first glance it would seem to be his shyness that holds him back from making a move on Adrianna, but ultimately I don’t think that was the whole problem. It’s really more that she just completely baffles him most of the time.  I think that’s a distinction you couldn’t make with a lot of actors’ performances.

Emma Roberts is just plain adorable as Adrianna.  She’s cute and genuine and multi-layered.  I was especially impressed with the way it was disappointing when her character expressed interest in another boy, but not an indication that she had some character flaw that caused her to pick the wrong guy.   If I had any complaint about Roberts’ performance, it’s that it was perhaps a little too subtle at times.  Like when Scott spread a bad rumor about her, I didn’t feel like she got quite as angry as she might have.

If you mainly like plot-driven movies, then Lymelife isn’t for you.  But if you like interesting characters and watching how they interact, give this movie a shot!

, , , , , ,