Archive for August, 2004

NFJS: Expert Panel 2

Sunday, August 8th, 2004

(RL: Ramnivas Laddad, TN: Ted Neward, DT: Dave Thomas, CJ: Christopher Judd, BG: Ben Galbraith, SH: Stuart Halloway)

(Hen: Usual disclaimer that my transcript may inadvertently contain crap)

Qn: 5.0, new bits. What’s not great?

RL: Generics has come late to the game. Hard to see if it will improve things, or just create more complications.

TN: Glad you said that.

DT: Java 1.5 is a ridiculous mess. 1.5 implementation is a dog’s dinner. Generics at best gets in the way, at worst creates a mess.

The solution should have been in 1.0. Autocasting.

The Metadata stuff is interesting; similar to templates in C++, people compete to get programs all in comments.

CJ: Asserts. Who is actually using them? (1 person in the audience it seems). [HEN: Point being that we’re not really even using one of the last ‘big new things’]

TN: Annotation hell. Too much in annotations. [Hen: Ted has a blog entry about annotations not being for configuration]. EJB3 is talking about how to override annotations.

SH: Aspects for annotations yet?

(unsure who. I recorded TH, so probably TN and not EH): Yes, there will be.

DT: Are you serious?!?

BG: Java 5 has some cool non-language stuff. Concurrency utils, sun’s VM improved, class sharing, memory prebaking, lots of Swing enhancements.

DT: What really sucks is that Java 1.5/5 is driven by marketing, not technical reasons. We’re chasing C#.

BG: Interestinly, the 2 architects of the change, Neil Gafter/Joshua Bloch are now gone {from Sun}.

Qn: What are you reading right now?

CJ: Mostly the other speakers books.

SH: Comics. I have dense tier books and lighter books. On the dense side, Paul Graham’s Lisp book should be waiting for me when I get home. On the lighter; “True names”. All of the little known (Hen: non-fiction educational) books by Asimov, a brilliant writer, very easy to open page anywhere.

BG: Just finished Douglas Adams, (Hen: Ben reads his books regularly). “Short history of nearly everything”, “Pragmatic Automation”, “Paradox of Complexity”, “Bible” as I’m curious of simularities between new and old testaments. Forbes is the only magazine I read as the Java community has no real magazine.

RL: Better, Faster Java. Rod Johnson’s J2EE book.

TN: Reviews of .Net books. Bob Bosheman(?)’s SQL Server 2005 book.
Java-wise, Better Faster, Project Automation.
3 volume history of the civil war (shelby foot?).
Comic books (X-Men).

DT: Not much reading, mainly working on the 2nd edition of the Ruby book. Also a typesetting book; TeX/LaTeX has gotten interesting again and reading the LaTeX companion.

Also, “Blue Horizons”, and a long-term correspondent from the Middle Easts notes (before the troubles) about Baghdad and other parts of the Middle East.

EH: AspectJ in Action. JSF by David Geary. ‘Kapra’?
“Dao Physics” and “Uncommon Wisdom”. A Tom Robbins book.

Qn: Testing GUI based code. How?

BG: Lots and lots of testers. Abbot + Costello exist in the Swing world.

TN: non-java specific, older windows stuff. JDK 1.3 Robot stuff.

CJ: Evaluated 5 Robot projects as a part of the recent book. The Robot stuff just doesn’t work right.

SH: Hard to generalise in a library for this.

Qn: Using cactus/httpunit/junit?

SH: Skip Cactus. HttpUnit covers its

NFJS: Second day

Sunday, August 8th, 2004

The second day began with an attempt to find WaffleHouse (I went to the conference with two professional eaters). We failed and had a Burger King breakfast.

It marvels me how burger joints can not serve burgers before 11 or 12 or whatever. It would seem to be a joke, if it wasn’t true.

Conference wise, the day began for me with Ben Galbraith’s Relax-NG/JDOM talk. I’ve touched on the JARV API with XmlWriter, though only for an XSD (acronym galore…) and had read lots on JDOM over the years but tend to use my own xml parser when hacking for myself (it’s more fun).

Still, Ben’s talk was well prepared and it got me interested in the JARV stuff in XmlWriter again. RelaxNG is a nice tech, and I need to do some work to make XmlWriter work better with it.

Nice bits…. JDOM ships with an XPath parser. Jaxen apparantly. It actually uses a SAX parser from the standard sax/dom stuff.

Something I came across a month ago seemed to fit with this talk for me; a sax+dom parser. Sax to a point, then get a dom snippet: “>saxdomix

I asked Ben why so much energy is spent on parsing XML and so little on outputting XML (XmlWriter and xmlenc seem to be the only focuses here). He mentioned that Stax (capitalization probably wrong), which is a new type of parser called a pull parser, also had an output api that reflected the input.

So something to look at (will list my ‘things to look at’ at the end of this blogging).

This was followed by a talk from Dave Thomas on Mock Objects. Similar to the Reflection talk the day before, I was aware of enough of this content beforehand that it lacked the voyage-of-discovery feeling that NFJS often brings. Major notes I made were that mockobjects.org has a paper called “endo-testing”, java.sql and jms are covered by MockObjects, Groovy is being used to write Unit Tests.

This was a major theme of the conference. Most of the speakers are looking forward to Groovy happening at some point in the future and becoming something we use as a major part of our Java lives.

Next we had an Expert Panel over lunch (transcript to come) and that was followed by Ramnivas Laddad’s double-session talk on AOP and AspectJ.

This was another major part of the conference. Aspects. Everyone seems to be looking to them as the next big thing. The XmlWriter hacking led me to want to sit at a laptop rather than merely listen and so before Ramnivas’ talk I downloaded AspectJ. While he talked I multi-tasked and played with aspects.

It’s very easy to get things working, and you can start doing some pretty fun things. Ramnivas’ talk was very good too. Despite much hyping, it was still a pretty small crowd. I also downloaded JAD and decompiled the compiled-aspected code. Interesting stuff again.

My favourite was how easy it is to do Mixin’s in AspectJ. I’m unsure why people aren’t mentioning this more, there’s probably something important I’m unaware of:

An interface I want to treat as a mixin:

package library;

// oh for mixins

public interface Named {

    public void setName(String s);
    public String getName();
}

A class I want to mix into:

package library;

public class Author implements Named {

    public String toString() { return getName(); }
}

Bit of code to do things with it. Creator is a simple factory class.

package play;

import library.*;
import system.*;

public class Play {

    public static void main(String[] args) {
         Book b = Creator.createBook(”bible”,
          ”various religious sandals”, “1″);
         System.err.println(b.toString());
     }
}

An aspect that mixin’s the desired code:

package playaspect;

import library.Named;

public aspect PlayAspect5 {

     // mixin for Named
     private String Named.name;

     public String Named.getName() {
         return name;
     }

     public void Named.setName(String s) {
         name = s;
     }

}

Doing is a cool way to learn, although it’s probably a bit annoying for the speaker.

All in all, aspects were the highlight of the day for me. Dinner and beer at Outback followed.

NFJS: Expert Panel 1

Saturday, August 7th, 2004

We’re going to have three of these it seems. Bunch of old farts at a table with idiots asking half-arsed questions.

Erm. Well that’s what Hani would say anyway. These are often a little stunted; the NFJS people need to make sure they seed the crowd with local user-group members and prethought questions, especially for the first panel. Then again, Chris from the local CinJUG asked a couple early on, so maybe they did :)

(BT=Bruce Tate, SH=Stu Halloway, DT=Dave Thomas, EH=Erik Hatcher, DG=David Geary)

This transcript is poorly recorded, so my apologies for any misrepresentations or mistakes I introduce. Also I’m obviously summarising to save on typing in Ben Galbraith’s Relax-NG session :)

Qn: Which O/R Mapping will win?

BT: EJB3 will be late. JDO2 looks good, I give it 18 months to get there.

Qn: Comparison between Spring and Hivemind?

BT: Different problem-sets. Hivemind: Attachment points to Tapestry, more dynamic config than most others; better runtime changing. Spring: Lots of momentum.

EH: Hivemind separate from Tapestry (correcting BT).

Qn: Which AOP will win?

SH: Not out yet. AspectJ has best shot currently. Groovy more important.

DT: Are aspects Java? Is hacking it onto Java the right thing, or should we have a new language(something) on the JVM. JVM is an attractive deployment platform, not just for Java.

Qn: Why are aspects big now when been out for so long?

BT: Tech takes small steps. DCOM was small OO step for MS. Aspects have just been taking small steps.

DT: We don’t yet know how to design with aspects. 30 years intuition, but not much experience, we still use boring logging examples.

SH: MDA?

DT: AspectCobol.

Qn: (me, so didn’t record enough of this, my question was something like: ) We keep hearing of aspects as the next big thing, but no one is sure. What else is out there and could win instead?

SH: More client stuff, less web. Intellectual property rights. Resurgence of dynamic language capabilities, and a return to ad-hoc languages.

DT: Java will be the last general purpose language. Why? Cobol had db, structures, business things. Java has none of these (Hen: I suspect I don’t understand Cobol to explain this properly). Future languages will go back to more specific things (Hen: Unsure how this includes Ruby, Dave’s favourite language).

BT: Java unique in history as 1 true language right now. Aspects will be around in the future; abused but then will become a powerful part of future languages.

SH: Whatever wins will run on the Java platform, maybe .Net too. This is why I’m hopeful of Groovy.

DG: Smalltalk!

Qn: What aspects of a dynamic language give it advantage over java?

DT: Dynamic not for everyone. Focus is on toolkits/langs/frameworks, which is bad. Should be on programmer. Some programmer’s find dynamic nicer and get 2->50 times improvements. So can be ahead of the curve.

DG: Static type checkingis way over-rated.

EH: Groovy: closures and continuation. Dynamic is bad for IDEs though, much harder to have an Eclipse/IDEA. I’m too addicted to Intellij right now.

SH: Want to build in dumbest way possible. Want idioms to grow as things becomes more complex. Would like to return type from new XXX(). Also I want to have the ability to have as much type checking as you want. So a flag to increase/decrease dynamic/static checking.

BT: Being able to just type out and evaluate an expression; and being able to undo some of the worst things in Java, like CheckExceptions.

SH: Reverse side. In Jaava we take a tools superstructure approach to things, this is what is really competing with scripting.

Qn: What should a programmer do to improve themselves? (asked by a Cobol programmer migrating to Java).

BT: Find a mentor.

SH: Doing. Could read and think I understand, but wouldn’t. Writing things outside of my skillset in a new language is the best way. Talking with others, having a way to step away from problems, for example I run when I hit a problem. Find a job where people respect this.

DT: “Herding racehorses; racing sheep” talk. Research from 60’s about how to become an expert in a talk I give (though unfortunately not this weekend).

Suggested a 3 page article to IEEE with 2 blank pages and a third page with just “practice” on it. It’s hard to not fall into the “Everquest syndrome” of repeating things (ie make 10,000 swords) to gain experience. Which is not really experience, just repitition.

Treat your individual experience like an investment portfolio. Have feedback to show when things are working.

EH: 1) Come here. 2) Open-source; learn lots, both good and bad code. 3) Mentoring. Be around people you want to be like.

DT: Open-source teaches ability to read code. Being able to tell apart is useful. (From Ward Cunningham): Put 10,000 line Java program into Word; zoom to 10% view, look for the patterns. You can tell good and bad from there.

DG: Don’t try to climb the corporate ladder. Point career to where you can learn the most. Aquire enough knowledge and the rest follows.

(Emphasing question; Cobol to Java)

DT: Thinking the wrong way. A good Cobol person has a lot to teach Java people and we’ve lost track of that.

BT: David: I disagre. Following corporate ladder is important. Easiest two ways to lose a programmer are 1) feel not appreciated, 2) not challenged.

DG: Where can I go next to learn the most, not where can I go to get the best promotion.

BT: One thing in common for the 5 of us. Personal passion.

Qn: How do you keep up with new tools?

DT: 2 answers. Most professions (doctors, lawyers etc) the individuals study outside of their working hours. IT moves quicker than most; we have to study outside of work.

Second answer. Ask, why do you care? You can be far more productive on one thing. Staying behind the leading edge is best as most things beyond die.

SH: “Java’s Cover” by Paul Graham. Good article to read on judging a tech by its cover. Wait for things to hit your radar a few times.

DG: Good idea to learn a little about a lot. Helps you see the landscape.

EH: All I do is read blogs and goto conferences :)

DT: Investment portfolio. Diversify. Read about .Net.

BT: Find people you trust. Build relationships. Build own skills to ‘offer’ in relationships.

Qn: How do you pick an IDE for Java

DT: Emacs
SH: Intellij

SH: Embaressment of riches in Java now. MS no longer the leader of the field. AspectJ really only usable in Eclipse.

EH: Lucene coder creates superb code in just Emacs.

DT: Choose a tool and learn it.

SH: But don’t stop and learn emacs. You’ve not got time :)

Qn: Dynamic/Agile dev philo. When do you worry about maintainability?

BT: Testing philosophy. We’ve lost too much of the RUP artifacts and need to remember those somewhat when using Agility.

DT: All we do is maintainability. New code immediately becomes maintenance after the first draft.

DG: Dynamic language. You have to have discipline.

Qn: Where in user’s experience are things going over the next few years? Still in the browser? How do we improve usability?

SH: We know how to get good usability (look at Intuit). It’s expensive.

DT: Console interfaces. Kids use their thumbs and play consoles; computers will be that way. Within 5 years we’ll mainly be programming mobile devices.

DG: Hopes something comes along to beat clunky HTML. (Hen: Then he mentioned Java Desktop Network Components).

DT: Brwoser delivery. Look at GMail.

S.Ohio/N. Kentucky NFJS

Saturday, August 7th, 2004

First day of the annual NFJS over.

It’s moved from just north-east of Cincinatti, to south of it in Hebron, KY. This may sound like the middle of nowhere, and truthfully it is, but it’s also where the ‘Cincinatti’ aka ‘North Kentucky’ airport is located, so a pretty good place for the organisers I suspect. Also makes it nicer for we few KY-located attendees.

I’ve come up here with Eric and Mike from Genscape, their first NFJS, and it’s good to see that they’re having the same reaction to NFJS I had last year. It really is a superb eye-opener, especially when you spend the first day bouncing back and forth between Stu Halloway and Dave Thomas. I’ve got to admit that for the return attendee it is a bit of an anti-climax, entirely due to how good it is the first time. You can never repeat that first time :)

Scott Davis got the day into order with a quick intro. No Jay Zimmerman, the man with the plan behind NFJS, this time as he’s taking a well earned break. Scott’s also going to be giving a talk on GIS on the last day.

I started the morning with Stu Halloway’s Reflection talk. This is a lead into his Metaprogramming talk (given twice, I’m opting for the Sunday one) and covers the world of reflection pretty well. I’ve messed enough with this area (BeanUtils usage/coding) that a lot of it was stuff I knew, so I really should have chosen a different talk. Still, hearing Stu’s talks are always an object lesson in how to hold an audience’s interest and I happily listened along. I like NFJS because I can also sit and just have ideas, or remind myself of things I need to get involved in (Commons Reflection? Code generation using old ideas of mine and velocity etc).

Next up was Dave Thomas’ State Machines talk. I’ve blundered on code that creates state machines without really having an awareness of what the deal is. Dave quickly covered the subject, showed bad ways to do them (at least the way I use is the best of the bad ways) and then showed how the pro’s do it. Wonderful talk with very low attendance (10 of us?). No buzzwords, but probably one of the most educational of all the talks on offer.

Lastly, Intro to Spring by Bruce Tate. A hard job for Bruce, following Dave and Stu and something that he (and most people I suspect) is not entirely able to live up to. Bruce covered Spring from a high level, dipping occasionally into the murk of implementation and gave us all a general idea of what it is (for me, I’ve defined it as “Aspects w/ Avalon + Services). I tend to get the feeling that Bruce is a good scout to keep an eye on. The stuff he gets fervent about is worth keeping your eye on.

Next…dinner and the expert panel.

NFJS: Blog list

Saturday, August 7th, 2004

A list of the blogs for the speakers at this NFJS:

Stuart Halloway

Erik Hatcher

Dave Thomas

Ted Neward

Christopher Judd

Ben Galbraith

Probably others I’ll add as I come across them.

Added:

David Geary

Jim Weirich (not a speaker, but spoke up a lot)

Scott Davis