RE: The Basics

Robert Sanford <[email protected]> Wed, 20 Oct 2004 13:16:38 -0500
Newsgroups gmane.comp.java.advanced-servlets
Message-ID <8343824939973D4FAC4AD93C1CF35944BCB9D7@orrtax_exchg3.nls.nlsholdings.com>
> > I've always regretted that I never was able
> > to go back and do more work with Lisp and
> > I'm afraid now that I would have to 
> > struggle again until I hit that moment of
> > epiphany...
> 
> You wouldn't. It's like riding a bike.

I have never considered riding a bike to be difficult. I ride recreationally
(well used to before I had kids) and getting on and getting about has always
been a pleasure. But I regularly encounter adults for whom getting on a
bicycle and remaining upright is a trial despite their having been attached
to bikes as children.

I guess I'm saying "That's easy for *you* to say!" ;)

> Do you never use anonymous inner classes?

Seldom.

> Perl, Python and Ruby all have good lexical closure 
> implementations, though IMHO Ruby's is best.

Ruby and Python both interest me. I've used Perl and there are times it is a
pleasure but I'm pretty much staying put in Java land these days.
Experimentation time w/ new tools for my current language, much less new
languages, is at a premium these days. Back when I started coding I was
working on a 486-16 w/ 16MB RAM. If I changed a particular header file I was
in for 45 minutes of recompiling the world. I got a *lot* of reading done
back then. Now with my 2GHz and 1GB RAM and Eclipse building my code in the
background I'm not getting as much done.

Family life (2 kids now and another on the way) take a big hit too.

But to be honest, I think I'm a lot happier now than I was then.

Sorry, almost 40 now and the mind tends to wander in nostalgia. Back to the
topic... :)

> I was really shocked by a friend of mine recently.
> He's about 25, a team leader, very much a 
> science/techie geek. We were talking about memory
> allocation and he asked how it was possible to see
> into the memory of another process. When I said that
> it wasn't possible, that's what memory protection 
> was all about it became clear that he had no idea
> what a buffer overflow attack really was, or how
> operating system memory protection worked, what a
> page fault was, etc...
> 
> He's a really smart guy who has done CS at college
> and worked in the industry doing good valuable work.
> But he just didn't know the basics.
> 
> It may be possible to say that he clearly doesn't
> need to know the basics; if he's done ok so far
> without them he can carry on. But I don't believe
> that's true. He would be better if he knew what the
> machine and the operating system were doing.

Please pardon the meandering below. I think I have a point but I'll let you
decide :)

I guess that depends on what you define as the "basics". You are defining
the underlying OS architecture as the "basics" but for many people those are
considered "advanced" topics. 

Let's take a look at XML as an example - The "basics" of XML are that you
have a hierarchical representation of your data and you can parse that data
using some nifty toolset. Most of those nifty tools that people are using
shield them from the low-level details of the specs. Those low-level details
aren't the "basics" but they *are* the "foundation".

We were using JDOM in our project because of the relatively attractive API.
Performance isn't as good as SAX but performance with the XML parsing wasn't
going to be noticed. Unfortunately, when the internal application that was
submitting the XML docs for consumption was changed after my code went into
production and ended up performing a cross-product join and spew forth
360000 child elements instead of 600 we saw that JDOM's nice API and
reasonable performance was offset by blowing the memory stack. So we switch
to SAX...

Well, we were getting incomplete results in some of our data fields and my
coders were confused. Digging in to our handler I saw that we were simply
setting the string content of an element to be the last value that was given
to us by the characters() method. Well, I've done some reading and
participated in email discussions and, probably most importantly, made that
same mistake before. The rule is that SAX parsers don't have to give you all
of the character data for an element at once. We have to *append*, not
overwrite, during the characters() method.

For a lot of people that's a surprise. It's "advanced" because it isn't
obvious after being hidden by toolsets that make your life simple.

Is this a problem that we have people that are doing, in general, really
good work without having a detailed understanding of what the tools they are
using are doing underneath them? Maybe. It depends on what you want them to
accomplish.

My current responsibility is to handle business transactions within a CRM
tool and throw out all of the crap that our previous consultant put into it.
I want my team to be spending their time and energy in understanding the
business processes so that we can make things work right. I would rather
them understand those processes as well as the accounting and sales and
customer support staff than have them understand that you can't have one
application peek at another application's memory space and why.

Do I appreciate it when they take their own time to learn about those
things? You betcha. And if they are doing that sort of thing then they get
my attention and I work to make their lives interesting because those are
the guys that in two to three years when we are running smoothly again will
be used to develop the new toolsets.

So now that my rambling is finished, did I really have a point? ;)

rjsjr


------------------------ Yahoo! Groups Sponsor --------------------~--> 
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/yQLSAA/saFolB/TM
--------------------------------------------------------------------~-> 

Before posting a question, try to find your answer here: 
<http://www.egroups.com/links/advanced-servlets>
Announcements should go to: [email protected]
To Post a message, send it to: [email protected]
To Unsubscribe, send a blank message to: [email protected] 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/advanced-servlets/

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/