finally someone agrees with me...late night. It was bound to happen sooner or later.
Perhaps the root of the problem is a bad case of procrastination
. Anyway thanks for the good, timely advice. I've been at the coffee shop 5 times in the last week for my late night work sessions.
About the author
Rick Hightower is CTO of Mammatus and is an expert on Java and Cloud Computing
Monday, July 28, 2003
Friday, July 25, 2003
Erik Hatcher and Andy Barton are awesome.
Erik Hatcher is awesome. He just reviewed a chapter I wrote on the Tiles Framework. I swear Erik is the busiest guy in software development, yet always seems to take time to help others.
It was a long chapter, about 40 pages, and he had comments all the way to the end of the chapter. He really took the time to review it.
Andy Barton just reviewed my Tiles chapter too. You Rock Andy! Thanks!
It was a long chapter, about 40 pages, and he had comments all the way to the end of the chapter. He really took the time to review it.
Andy Barton just reviewed my Tiles chapter too. You Rock Andy! Thanks!
Tuesday, July 22, 2003
Driven by Demons
I just read this quote from Erik's blog.
From http://www.washingtonpost.com/wp-dyn/articles/A28471-2003Jun24.html:
"All writers are vain, selfish and lazy, and at the very bottom of their motives there lies a mystery," he wrote in 1947. "Writing a book is a horrible, exhausting struggle, like a long bout of some painful illness. One would never undertake such a thing if one were not driven on by some demon whom one can neither resist nor understand."
Wow... I could not agree more. (Except the lazy part....)
Most great authors were drunkards or druggies. I either have to quit writing or don an addiction. I guess I never be great.
Writing is a mental mind screw for sure. It is addictive and painful. Every time I write, I always wonder, will this be read, will this be liked, will it be helpful.... my usual self confidense gives way to doubt and fear of critisism.
July 23rd
11:35 PM
It's my third night at the coffee shop. I've reached a new level of sleep deprived creativity. Did I mention that I am tired? I am considering going home to sleep. I got the monkey off my back by finishing the thing I needed to finish last night. Now I need to work on the next thing.
2:00 AM
I am out of here. Can't focus. Can't continue. Caffiene not working....
From http://www.washingtonpost.com/wp-dyn/articles/A28471-2003Jun24.html:
"All writers are vain, selfish and lazy, and at the very bottom of their motives there lies a mystery," he wrote in 1947. "Writing a book is a horrible, exhausting struggle, like a long bout of some painful illness. One would never undertake such a thing if one were not driven on by some demon whom one can neither resist nor understand."
Wow... I could not agree more. (Except the lazy part....)
Most great authors were drunkards or druggies. I either have to quit writing or don an addiction. I guess I never be great.
Writing is a mental mind screw for sure. It is addictive and painful. Every time I write, I always wonder, will this be read, will this be liked, will it be helpful.... my usual self confidense gives way to doubt and fear of critisism.
July 23rd
11:35 PM
It's my third night at the coffee shop. I've reached a new level of sleep deprived creativity. Did I mention that I am tired? I am considering going home to sleep. I got the monkey off my back by finishing the thing I needed to finish last night. Now I need to work on the next thing.
2:00 AM
I am out of here. Can't focus. Can't continue. Caffiene not working....
Catching up after my "praternity leave"
11:36 AM
I am at the all night coffee shop again (it has been a month or so since I've been here). I seem to get the most work done from 9 PM to 3 AM. No one to bother me. No phone. No radio. No TV. No kids. No spouse. No email. No connection at the coffee shop means I wont cruise the Internet, read other people's blog, read technical articles, read email, read news groups, read postings, etc. and mistake it for getting something done. How do you keep up with it all?
Plenty of caffiene and my laptop means I will get a lot of work done tonight and this morning. I've already got a lot done. I can't wait to finish this project.
I wonder how much productivety is lost due to the Internet. I realize it increases the flow of information, but sometimes it seems like an overflow of information. I love and hate it at the same time. It is useful and a big distraction. God's gift and Satan's curse.
Blogs are funny, any tin horn technical dicator can pontifcate an opinion no matter how bad or how stupid (myself included of course). I love and hate blogs. I read some blogs this afternoon. I wish all blogs had a reply button. Given my tendency for distraction maybe its better that they don't. Technical pontification is the scurge of all that is good about blogs. On the other hand, I value blogs ability to give context to technology by getting people's opinions about various technolgies.
I now have an office in my garage. It has four walls and an air conditioner. (Air conditioner is a must in Arizona not a luxury.) All I need now is a espresso machine, small fridge (for milk), and a timer to turn off the Internet from 9 PM to 3 AM, and I will never go to the cofffee shop again.
Here I am writing my blog in notepad, because I am not connected. Apparently, if you try hard enough distractions can be found without the Internet. Excuse me while I go read the newspaper. LOL
I'll wrap this blog entry up at the end of the night.
.....
3:15 AM
The crowded coffee shop, now has just two customers left. The card players, socialites, college students have all came and gone. I didn't get as far as I wanted to (about 1/2 as far to be exact), but the project is moving in the right direction. I had to switch to green tea and bottled water after my first vanilla latte lest I spend more time in the restroom than writing. I am going home to get some shut eye.
Yes I realize email, phones and communication with the outside world is important, but sometimes all you need is a laptop and some peace and quiet.
I am at the all night coffee shop again (it has been a month or so since I've been here). I seem to get the most work done from 9 PM to 3 AM. No one to bother me. No phone. No radio. No TV. No kids. No spouse. No email. No connection at the coffee shop means I wont cruise the Internet, read other people's blog, read technical articles, read email, read news groups, read postings, etc. and mistake it for getting something done. How do you keep up with it all?
Plenty of caffiene and my laptop means I will get a lot of work done tonight and this morning. I've already got a lot done. I can't wait to finish this project.
I wonder how much productivety is lost due to the Internet. I realize it increases the flow of information, but sometimes it seems like an overflow of information. I love and hate it at the same time. It is useful and a big distraction. God's gift and Satan's curse.
Blogs are funny, any tin horn technical dicator can pontifcate an opinion no matter how bad or how stupid (myself included of course). I love and hate blogs. I read some blogs this afternoon. I wish all blogs had a reply button. Given my tendency for distraction maybe its better that they don't. Technical pontification is the scurge of all that is good about blogs. On the other hand, I value blogs ability to give context to technology by getting people's opinions about various technolgies.
I now have an office in my garage. It has four walls and an air conditioner. (Air conditioner is a must in Arizona not a luxury.) All I need now is a espresso machine, small fridge (for milk), and a timer to turn off the Internet from 9 PM to 3 AM, and I will never go to the cofffee shop again.
Here I am writing my blog in notepad, because I am not connected. Apparently, if you try hard enough distractions can be found without the Internet. Excuse me while I go read the newspaper. LOL
I'll wrap this blog entry up at the end of the night.
.....
3:15 AM
The crowded coffee shop, now has just two customers left. The card players, socialites, college students have all came and gone. I didn't get as far as I wanted to (about 1/2 as far to be exact), but the project is moving in the right direction. I had to switch to green tea and bottled water after my first vanilla latte lest I spend more time in the restroom than writing. I am going home to get some shut eye.
Yes I realize email, phones and communication with the outside world is important, but sometimes all you need is a laptop and some peace and quiet.
Monday, July 21, 2003
EJB CMP CMR
Jason Carreira writes in his blog....
" I'm thinking of Entity EJBs here, but the same is true to some extent with JMS and JDO, where all of the really useful pieces for O/R mapping are optional. I accidentally insulted Rick Hightower Thursday night when he was talking about successfully using Entity Beans in a project by saying that his domain model must have been simple…. Sorry about that. What I meant was that a reasonably sized project couldn't use Entity beans successfully without using vendor extensions, and in fact he was. "
First, it was on purpose. :)
Second, I was not offended my skin is pretty thick.
Third, the same arguments can be made against JDO or any other OR mapping solution.
Fourth, I have ported EJB CMP CMR applications to more than one vendors solution.
Fifth, At the time EJB CMP CMR was available, and JDO was not.
Sixth, I am going to try Hibernate on my next green field application.
Jason put your picture in your blog. I can't remember who was who.
" I'm thinking of Entity EJBs here, but the same is true to some extent with JMS and JDO, where all of the really useful pieces for O/R mapping are optional. I accidentally insulted Rick Hightower Thursday night when he was talking about successfully using Entity Beans in a project by saying that his domain model must have been simple…. Sorry about that. What I meant was that a reasonably sized project couldn't use Entity beans successfully without using vendor extensions, and in fact he was. "
First, it was on purpose. :)
Second, I was not offended my skin is pretty thick.
Third, the same arguments can be made against JDO or any other OR mapping solution.
Fourth, I have ported EJB CMP CMR applications to more than one vendors solution.
Fifth, At the time EJB CMP CMR was available, and JDO was not.
Sixth, I am going to try Hibernate on my next green field application.
Jason put your picture in your blog. I can't remember who was who.
Wednesday, July 16, 2003
The reason I changed the title of my blog....
" Announcing Rick Hightower 2.0......
His name is Richard Matthew Lucas Hightower Jr. We are going to call him Lucas.....
(I know... I know.... "Luke I am your father..... Use the force Luke")
Wednesday, July 09, 2003
What skills are marketable
I did a search of Dice to see which skills got the most hits.....
Java 3365
Perl 989
Python 58
Ruby 5
C 2659
C# 500
Struts 162
WebWork 3
WebLogic 554
WebSphere 770
Tomcat 132
Resin 7
Orion 1
SQL 4082
Oracle 3671
JBoss 43
TogetherSoft 20
Eclipse 17
JBuilder 66
WSAD 67
Web Services 1388
JSP 673
ASP.Net 12
EJB 3365
Velocity 37
Ant 74
XDoclet 3
SOAP 207
PORTAL 761
Tapestry 6
The surprise here is how little ASP.Net gets compared to JSP. Now this is not scientific (as if)..... just because Struts gets more hits than WebWork does not mean it is better.... it just means it is a more marketable skill (I suppose). EJB (bitter or not) is still very marketable (more so than JSP).
Java 3365
Perl 989
Python 58
Ruby 5
C 2659
C# 500
Struts 162
WebWork 3
WebLogic 554
WebSphere 770
Tomcat 132
Resin 7
Orion 1
SQL 4082
Oracle 3671
JBoss 43
TogetherSoft 20
Eclipse 17
JBuilder 66
WSAD 67
Web Services 1388
JSP 673
ASP.Net 12
EJB 3365
Velocity 37
Ant 74
XDoclet 3
SOAP 207
PORTAL 761
Tapestry 6
The surprise here is how little ASP.Net gets compared to JSP. Now this is not scientific (as if)..... just because Struts gets more hits than WebWork does not mean it is better.... it just means it is a more marketable skill (I suppose). EJB (bitter or not) is still very marketable (more so than JSP).
Monday, July 07, 2003
Bitter EJB and extreme sports
I've been reading Bitter EJB in my spare time.
Amazon.com: Books: Bitter EJB
This is a very thought provoking book. I am about 1/2 done with it. I can already recommend it to all those that will be doing or are thinking about doing EJB development.
Every chapter starts with a short story about the author(s) endeavors in extreme sports.
At first, I found the short stories distracting. As I continued to read the book, I found that they are a nice break from the material that are easily ignored if I choose not to read them.
I am not much of an extreme sports advocate, if I wrote a book like this.... the chapters would start more like this....
"It was a Sunday night, and it was my turn to do the dishes. I know I had to mentally prepare.... "
or
"I was sitting on the couch watching TV. I wanted to change the channel, but this would require looking for the remote... I ended up watching three hours of infomercials instead of finding the remote."
Actually, I did go snowboarding once.... my posterior hurts just thinking about it. My idea of an extreme sport is walking around the block with my kids or playing wiffle ball with my son and daughter. After reading this book, I just might put air into my mountain bike tires and ride around.
Amazon.com: Books: Bitter EJB
This is a very thought provoking book. I am about 1/2 done with it. I can already recommend it to all those that will be doing or are thinking about doing EJB development.
Every chapter starts with a short story about the author(s) endeavors in extreme sports.
At first, I found the short stories distracting. As I continued to read the book, I found that they are a nice break from the material that are easily ignored if I choose not to read them.
I am not much of an extreme sports advocate, if I wrote a book like this.... the chapters would start more like this....
"It was a Sunday night, and it was my turn to do the dishes. I know I had to mentally prepare.... "
or
"I was sitting on the couch watching TV. I wanted to change the channel, but this would require looking for the remote... I ended up watching three hours of infomercials instead of finding the remote."
Actually, I did go snowboarding once.... my posterior hurts just thinking about it. My idea of an extreme sport is walking around the block with my kids or playing wiffle ball with my son and daughter. After reading this book, I just might put air into my mountain bike tires and ride around.
Wednesday, July 02, 2003
Observation about Tiles and sharing attributes from tile layout to tile
Observation about Tiles.
When inserting one tile into a page layout tile, The tile that is getting inserted into the page layout tile does not share the variables of the page layout tile scope. They each get there own tile scope.
Thus if the page layout tile is passed a title attribute that title attribute is not passed to the tile (e.g., header.jsp) that dispalys the header. In order to pass the variable to the header.jsp. I must use the tiles:put.
This is because the tiles:insert creates a new component context for the inserted tile (I checked the code and create a debug util to prove this). Thus there is a one to one relationship between component contexts and tiles. (Component context = tile scope for the tile).
The tiles:put allows me to put variable from various scopes if I leave the scope blank it searches all scopes including tile scope (i.e., component context).
Thus to move a variable from a page layout to a tile I would do this:
<tiles:insert attribute="header" ignore="true">
<tiles:put name="title" beanName="title"/>
</tiles:insert>
When inserting one tile into a page layout tile, The tile that is getting inserted into the page layout tile does not share the variables of the page layout tile scope. They each get there own tile scope.
Thus if the page layout tile is passed a title attribute that title attribute is not passed to the tile (e.g., header.jsp) that dispalys the header. In order to pass the variable to the header.jsp. I must use the tiles:put.
This is because the tiles:insert creates a new component context for the inserted tile (I checked the code and create a debug util to prove this). Thus there is a one to one relationship between component contexts and tiles. (Component context = tile scope for the tile).
The tiles:put allows me to put variable from various scopes if I leave the scope blank it searches all scopes including tile scope (i.e., component context).
Thus to move a variable from a page layout to a tile I would do this:
<tiles:insert attribute="header" ignore="true">
<tiles:put name="title" beanName="title"/>
</tiles:insert>
Google Toolbar Installed
I just installed the Google Toolbar... now I can blog about sites that I visit... even quicker.
I just installed the Google Toolbar... now I can blog about sites that I visit... even quicker.
Debugging Util for Struts apps
I've been having this nasty little problem. I created a utility to print out various scopes in my app, e.g., tile, page, session, request, application.
I think I have written this same utility several times over the years.....
Here it is..... (maybe I wont loose it this time)....
/*
* Created on Jul 2, 2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package util;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspException;
import org.apache.struts.taglib.tiles.ComponentConstants;
import org.apache.struts.tiles.ComponentContext;
import java.io.IOException;
/**
* @author rhightower
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class DebugUtil {
public static void listScope(PageContext context, int scope) throws JspException, IOException{
JspWriter out = context.getOut();
switch (scope){
case PageContext.PAGE_SCOPE :
out.println("--- Page Attributes ---
");
break;
case PageContext.REQUEST_SCOPE :
out.println("--- Request Attributes ---
");
break;
case PageContext.SESSION_SCOPE :
out.println("--- SESSION Attributes ---
");
break;
case PageContext.APPLICATION_SCOPE :
out.println("--- APPLICATION Attributes ---
");
break;
}
Enumeration enums = context.getAttributeNamesInScope(scope);
while(enums.hasMoreElements()){
String name = (String)enums.nextElement();
Object value = context.getAttribute(name, scope);
printNameValueType(name, value, out);
}
out.println("---------------------------
");
}
private static void printNameValueType(String name, Object value, JspWriter out) throws IOException{
out.println(name + " = " + value
+ " type (" + value.getClass().getName()+ ") " +
"
");
}
public static void listParameters(PageContext context)throws JspException, IOException{
JspWriter out = context.getOut();
Map map = context.getRequest().getParameterMap();
Iterator iter = map.entrySet().iterator();
out.println("--- Request Parameters ---
");
while (iter.hasNext()){
Map.Entry next = (Map.Entry) iter.next();
if (next.getValue() instanceof String){
out.println(next.getKey() + " = " + next.getValue() + "
");
}
else if (next.getValue() instanceof String[]){
StringBuffer buf = new StringBuffer(100);
String[] values = (String[])next.getValue();
buf.append("{");
for (int index = 0; index < values.length; index++){
buf.append(values[index]);
buf.append(",");
}
buf.append("}");
out.println(next.getKey() + " = " + buf.toString() + "
");
}
}
out.println("--------------------------
");
}
public static void listTileScope(PageContext context) throws JspException, IOException {
JspWriter out = context.getOut();
ComponentContext compContext = (ComponentContext)context.getAttribute( ComponentConstants.COMPONENT_CONTEXT, PageContext.REQUEST_SCOPE);
out.println("--- TILE Attributes ---
");
if (compContext!=null){
Iterator iter = compContext.getAttributeNames();
while(iter.hasNext()){
String name = (String)iter.next();
Object value = compContext.getAttribute(name);
printNameValueType(name, value, out);
}
}else{
out.println("--- TILE Attributes NOT FOUND ---
");
}
out.println("---------------------------
");
}
public static void debug(PageContext context) throws JspException, IOException{
JspWriter out = context.getOut();
out.println("
--------------------------
");
out.println("---------D----------------
");
out.println("----------E---------------
");
out.println("-----------B--------------
");
out.println("------------U-------------
");
out.println("-------------G------------
");
out.println("--------------------------
");
listTileScope(context);
listScope(context, PageContext.PAGE_SCOPE);
listScope(context, PageContext.REQUEST_SCOPE);
listScope(context, PageContext.SESSION_SCOPE);
listScope(context, PageContext.APPLICATION_SCOPE);
listParameters(context);
}
}
I think I have written this same utility several times over the years.....
Here it is..... (maybe I wont loose it this time)....
/*
* Created on Jul 2, 2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package util;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspException;
import org.apache.struts.taglib.tiles.ComponentConstants;
import org.apache.struts.tiles.ComponentContext;
import java.io.IOException;
/**
* @author rhightower
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class DebugUtil {
public static void listScope(PageContext context, int scope) throws JspException, IOException{
JspWriter out = context.getOut();
switch (scope){
case PageContext.PAGE_SCOPE :
out.println("--- Page Attributes ---
");
break;
case PageContext.REQUEST_SCOPE :
out.println("--- Request Attributes ---
");
break;
case PageContext.SESSION_SCOPE :
out.println("--- SESSION Attributes ---
");
break;
case PageContext.APPLICATION_SCOPE :
out.println("--- APPLICATION Attributes ---
");
break;
}
Enumeration enums = context.getAttributeNamesInScope(scope);
while(enums.hasMoreElements()){
String name = (String)enums.nextElement();
Object value = context.getAttribute(name, scope);
printNameValueType(name, value, out);
}
out.println("---------------------------
");
}
private static void printNameValueType(String name, Object value, JspWriter out) throws IOException{
out.println(name + " = " + value
+ " type (" + value.getClass().getName()+ ") " +
"
");
}
public static void listParameters(PageContext context)throws JspException, IOException{
JspWriter out = context.getOut();
Map map = context.getRequest().getParameterMap();
Iterator iter = map.entrySet().iterator();
out.println("--- Request Parameters ---
");
while (iter.hasNext()){
Map.Entry next = (Map.Entry) iter.next();
if (next.getValue() instanceof String){
out.println(next.getKey() + " = " + next.getValue() + "
");
}
else if (next.getValue() instanceof String[]){
StringBuffer buf = new StringBuffer(100);
String[] values = (String[])next.getValue();
buf.append("{");
for (int index = 0; index < values.length; index++){
buf.append(values[index]);
buf.append(",");
}
buf.append("}");
out.println(next.getKey() + " = " + buf.toString() + "
");
}
}
out.println("--------------------------
");
}
public static void listTileScope(PageContext context) throws JspException, IOException {
JspWriter out = context.getOut();
ComponentContext compContext = (ComponentContext)context.getAttribute( ComponentConstants.COMPONENT_CONTEXT, PageContext.REQUEST_SCOPE);
out.println("--- TILE Attributes ---
");
if (compContext!=null){
Iterator iter = compContext.getAttributeNames();
while(iter.hasNext()){
String name = (String)iter.next();
Object value = compContext.getAttribute(name);
printNameValueType(name, value, out);
}
}else{
out.println("--- TILE Attributes NOT FOUND ---
");
}
out.println("---------------------------
");
}
public static void debug(PageContext context) throws JspException, IOException{
JspWriter out = context.getOut();
out.println("
--------------------------
");
out.println("---------D----------------
");
out.println("----------E---------------
");
out.println("-----------B--------------
");
out.println("------------U-------------
");
out.println("-------------G------------
");
out.println("--------------------------
");
listTileScope(context);
listScope(context, PageContext.PAGE_SCOPE);
listScope(context, PageContext.REQUEST_SCOPE);
listScope(context, PageContext.SESSION_SCOPE);
listScope(context, PageContext.APPLICATION_SCOPE);
listParameters(context);
}
}
Eratta for XDoclet tutorial
Thanks for lanuching the new tutorial....
I noticed some errors as follows: (If you send me the latest source, I can make the changes.)
FIRST ERROR:
On the about this tutorial, What is XDoclet page (page 1 of 4)
3rd paragraph last sentence.... it states
This tutorial focuses on using existing templates that ship with XDoclet.
This is incorrect.... it should read as follows
Unlike the last tutorial on XDoclet this tutorial does not focus on using existing templates that ship with XDoclet. Instead in this tutorial, you will create your own custom templates and XDoclet subtasks.
2ND ERROR
Simple template to introduce XDoclet: Servlet XDoclet example (page 1 of 1)
Servlet XDoclet example
should read
Simple XDoclet tempalte example
3RD ERROR
First Template: XDoclet Architecture : Servet XDoclet example
"Servlet XDoclet example" should read "Running Simple XDoclet template example"
4th ERROR
Page 3 of 7 Under Case Study 2nd try: Subclass xdoclet.XmlSubTask
The {0} will be replaces with the name of the current class. Therefore you are going to use a new template that just outputs one class at a time.
should read
The {0} will be replaced with the name of the current class. Therefore you are going to use a new template that just outputs one class at a time.
I noticed some errors as follows: (If you send me the latest source, I can make the changes.)
FIRST ERROR:
On the about this tutorial, What is XDoclet page (page 1 of 4)
3rd paragraph last sentence.... it states
This tutorial focuses on using existing templates that ship with XDoclet.
This is incorrect.... it should read as follows
Unlike the last tutorial on XDoclet this tutorial does not focus on using existing templates that ship with XDoclet. Instead in this tutorial, you will create your own custom templates and XDoclet subtasks.
2ND ERROR
Simple template to introduce XDoclet: Servlet XDoclet example (page 1 of 1)
Servlet XDoclet example
should read
Simple XDoclet tempalte example
3RD ERROR
First Template: XDoclet Architecture : Servet XDoclet example
"Servlet XDoclet example" should read "Running Simple XDoclet template example"
4th ERROR
Page 3 of 7 Under Case Study 2nd try: Subclass xdoclet.XmlSubTask
The {0} will be replaces with the name of the current class. Therefore you are going to use a new template that just outputs one class at a time.
should read
The {0} will be replaced with the name of the current class. Therefore you are going to use a new template that just outputs one class at a time.
Developing your own templates and subtask with XDoclet
Developing your own templates and subtask with XDoclet
XDoclet tutorial: Creating your own templates and subtask
This tutorial shows J2EE developers how to use XDoclet to write their own custom templates and subtask. It steps you through three examples. Unlike the last tutorial on XDoclet this tutorial does not focus on using existing templates that ship with XDoclet. Instead in this tutorial, you will create your own custom templates and a XDoclet subtask.
The first example is a very simple example to show how to use XDoclet. The second example shows how to create an Axis Web Service deployment descriptor (WSDD) with just the templating constructs, and how to run this with Ant. The third example show developers how to create their own custom subtask, and refactors the template fore the WSDD with best practices in mind. By the end of this tutorial you will be able to write your own custom XDoclet templates and subtasks. And you will understand when to pass something as an attribute of a subtask and when to put the parameter as a XJavaDoc tag in your source.
----------------------------------
This tutorial shows J2EE developers how to use XDoclet to write their own custom templates and subtask. It steps you through three examples.
The first example is a very simple example to show how to use XDoclet. The second example shows how to create an Axis Web Service deployment descriptor with just the templating constructs, and how to run this with Ant. The third example show developers how to create their own custom subtask, and refactors the template with best practices in mind. By the end of this tutorial you will be able to write your own custom templates and subtasks. And you will understand when to pass something as an attribute of a subtask and when to put the parameter as a XJavaDoc tag in your source.
XDoclet enables simplified continuous integration and refactoring with component-oriented development using attribute-oriented programming. XDoclet allows you to radically reduce development time, by generating deployment descriptors and support code, allowing you to focus on application logic code. Not only can you use the plethora of templates that ship with XDoclet, but you can create your own. In addition you can create a subtask to pass in custom configuration parameters that you do not want to show up in the source files.
XDoclet facilitates automated deployment descriptor generation. XDoclet, a code generation utility, allows you to tack on metadata to language features like classes, methods, and fields using what looks like JavaDoc tags. Then it uses that extra metadata to generate related files like deployment descriptor and source code. This concept has been coined attribute-oriented programming (not to be confused with aspect-oriented programming, the other AOP).
XDoclet generates these related files by parsing your source files similar to the way the JavaDoc engine parses your source to create JavaDoc documentation. In fact, earlier versions of XDoclet relied on JavaDoc. XDoclet, like JavaDoc, not only has access to these extra metadata that you tacked on in the form of JavaDoc tags to your code, but also access to the structure of your source, that is, packages, classes, methods, and fields. It then applies this hierarchy tree of data to templates. It uses all of this and templates that you can define to generate what would otherwise be monotonous support files.
XDoclet ships an Ant task that enables you to create web.xml files, ejb-jar.xml files, and much more. In this tutorial, you will use XDoclet to generate a Web application deployment descriptor with the webdoclet Ant task. In addition you will generate EJB support files. Note that XDoclet Ant tasks do not ship with the standard distribution of Ant. You will need to download the XDoclet Ant tasks from http://xdoclet.sourceforge.net.
So you may wonder: "Why should I care? I am an excellent Java/J2EE Web developer and I have never needed XDoclet". Or you may say: "I already use XDoclet, why do I need to write my own templates?" As I stated before, you don't know what you are missing. Once you start use XDoclet, you will not stop. Once you start writing your own templates you will never repeat yourself again. If you are writing dry, mundane code, then you could probably use XDoclet instead. Allow XDoclet to generate the monotonous stuff, and stick to writing the good stuff. Computers were invented to do monotonous stuff to free humans to do creative things. XDoclet frees developers from monotonous code. XDoclet is the missing piece in your J2EE and Web service development process. It will speed your development. You must master how to use XDoclet templates.
XDoclet tutorial: Creating your own templates and subtask
Tuesday, July 01, 2003
Struts vs. WebWork?
WebWork
I just read through Mikes (mike@atlassian.com) slides comparing Struts and WebWork from the ServerSide Symposium. I am going to get this book as soon as it comes out.... (he one of the authors)
Java Open Source Programming : with XDoclet, JUnit, WebWork, Hibernate (Java Open Source Library)
by Joseph Walnes (Author), Ara Abrahamian (Author), Mike Cannon-Brookes (Author), Patrick Lightbody (Author)
WebOgnl
WebOGNL
I just spoke to Drew Davidson. He is fired up about WebOgnl. Drew is the creator of OGNL which gets used by Tapestry and WebWork. He said that he has rewritten some applications in various frameworks and has noticed a sharp reduction in LOC (lines of code) when using WebOgnl. He is sending me some sample code. As I mentioned before, Drew lives right here in good old Tucson. He is the fastest, smartest developer that I have ever worked with, and I have worked with some really good developers over the years. He is like a power of nature when he develops. He knows everything. And, he is a really big dude. He looks like a professional linebacker (football, american).
WebOgnl is still missing good documentation. Hopefully, it will come out really soon. BTW Ognl is pronounced OGG-NULL. We got in to some debate a the serverside.com symposium on the correct pronounciation of Ognl. I ended the debate with "well that is not how Drew pronounces it". My only claim to fame.... the correct pronounciation of Ognl.
Hibernate
Hibernate
My next project will try Hibernate, an open source OR mapping for Java. I just downloaded the 111 page user guide. Hibernate embraces the fact that it is doing OR mapping, and provides many granular features that are essential to doing OR mapping. Unlike EJB 2.0 and JDO which also do OR mappings, but don't specify how it should be implemented or what types of mappings the implementations must implement. OR mappings standards without the OR mapping in the specification just does not make sense to me anymore. The possible weaknesses of Hiberante is it not standards base (this could also be considered a bonus: read the above comments). Another weakness is Hibernates support for caching not working in a clustered environment.
Sunday, June 29, 2003
TheServerSide.com Symposium
TheServerSide.com Symposium
I had a blast at The ServerSide.com Symposium. I spoke with Gavin King of hibernate fame, Erik Hatcher of Apache Jakarta fame, Howard Lewis Ship of tapestry fame , Mike Cannon-Brookes of OpenSymphony, and a few others to the wee hours of the morning. Being around all of these Java OpenSource leaders has inspired me to get more involved in open source development. Right now I am working on the Mastering Struts book, and then the Java Tools for Extreme Programming 2nd edition. Oh yeah.... I am going to be a father again so I don't know when, but I know I will.
I also want to get up to speed on Hibernate as soon as possible. It seems like something I would use. I currently use EJB CMP CMR 2.x. I am not that thrilled about JDO. This is the one open source project I would be most likely to get involved in.
I currently use Struts for my J2EE web component framework, but in the future I will look into WebWork (part of OpenSymphony) and/or Tapestry. It is interesting that both WebWork and Tapestry use Ognl as their expression language. Ognl was developed right here in Tucson by a guy that Erik Hatcher and I worked with.... Drew Davidson of Ognl and WebOgnl Fame .
I could only stay Friday. I had to leave Sat. It had been a while since I had seen my family. I was in Chicago on biz before I went to Boston. I did read through most of the slides. I kept hearing about Aspects, Aspects, and Aspects! I guess I have to bite the bullet and start messing around with Aspects too.
Some other points of note.... Erik Hatcher gave a really solid talk on Advanced Struts. I learned a few more tricks. Thanks Erik. Vincent Massol of Cactus fame gave a great talk on Unit testing, Cactus and Mock Objects. I did not see his Maven talk, but I did look throught the slides. Maven is defintely something I will use in the near future. Vincent is a genious.
I did not get to see Crazy Bob talk but I read through his slides on JMX and Aspects. Very cool stuff.
All in all, I had a blast at The ServerSide Symposium, The talent level of the speakers was truly stellar.
Wednesday, June 25, 2003
Plastics!
I was in Chicago, and could not get a cab. There was a big plastics convention, and I could not get a cab from the Holiday Inn to downtown Chicago. What a mess!
I tried for 1 hour to get cab.
I ended up sharing a limo with eight other guys. Limos are suppose to be spacious, but they have their limits. I had to practially cross my legs to fit.
When I did get there, I was dropped off at the wrong location. I had two walk a few blocks with a box full of books. What a day.
I tried for 1 hour to get cab.
I ended up sharing a limo with eight other guys. Limos are suppose to be spacious, but they have their limits. I had to practially cross my legs to fit.
When I did get there, I was dropped off at the wrong location. I had two walk a few blocks with a box full of books. What a day.
Monday, June 23, 2003
JavaOne, JavaSoftware Symposium MI WI, Foi Gras and Design Patterns
JavaOne 2003
The last couple of weeks have been hectic. I went to JavaOne in SF, then the Java Software Symposium in MI, and then went to Ohio on biz for a week. I really enjoyed JavaOne. I did not get to attend as many sessions as I would have liked, but it was really fun socializing with the different folks.
I got to meet James Goodwill. I will be contributing to his Mastering Struts book. I also spent some time with Erik Hatcher, Jason Hunter, Sue Speilman, James Duncan Davidson and much more. It was a fun trip. I even met up with my old room mate from my single days. We went to the best French restaurant I have ever been, which was about three blocks from my hotel. WOW! Melt in your mouth Foi Gras (sp?)! I need to figure out a reason to go back to SF so I can eat there again! His ex-wife was a chef for a while, so he knows where to go to find some great food in SF.
The Java Software Symposium was interesting in WI. We got into a very big discussion and on design patterns. My personal feelings on design patterns are that they generally a good thing (a really good thing). However, In the hands of the wrong people that can be disastrous (with a capital D). Yikes! Misapplied design patterns is more dangerous than slapping code together. You can easily design a system that no one can implement by misapplying design patterns. Keep it simple! Start simple.... add complexity as needed and only when needed. There will be enough complexity in the system without trying to use every design pattern in the book whether it makes sense or not. Opinions on this subject were all over the map, but generally it was thought that design patterns are good and get abused and misused. Except for Dave Thomas who thought Design Patterns were in their nature inherently evil or something to that effect. I have a lot of respect for Dave Thomas, but I am not sure I agree with his point of view nor can I repeat it and the depth and insight which he conveyed it. Robert Martin had a very interesting perspective, which I did agree with whole heartedly.
Bitter EJB, Text Processing in Python and BEA WebLogic Bible
Three new books.
I've just got three new books one entitled Text Processing in Python, BEA WebLogic Bible 2nd edition, and Bitter EJB. I've scanned through the WebLogic Bible and the new Python book reading several chapters from each. I think I will read the Bitter EJB book first (it just came in today).
I've just got three new books one entitled Text Processing in Python, BEA WebLogic Bible 2nd edition, and Bitter EJB. I've scanned through the WebLogic Bible and the new Python book reading several chapters from each. I think I will read the Bitter EJB book first (it just came in today).
Thursday, June 12, 2003
Just got done speaking at JavaOne.... What a blast
I just got done with my talk at JavaOne.
The room was packed. I got an applause.
People really like XDoclet. I think people will use it.
Using Enterprise JavaBeansTM (EJBTM) Technology on More Projects with CMP, CMR and XDoclet
Java One Presentation
Abstract
I really enjoyed presenting at JavaOne. Everything ran so smooth. Sun really has this down to a science.
The room was packed. I got an applause.
People really like XDoclet. I think people will use it.
Using Enterprise JavaBeansTM (EJBTM) Technology on More Projects with CMP, CMR and XDoclet
Java One Presentation
Abstract
I really enjoyed presenting at JavaOne. Everything ran so smooth. Sun really has this down to a science.
Tuesday, June 10, 2003
JavaOne 2003 ---- GOOD
Random thoughts about JavaOne:
JavaOne seems more exciting this year. It seems more optimistic. Last year was kind of a drag. This year there is a positive buzzz....
I ate dinner with Sue Speilman, and the Complete Programmer Network clan. It was a blast.
The Java Fireside chat was nice. I asked a question about EJB CMP/CMR vs. JDO. The answer was unsatisfying to say the least.
The keynote was exciting. Last years keynote was depressing. This years was very upbeat.
I am meeting James Goodwill today to talk abou the next edition of Mastering Struts. I am going to write the chapters on Tiles and the Validator framework.
This year, I most interested in Java Server Faces and JSP 2.0.
They mentioned a JSR on scripting languages in the JVM. I hope this means I can use Python as a scripting langugae with JSP, but I doubt it.
The information on the metadata JSR looks really interesting.
In my spare time I am writing a tutorial on XDoclet, specifically how to write your own templates. I wrote a template last night that generates the deploy.wsdd for Apache Axis.
Questions that I want answered this week:
How will the metadata specification effect XDoclet?
How close is the Java Server Faces event model to ASP.net? (I like ASP.net code-behind, and event model, but don't tell any of my Java friends).
(Liking it an using it are two different things. I still use JSP, and I can't wait to use Java Server Faces).
I really enjoyed the demo in the keynote by Oracle.
There was an interesting discussion about IDE, editors last night, Java language features, Java Server Faces, and mroe.
The luddites in the group (and no I don't know how to spell ludite) were of the opinion that the new language features, IDE wizards and Java Server Faces were bad things.
I am all for making Java easier. I really think the new language features are a blessing. I can't wait to use the new for loop, generics, aut o-boxing, and Enums. (Enums are my favorite.... I really miss them from my C++ programming days). I want the compiler to be smarter and smarter, if it can figure something out and save me from writing several lines of code per method then amen brother. I want my JSP development to be easier and easier as well. I want to be able to drop components on a page and add event wiring. I can develop without these features if needed, but anything that speeds development, I am all for. BTW I love Eclipse and all the plugins and wizards.
I look forward to the presentations on making Java easier, and yes I know Java well, and yes I can program in Java really well, but easier is easier and I am all for easy. I declare this a good JavaOne
JavaOne seems more exciting this year. It seems more optimistic. Last year was kind of a drag. This year there is a positive buzzz....
I ate dinner with Sue Speilman, and the Complete Programmer Network clan. It was a blast.
The Java Fireside chat was nice. I asked a question about EJB CMP/CMR vs. JDO. The answer was unsatisfying to say the least.
The keynote was exciting. Last years keynote was depressing. This years was very upbeat.
I am meeting James Goodwill today to talk abou the next edition of Mastering Struts. I am going to write the chapters on Tiles and the Validator framework.
This year, I most interested in Java Server Faces and JSP 2.0.
They mentioned a JSR on scripting languages in the JVM. I hope this means I can use Python as a scripting langugae with JSP, but I doubt it.
The information on the metadata JSR looks really interesting.
In my spare time I am writing a tutorial on XDoclet, specifically how to write your own templates. I wrote a template last night that generates the deploy.wsdd for Apache Axis.
Questions that I want answered this week:
How will the metadata specification effect XDoclet?
How close is the Java Server Faces event model to ASP.net? (I like ASP.net code-behind, and event model, but don't tell any of my Java friends).
(Liking it an using it are two different things. I still use JSP, and I can't wait to use Java Server Faces).
I really enjoyed the demo in the keynote by Oracle.
There was an interesting discussion about IDE, editors last night, Java language features, Java Server Faces, and mroe.
The luddites in the group (and no I don't know how to spell ludite) were of the opinion that the new language features, IDE wizards and Java Server Faces were bad things.
I am all for making Java easier. I really think the new language features are a blessing. I can't wait to use the new for loop, generics, aut o-boxing, and Enums. (Enums are my favorite.... I really miss them from my C++ programming days). I want the compiler to be smarter and smarter, if it can figure something out and save me from writing several lines of code per method then amen brother. I want my JSP development to be easier and easier as well. I want to be able to drop components on a page and add event wiring. I can develop without these features if needed, but anything that speeds development, I am all for. BTW I love Eclipse and all the plugins and wizards.
I look forward to the presentations on making Java easier, and yes I know Java well, and yes I can program in Java really well, but easier is easier and I am all for easy. I declare this a good JavaOne
Friday, May 30, 2003
Service-enable EJB SessionBeans with Apache Axis and the IBM ETTK
Apache Axis and EJB
This article shows J2EE developers how to use Apache Axis from the IBM ETTK (Emerging Technologies Toolkit) to make any Enterprise JavaBean (EJB) component into a Web service that will run on any application server.
Tutorial link
This tutorial shows J2EE developers how to use the IBM ETTK (Emerging Technologies Toolkit) to make any Enterprise JavaBean (EJB) component into a Web service that will run on any application server.
Do you currently use EJB technology? Have you ever wondered how to expose an EJB component as a Web service no matter what your application server is? This tutorial shows how to use the ETTK and Axis to convert a local and remote EJB component into a Web service. I will use a subcomponent of the ETTK called Axis, a SOAP client implementation originally hosted by the Apache Software Foundation.
The ETTK implements the Web services architecture and provides a set of tools to create, locate and invoke Web services. It includes the following tools:
-
UDDI4J API allows developers to perform save, delete, find, and get operations against a UDDI registry.
UDDI4J-WSDL API allows developers to perform publish, unpublish, and find operations against a UDDI registry.
WSDL4J allows developers to programmatically read and work with WSDL documents. -
WSDLdoc allows developers to automatically generate documentation from WSDL files similar to JavaDoc.
WSIL4J allows developers to programmatically read and work with WSIL documents. -
Axis RC1 allows a developer to generate Web services WSDL definitions from Java code and generate Java proxy code from a WSDL definition. Axis is also the transport engine for Web services. -
Sample services including Accounting, Contract, Metering, Service Desk etc. -
Demos and tutorials to illustrate key Web service concepts. -
Privacy Policy Authorization Director (PAD) Web service allows privacy policy control access to personal information. -
And much more...
If you are serious about Web services then you have to check out IBM's ETTK!
The primary focus of this tutorial is developing EJB-based Web services with Axis. Axis provides support for turning EJB components into Web services and is included with the ETTK.
What this tutorial covers page
This tutorial covers turning EJB components into Web services and has two step-by-step examples. The first example uses all primitive types with one simple EJB component. The second example uses a SessionBean that talks to several EJB components and returns complex types. All examples ship with a set of Ant build scripts so you can easily create your own custom solutions by reusing the sample build files.
This tutorial assumes you have a working knowledge of Java technology and EJB technology. In-depth knowledge of EJB components, Web services, and Ant are helpful but not required to understand the key concepts. Ant is used to build and deploy the example applications. Reference to introductory material on Ant, Java technology, J2EE, Web services, XML, and EJB components are provided in throughout the tutorial and at the references section at the end of this tutorial.
The source code in the tutorial has been tested with Resin EE application server.
The applications should be easy to port to other J2EE-compliant application servers like IBM WebSphere or JBoss. Please check back at my site for ports to other application servers (see Resources).
I typically get examples from people working with other application servers, and then I put them up on my site (see Resources).
I used the Eclipse framework to create the examples in this tutorial. The examples are easiest to run by downloading Eclipse 2.1 or higher and a J2EE application server plug-in for Eclipse. Eclipse has excellent support for Ant, which facilitates running the Axis and XDoclet Ant tasks right from the IDE environment.
If you are new to Ant, please read this sample chapter from Mastering Tomcat on Developing Web Components with Ant (written by yours truly). Just read the sections on Ant development for now.
Using Ant
Also note that the Ant scripts can use XDoclet. You will not need to use this functionality, but, in case you decide to, please refer to the developerWorks tutorial, "Enhance J2EE component reuse with XDoclet" (see Resources).
Wednesday, May 21, 2003
Speed J2EE component development with XDoclet
Speed J2EE component development with XDoclet
I wrote a tutorial on XDoclet for IBM developerWorks.
"This tutorial shows how to speed J2EE development with XDoclet. Why write five classes and three deployment descriptor when you can write one and generate the rest? This tutorial consists of step by step examples using XDoclet with Servlets, Custom Tags and EJB (with CMP, CMR 2.0). XDoclet is an open source project that aids in the development of J2EE components."
DeveloperWorks article
Java Channel link to tutorial
JavaRanch link to tutorial
JavaLobby link to tutorial
Sunday, May 04, 2003
JDJ this month: Good Articles this month
Picked up a copy of the JDJ this month. What a great issue! I am really enjoying reading about in container caching, although I don't 100% agree with the conclusion. I believe the results she got, but I don't agree that that is the type of thing you usually cache. I thought the article could have spent more time talking about when/why to use caching instead of making up a contrived example that would obviously break. And, although I did not agree with the conclusion, I really found the article interesting. I've run into problems with caching before. I have had similar experience that the article was talking about. A little caching good.... too much is evil. Be careful what you cache. It can be great. Too much and it can kill.
I browsed the rest of the magazine. There seems to be some good articles on Abbot and Big Brother (CI tool). I look forward to reading these as I fly from AZ to Minnesota on Tuesday. Has anyone tried using caching against a RAM Disk? I was going to try this on a project, but decided to cache some results on HD and small frequently used data in a weak hash map instead. The important thing is that I knew how much the data would grow (the upper limit). I'd like to try the RAM disk approach (with a LRU type cache) so the garbage collector would not have to manage the memory. Hmmmmmmmmmmm.....
I browsed the rest of the magazine. There seems to be some good articles on Abbot and Big Brother (CI tool). I look forward to reading these as I fly from AZ to Minnesota on Tuesday. Has anyone tried using caching against a RAM Disk? I was going to try this on a project, but decided to cache some results on HD and small frequently used data in a weak hash map instead. The important thing is that I knew how much the data would grow (the upper limit). I'd like to try the RAM disk approach (with a LRU type cache) so the garbage collector would not have to manage the memory. Hmmmmmmmmmmm.....
Saturday, May 03, 2003
Get Tomcat book examples working for Xdoclet 1.2
Get Tomcat book examples working for Xdoclet 1.2
Upgrade examples to the lastest version of Xdoclet (xdoclet 1.2)
Finish writing/updating tutorial
Add EJB support....from previous work.
sounds like a lot of work.
Find the files move them over... then port. Start with the Servlet example and Custom Tag example. Upgrade to latest ant first.
I changed the script to use a path instead of putting a list of jars in the build.properties.
Upgrading example to 1.2 from Xdoclet 1.1 problems:
1) the webdoclet task no longer supports sourcepath. I removed it from the example ant script.
2) xdoclet.web.WebDocletTask is deprecated. I changed the taskdef to use xdoclet.modules.web.WebDocletTask
After that everything worked groovey.I came up with an idea. An Ant task that takes an eclipse .classpath file (which is just an xml file anyway) and adds every item to the classpath. This would make things a little easier.when working with eclipse. Hmmmm....
Upgrade examples to the lastest version of Xdoclet (xdoclet 1.2)
Finish writing/updating tutorial
Add EJB support....from previous work.
sounds like a lot of work.
Find the files move them over... then port. Start with the Servlet example and Custom Tag example. Upgrade to latest ant first.
I changed the script to use a path instead of putting a list of jars in the build.properties.
Upgrading example to 1.2 from Xdoclet 1.1 problems:
1) the webdoclet task no longer supports sourcepath. I removed it from the example ant script.
2) xdoclet.web.WebDocletTask is deprecated. I changed the taskdef to use xdoclet.modules.web.WebDocletTask
After that everything worked groovey.I came up with an idea. An Ant task that takes an eclipse .classpath file (which is just an xml file anyway) and adds every item to the classpath. This would make things a little easier.when working with eclipse. Hmmmm....
Tutorial for IBM, toot-o-matic
I am working on a tutorial for IBM. My laptop crashed since the last time I wrote a tutorial. I have a new laptop. I need to reinstall all of the software to write the tutorial. You write the IBM tutorials in XML then use a tool called Toot-o-matic from IBM to convert it to HTML and PDF format. The tool is open source and uses XSLT.
I wrote a preprocessor that coverts a text file into the XML file in jython so that I can use the spell checker and grammar checker of MS Word before I make a fool of myself.
I have to download jython, toot-o-matic, and who know what else to get this
started.... here we go....
Doug Tidwell is too funny.... I am looking for a download link for
toot-o-matic and I ran into his bio....
About the author
MC Dug-T is developerWorks' Minister of Science, droppin' the XML, Java,
and Web services 411 on the public. In his travels, he gets mad props from
his peeps worldwide for the stone-cold, stoopid-fresh style sheets he leaves
behind. All his mad-phat nollidge will soon be published by O'Reilly and
Associates in the Strictly Non-Fiction book XSLT (ISBN 0596000537, pre-order
your copy today at amazon.com) which will then start slayin' soft-sellin'
suckas at tha local booksella. Discussing the book in a recent dW interview,
he boasted, "I'm gonna empty mah dome into one supa-fly tome."
For relaxation, he likes to put his hands up in the air, and in his words,
"wave 'em around like I just don't care." When not chillin' with his
worldwide XML krew, he maxes at the crib in Raleigh with his wife, cooking
teacher CT-ONE, and their six-year-old shortie, Lily the Flayva Princess.
You can send him a shout-out at dtidwell@us.ibm.com.
How funny is that? :)
The tutorial link for toot-o-matic
http://www-106.ibm.com/developerworks/library/x-toot/index.html
Here is the download link from the tutorial
https://www6.software.ibm.com/dl/devworks/dw-tootomatic-p
There are two download files.... jars.zip and tootomatic.zip...
Hmmm... jars.zip is ten times bigger than tootomatic.zip
better get them both.
now what... no instructions....
Ahhh... the directions are in the tootomatic.zip file....
here they are....
****************************
Installing the Toot-O-Matic:
To install the Toot-O-Matic, unzip the files tootomatic.zip and jars.zip
into the same directory on your hard drive.
Toot-O-Matic uses the Java 2 SDK, 1.3.0_02. You can download it from
http://java.sun.com/products/archive/index.html.
****************************
now i need to install jython...
http://sourceforge.net/project/showfiles.php?group_id=12867&release_id=67726
it looks like tootomatic changed since the last time I used it...
now they are using XML Schema instead of dtds... hmmm....
my xml tut files don't work anymore... hmmm...
looks like i can use either dtd or xsd... i'll stick with dtds for now.
my preprocessor sticks the wrong dtd location in the file....
quick change. no problem... i am up an running.
I wrote a preprocessor that coverts a text file into the XML file in jython so that I can use the spell checker and grammar checker of MS Word before I make a fool of myself.
I have to download jython, toot-o-matic, and who know what else to get this
started.... here we go....
Doug Tidwell is too funny.... I am looking for a download link for
toot-o-matic and I ran into his bio....
About the author
MC Dug-T is developerWorks' Minister of Science, droppin' the XML, Java,
and Web services 411 on the public. In his travels, he gets mad props from
his peeps worldwide for the stone-cold, stoopid-fresh style sheets he leaves
behind. All his mad-phat nollidge will soon be published by O'Reilly and
Associates in the Strictly Non-Fiction book XSLT (ISBN 0596000537, pre-order
your copy today at amazon.com) which will then start slayin' soft-sellin'
suckas at tha local booksella. Discussing the book in a recent dW interview,
he boasted, "I'm gonna empty mah dome into one supa-fly tome."
For relaxation, he likes to put his hands up in the air, and in his words,
"wave 'em around like I just don't care." When not chillin' with his
worldwide XML krew, he maxes at the crib in Raleigh with his wife, cooking
teacher CT-ONE, and their six-year-old shortie, Lily the Flayva Princess.
You can send him a shout-out at dtidwell@us.ibm.com.
How funny is that? :)
The tutorial link for toot-o-matic
http://www-106.ibm.com/developerworks/library/x-toot/index.html
Here is the download link from the tutorial
https://www6.software.ibm.com/dl/devworks/dw-tootomatic-p
There are two download files.... jars.zip and tootomatic.zip...
Hmmm... jars.zip is ten times bigger than tootomatic.zip
better get them both.
now what... no instructions....
Ahhh... the directions are in the tootomatic.zip file....
here they are....
****************************
Installing the Toot-O-Matic:
To install the Toot-O-Matic, unzip the files tootomatic.zip and jars.zip
into the same directory on your hard drive.
Toot-O-Matic uses the Java 2 SDK, 1.3.0_02. You can download it from
http://java.sun.com/products/archive/index.html.
****************************
now i need to install jython...
http://sourceforge.net/project/showfiles.php?group_id=12867&release_id=67726
it looks like tootomatic changed since the last time I used it...
now they are using XML Schema instead of dtds... hmmm....
my xml tut files don't work anymore... hmmm...
looks like i can use either dtd or xsd... i'll stick with dtds for now.
my preprocessor sticks the wrong dtd location in the file....
quick change. no problem... i am up an running.
Looking for an eclipse plugin that support XDoclet and finding all kinds of other stuff too
I want to checkout Easy Struts, the JBoss IDE, and Lomboz , and this http://sourceforge.net/projects/javacodemaker.
The last one does not appear to be fully baked... yet.
Anyone tried any of these.....
Hmmmm..... unrelated....
Jdepend does metrics… do we want this…. ???
Here is an article I plan on reading regarding EJB testing.... Automating EJB Unit Testing.
See if he has similar thoughts than I do on this subject.... maybe catch an aha or two in the progress.
and just for kicks.... i want to check out http://sourceforge.net/projects/xpetstore/. This is a project I would like to get involved in.... after I am done with EasyEJB 1.0 release.
Another tool i am dying to try out is MiddleGen.... http://sourceforge.net/projects/middlegen/
Hmmm... i want more eclipse tools.... i need a UML plugin, a database plugin and a good xdoclet plugin.....
The last one does not appear to be fully baked... yet.
Anyone tried any of these.....
Hmmmm..... unrelated....
Jdepend does metrics… do we want this…. ???
Here is an article I plan on reading regarding EJB testing.... Automating EJB Unit Testing.
See if he has similar thoughts than I do on this subject.... maybe catch an aha or two in the progress.
and just for kicks.... i want to check out http://sourceforge.net/projects/xpetstore/. This is a project I would like to get involved in.... after I am done with EasyEJB 1.0 release.
Another tool i am dying to try out is MiddleGen.... http://sourceforge.net/projects/middlegen/
Hmmm... i want more eclipse tools.... i need a UML plugin, a database plugin and a good xdoclet plugin.....
JDJ Mag..... CD packed full of articles
I got my new JDJ Mag with the CD of every article ever written by the JDJ.
I was searching for article I wrote when I ran accross this.....
It was a show report by Stephen Berkowitz:
"I would be remiss if, in the focus on Web services, I failed to point out that the conference also had a Java focus. The best Java presentation I went to was given by Rick Hightower of Trivera. His talk on "Java Tools for Extreme Programming" was well presented and rather informative. Rick focused on the testing and continuous integration portions of XP, discussing JUnit, Ant, and Cactus in detail. His talk proved to me that no matter what you are doing, no matter what you call your methodology, testing is invaluable and that these tools will make your life easier. "
Excellent. I am glad you liked it.
This was my first presentation in a long time, and I was pretty nervous.
I was searching for article I wrote when I ran accross this.....
It was a show report by Stephen Berkowitz:
"I would be remiss if, in the focus on Web services, I failed to point out that the conference also had a Java focus. The best Java presentation I went to was given by Rick Hightower of Trivera. His talk on "Java Tools for Extreme Programming" was well presented and rather informative. Rick focused on the testing and continuous integration portions of XP, discussing JUnit, Ant, and Cactus in detail. His talk proved to me that no matter what you are doing, no matter what you call your methodology, testing is invaluable and that these tools will make your life easier. "
This was my first presentation in a long time, and I was pretty nervous.
Friday, May 02, 2003
Custom Tag
Last night (yesterday) I wrote a custom tag for the Struts course, and wrote a Cactus test for it.
The custom tag prints out a value of a property from an EJB. It is called EJBWrite.
It is like BeanWrite (a struts custom tag), but different.
It uses BeanUtils, ResponseUtils, RequestUtils, and Property Utils. (three birds.... one stone)
I also dug into WSAD for several hours. I am becoming an expert. If you love Eclipse, you will go ga ga over WSAD
The custom tag prints out a value of a property from an EJB. It is called EJBWrite.
It is like BeanWrite (a struts custom tag), but different.
It uses BeanUtils, ResponseUtils, RequestUtils, and Property Utils. (three birds.... one stone)
I also dug into WSAD for several hours. I am becoming an expert. If you love Eclipse, you will go ga ga over WSAD
Speaking at JavaOne... Info....
Speaking at JavaOne! Yeah!
Using Enterprise JavaBeans(TM) (EJBTM) Technology on More Projects with CMP, CMR and XDoclet TS-3198
Speakers: Rick Hightower
Thursday Jun 12, 1:30 PM - 2:30 PM, Esplanade 301, Moscone Center
There has recently been a lot of discussion about whether or not to use Enterprise JavaBeans(TM) (EJBTM) technology. This session shows that EJB technology can be used on many more projects than it is currently. The argument against using EJB technology tends to be that it is too complex. This is ironic since EJB technology's purpose was to simplify server-side development. While it is true EJB.....
This is the first time speaking at JavaOne. I was part of a BOF once. I was on a BOF panel. And, I've had booth duty for three different companies at JavaOne, but never a session. I am stoked!
Using Enterprise JavaBeans(TM) (EJBTM) Technology on More Projects with CMP, CMR and XDoclet TS-3198
Speakers: Rick Hightower
Thursday Jun 12, 1:30 PM - 2:30 PM, Esplanade 301, Moscone Center
There has recently been a lot of discussion about whether or not to use Enterprise JavaBeans(TM) (EJBTM) technology. This session shows that EJB technology can be used on many more projects than it is currently. The argument against using EJB technology tends to be that it is too complex. This is ironic since EJB technology's purpose was to simplify server-side development. While it is true EJB.....
This is the first time speaking at JavaOne. I was part of a BOF once. I was on a BOF panel. And, I've had booth duty for three different companies at JavaOne, but never a session. I am stoked!
Thursday, May 01, 2003
I really dig StrutsTestCase
I really dig StrutsTestCase
It took me a while to get things installed and configured, but it was worth it. (StrutsTestCase in not compatible with the version of Cactus that the Eclipse Cactus plugin in uses..... this was one of the many issues I ran into.)
StrutsTestCase allows you to easily test StrutsActions:
Check out the following code listing:
public class EditEmployeeActionTest extends CactusStrutsTestCase {
/**
* Constructor for EditEmployeeActionTest.
* @param arg0
*/
public EditEmployeeActionTest(String arg0) {
super(arg0);
}
/*
* @see TestCase#setUp()
*/
public void setUp() throws Exception {
super.setUp();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
public void testEditEmployeeAction () throws Exception{
/* Create the test employee */
String firstName = "Bob";
String lastName = "Jones";
String phone = "555 1212";
Integer id = Util.createTestEmployee(firstName, lastName, phone);
/* set the path to the EditEmployeeAction's path */
setRequestPathInfo("/editEmployee");
/* set the employee id to load */
addRequestParameter("id", "" + id);
/* Force the action to occur */
actionPerform();
/* Make sure the action forwarded to the form */
verifyForward("form");
/* Get the EmployeeForm from the request attribute */
EmployeeForm form = (EmployeeForm) request.getAttribute("employeeForm");
/* See if it is in edit mode */
assertEquals(EmployeeForm.EDIT_MODE, form.getAction());
/* Make sure this is the right employee */
assertEquals(firstName, form.getEmployee().getFirstName());
assertEquals(lastName, form.getEmployee().getLastName());
assertEquals(phone, form.getEmployee().getPhone());
Util.killTestEmployee(id);
/* Make sure there are no errors */
verifyNoActionErrors();
}
}
Wednesday, April 30, 2003
Studying WebSphere 5
WebShpere Architecture overview:
Base configuration means seperately administered.
A node is a group of managed WebSphere servers that share configuration.
Configuration repository is in XML.
PMI stands for Performance Monitoring Interface.
In the base configuration the adminconsole runs on the one app server.
In the network deployment configuration, the adminconsole in run on the Deployment Manager.
Each server has an Admin Service.The Admin Service stores xml config files local to the server.
wsadmin allows the adminstration to be scripted.
JMS is used for intra cell communication. It is also used for in memory session replication.
There can be several nodes in a cell.
In the base config, JMS runs in the same machine as the server.
In the network deployment config, JMS runs in a dedicated JVM.
Session data can be stored in a database or replicated from server to server in the case of a network deployment. The server to server replication is done interanlly with JMS.
JNDI for WebShpere is built on top of CORBA CosNaming.
Security is not covered in this redbook, if I want to read about security I need to read IBM WebSphere V5.0 Security Handbook, SG24-6573.
Web Services in not covered in this redbook. If I want more information on WebShpere web sevices I should read WebSphere Version 5 Web Services Handbook, SG24-6891.
A network deployment consists of multiple Nodes.
A Node consist of a node agent process and several application servers.
The app servers in a node are managed by an adminstrative cell by the Deployment Manager process.
Clusters of load-balanced application servers are configured with the Network Deployment cell.
The Deployment manager sychronizes the binaries (code) and config (deployment descriptors) of every component to local copies of every node. The DM stores the binaries and config for each component in the master config repository. The DM talks to the Node agent to coordinate and synchronize management operations.
A cell is a node group for admin purposes.
The UDDI Registry is not covered in this redbook. For detailed information on the Web services support in WebSphere Application Server V5, see WebSphere Version 5 Web Services Handbook, SG24-6891.
The Web Services Gateway is not covered in this redbook. For detailed information on the Web services support in WebSphere Application Server V5, see WebSphere Version 5 Web Services Handbook, SG24-6891.
The edge components consist of the cacher and the load balancer.
The load balancer manages site selection, workload management, session affinity, and transparent failover.
The caching and filtering component are used for recieving request and serving URLs. The nice thing about the cacher is that it is programmable. Thus you can customize when the cache will be invalidated.
Follow up reading on caching and filtering:
Patterns for the Edge of Network, SG24-6822
WebSphere Edge Server New Features and Functions in Version 2,
SG24-6511
The concept of cluster is divorced from cells and the deployment manager. The only req. for a cluster is that they serve the same application. It could be a laptop and a server is the example they give. The configuration does not have to be identical. A cluster is just to provide failover support and workload balancing not duplicate config.
JMS Server, App server, Node agent, and the Deployment manager are all managed services via JMX.
Topology Selection:
I read the entire topology section. I need to reread this. There is a lot of info I want to go over.
I've read the first 103 pages of the admin book. Hmmmm.... only 900 more pages to go.
Base configuration means seperately administered.
A node is a group of managed WebSphere servers that share configuration.
Configuration repository is in XML.
PMI stands for Performance Monitoring Interface.
In the base configuration the adminconsole runs on the one app server.
In the network deployment configuration, the adminconsole in run on the Deployment Manager.
Each server has an Admin Service.The Admin Service stores xml config files local to the server.
wsadmin allows the adminstration to be scripted.
JMS is used for intra cell communication. It is also used for in memory session replication.
There can be several nodes in a cell.
In the base config, JMS runs in the same machine as the server.
In the network deployment config, JMS runs in a dedicated JVM.
Session data can be stored in a database or replicated from server to server in the case of a network deployment. The server to server replication is done interanlly with JMS.
JNDI for WebShpere is built on top of CORBA CosNaming.
Security is not covered in this redbook, if I want to read about security I need to read IBM WebSphere V5.0 Security Handbook, SG24-6573.
Web Services in not covered in this redbook. If I want more information on WebShpere web sevices I should read WebSphere Version 5 Web Services Handbook, SG24-6891.
A network deployment consists of multiple Nodes.
A Node consist of a node agent process and several application servers.
The app servers in a node are managed by an adminstrative cell by the Deployment Manager process.
Clusters of load-balanced application servers are configured with the Network Deployment cell.
The Deployment manager sychronizes the binaries (code) and config (deployment descriptors) of every component to local copies of every node. The DM stores the binaries and config for each component in the master config repository. The DM talks to the Node agent to coordinate and synchronize management operations.
A cell is a node group for admin purposes.
The UDDI Registry is not covered in this redbook. For detailed information on the Web services support in WebSphere Application Server V5, see WebSphere Version 5 Web Services Handbook, SG24-6891.
The Web Services Gateway is not covered in this redbook. For detailed information on the Web services support in WebSphere Application Server V5, see WebSphere Version 5 Web Services Handbook, SG24-6891.
The edge components consist of the cacher and the load balancer.
The load balancer manages site selection, workload management, session affinity, and transparent failover.
The caching and filtering component are used for recieving request and serving URLs. The nice thing about the cacher is that it is programmable. Thus you can customize when the cache will be invalidated.
Follow up reading on caching and filtering:
Patterns for the Edge of Network, SG24-6822
WebSphere Edge Server New Features and Functions in Version 2,
SG24-6511
The concept of cluster is divorced from cells and the deployment manager. The only req. for a cluster is that they serve the same application. It could be a laptop and a server is the example they give. The configuration does not have to be identical. A cluster is just to provide failover support and workload balancing not duplicate config.
JMS Server, App server, Node agent, and the Deployment manager are all managed services via JMX.
Topology Selection:
I read the entire topology section. I need to reread this. There is a lot of info I want to go over.
I've read the first 103 pages of the admin book. Hmmmm.... only 900 more pages to go.
EasyEJB: Struts CRUD framework, getting started....
Status:
I figured out how to use CVS with SourceForge.
I figured out how to upload the main website.
I updated my project to use Eclipse 2.1 and started using the new Resin EE and Cactus plugin.
The Cactus plugin was a wash for me. It uses Jetty, and I am not to interested in that. The Cactify feature was nice and useful, but I resorted to using the cactus.properties file. I am really enjoying the JUnit/Eclipse integration.
I am impressed with the Resin EE plugin from Improve. I need to adjust Resin to reload classes more often. I have been resorting to restarting it often.
I wrote the tests for the new class that was EJBUtils now renamed to LocalFinderUtils. Here is a sample of what you can do with LocalFinderUtils:
//The default context is set to java:comp/env/ejb. You can override the default or set a new default.
//Find a single bean by primary key
Dept dept = (Dept) LocalFinderUtils.findByPrimaryKey(pkey, "DeptBean");
//Find a collection of entities
Collection collection = LocalFinderUtils.findAll("DeptBean");
//Find a collection of entities by dept name that start with eng (one criteria)
Collection collection = LocalFinderUtils.findCollection("findByDeptNameLike", "eng", "DeptBean");
//Find a single entity by dept name (many criteria supported)
Dept bean = LocalFinderUtils.findObject("findByDeptName", new Object [] {testName}, HOME_LOCATION, "DeptBean");
There are many more variations of the above (12 so far).
Making the code generic (something we did not have to worry about at eBlox) for general consumption is time consuming.
I wrote tests for the above. In order to do that I had to include a few EJBs (Dept and Employee).
I spent a lot of time writing JavaDocs. The tests turned out well.
I changed EJBUtils (after the rename) to use MethodUtils from the BeanUtils commons project as Apache. I was caching my own method calls. At some point in the future, I want to benchmark EJBUtils (used cached method calls) against the new version vs. accessing the home method directly. Hmmm.....
I am going to document TransactionUtils, write the tests for it, and push it out. Nick L. wrote transaction utils (as far as I know).
Here is an example usage of TransactionUtils. I don't have a published test.
TransactionUtils.runInTransaction(
new Runnable(){
public void run(){
try {
Dept dept = (Dept) home.create(testName);
pkey = dept.getId();
}catch (CreateException ce){
throw new EJBWrapperException(ce, "unable to create Dept");
}
}
}
);
Task list before Alpha release
- Incorporate EJBUtils and TransactionUtils (almost done) (document, test)
- Incorporate EJB plugin I wrote for Struts (document and test)
- Include and refactor EJB CRUD framework. Change to use LookupDispatchAction action. Get it working in a more genric manner wrt to keys. Old verions only works with int and Integer keys. This can be improved! Write tests, and javadocs(document and test)
- Create base classes for EJB types and classes (PK key, Entity and Session for this release) (document and test)
- Create EJB Home Cacher for locals and remotes (document and test)
- Modify plugin to use new utilities EJB Home Cachers and Transaction Utils (document and test)
- Make plugin Struts modules aware (document and test)
- Move 5 custom tags for dealing with EJB (document and test)
Tuesday, April 29, 2003
Strtus CRUD framework
I came up with an Idea for a Struts based, EJB CRUD framework when I worked at eBlox. We wrote it. Andy, Ron, Nick, and Paul contributed to it.
I got permission from Andy to make it open source. I need to clean it up a bit. I have been working on it every night for a few hours (for the past two nights).
I doubt I will be able to give it the attention that it needs. I want to get what is there working. I want to clean it up a bit. I will keep working on it until it at least equals what we had.
Anyway, I started a Sourceforge project and committed my first three files.
Your project registration for SourceForge.net has been approved.
Project Descriptive Name: EJB Utils (Struts based CRUD framework)
Project Unix Name: easyejb
CVS Server: cvs.easyejb.sourceforge.net
Shell/Web Server: easyejb.sourceforge.net
I started setting up my env. for development. I upgraded to Eclipse 2.1. I had to reinstall XMen, and the Resin plugin. I decided to use the new Cactus plugin. I've been playing around with it and other plugins. I just got Eclipse working with CVS. In the past, I always used WinCVS. I could not get WinCVS to talk to the source forge CVS server so I fooled around with the Eclipse CVS support. Very Nice!
Anyway, this is what I plan to be doing in my spare time.
I just put the new proposal in for Java Tools for Extreme Programming the 2nd edition.
I got permission from Andy to make it open source. I need to clean it up a bit. I have been working on it every night for a few hours (for the past two nights).
I doubt I will be able to give it the attention that it needs. I want to get what is there working. I want to clean it up a bit. I will keep working on it until it at least equals what we had.
Anyway, I started a Sourceforge project and committed my first three files.
Your project registration for SourceForge.net has been approved.
Project Descriptive Name: EJB Utils (Struts based CRUD framework)
Project Unix Name: easyejb
CVS Server: cvs.easyejb.sourceforge.net
Shell/Web Server: easyejb.sourceforge.net
I started setting up my env. for development. I upgraded to Eclipse 2.1. I had to reinstall XMen, and the Resin plugin. I decided to use the new Cactus plugin. I've been playing around with it and other plugins. I just got Eclipse working with CVS. In the past, I always used WinCVS. I could not get WinCVS to talk to the source forge CVS server so I fooled around with the Eclipse CVS support. Very Nice!
Anyway, this is what I plan to be doing in my spare time.
I just put the new proposal in for Java Tools for Extreme Programming the 2nd edition.
Tuesday, April 22, 2003
Best Practices
Here are the slides to the well recieved Principles and Practices of Effective Developers
http://www.rickhightower.com/BestPractices.pdf
http://www.rickhightower.com/BestPractices.pdf
JavaOne!
I just got accepted to speak at JavaOne on EJB CMP CMR and XDoclet. Apparently I was on the runner-up list, and someone canceled. I am really psyched!
Thursday, April 17, 2003
Struts Course Updates
We are going to update our Struts course and offer it in a 5 day format with some addition sections on CRUD.
Best Struts Course
Best Struts Training
Best Struts Course
Best Struts Training
Tuesday, April 15, 2003
Java Freedom Conference: Great Fun! Strong Opinions
We had a lively roundtble discussion with James Duncan Davidson, Erik Hatcher, Bruce Tate, Macijec Zawadski, Stuart Halloway, I and more. James compared selecting a software methodology to sex that has to be the funniest moment of the whole show. The great thing about the roundtable discussion is we started debating a bit. Someone would say something, and someone else would chime in and say the exact opposite. There would be a pause and gasp and then on to the next rebuttal. This was the liveliest round table that I have seen. Bruce Tate is a real salt of the earth type guy, and I enjoy his views on software development. It is a real pleasure talking to him. Macijec Zawadski is quite the software rebel; he likes to challenge the norm. Stuart is a really good speaker; very polished. James Duncan Davidson is awesome. I really enjoyed Erik's talk on Extreme XDoclet. Erik rocks! We all went to dinner and saw "Anger Management". If you are going to go to one conference this year go to a Complete Programmer Network conference. It is 100% stuff you can use when you get back to work. This conference series is simply the best software development conferences on the market.
Monday, April 14, 2003
WebSphere certification and getting up to speed with WebSphere 5.0
I've decided to get IBM WebSphere certified, and get up to speed with the new features of WebSphere (v5.0). It is something that I have been thinking about for a while. I was hoping writing it down might help. BTW I am a big WSAD fan not to mention Eclispe.
Here is my reading list to get started:
I came up with the above list by searching for "redbook websphere v5" at WebSphere Developer Domain Library. Please let me know if you can think of other ideas.... pass them forward.
I thought I would rate and write a review for each item. Then I will spend some more time figuring out which certification I should take first, i.e., possible WebSphere certifications. I might stick to the developer certifications or not.
Here is my reading list to get started:
- WebSphere Application Server V5 for iSeries: Installation, Configuration and Administration
- WebSphere V5.0 Applications: Ensuring High Performance and Scalability
- WebSphere Version 5 Web Services Handbook
- IBM WebSphere Application Server V5.0 System Management and Configuration: WebSphere Handbook Series
- Testing Container Managed Persistence EJBs with the Table and Data Source Creator in WebSphere Studio Application Developer 5.0
I came up with the above list by searching for "redbook websphere v5" at WebSphere Developer Domain Library. Please let me know if you can think of other ideas.... pass them forward.
I thought I would rate and write a review for each item. Then I will spend some more time figuring out which certification I should take first, i.e., possible WebSphere certifications. I might stick to the developer certifications or not.
Java Freedom Conference
The Java Freedom Conference in Philly was fun. I tried out three new presentations, and one tried and true presentation. Two of the new presentations (Principles and Practices of Effective Developers and Bending Struts to fit your needs) were rated very high. The presentations that did well represent the highest ratings I recieved since I've been presenting for complete programmer network (I am getting better at it), and the third new presentation (Struts Primer) got horrible ratings (my standards are high... it did okay, but not really well).
Score card....
Java Tools for Extreme Programming did well
Principles and Practices of Effective Developers very good
Struts Primer session average
Bending Struts very good
The problem with the Struts Primer session was that I tried to fit too much material in too little time, and I did not gear it to a starter audience as promised in the abstract. It could be broken out into several presentations (Intro to Struts, Validation Framework and Tiles), but I tried to fit it all into one. Most people felt the material was too advanced. It seems people with Struts experience thought it was great, but those without Struts background thought it was too much (some suggested making it a longer session or splitting it).
The Principles and Practices of Effective Developers session was based on some of the ideas right from this blog. It is nice to verbalize these ideas and actually get good reviews from the thoughts. This is the first purely non-technical, all process/methodology/idealogy presentation that I have ever done, and people actually liked it.
I asked several times how many people were implementing custom tags. I was surprised how many people were not using custom tags at all. I find custom tags are useful and easy to learn. Hmmmm.... It seemed like a lot of folks use EJB despite the bad press. Maybe a session on doing custom tags would make sense for a future Complete Programmer Network. I like asking people what they do.
I think I am going to split the Struts Primer into three presentations (at some point in the future) as follows: Struts Primer, Mastering Struts Tiles, and Mastering Validation Framework. I also want to create a session on Mastering Custom Tags.
I want to retire Java Tools for Extreme Programming session, because I have given it about 12 times last year. Frankly, I am tired of giving the session.
Score card....
Java Tools for Extreme Programming did well
Principles and Practices of Effective Developers very good
Struts Primer session average
Bending Struts very good
The problem with the Struts Primer session was that I tried to fit too much material in too little time, and I did not gear it to a starter audience as promised in the abstract. It could be broken out into several presentations (Intro to Struts, Validation Framework and Tiles), but I tried to fit it all into one. Most people felt the material was too advanced. It seems people with Struts experience thought it was great, but those without Struts background thought it was too much (some suggested making it a longer session or splitting it).
The Principles and Practices of Effective Developers session was based on some of the ideas right from this blog. It is nice to verbalize these ideas and actually get good reviews from the thoughts. This is the first purely non-technical, all process/methodology/idealogy presentation that I have ever done, and people actually liked it.
I asked several times how many people were implementing custom tags. I was surprised how many people were not using custom tags at all. I find custom tags are useful and easy to learn. Hmmmm.... It seemed like a lot of folks use EJB despite the bad press. Maybe a session on doing custom tags would make sense for a future Complete Programmer Network. I like asking people what they do.
I think I am going to split the Struts Primer into three presentations (at some point in the future) as follows: Struts Primer, Mastering Struts Tiles, and Mastering Validation Framework. I also want to create a session on Mastering Custom Tags.
I want to retire Java Tools for Extreme Programming session, because I have given it about 12 times last year. Frankly, I am tired of giving the session.
Saturday, April 12, 2003
Java Freedom Conference
Java Freedom Conference
I've written this example for Extending the Struts Framework for the Java Freedom Conference in Philly. I've been asked to post the source for the case study. If you want the source to the sample code, email me.
Case Study Source Code and Slides
Here is the title and abstract for the talk.
Title: Extending Struts: Bending Struts to fit your needs Abstract: Okay you think you have mastered Struts, but you wish it could just do this one special thing? This session shows you how to go beyond the Struts basics to extend the framework to fit you needs. Struts was designed to be extensible. Learn how to extend it. Advance Struts topics about extending the framework using Struts plugins, and extending the Action Servlet, Custom Actions, the RequestProcessor, and more. This is an advanced topic that assumes previous knowledge of Struts.
Wednesday, April 09, 2003
EJB CMP CMR Performance and WebLogic
I get asked about the performance of CMP and how to avoid frequent loads from the database (per transaction). There are a few tricks. One is you need to setup an extent of an Entity bean as Read-Only if you want really good browsing performance. Second if you need both good browsing performance and occasional access to write to to the beans then you probably want to setup cache-between-transactions in the vendor specific ejb deployment descriptor. Third, never access an entity bean directly if you don't have either of the two setup, instead try to group as many operatoins as you can by using a session facade that groups many operations on a few entity beans if possible (given you design). This is all for now. Of course, I could flush this all out a lot more.... Perhaps I will at a future date.
Broken links for EJB QL Tutorial
All the links are broke for my EJB QL tutorial. It looks like IBM changed the links.
Here are the correct links for anyone who is looking.
Part 1
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp-i.html
Part 2
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp2-i.html
Part 3 (CMR and intro EJB QL)
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp3-i.html
Part 4 (Advanced EJB QL.... every keyword)
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp4-i.html
Part 5 XDoclet and EJB
http://java-tools.eblox.com/index.php?ResinCMPCMRXDocletTutorial
Here are the correct links for anyone who is looking.
Part 1
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp-i.html
Part 2
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp2-i.html
Part 3 (CMR and intro EJB QL)
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp3-i.html
Part 4 (Advanced EJB QL.... every keyword)
http://www-106.ibm.com/developerworks/edu/ws-dw-wscomp4-i.html
Part 5 XDoclet and EJB
http://java-tools.eblox.com/index.php?ResinCMPCMRXDocletTutorial
Presentations for Software Freedom Conference
I finished my presentation on extending the Struts framework using Plug-ins, CustomConfig Objects, and a Custom Request Processor. I built a great case study based on some of the work I did with EJB and Struts in a previous life. I a really proud of the results of the case study. It was a fun project to work on. I eventually want to build a cache of struts extentions that make dealing with EJB in a web application easier.
I am presenting this weekend in Philly on the following topics:
Title: Principles and Practices of Effective Developers
Abstract: Regardless of methodology or technology there are certain universal practices and principles of effective developers. Covers how to use these principles and practices to make effective decisions on methodology, technology selection and dealing with management, other developers and customers.
This is my first presentation on a non-Technical topic. I've done private workshops on this, but never in this public a forum. I hope it goes well. The workshops were really well recieved.
3) Title: Extending Struts: Bending Struts to fit your needs
Abstract: Okay you think you have mastered Struts, but you wish it could just do this one special thing? This session shows you how to go beyond the Struts basics to extend the framework to fit you needs. Struts was designed to be extensible. Learn how to extend it. Advance Struts topics about extending the framework using Struts plugins, and extending the Action Servlet, Custom Actions, the RequestProcessor, and more. This is an advanced topic that assumes previous knowledge of Struts.
Title: Struts 1.1 Feature primer
Abstract: Okay so you have been using Struts for a while, and you want to try some of the new features like Tiles, ValidatorFramework, or you are new to Struts and you want to learn the basics plus some new Struts 1.1 features. This is an entry level introduction to Struts and some of the new features. This assumes some knowlege of Web applications, JSPs and custom tags.
I am presenting this weekend in Philly on the following topics:
Title: Principles and Practices of Effective Developers
Abstract: Regardless of methodology or technology there are certain universal practices and principles of effective developers. Covers how to use these principles and practices to make effective decisions on methodology, technology selection and dealing with management, other developers and customers.
This is my first presentation on a non-Technical topic. I've done private workshops on this, but never in this public a forum. I hope it goes well. The workshops were really well recieved.
3) Title: Extending Struts: Bending Struts to fit your needs
Abstract: Okay you think you have mastered Struts, but you wish it could just do this one special thing? This session shows you how to go beyond the Struts basics to extend the framework to fit you needs. Struts was designed to be extensible. Learn how to extend it. Advance Struts topics about extending the framework using Struts plugins, and extending the Action Servlet, Custom Actions, the RequestProcessor, and more. This is an advanced topic that assumes previous knowledge of Struts.
Title: Struts 1.1 Feature primer
Abstract: Okay so you have been using Struts for a while, and you want to try some of the new features like Tiles, ValidatorFramework, or you are new to Struts and you want to learn the basics plus some new Struts 1.1 features. This is an entry level introduction to Struts and some of the new features. This assumes some knowlege of Web applications, JSPs and custom tags.
Wednesday, April 02, 2003
Blogger Pro
Blogger Pro
I've just upgraded to Blogger Pro. I now have RSS capability.
My RSS feed is here:
http://rickhightower.blogspot.com/rss/rickhightower.xml
Tuesday, April 01, 2003
CTO Forum: Whisky tasting and Jazz
CTO Forum: Whisky tasting and Jazz
I just learned a lot about Whisky tasting. A Whisky expert in full Scottish garb, gave a little seminar on the different types of whisky. I now have a favorite whisky. Before I just stuck to gin and beer.
Pair programming
After the whisky tasting, I had a great conversation with William Shelton and Marcus Leef on pair programming and XP. Both Marcus and William were at the Whisky tasting and Jazz session. They both are students at MIT in the Sloan School of Management. Quite an interesting perspective they both had.
CTO Forum Product Reviews
CTO Forum
Lunch conversations
I am at CTO Forum. When I went to lunch today, I accidentally sat next to John Udell and Jean Paoli. I say accidentally because I had no idea what they looked like. I did recognize both of their names. I was looking for a good place to eat and ended up hearing about France's Microtel, Blogs and XML (bonus). I also had a good conversation with Jason Bloomberg and Ronald Schmelzler from zapThink about BPEL and the next steps in Web Services. I swear some of the best "sessions" at conferences are informal conversations.
Product reviews for InfoWorld
I pitched my idea for a software development column to Mark Jones, the executive news editor. I want to write about development process, skills management, software frameworks etc. I think they are going to pass for now. :(
Mark mentioned that they are looking for articles for their test center. The articles are product reviews.
I told Mark that I would love to write product reviews. I would really like to write product reviews for WebLogic 8.1 (and BEA new development env.; soon to be released), and/or IBM WebSphere 5.0 and WSAD. I have a lot of experience with WebLogic (up through 7.0), and have recently wrote a tutorial for IBM on the IBM WebSphere SDK for Web Services (WSDK). The IBM WSDK for WS is built on top of WebSphere 5.0 so I already have a head start. I have also done a fair bit of writing about JSP, JMS, Struts, XML, Custom Tags, etc (not to mentioned my tutorial on EJB 2.0 CMP CMR which shows up number one on google and is ported to several EJB containers).
Mark said that I had to put the types of products I wanted to review in my blog, and the CTO of InfoWorld (a.k.a. Chad Dickerson) would read it. Hmmm.... sounds like I need to start syndicating my blog. It is time to upgrade to blogspot pro (good I could really use the spell checker). In addition to the above two already mentioned, I would like to do product reviews for Struts 1.1, XDoclet 1.2, JUnit, Eclipse, NetBeans, Maven etc. I wonder if they will review opensource development tools and frameworks as well. Hmmm.... I guess I could ask.
Link to list of my publications
Link to my website
Link to my Achievements
Monday, March 10, 2003
Friday, March 07, 2003
I found this in my archive of blog entries that I never posted. Here it is.
My journey started with less than two hours sleep. I was working on a project late Saturday night finished midnight, and then was too wired to sleep till 2 AM. Then I was up at 4 AM getting ready to leave by 4:30 AM. The project was supposed to be small around 8 hours of work thirty hours later and just before JavaOne I was done. Of course, this is not the way to start a journey, but seems typical. I could have finished the project early on Saturday but decided to spend the time with my family during the day.
I was catching a ride with my brother in law who works at the airport… no use spending the extra money on a cab. I am much more frugal after the Internet boom ended.
The plane ride was non-eventful. I had to fly to a hub then off to SF. I feel asleep whenever I could. It was in this state of semi-consciousness that I made my trip to JavaOne. I enjoy this state. I am most creative when I am forcing myself to stay conscience long enough to catch the next plan ride.
At the hub, I decided to get some Starbucks. This was a mistake. It caused me have to go through security checkpoint again. The line was much longer than I expected. Most people would worry. I quit worrying years ago when it almost killed me—now I do my best and go with the flow. Do your best and try to relax is my motto. The line moved fast and I got the plane while it was still boarding—guzzling my vente mocha all the way.
Drinking the mocha was a big mistake that I would soon regret. On the first leg of the trip I was able to sleep. Now I was fully loaded with enough sugar and caffeine to prevent any remote chance of sleep, but I was too tired to do anything productive—too many late nights were taking their toll. I tried to force sleep. It did not work.
Once I got to SFO, it was time to make it on over to the hotel. I was a bit early. I got there and I could not check in yet. I checked my bag and it was off to memory lane.
I worked in SF during the Internet boom. I worked in the media gulch district, which consisted of old sewing factories and warehouses that were converted into office space. The media gulch district was front and center during the any-lame-idea-can-get-venture-funding days of the Internet boom.
I was only half paying attention to where the hotel shuttle was going during the trip over from SFO. Now as I made it over to Moscone, I realized that I was much further than led to believe from our travel coordinator. Granted I was walking distance from Moscone, but I was told that I was right next to it. I was right next to Union Square. Pretty far if you are supposed to carry over stuff that was sent for the booth.
Oh well, I checked my luggage to the hotel and I am off to gallivant SF. As I am walking along my old haunts, I realize I only vaguely remember a lot of what I must have walked past most every day when I worked here three years ago—is this sleep deprivation or am I stupid.. I was not gone long enough for things to change this much. I remembered things wrong. Now I am hungry and it is lunch time…I am going to find Rickenbaukers and get one of those famous steak sandwiches and look at old Harleys. But, where is Rickenbaukers….after walking around for a while my memory started to coalesce. It is as if my feet knew the way (or my stomach I am not sure which). I finally get to Rickenbaukers only to find out that it is closed on Sunday. Oh what horror….
Then I remember that I did the same thing the last time I was at JavaOne—two years before. Its funny how history repeats itself.
After not finding Rickenbaukers, I decided to eat at this SouthWest Mexican food chain restaurant. I am from the south west, and it is a big mistake to eat at chain mexican restaurants!—it only leads to disappointment.
I then register. And then go hunt for the booth. I don’t have a map so finding it was hard until I borrowed someone’s map only to find I was just about standing next to it
I get to the appointment (meeting at the booth to go over the schedule) early. Leave a note, and decide to crash on the bean bag chairs where I write this nice little story. Still too tired to be productive and too wired to sleep!
Going to JavaOne 2002
My journey started with less than two hours sleep. I was working on a project late Saturday night finished midnight, and then was too wired to sleep till 2 AM. Then I was up at 4 AM getting ready to leave by 4:30 AM. The project was supposed to be small around 8 hours of work thirty hours later and just before JavaOne I was done. Of course, this is not the way to start a journey, but seems typical. I could have finished the project early on Saturday but decided to spend the time with my family during the day.
I was catching a ride with my brother in law who works at the airport… no use spending the extra money on a cab. I am much more frugal after the Internet boom ended.
The plane ride was non-eventful. I had to fly to a hub then off to SF. I feel asleep whenever I could. It was in this state of semi-consciousness that I made my trip to JavaOne. I enjoy this state. I am most creative when I am forcing myself to stay conscience long enough to catch the next plan ride.
At the hub, I decided to get some Starbucks. This was a mistake. It caused me have to go through security checkpoint again. The line was much longer than I expected. Most people would worry. I quit worrying years ago when it almost killed me—now I do my best and go with the flow. Do your best and try to relax is my motto. The line moved fast and I got the plane while it was still boarding—guzzling my vente mocha all the way.
Drinking the mocha was a big mistake that I would soon regret. On the first leg of the trip I was able to sleep. Now I was fully loaded with enough sugar and caffeine to prevent any remote chance of sleep, but I was too tired to do anything productive—too many late nights were taking their toll. I tried to force sleep. It did not work.
Once I got to SFO, it was time to make it on over to the hotel. I was a bit early. I got there and I could not check in yet. I checked my bag and it was off to memory lane.
I worked in SF during the Internet boom. I worked in the media gulch district, which consisted of old sewing factories and warehouses that were converted into office space. The media gulch district was front and center during the any-lame-idea-can-get-venture-funding days of the Internet boom.
I was only half paying attention to where the hotel shuttle was going during the trip over from SFO. Now as I made it over to Moscone, I realized that I was much further than led to believe from our travel coordinator. Granted I was walking distance from Moscone, but I was told that I was right next to it. I was right next to Union Square. Pretty far if you are supposed to carry over stuff that was sent for the booth.
Oh well, I checked my luggage to the hotel and I am off to gallivant SF. As I am walking along my old haunts, I realize I only vaguely remember a lot of what I must have walked past most every day when I worked here three years ago—is this sleep deprivation or am I stupid.. I was not gone long enough for things to change this much. I remembered things wrong. Now I am hungry and it is lunch time…I am going to find Rickenbaukers and get one of those famous steak sandwiches and look at old Harleys. But, where is Rickenbaukers….after walking around for a while my memory started to coalesce. It is as if my feet knew the way (or my stomach I am not sure which). I finally get to Rickenbaukers only to find out that it is closed on Sunday. Oh what horror….
Then I remember that I did the same thing the last time I was at JavaOne—two years before. Its funny how history repeats itself.
After not finding Rickenbaukers, I decided to eat at this SouthWest Mexican food chain restaurant. I am from the south west, and it is a big mistake to eat at chain mexican restaurants!—it only leads to disappointment.
I then register. And then go hunt for the booth. I don’t have a map so finding it was hard until I borrowed someone’s map only to find I was just about standing next to it
I get to the appointment (meeting at the booth to go over the schedule) early. Leave a note, and decide to crash on the bean bag chairs where I write this nice little story. Still too tired to be productive and too wired to sleep!
I found this in my archive of blog entries that I never posted. Here it is.
My journey started with less than two hours sleep. I was working on a project late Saturday night finished midnight, and then was too wired to sleep till 2 AM. Then I was up at 4 AM getting ready to leave by 4:30 AM. The project was supposed to be small around 8 hours of work thirty hours later and just before JavaOne I was done. Of course, this is not the way to start a journey, but seems typical. I could have finished the project early on Saturday but decided to spend the time with my family during the day.
I was catching a ride with my brother in law who works at the airport… no use spending the extra money on a cab. I am much more frugal after the Internet boom ended.
The plane ride was non-eventful. I had to fly to a hub then off to SF. I feel asleep whenever I could. It was in this state of semi-consciousness that I made my trip to JavaOne. I enjoy this state. I am most creative when I am forcing myself to stay conscience long enough to catch the next plan ride.
At the hub, I decided to get some Starbucks. This was a mistake. It caused me have to go through security checkpoint again. The line was much longer than I expected. Most people would worry. I quit worrying years ago when it almost killed me—now I do my best and go with the flow. Do your best and try to relax is my motto. The line moved fast and I got the plane while it was still boarding—guzzling my vente mocha all the way.
Drinking the mocha was a big mistake that I would soon regret. On the first leg of the trip I was able to sleep. Now I was fully loaded with enough sugar and caffeine to prevent any remote chance of sleep, but I was too tired to do anything productive—too many late nights were taking their toll. I tried to force sleep. It did not work.
Once I got to SFO, it was time to make it on over to the hotel. I was a bit early. I got there and I could not check in yet. I checked my bag and it was off to memory lane.
I worked in SF during the Internet boom. I worked in the media gulch district, which consisted of old sewing factories and warehouses that were converted into office space. The media gulch district was front and center during the any-lame-idea-can-get-venture-funding days of the Internet boom.
I was only half paying attention to where the hotel shuttle was going during the trip over from SFO. Now as I made it over to Moscone, I realized that I was much further than led to believe from our travel coordinator. Granted I was walking distance from Moscone, but I was told that I was right next to it. I was right next to Union Square. Pretty far if you are supposed to carry over stuff that was sent for the booth.
Oh well, I checked my luggage to the hotel and I am off to gallivant SF. As I am walking along my old haunts, I realize I only vaguely remember a lot of what I must have walked past most every day when I worked here three years ago—is this sleep deprivation or am I stupid.. I was not gone long enough for things to change this much. I remembered things wrong. Now I am hungry and it is lunch time…I am going to find Rickenbaukers and get one of those famous steak sandwiches and look at old Harleys. But, where is Rickenbaukers….after walking around for a while my memory started to coalesce. It is as if my feet knew the way (or my stomach I am not sure which). I finally get to Rickenbaukers only to find out that it is closed on Sunday. Oh what horror….
Then I remember that I did the same thing the last time I was at JavaOne—two years before. Its funny how history repeats itself.
After not finding Rickenbaukers, I decided to eat at this SouthWest Mexican food chain restaurant. I am from the south west, and it is a big mistake to eat at chain mexican restaurants!—it only leads to disappointment.
I then register. And then go hunt for the booth. I don’t have a map so finding it was hard until I borrowed someone’s map only to find I was just about standing next to it
I get to the appointment (meeting at the booth to go over the schedule) early. Leave a note, and decide to crash on the bean bag chairs where I write this nice little story. Still too tired to be productive and too wired to sleep!
Going to JavaOne 2002
My journey started with less than two hours sleep. I was working on a project late Saturday night finished midnight, and then was too wired to sleep till 2 AM. Then I was up at 4 AM getting ready to leave by 4:30 AM. The project was supposed to be small around 8 hours of work thirty hours later and just before JavaOne I was done. Of course, this is not the way to start a journey, but seems typical. I could have finished the project early on Saturday but decided to spend the time with my family during the day.
I was catching a ride with my brother in law who works at the airport… no use spending the extra money on a cab. I am much more frugal after the Internet boom ended.
The plane ride was non-eventful. I had to fly to a hub then off to SF. I feel asleep whenever I could. It was in this state of semi-consciousness that I made my trip to JavaOne. I enjoy this state. I am most creative when I am forcing myself to stay conscience long enough to catch the next plan ride.
At the hub, I decided to get some Starbucks. This was a mistake. It caused me have to go through security checkpoint again. The line was much longer than I expected. Most people would worry. I quit worrying years ago when it almost killed me—now I do my best and go with the flow. Do your best and try to relax is my motto. The line moved fast and I got the plane while it was still boarding—guzzling my vente mocha all the way.
Drinking the mocha was a big mistake that I would soon regret. On the first leg of the trip I was able to sleep. Now I was fully loaded with enough sugar and caffeine to prevent any remote chance of sleep, but I was too tired to do anything productive—too many late nights were taking their toll. I tried to force sleep. It did not work.
Once I got to SFO, it was time to make it on over to the hotel. I was a bit early. I got there and I could not check in yet. I checked my bag and it was off to memory lane.
I worked in SF during the Internet boom. I worked in the media gulch district, which consisted of old sewing factories and warehouses that were converted into office space. The media gulch district was front and center during the any-lame-idea-can-get-venture-funding days of the Internet boom.
I was only half paying attention to where the hotel shuttle was going during the trip over from SFO. Now as I made it over to Moscone, I realized that I was much further than led to believe from our travel coordinator. Granted I was walking distance from Moscone, but I was told that I was right next to it. I was right next to Union Square. Pretty far if you are supposed to carry over stuff that was sent for the booth.
Oh well, I checked my luggage to the hotel and I am off to gallivant SF. As I am walking along my old haunts, I realize I only vaguely remember a lot of what I must have walked past most every day when I worked here three years ago—is this sleep deprivation or am I stupid.. I was not gone long enough for things to change this much. I remembered things wrong. Now I am hungry and it is lunch time…I am going to find Rickenbaukers and get one of those famous steak sandwiches and look at old Harleys. But, where is Rickenbaukers….after walking around for a while my memory started to coalesce. It is as if my feet knew the way (or my stomach I am not sure which). I finally get to Rickenbaukers only to find out that it is closed on Sunday. Oh what horror….
Then I remember that I did the same thing the last time I was at JavaOne—two years before. Its funny how history repeats itself.
After not finding Rickenbaukers, I decided to eat at this SouthWest Mexican food chain restaurant. I am from the south west, and it is a big mistake to eat at chain mexican restaurants!—it only leads to disappointment.
I then register. And then go hunt for the booth. I don’t have a map so finding it was hard until I borrowed someone’s map only to find I was just about standing next to it
I get to the appointment (meeting at the booth to go over the schedule) early. Leave a note, and decide to crash on the bean bag chairs where I write this nice little story. Still too tired to be productive and too wired to sleep!
Upgrade Your Staff
I wrote down my feeling about skill management and other stuff at the start of 2002. I found this stuff while I was sifting through a wounded laptop that I am replacing.
I thought I would share it.
The dot boom went dot bust. According to Business week 2.0, this bust is a temporary thing due to wild speculation. They cite a study that compares the Internet speculation to the early speculation for railroads and canals in merry old England. The railroad and canals had periods of wild speculation, then a bust, then a long sustained growth cycle.
I remember the bad old days of the dot boom, when you could not get Java developers. The qualification for some places seemed to be a heart beat. A heart-beat developer could make close to six figures and get a hefty supply (about a gazillion) stock options. Finding talented developer during the glory days of the dot boom was tough to say the least.
I left a good job and went chasing the dot com dream. I was given a lot of stock options (about a gazillion—and no I am not a heart beat developer), which turned out to be worthless. I eventually wised up and moved back home, Tucson AZ. I gave up on the two-hour commute and the twelve-hour days.
The funny thing about most of these dot boom shops was that everyone seemed to be a little bit lost. Actually, it started with the management and trickled down to developers. Developer developed software on Internet time, which typically meant painting yourself into a corner. They worked crazy hours and often got nowhere.
The time ended, most shops can go beyond heart-beat developers. Perhaps it is time to upgrade your staff. I know that sounds pretty harsh. Before you judge me, consider there are some humane ways to upgrade your staff.
You could motivate your staff to transcend their current skill level. I think a combination of training, mentoring, pair programming, certification, study grouping and brown bag lunching has a way to motivate your staff to excel.. Remember, individuals will set and achieve goals, but your job as the Alpha Geek is to help motivate others to achieve goals. Your leadership can turn a ho-hum staff into a force to be reckoned with.
Ask yourself this, has every member of your team read the Design Patterns by Gamma et al. If not, why not! If your team is doing EJBs, have they read Mastering EJB by Ed Roman et al at a minimum or EJB Design Patterns and Idioms by Floyd Mariscuea for the more advance.. If your team members are not motivated to transcend their current skill level than they are bound to make costly mistakes. You must encourage this.
This is a two part series. The next part I will define the terms Alpha-Geek, brown bags lunches, mentoring, pair programming, certification, study groups etc.
I thought I would share it.
Upgrade your staff
The dot boom went dot bust. According to Business week 2.0, this bust is a temporary thing due to wild speculation. They cite a study that compares the Internet speculation to the early speculation for railroads and canals in merry old England. The railroad and canals had periods of wild speculation, then a bust, then a long sustained growth cycle.
I remember the bad old days of the dot boom, when you could not get Java developers. The qualification for some places seemed to be a heart beat. A heart-beat developer could make close to six figures and get a hefty supply (about a gazillion) stock options. Finding talented developer during the glory days of the dot boom was tough to say the least.
I left a good job and went chasing the dot com dream. I was given a lot of stock options (about a gazillion—and no I am not a heart beat developer), which turned out to be worthless. I eventually wised up and moved back home, Tucson AZ. I gave up on the two-hour commute and the twelve-hour days.
The funny thing about most of these dot boom shops was that everyone seemed to be a little bit lost. Actually, it started with the management and trickled down to developers. Developer developed software on Internet time, which typically meant painting yourself into a corner. They worked crazy hours and often got nowhere.
The time ended, most shops can go beyond heart-beat developers. Perhaps it is time to upgrade your staff. I know that sounds pretty harsh. Before you judge me, consider there are some humane ways to upgrade your staff.
You could motivate your staff to transcend their current skill level. I think a combination of training, mentoring, pair programming, certification, study grouping and brown bag lunching has a way to motivate your staff to excel.. Remember, individuals will set and achieve goals, but your job as the Alpha Geek is to help motivate others to achieve goals. Your leadership can turn a ho-hum staff into a force to be reckoned with.
Ask yourself this, has every member of your team read the Design Patterns by Gamma et al. If not, why not! If your team is doing EJBs, have they read Mastering EJB by Ed Roman et al at a minimum or EJB Design Patterns and Idioms by Floyd Mariscuea for the more advance.. If your team members are not motivated to transcend their current skill level than they are bound to make costly mistakes. You must encourage this.
This is a two part series. The next part I will define the terms Alpha-Geek, brown bags lunches, mentoring, pair programming, certification, study groups etc.
I wrote down my feeling about skill management and other stuff at the start of 2002. I found this stuff while I was sifting through a wounded laptop that I am replacing.
I thought I would share it.
The dot boom went dot bust. According to Business week 2.0, this bust is a temporary thing due to wild speculation. They cite a study that compares the Internet speculation to the early speculation for railroads and canals in merry old England. The railroad and canals had periods of wild speculation, then a bust, then a long sustained growth cycle.
I remember the bad old days of the dot boom, when you could not get Java developers. The qualification for some places seemed to be a heart beat. A heart-beat developer could make close to six figures and get a hefty supply (about a gazillion) stock options. Finding talented developer during the glory days of the dot boom was tough to say the least.
I left a good job and went chasing the dot com dream. I was given a lot of stock options (about a gazillion—and no I am not a heart beat developer), which turned out to be worthless. I eventually wised up and moved back home, Tucson AZ. I gave up on the two-hour commute and the twelve-hour days.
The funny thing about most of these dot boom shops was that everyone seemed to be a little bit lost. Actually, it started with the management and trickled down to developers. Developer developed software on Internet time, which typically meant painting yourself into a corner. They worked crazy hours and often got nowhere.
The time ended, most shops can go beyond heart-beat developers. Perhaps it is time to upgrade your staff. I know that sounds pretty harsh. Before you judge me, consider there are some humane ways to upgrade your staff.
You could motivate your staff to transcend their current skill level. I think a combination of training, mentoring, pair programming, certification, study grouping and brown bag lunching has a way to motivate your staff to excel.. Remember, individuals will set and achieve goals, but your job as the Alpha Geek is to help motivate others to achieve goals. Your leadership can turn a ho-hum staff into a force to be reckoned with.
Ask yourself this, has every member of your team read the Design Patterns by Gamma et al. If not, why not! If your team is doing EJBs, have they read Mastering EJB by Ed Roman et al at a minimum or EJB Design Patterns and Idioms by Floyd Mariscuea for the more advance.. If your team members are not motivated to transcend their current skill level than they are bound to make costly mistakes. You must encourage this.
This is a two part series. The next part I will define the terms Alpha-Geek, brown bags lunches, mentoring, pair programming, certification, study groups etc.
I thought I would share it.
Upgrade your staff
The dot boom went dot bust. According to Business week 2.0, this bust is a temporary thing due to wild speculation. They cite a study that compares the Internet speculation to the early speculation for railroads and canals in merry old England. The railroad and canals had periods of wild speculation, then a bust, then a long sustained growth cycle.
I remember the bad old days of the dot boom, when you could not get Java developers. The qualification for some places seemed to be a heart beat. A heart-beat developer could make close to six figures and get a hefty supply (about a gazillion) stock options. Finding talented developer during the glory days of the dot boom was tough to say the least.
I left a good job and went chasing the dot com dream. I was given a lot of stock options (about a gazillion—and no I am not a heart beat developer), which turned out to be worthless. I eventually wised up and moved back home, Tucson AZ. I gave up on the two-hour commute and the twelve-hour days.
The funny thing about most of these dot boom shops was that everyone seemed to be a little bit lost. Actually, it started with the management and trickled down to developers. Developer developed software on Internet time, which typically meant painting yourself into a corner. They worked crazy hours and often got nowhere.
The time ended, most shops can go beyond heart-beat developers. Perhaps it is time to upgrade your staff. I know that sounds pretty harsh. Before you judge me, consider there are some humane ways to upgrade your staff.
You could motivate your staff to transcend their current skill level. I think a combination of training, mentoring, pair programming, certification, study grouping and brown bag lunching has a way to motivate your staff to excel.. Remember, individuals will set and achieve goals, but your job as the Alpha Geek is to help motivate others to achieve goals. Your leadership can turn a ho-hum staff into a force to be reckoned with.
Ask yourself this, has every member of your team read the Design Patterns by Gamma et al. If not, why not! If your team is doing EJBs, have they read Mastering EJB by Ed Roman et al at a minimum or EJB Design Patterns and Idioms by Floyd Mariscuea for the more advance.. If your team members are not motivated to transcend their current skill level than they are bound to make costly mistakes. You must encourage this.
This is a two part series. The next part I will define the terms Alpha-Geek, brown bags lunches, mentoring, pair programming, certification, study groups etc.
I wrote down my feeling about last year's JavaOne (March 2002), but I never shared them with anybody. Well my laptop is flaking out, and I am moving over a bunch of files and I read this, and thought I would share it.
JavaWon?
This year’s JavaOne (2002) was good. The technical session were, well, technical and for the most part the marketing spiels were kept to the exhibit hall. This is good. Developers will come to these. Attendance was lower than two years ago when I went, but that is expected. JavaOne is not the mosh pit that it used to be, but the mood was hopeful and upbeat.
I’ve been a fan of Java for a long time. It is a great language, which became a great platform for developing server-side code and I hear other stuff too (I’ve been known to do some Swing development on occasion). I like Java. I use Java. I am firmly in the Java camp at this time and for the past six years or so.
However, the keynotes were a little over the top. And, before I go into a long diatribe about Sun and Scott McNeally, let me say the following. Sun, IBM, et al did an excellent job of providing real choice in the market place.
I do not miss the days when in order to upgrade my first Java IDE (J++) I had to upgrade my operating system to Windows NT 4.0. The real ironic part of this IDE OS upgrade fiasco was that it was for Java and Java is suppose to be cross platform yet the IDE would not work on a later version of the same platform (boo hiss). By the way, I am a big Netbeans fan who is going to try out Eclispe. I like having the Java platform. I like having the choice of best of breed tools.
Apparently it is not enough to like Java and use it. According to Scott McNeally we must become “Java disciples”. Yes he said this in a keynote. I prefer not to mix politics at the office and tend not to be fanatical and dogmatic about technology.
I agree with Sun. Java is a platform. I have the deepest respect and admiration for Scott McNeally, but I don’t agree with him about discipleship. Java is not a religion. Scott McNeally is not a savior. And, Bill Gates is not the anti-savior. Perhaps in the Java Religion it is Jedi McNeally. I can’t decide if Bill Gates is the Borg or Darth Geek in McNeallyism.
First, if you are an IT decision maker, I will not trust you if you are dogmatic about a technology. The best way for Java to win is to continue to be the best technology. IT managers and business folks want the best ROI, i.e., the biggest bang for the buck not a bunch of dogmatic Sun worshippers.
McNeally referred to JavaOne as JavaWon. This may be true. But, the key to winning is not to quit fighting and not to be overconfident. Java is winning, but the battle is not over yet. Scott, the “great monopoly” likes it when companies get over confident.
Yes. I am sure you can spout statistics. Let me spout the past. I was an OS/2 zealot. I was using OS/2 to do Windows 3.1 development at time when Windows 3.1 seemed to crash every twenty minutes (at least for Windows developers). I used OS/2 Window on Windows (WOW) to restart Windows sessions when they died. I really like OS/2. I thought Windows NT was doomed to failure, and OS/2 would rein the supreme OS. I even went to OS/2 user group meetings. Well we all know what happened. Windows NT reined supreme and my IT manager rammed Windows NT down our throats.
Think about the fate of OS/2, Netscape, Novell, WordPerfect, Paradox, Lotus 123 and a long list of former market leaders. Now think about Windows NT/2000, Explorer, MS-Word, Access, Excel and more. To win against .Net is going to take a lot more than dogmatic disciples. Novell, OS/2, WordPerfect, Paradox had dogmatic disciples—it was not enough. It is too early to say Java won. The battle has just begun.
Java is going to have to remain the best technology for getting the job done. It is going to need billions of dollars in research and development and a real commitment (money) from the partner companies. I hope the seven-year head start will give Java some advantage. Java won in the past because companies like BEA, IBM, Sun, Oracle and more got together and competed against the great monopoly.
I am not saying that these companies have not made a major investment in Java. I am just saying that now is not the time to rest on their laurels. There is an 800-pound gorilla heading their way! (Fast forward March 2003, looks like they are doing a good job!)
And, the reality is .Net is very likely going to be a factor. It will attract developers. (Fast forward Mach 2003, not as many as I thought) Microsoft is throwing everything they got into the fray. The Java and .Net battle will benefit one technology. The real winner of this battle will be web services, the lingua franca for B2B and EAI.
One of the messages of this year’s JavaOne is that web services will become part of J2EE. SOAP, ebXML, UDDI, and more will all be supported by J2EE! The upcoming great development platform war will advance the cause of web services like no single platform could do alone. Let me repeat: The real winner of the great platform war will be web services!
If it is not, I hope web services will at least allow me to bridge between my Java applications and .Net applications written by Scott McNeally’s prodigal-sons, the .Net disciples—the Sith.
Given Microsoft’s past track record, might explain Scott’s demeanor. Granted, Microsoft bashing is a time-honored tradition at JavaOne. Typically, Scott does his fair share. In the past he seemed more upbeat about it. Now he seems more serious.
I wrote down my feeling about last year's JavaOne (March 2002), but I never shared them with anybody. Well my laptop is flaking out, and I am moving over a bunch of files and I read this, and thought I would share it.
JavaWon?
This year’s JavaOne (2002) was good. The technical session were, well, technical and for the most part the marketing spiels were kept to the exhibit hall. This is good. Developers will come to these. Attendance was lower than two years ago when I went, but that is expected. JavaOne is not the mosh pit that it used to be, but the mood was hopeful and upbeat.
I’ve been a fan of Java for a long time. It is a great language, which became a great platform for developing server-side code and I hear other stuff too (I’ve been known to do some Swing development on occasion). I like Java. I use Java. I am firmly in the Java camp at this time and for the past six years or so.
However, the keynotes were a little over the top. And, before I go into a long diatribe about Sun and Scott McNeally, let me say the following. Sun, IBM, et al did an excellent job of providing real choice in the market place.
I do not miss the days when in order to upgrade my first Java IDE (J++) I had to upgrade my operating system to Windows NT 4.0. The real ironic part of this IDE OS upgrade fiasco was that it was for Java and Java is suppose to be cross platform yet the IDE would not work on a later version of the same platform (boo hiss). By the way, I am a big Netbeans fan who is going to try out Eclispe. I like having the Java platform. I like having the choice of best of breed tools.
Apparently it is not enough to like Java and use it. According to Scott McNeally we must become “Java disciples”. Yes he said this in a keynote. I prefer not to mix politics at the office and tend not to be fanatical and dogmatic about technology.
I agree with Sun. Java is a platform. I have the deepest respect and admiration for Scott McNeally, but I don’t agree with him about discipleship. Java is not a religion. Scott McNeally is not a savior. And, Bill Gates is not the anti-savior. Perhaps in the Java Religion it is Jedi McNeally. I can’t decide if Bill Gates is the Borg or Darth Geek in McNeallyism.
First, if you are an IT decision maker, I will not trust you if you are dogmatic about a technology. The best way for Java to win is to continue to be the best technology. IT managers and business folks want the best ROI, i.e., the biggest bang for the buck not a bunch of dogmatic Sun worshippers.
McNeally referred to JavaOne as JavaWon. This may be true. But, the key to winning is not to quit fighting and not to be overconfident. Java is winning, but the battle is not over yet. Scott, the “great monopoly” likes it when companies get over confident.
Yes. I am sure you can spout statistics. Let me spout the past. I was an OS/2 zealot. I was using OS/2 to do Windows 3.1 development at time when Windows 3.1 seemed to crash every twenty minutes (at least for Windows developers). I used OS/2 Window on Windows (WOW) to restart Windows sessions when they died. I really like OS/2. I thought Windows NT was doomed to failure, and OS/2 would rein the supreme OS. I even went to OS/2 user group meetings. Well we all know what happened. Windows NT reined supreme and my IT manager rammed Windows NT down our throats.
Think about the fate of OS/2, Netscape, Novell, WordPerfect, Paradox, Lotus 123 and a long list of former market leaders. Now think about Windows NT/2000, Explorer, MS-Word, Access, Excel and more. To win against .Net is going to take a lot more than dogmatic disciples. Novell, OS/2, WordPerfect, Paradox had dogmatic disciples—it was not enough. It is too early to say Java won. The battle has just begun.
Java is going to have to remain the best technology for getting the job done. It is going to need billions of dollars in research and development and a real commitment (money) from the partner companies. I hope the seven-year head start will give Java some advantage. Java won in the past because companies like BEA, IBM, Sun, Oracle and more got together and competed against the great monopoly.
I am not saying that these companies have not made a major investment in Java. I am just saying that now is not the time to rest on their laurels. There is an 800-pound gorilla heading their way! (Fast forward March 2003, looks like they are doing a good job!)
And, the reality is .Net is very likely going to be a factor. It will attract developers. (Fast forward Mach 2003, not as many as I thought) Microsoft is throwing everything they got into the fray. The Java and .Net battle will benefit one technology. The real winner of this battle will be web services, the lingua franca for B2B and EAI.
One of the messages of this year’s JavaOne is that web services will become part of J2EE. SOAP, ebXML, UDDI, and more will all be supported by J2EE! The upcoming great development platform war will advance the cause of web services like no single platform could do alone. Let me repeat: The real winner of the great platform war will be web services!
If it is not, I hope web services will at least allow me to bridge between my Java applications and .Net applications written by Scott McNeally’s prodigal-sons, the .Net disciples—the Sith.
Given Microsoft’s past track record, might explain Scott’s demeanor. Granted, Microsoft bashing is a time-honored tradition at JavaOne. Typically, Scott does his fair share. In the past he seemed more upbeat about it. Now he seems more serious.
Subscribe to:
Posts (Atom)