Monday, December 14, 2009

2009-12-14 Monday

I've been busy for the last few weeks: arranging a temporary relocation for a client engagement; wrapping-up my last client engagement; traveling to the new client city; getting settled/unpacked; doing a deep dive into the new client's project, etc.

I'm finally getting back to an even-keel and having some time to catch-up on some reading and writing.

I happened to come across this review of the HP Envy, a quad core laptop, sounds like exactly what I am looking for...perhaps the closest thing to my dream machine that I've found so far.

Friday, November 20, 2009

2009-11-20 Friday - WCF Tuning

This is a placeholder blog posting for some material that I want to organize on WCF Tuning...more to come later...

Arnon Rotem-Gal-Oz has a brief posting on his experience discovering the connectionManagement maxconnection parameter:

Sunday, October 25, 2009

2009-10-25 Sunday - Common Lisp

In my study of the Scala language, I've taken a slight detour to spend some time learning the CLISP implementation of Common Lisp, which I think will help me to better understand Scala itself (as well as fundamental concepts of any Functional Language).

Here are some of the resource links that I've found useful:

A Concise Introduction to LISP, by David L. Matuszek

Common Lisp the Language, 2nd Edition
by Guy L. Steele Jr.

Peter Siebel's, Practical Common Lisp

6 Problems (with solutions in Lisp)
CS107 Handout 53, Autumn 2000 November 30, 2000, Lisp Section Examples

Nick Parlante's

This is Abhishek Reddy's really well written, concise, summary of the the features in Common Lisp: well as his:

Although not specific to Scala or Lisp, I enjoyed reading this 376 page text...

Programming Languages: Application and Interpretation
By: Shriram Krishnamurthi
Brown University

2010 DoD Enterprise Architecture Conference

2010 DoD Enterprise Architecture Conference (San Antonio, Texas)

Hosted by:
Director, Enterprise Architecture & Standards Office, DoD CIO/ASD NII
Joint Chiefs of Staff, J6

2009-10-25 Sunday - QCon 2009, San Francisco

My reservations are complete for my trip next month to the 3rd Annual QCon conference in San Francisco (Nov. 16-20).

To consolidate and deepen my understanding, I'm signed up for the following tutorials on Monday-Tuesday:

  • Java Performance Tuning

  • Enterprise Application Development with Spring

  • Enterprise AOP with Spring and AspectJ

Wednesday thru Friday will be the full conference - and it is jam packed with some great sessions by speakers who are some of the world's foemost experts.

I attended last year's conference - and really look forward to spending the week renewing my passion for software architecture.

Saturday, October 10, 2009

2009-10-10 Saturday - Tax Planning

This weekend I'm reading: South-Western Federal Taxation 2010: Taxation of Business Entities, Professional Version (with TaxCut® Tax Preparation Software CD-ROM and Checkpoint 6-month Printed Access Card)

Packed with new "Big Picture" tax scenarios and new "What-If?" case variations, SOUTH-WESTERN FEDERAL TAXATION 2010: TAXATION OF BUSINESS ENTITIES remains the most effective text for helping you master complex tax concepts and the ever-changing tax legislation. H&R Block's TaxCut® software and Checkpoint® from Thomson Reuters come with each new copy of this text...

Friday, October 09, 2009

2009-10-09 Friday - Intl. Assoc. of Software Arcchitects

Today I became a full member of the International Association of Software Architects (Membership Number: 39420607)

The International Association of Software Architects (IASA) is the premier association focused on the architecture profession through the advancement of best practices and education while delivering programs and services to IT architects of all levels around the world.

Established in 2002, IASA is an international non-profit business association dedicated to the advancement and sharing of issues related to software architecture in the enterprise, product, education and government sectors.

The association is committed to improving the quality of the IT architecture industry by developing and delivering standards, education programs and developing accreditation programs and services that optimize the development of architecture profession. IASA membership consists of approximately 6,000 members located in over 50 countries.

2009-10-09 Friday - C# ActiveDirectory Application Authorization

Today I spent some time researching the integration of ActiveDirectory as the Authorization mechanism for users of a C# application (e.g. based on their Role / Group membership).

This line of code will return the user's current logon domain / name:

Here are some of the more interesting links I found:

Howto: (Almost) Everything In Active Directory via C#

Managing Directory Security Principals in the .NET Framework 3.5

Developing Applications Using Windows Authorization Manager

Application Security through Active Directory and ADAM

How To: Use ADAM for Roles in ASP.NET 2.0

TechArena Community > Technical Support > Computer Help > Windows Server > Active Directory
C# AD Scripting

Other resources that may have some useful informaiton that I still need to review:

C# Forums CSharpFriends > CSharpAspNetAnyQuestionIsOk > Setting Permissions

.NET Framework Class Library

Integrating LDAP Active Directory into your ASP.Net Web Portal (C# or VB.NET)

Using Forms Authentication with Active Directory

How To Implement Forms-Based Authentication in Your ASP.NET Application by Using C# .NET

Active Directory in C# ASP .NET Web Applications

Generic Authentication Call to Active Directory in C#

How To: Use Forms Authentication with Active Directory in ASP.NET 2.0

How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI

2009-10-09 Friday - SpringSource Tool Suite

I downloaded and installed the SpringSource Tool Suite (2.0.1) tonight.

I'm working my way through Spring In Action, Second Edition, by Craig Walls (a most excellent book!)

Wednesday, October 07, 2009

2009-10-07 Wednesday - ESRI ArcGIS Resources

I'm currently working on a client's interesting ArcGIS project - serving double duty as the Project Manager and Application Architect.

Here are some interesting resources for ArcGIS:

ArcGIS Desktop 9.3 Help

What is ArcGIS 9.3

What's new in ArcGIS 9.3

What's new in ArcGIS 9.3.1

Using ArcGIS Desktop (400+ page pdf)

Tips and Tricks within ArcGIS

Sunday, October 04, 2009

2009-10-04 Sunday - Interesting Links

19 Firefox Add-ons For Designers

I happened across a Twitter posting that mentioned:
Guava: Google Core Libraries for Java 1.6

...which led me to discover these...

...extends the Java™ Collections Framework by providing type-specific maps, sets, lists and queues with a small memory footprint and fast access and insertion; it also includes a fast I/O API for binary and text files.

DSI utilities
...a mish mash of classes accumulated during the last ten years in projects developed at the DSI (Dipartimento di Scienze dell'Informazione, e.g., Information Sciences Department) of the Università degli Studi di Milano

Saturday, October 03, 2009

2009-10-03 Saturday - SATURN 2010

SEI Architecture Technology User Network (SATURN) Conference
SATURN 2010 Theme: Architecting for Change
May 17 - 21, 2010
Minneapolis, MN

2009-10-03 Saturday - WPF and Silverlight

I'm researching Microsoft's WPF and Silverlight technologies for a client development effort. This posting will help me organize links to information.

WPF Resources

MSDN: Windows Presentation Foundation

MSDN: Getting Started with Windows Presentation Foundation WPF Through an Example: Introduction A Guided Tour of WPF

MSDN: Building a WPF Application (WPF)

Using a WPF StackPanel for Business Forms WPF (.NET 3.5) – what’s next? The future roadmap of Windows Presentation Foundation

Scott Guthrie's NET 3.5 Client Product Roadmap

WPF Futures (Oct. 2008) WPF and the Future? (June 2008)

Paul Sheriff's Why you Should Move to WPF

Should you invest in WPF and Silverlight? Mix09: The future of WPF

Mix09: What's New in Windows Presentation Foundation (WPF) 4

WPF vs. Silverlight: it's the wrong debate

Xceed WPF products WPF components

Buying themes for WPF applications Reuxables - designer application themes designed for the Microsoft Windows Presentation Foundation (WPF) and Silverlight.

Silverlight Resources

The official Microsoft Silverlight site:

Microsoft - Prism: patterns & practices Composite Application Guidance for WPF and Silverlight site

Silverlight 3 new business app features

Getting started with Silverlight

Building a Service for a Silverlight Client

MSDN: Accessing Web Services in Silverlight

Nice review of 16 Design Tools for Prototyping and Wireframing

Thursday, October 01, 2009

2009-10-01 Thursday - Sun Cloud Computing

Sun's Project Kenai

The APIs for the Sun Cloud

I listened in on a Sun Cloud Computing webinar this morning:

Webinar: Cloud Computing - An Introduction Tailored for the Enterprise

- Over 160 questions were asked via the chat window
- Most of the questions were very basic / fundamental
- Most of the answers were too general to be meaningful
- They cited Washington Mutual as an example???
- Nothing substantive was announced
- My two questions were not answered:
--- How many Cloud Computing data centers will Sun have running by the end of the year?
--- Are there any Oracle Cloud Computing efforts that might have synergy with Sun's efforts?

Next Thursday, October 7th, there is another webinar scheduled:

Webinar: Cloud Computing - An Introduction Tailored for Startups & Developers

2009-10-01 Thursday - Oracle World 2009

Submitted my registration request today for Oracle World 2009 (Oct 11-15) as a blogger / industry analyst

Monday, September 28, 2009

2009-09-28 Monday - Developer API

Hunch API

"In 10 questions or less, Hunch will offer you a great solution to your problem, concern or dilemma, on hundreds of topics. Hunch's answers are based on the collective knowledge of the entire Hunch community, narrowed down to people like you, or just enough like you that you might be mistaken for each other in a dark room. Hunch is designed so that every time it's used, it learns something new. That means Hunch's hunches are always getting better."

Hunch allows access to its data and embeddable content through an API. Developers can make use of this API in many ways, such as:

•Putting an embeddable version of a Hunch topic on your web site. For example, if you have a blog about dogs you could embed our "which dog breed is best for me" topic in your sidebar. Note: To embed Hunch on your site, you can also use the widget Hunch provides by copying the Embed code that appears on each result page.

•Porting Hunch to a mobile device or other platform such as SMS, Twitter, IVR etc.

•Querying our "taste database" for correlations, predictive variables, and more. For example, you could ask our taste database for the correlation between people who own guns and the people who like SUVs, or what the most salient personal trait is for predicting whether someone likes the movie Napoleon Dynamite. Over time we hope to provide a complete database of people's aggregated taste preferences. Note that all data provided here is anonymized and aggregated to protect our users' privacy.

The API is free for non-commercial use.

Sunday, September 27, 2009

2009-09-27 Sunday - Recommended Web Design Books

Most of my time is spent working on large-scale problems: designing and leading the development of new systems, planning and implementing the integration of new systems with legacy systems, coaching development teams, leading business and technical analysis discussions, designing the information technology systems to support new business processes, and providing project management oversight. As a fun mental diversion, I've decided to invest some time in enriching my creative visual design skills - and recently added 10 new books to my library:

CSS Web Site Design, by Eric A. Meyer

Eric Meyer on CSS, Master the Language of Web Design

More Eric Meyer on CSS

The Zens of CSS Design, Visual Enlightment for the web, by Dave Shea and Molly E. Holzschalg

Web Design for ROI, Turning Browsers into Buyers & Prospects into Leads, by Lance Loveday & Sandra Niehaus

Web Style Guide, 3rd Edition, Basic Design Principles for Creating Web Sites, by Patrick J. Lynch and Sarah Horton

CSS Cookbook, Quick Solutions to Common CSS Problems, 2nd Edition, by Christopher Schmitt

Head First Web Design, by Ethan Watrall & Jeff Siarto

Information Architecture for the World Wide Web, by Peter Morville & Louis Rosenfeld

Beginning GIMP, From Novice to Professional, Second Edition, by Akkana Peck

2009-09-27 Sunday - RESTful API has published a RESTful API
The Public API allows client applications to access content by making REST requests to three methods. The response will be returned in either JSON or XML format, specified by the request query.

Interestingly, is using API Management services (see How It Works)

2009-09-27 Sunday - Eclipse SQL Explorer

I installed the Eclipse SQL Explorer plugin today - and like what I see so far.

Friday, September 25, 2009

2009-09-25 Friday

A busy week.

I'm working on growing my consulting practice - and assembling engagement teams to engage more clients simultaneously. I had three conference calls this week with potentially new clients...increasing the number of conversations per week - and thus increase my deal-closure rate.

Started working on a new client assignment today - the high-level design of a Service Oriented Application (SOA) extension to a legacy mainframe application - quickly sketched out the following in about 4 hours - using Sparx System's Enterprise Architect:

  • Requirements List

  • Use Case Diagrams

  • Domain Model

I also started working on the site navigation map and the object class model for a web based user interface for the new functionality that will be created.

This application will be deployed as an ASP.NET application - integrating with a NATURAL / ADABAS backend, leveraging Software AG's webMethod's EntireX - to SOA-enable the legacy application code base.

I happened to come across an interesting company today: - they have an interesting business model - offering a number of products (66?) - at very reasonable prices. I was particularly impressed by the team they have assembled.

Interesting: Organization of Independent Software Vendors (OISV)

Sunday, September 13, 2009

2009-09-13 Sunday - SEO Resources

While doing some research for a non-profit on how to improve their search engine result placement, I came across the following interesting resources: - real time web analytics - web site tracking, statistics and analysis - web application monitoring - web site monitoring (measure your downtime)

Dave McClure's blog: Master of 500 Hats

Avinash Kaushik's blog: Occam’s Razor

Updated 2009-10-03:

Sunday, August 23, 2009

2009-08-23 Sunday - FindBugs - Missing Classes

If you get a warning from FindBugs about missing classes, then you probably need to make sure that all of the jar files are referenced by the auxClasspath entry.

Tuesday, August 11, 2009

2009-08-11 Tuesday - Misc

My next addition to my development environment:

Western Digital WDH1Q20000N My Book Studio Edition 2TB External Hard Drive with Quad Interface FireWire 400/800, USB 2.0 and eSATA (Silver)

How to Create Your First iPhone Application

MIT: Structure and Interpretation of Computer Programs

2009-08-10 Tuesday - Better Software Design and Coding Skills

Here are some articles that will stimulate your mind on improving your software design and coding skills:

The Pragmatic Bookshelf: Tell, Don't Ask

Metaphysical Developer: Closures, Collections and some Functional Programming

Andrew Binstock: Perfecting OO's Small Classes and Short Methods

Some of the ideas that Stephan Schmidt writes on his blog (Code Monkeyism) will probably surprise you - as they challenge some conventional wisdom as taught in university computer science courses...but the ideas are worth thinking about:
Never, never, never use String in Java (or at least less often :-)

Go Ahead: Next Generation Java Programming Style

Friday, August 07, 2009

2009-08-07 Friday - Equipment Upgrades

Tonight I added two Samsung P2070 monitors to my work area.

I also added a Logitech S520 Cordless Desktop Keyboard & mouse.

So far, very pleased with the new equipment. I especially like the simple and functional design of the Logitech keyboard.

Wednesday, August 05, 2009

2009-08-06 Wednesday - Seattle 2.0 Startup Day 2009

Seattle 2.0 Startup Day 2009, Saturday, September 26th
StartupDay 2009 is the conference for pre-entrepreneurs interested in founding or joining a tech startup. Learn what’s important for creating a tech business from scratch. Meet one-on-one with advisors. Learn how to pick the right idea, build your team, fund the business, build your product, bring it to market and make a profit

2009-08-06 Wednesday -

GovLoop - Social Network for Government 2.0

Monday, July 20, 2009

Sunday, July 19, 2009

2009-07-19 Sunday - JavaScript Resources

I wanted a bit of JavaScript to track how many days until my next voyage adventure begins - and happened to find just what I needed on

Friday, July 17, 2009

2009-07-17 Friday - GlassFish, Mule Galaxy, LDAP

I had an incredibly frustrating day today - trying to get the Mule Galaxy Community Edition Registry/Repository configured properly to authenticate via LDAP against an instance of Microsoft Windows 2003 Active Directory.

One lesson learned: Do not try to manually deploy the Mule Galaxy war file via DOS commands to the autodeploy directory - use the GlassFish Web Admin Console to deploy/undeploy

You have to first use a non-LDAP Mule Galaxy instance of the war file to setup your Active Directory groups - and then swap the war for another one that is configured for LDAP.

I have the LDAP / Active Directory authentication working - but I'm still researching an Active Directory Group configuration issue for the authorization features of GlassFish's Group permissions.

Enabling Authentication Through LDAP

2009-07-17 Friday - Java Date and Time

I'm doing some research tonight on various tips & tricks on Date and Time formatting, so this is my blog posting to capture some of the links I find:

The Java Tutorials: Internationalization > Formatting > Customizing Formats

Java Runtime Environment (JRE) - Convert date time local Timezone to GMT

TimeZone (Java 2 Platform SE 5.0)

DateFormat and SimpleDateFormat Examples

What's your time zone?

Canadian Mind Products > Java Glossary > Time

Convert Local time to UTC and vice versa

Working in Java time

Java Daylight Saving Time: Known problems and workarounds

Supported user.timezone property values...?

Thread: Timezones, Glassfish, Two different systems: How do I change the TZ
of Glassfish?

Internationalization (I18N) - tzmappings and tzupdater

Bug ID: 6743394 (tz) tzmappings must be updated for Windows

I came across Fred Swartz'sJava Notes: Table of Contents - and want to remember to come back and peruse it sometime in the future.

2009-07-17 Friday - Oracle Resources

ORACLE SQL*Plus: An Introduction and Tutorial
Richard Holowczak
Prof. Richard Holowczak
Department of Statistics and Computer Information Systems
Baruch College, City University of New York

SQL*Plus User's Guide and Reference (Release 9.2)

SQL*Plus® User’s Guide and Reference (Release 10.1)

What's New in SQL*Plus? (10.2)

SQL*Plus® User’s Guide and Reference (as pdf) (Release 10.2) - (as html)

Oracle, SQL, Dates and Timestamps

Using Datetime and Interval Datatypes in a Global Environment

Oracle PL/SQL examples

Oracle Tips
Tuning Oracle sorting operations
Internals of Oracle sort operations

Monday, July 13, 2009

2009-07-13 Monday - JUnit 4.6

I spent some time over the weekend upgrading a Java integration project to use JUnit 4.6 - (previously I had JUnit 3.8 installed).

I found these two articles to be very helpful in getting up to speed quickly on JUnit 4 syntax:

Saturday, July 11, 2009

2009-07-11 Saturday - The Yahoo! User Interface Library (YUI)

The Yahoo! User Interface Library (YUI), currently at release 2.7.0
The YUI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. YUI is available under a BSD license and is free for all uses. The YUI project includes the YUI Library and two build-time tools: YUI Compressor (minification) and YUI Doc (documentation engine for JavaScript code).

I came across this JavaScript library while looking inside the Membrane SOA Registry war file.

Tuesday, July 07, 2009

2009-07-07 Tuesday - Predic8's Membrane SOA Registry
This is a relatively new tool to the Registry space…(also a Java EE Web Application)…and the current release is 0.8

Recent announcment regarding the software:

2009/06/29 - Registry Software Available
The registry software used by is now available for download. The registry is a Java EE Web application that can be deployed into an Java EE application server or in a web container like Apache Tomcat.

Online Demo:

My first reaction? Wow.! - this has some very interesting features(!)

Possible Missing features?
- WSDL validation (?)
- No support for organizing the registry list of services according to a package/application/directory structure (?)
- Governance / Policy (?)

Things that are in this software that Mule Galaxy doesn't support?
+ Direct Anonymous acccess to the WSDL - important
+ Incredibly easy navigation of Schemas
+ Simple view of Service Overview
+ List of Interfaces for a Service
+ List of Endpoints for a Service
+ Recent Events for a Service
+ Service Statistics summary dashboard
+ Dependencies graph for Service
+ Includes a Ping / Availability dashboard
+ Includes an integrated SOAP client for testing / invoking a service
+ Consumer list (?)
+ Host list (?)

Friday, July 03, 2009

2009-07-03 Friday - Beginning Scala Book Review

The following is the review I posted tonight on for David Pollak's Beginning Scala book

If you are like me, you are often hard pressed for getting many things done quickly.

If you want a quick introduction to Scala, this book is just right for the level of information provided to get you up and running quickly.

I enjoyed reading David Pollak's "Beginning Scala" - and found it to be very helpful in several ways:

#1 - It is written from the perspective of an experienced Java programmer - and the parallels between the languages that are cited in the text was a very helpful technique for compressing the time needed to digest the material. Ruby parallels are also frequently covered.

#2 - This book is a great book to have on your bookshelf if you want to become immediately productive. David's writing is direct, practical, pragmatic.

#3 - This book is useful for the application developer, library designer, and architect.

At ~290 pages - Beginning Scala does a good solid job of covering the language, with many interesting examples of Scala code.

Chapters include:
1 - About Scala and How to Install It
2 - Scala Syntax, Scripts, and Your First Scala Programs
3 - Collections and the Joy of Immutability
4 - Fun with Functions, and Never Having to Close that JDBC Connection
5 - Pattern Matching
6 - Actors and Concurrency
7 - Traits and Types and Gnarly Stuff for Architects
8 - Parsers - Because BNF Is Not Just for Academics Anymore
9 - Scaling Your Team

I had the pleasure of meeting David at JavaOne 2009 in San Francisco this year. He is a genuinely nice guy - and a passionate Scala enthusiast.

2009-07-03 Friday - Eben Hewitt, Java SOA Cookbook

I happened to come across Eben Hewitt's blog today.

A link to his blog article: Using SOAP Faults and Exceptions in Java JAX-WS Web Services, was mentioned in a LinkedIn group I joined some time ago (SOA Service Oriented Architecture Technology Architects)

It turns out that Eben recently had his book published, Java SOA Cookbook:

2009-07-03 Friday - IEEE 1471

IEEE 1471 Website

Rich Hilliard: All About IEEE Std 1471

David Emery & Rich Hilliard: Updating IEEE 1471

Thursday, July 02, 2009

Tuesday, June 30, 2009

Saturday, June 27, 2009

2009-06-27 Saturday - Links

I happened to come across the most excellent blog of Henrik Kniberg today, courtesy of a tweet by Jonas Bonér (who I enjoyed meeting at JavaOne 2009 in San Francisco)

One Day in Kanban Land

Kanban vs. Scrum

Jonas is the founder of the consulting firm Scalable Solutions, based out of Sweden.
"Scalable Solutions is a small boutique consultancy providing consultancy, mentoring, coaching and training in areas such as scalability and high-availability, fault-tolerance and robustness, system hardening and stabilization, concurrency as well as agile practices and techniques."

Tuesday, June 23, 2009

2009-06-23 Tuesday - Presentations / Communications

I came across the following sites today, that I want to remember and come back to later. I'm very interested in increasing the effectiveness of my communications and presentations - and these resources look like they have something to offer:

Decker: The Five Biggest Mistakes CEO's Make in Speaking

2009-07-03 Friday Update

Scott Berkun: How to give a great ignite talk (his\ blog)

Tuesday, June 16, 2009

2009-06-16 Tuesday - Java JVM Garbage Collector Tuning

A client recently engaged my services to help their development team refactor the C# .NET code base for a major systems integration interface.

Their initial execution time was approximately 38 minutes. The latest version of the refactored code is now running in approximately 8 minutes.

One layer of the interface invokes a 3rd party vendor's Java Web Services API. Under nominal load, one of the Java Web Services throws an OutOfMemoryError - as the size of a batch file is increased during load testing. Thus far, they have relied on increasing the Java JVM Heap size parameters. They are running JDK 1.5 due to a 3rd party library dependency.

A bit of investigating came across what appeared to be somewhat similiarly reported problem:

This discussion thread indicates that this might be resolved in JDK 1.6

This summary description seems to be in line with what I suspect to be the root cause:

Excessive GC Time and OutOfMemoryError

"The parallel collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. This feature is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small. If necessary, this feature can be disabled by adding the option -XX:-UseGCOverheadLimit to the command line."

In preparing to do further diagnosis, I've assembled the following links to share with the client's technical staff:

2009 JavaOne Technical Session: Garbage Collection Tuning in the Java HotSpot Virtual Machine TS-4887

Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine

Frequently Asked Questions bout Garbage Collection in the HotspotTM JavaTM Virtual Machine (1.4.2)

Java theory and practice: Garbage collection in the HotSpot JVM (2003)

Garbage collection tuning in Java 5.0 is a breath of fresh air

4 Easy Ways to do Java Garbage Collection Tuning

Java Garbage Collection Tuning

There are essentially two GC threads running. One is a very lightweight thread which does "little" collections primarily on the Eden (a.k.a. Young) generation of the heap. The other is the Full GC thread which traverses the entire heap when there is not enough memory left to allocate space for objects which get promoted from the Eden to the older generation(s).

If there is a memory leak or inadequate heap allocated, eventually the older generation will start to run out of room causing the Full GC thread to run (nearly)continuously. Since this process "stops the world", {your application} won't be able to respond to requests and they'll start to back up.

The amount allocated for the Eden generation is the value specified with -Xmn. The amount allocated for the older generation is the value of -Xmx minus the -Xmn. Generally, you don't want the Eden to be too big or it will take too long for the GC to look through it for space that can be reclaimed


java.lang.OutOfMemoryError exception, application runs out of memory

"An OutOfMemoryError exception is usually an indication that heap memory is being used up. Often this is from application code keeping references to objects that are no longer needed, and the garbage collector does not free them"

CPU spikes, excessive CPU usage Obtain a thread dump and check for threads that are caught in tight loops. Check for garbage collection issues.

Out of Memory and Garbage Collection

Most memory problems are due to memory leaks in the application program. For example, a cache or a vector that fills up with stale data, or a singleton or static variable which doesn't properly detect a web-app reload. Some more exotic memory issues relate to running out of heap memory or virtual memory when using a large number of threads (> 256).

The steps to track down a memory problem are:

1. Enable -J-verbosegc with the start or httpd -install. The -verbosegc flag logs the garbage collection of the heap, which will let you know if you're running out of heap memory (the most common case).

2. Get a heap profiler or use the heap dump in the JVM. JProfiler is an inexpensive commercial heap profiler. Although the JVM's heap dump is not very user friendly, it's always available. You should be using a heap profiler as part of your development process and certainly use one before any production launch.

3. With the heap profiler, find the 2-3 top memory users and fix those memory leaks.

4. Common application errors include:
+ ThreadLocal variables that are not properly cleared at the end of each request.
+ Singleton or static hash maps and caches, esp check for clearing web-app restarts.
+ Spawned threads which are not stopped on web-app restart.
+ web-app variables (like the "application" variable), stored in a static variable.

5. If the heap is clean, i.e. -verbosegc shows a steady heap, you'll need to look at non-heap memory:
+ Thread stack usage (-Xss1m). Each thread takes up some non-heap memory. The default on some systems is 8 meg. Because of 32-bit virtual memory limits of about 2G on some systems, even 256 threads with 8 meg stacks can chew up the virtual memory. You can drop the stack size with the -Xss directive.
+ JNI memory. If you're using JNI libraries or drivers that use JNI, it's possible that the JNI can allocate more memory than is available.
+ fork/exec and OS limits. If the OS does not have enough available swap space, for example, the OS might refuse a "jikes" compilation.
+ NIO, memory mapping, and .jar files. The JDK memory-maps .jar files. In some cases with very large numbers of jars, this can result in running out of virtual memory. The same issue can appear for NIO memory mapping.

6. If all of these are eliminated, it might be an {application} bug. However, you will
need to have located the memory leak as {application}-related before any memory-related bug report, i.e. it's necessary to go through the above steps before reporting a bug. Bug reports that complain about OutOfMemory errors, but have not even gotten a JDK memory dump are most likely application errors. You must provide a heap dump when reporting any potential Resin memory problems.

Tuning the Java Runtime System

Tuning JVM switches for performance

More exotic switches
-XX:+UseAdaptiveSizePolicy - this switch may help
improve garbage collector throughput and memory footprint. It is part of garbage
collector ergonomics implemented in JDK5.0.

JDK 1.5 Garbage Collector Ergonomics

On server-class machines running the server VM, the garbage collector (GC) has changed from the previous serial collector (-XX:+UseSerialGC) to a parallel collector (-XX:+UseParallelGC). You can override this default by using the -XX:+UseSerialGC command-line option to the java command.

The parallel garbage collector (UseParallelGC) throws an out-of-memory exception if an excessive amount of time is being spent collecting a small amount of the heap. To avoid this exception, you can increase the size of the heap. You can also set the parameters -XX:GCTimeLimit=time-limit and -XX:GCHeapFreeLimit=space-limit



The upper limit on the amount of time spent in garbage collection in percent of total time (default is 98).


The lower limit on the amount of space freed during a garbage collection in percent of the maximum heap (default is 2).


A hint to the virtual machine that it's desirable that not more than 1 / (1 + nnn) of the application execution time be spent in the collector.

For example -XX:GCTimeRatio=19 sets a goal of 5% of the total time for GC and throughput goal of 95%. That is, the application should get 19 times as much time as the collector.

By default the value is 99, meaning the application should get at least 99 times as
much time as the collector. That is, the collector should run for not more than 1% of the total time. This was selected as a good choice for server applications. A value that is too high will cause the size of the heap to grow to its maximum.

The client environment includes running JBoss Application Server:

JBoss Enterprise Portal Platform 4.3 Tuning Guide

6.2. Garbage Collection (GC) Tuning
"Depending on nature of your application, adding XX:+UseConcMarkSweepGC
-XX:+UseParNewGC may optimize GC collection behavior. "

Jboss 4.2 - TuneVMGarbageCollection

JBoss Enterprise Application Platform Tuning (Jboss World 2008)

Scaling Up the JBoss Application Server (LinuxWorld Open Solutions Summit 2007)

Set the heap sizes
– Set min and max sizes to same value
– Set young
generation to 1/3 size of heap

Saturday, June 13, 2009

2009-06-13 Saturday - Business Intelligence Reporting Tool (BIRT)

A colleague was asking about report writing tools Friday, I suggested that they take a look at BIRT, and provided the following links:

Here's the main BIRT page where you can download the latest release:

This is the link to their simple tutorial page:

These BIRT Examples may help:

Introduction to BIRT

IBM Introduction to BIRT Part 1

IBM Introduction to BIRT Part 2

BIRT Exchange Community Forum

These YouTube videos may be of some use too:

Two Amazon BIRT titles I would recommend:

Practical Data Analysis and Reporting with BIRT: Use the open-source Eclipse-based Business Intelligence and Reporting Tools system to design and create reports quickly, by John Ward:

and, Diana Peh's, BIRT: A Field Guide to Reporting (2nd Edition)

2009-06-13 Saturday - New Book Received, Programming in Scala

I had the great pleasure of meeting Bill Venners at JavaOne 2009 in San Francisco, he is the president of - and a co-author of Programming in Scala. He has kindly provided me a copy of this new book so that I can write a review.

At roughly ~700 pages, this looks to be a comprehensive treatment of Scala. Of particluar note, Martin Odersky (creator of the Scala language), and Lex Spoon are also co-authors.

Chapter Outline:
1. A Scalable Language
2. First Steps in Scala
3. Next Steps in Scala
4. Classes and Objects
5. Basic Types and Operations
6. Functional Objects
7. Built-in Control Structures
8. Functions and Closures
9. Control Abstractions
10. Composition and Inheritance
11. Scala's Hierarchy
12. Traits
13. Packages and Imports
14. Assertions and Unit Testing
15. Case Classes and Pattern Matching
16. Working with Lists
17. Collections
18. Stateful Objects
19. Type Parameterization
20. Abstract Members
21. Implicit Conversions and Parameters
22. Implementing Lists
23. For Expressions Revisited
24. Extractors
25. Annotations
26. Working with XML
27. Modular Programming Using Objects
28. Object Equality
29. Combining Scala and Java
30. Actors and Concurrency
31. Combinator Parsing
32. GUI Programming
33. The SCell Spreadsheet
A. Scala scripts on Unix and Windows


2009-06-13 Saturday - Sony ICD-PX720 Digital Voice Recorder

I've installed the software for my Sony ICD-PX720 Digital Voice Reccorder today. Very nice. The software has an easy-to-use and intuitive user-interface - and converts the recordings to mp3 when you save to disk. I believe the option I selected on installation of the software increased the fidelity of the sound quite a bit.

I am very pleased with the quality of the recordings, and the battery life is very good. I used this device to record all of the interviews I conducted at JavaOne 2009.

I plan to begin using this to record requirements discussions with clients.

Wednesday, June 10, 2009

2009-06-10 Wednesday - International Semantic Web Conference

presentations from the 7th International Semantic Web Conference (ISWC 2008)

The 8th International Semantic Web Conference (ISWC 2009) will be held 25-29 October 2009 at the Westfields Conference Center near Washington, DC.

2009-06-10 Wedensday - SAP Resources

Enterprise Service Bundles for SAP Industries

UN/CEFACT - SAP Developer Network (SDN)
UN/CEFACT Core Components Technical Specification (UN/CEFACT CCTS)

ISO 15000-5 CCTS developed by UN/CEFACT and ISO Technical Committee (TC) 154 provides a methodology for semantic data modeling that achieves a common understanding of data structures and message types on a syntax independent level.

SAP uses ISO 15000-5 CCTS to define SAP Global Data Types (GDTs) as the basis for Business Objects and Enterprise Services. ISO 15000-5 CCTS is gaining widespread adoption in vertical and horizontal standards development organizations around the globe and will enable SAP to provide the highest level of semantic interoperability possible between SAP and non-SAP applications.

SAP Network Blogs

Monday, June 08, 2009

Saturday, June 06, 2009

2009-06-06 Saturday - Finally Succumbed to Twitter

I've resisted the lure of Twitter - feeling no desire or need to add to my already heavy daily load of reading. However, during JavaOne in San Francisco, I finally hit a tipping point where the potential benefits accumulated to the point that I've decided to sign-up for an account. I tapped my passion for sailing and writing software to come-up with an account name of SailingCoder.

(I would have liked to use "intltechventures" - but it appears that Twitter has a maximum length of 16 characters for an account name)

2009-06-05 Friday - JavaOne 2009 - That's a wrap!

Well, the conference has ended. It was a great week. Lots of lessons learned - not all of which occurred inside the confines of scheduled sessions. Many new contacts made. New friends both near and far.

Friday, June 05, 2009

2009-06-05 Friday - JavaOne 2009 - James Gosling's Toy Show

Very cool demonstrations this morning

Robot Competitions:
- Winner of a Duke's Choice Award

Satellite Control Systems

Chris Boone
- Visual Search Engine
- R&D Team in Moscow

Grameen Bank, - Open Source Project
- Winner of a Duke's Choice Award
- micro-finance web application, loan/saving portfolios
- uses tomcat / struts / Spring Framework
- serves over 150M world-wide served
- 99.9% repayment on loans with no collateral

Thursday, June 04, 2009

2009-06-04 Thursday - Bay Area Scala Enthusiasts at Twitter HQ

I'm deep in the heart of Twitter country tonight: Bay Area Scala Enthusiasts meeting.

Martin Odersky, the creator of the Scala programming language, is giving a talk tonight.

Alex Miller, from St. Louis, announced he is organizing a conference to be held in St. Louis later this Fall

Martin's Talk: What's New in Scala 2.8

Next version will be 2.8

Some extended & modified libraries: swing, collections

New Language Features: named args, specializations, generics, package objects

Optional plugins, continuations

Redesigned compiler/IDE interface

New Language Features:

Named and default arguments:
- Defaults can be arbitrary expressions, not just constants
- Default evaluation is dynamic

Copy Method
Defining a copy
Using a copy

Nested annotations
- annotations can now be nested
- named arguments syntax is re-used

Package Objects
implemented to deal with collection libraries
refactored the class space

Package objects make packages more like objects

Old Scala Collections (pre 2.8): grew over time, gradually, lacked a uniform structure

New Scala Collections: Uniform structure, every operation is implemented only once, selection of building blocks now in package scala.collection.generic

Generics cause a performance hit if you are dealing with primitive types - because they require a uniform representation - everything needs to be boxed...@specialized can be used to avoid the boxing/unboxing problem.

Better Tools
- REPL with command completion
- Newly designed IDE/Compiler interfaces

New control abstractions
- Continuations plugin

More Features:
- extended swing library
- performance improvements
-- structural type dispatch
-- actors
-- vectors, sets and maps
- standardized comopiler plugin architecture

How to get it
- available now via /trunk (bleeding edge)
- final version planned for September/October

Beyond 2.8
- common focus: parallelism and concurrency
- developing a rich library of concurrency abstractions
-- actors
-- transactions
-- data parallelism
-- stream processing
- work with Doug Lea on concurrency datastructures
- advanced tyhpe systems to gurantee isolation and effect tracking
- Goal: in 5 years, Scala should be language of choice for the creation of concurrent and parallel systems.

Breaking News: The meeting organizer mentioned that he just had a phone conversation with Joshua Bloch tonight - and that he said he may finally have to take a look at Scala.

2009-06-04 Thursday - JavaOne 2009 - Actor-Based Concurrency in Scala

Session: TS-5395, "Actor-Based Concurrency in Scala"

Phillipp Haller, EPFL
Frank Sommers, Artima

Actor Principles:
- Shared-nothing
-- Actor's state is private
-- No synchronization on private state

- Actors communicate through messages
-- Messages are (mostly) immutable objects

- Actors can be local or remote
-- Same programming model
-- Scales "from multicore to cloud"

An established concurrency paradigm
Long history of research
-- started at MIT in the 70's (Hewitt, Agha)
--- insipred by Smalltalk and Simula

- Motivation for the development for Scheme

Actors in Erlang
"a pure message-passing language"
- Supportive language features
- Special, process-oriented virtual machine
-- Manage VM processes
-- Cheap proceses: creates them fast, have lots of them
- OTP: library of Erlang modules for building reliable distributed systems

Actors in Scala
- Closest implementation of the Erlang model on the JVM
- Leverages Scala language features
-- pattern matching, closures
-- traits and mutliple inheritance
-- Full Java interoperability
- Event-based Actors
-- Not tied to Java threads
-- allows you to scale to millions of Actors / Threads
- Local and remote
-- same programming model
- Implementable as an embedded DSL
- Part of Scala's standard library
-- scala.actors, scala.actors.remote
- used by Twitter's kestrel message system (?)

Creating an Actor
- extend class by Actor class
- implement act() method
- define message types (case classes)
- Receiving messages, use the "receive" command

WOW - I get Actors now

Pattern matching: switch on steroids

- List of alternatives:
-- case pattern => expression
- Patterns are tried in order, the first match is evaluated
- Patterns look like factory method calls

Handling subscriptions

Sending a subscription message:
chatroom ! Subscribe(User("bob"))

"!" method to send a message
Nono-blocking, returns immediately
Implicity passes a reference to the sender

Syncrhonous send
val res = chatRoom !? Subscribe(User("bob"))

"!?" sychronous send method
Blocks sender until reply is received

Futures (callback?)
val future = chatRoom !! Subscribe(User("bob"))

Message send does not block
Future: handle that represents the reply
Sender waits for the....?

Timeouts: receiveWithin(ms)
self.receiveWithin (1800 * 1000)

Scala Actors work across Virtual Machines - using remote Actors
import RemoteActor._

Sending message to remote Actors
, 8000), 'chatRoom)

select returns a proxy to the Actor
Reference to caller transfers to remote node:
- sender is valid reference in remote Actor

Event-based (aka thread-less) Actors
Event-based actors do not consume a thread while waiting for a message
- receive {} with react{}
- receiveWithin {} with reactWithin() {}
- while(cond) {} with loopWhile(cond) {}
Massive gains in scalability

Event-based (aka thread-less) Actors

Receive vs. react
- Use react whenever possible
- Use receive when necessary (e.g. to receive a value returned by an Actor)

Act II: Under the hood
- Event-based actors
-- decoupling threads and actors
- Lightweight execution environment
-- work-stealing thread pool
- Implementing the DSL
-- Creating actors using actor {}
-- Receiving messages using react {}

Event-based Actors
- Naive thread-per-actor implementation
-- thread creation and context-swtiching overhead
-- high memory consumption
- Implementation in Scala Actors is event-driven
-- Decouple actors from JVM threads
-- Execute actors on thread pool

Lightweight execution environment
- Thread pool
- Work stealing
-- Load balancing
- Local work queues

Thread pools and work stealing
-- map Actors (man) to Thread Pool
-- worker threads (few)

JSR 166 thread pool implementation (?)

Implementing the DSL
Creating Actors

Starting an Actor cretes a task that is submitted to a scheduler managing a thread pool.

Customizing Actor execution

Executing Actors on the AWT event dispatch thread

Scala 2.8 and beyond
- pluggable schedulers
- integrating exceptions and Erlang-style error handling
- Continuations support
-- using optional compiler-plugin
-- More flexible control structures, Actor migration
- Static checking: @immutable, Actor isolation

2009-06-04 Thursday - JavaOne - Breaking News

During this morning's Microsoft Keynote at JavaOne 2009 in San Francisco, Sun announced this morning that they will donate the StockTrader application code to the Apache Stonehenge interoperability project.

Microsoft and Sun demonstrated a very interesting level of interoperability between .NET 3.5 layers of a StockTrader implementation - and the GlassFish/Metro implementation of the StocTrader implementation.

Very impressive.

WS02 implementation of the StockTrader application

Wednesday, June 03, 2009

2009-06-03 Wednesday - JavaOne 2009 - BOF-4638

Session BOF-4638, "Cloud Computing and NetBeans(TM) IDE Enable Army Research Lab's Next-Generation Simulation System",

Ronald Bowers, The Army Research Laboratory
Dennis Reedy, Elastic Grid LLC

SLAD performs both experimentation and modeling

- provide the next generation simulation system for the V/L analyst community
- mostly Java
- Dynamic distributed and service-oriented
- will support over 100 concurrent users
- incorporates a computation grid, parallelized system that distrubtes tasks and computes results that are graphically displayed
- will operate in both "batch" and interactive modes

Interesting Challenges

- few servers - budget constrained, but many powerful workstations
- heterogenous deployment environment
- architecture must exploit analyst community machines (diversity of OSs)
- must be able to route functionality to machines that are best capable of executing tasks/functions
- must be able to scale on demand based on real time need and use of the system
- legacy of performance issues and nightmares

Solution Approach

- choose technology that embraces dynamic distributed capabilities
- craft a loosely coupled service oriented architecture that segments the system into functional roles
- choose persistence technologies and approaches that allow for low latency and high concurrency
- ....?

What's Underneath
- Domain-specific Services and Algorithms
- Application Infrastructure

- Dyanamic Container / Quality of Service <== Rio (open source, will take a set of resources and create a grid ?)

- Monitoring and Management
- Persistence Management



client --> Gateway --> Sim

--> Persistence


- built on NetBeans Platform

Biggest Issue
- integrating libraries that are updated frequently

2009-06-03 Wednesday - JavaOne 2009 - BOF-5048

The Bird-of-a-Feather (BOF) session 5048 just completed ("How to Use the Enterprise Service Bus Without Its Using You"), by David Wroton, Oppenheimer Funds.

There was some interesting usage of the Spring Framework demonstrated...

2009-06-03 Wednesday - JavaOne 2009 - Photos

2009-06-03 Wednesday - JavaOne 2009 -

Another great interview this afternoon with David Booth, Sales & Marketing Captain, for - the developers of JavaRebel.

2009-06-03 Wednesday - JavaOne 2009 - Fiorana

I had a very interesting talk this afternoon with Sandeep "Sandy" Agarwal, Director of Business Development, at Fiorana Software, Inc. (

2009-06-03 Wednesday - JavaOne 2009 - Terracotta

I just wrapped-up a great interview with Jeff Hartley, Vice President, Marketing and Products, Terracotta, Inc.

2009-06-03 Wednesday - JavaOne 2009 - Java Utopia Panel

Description: The impact and influence of Java in everyday life is more apparent than ever before, with Java technology powering more and more consumer devices - particularly in the mobile and entertainment industries. In this panel discussion, Sun and industry leaders will look at some of the cool things happening with clientside Java and entertainment – from JavaFX to Blu-ray – and some of the recent innovations powered by Java.

Moderator: Eric Klein, Vice President, Java Marketing, Sun

Jeet Kaul, Senior Vice President, Java Technology, Sun

Steve Glagow, Vice President, Orange Partner

Bill Maggs, Head of Developer and Partner Engagement, North
America, Sony Ericsson Mobile Communications

Chris Danzig, Executive Vice President - Product and Technology
Development, Founder at Indaba Music


I asked two questions:

1) Do you have any planned competitions to seed the developer interest in spending time to develop applications for the App Store?

Answer: Not yet.

2) Have they given any thought to providing an Affiliate Program to turbo-charge the viral nature of the community to promote the sale of applications?

Answer: May have something like this in the future.

Summary: Their view of the big draw of the app store? It is free for the developer?

It seems strange that they haven't jammed the app store announcement with a more compelling promotion. It seems to me to be a possible example of "if we build it, they will come".



© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.