Monthly Archive for April, 2007

Brent has some good advice for larger projects

inessential.com: Weblog: Comments for ‘Thoughts about large Cocoa projects’

The main thing for me is explicitness.

I want it to be as easy as possible to know what code is doing, because that saves me time, and it makes it more likely I’ll do a good job maintaining that code.

The bigger the project, the tougher this gets. But it’s manageable.

Brent Simmons delivers some practical advice on dealing with larger projects. While Brent completely gets the power of the frameworks he uses, he sometimes chooses NOT to use all of the power in order to retain the ability to figure things out later (once he has forgotten some of the magic that may be taking place).

[tags]development[/tags]

Five levels of understanding

Through the joys of Spotlight, a quick search for “Zen” led me back to something I think about often. The following was written in November of 1999. In my mind I had a version that was just about the Enterprise Objects Framework (EOF), but this is obviously as much about the WebObjects Framework (the two making up what we call “WebObjects” in most contexts. I often say “use the tool, don’t fight the tool.” This is part of what I’m talking about.

There are five levels of understanding with WebObjects:

  1. Just doesn’t get it
  2. Understands WOF, but EOF is fuzzy
  3. Gets WOF and Understands EOF, but doesn’t always make the best choices
  4. Really understands WOF and EOF and generally rocks through most tasks
  5. Zen Master of WO (both WOF and EOF)

Someone who comes to WebObjects knowing only HTML and maybe has hacked an
existing PERL script to send in a “comments to the webmaster form” is
likely to fall into level 1. They can particiate in the WO development
cycle only from the HTML side. They can use tools like GoLive and
Dreamweaver to design pages and add elements to pages (but the only WO
parts that can be added need to be specified by a “WO developer”).

If you have any programming background, you should be able to hit level 2
pretty easily, especially if you have done ANY web development (CGI, ASP,
PHP, etc). WOF is generally easy to grasp because it is fairly concrete
(you put in HTML based templates, you get out complete HTML). If a person
attends the first WebObjects training class, they should be AT LEAST this
level when they complete it (or there is a big problem).

The trick with Level 2 is that EOF may take a while to sink in. You are
taught the core parts to EOF and if you absorb them, you can move ahead
with confidence. It is, however, common for the WOF part to be the focus
and EOF slips to the back of ones mind. When this happens, a paradigm
block is likely to occur. EOF is about dealing with your information as
objects, not rows in the database. That can be a significant mental leap
(especially for those with a great deal of database experience).

After you work on a WebObjects project, you quickly gain the experience
and comfort to move to Level 3 on the WOF side… you know how WOF works
and you know when it makes sense to create a “sub component”. You also
can have your application spit out just about any HTML that is seen on the
web. If you have spent some time in working with EOF (and the EOModeler
tool) you are hopefully gaining an understanding of “object models” and
“object graphs.” For example, you may not know how to implement vertical
inheritence, but you probably don’t need inheritence anyways. You should
know how to implement/model a many-to-many and free yourself of the
“interconnect tables” (those tables that only have two primary keys and
exist only because a many-to-many relationship can’t be described directly
in relational databases).

When you’ve done a few projects and had an “expert” to bounce design ideas
off of, then you may be heading towards Level 4. Level 4 people can do
anything. Often, they could be WebObjects product development engineers
if they wanted to live in Cupertino. If you have one of these people on a
project, it should be successful. A Level 4 can often help raise others
to this level.

Level 5 is what all purely technical people aspire to, but few reach.
Because it requires both breadth AND depth, even Apple’s product dev
engineers rarely reach this level on both the WOF and EOF side. Apple’s
most senior consultants fit this bill, as do some of the SEs. With one of
these people on the job, you are likely to have not just a nice product,
but they will provide the guidance to raise people from Level 3 to 4.

[tags]webojects, zen, understanding, eof, core+data[/tags]

Discovering the beauty of Core Data

Core Data - Almost Too Easy?

In the above posting by Kevin Hoffman, he talks about his newfound love and admiration for Core Data. I am continually amazed at how smart and technical people discover the elegance of the technology that came out of NeXT. Of course Core Data isn’t EOF, but then again it is, just the next generation (and without client server support supported).

Core Data, like EOF, is powerful object persistence framework. But you have to accept it and not fight it. In his two examples, he found the elegant solution. But for everyone that finds the solution, there are probably 2-5 that do it the hard way and curse the world. It goes to my five levels of understanding. I need to dig that up and publish it here.