Tuesday, March 30, 2010

Today's LinkedIn Answers-Inspired Rant

In response to the following question on LinkedIn today:
R&D time - how do folks manage it? - similar to Google's 20% research time - free form, scheduled, pros-con's - approved projects...looking for suggestions.

<RANT>
The old rule of thumb was that a senior IT professional should be engaged in deliverables only 65% - 85% of the time (depending on budget and the intelligence of management). The "unproductive" time was when R&D occurred, along with training.

These days, most R&D I see happening is when it is built into a project plan (either through creative padding or selling the ROI in advance and within a short time frame).

What little R&D I do see happening between projects these days is structured by people too far removed the deliverable level. As such, the time lines are too aggressive and the focus towards mindless repetition of simple examples rather than understanding the technology by stretching it to see what it is capable and where else it will apply.

</RANT>

Monday, March 29, 2010

An Alternative to RUP

I wrote this a long time ago on a Blackberry in a fit of frustration on a project...it still cracks me up

In an effort to reduce the strain on some clients who seem to have difficulty adopting the RUP process, I present to you an alternative methodology based on a model of what they’ve accomplished in the past and continue to strive for in the present.

First, schedule the project. Any project worth doing should have a deadline, and this needs to be set immediately after coming up with a catchy-yet-vague project name. Really import projects require the deadline to be set before the project is named.

Once a completion date is set, work backwards to build a full schedule. If the date is 6 months away, we know it takes as long to do QA as it did to code, so code freeze will be in 3 months. Everyone realizes that requirements need to be gathered, approvals gained, and designs considered, so let’s plan to do that at the same time. Just to make sure there is enough time to get it all done, give it 4 months. The math is clear: start the project last month.

Next, program something. Anything. We’ll find a use for it somewhere. Yes, we’ll give you requirements just as soon as we decide what the project is. And while you program, please create a design document to show that you used design. To make sure it is an accurate description, write it after you’re done coding. Also, please make all documents as boring as possible so others don’t waste valuable company time reading them.

Laugh maniacally to prove you are fully stressed. If you are stressed, then we have an accurate deadline. If you’re relaxed we obviously gave you too much time. If you’re just burnt out, you’re probably faking it. We have a perfect schedule, everything is on time, and if it’s not on time we can always change the requirements to be on time. We also reserve the right to change the requirements if we happen to feel like it. We’ll let you know critical changes during QA so you can add it in while you fix bugs.

Announce publicly the full functionality and the release date of the project. This should be done prior to QA. Also, to build public awareness and industry anticipation, announce that this service is availablet, program something. Anything. We’ll find a use for it somewhere. Yes, we’ll give you requirements just as soon as we decide what the project is. And while you program, please create a design document to show that you used design. To make sure it is an accurate description, write it after you’re done coding. Also, please make all documents as boring as possible so others don’t waste valuable company time reading them.

Laugh maniacally to prove you are fully stressed. If you are stressed, then we have an accurate deadline. If you’re relaxed we obviously gave you too much time. If you’re just burnt out, you’re probably faking it. We have a perfect schedule, everything is on time, and if it’s not on time we can always change the requirements to be on time. We also reserve the right to change the requirements if we happen to feel like it. We’ll let you know critical changes during QA so you can add it in while you fix bugs.

Announce publicly the full functionality and the release date of the project. This should be done prior to QA. Also, to build public awareness and industry anticipation, announce that this service is available now.

Test the application. Hey, we planned for QA early on, and we’re doing it! Be sure to only test the user experience, because this is all the public and our non-IT departments understand. If all of the data is wrong, that’s a production issue. The guys in production have nothing to do anyway, right?

Throw it away and try again. Nothing worked the way it was supposed to, no one uses the software, and we’ve identified a scapegoat (read “lead developer”). Bring in a consulting firm to fix it all. And remember, we have this process in place and we’ve used it before. It’s documented. So make sure the consultants follow this method.

Like any methodology, it needs a catchy acronym to be considered a real process, so lets look at what we do and see what it spells (we would never consider coming up with the acronym and then trying to make the process fit J):
Schedule
Program
Laugh insanely
Announce it’s finished
Test it
Throw it away.

So, there you go. As a viable alternative to the RUP process, I offer you…

SPLATT!

Thursday, March 25, 2010

Extra Required Step When Creating 10.3.2 WLP EAR

Wasted a good week until someone pointed out that OPOE does generates application.xml for exploded deployments (such as within the IDE) , but leaves it out when creating an EAR. So, when you create your WLP EAR project, you must check the "Generate application.xml deployment descriptor" box or the Portal Admin Tools will not get configured properly for the application.

[caption id="attachment_393" align="aligncenter" width="288" caption="You MUST Check This"]WLP EAR Wizard[/caption]

Tuesday, March 23, 2010

Example of Creating a User in Oracle DB for WebLogic

One of those things I ran across recently that I always forget between projects so I thought I would share here:

1 Set the Oracle Home

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/


2 SQL Plus - Idle Instance $ORACLE_HOME/bin/sqlplus /nolog

3 Connect as SYS User

connect sys/welcome1@xe as sysdba;


4 Create the WEBLOGIC_PORTAL

User CREATE USER WEBLOGIC_PORTAL IDENTIFIED BY WEBLOGIC1;


5 Grant Roles and Permissions

GRANT CONNECT, RESOURCE,DBA TO WEBLOGIC_PORTAL;


6 The WLS install seems to expect a table named SYSTABLES, so you will need to create it:

CREATE TABLE SYSTABLES (TEMP NUMBER);

Friday, March 12, 2010

Creating a Local WLS 10.3.2 Domain

While setting up a new project this morning I was reminded of a somewhat counter-intuitive sequence when setting up a local environment (even with the simple Pointbase install). When you get to this screen:



Clicking Next will give you this warning:



Just click OK. The database isn't running at this time.

And, for those who haven't upgraded in a while and don't read the manual, you will want to click Run Scripts when you see this screen:



After the wizard completes, look for the create_db.cmd in the domain root and run it before starting the server. The first start, the server will have problems starting. Let it run until nothing is spit into the console anymore, then kill it and start it again. This time it should come up.

Thursday, March 11, 2010

Blue Screen Haiku

Ed note: This was posted on my old site in 2004. Every time you think we are making progress in computing, read this :)

In Japan, they have replaced the impersonal and unhelpful Microsoft error messages with Haiku poetry messages:

Your file was so big.
It might be very useful.
But now it is gone.
-------------------------
The Web site you seek
Cannot be located, but
Countless more exist.
--------------------------
Chaos reigns within.
Reflect, repent, and reboot.
Order shall return.
-----------------------------
Program aborting:
Close all that you have worked on.
You ask far too much.
------------------------------
Windows NT crashed.
I am the Blue Screen of Death.
No one hears your screams.
--------------------------------
Yesterday it worked.
Today it is not working.
Windows is like that.
---------------------------------
First snow, then silence.
This thousand-dollar screen dies
So beautifully.
---------------------------------
With searching comes loss
And the presence of absence:
"My Novel" not found.
--------------------------------
The Tao that is seen
Is not the true Tao-until
You bring fresh toner.
Stay the patient course.
Of little worth is your ire.
The network is down.
---------------------------------
A crash reduces
Your expensive computer
To a simple stone.
---------------------------------
Three things are certain:
Death, taxes and lost data.
Guess which has occurred.
---------------------------------
You step in the stream,
But the water has moved on.
This page is not here.
---------------------------------
Out of memory.
We wish to hold the whole sky,
But we never will.
--------------------------------
Having been erased,
The document you're seeking
Must now be retyped.
---------------------------------
Serious error.
All shortcuts have disappeared.
Screen. Mind. Both are blank.

Wednesday, March 10, 2010

ClassNotFoundException for PageFlowContextListener

I was a bit surprised to run across this issue for the first time in a 10.3.0 installation.  According to a post on OTN, it is caused by the actual Beehive library not added correctly in config.xml. However, when I ran across it, it was a different library (the sample projects) that were missing, but the same error occurred.

Go figure.

Tuesday, March 9, 2010

How to Check Your Google Listings

To find out what on your site is indexed on Google, go there and run the following search:

site:mydomain.com

Where "mydomain" is your domain name (change the . com if you have a different domain extension).

Click here for an example.

Sunday, March 7, 2010

Dynamic Log Location for log4j

I was really surprised that log4j doesn't have any facility to set the log file location with a relative path. Hard to build a portable application if you need to set the full value of a local path. And don't talk to me about config files, because that requires reading documentation, which is only read less than it is written.

So, if you use the standard log4j servlet approach to start your logging, you can weave in the following to set your path relative to your app:



org.w3c.dom.NodeList nodes = doc.getElementsByTagName("param");;
org.w3c.dom.Node node = null;//nodes.item(0);
org.w3c.dom.NamedNodeMap nodeMap = null;
for(int i=0; i < nodes.getLength(); i++)
{
    node = nodes.item(i);
    nodeMap = node.getAttributes();
    if(nodeMap.getNamedItem("name")
        .getNodeValue().equals("File"))
    {
        node = nodeMap.getNamedItem("value");
        outputFile = new File(getServletContext().getRealPath(node.getNodeValue()));
        outPutPath = outputFile.getAbsolutePath();
        outPutPath = outPutPath.replace('', '/');
        node.setNodeValue(outPutPath);
    }
}




Then you can set the log location to outPutPath.

Enjoy :)

Thursday, March 4, 2010

PCAnywhere and Your Firewall

I'm always forgetting what ports to set for PCAnywhere use. This time I thought I'd share the link I found on PCAnywhere ports at http://www.nthelp.com/NT6/pcanywhere_ip_port_usage.htm.

Though these days I'm using TeamViewer, which has no problem with firewalls though does get filtered by some networks admins.

Wednesday, March 3, 2010

Facelet Face Off on WLP

If you chose the Facelet aspect for your WLP project in 10.3.2, your portlets will use the "native" (i.e., WLP-only) portlet bridge rather than the "JSR-329" (i.e., crystal ball) bridge.  In case you need to reuse your portlets in another portal framework.

I haven't had time to try it out, but in theory one could write the .portlet file by hand and still get the best of both worlds.