Monday, November 25, 2002

I've worked with a few frameworks for doing web services. I really, really like Apache Axis.
I've worked with a few frameworks for doing web services. I really, really like Apache Axis.

Friday, November 22, 2002

> A good review of an interesting book:

I was reading through some of the slashdot posts. The part I find funny about the whole XP debate is that is often not the case of RUP vs. XP. More likely (in my travels anyway)... it is XP vs. nothing.... Or XP vs. Anarchy. In this case, XP always wins. A bar glass could win against complete anarchy.

I enjoy teamwork. I enjoy bouncing ideas off of colleagues. I enjoy learning from them as well as sharing new ways of thinking with them. I enjoy working a full day programming instead of contemplating navel lint in a big muckyedy muck meetings. Most of all, I enjoy writing high quality code!

XP is not for everyone. It is not for every organization. But it is the way I prefer to work. Given the choice, I rather have RUP than Anarchy. RUP/UP is good. XP requires a real good team so by default it has a lot of success.

XP does not mean there will be no design. XP does not mean there will be no planning. In fact, XP (done right) is very structured and focused.

I was thinking the other day.... I don't like .Net, but I really like C#. Has anyone ported C# to the Java Virtual Machine? I think I would use it. (at least try it)
I pulled an allnighter last night. I was making good progress on this project, and I did not want to stop. I am too old for this. Actually, it was not going to be an allnighter until I ran into some things that did not work the way we planned. It seemed better to make the delivery date than to sleep. Plus, this has been one of those projects where nothing works like it should. I took a good chunk of yesterday just researching the technology and architecture.... you know regrouping... licking my wounds. This gave me the raw data to figure out problems that use to stump me. Now I laugh at those problems.... HAH!

Thursday, November 21, 2002

Hey I got this email note from BrainBench about my XML test score.
Great Test Score!

Hi Richard,

Congrats on the nice score you got on our XML beta test. Actually, it's a great score considering there have been a lot of attempts so far and you scored in the top 10!

We need to incorporate feedback from this beta test into the test. I thought I'd inquire with you to see if you might be interested. I know you've got the knowledge, the question you have the interest?

Based on your knowledge, feedback from the test and the item results from the beta test, you will recommend changes in the questions, the choices and difficulty level changes. For reviewing and incorporating the feedback, the pay is $400! Based on your work and how quickly this is done, there is a possible bonus also.

Our requirements of you are that you have experience in the field, have access to MS Access (version 7.0 or higher) and could turn the test around in a week.

Please let me know if you are interested. If so, please provide me with a convenient time/number to reach you, so that I can go over the task in greater detail.

Please do try to get back to me as soon as you can, however, as I am extending the same offer to others with scores of a similar rating who excelled on the test.

Again, great score!

Randy Kraemer
Test Development Manager
Brainbench, Inc.

We measure the skills that drive your success.

Monday, November 18, 2002

Things are going well. No one answered my posts on the WSDK forum. Kyle Gabhart helpled me figure out how to deploy my web service on the WSDK. It is now deployed. Yeah. Kyle is my hero.

Wednesday, November 13, 2002

I just took three XML tests on BrainBench(BB): XML Concepts, XML Module and XML. It has been a while since I took the test, and my knowledge of the subject has been expanded. I missed master level on XML, but got it on the XML Concepts, and XML module test. The XML module is the replacement for XML, but it is still in beta.

The funny thing is that I got in the 98 percentile on the XML test, but did not get master level. This means that less than 2% of the people taking the test get master level scores. I missed master level by 0.07.

The tests seem to be too focused on XSL, and they hardley cover DTD, entity declarations, mixing DTD with namespaces, etc. I did really well on the XSL part. Where I messed up is on the industry jargon.

The XML Module, which is in beta, does not show up on my BB transcripts. But here are my results that BB emailed me. I did much better on the beta than the real test.
The beta test allows you to add comments for improvements. I added a lot of comments (this increased my average response time to 90 seconds). Warning:Don't take the test unless you really get XSL.

Dear Richard Hightower,

Thank you for taking a Beta Test!

We appreciate your time. Although you will not receive a certificate
since the test
is still under construction, you have played an integral
part of the test development process.
Our assessments are delivered to companies worldwide to
improve selection, development, and skills tracking processes.
If you were a corporate customer, this is the output you
would receive after an employee or a potential employee took
an assessment for your company. You could also view this
information via the web immediately upon its completion.


Date: 2002-11-13 18:40:42(US EST)
Client: Brainbench, Inc.
Profile Name: Beta XML Module (BETA XMLMOD)
Test taker: Richard Hightower
Module 1: XML Module
Score: 4.13 (Scale of 1 - 5 where 5.0 = Best)
Higher than 96% of all previous test takers.

Demonstrates a clear understanding of many advanced concepts
within this topic. Appears capable of mentoring others on most
projects in this area.

Module 2: XML Module
Score: 4.61 (Scale of 1 - 5 where 5.0 = Best)
Higher than 99% of all previous test takers.

Demonstrates understanding of most advanced concepts within the
subject area. Appears capable of mentoring others on the most
complex projects.

Weighted Average Score: 4.37
Total Test Time: 64 minutes, 24 seconds
Avg. time per question: 96 seconds

On a lighter note I saw the movie ISpy last night. This is the best Eddie Murphy in the last five years. ISpy was really good.

I met with Erik Hatcher at the Lone Star Software Symposium. We talked about what it would take to make a standard mappings for CMR (EJB CMR) with XDoclet. He has done a lot of work with the XDoclet Struts templates, and had some great ideas and insight on how to proceed.

I am teaching a XML, XML and Java (JAXP, DOM, SAX, JDOM and JAXB), and XSL course this week, and my attention is really focused on this course. Every night I am reading the course material for the next day. I am familiar with the topics already, and have used them in the real world. The trick is getting familiar with the slides, and material.

Thursday, November 07, 2002

I just bought the IBM WebSphere Bible. I stayed up last night reading it. I stopped reading when my eyes started to bleed. I did not see the solution to the exact problem I was having, but the book gave me plenty of ideas where to look. This book (so far) seems to be a really excellent resource for IBM WebSphere. My only complaint is that I did not buy this sooner.

I kept waking up in the middle of the night. I had some weird dreams about WebSphere. I don't remember any of them..... I only remember that I kept waking up and I was dreaming about work. I had no problems sleeping this AM. I got up at the crack of 9:30 AM.

Wednesday, November 06, 2002

Fun with XDoclet.
I tried to get a simple CMP bean to work with the new XDoclet
features. I used the new @ejb.persistence. I did not get any error messages, but
the CMP field mapings did not get generated in the resin.ejb file.

Then Ara of XDoclet fame told me: "That's because the resin module doesn't support ejb.persistence tags

So I set out to learn a few things about XDoclet with some help from Erik Hatcher...
I modified the resin CMP mapping template. It was really easy to change.
I had to modify the file resin_ejb.xdt file. I tested it and it works for simple CMPs.

Then Erik told me to make it backwards compatible with the old way, and I did.
Then I started to wonder about relationship mappings.....

I checked and I could not find any standard xdoclet cmr mappings either
documented or in the examples that ship with XDoclet.

This seems a little harder than just changing the template like Resin CMP
support. Any direction on how to attack this would be great! I am going to
pick Erik's brain this weekend, and read the XDoclet chapters in his Ant
book for prep.

My idea on how to manifest cmr support in the tags.....

Add an extra parameter to @ejb.relation called relation-column-name and target-relation-column-name (for unidirectional support).

This idea got shot down by Aslak Helles√ły []. He stated the following:

I would study the existing proprietary @tags and try to come up with a
common denominator. Don't forget that a foreign key is _not_ the same as a
foreign key _column_. Some foreign keys consist of multiple foreign key
columns, and the tags would have to account for that. This means that it's
*no* good to add key/foreign key attributes to the @ejb.relation tag (which
might seem intuitive at first). We need a separate tag for foreign keys, so
that it can be repeated once for each foreign key column in the foreign key
that corresponds to the relation. Picture:

+---+ +---+
| X | | Y |
+---+ +---+
|*a |\__/| m |
|*b |/ \| n |
+---+ +---+

This is one relation between table/EJB X and Y. It has one foreign key that
consists of 2 foreign key columns. -So we need 2 tags to describe the

Have a look at
html, more specifically the getPerson() method to see an example. You'll see
single-column foreign keys (which is the most common scenario). -But we
should support the less common scenario as described above.

Also look at a "picture" of the database: (click the screenshot).

As you see, both JBoss and WebLogic identify the foreign key columns by
declaring the column name. -But! JBoss uses the java bean property - in this
case "flightId" which corresponds to the getFlightId() method - to identify
the primary key column. A primary key column will _always_ have a
corresponding getter/java property in an EJB, so this is a safe assumption.
However, you might have a foreign key column for which there is no
corresponding getter/java property, so in order to identify the foreign key
column, you have to declare the database column name. WebLogic uses a
different approach, which is also safe: Use the rdbms column name for both
pk and fk.

Going for the JBoss "way", using java for pk columns and sql for fk columns
is the way to go IMO. It's possible to deduce the corresponding rdbms pk
column for an EJB pk field by looking at the @ejb.persistence tag, so the
WebLogic descriptors can still be generated correctly. Therefore my approach



Now a little challenge: How would you represent the non-common info? JBoss
has a fk-constraint="true|false" proprietary attribute on the current
@jboss.relation tag. Where do you specify that now? It would be best to
specify it on the same @rdbms.relation tag. It bloats the tag a little bit
with "proprietaryness" but it's better than adding a third tag. -And in the
case where you have a foreign key that consists of 2+ columns you'd have to
invent an additional name attribute so you could link the jboss info to the
correct @rdbms.relation tag. Therefore:



I.e. any non standard attributes are still on the same tag, but with a
prefix indicating that it's not standard. (By the way this is the same
approach we're probably going to use for proprietary EJB-QL extensions on
the @ejb.finder tag. There will be weblogic-ql and jboss-ql attributes.)

I also suggest you read my "Synergy" post on my (old) blog (in case you
aren't confused enough by now ;-)

Then I asked....
> Is anyone working on this? I think this should be added to this release in
> beta.

and he replied:
Nobody is working on this, and it would be great if you wanted to look at
it. It shouldn't be any more comlicated than what you already did for
@ejb.relation in Resin. -The hard part is coming up with the "right" tags,
and I have a good tummy-feeling that my proposal a few lines up is the way
to go.


BTW I just got permission to include the XDoclet stuff I wrote
for Mastering

Tomcat for the Xdoclet documentation. This is a tutorial on XDoclet mainly
geared toward Servlets, Custom Tags and Struts. Ara A. said he was
interested in including this as part of the docs. or at least link to it
from the docs. I need to change the examples to use dots instead of colons
and test it with the version of Xdoclet in beta, other than that....

I've been digging into IBM WSDK. It is fun stuff. I am wondering what the default user name and password is for the version of WebSphere that ships with the WSDK is.... I just bought the IBM WebSphere Bible. I'll let you know what I think of it.

I recently updated the Resin templates for XDoclet to work with the new @ejb.persistence tag for EJB CMP mappings to RDBMS. I submitted the change to the XDoclet list. Erik Hatcher walked me through how to make the changes. It was quite simple. I made the template backwards compatible to the older style of Resin CMP mapping to ease the migration. I have not had time to update the XDoclet EJB tutorial that I wrote to reflect the new sytle. Too little time in the day....

I am reading three new Struts books. Struts has been evolving quite a bit. I am really interested in learning about the Struts Validator. (Send me a good link if you have one...)