Monday, December 12, 2005
Does Anybody Care About AIX on the iSeries?
AIX on the iSeries. It's been available for approximately one year, but what is its impact? The sales pitch from IBM is impressive: server consolidation, virtualization, infrastructure simplification, return on investment, total cost of ownership, support for multiple operating systems, expansion of the application universe, and, not to be downplayed, replacement of competitors' Unix boxes. Sounds like something for everyone or, at least, everyone who has Unix playing a role in the data center. So, what's the story?
Saturday, November 19, 2005
Get a better handle on Struts actions, with Spring
Struts Recipes co-author George Franciscus is back with another great Struts integration recipe -- this time for importing Struts applications into the Spring framework. Follow along as George shows you how to revamp Struts actions so they can be managed just like Spring beans. The result is a boosted web framework that easily reaps the benefits of Spring AOP
Sunday, October 23, 2005
Get a better handle on Struts actions, with Spring
Struts Recipes co-author George Franciscus is back with another great Struts integration recipe -- this time for importing Struts applications into the Spring framework. Follow along as George shows you how to revamp Struts actions so they can be managed just like Spring beans. The result is a boosted web framework that easily reaps the benefits of Spring AOP
JSF is second to Struts. The rest are far behind
JSF may not be beating Struts but it is head and shoulders above everything else
30Gigs
30Gigs.com was created with the vision of having an �All-in-One� site in mind � catering more towards the webmaster and hardcore computer users. It is a free service that combines personal file storage, GD2 signatures, and anonymous e-mail service. The long term goal would be increasing the space to an eventual 50GB or 100GB. It is still in heavy beta mode. One feature that spammers love would be the ability to send e-mail from any address that you want
Get started with Geronimo
Apache Geronimo is a large open source project with an active development community and a growing user community, which a new user might find overwhelming. Even seasoned Java� 2 Platform, Enterprise Edition (J2EE) developers can sometimes find themselves lost amid the bustle of this burgeoning project. This guide gives you, the new Geronimo user, a single, easy-to-follow starting point for all your Geronimo needs. You'll also find answers to your Geronimo development questions, ranging from rock-bottom beginner-level topics to how to become a Geronimo committer. Strap yourself in, and take Geronimo for a spin."
Build a dynamic Derby application
This tutorial shows you how to build a dynamic Java analysis application that connects to Apache Derby. Explore the dynamic way the database stores new application logic, changing the logic of the database without touching the core client program. And learn about Java archive (JAR) signing and how to provide security for the application that uses hot-swappable .jar files
Is it the end for the current crop of web frameworks?
Spring MVC, Web Work, Cocoon, Tapestry et al provide us with great frameworks to build our web applications on, but are these frameworks the way forward or are they the last remnants of the old republic
YourKit Java Profiler 5.0 Released
CPU and memory profiling has never been easier, and smarter at the same time. YourKit has developed a revolutionary approach to profiling of applications on both development and production stages, bringing unparalleled benefits to professional Java developers, on all platforms: Windows, Linux, Solaris SPARC/Intel, Mac OS X.
Wednesday, October 05, 2005
Performance Analysis of J2EE Applications Using AOP Techniques
In a complex distributed computing environment like J2EE, it is very difficult to pinpoint the component that is causing a performance bottleneck. Applications can be profiled by including instrumentation code manually, but this could be cumbersome and time-consuming, and might impact the stability of the application itself. Aspect-Oriented Programming (AOP) technology can be elegantly and effectively applied for performance analysis, as illustrated by Davies et al.
Aspect-oriented programming allows the programmer to inject pieces of functionality into existing code. This can be done either during compile time (AspectJ) or during run time (Aspectwerkz). The functionality that is injected typically addresses cross-cutting concerns spread among existing code pieces. In AOP terminology, such functionality that can be injected into existing code is termed an advice. The point of execution in the existing code where the advice needs to be applied is termed a point-cut. The point-cut together with an advice is termed as an aspect. For more information on AOP, refer to Graham O'Regan's ONJava article "Introduction to Aspect-Oriented Programming."
In this article we demonstrate the use of AOP techniques through which J2EE applications can be easily instrumented without any modifications to application code. We have developed a very simple tool to achieve the above objective. Since the instrumentation has very low overhead, this tool can be deployed in the staging environments to identify problematic Java method calls and SQL statements.
We describe the architecture of the profiling tool and then the advices that were developed to instrument the application. This is followed by an illustration of how the instrumentation can be added to the necessary method calls through point-cuts, and finally, we show some of the results obtained through this tool.
Aspect-oriented programming allows the programmer to inject pieces of functionality into existing code. This can be done either during compile time (AspectJ) or during run time (Aspectwerkz). The functionality that is injected typically addresses cross-cutting concerns spread among existing code pieces. In AOP terminology, such functionality that can be injected into existing code is termed an advice. The point of execution in the existing code where the advice needs to be applied is termed a point-cut. The point-cut together with an advice is termed as an aspect. For more information on AOP, refer to Graham O'Regan's ONJava article "Introduction to Aspect-Oriented Programming."
In this article we demonstrate the use of AOP techniques through which J2EE applications can be easily instrumented without any modifications to application code. We have developed a very simple tool to achieve the above objective. Since the instrumentation has very low overhead, this tool can be deployed in the staging environments to identify problematic Java method calls and SQL statements.
We describe the architecture of the profiling tool and then the advices that were developed to instrument the application. This is followed by an illustration of how the instrumentation can be added to the necessary method calls through point-cuts, and finally, we show some of the results obtained through this tool.
Saturday, October 01, 2005
Screen scraping with Perl LG #108
Screen scraping is a relatively well-known idea, but for those who are not familiar with it, the term refers to the process of extracting data from a website. This may involve sending form information, navigating through the site, etc., but the part I'm most interested in is processing the HTML to extract the information I'm looking for
U.S. state finalizes plans to phase out Office - Computerworld
The commonwealth of Massachusetts has finalized a proposed move to an open format for office documents, a plan that involves phasing out versions of Microsoft Corp.'s Office productivity suite deployed in the state's executive branch agencies
CSS Techniques Roundup - 20 CSS Tips and Tricks
I never cease to be amazed at what problems can be solved with pure CSS. Here are 20 CSS techniques, tips and tricks that you may find handy
Ajaxian: AjaxAnywhere: Ajaxian JSP Components
AjaxAnywhere is designed to turn any set of existing JSP components into AJAX-aware components without complex JavaScript coding. In contrast to other solutions, AjaxAnywhere is not component-oriented. You will not find here yet another AutoComplete component. Simply separate your web page into multiple zones, and use AjaxAnywhere to refresh only those zones that needs to be updated.
Mark 'reload-capable' zones of a web page with AjaxAnywhere custom tags.
Instead of submitting a form in traditional way, do it by AjaxAnywhere javascript API.
During request processing on the server-side, determine the zones to refresh. (You can implement this logic either on the client-side via JavaScript or on the server-side, via AjaxAnywhere API.)
On the server-side AjaxAnywhere will generate an XML containing only the 'updated' HTML.
On the client-side AjaxAnywhere javascript will receive the XML, parse it and update the selected zones. "
Mark 'reload-capable' zones of a web page with AjaxAnywhere custom tags.
Instead of submitting a form in traditional way, do it by AjaxAnywhere javascript API.
During request processing on the server-side, determine the zones to refresh. (You can implement this logic either on the client-side via JavaScript or on the server-side, via AjaxAnywhere API.)
On the server-side AjaxAnywhere will generate an XML containing only the 'updated' HTML.
On the client-side AjaxAnywhere javascript will receive the XML, parse it and update the selected zones. "
Russell Beattie Notebook - AOL Going
When I wrote about AOL Rising a few weeks ago, it didnt dawn on me that what they were really doing is prepping themselves up for a sale. Reports are today that talks are under way with MSN, Google and who knows what the guys two floors down from me at Yahoo! are doing as well.
Google, it seems, would be the most obvious suitor to me. They need everything that AOL already has in order to continue to compete in the online media space. Yeah, they have their Search cash-cow at the moment, but thats an undefensible lead. The switching costs for someone to move from Google to Yahoo! Search are nil - I should know, Ive done it, I rarely use Google now and there was no real penalty involved in switching. Google is essentially an advertising company and needs to keep expanding its online media business, or get caught by competitors in the Search space and not have a backup. Snagging AOL would bring along some great assets that Google really needs, including the Netscape name (and campus down the street from Google in Mt. View), AIM, AOL Mail, AOL Mobile, multimedia assets, tons of content and tons of community services as well. Hell, what else is Google going to do with $4b in cash lying around? "
Google, it seems, would be the most obvious suitor to me. They need everything that AOL already has in order to continue to compete in the online media space. Yeah, they have their Search cash-cow at the moment, but thats an undefensible lead. The switching costs for someone to move from Google to Yahoo! Search are nil - I should know, Ive done it, I rarely use Google now and there was no real penalty involved in switching. Google is essentially an advertising company and needs to keep expanding its online media business, or get caught by competitors in the Search space and not have a backup. Snagging AOL would bring along some great assets that Google really needs, including the Netscape name (and campus down the street from Google in Mt. View), AIM, AOL Mail, AOL Mobile, multimedia assets, tons of content and tons of community services as well. Hell, what else is Google going to do with $4b in cash lying around? "
IBM unveils new WebSphere product line
IBM unveils new WebSphere product line: "IBM unveiled its latest set of service-oriented architecture offerings yesterday, filling out its WebSphere product line with a lightweight, Java-based enterprise service bus (ESB) and a Business Process Execution Language (BPEL) engine. IBM also announced upgraded offerings for WebSphere Message Broker and its business modeling and monitoring tools.
New and upgraded offerings in the IBM SOA Foundation include:
-- The new, Java-based WebSphere Enterprise Service Bus.
-- The new WebSphere Integration Developer, an Eclipse-based tool for the development and integration of composite applications.
-- The new WebSphere Process Server, a BPEL engine that coordinates business processes with the new ESB, is built in to provide the messaging backbone.
-- The new WebSphere Everyplace Deployment, which monitors events in the application layer and sends alerts out to XML edge devices.
-- The upgraded WebSphere Message Broker.
-- The upgraded WebSphere Business Modeler, which allows business processes to be modeled prior to development.
-- The upgraded WebSphere Business Monitor, which provides a dashboard view of Web services performance."
New and upgraded offerings in the IBM SOA Foundation include:
-- The new, Java-based WebSphere Enterprise Service Bus.
-- The new WebSphere Integration Developer, an Eclipse-based tool for the development and integration of composite applications.
-- The new WebSphere Process Server, a BPEL engine that coordinates business processes with the new ESB, is built in to provide the messaging backbone.
-- The new WebSphere Everyplace Deployment, which monitors events in the application layer and sends alerts out to XML edge devices.
-- The upgraded WebSphere Message Broker.
-- The upgraded WebSphere Business Modeler, which allows business processes to be modeled prior to development.
-- The upgraded WebSphere Business Monitor, which provides a dashboard view of Web services performance."
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector : Overview
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector (PMAT) parses IBM verbose GC trace, analyzes Java heap usage, and recommends key configurations based on pattern modeling of Java heap usage.
When the JVM cannot allocate an object from the current heap because of lack of space, a memory allocation fault occurs, and the Garbage Collector is invoked. The first task of the Garbage Collector is to collect all the garbage that is in the heap. This process starts when any thread calls the Garbage Collector either indirectly as a result of allocation failure or directly by a specific call to System.gc(). The first step is to get all the locks needed by the garbage collection process. This step ensures that other threads are not suspended while they are holding critical locks. All other threads are then suspended. Garbage collection can then begin. It occurs in three phases: Mark, Sweep, and Compaction (optional).
Verbose GC is a command-line option that one can supply to the JVM at start-up time. The format is: -verbose:gc or -verbosegc. This option switches on a substantial trace of every garbage collection cycle. The format for the generated information is not designed and therefore varies among various platforms and releases.
This trace should allow one to see the gross heap usage in every garbage collection cycle. For example, one could monitor the output to see the changes in the free heap space and the total heap space. This information can be used to determine whether garbage collections are taking too long to run; whether too many garbage collections are occurring; and whether the JVM crashed during garbage collection. "
When the JVM cannot allocate an object from the current heap because of lack of space, a memory allocation fault occurs, and the Garbage Collector is invoked. The first task of the Garbage Collector is to collect all the garbage that is in the heap. This process starts when any thread calls the Garbage Collector either indirectly as a result of allocation failure or directly by a specific call to System.gc(). The first step is to get all the locks needed by the garbage collection process. This step ensures that other threads are not suspended while they are holding critical locks. All other threads are then suspended. Garbage collection can then begin. It occurs in three phases: Mark, Sweep, and Compaction (optional).
Verbose GC is a command-line option that one can supply to the JVM at start-up time. The format is: -verbose:gc or -verbosegc. This option switches on a substantial trace of every garbage collection cycle. The format for the generated information is not designed and therefore varies among various platforms and releases.
This trace should allow one to see the gross heap usage in every garbage collection cycle. For example, one could monitor the output to see the changes in the free heap space and the total heap space. This information can be used to determine whether garbage collections are taking too long to run; whether too many garbage collections are occurring; and whether the JVM crashed during garbage collection. "
Your last line of Java?
Java.net is running a survey asking when you think youll write your last line of Java code. The bulk of the answers are between 5 and 20 years from now. My answer was between 2-5 years, because I cant see Javas glacial pace of change keeping up with more interesting languages, like Ruby or Python. While Im certainly just one person staring into the void, I think Javas lifespan depends on the framework builders. Once they move on, Java should fade, albeit slowly.
Also, System Mobile is slowly moving from services to products, where the implementation language doesnt matter as much. (It might matter if we get purchased, however. ) When do you think youll sling your last line of Java? Do you think itll be to foresake code altogether to move into management or a new career?
Also, System Mobile is slowly moving from services to products, where the implementation language doesnt matter as much. (It might matter if we get purchased, however. ) When do you think youll sling your last line of Java? Do you think itll be to foresake code altogether to move into management or a new career?
The Six Dumbest Ideas in Computer Security
There's lots of innovation going on in security - we're inundated with a steady stream of new stuff and it all sounds like it works just great. Every couple of months I'm invited to a new computer security conference, or I'm asked to write a foreword for a new computer security book. And, thanks to the fact that it's a topic of public concern and a 'safe issue' for politicians, we can expect a flood of computer security-related legislation from lawmakers. So: computer security is definitely still a 'hot topic.' But why are we spending all this time and money and still having problems?
Let me introduce you to the six dumbest ideas in computer security. What are they? They're the anti-good ideas. They're the braindamage that makes your $100,000 ASIC-based turbo-stateful packet-mulching firewall transparent to hackers. Where do anti-good ideas come from? They come from misguided attempts to do the impossible - which is another way of saying 'trying to ignore reality.' Frequently those misguided attempts are sincere efforts by well-meaning people or companies who just don't fully understand the situation, but other times it's just a bunch of savvy entrepreneurs with a well-marketed piece of junk they're selling to make a fast buck. In either case, these dumb ideas are the fundamental reason(s) why all that money you spend on information security is going to be wasted, unless you somehow manage to avoid them.
For your convenience, I've listed the dumb ideas in descending order from the most-frequently-seen. If you can avoid falling into the the trap of the first three, you're among the few true computer security elite.
Let me introduce you to the six dumbest ideas in computer security. What are they? They're the anti-good ideas. They're the braindamage that makes your $100,000 ASIC-based turbo-stateful packet-mulching firewall transparent to hackers. Where do anti-good ideas come from? They come from misguided attempts to do the impossible - which is another way of saying 'trying to ignore reality.' Frequently those misguided attempts are sincere efforts by well-meaning people or companies who just don't fully understand the situation, but other times it's just a bunch of savvy entrepreneurs with a well-marketed piece of junk they're selling to make a fast buck. In either case, these dumb ideas are the fundamental reason(s) why all that money you spend on information security is going to be wasted, unless you somehow manage to avoid them.
For your convenience, I've listed the dumb ideas in descending order from the most-frequently-seen. If you can avoid falling into the the trap of the first three, you're among the few true computer security elite.
Top Ten Things You Can Do To Get Blogged
Our primary goal here at TechCrunch is to profile new web 2.0 companies. Finding and experiencing what new companies have to offer is exciting for us. It what gets us up in the morning. We are honestly deeply passionate about this stuff.
Usually, the passion, drive and intelligence of the creators is reflected in the company or product they create. And even if a product is very young and/or doesnt necessarily have a high chance for commercial success, there are usually features that carry our mutual thinking on web 2.0 further along. We try very hard to dig for those forward-thinking features and highlight them on this site. Doing one thing in a spectacular and inspiring fashion and nine things stupidly is far, far better than doing ten things well. Well is boring.
How We Find Companies to Profile
We find new companies primarily in three ways. First, we scour hundreds of blog and news feeds daily to see whats new. Second, we get a number of tips (often anonymously) about new stuff usually these are the most interesting new products. The third way is a direct request from the company itself.
We receive on average 5-10 email requests a day to be profiled. Usually well write about one of these, meaning if a company sends in an email request to be profiled, they have a 10-20% chance of getting up on the site.
This is not a hard rule but more of an observation. I believe that if more companies approached us differently, a much higher percentage would be blogged. Ive decided to humbly submit my advice on how to approach us in requesting a profile - I think this advice will work well with other bloggers as well
Usually, the passion, drive and intelligence of the creators is reflected in the company or product they create. And even if a product is very young and/or doesnt necessarily have a high chance for commercial success, there are usually features that carry our mutual thinking on web 2.0 further along. We try very hard to dig for those forward-thinking features and highlight them on this site. Doing one thing in a spectacular and inspiring fashion and nine things stupidly is far, far better than doing ten things well. Well is boring.
How We Find Companies to Profile
We find new companies primarily in three ways. First, we scour hundreds of blog and news feeds daily to see whats new. Second, we get a number of tips (often anonymously) about new stuff usually these are the most interesting new products. The third way is a direct request from the company itself.
We receive on average 5-10 email requests a day to be profiled. Usually well write about one of these, meaning if a company sends in an email request to be profiled, they have a 10-20% chance of getting up on the site.
This is not a hard rule but more of an observation. I believe that if more companies approached us differently, a much higher percentage would be blogged. Ive decided to humbly submit my advice on how to approach us in requesting a profile - I think this advice will work well with other bloggers as well
java.net: Handling Java Web Application Input, Part 1
Inadequate data validation is the most common cause of security exploits suffered by web applications today. A staggering fact is the high number of applications exploited through weak validation. This is due to the simplicity of such an attack. No longer do attackers have to spend vast amounts of time researching ways to circumvent the security infrastructure of an application. An attacker can use freely available tools to scan for vulnerable websites. Using these findings, an attacker can use a web browser to ghost straight through firewall rule sets on port 80, altering the intended behavior of an application. This is true never more so than today. There are a multitude of technologies and frameworks available. Engineers are under increasing pressure to complete work on time, and hence place a heavy reliance on such tools. However, such technology may not adequately deal with user input to meet all cases, and as a result may introduce unintentional security vulnerabilities. Therefore, it is of paramount importance that secure coding practices are in place to close any possible doorway that permits such nefarious attacks to take place
Learning Linux for better Java
Everyday more and more companies are looking at Linux as a means to lower their operational cost. Adding to your Java skills-set with a better understanding of Linux is a very good idea. Here is a brand new series of tutorials to help you learn Linux fundamentals . These eight tutorials cover the Linux kernel, file and service sharing, system
Learn XQuery in 10 Minutes - by Dr. Michael Kay
This article is for all those people who really want to know what XQuery is, but don't have the time to find out. We all know the problem: so many exciting new technologies, so little time to research them. To be honest, I hope that you'll spend more than ten minutes on it but if you really have to leave that soon, I hope you'll learn something useful anyway
FindBugs Fact Sheet
FindBugs looks for bugs in Java programs. It is based on the concept of bug patterns. A bug pattern is a code idiom that is often an error. Bug patterns arise for a variety of reasons:
Difficult language features
Misunderstood API methods
Misunderstood invariants when code is modified during maintenance
Garden variety mistakes: typos, use of the wrong boolean operator
FindBugs uses static analysis to inspect Java bytecode for occurrences of bug patterns. We have found that FindBugs finds real errors in most Java software. Because its analysis is sometimes imprecise, FindBugs can report false warnings, which are warnings that do not indicate real errors. In practice, the rate of false warnings reported by FindBugs is generally less than 50%.
Difficult language features
Misunderstood API methods
Misunderstood invariants when code is modified during maintenance
Garden variety mistakes: typos, use of the wrong boolean operator
FindBugs uses static analysis to inspect Java bytecode for occurrences of bug patterns. We have found that FindBugs finds real errors in most Java software. Because its analysis is sometimes imprecise, FindBugs can report false warnings, which are warnings that do not indicate real errors. In practice, the rate of false warnings reported by FindBugs is generally less than 50%.
General tip: Finding the version of a JAR
When you're converting an existing Ant project to Maven, one of the first tedious task is to find out the version of the jars that you had been using. Of course you can try to open the JAR and look for the Manifest file but alas in most cases the version is not filled...
Saturday, September 24, 2005
Getting Started With JasperReports
JasperReports is a very popular open source (LGPL) reporting library written in Java. Unfortunately it is not very well documented and I had a hard time coming up with a simple report. After some research, I was able to generate a simple report. This article summarizes what I found needed to be done to get started with JasperReports
David Heffelfinger
David Heffelfinger
Java Examples - JExamples.com
Analyzes the source code of production Java open source projects such as Ant, Tomcat and Batik and load that analysis into a java examples database designed for easy searching. You enter the name of a Java API Class you want to see example invocations of and click Search
How to Decide What Bugs to Fix When, Part 1
Here is the golden rule of organizing bugs: fix bugs in the order most likely to result in success. Sounds obvious, right? Wrong. I'd bet that more than half of the buggy and unreliable software you've ever used was that way not because the developers didn't have time to make it better; they simply fixed the wrong bugs. Wanting to fix the right bugs and knowing how to do it are two different things
Jreepad allows you to store and edit all your little nuggets of text in an incredibly intuitive tree structure
Jreepad allows you to store and edit all your little nuggets of text in an incredibly intuitive tree structure. Each 'node' on the tree has a plain-text 'article' associated with it, meaning that a Jreepad file becomes almost a freeform database, storing all kinds of information. Jreepad is inspired by, and compatible with, the Windows program 'Treepad Lite'
Saturday, September 03, 2005
Google Announces Plan To Destroy All Information It Can't Index
Executives at Google, the rapidly growing online-search company that promises to 'organize the world's information,' announced Monday the latest step in their expansion effort: a far-reaching plan to destroy all the information it is unable to index.
CEO Eric Schmidt speaks at Google's California headquarters (below).'Our users want the world to be as simple, clean, and accessible as the Google home page itself,' said Google CEO Eric Schmidt at a press conference held in their corporate offices. 'Soon, it will be.'
The new project, dubbed Google Purge, will join such popular services as Google Images, Google News, and Google Maps, which catalogs the entire surface of the Earth using high-resolution satellites.
As a part of Purge's first phase, executives will destroy all copyrighted materials that cannot be searched by Google
CEO Eric Schmidt speaks at Google's California headquarters (below).'Our users want the world to be as simple, clean, and accessible as the Google home page itself,' said Google CEO Eric Schmidt at a press conference held in their corporate offices. 'Soon, it will be.'
The new project, dubbed Google Purge, will join such popular services as Google Images, Google News, and Google Maps, which catalogs the entire surface of the Earth using high-resolution satellites.
As a part of Purge's first phase, executives will destroy all copyrighted materials that cannot be searched by Google
World's First Built-In Wi-Fi -Enabled Digital Cameras
Nikon is redefining the digital camera shooting experience with the announcement of two new revolutionary Wi-Fi enabled models. The Coolpix P1 and P2 are the world's first built-in Wi-Fi-enabled (IEEE802.11b/g) digital cameras to hit the marketplace. These groundbreaking cameras allow consumers to immediately transmit images wirelessly directly to a computer or to any PictBridge-enabled printer equipped with the optional Nikon Wireless Printer Adapter (PD-10), for wireless printing
Friday, September 02, 2005
iReport - OpenSource Java Reporting Tool
iReport - OpenSource Java Reporting Tool: "iReport is a powerful, intuitive and easy to use visual report builder/designer for JasperReports written in 100% pure java. This tool allows users to visually edit complex reports with charts, images, subreports,.... iReport is integrated with JFreeChart, one of the most diffused OpenSource chart library for java. The data to print can be retrieved through several ways including multiple JDBC connections, TableModels, JavaBeans, XML, etc...
Thursday, September 01, 2005
"Cell" Processor Chip
Consider that Intel delivered the first teraflops (one thousand gigaflops) supercomputer to the U.S. Department of Energy in December 1996. That supercomputer had 9,216 Pentium Pro processors packaged in 85 cabinets. It occupied 1,600 square feet of floor space and required 800 kilowatts (kW) of power. Today, just four tiny Cell chips produce the same performance as the world's fastest supercomputer did less than 10 years ago. That's impressive for a chip in your TV set
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
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.
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
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.
'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
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/
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!
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
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
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
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
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~
~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~
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
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
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
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
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
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
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.
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
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
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!
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
'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
'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
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
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
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)
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
'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
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 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
Additionally the Eclipse Business Intelligence and Reporting Tools 1.0.1RC1 have been released too
Friday, July 29, 2005
YourKit Java Profiler 4.5-EAP14
YourKit Java Profiler is a CPU and memory profiler that makes it easy to solve wide range of CPU- and memory-related performance problems. It features automatic leak detection, powerful tools for the analysis of memory distribution, an object heap browser, comprehensive memory tests as part of your JUnit testing process, extremely low profiling overhead, transparent deobfuscation support, and integration with Eclipse, JBuilder, IntelliJ IDEA, NetBeans, and JDeveloper IDEs.
Release focus: Major feature enhancements "
Release focus: Major feature enhancements "
Revenge of the Nerds -- Again
Google and Yahoo! are hiring away hundreds of top engineers from high tech's most prestigious firms
Dude, it's called Java Job Interview
For technical jobs especially Java-related ones, any type of on-the-spot exam barely proves anything. Whether it's online or written and be subjected to batteries of technical interviews if the candidates happen to pass their so-high-standard tests. I observed that these kind of tests are simply more of intimidation contests rather than getting the right person for the job
Jared Odulio
Jared Odulio
XML Enhancements for Java
What are XML Enhancements for JavaTM?
XML Enhancements for Java (XJ) are a set of extensions to Java 1.4 that integrate support for XML, XML Schema and XPath 1.0 into the language. The advantages of XJ over existing mechanisms for XML development are:
Familiarity (for the XML Programmer) : XML processing in XJ is consistent with open XML standards.
Robustness : XJ programs are strongly typed with respect to XML Schemas. The XJ compiler can detect errors in uses of XPath expressions and construction of XML data.
Easier Maintenance: Since XJ programs are written in terms of XML and not low-level APIs such as DOM or SAX, they are easier to maintain and modify if XML Schemas change.
Performance: Since the compiler is aware of the use of XML in a program, it can optimize the runtime representation, parsing, and XPath evaluation of XML
XML Enhancements for Java (XJ) are a set of extensions to Java 1.4 that integrate support for XML, XML Schema and XPath 1.0 into the language. The advantages of XJ over existing mechanisms for XML development are:
Familiarity (for the XML Programmer) : XML processing in XJ is consistent with open XML standards.
Robustness : XJ programs are strongly typed with respect to XML Schemas. The XJ compiler can detect errors in uses of XPath expressions and construction of XML data.
Easier Maintenance: Since XJ programs are written in terms of XML and not low-level APIs such as DOM or SAX, they are easier to maintain and modify if XML Schemas change.
Performance: Since the compiler is aware of the use of XML in a program, it can optimize the runtime representation, parsing, and XPath evaluation of XML
Thursday, July 28, 2005
iSeries shops with AIX partitions can rest easy about SCO lawsuit
iSeries users running AIX alongside i5/OS on their systems can breathe a little sigh of relief but just a little one. U.S. District Court Judge Dale Kimball earlier this month denied The SCO Group's request to include specific code in the AIX operating system for Power processors in its breach of copyright claims against IBM.
The judge also ordered IBM to produce Chairman and CEO Sam Palmisano for a deposition by SCO and set final deadlines for IBM to produce discovery material the code in question and for SCO to 'identify with specificity all allegedly misused material.'
Perhaps the biggest relief to iSeries users thus far is a judgment over a little squabble concerning IBM's AIX operating system. Kimball denied SCO's request to include specific code from the AIX operating system for POWER processors in its breach of copyright claims against IBM.
SCO wanted to amend its lawsuit against IBM for a third time, asserting that IBM breached additional copyright laws by using some Unix code from System V Release 4 in the AIX operating system for POWER processors. SCO's attorneys said that a joint development agreement let IBM use the Unix code only for Intel-based processors, and that an IBM counterclaim asserting that the AIX operating system does not infringe on SCO copyrights gave SCO the right to amend its claim and target specific AIX code
The judge also ordered IBM to produce Chairman and CEO Sam Palmisano for a deposition by SCO and set final deadlines for IBM to produce discovery material the code in question and for SCO to 'identify with specificity all allegedly misused material.'
Perhaps the biggest relief to iSeries users thus far is a judgment over a little squabble concerning IBM's AIX operating system. Kimball denied SCO's request to include specific code from the AIX operating system for POWER processors in its breach of copyright claims against IBM.
SCO wanted to amend its lawsuit against IBM for a third time, asserting that IBM breached additional copyright laws by using some Unix code from System V Release 4 in the AIX operating system for POWER processors. SCO's attorneys said that a joint development agreement let IBM use the Unix code only for Intel-based processors, and that an IBM counterclaim asserting that the AIX operating system does not infringe on SCO copyrights gave SCO the right to amend its claim and target specific AIX code
It's back!, Google Code Jam 2005
The Google Code Jam 2005 is now offering the best coders in the world a chance to compete for $155,000! Have you got what it takes? Can you take the pressure? Know how to solve problems? Know algorithms?
If you answered yes to one or more of the above, then the Google Code Jam 2005 is right up your alley. Join coders from around the world in this intense competition that requires all your mind has to offer.
Not only will you be in your glory of coding, but there are prizes for it too! It's more than just $155,000 but a chance to work for the hottest tech company, Google
If you answered yes to one or more of the above, then the Google Code Jam 2005 is right up your alley. Join coders from around the world in this intense competition that requires all your mind has to offer.
Not only will you be in your glory of coding, but there are prizes for it too! It's more than just $155,000 but a chance to work for the hottest tech company, Google
Supercharging BeanShell with Ant
This article explains how to execute any Ant task from within a BeanShell script, bringing the rich and growing Ant task library to BeanShell programmers and, in the process, vastly increasing its potential for serious scripting. This kind of bridging is good for Ant as well, allowing Ant tasks to be used within familiar control and looping constructs
Why Yahoo! bought Pixoria
Loosely coupled
Acquiring Konfabulator lets Yahoo! feed live information directly to the desktop, bypassing the browser. A lot of people have been misled by Pixoria's use of the name 'widgets' for the tiny applets created and run using its Konfabulator tool (now in the wake of the acquisition to be renamed Yahoo! Widgets, which is sure to perpetuate the misconception). Just like the early days of JavaScript which Konfabulator uses most of the widgets available today are useless eye candy, offering functionality that appeals only to witless geeks. But put this technology together with people who understand the true power of client-side JavaScript the designers of OddPost, for example, which Yahoo! acquired last summer and you have the potential to create something of huge import.
Here are the ingredients that I believe give Yahoo! Widgets (formerly known as Konfabulator) such huge potential:
Acquiring Konfabulator lets Yahoo! feed live information directly to the desktop, bypassing the browser. A lot of people have been misled by Pixoria's use of the name 'widgets' for the tiny applets created and run using its Konfabulator tool (now in the wake of the acquisition to be renamed Yahoo! Widgets, which is sure to perpetuate the misconception). Just like the early days of JavaScript which Konfabulator uses most of the widgets available today are useless eye candy, offering functionality that appeals only to witless geeks. But put this technology together with people who understand the true power of client-side JavaScript the designers of OddPost, for example, which Yahoo! acquired last summer and you have the potential to create something of huge import.
Here are the ingredients that I believe give Yahoo! Widgets (formerly known as Konfabulator) such huge potential:
Wednesday, July 27, 2005
ACID is Good. Take it in Short Doses
If you develop challenging distributed enterprise applications and systems, short ACID transactions are your friends. The ACID properties of transactions enable you to write software without considering the complex environment in which the application runs. ACID transactions bring simple high-school programming to the complex real world. With ACID transactions you can concentrate on the application logic and not on failure detection, recovery and synchronizing access to shared data.
With ACID transactions, your software need not include logic to recover the state of the application should it fail. Instead you simply define transaction boundaries in your application and the system ensures atomicity the actions taken within the transaction will happen completely, or not at all. If the application fails midstream, the system will recover to the previous state, as if the transaction never took place. If you have ever written an application without transactions that attempted to detect failures and recover from them, you know that logic can get quite complex
With ACID transactions, your software need not include logic to recover the state of the application should it fail. Instead you simply define transaction boundaries in your application and the system ensures atomicity the actions taken within the transaction will happen completely, or not at all. If the application fails midstream, the system will recover to the previous state, as if the transaction never took place. If you have ever written an application without transactions that attempted to detect failures and recover from them, you know that logic can get quite complex
Mark Lyon's GMail Loader (GML) - Import Your Mail into GMail
The application works by reading your existing mail files, and forwarding them to GMail. It does not delete the mail from your local computer. Email can be set to arrive at GMail in either your 'Inbox' or 'Sent Mail'
Russell Beattie Notebook - Thin is In
The bar for style and function has now shifted, all the same functionality and not just small, but thin. Not too long ago I was thinking of my new 6680 as a pretty decent sized phone compared to its predecesors, but compared to the RAZR, it's a brick
Russ
Russ
Raj Blogs: Common UNIX Commands
cd - Change Directory. (Just like in dos)
mkdir - Make Directory.
rmdir - Removes a Directory that is empty!
ls - List directory. (Like dir in Windows)
cat – Short for concatenate. It was used to concatenate two filestogether via cat file1 file2 >file3 Didn‘t know that did you. Theechoing out to standard out gave cat a whole new meaning to the users.
more - Just like less. It pages output to the screen.
mv - Move. For moving files and directories around
rm Remove a file. Also rm rf for removing a folder and it‘scontent.
grep - Used to search for text within a stream or files. (man regex)
vi – A text based editor. You‘ll find that it‘s really a symboliclink to vim now a days.
rlogin - Remote login. I hope your admins disabled this!
passwd - Used to change your password.
ps - Used to processes.
nice - Run a program with lower priority so you don't hog CPU.
kill – Terminates a program. You can select what signal you want tokill a program with also. -9
gzip - Compresses files.
gunzip - Uncompresses files.
tee – Pipe your output to standard out and to a file. Nice forwatching a process and logging.
sort - A sort program
sed – Stream Editor. Excellent program to modify files or streams!(man regex)
uniq - Unique program.
awk – An excellent program to parse up streams or files into tokens.It supports a hellva lot of cool things and you can complete writeprograms with it. (man nawk also)
chgrp - Change Group
chown - Change owner
pwd - Current working directory.
find – Used to find programs and you can also execute commands oneach match found.
wc - Word, line, letter count program. For you line counting whores.
which - Finds a location of a program that's in your path.
last - See who last logged in.
du - Disk usage.
df - Disk Free
top – Running processes with CPU and other information thatrefreshes.
watch – Repeats a command and updates the screen with only thechanges
login - Logging in
telnet - Connect to another machine
logout - Logging out
emacs - Using the emacs text editor
cp - Making a copy of a file
chmod - Controlling access to your files
cmp - Comparing two files
compress - Compress a file
pine Using Pine to send and receive email
mush - The mush electronic mail system
talk - Talk to another user
write - Write messages to another user
ftp - Transferring files with ftp
man - Manual pages
quota v Finding out your available disk space quota
ical - Using the Ical personal organizer
finger - Getting information about a user
who - Finding out who's logged on
lpr - Printing
lprm - Removing a print job
lpq - Checking the print queues
ps - Finding your processes
kill - Killing a process
nohup - Continuing a job after logout
nice - Changing the priority of a job
& - What is a background process?
Cntrl-z - Suspending a process
fg - Resuming a suspended process
mkdir - Make Directory.
rmdir - Removes a Directory that is empty!
ls - List directory. (Like dir in Windows)
cat – Short for concatenate. It was used to concatenate two filestogether via cat file1 file2 >file3 Didn‘t know that did you. Theechoing out to standard out gave cat a whole new meaning to the users.
more - Just like less. It pages output to the screen.
mv - Move. For moving files and directories around
rm Remove a file. Also rm rf for removing a folder and it‘scontent.
grep - Used to search for text within a stream or files. (man regex)
vi – A text based editor. You‘ll find that it‘s really a symboliclink to vim now a days.
rlogin - Remote login. I hope your admins disabled this!
passwd - Used to change your password.
ps - Used to processes.
nice - Run a program with lower priority so you don't hog CPU.
kill – Terminates a program. You can select what signal you want tokill a program with also. -9
gzip - Compresses files.
gunzip - Uncompresses files.
tee – Pipe your output to standard out and to a file. Nice forwatching a process and logging.
sort - A sort program
sed – Stream Editor. Excellent program to modify files or streams!(man regex)
uniq - Unique program.
awk – An excellent program to parse up streams or files into tokens.It supports a hellva lot of cool things and you can complete writeprograms with it. (man nawk also)
chgrp - Change Group
chown - Change owner
pwd - Current working directory.
find – Used to find programs and you can also execute commands oneach match found.
wc - Word, line, letter count program. For you line counting whores.
which - Finds a location of a program that's in your path.
last - See who last logged in.
du - Disk usage.
df - Disk Free
top – Running processes with CPU and other information thatrefreshes.
watch – Repeats a command and updates the screen with only thechanges
login - Logging in
telnet - Connect to another machine
logout - Logging out
emacs - Using the emacs text editor
cp - Making a copy of a file
chmod - Controlling access to your files
cmp - Comparing two files
compress - Compress a file
pine Using Pine to send and receive email
mush - The mush electronic mail system
talk - Talk to another user
write - Write messages to another user
ftp - Transferring files with ftp
man - Manual pages
quota v Finding out your available disk space quota
ical - Using the Ical personal organizer
finger - Getting information about a user
who - Finding out who's logged on
lpr - Printing
lprm - Removing a print job
lpq - Checking the print queues
ps - Finding your processes
kill - Killing a process
nohup - Continuing a job after logout
nice - Changing the priority of a job
& - What is a background process?
Cntrl-z - Suspending a process
fg - Resuming a suspended process
Microsoft requires Windows piracy checks
Microsoft Corp. today is expected to go live with a program requiring customers to validate that they are running legitimate copies of the Windows operating system before they can use Microsoft�s download services. The Windows Genuine Advantage 1.0 program ensures that customers using Windows Update, Microsoft Update for Windows and the Microsoft Download Center run a program that checks that their Windows operating system is genuine before they can download updates or new content from those services, said David Lazar, director of Genuine Windows for Microsoft. Until today, the program has been voluntary
Opinion: Eclipse Fails to Meet the Enterprise Java Developer's Needs
When Eclipse was first introduced, it was lauded for introducing not just an IDE but also features that promoted good development practices. Key among these were on-the-fly compilation, a stricter compiler, and most importantly, refactoring. Since then, the Eclipse community has rested on its laurels and done nothing significant to improve the IDE. Eclipse has failed to see the architectural directions that Java application development has taken. In doing so, it has let down the many Java developers who use it
Yahoo!, here we come! Konfabulator is now free
Let's just get this out of the way... Konfabulator is now free. Yup. If you download version 2.1 you know what you'll never ever see? That's right a registration reminder. Fear not, there's nothing sneaky in there, no spyware, no ads, nothing that's keeping track of information and sending it to us... it's pure, uncut Konfabulator goodness
Egg-cellent use of Java ME technology.
The Benedict County Omelete Cookoff is about to start but there is just one
problem: the cooks have no eggs! Fortunately, the hens are in full production,
but you still need to navigate the eggs through obstacle-laden fields to the
waiting fry pans. Eggciting!
problem: the cooks have no eggs! Fortunately, the hens are in full production,
but you still need to navigate the eggs through obstacle-laden fields to the
waiting fry pans. Eggciting!
A free event profiler for Java
An event profiler lets you watch the event happening while you running your code and track how often and for how long they are executed.
This is useful to help you find bottlenecks in your code.
So how do you get a free event profiler?
You download JDeveloper!"
This is useful to help you find bottlenecks in your code.
So how do you get a free event profiler?
You download JDeveloper!"
The Thinnest, Lightest, Coolest QWERTY on the Planet
The first no-compromises QWERTY is here: the new Q from Motorola. Smart, powerful, and devastatingly good-looking, the Moto Q is the ultimate power player. The worlds thinnest, lightest QWERTY phone is a seamless fusion of QWERTY and phone delivering a fully-loaded package of email, voice, and entertainment in one amazingly rich but thin device. Like its cousin the RAZR, the Qs superior voice quality makes it a stand out from the competition
Bastard Pals
Carey and I didn't invite very many people to our wedding reception and housewarming party. We wanted to keep things small - more an intimate gathering of close friends and family than an 'invite anyone you've ever met' kind of deal. We sent snail mail invitations a month or so before-hand, though friends and family knew the date long before that.
Carey and I didn't register anywhere because we don't need anything big. Just little things like spatulas and a lamp or two (that we'd want to pick out). Just about everyone gave us checks or gift cards to places like Lowe's - even folks like my old high school chemistry teacher and golf buddy, from whom I expected nothing.
Five of my pals, however, didn't bother to get us anything. Not even a card
NSLog()
Carey and I didn't register anywhere because we don't need anything big. Just little things like spatulas and a lamp or two (that we'd want to pick out). Just about everyone gave us checks or gift cards to places like Lowe's - even folks like my old high school chemistry teacher and golf buddy, from whom I expected nothing.
Five of my pals, however, didn't bother to get us anything. Not even a card
NSLog()
UK Wi-Fi Freeloader Arrested, Charged - First case of its kind in the UK
Just weeks after a Tampa man was arrested for accessing an unsecured wireless hotspot from the street, a similar report emerges out of the UK. According to Silicon.com, UK police have arrested a Wi-Fi freeloader, fining him £500 and sentencing him to 12 months' conditional discharge (what us Yanks call probation). It's apparently the first such case in the UK. 'Police sources said Straszkiewicz was caught standing outside a building in a residential area holding a wireless-enabled laptop,' says the report
Apache Jakarta Tomcat v5.5.10-alpha Now Available
The Apache Jakarta Tomcat team is proud to announce the immediate availability of Tomcat 5.5.10-alpha. This build contains 110 improvements, including bug fixes, enhancements, and documentation updates. There are several interesting new features, such as Apache Portable Runtime (APR)-based HTTP/1.1 and AJP/1.3 protocol handlers with SSL support, an experimental NIO-Socket channel for the AJP/1.3 connector, improved support for Java 5 using the Eclipse 3.1 JDT, clustering support at the Engine and Host levels, and more
Yahoo! acquires Konfabulator
Yahoo! Inc. on Monday will announce the acquisition of Konfabulator, a Macintosh and Windows application that allows users to run mini files known as Widgets on their desktop -- the same model used by Apple for its Dashboard application. Yahoo! company executives said they would also be giving Konfabulator away for free, completely doing away with the US$19.95 currently charged for the product.
Yahoo! said the reason they purchased Konfabulator was that they wanted an easy way to open up its APIs to the developer community and allow them easy access to the information on the Yahoo! Web site. In doing this, Widgets could be built without having to scrape sites in order to get information
Yahoo! said the reason they purchased Konfabulator was that they wanted an easy way to open up its APIs to the developer community and allow them easy access to the information on the Yahoo! Web site. In doing this, Widgets could be built without having to scrape sites in order to get information
Raj Blogs: What are the different type of JDBC drivers?
There are four types of JDBC database driver:
The JDBC/ODBC bridge driver A piece of native C-code that translates a JDBC call to an ODBC call. Use this driver for development, not for industrial-strength application environments. Note that you have to have an ODBC database driver manager + an ODBC database driver installed on the server in addition to the JDBC/ODBC bridge.
Native API partly java driver A piece of native C-code that translates a java JDBC call to a native database call level API. Use this driver for development and deployment. Due to its native code, this driver can only be used by Java Applications with full computer access (i.e. not Applets).
JDBC-Net pure Java driver A piece of pure java code that translates an incoming JDBC call to an outgoing database Net protocol call (such as SQL*Net). Use this driverfor development and deployment. Flexible and powerful, this driver can be used by any Java component and requires only connect access to work.
Native protocol pure Java driver A piece of pure java code that translates an incoming JDBC call to an outgoing database native protocol call (such as Oracle CLI). Use this driver for development and deployment. This driver type is the recommended one for server-side java development unless a type 2 driver has considerable performance advantages
The JDBC/ODBC bridge driver A piece of native C-code that translates a JDBC call to an ODBC call. Use this driver for development, not for industrial-strength application environments. Note that you have to have an ODBC database driver manager + an ODBC database driver installed on the server in addition to the JDBC/ODBC bridge.
Native API partly java driver A piece of native C-code that translates a java JDBC call to a native database call level API. Use this driver for development and deployment. Due to its native code, this driver can only be used by Java Applications with full computer access (i.e. not Applets).
JDBC-Net pure Java driver A piece of pure java code that translates an incoming JDBC call to an outgoing database Net protocol call (such as SQL*Net). Use this driverfor development and deployment. Flexible and powerful, this driver can be used by any Java component and requires only connect access to work.
Native protocol pure Java driver A piece of pure java code that translates an incoming JDBC call to an outgoing database native protocol call (such as Oracle CLI). Use this driver for development and deployment. This driver type is the recommended one for server-side java development unless a type 2 driver has considerable performance advantages
Nufarm's recovery plan takes the heat
Nothing spoils a techie's after-work beer faster than a phone call to say his server room is on fire. Phil Jackson was having a quiet ale with his girlfriend on a Wednesday night in May when the call came through; the building housing the server room where he worked at Nufarm's Laverton headquarters in Melbourne's west was on fire
Tuesday, July 26, 2005
Google countersues Microsoft in battle over executive
Google fought back against Microsoft this week, filing a legal motion arguing that attempts by Microsoft to prevent Kai-Fu Lee from joining Google were illegal.
Google sought to nullify a non-compete agreement signed by Lee when he worked for Microsoft. Google filed a motion in California Superior Court in Santa Clara County, Reuters said.
Lee is slated to join Google to spearhead new research and development efforts in China. Until Monday, Lee was corporate vice president of Microsoft's Natural Interactive Services Division, IDG News Service reported.
Google sought to nullify a non-compete agreement signed by Lee when he worked for Microsoft. Google filed a motion in California Superior Court in Santa Clara County, Reuters said.
Lee is slated to join Google to spearhead new research and development efforts in China. Until Monday, Lee was corporate vice president of Microsoft's Natural Interactive Services Division, IDG News Service reported.
HashMap.get() can cause an infinite loop!
Yes, it is true. HashMap.get() can cause an infinite loop. Everyone I've talked to didn't believe it either, but yet there it is -- right in front of my very eyes. Now, before anyone jumps up and shouts that HashMap isn't synchronized, I want to make it clear that I know that. In fact, here is the paragraph from the JavaDocs:
Note that this implementation is not synchronized. If multiple threads access this map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more mappings; merely changing the value associated with a key that an instance already contains is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the map.
Now, I've always taken that standard warning in all the Collections classes as simply stating the obvious: these data structures are synchronized and if you aren't doing your own synchronization you'll get dirty/unreliable/unknown data and/or behavior.
But never in my wildest dreams would I have thought that without proper synchronization that an infinite loop could occur!
Blogbody
Note that this implementation is not synchronized. If multiple threads access this map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more mappings; merely changing the value associated with a key that an instance already contains is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the map.
Now, I've always taken that standard warning in all the Collections classes as simply stating the obvious: these data structures are synchronized and if you aren't doing your own synchronization you'll get dirty/unreliable/unknown data and/or behavior.
But never in my wildest dreams would I have thought that without proper synchronization that an infinite loop could occur!
Blogbody
FTC cracks down on email smut barons
The US Federal Trade Commission last week launched a crack down on xxx-rated spam with legal action against seven firms that have allegedly flouted laws requiring warning labels on smutty emails. Four of the seven companies agreed to pay a total of $1.159m in penalties and to abide by federal rules requiring warning labels on emails with sexually-explicit content and the US federal CAN-SPAM Act
Subscribe to:
Posts (Atom)
Popular Posts
- Linux Forum: Apache, Webmin and Mandrake - Linux Operating System Help
- Yahoo! Mail: Revenge of the Oddpost
- Free AS400 & iSeries Software Tools & Utilities Downloads
- The Laughing Boardroom video...a real world example!
- IBM eServer iSeries - The Laughing Boardroom
- Basic Requirements of a JavaServer Faces Application
- UDATE and *DATE in AS400 RPG
- AS400 APIs
- Fast-track your Web apps with Ruby on Rails
- Encrypt Data on as400 (QC3ENCDT, Qc3EncryptData)