2009-12-20
2009-12-20 Sunday - GlassFish v3, NetBean 6.8
I updated my development environment this evening to:
GlassFish v3
NetBeans 6.8
Sun Microsystems Java JDK 1.6u17
2009-12-14
2009-12-14 Monday
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, tonight...it sounds like exactly what I am looking for...perhaps the closest thing to my dream machine that I've found so far.
2009-11-20
2009-11-20 Friday - WCF Tuning
Arnon Rotem-Gal-Oz has a brief posting on his experience discovering the connectionManagement maxconnection parameter:
http://www.rgoarchitects.com/nblog/2009/10/30/WindowsTrickortreatFoundation.aspx
2009-10-25
2009-10-25 Sunday - Common Lisp
Here are some of the resource links that I've found useful:
A Concise Introduction to LISP, by David L. Matuszek
http://www.cis.upenn.edu/~matuszek/LispText/lisp.html
http://www.cis.upenn.edu/~matuszek/LispText/lisp-examples.html
Common Lisp the Language, 2nd Edition
by Guy L. Steele Jr.
http://www.supelec.fr/docs/cltl/clm/node1.html
Peter Siebel's, Practical Common Lisp
http://gigamonkeys.com/book/
http://www.antigreen.org/vadim/ProgLanguageComparison/lisp-cmp-with-cpp-java-etc/C++-vs-Lisp.html
6 Problems (with solutions in Lisp)
CS107 Handout 53, Autumn 2000 November 30, 2000, Lisp Section Examples
http://cse.stanford.edu/class/cs107/handouts/53lispexamples.pdf
Nick Parlante's http://www-cs-staff.stanford.edu/~nick/compdocs/LISP_Examples.pdf
This is Abhishek Reddy's really well written, concise, summary of the the features in Common Lisp: http://abhishek.geek.nz/docs/features-of-common-lisp
...as well as his: http://abhishek.geek.nz/docs/lisp-answers/
Although not specific to Scala or Lisp, I enjoyed reading this 376 page text...
Programming Languages: Application and Interpretation
By: Shriram Krishnamurthi
Brown University
http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/plai-2007-04-26.pdf
2010 DoD Enterprise Architecture Conference
Hosted by:
Director, Enterprise Architecture & Standards Office, DoD CIO/ASD NII
Joint Chiefs of Staff, J6
2009-10-25 Sunday - QCon 2009, San Francisco
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.
2009-10-10
2009-10-10 Saturday - Tax Planning
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...
2009-10-09
2009-10-09 Friday - Intl. Assoc. of Software Arcchitects
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
This line of code will return the user's current logon domain / name:
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Here are some of the more interesting links I found:
Howto: (Almost) Everything In Active Directory via C#
http://www.codeproject.com/KB/system/everythingInAD.aspx
http://directoryprogramming.net/
Managing Directory Security Principals in the .NET Framework 3.5
http://msdn.microsoft.com/en-us/magazine/dvdarchive/cc135979.aspx
Developing Applications Using Windows Authorization Manager
http://msdn.microsoft.com/en-us/library/aa480244.aspx
Application Security through Active Directory and ADAM
http://weblogs.asp.net/rosherove/archive/2004/03/04/83934.aspx
How To: Use ADAM for Roles in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998331.aspx
TechArena Community > Technical Support > Computer Help > Windows Server > Active Directory
C# AD Scripting
http://forums.techarena.in/active-directory/
Other resources that may have some useful informaiton that I still need to review:
http://forums.techarena.in/active-directory/
C# Forums CSharpFriends > CSharpAspNetAnyQuestionIsOk > Setting Permissions
http://www.csharpfriends.com/forums/showpost.aspx?postid=9005
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/rolebasesecure.asp
.NET Framework Class Library
http://msdn.microsoft.com/en-us/library/ms229335.aspx
Integrating LDAP Active Directory into your ASP.Net Web Portal (C# or VB.NET)
http://www.dotnetactivedirectory.com/ActiveDirectory-ASP.NET-csharp-vb.html
http://forums.techarena.in/active-directory/
Using Forms Authentication with Active Directory
http://www.beansoftware.com/ASP.NET-Tutorials/Forms-Authentication-Active-Directory.aspx
How To Implement Forms-Based Authentication in Your ASP.NET Application by Using C# .NET
http://support.microsoft.com/?scid=kb%3Ben-us%3B301240&x=12&y=12
Active Directory in C# ASP .NET Web Applications
http://www.primaryobjects.com/CMS/Article61.aspx
Generic Authentication Call to Active Directory in C#
http://stackoverflow.com/questions/778990/generic-authentication-call-to-active-directory-in-c
How To: Use Forms Authentication with Active Directory in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998360.aspx
How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI
http://msdn.microsoft.com/en-us/library/ms998280.aspx
2009-10-09 Friday - SpringSource Tool Suite
I'm working my way through Spring In Action, Second Edition, by Craig Walls (a most excellent book!)
2009-10-07
2009-10-07 Wednesday - ESRI ArcGIS Resources
Here are some interesting ESRI.com 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
2009-10-04
2009-10-04 Sunday - Interesting Links
I happened across a Twitter posting that mentioned:
Guava: Google Core Libraries for Java 1.6
...which led me to discover these...
fastutil
...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
2009-10-03
2009-10-03 Saturday - SATURN 2010
SATURN 2010 Theme: Architecting for Change
May 17 - 21, 2010
Minneapolis, MN
2009-10-03 Saturday - WPF and Silverlight
WPF Resources
MSDN: Windows Presentation Foundation
MSDN: Getting Started with Windows Presentation Foundation
aspfree.com WPF Through an Example: Introduction
LearnWPF.com
joshsmithonwpf.wordpress.com A Guided Tour of WPF
MSDN: Building a WPF Application (WPF)
Using a WPF StackPanel for Business Forms
khason.net WPF (.NET 3.5) – what’s next? The future roadmap of Windows Presentation Foundation
Scott Guthrie's weblogs.asp.net NET 3.5 Client Product Roadmap
WPF Futures (Oct. 2008)
codebot.org WPF and the Future? (June 2008)
Paul Sheriff's weblogs.asp.net Why you Should Move to WPF
Should you invest in WPF and Silverlight?
japf.fr 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
infragistics.com WPF components
Buying themes for WPF applications
devcomponents.com/
nukeation.com Reuxables - designer application themes designed for the Microsoft Windows Presentation Foundation (WPF) and Silverlight.
Silverlight Resources
The official Microsoft Silverlight site: silverlight.net/
silverlight.net/showcase
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
2009-10-02
2009-10-02 Friday - Stanford Advanced Project Management certificate program
2009-10-01
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
https://dct.sun.com/dct/forms/reg_us_2109_249_0.jsp
Impressions:
- 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
https://dct.sun.com/dct/forms/reg_us_2109_541_0.jsp
2009-10-01 Thursday - Oracle World 2009
2009-09-28
2009-09-28 Monday - Hunch.com Developer 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.
2009-09-27
2009-09-27 Sunday - Recommended Web Design Books
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 - Wine.com RESTful API
The Wine.com Public API allows client applications to access Wine.com 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, wine.com is using 3scale.net API Management services (see How It Works)
2009-09-27 Sunday - Eclipse SQL Explorer
2009-09-25
2009-09-25 Friday
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: CoffeeCup.com - 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)
2009-09-13
2009-09-13 Sunday - SEO Resources
GetClicky.com - real time web analytics
Woopra.com - web site tracking, statistics and analysis
AlertFox.com - web application monitoring
Pingdom.com - 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:
omniture.com
2009-08-29
2009-08-29 Saturday - C/C++ Resources
CDT User Guide
sourceforge.net project - MinGW - Minimalist GNU for Windows
MinGW.org
Cygwin.com
RedHat Cygwin
IBM DeveloperWorks article: Developing applications using the Eclipse C/C++ Development Toolkit
2009-08-29 Saturday - Python 3.1 Resources
The Python Tutorial
The Python Standard Library
The Python Language Reference
Using Python
Using Python on Windws
What's New in Python 3.0 (summarizes the changes for those that might be making the jump from 2.5 to 3.0)
What's New in Python 3.1
2009-08-23
2009-08-23 Sunday - FindBugs - Missing Classes
2009-08-11
2009-08-11 Tuesday - Misc
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
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
2009-08-07
2009-08-07 Friday - Equipment Upgrades
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.
2009-08-05
2009-08-06 Wednesday - Seattle 2.0 Startup Day 2009
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-02
2009-08-01
2009-07-20
2009-07-20 Monday - JavaRebel
2009-07-19
2009-07-19 Sunday - JavaScript Resources
2009-07-17
2009-07-17 Friday - GlassFish, Mule Galaxy, LDAP
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
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?
-Duser.timezone=America/Los_Angeles
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
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
2009-07-13
2009-07-13 Monday - JUnit 4.6
I found these two articles to be very helpful in getting up to speed quickly on JUnit 4 syntax:
- Jump into JUnit 4, Streamlined testing with Java 5 annotations
- (by Andrew Glover, Stelligent Inc.) - JUnit 4 in 60 Seconds
2009-07-12
2009-07-12 Sunday - Links
JavaScript Based Animation Frameworks and Libraries
live-android A LiveCD for Android
Scala Cheatsheet
2009-07-11
2009-07-11 Saturday - The Yahoo! User Interface Library (YUI)
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 predic8.com Membrane SOA Registry war file.
2009-07-07
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 service-repository.com 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:
http://www.service-repository.com/
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 (?)
2009-07-03
2009-07-03 Friday - Beginning Scala Book Review
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
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
Rich Hilliard: All About IEEE Std 1471
David Emery & Rich Hilliard: Updating IEEE 1471
2009-07-02
2009-07-02 Thursday - Links
An interestng web site, also mentioned in a Twitter posting (by Jonas Bonér)
http://hackety.org/
ventureshacks mentioned this article on Twitter: Ten unconventional wisdoms for funding startups
PostgreSQL 8.4 was recently released (July 1, 2009), there are some interesting items in the feature List
2009-06-30
2009-06-30 Tuesday - Programming Scala, Chpt. 12
2009-06-27
2009-06-27 Saturday - Links
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."
2009-06-26
2009-06-23
2009-06-23 Tuesday - Presentations / Communications
blog.duarte.com/
decker.com/continuous-learning/products.php
Decker: The Five Biggest Mistakes CEO's Make in Speaking
2009-07-03 Friday Update
williamgurstelle.com/
Scott Berkun: How to give a great ignite talk (his speakerconfessions.com/\ blog)
2009-06-16
2009-06-16 Tuesday - Java JVM Garbage Collector Tuning
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
http://www.nabble.com/What-the-...--%22java.lang.OutOfMemoryError%3A-GC-overhead-limit-exceeded%22-tt12058809.html
This summary description seems to be in line with what I suspect to be the root cause:
Excessive GC Time and OutOfMemoryError
http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom
"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
http://72.5.124.65/learning/javaoneonline/j1sessn.jsp?sessn=TS-4887&yr=2009&track=javase
Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
Frequently Asked Questions bout Garbage Collection in the HotspotTM JavaTM Virtual Machine (1.4.2)
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
Java theory and practice: Garbage collection in the HotSpot JVM (2003)
http://www.ibm.com/developerworks/java/library/j-jtp11253/
Garbage collection tuning in Java 5.0 is a breath of fresh air
http://articles.techrepublic.com.com/5100-10878_11-6108296.html
4 Easy Ways to do Java Garbage Collection Tuning
http://developer.amd.com/documentation/articles/pages/4EasyWaystodoJavaGarbageCollectionTuning.aspx
Java Garbage Collection Tuning
http://www.jivesoftware.com/jivespace/docs/DOC-1486
http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp
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
Troubleshooting/FAQ
http://www.caucho.com/resin-3.0/troubleshoot/technique.xtp#garbage-collector
java.lang.OutOfMemoryError exception, application runs out of memory
http://www.caucho.com/resin-3.0/troubleshoot/symptoms.xtp#memory-leaks
"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
http://www.caucho.com/resin-3.0/troubleshoot/technique.xtp#out-of-memory
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 httpd.sh 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
http://docs.sun.com/source/817-2180-10/pt_chap5.html
Tuning JVM switches for performance
http://performance.netbeans.org/howto/jvmswitches/index.html
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
http://java.sun.com/j2se/1.5.0/docs/guide/vm/gc-ergonomics.html
(…)
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-limitwhere:
time-limit:
The upper limit on the amount of time spent in garbage collection in percent of total time (default is 98).
space-limit:
The lower limit on the amount of space freed during a garbage collection in percent of the maximum heap (default is 2).
(…)
-XX:GCTimeRatio=nnn
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
http://www.redhat.com/docs/en-US/Enterprise_Portal_Platform/4.3/pdf/Tuning_Guide.pdf
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
http://www.jboss.org/community/wiki/TuneVMGarbageCollection
JBoss Enterprise Application Platform Tuning (Jboss World 2008)
http://www.jbossworld.com/2008/downloads/pdf/thursday/JBOSS_10-1050am_JBoss_Enterprise_Application_Platform_Tuning_v2_Andy_Miller.pdf
Scaling Up the JBoss Application Server (LinuxWorld Open Solutions Summit 2007)
http://www.linuxworld.com/events/2007/slideshows/A2-johnson.pdf
Set the heap sizes
– Set min and max sizes to same value
– Set young
generation to 1/3 size of heap
2009-06-13
2009-06-13 Saturday - Business Intelligence Reporting Tool (BIRT)
Here's the main BIRT page where you can download the latest release:
http://www.eclipse.org/birt/phoenix/
This is the link to their simple tutorial page:
http://www.eclipse.org/birt/phoenix/tutorial/
These BIRT Examples may help:
http://www.eclipse.org/birt/phoenix/examples/
Introduction to BIRT
http://www.cs.aau.dk/~dolog/courses/erp2007/lecture3_technology.pdf
IBM Introduction to BIRT Part 1
http://www.ibm.com/developerworks/offers/lp/demos/summary/os-birt1.html
IBM Introduction to BIRT Part 2
http://www.ibm.com/developerworks/offers/lp/demos/summary/os-birt2.html
BIRT Exchange Community Forum
http://www.birt-exchange.org/forum/
These YouTube videos may be of some use too:
http://www.youtube.com/watch?v=iOXAfXSRysQ
http://www.youtube.com/watch?v=s-BnKA7e2Bc&feature=related
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
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
Wow.
2009-06-13 Saturday - Sony ICD-PX720 Digital Voice Recorder
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.
2009-06-10
2009-06-10 Wednesday - International Semantic Web Conference
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
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
2009-06-08
2009-06-08 Monday - JavaOne 2009 - Interesting Presentations
Monitoring and Troubleshooting Java™ Platform Applications with JDK™ Software
Mandy Chung, Tomas Hurka, Sun Microsystems, Inc.
Kohsuke Kawaguchi's (Sun Microsystems, Inc.) Hudson presentation
(more links/updates to follow)
2009-06-06
2009-06-06 Saturday - Finally Succumbed to Twitter
(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!
2009-06-05
2009-06-05 Friday - JavaOne 2009 - James Gosling's Toy Show
Robot Competitions: http://usfirst.org/
- Winner of a Duke's Choice Award
Satellite Control Systems
Chris Boone
- Visual Search Engine
- R&D Team in Moscow
Grameen Bank, Methos.org - 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
2009-06-04
2009-06-04 Thursday - Bay Area Scala Enthusiasts at Twitter HQ
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
http://www.strangeloop.com
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
Speakers:
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 scala.actor.remote._
import RemoteActor._
Sending message to remote Actors
select(Node(, 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
Replace:
- 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
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
2009-06-03
2009-06-03 Wednesday - JavaOne 2009 - BOF-4638
Ronald Bowers, The Army Research Laboratory
Dennis Reedy, Elastic Grid LLC
SLAD performs both experimentation and modeling
MUVES3
- 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
Gomez(?)
Architecture
client --> Gateway --> Sim
V
--> Persistence
MUVES 3 UI
- built on NetBeans Platform
Biggest Issue
- integrating libraries that are updated frequently
2009-06-03 Wednesday - JavaOne 2009 - BOF-5048
There was some interesting usage of the Spring Framework demonstrated...
2009-06-03 Wednesday - JavaOne 2009 - ZeroTurnAround.com
2009-06-03 Wednesday - JavaOne 2009 - Fiorana
2009-06-03 Wednesday - JavaOne 2009 - Terracotta
2009-06-03 Wednesday - JavaOne 2009 - Java Utopia Panel
Moderator: Eric Klein, Vice President, Java Marketing, Sun
Panelists:
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".
Hmmm...