Wednesday, August 31, 2005

Techies Flee Computer Jobs

The careers have lost their appeal

As an eager freshman in the fall of 2001, Andrew Mo's career trajectory seemed preordained: He'd learn C++ and Java while earning a computer science degree at Stanford University, then land a Silicon Valley technology job. The 22-year-old Shanghai native graduated this month with a major in computer science and a minor in economics. But he no longer plans to write code for a living, or even work for a tech company.
Mo begins work in the fall as a management consultant with The Boston Consulting Group, helping to lead projects at multinational companies. Consulting, he says, will insulate him from the offshore outsourcing that's sending thousands of once-desirable computer programming jobs overseas.

More importantly, Mo believes his consulting gig is more lucrative, rewarding, and imaginative than a traditional tech job. He characterized his summer programming internships as "too focused or localized, even meaningless."

"A consulting job injects you into companies at a higher level," he said. "You don't feel like you're doing basic stuff."

Mo's decision to reboot his nascent career reflects a subtle but potentially significant industry shift. As tens of thousands of engineering jobs migrate to developing countries, many new entrants into the U.S. workforce see tech jobs as monotonous, uncreative, and easily farmed out�the equivalent of 1980s manufacturing jobs. ">Let's be smart: Poor IT career prospects deter students: "The careers have lost their appeal
As an eager freshman in the fall of 2001, Andrew Mo's career trajectory seemed preordained: He'd learn C++ and Java while earning a computer science degree at Stanford University, then land a Silicon Valley technology job. The 22-year-old Shanghai native graduated this month with a major in computer science and a minor in economics. But he no longer plans to write code for a living, or even work for a tech company.
Mo begins work in the fall as a management consultant with The Boston Consulting Group, helping to lead projects at multinational companies. Consulting, he says, will insulate him from the offshore outsourcing that's sending thousands of once-desirable computer programming jobs overseas.

More importantly, Mo believes his consulting gig is more lucrative, rewarding, and imaginative than a traditional tech job. He characterized his summer programming internships as 'too focused or localized, even meaningless.'

'A consulting job injects you into companies at a higher level,' he said. 'You don't feel like you're doing basic stuff.'

Mo's decision to reboot his nascent career reflects a subtle but potentially significant industry shift. As tens of thousands of engineering jobs migrate to developing countries, many new entrants into the U.S. workforce see tech jobs as monotonous, uncreative, and easily farmed out�the equivalent of 1980s manufacturing jobs

Tuesday, August 30, 2005

Use PTDV to Optimize as400 Application Performance

Use PTDV to Optimize as400 Application Performance
by David Bridgewater


I want to share with you a recent experience: how the right performance tracing tools and techniques brought about a transformation. The tale involves:

a JavaServer Pages (JSP) application (running under WebSphere Application Server (WAS) on the iSeries server)
IBM's Performance Trace Data Visualizer (PTDV), a freely available performance investigation tool for the iSeries
I subjected the application to several performance tests and found that with a moderate number of users, the iSeries CPU was saturated. I had hoped for three or four times the capacity. A quick scan of our application code suggested many possibilities for the problem's cause: hundreds of hefty classes, more strings than a piano factory, complex business routines by the score. Tackling any one of these — the string proliferation, for example — would require substantial intervention through most of the application.

I sought expert advice at this point from IBM UK, which provided Bruce Wassell, a man as wise in the ways of the iSeries as of WebSphere. He showed me how to use PTDV to identify the bottleneck in our code. It turned out that the string proliferation theory was wide of the mark, and a one-hour program fix restored the capacity I had hoped for. The trick was to find the part of the program that needed tuning, and in the three steps in this article, I show you how to use PTDV to do that.

You can download PTDV from http://www.alphaworks.ibm.com/tech/ptdv. PTDV is currently freely available. IBM's policy for the alphaWorks site, however, doesn't guarantee that technologies such as this stay free forever. The alphaWorks Web site states that alphaWorks products are available for download "at the earliest stages of development — before they are licensed or integrated into products — allowing users to evaluate and influence IBM research and development." Some alphaWorks products become open-source products, and some become for-profit products. Although PTDV is an "alpha" product, it has been around a while, at least since the middle of 1999. I found the tool easy to install and fairly robust, probably because of this maturity.

You don't have to install PTDV until Step 3 of this article, though you might want to install it first, so that you can read PTDV's excellent HTML tutorial in conjunction with this article.

Step 1: Find the Hottest Spot
In this step, you're looking for the "hottest spot" in your application, that is, the transaction that yields the biggest figure. I found it best not to second-guess this (and I explain why in Step 2), even though the biggest CPU hitter in my application was far from being the slowest for user response. Clearly, many other factors account for user response in a typical application, such as reading the database, which consumes time but not necessarily CPU. (The CPU time on SQL database access is mostly consumed by another job on the iSeries, outside of the WebSphere subsystem and this article's scope.)

To begin this step, work as your application's sole user. Nobody else should use the application server under WebSphere in any way. Other activity on the iSeries is acceptable, even other application servers running. Perform a typical test script, and for each button-press that causes a page reload, measure the number of CPU milliseconds taken.

On the iSeries, each application server under WebSphere runs as a separate job (i.e., process) within a subsystem named QEJBSBS (note that I'm working with WAS 3.5.5; if you have WAS 4.x, look for QEJBADV4 or QEJBAES4). The WRKACTJOB (Work with Active Jobs) command lets you track down the jobs within QEJBSBS. Scroll to the job whose name matches that of the application server defined in WebSphere. You can set the WRKACTJOB display to show the CPU milliseconds the job takes (press F11 for the relevant view, which displays elapsed data, as Figure 1 shows). [Editor's Note: In various figures of this article, some text irrelevant to the figure's point has been deliberately obscured to protect the author's privacy.]

Here's the process for finding the biggest CPU hitter. Before you start measuring, run all the application parts that you intend to measure. "Second time in" is always better (unless you're specifically interested in a "first time in" performance problem), to ensure that classes have loaded, JSPs have compiled, and singleton classes have been created. These are then eliminated from the CPU calculations.

Next, for each transaction you want to measure:

Refresh the WRKACTJOB view.
Note the number of milliseconds consumed so far by the job (X).
Make your application cause activity on the server (e.g., press the button on the page, or whatever).
When activity ceases (e.g., the page is completely reloaded in the browser), refresh the WRKACTJOB view.
Note the number of milliseconds consumed so far (Y).
Subtract X from Y to arrive at the milliseconds the job consumed.
Step 2: Trace the Transaction
Now that you've identified the hot spot, collect detailed performance trace information for this and nothing else. Why? You run the risk of being overwhelmed with data if you collect performance trace information for more than just the hot spot. In my experience, a traced second or two of CPU time gives as much data as PTDV can handle. Doubtless, PTDV's capacity varies with the size of the iSeries at your disposal, but in any case, as long as you've monitored the correct second, you'll find the knowledge you seek.

Note that to perform the trace, you must be running and loading optimized Java code (see the sidebar "Loading Optimized Java Classes on the iSeries"). On the iSeries, you use the Performance Explorer (PEX) toolset, delivered by default on any iSeries, to perform traces. PTDV is separate from PEX but relies on the PEX-built database. So you need to know just enough about PEX to make PTDV work.

The PTDV tutorial lists the following steps, which I've salted with my observations, for performing a trace:

Identify the job that's running the application server (we covered this in Step 1 of this article).
Display the job to note its defining characteristics (i.e., name, user, and job number).
Run the ADDPEXDFN (Add PEX Definition) command as follows:
ADDPEXDFN DFN(MY_DEFN) TYPE(*TRACE) JOB(123456/QEJB/MYAPPSVR)
TASK(*ALL) MAXSTG(500000) TRCTYPE(*SLTEVT) SLTEVT(*YES)
BASEVT(*PMCO) PGMEVT(*JVAENTRY *JVAEXIT) TEXT('PTDV Article')
I avoid the PTDV tutorial recommendation to run JVAEVT(*OBJCRT), because it swamps me with too much information. PTDV still reports on numbers and sizes of objects created, even if you don't set this parameter.
Have two sessions lined up — one ready to start PEX, and the other to end it. The relevant commands are STRPEX (Start PEX) and ENDPEX (End PEX):


To start:

STRPEX SSNID(MYSESSION) DFN(MY_DEFN)
To end:

ENDPEX SSNID(MYSESSION) RPLDTA(*YES) DTALIB(MYLIB) TEXT('My
Performance Data Traced for PTDV')
Have your browser poised just before the point where you'll press the button to measure your "big hitting" transaction. (Recall the "second time in" advice; you're likely better off running the transaction once before doing the trace.)
Then, in rapid succession:
Execute the STRPEX command.
Execute the transaction (press the button in your application).
Execute the ENDPEX command. You can do this even before the transaction has completed. My notional threshold is not more than 2 CPU seconds on my small AS/400 (which, in the example for this article, generated more than one million Java "events"). Executing ENDPEX before the transaction has completed is fine if the transaction is processing many items in a loop, and you're only interested in analyzing one iteration within the loop.
ENDPEX can take a while, but it gives a "percentage complete" message as performance data is loaded.

Step 3: Visualize the Problem
Now the proper fun begins: using PTDV to visualize your problem. Here are the steps (the PTDV tutorial covers in more depth some of the areas I discuss next):

Install the PTDV server.
Install the client.
Run STRPTDVSVR (Start PTDV Server) to start the server; I prefer to start in batch.
Start the client (I much prefer a thin client). You need Java 1.3 to run the client user interface. You need the name of the session (MYSESSION) from Step 2, and also the name of the iSeries database library where ENDPEX placed the performance data (MYLIB). Figure 2 shows the window where you enter this data.
I observed a big CPU impact on the iSeries running the data load. I found myself working at non-peak times so I wouldn't interfere with other activities.
In the Trace Information window, which Figure 3 shows, click the Job/Thread List tab. The correct application server job is easy to find because it's the only one you traced. Click the expand (i.e., circle-and-line) icon once to expand a list of threads under the job. The threads are uniquely identified with hex numbers. Unfortunately, no descriptive text is present to explain in plain English what each thread does (most have to do with the internals of WebSphere). However, it's easy to identify the thread that burns the most CPU, and chances are that this is your application code. The background-color bars offer simple but effective graphical clues. Look at the CPU Time (µs) column and find the widest bar. The bars give a proportional indication, as you can see in Figure 3, which shows that I had three significant threads to choose from. I had no problem spotting that one of these threads accounted for more than half the time spent.
Double-click the document icon to the left of the row representing the thread identified in the preceding step to launch the Information for thread with task count ID xxxx window, which Figure 4 shows. Despite the window's uninviting title, it's where the action begins, which for me, was at the doPost() method of the top-level servlet in my application. Click the expand icons. You see a real-life sequence diagram unfolding before your eyes — the actual passage of messages between instantiated objects. Head always for the widest bars. In the first stages of exploration, you'll find cumulative CPU concentrated in the highest-level functions. However, sooner or later, as you expand further into the code, clues will begin to appear. Figure 4 shows how the CPU consumed by top-level function LineModellingDelegate comprises mostly three calls to the same function: createTableBean on the TableBeanFactory.
Figure 4 also shows a classic performance issue: a Trace.log routine. Although I turned off tracing for the performance test, and Trace.log exits as soon as called, an unnecessary string is still created as a parameter to the function. However, its significance is marginal compared to the createTableBean calls; trust the tool, not your instincts!
Opening up the first of the three calls, I hit pay dirt: a call to the XMLParser.parseXMLFile routine. As I expand this, I find the 291,952 CPU microseconds expended distributed across many calls to the parseElements function, which Figure 5 shows.
Fixing the Problem
The function names give a strong hint that an XML file is being processed to create an object called a TableBean. Here, some inside knowledge of the application helps. I happen to know that the TableBean exists to render an HTML table. This bean relies on information held in a TableDefinitions.xml file, which tells the Java code how to apply cell formatting to any particular piece of data in any particular table type.

Within parseXMLFile I find the following code:

try {
DOMParser myParser = new DOMParser();
myParser.parse(xmlFile);
doc = myParser.getDocument();
parseElements(doc.getDocumentElement(), new String(""));
// More stuff that parses elements…
} etc.
XML parsing — especially when you use the Document Object Model (DOM) approach — is an expensive operation because it involves scanning an entire XML document into memory. And here, this operation sat directly on the critical path of a user-critical transaction! For every separate user and Web page type, the code was accessed.

The information in this XML file is static and changes only during new releases of our application software. The cleanest solution was simple: Parse the file only once and place the resulting data in Java objects, thus caching it in memory. In fact, for minimal code rewriting, I decided to parse the file when each new table type was first requested.

You could call this a problem occasioned by encapsulation. A developer (rightly) used the process of acquiring a TableBean without needing to investigate how the process worked. But because the inefficient routine was well encapsulated, it was easy to replace with something much more efficient.

The original code — as PTDV traced it — roughly followed the sequence diagram that Figure 6 shows. After the fix, the sequence diagram looked more like what you see in Figure 7. I wrote a simplified version of the code fix to show the principle involved — caching the XML data in an object. If you download and run the code, which Figure 8 shows, you should see the following output:

Getting table type 1…
Doing performance-expensive stuff to parse XML file...
Got table type 1!

Getting table type 2
Doing performance-expensive stuff to parse XML file...
Got table type 2!

Getting table type 1 again…
Got table type 1 again!
The point is that the expensive parseXMLFile routine isn't reinvoked when getting table type 1 for the second time. Table type 1 is already available in the object cache.

Some refinements I could make to the approach include:

Create all necessary TableBeans with a single pass over the underlying XML file.
Move all TableBean creation into the init() code of a servlet, so that the performance hit would be taken entirely by the application server startup and not by the first user to hit each page type after an application server restart.
Adopt the Simple API for XML (SAX) model of XML parsing (which doesn't require the whole document to be loaded into memory).
Sidestep the whole issue by acquiring a persistence framework, which can automate the issues associated with caching data in objects.
Get to the Heart of It
When you're aware of PTDV's pitfalls (i.e., data overwhelm), PTDV is easy to use and interpret. I touched on only one of the performance analysis methods PTDV offers. Other methods, for example, include an Object Information tab, which shows the numbers of each object created by your application, as well as their total and average sizes. You simply click column headings to see this information in descending sequence and quickly reveal "space hogging" objects.

If you have a performance problem with your iSeries Java application, try PTDV. Although I can't promise the spectacular improvements it gave my company's application, PTDV will help you get to the heart of the problem.

David Bridgewater is a technology manager at the Arcadia Group, PLC, one of the UK's largest fashion retailers. You can reach him at David.Bridgewater@arcadiagroup.co.uk. You can reach Bruce Wassell, the IBM consultant who led David to the performance revelations described in this article, at Bruce_Wassell@uk.ibm.com.

Loading Optimized Java Classes on the iSeries
On the iSeries, loading optimized Java classes requires running CRTJVAPGM (Create Java Program) on the .jar files or .class files that constitute your application:

CRTJVAPGM CLSF('/myconvolutedpackagename/MyAppJarFile.jar')
OPTIMIZE(40) ENBPFRCOL(*ENTRYEXIT)
Within the WebSphere console (note that I'm running WAS 3.5.5), you must ensure that the optimized classes are loaded, and that the just-in-time compiler doesn't intervene. You do this by specifying the classpath directly on the application server's command line arguments (do this on the General tab), like this, for example:

-Xms64m -classpath
/QIBM/UserData/…/MyAppJarFile.jar:/QIBM/ProdData/…/rt400.jar
I also ensure that the classpath is removed from the Web application (do this on the Advanced tab), just in case a conflict of interest exists.

Restart the application server after performing these steps.

— D.B.

More as400 performance tips to follow.

Sunday, August 28, 2005

script.aculo.us - web 2.0 javascript

The Web is changing. The 30-year-old terminal-like technology it was originally is gradually giving way to new ways of doing things. The power of AJAX allows for rich user interaction without the trouble that has bugged traditional web applications. Building upon the wonderful Prototype JavaScript library, script.aculo.us provides you with some great additional ingredients to mix in.

Bogle's Blog: Connecting the dots on Google's browser technology strategy

So now we know at least part of the client side development that the Kirland Google team has been working on-- see David Bau's post on Google Talk on the Google blog.

If you connect the dots, you can infer much of the rest of what they must be working on. Back in June, Adam Bosworth was writing in Ajax Reconsidered about how the browser isnt good at listening to external events, such as 'an XMPP message or a VOIP request or a data-changed post for an ATOM feed.'

The XMPP comment was a clear leading indicator of Google Talk. Anyone reading carefully between the lines might have broken the story months early. Let's suppose that the rest of the message is also a leading indicator of what Google would like to do with the browser

IBM opens up Portal to mainframes

IBM is looking to broaden the reach of its WebSphere Portal. A recent upgrade made the 4-year-old software available for the first time on IBM's zSeries mainframe and iSeries midmarket servers, a move IBM hopes will spur customer interest in deploying portal software on platforms for which it has previously not been widely available.

'Most sales, in terms of volume, have been on Windows,' said Ken Bisconti, IBM's vice president of Workplace, portal and collaboration products. 'This is notable in its expansion of our market coverage.'
IBM offers an Express version of WebSphere Portal aimed at smaller businesses, and that software was already available for iSeries servers. However, IBM's full-strength WebSphere Portal strongly outsells Express, according to Bisconti. 'We have a number of customers who are introduced to the Express offering, but end up purchasing the enterprise version because of the scalability limits,' he said.

Das Keyboard - The Blank Keyboard.


If you are an elite programmer who can write sophisticated code under tight deadlines, someone who makes impossible projects possible; or a Silver Web Surfer your colleagues turn to when they need IT advice: this keyboard is for you.

Shouldn't your keyboard reflect your status as one of the elite? We think so!

Das Keyboard is an enhanced 104-key USB PC keyboard equiped with 100% blank keys mounted on precision and individually weighted key switches.

Since there is no key to look at when typing, your brain will quickly adapt and memorize the key positions and you will find yourself typing a lot faster with more accuracy in no time. It is amazing how slow typers almost double their speed and quick typers become blazing fast!

Developing AJAX Applications the Easy Way

AJAX is the buzzword of the moment among web developers, so much so that you could be sick of introductions to AJAX by now (if that's the case, skip down to 'The Chat Web Page'). AJAX is a technology that is hotly debated from many angles, but it has stuck because it encapsulates something that is new from a user's perspective. The functionally that is newly available to all web users is 'in-page replacement': the ability for a web page to change using data from a web server without totally redrawing itself. This functionality has been around in Mozilla and Internet Explorer for a while, but it is only recently that Safari and Konqueror users have been able to join in

ISVs Offer Six-Month Report Card on iSeries Innovation Program

In an early summer press release, IBM boasted of the 'early successes' of its business partner program targeted to help ISVs and tool partners develop software applications and tools for the iSeries. At that point, Big Blue claimed that the Initiative for Innovation program, launched in February and heralded to rousing applause at COMMON in March, had delivered more than 180 new modernized applications.

Mainframes and their staying power

A fellow IBMer whom I just discovered his blog entry through Technorati is having pretty much the same opinion as I over the ability of the IBM mainframe to stay the course, based on its new positionning in the marketplace in the last few years as a high-end enterprise server, as opposed to simply a COBOL-crunching machine.
I was also discussing the same points on IBMs internal blogging website, where I was saying how I could today consider learning mainframe technologies and feel Id have a secure position in the future of the IT industry. I mean, face it, all the buzzwords we keep hearing about, like Resiliency, Grid Computing, High Availability, Virtualization, .. thats the mainframe, dude!
A single z9 could probably provide enough computing power for a whole neighbourhood of internet geeks through virtual linux machines. Star Trek computing power AND omnipresence may not be that far after all

By: Jean-Francois Arseneault

Software sizings: both art and science

Ive started performing Software Sizings for our clients recently. This is where given a set of metrics and business objectives, you estimate the amount of hardware required to support a given (WebSphere) workload over a certain topology. Sounds simple, but the devils in the details
Lets illustrate with an example.
Customer A wants to deploy an application thats not yet developed and would like to know how many servers/processors they will need to support it in production. There are a set of questions to be answered before we can even start:
What topology are you considering for deployment (single tier, two tier, n-tier)?
What edition and version of WebSphere Application Server will you be running on?
What technology platform will you be using (Windows, Linux, iSeries, pSeries, zSeries, etc)?
What Pattern for e-Business best represents the type of deployment considered?
Will authentication be required? (impact on processing requirements)
What is the desired processor utilization rate?
What is the anticipated transactional volume, and what is the nature of that volume

http://arseneault.ca/blog/2005/08/26/software-sizings-both-art-and-science/

Saturday, August 27, 2005

International Talk Like A Pirate Day

Why is this day different from all others?
Why do we need an International Talk Like a Pirate Day?

Make no mistake. We do. But it's a little hard to articulate why, especially when you've made the mistake of referring to your wife as a scurvy bilge rat and tried to order her back into the galley.

Talking like a pirate is fun. It's really that simple.

It gives your conversation a swagger, an elán, denied to landlocked lubbers. The best explanation came from a guy at a Cleveland radio station who interviewed us on the 2002 Talk Like a Pirate Day. He told us we were going to be buried by people asking for interviews because it was a "whimsical alternative" to all the serious things that were making the news so depressing.

In other words, silliness is the holiday's best selling point.

Before we go any further, there's something we need to be clear about. Pirates were and are bad people. Really reprehensible. Even the most casual exploration of the history of pirates (and believe us, casual is an accurate description of our research) leaves you hip deep in blood and barbarity. We recognize this, all right? We aren't for one minute suggesting that real, honest-to-God pirates were in any way, shape or form worth emulating.

So what is it exactly that we're celebrating here, if not pirates? What, you're wondering, is the point?

We're going to be painfully honest here, perhaps fatally so.

The point is, there is no point.

And that's what's fun about Talk Like a Pirate Day specifically, and talking like a pirate in general.

We're talking about the mere image of swaggering pirateness. And while this is a guys' guide, the comely wench will have fun talking like a pirate, too. It's powerful, yet harmless. Perhaps, dare we suggest it, the ultimate aphrodisiac. Try it!

When Sept. 19 rolls around and suddenly tens of thousands of people are saying "arrr" and "Weigh anchor or I'll give you a taste of the cap'n's daughter," it staggers us. They are talking like pirates -- not because two yahoos from the Northwestern United States told them to, but simply because it's fun.

The basics
Advanced pirate lingo
Top 10 Pirate Pickup Lines - updated!
The quick way
The basics
Pirate lingo is rich and complicated, sort of like a good stew. There are several other sites that offer glossaries that are pretty good, and you can find some of them on our links page.

But if you just want a quick fix, a surface gloss, a "pirate patina," if you will, here are the five basic words that you cannot live without. Master them, and you can face Talk Like a Pirate Day with a smile on your face and a parrot on your shoulder, if that's your thing.

Ahoy! - "Hello!"

Avast! - Stop and give attention. It can be used in a sense of surprise, "Whoa! Get a load of that!" which today makes it more of a "Check it out" or "No way!" or "Get off!"

Aye! - "Why yes, I agree most heartily with everything you just said or did."

Aye aye! - "I'll get right on that sir, as soon as my break is over."

Arrr! - This one is often confused with arrrgh, which is of course the sound you make when you sit on a belaying pin. "Arrr!" can mean, variously, "yes," "I agree," "I'm happy," "I'm enjoying this beer," "My team is going to win it all," "I saw that television show, it sucked!" and "That was a clever remark you or I just made." And those are just a few of the myriad possibilities of Arrr!

Advanced pirate lingo; or On beyond “Aarrr!”
Once you've mastered the basics, you're ready to start expanding your pirate vocabulary. Try these for starters

Beauty – The best possible pirate address for a woman. Always preceded by “me,” as in, “C’mere, me beauty,” or even, “me buxom beauty,” to one particularly well endowed. You’ll be surprised how effective this is.

Bilge rat – The bilge is the lowest level of the ship. It’s loaded with ballast and slimy, reeking water. A bilge rat, then, is a rat that lives in the worst place on the ship. On TLAP Day – A lot of guy humor involves insulting your buddies to prove your friendship. It’s important that everyone understand you are smarter, more powerful and much luckier with the wenches than they are. Since bilge rat is a pretty dirty thing to call someone, by all means use it on your friends.

Bung hole – Victuals on a ship were stored in wooden casks. The stopper in the barrel is called the bung, and the hole is called the bung hole. That’s all. It sounds a lot worse, doesn’t it? On TLAP Day – When dinner is served you’ll make quite an impression when you say, “Well, me hearties, let’s see what crawled out of the bung hole.” That statement will be instantly followed by the sound of people putting down their utensils and pushing themselves away from the table. Great! More for you!

Grog – An alcoholic drink, usually rum diluted with water, but in this context you could use it to refer to any alcoholic beverage other than beer, and we aren’t prepared to be picky about that, either. Call your beer grog if you want. We won’t stop you! Water aboard ship was stored for long periods in slimy wooden barrels, so you can see why rum was added to each sailor’s water ration – to kill the rancid taste. On TLAP Day – Drink up, me hearties! And call whatever you’re drinking grog if you want to. If some prissy pedant purses his lips and protests the word grog can only be used if drinking rum and water, not the Singapore Sling you’re holding, keelhaul him!

Hornpipe – Both a single-reeded musical instrument sailors often had aboard ship, and a spirited dance that sailors do. On TLAP Day – We are not big fans of the capering, it’s not our favorite art form, if you will, so we don’t have a lot to say on the subject, other than to observe that the common term for being filled with lust is “horny,” and hornpipe then has some comical possibilities. “Is that a hornpipe in your pocket, or are you just glad to see me? Or both?”

Lubber – (or land lubber) This is the seaman’s version of land lover, mangled by typical pirate disregard for elocution. A lubber is someone who does not go to sea, who stays on the land. On TLAP Day – More likely than not, you are a lubber 364 days of the year. But not if you’re talking like a pirate! Then the word lubber becomes one of the more fierce weapons in your arsenal of piratical lingo. In a room where everyone is talking like pirates, lubber is ALWAYS an insult.

Smartly – Do something quickly. On TLAP Day – “Smartly, me lass,” you might say when sending the bar maid off for another round. She will be so impressed she might well spit in your beer.

Top Ten Pickup lines for use on International Talk Like a Pirate Day
(We came up with these in an effort to interest The Other Dave (Letterman) in TLAPD. His staff liked 'em, but alas, his show was"dark" the week of Sept. 19.)

10 . Avast, me proud beauty! Wanna know why my Roger is so Jolly?

9. Have ya ever met a man with a real yardarm?

8. Come on up and see me urchins.

7. Yes, that is a hornpipe in my pocket and I am happy to see you.

6. I'd love to drop anchor in your lagoon.

5. Pardon me, but would ya mind if fired me cannon through your porthole?

4. How'd you like to scrape the barnacles off of me rudder?

3. Ya know, darlin’, I’m 97 percent chum free.

2. Well blow me down?

And the number one pickup line for use on International Talk Like a Pirate Day is …

1. Prepare to be boarded.

Bonus pickup lines (when the ones above don't work, as they often won't)
They don’t call me Long John because my head is so big.

You’re drinking a Salty Dog? How’d you like to try the real thing?

Wanna shiver me timbers?

I’ve sailed the seven seas, and you’re the sleekest schooner I’ve ever sighted.

Brwaack! Polly want a cracker? … Oh, wait. That’s for Talk Like a PARROT Day.

That’s the finest pirate booty I’ve ever laid eyes on.

Let's get together and haul some keel.

That’s some treasure chest you’ve got there.

Top Ten Pickup Lines for the Lady Pirates

By popular demand ...

10. What are YOU doing here?

9. Is that a belayin' pin in yer britches, or are ye ... (this one is never completed)

8. Come show me how ye bury yer treasure, lad!

7. So, tell me, why do they call ye, "Cap'n Feathersword?"

6. That's quite a cutlass ye got thar, what ye need is a good scabbard!

5. Aye, I guarantee ye, I've had a twenty percent decrease in me "lice ratio!"

4. I've crushed seventeen men's skulls between me thighs!

3. C'mon, lad, shiver me timbers!

2. RAMMING SPEED!

...and the number one Female Pirate Pick-up Line:

1. You. Pants Off. Now!

Java Performance Community

The mission of this project is to become a destination for performance issues throughout the stack:
Hardware: performance features and tuning of specific processors, systems and BIOS
OS: operating system specific tuning and configuration
Java Platform: JVM tuning and code development best practices
Application Server: tuning thread and connection pools, design idioms
Web Services: XML parser and SOAP primitive performance
Portal: best practices for putting application servers, identity management, and dynamic web content all together
Desktop: startup, footprint and graphics optimization
Grid: how to optimize Java applications in a distributed computing environment

This project originates with Sun's Java Performance Group and is intended not only as a way of providing feedback to Sun about Java performance but also as a vehicle to uplevel performance in the entire Java ecosystem

How to Resign from a Job : Lifehacker

Yay! You have a new job! Now what do you do about your old one? Leaving a workplace can be uncomfortable. But just like so many other things, a plan can help make this process significantly easier and less stressful

Motorola A780 cellphone with GPS navigation

Motorola announced its first cell phone with built-in satellite navigation for Europe the A780. This Linux-based flip-phone model also has a large color touch screen that enables it to display full-featured satellite navigation

digg

Digg is a technology news website that combines social bookmarking, blogging, RSS, and non-hierarchical editorial control. With digg, users submit stories for review, but rather than allow an editor to decide which stories go on the homepage, the users do

GTalk Tweaks

Here are some Tweaks for Google Talk

Apache Geronimo uncovered

Discover the Apache Geronimo application server through the eyes of someone who's used IBM WebSphereR Application Server for many years (along with other commercial J2EE application servers). This tutorial explores the ins and outs of Geronimo, comparing its features and capabilities to those of WebSphere Application Server, and provides insight into how to conceptually architect sharing an application between WebSphere Application Server and Geronimo

WebNavigator

Ever wanted to be notified when that new toilet paper becomes available? or that usb pen is sold at an extra low price? or a new job is posted by that company websites?
WebNavigator helps creating search agents to retrieve dynamic data from the Web.
An awful lot of websites let users search their data using web interface. Usually these contents are not accessible via search engines such as Google.
WebNavigator allows to:
define sites to be searched
choose the search criteria
define the result area inside the page
choose conditions to classify the results (no results? no new results? something new)
receive notification for update

Wicket 1.0.2 web framework available

Wicket is a Java web application framework that takes simplicity, separation of concerns and ease of development to a whole new level. Wicket pages can be mocked up, previewed and later revised using standard WYSIWYG HTML design tools. Dynamic content processing and form handling is all handled in Java code using a first-class component model backed by POJO data beans that can easily be persisted using your favourite technology

Name That Game

PBS's site has a neat game where you listen to retro game sounds and try to guess which game they're from.
The site also has some other retro game trivia too

Super $500 Myth Project

GOALS FOR THE PROJECT:

~Remote Upgrade Capability~
~Single-Tuner Mythtv Frontend and Backend~
~MAME Game Server~
~Streaming Music Server~
~Apache Web Server~
~MySQL DB Server~
~Samba/NFS File Server~
~20+ Line SIP-PBX (well no, but I could)~
~Photo Gallery Server~
~Proftpd Server~
~X-10 Home Controller Server~

How to Screen Print a Poster. Start to Finish!

HOW TO make a Powerbook in to a Wi-Fi access point!

Free Neighborhood Wi-Fi

When Tony Guagliardo moved to Manhattan�s East Fourth Street, he didn�t know anyone in the neighborhood. Then one day, while trying to get wireless Internet in his apartment, he noticed an open Wi-Fi network named Neighbornode. He chose it, launched his browser, and a message board popped up welcoming him to the Fourth Street Avenue B Node. The network had been set up by a local resident who wanted to share his Internet connection. Soon, Tony�s neighbors were using it to discuss local restaurants, a community art project and even the block�s homeless guy, Eddie

Magazine CoverMake your own Magazine Cover

Another cool Flickr app- Make your own magazine cover! Be a superstar! Prove to your friends how famous you really are! They are currently cranking out 268 covers/hour. Just finished cover 3280

Thursday, August 25, 2005

Performance Comparison of DDS-Defined Files and SQL-Defined Files

There are a variety of reasons to use SQL Data Definition Language (DDL) rather than Data Definition Specifications (DDS) to define your iSeries database files (or tables and views, as they're known in SQL terminology). Many SQL functions aren't available in DDS (e.g., views with summary values), and SQL is both IBM's and the industry's standard database language. But there's another important reason � performance. For many situations, access is faster for files defined with SQL DDL than with DDS.
To understand the performance implications of using SQL versus DDS, it is important to talk about some of the architectural basics, including differences between SQL and DDS. Fundamentally, SQL tables are OS/400 physical files, and SQL views and indexes are OS/400 logical files. As a result, many of the capabilities and behaviors of SQL objects are identical or similar to their OS/400 counterparts. But there are two very important differences: data validation and access path size

Google Talk Available Early

smash writes 'Google's new IM service is already live. All you need is a Jabber-compatible Instant Messaging client (such as Apple's iChat, or gaim), and a GMail address.' This should answer, at least in part, all of the speculation that has been flying around the net over the last couple of days

AMD Issues Dual-Core Chip Challenge To Intel

Advanced Micro Devices Inc. issued a challenge to Intel Corp. to conduct a head-to-head competition of dual-core server microprocessors

Top 10 data destruction disasters

Ontrack Data Recovery unveiled its 2004 list of the 10 strangest and funniest computer mishaps

Japan plans test of 'new Concorde

Japan's space agency plans to launch an arrow-shaped airplane at twice the speed of sound high over the Australian outback as early as next month in a crucial test of the country's push to develop a supersonic successor to the retired Concorde

Saturday, August 20, 2005

How to Use Google Maps EZ

HP creates interactive coffee table called Misto news story

HP has created a futuristic concept coffee table that will allow you to share images and information with others from the comfort of your sofa rather like a large web tablet with legs.

The large coffee table design with a touch screen has been designed to complement other media devices in the home and will allow users to view information without having to rely on the television as the main point of call. Users will be able to interact with the Misto table by grabbing images or content and moving them around just as you would if you were sorting papers on a table or desk

Backup Del.icio.us with Excel

If you have Excel 2003 and use the social bookmarking tool Del.icio.us, you can backup your bookmarks in Excel

One Bag (all about packing, luggage, and travelling light)

There's no question: overpacking easily heads the list of biggest travel mistakes. Thus this Web site, offering exhaustive (some might say exhausting) detail on the art of travelling light, living for an indefinite period of time out of a single (carryon-sized) bag

My Dead Hard Drive story or How I restored my save games

Here's a nice story about how someone fixed their own hard drive. I like how they documented the entire process from figuring out what type of screws to use to swapping out the parts from a new drive to the old one.

Brewing - Wikipedia, the free encyclopedia

Brewing is the production of alcoholic beverages through fermentation. This is the method used in beer production, although the term can be used for other drinks such as sake, mead and wine. The term is also sometimes used to refer to any chemical mixing process

HOW TO Elevator Hacking...

The designers of some elevators include a hidden feature that is very handy if you're in a hurry or it's a busy time in the building (like check-out time in a hotel). While some elevators require a key, others can be put into 'Express' mode by pressing the 'Door Close' and 'Floor' buttons at the same time. This sweeps the car to the floor of your choice and avoids stops at any other floor

Make a Home made, open source mp3 Player

The main goal of this project is to create an open design for a portable MP3 player, in both hardware and software. The secondary goal of this project is to make it as simple to construct, and as cheap, as possible.
The design is based around the AVR Butterfly from Atmel. The use of this module greatly simplifies the hardware design and constrution and packs plenty of punch for $19.99 USD. The remaining hardware can be easily placed on a single sided PCB. The MP3 decoding is handled by a VS1001K decoder chip from VLSI Solution Oy. This chip also has an onboard DAC with enough power to drive headphones, simplifying the board design even further

DIY High Quality A/V Cables

In this episode we teach you how to make the same cables that most broadcast engineers use for their own projects and talk about why they don't buy those expensive cables at the stores. We show you the tools and how to use them so that you can become the cable making professional you were meant to be. Finally, we show you how to organize the rat's nest behind the TV for that professional look and a broadcast quality signal

REV3

Inject audio over Bluetooth with the Car Whisperer

This new toool is called The Car Whisperer and allows people equipped with a Linux Laptop and a directional antenna to inject audio to, and record audio from bypassing cars that have an unconnected Bluetooth handsfree unit running. Since many manufacturers use a standard passkey which often is the only authentication that is needed to connect.
This tool allows to interact with other drivers when traveling or maybe used in order to talk to that pushy Audi driver right behind you ;) . It also allows to eavesdrop conversations in the inside of the car by accessing the microphone

Mr. Jalopy's introduction to welding

If you need metal stuck together, there is no quicker path than buying a portable 110-volt wire-feed welder. Mr. Jalopy's introduction to welding will help you understand the process and show how you can be a welder by the end of the weekend--and end up with a couple of jigs for the effort.

A pinhole camera that is taking one continuous picture

Build a Stair-climbing Robot from R/C Car Parts

An Autonomous Six Wheel Off-Road Robot with Differential All-Wheel Drive, All-Wheel Independent Suspension and Static/Dynamic Stability

stand-alone Zigbee radios

Adding more flexibility to the line of products supporting the ZigBee and 802.15.4 standards, MaxStream has released stand-alone XBee-PRO radios that allow for quick connections to both RS-232 and USB-enabled devices. The stand-alone XBee-PRO radio is completely compatible with networks operating on XBee and XBee-PRO technology and includes a durable aluminum housing, 2.1 dBi dipole antenna and the choice of an RS-232 or USB connection

Irvine Underground - lockpicking interview and howto

Read on to hear more about lock pickers, lock smiths, the trend of security-through-obscurity policy in the physical security industry, and a quick howto by yours-truly on picking a deadbolt!

Thursday, August 18, 2005

Gizmo Project Trumps Skype

What sounds like a science experiment from Gremlins or the code name of the next cell phone operating system? It's the latest effort from Michael Robertson, the guy who previously brought us MP3.com and Lindows Linspire

Kirill Grouchnikov's Blog: How to use "undocumented secret" Swing properties

How to use "undocumented secret" Swing properties: "A spurious outburst of 'undocumented secret' features of Swing keep popping up lately. The word 'undocumented' seems to imply that no official Java documentation on Sun mentions them, and it's only after hours of poring over the JDK code the authors finally distilled these gems. Let's start then?

Friday, August 12, 2005

The Origins of Ctrl Alt Del

The guy who invented Ctrl Alt Del explains how and why

Ireland today is the richest country in the European Union after Luxembourg.

Here's something you probably didn't know: Ireland today is the richest country in the European Union after Luxembourg.
Yes, the country that for hundreds of years was best known for emigration, tragic poets, famines, civil wars and leprechauns today has a per capita G.D.P. higher than that of Germany, France and Britain. How Ireland went from the sick man of Europe to the rich man in less than a generation is an amazing story. It tells you a lot about Europe today: all the innovation is happening on the periphery by those countries embracing globalization in their own ways - Ireland, Britain, Scandinavia and Eastern Europe - while those following the French-German social model are suffering high unemployment and low growth

Don't Get Cozy With Ajax Just Yet

AJAX, the web technology that is spreading like wildfire and powers Google Maps, Flickr, Gmail, and even parts of Digg, is on everyone's mind right now. The problem is, AJAX provides the biggest security hole in years, allowing your keystrokes to be monitored, and other negative things. Devs and users, don't get too cozy with AJAX just yet

You're Fired! Donald Trump is Blogging!

Ladies and gentlemen, we interrupt your RSS feed reading tonight to alert you that Donald Trump is blogging. Comments and trakcbacks are turned on and yes, there's an RSS feed. Alright! As Michael Gartenberg said, blogging is now officially mainstream

Web Development Done Right

And now there's Wicket. Talk about a mind blowing experience, it literally took me ten minutes to have a sample application up and running! The Wicket API is very Swing like, which was a welcome change for me, and allowed for a very familiar development experience. There is even an extension that allows for direct use of a Swing TreeModel. There are so many things that I like about this framework, but here's a quick list thus far:
Component framework allows for building a library of reusable building blocks.
Example applications are able to run out-of-the-box. The embedded Jetty instance makes startup a snap, and allows for you to start tweaking the example apps to really play around with the API.
NO XML!

Google supports the * wildcard now

Google has expanded its search capabilities to include wildcard entries so Web surfers can look for specific pieces of information easier and faster.
'If search engines were truly intelligent, you could just pose a question the same way you would ask a person.
'An alternative is to get the search engine to 'fill in the blank', so instead of asking 'who invented the parachute', you can enter the query 'the parachute was invented by *'', Google research scientist Hiyan Alshawi wrote in his blog.
The wildcard search is, according to Alshawi, very useful when trying to answer specific questions or 'exploratory searches'. He cites 'Glasgow is the * capital of Europe' as a good example of such a search

U.S. officials go to hackers' convention to recruit - Computerworld

U.S. officials go to hackers' convention to recruit - Computerworld: "As scam artists, organized-crime rings and other miscreants find a home on the Internet, top federal officials are trolling hacker conferences to scout talent and talk up the glories of a career on the front lines of the information wars.
'If you want to work on cutting-edge problems, if you want to be part of the truly great issues of our time ... we invite you to work with us,' Assistant Secretary of Defense Linton Wells told hackers at a recent conference in Las Vegas

Elastic Path 4.0

Elastic Path is a developer friendly Java ecommerce platform for the development of sophisticated and evolving ecommerce stores. Default functionality includes management of product catalogs, merchandising, promotions, customers, orders, shipping, tax, payment, and reporting. It has customizable business logic, allowing for very simple shopping cart checkout procedures or very complex ones. Because of its Java/J2EE framework, it can be conveniently integrated with existing data stores, legacy applications, accounting, ERP, CRM, and SCM systems. Utilizing the Struts Web framework, it runs on almost any Java Application Server and natively supports multiple databases such as MySQL, MS SQL, DB2, PostgreSQL, and Oracle via Hibernate

Thursday, August 11, 2005

iSeries Has Right Stuff for a Rebound, Analyst Says

All this year, since the appointment of Mark Shearer as iSeries general manager, IBM has promised that 2005 is going to be a turnaround year for the iSeries. Can they pull it off? Analyst Charles King, lead analyst for Pund-IT Research, believes they can

Tuesday, August 09, 2005

AJAX JSP Tag Library 1.0

The AJAX Tag Library is a set of JSP tags that simplify the use of Asynchronous JavaScript and XML (AJAX) technology in JavaServer Pages. This tag library eases development by not forcing J2EE developers to write the necessary JavaScript to implement an AJAX-capable web form

AOL Rising

Maybe its because I now work at an Internet Portal and thus am more aware of these things, but it seems that AOL is making all the right moves lately to become a serious competitor to MSN and Yahoo! Let's tick off the things they've done over the past month or so:

Russell Beattie

Saturday, August 06, 2005

The revolution begins, from Paul Graham, the enterprise is dead

Some questions, how does a startup identify itself, if doesnt have proper funding? IBM wont be quick to invest in a bunch of kids in an apartment."

What Business Can Learn from Open Source

Lately companies have been paying more attention to open source. Ten years ago there seemed a real danger Microsoft would extend its monopoly to servers. It seems safe to say now that open source has prevented that. A recent survey found 52% of companies are replacing Windows servers with Linux servers

Friday, August 05, 2005

Michael Jacksons Latest Album Has Flopped

One month after being cleared of sex assault charges, Michael Jackson's latest album, The Essential Michael Jackson, has flopped. In the first week of its release only 8000 copies were sold. At this pace it will take nearly one hundred years to equal his most popular album, Thriller, which has sold 40 million copies. Jackson may have been cleared of all charges, but his fans aren't buying his product. Is this a portent of things to come? Let's look at some of the reasons why Michael Jackson may be long 'past peak' when it comes to entertaining in the US

WiFi and Bluetooth fight for bandwidth

WLAN (wireless LAN) using the WiFi (Wireless Fidelity) IEEE 802.11b/g protocol is becoming standard in PCs and laptop computers, and it is making its way into PDAs and other portable data appliances. At the same time, Bluetooth is arising as a wireless-serial-cable replacement for headsets and microphones in all kinds of mobile-system applications. They are not exactly market competitors, but they share the same frequency band, and, without careful design, that scenario means trouble

jo!, the unknown development servlet container

The Early History of Ant Development

Stefan recently noted that it is five years since the first public release of Ant as an independent project release. A while ago I was asked by someone, researching open source development, for a description of Ants development process. What I produced really described the early history of Ant development, which Ive edited a bit for this entry

Codefeed

Camcorder pirate charged in U.S.

A man has become the first ever person to be indicted under a new law in the United States that prohibits making 'cam' copies of movies in movie theatres using a concealed camcorder, the U.S. Justice Department stated. Curtis Salisbury, 19, of Missouri made copies of films such as 'The Perfect Man' and 'Bewitched' which were later distributed around the world by a 'warez group'. Later on these movies landed on P2P networks where they were downloaded and shared by possibly millions of people

Disk failure monitoring

These jobs will report when a disk drive dies, etc.

Autostart job entry QS9AJE in subsystem QSYSWRK is supposed to start
these.

SBSD (QSYS/QSYSWRK)
JOB (QS9AJE)
JOBD(QSYS/QS9AJE)

Thursday, August 04, 2005

Common Java Coding Errors

When we are new to a programming language, we tend to commit the same errors over and over. New Java programmers tend to be fond of throwing NullPointerExceptions. This exception is caused when an object's attributes or methods are referenced before the object is instantiated--or after the object has been set to null. Here are more common errors to look out for in your code

Building Web Components Without a Component Framework

JSF is touted to be the ultimate component framework for Java web application programming. Tapestry claims to be based on the idea of component development. And across enemy lines, ASP.NET generated a whole new market for web components. What are web components and can they be developed with something more traditional like JSP and Struts?

Google's bad manners | InfoWorld | TechWatch Blog | August 3, 2005 04:28 PM | By Jack McCarthy

Chad Dickerson says Google's recent patent around RSS advertising is 'very strange,' particularly since InfoWorld was doing something very similar at least six months before Google.
'Now, we definitely knew we were onto something new back then, so I posted about it immediately, even following up recently on the two-year anniversary of our jump into RSS advertising,' Dickerson, InfoWorld's CTO, wrote on Aug. 1.

It's hard to ignore a story like this when, well, we are part of it

if you try to skimp on programmers, you'll make crappy software, and you won't even save that much money

Roughly speaking, if you try to skimp on programmers, you'll make crappy software, and you won't even save that much money.

The same thing applies to the entertainment industry. It's worth hiring Brad Pitt for your latest blockbuster movie, even though he demands a high salary, because that salary can be divided by all the millions of people who see the movie solely because Brad is so damn hot.

Joel on Software

Wednesday, August 03, 2005

The MoneySavingExpert.com Free UK FlightChecker

The FlightChecker finds when to go to get a rock bottom price. Just ask it to find all flights under £2 (before taxes) to a destination, rather than the cheapest price for a specific journey like traditional flight comparison services (listed at the end)

UK Mobile Cost-Cutting Plan

This weeks Deal is a mobile phone cost cutting system, quickly finding you a top price at speed, saving some over 1,000 a year."

FREE CALLS TO UK/IRISH LANDLINES FROM A PC

Discount phone provider call1899, has started a trial Voip service which allows you to call landlines in the UK and Ireland from your PC for free. To do so you simply download its software, and then make the calls via a headset and microphone on your computer. To get full access you do need to pay a �1 account opening charge, but this is a one-off payment.

The quality isn�t great, but is workable, providing you�re on broadband. Sometimes it is difficult to get through, but at least you�re not paying for the calls.

Why is it so cheap?


Its game plan is to make you use this Voip service for international calls and calls to mobiles, yet for those the price isnt much better than the best normal phone to phone services (including 1899s own service) and there the quality is better (see Cheapest UK Landline Provider and Cheapest Way to Call Mobiles article).

Of course as its a trial at some stage it may up the price, but it is worth using until it does

The Blog 500 Challenge (prize: $50,000 in advertising or $10,000 in cash)

Some background: Having created what became an absurdly powerful 100 list with my last company, Silicon Alley Reporter, Ive seen the controversy, venom, and power such lists can create. Ive got some mixed feelings about them truth be told. These lists are really powerful at building an industry. They help define emerging spaces, and they get new players press, readers, and clients (i.e. advertisers). So, a good list is good, and a bad list is well bad. We have a bad list now and we need a good list

Yahoo to launch blog ad network | Tech News on ZDNet

The Sunnyvale, Calif.-based company has been working for months on a self-serve advertising service tailored to bloggers and other small Web publishers, a move that homes in on Google's territory

uitags makes developing friendly user interfaces easy

uitags is a JSP custom tag library (taglib) that makes developing friendly user interfaces easy. It aims to help developers create interactive UIs that let end-users work efficiently. It includes well-known UI components, such as optionTransfer

Tuesday, August 02, 2005

Eclipse WTP 0.7 / BIRT 1.0.1RC1 released

The long awaited final release of the Eclipse Web Tools Platform 0.7 has been released. You can download it on the download page.
Additionally the Eclipse Business Intelligence and Reporting Tools 1.0.1RC1 have been released too

JDBC and Class.forName explained