Monday, May 25, 2009

2009-05-25 Monday - Preparing for JavaOne

I'm doing some background reading to prepare for my trip next week to JavaOne - here are some of the articles I've read:

Programmers are People, Too - by Ken Arnold, July 6, 2005

Outsourcing Java SE, by Daniel H. Steinberg, 07/12/2006

Cameron Purdy's The Seven Habits of Highly Dysfunctional Design
"There are a number of design decisions in Java and its related libraries that I have complained about on more than one occasion, but I wanted to write down some of my thoughts as to why I believe that they are bad design decisions, how they could have been better, and thus how to avoid inflicting similar pain on others."
Part 1: Useless data types: Date, Date, Time and Timestamp
Part 2: your face! BigDecimal, BigInteger and BigMistake
Part 3: Idiot interfaces: Cloneable, Serializable, Remote, Entry
Part 4: Idiot exceptions: RemoteException, SQLException
Part 5: AWT or Swing or SWT or Java2D or ...

Year in Review: What to Expect in Java SE 7
An overview of features in (and out of) the next Java specification.
By Alex Miller
December 19, 2008

Pure Danger Tech - Alex Miller’s technical blog
"This page lists the proposed features in Java 7 and information about them"

Java Community Process (JCP)

Stephen Colebourne's Weblog - Ideas and musings from a Java developer (some good links to Java 7 topics)

James Gosling's Letter to the Java Community

James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 1

James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 2 Editor's Daily Blog

Jonathan's blog: Will the Java Platform Create The World's Largest App Store?

Kelly O'Hair's Weblog ( - 12 recommended JavaOne sessions

JavaOne Advance Conference Guide

2009-05-25 Monday - 97 Things...

A new book, "97 Things Every Software Architect Should Know" was published back in February:

Thursday, May 21, 2009

2009-05-21 Thursday - Book: Beginning Scala

I've received a new book from Apress publishing, Beginning Scala, by David Pollak:

I'll have the review posted here and on Amazon in a few days.

2009-06-01 Update:
Wow. Digesting Scala is going to require a bit more deeper thinking/reading before I will feel ready to post a review. Should have a review ready in another 1-2 weeks.

I'm in San Francisco this week for JavaOne - and my good friend, Dr. Dean Wampler, will be presenting

Thursday evening, I will be attending a meeting of the Bay Area Scala Enthusiasts, where Martin Odersky will hold an informal discussion about Scala, where it's going, how it is being used.

Scala LiftOff will be held on Saturday, June 6th, following JavaOne.

Tuesday, May 19, 2009

2009-05-19 Tuesday - JavaOne 2009 Roving Reporter

2009-05-21 Update:
I'm confirmed to attend JavaOne in San Francisco this year as a roving reporter for Linux Magazine.

I last attended JavaOne in 2004 - and have diversified my conference exposure over the years to include things like the No-Fluff-Just-Stuff conference, contributing twice to presentations at the Seattle Code Camps, and attending my first QCon Conference last year in San Francisco.

This year I will definitely be back at QCon again - that is a not-to-be-missed conference.

Sunday, May 17, 2009

2009-05-17 Sunday - Book Review: Professional C# 2008

I submitted a review to Amazon tonight for this book:

It is an excellent book for a broad coverage of C# / Visual Studio 2008 - weighing in at 1730 pages, 48 chapters.

The book avoids the weak approach of stuffing the chapters with extraneous screenshots - and focuses on extensive discussion of coding examples to demonstrate the capabilities of the language.

If you could only buy one C# book, this would be a good choice.

2009-05-17 Sunday - Wolfram Alpha is Live

2009-05-17 Sunday - 2009 Parallel Computing Conferences

International Conference on Computational Science 2009 (ICCS 2009)
LSU Center for Computation & Technology
Baton Rouge, Louisiana, U.S.A.
May 25-27, 2009
LSU: Center for Computation & Technology

Cornell Offers 'Introduction to Parallel Computing' Workshop
May 28-29, 2009
Cornell Center for Advanced Computing

Texas Advanced Computing Center (TACC) at The University of Texas at Austin
Five-day Summer Supercomputing Institute Workshop

August 10-14, 2009

Euro-Par 2009: Delft University of Technology, Delft, The Netherlands
August 25th until August 28th, 2009

International Conference on Parallel Computing
September 1-4, 2009
École Normale Supérieure de Lyon, Lyon, France

The Eighteenth International Conference on
Parallel Architectures and Compilation Techniques (PACT)
Raleigh, North Carolina. September 12-16, 2009.

September 22-25, 2009
Vienna, Austria
Co-Sponsored by
- The International Association for Computers and Communications (IACC)
- The Austrian Computer Society
In cooperation with
- The Vienna University of Technology, Austria
- The Ohio State University, USA

6th IFIP International Conference on Network and Parallel Computing (NPC 2009)
Gold Coast, Australia
October 19-21, 2009

Dr. John R. Gilbert
Computer Science Department , University of California, Santa Barbara
...has provided some good material for his CS240A: Applied Parallel Computing course.

TeraGrid Online Training

Dr. Dobbs, Q&A with Intel senior engineer James Reinders : Parallel Programming

There are some interesting conference links posted on this web site: Conferences and events for the international Ada community, that may be of interest to Parallel Computing researchers.

Saturday, May 16, 2009

2009-05-16 Saturday - Scala Resources

I installed the latest Eclipse plugin for a Scala IDE today. Nice!

Scala Code Examples - Simple

Scala Code Examples - Advanced

Scala: A Modern Language, Clinton R. Nixon, Viget Labs

An Overview of the Scala Programming Language
Second Edition
Martin Odersky, Philippe Altherr, Vincent Cremet, Iulian Dragos
Gilles Dubochet, Burak Emir, Sean McDirmid, Stéphane Micheloud,
Nikolay Mihaylov, Michel Schinz, Erik Stenman, Lex Spoon, Matthias Zenger
École Polytechnique Fédérale de Lausanne (EPFL)
Lausanne, Switzerland

The Scala Language Specification, Version 2.7


A Scala Tutorial for Java Progammers, Michel Schinz, Philipp Haller

more link goodness...
ScalaCheck is a powerful tool for automatic unit testing of Scala and Java programs. It features automatic test case generation and minimization of failing test cases. ScalaCheck started out as a Scala port of the Haskell library QuickCheck, and has since evolved and been extended with features not found in Haskell QuickCheck.

Scala Wiki

First Steps to Scala
by Bill Venners, Martin Odersky, and Lex Spoon

Scala example for accessing Ehcache Server

Jonas Bonér - Real-World Scala: Introduction

Scala for Java Refugees Part 1: main(String[])

Scala for Java Refugees Part 2: Basic OOP

5 Things a Ruby developer needs to know about Scala

Chicago Area Scala Enthusiasts (CASE).

Want your own domain specific languages in Java? Use Scala!

Is Scala Really the Next C++?

IronPython, Jython, Scala and Python: A Fairly Meaningless Server Performance Comparison

Learning Scala for its Actors

Programming in Scala – Mixin inheritance (Summer 2008)

Scala Servlet HowTo

Scala XML book draft

Object-Oriented Pattern Matching
Burak Emir's Thesis

Scala: Bringing Future Languages to the JVM
In this presentation, Lex Spoon discusses the Scala programming language. Topics covered include the origin of Scala, the philosophy behind Scala, the Scala feature set, Object-Oriented and Functional programming in Scala, examples of Scala code, writing DSLs, how Scala is converted into Java, Scala performance, Abstract Data Types, unapply, actors and partial functions.

Guide to the Scala Community

I also took some time today to upgrade my Subversion environment to the latest 1.6.x release - and updated the Subclipse plugin for Eclipse.

Friday, May 15, 2009

2009-05-15 Friday - WSO2 Registry Notes

I haven't checked back on the progress of the WS02 Registry development effort for some time - so this afternoon I downloaded the latest release (2.0.1) and had it installed and running in just minutes. However, there was no joy today.

My first problem arose when I noted that the WSO2 Registry User Interface had some problems rendering the proper spacing for some columns under Internt Explorer 7.

So, I submitted a bug report for it:

CARBON-3807 Entries "Name" column does not render with appropriate spacing under IE 7

Next, I created a folder for WSDL media types - and attempted to upload a simple HelloWorld.wsdl - which resulted in an exception being thrown - and an ugly stacktrace dumping to the UI. It turns out that this bug was reported back on January 24th, 2009 - and was recently marked as resolved on May 10th, 2009:

CARBON-2891 Strack trace printed on the UI if file upload fails

So, assuming that the fix would be in the nighly builds, I downloaded the SNAPSHOT from May 14th - which appears to be currently throwing an exception during startup - that results in the navigation menu __not__ displaying any functions other than start-up and shutdown.

So, I submitted a bug report for it:

REGISTRY-544 Could not find the handler class org.wso2.carbon.registry.extensions.handlers.SynapseRepositoryHandler

2009-05-15 Friday - Mule Galaxy SQL Server Notes

I spent some time this week exploring the integration of the Mule Galaxy Enterprise Edition (Registry/Repository) with external relational databases (the default configuration uses Derby).

My first exercise was to see if I could get Galaxy to work with MySQL. That was very straightforward and worked with no hiccups.

My next exercise was to see if I could configure Galaxy to work with Microsoft SQL Server 2005.

It appears that I've encountered something unusual - and so submitted two potential bug reports to the Mule Galaxy development team:

GALAXY-422: Using Microsoft SQL Server JDBC Driver 2.0 (sqljdbc4.jar) will throw java.lang.UnsupportedClassVersionError: Bad version number in .class file

GALAXY-423: Using Microsoft SQL Server 2005 JDBC Driver 1.2 (sqljdbc.jar) will throw java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString

I'll update this posting as my research continues...

Wednesday, May 06, 2009

2009-05-06 Wednesday - WCF Web Service Development

A few questions came up among some of the SOA team members on a recent client engagement - asking about some of the features in Microsoft's Windows Communication Foundation (WCF). For example:

- how to expose an inherited class object in the resulting WSDL contract?
- how to alter the .NET tool's default behavior of making message contract fields optional or required?
- how to alter the order that fields are presented in the WSDL message contract versus the order they are defined in the class?
- how to include/exclude selected class member variables as fields in the message contract?
- how to define the soap faults in the C# class that can be thrown?

The following links are some of the more interesting resources I came across in my research:

Eric Nelson's blog
Understanding Windows Communication Foundation and Workflow Foundation - "Dublin" what is it and why should I care?

A Quick look at the Windows Communication Foundation

Demystifying Windows Communication Foundation

WCF Services—Data Contracts

Exposing objects that are inherited

Data Contract Versioning

Best Practices: Data Contract Versioning

Design Patterns for .Net (Rob Daigneau), Patterns for Flexible WCF Services

Solving the "disappearing data" issue when using Add Web Reference or Wsdl.exe with WCF services

Building a raw xml request for a RESTful WCF Service operation which accepts a Generic DataContract type

The Tale of WCF, MessageContract, and JSON

How to: Improve the Startup Time of WCF Client Applications using the XmlSerializer

How to create a WCF client for asmx web service without using web proxy

How to: Expose WCF service also as ASMX web-service

Windows Communication Foundation (Indigo) Hello World Tutorial

Windows Communication Foundation Tutorial - Part 2 (DataContract vs Serializable)

DataContracts without attributes (POCO support) in .NET 3.5 SP1

WCF serialization with MSMQ

10 Tricks and Tips for WCF

Saturday, May 02, 2009

2009-05-02 Saturday - MSDN Virtual Labs

I gave the MSDN Virtual Labs a trial this last week to learn more about the recent release of some new Microsoft technology - and I have a few words to share: Wow, Amazing, Well Done, Excellent.
"Welcome to the MSDN Virtual Labs! Quickly evaluate or learn how to build great applications for Windows and the Web through a series of guided, hands-on labs which can be completed in 90 minutes or less. The best part is, the MSDN Virtual Labs don’t require any installation and are available to you immediately for FREE. Start by selecting the lab you’re interested in from the list below."

2009-05-02 Saturday - Wolfram Alpha announcement...going live May 5th someday...

Nova Spivack, CEO of Radar Networks, TechCrunch article: Wolfram Alpha Computes Answers To Factual Questions. This Is Going To Be Big

Wolfram Alpha is a system for computing the answers to questions. To accomplish this it uses built-in models of fields of knowledge, complete with data and algorithms, that represent real-world knowledge.


...knows about technology, geography, weather, cooking, business, travel, people, music...has a natural language interface for asking it questions.


The scientific and philosophical underpinnings of Wolfram Alpha are similar to those of the cellular automata systems he describes in his book, “A New Kind of Science” (NKS).

The system is beautiful, and the user interface is already quite simple and clean. In addition, answers include computationally generated diagrams and graphs — not just text. It looks really cool. But it is also designed by and for people with IQ’s somewhere in the altitude of Wolfram’s — some work will need to be done dumbing it down a few hundred IQ points so as to not overwhelm the average consumer with answers that are so comprehensive that they require a graduate degree to fully understand.

YouTube: A Sneak Preview of WolframAlpha

YouTube: Stephen Wolfram discusses WolframAlpha: Computational Knowledge Engine

An interesting question is asked at 1:40:39. The response has some very interesting possible implications.

2009-05-02 Saturday - SOA Governance

I spent Friday upgrading a client's evaluation of the Mule Galaxy Registry/Repository from the Community Edition to the Mule Galaxy Enterprise Edition (1.5.3) - which I installed with a MySQL backend. I'll have a lessons-learned posting in the near future - hopefully by the end of next week. A fellow on posted his view of how Mule Galaxy compares against Forrester’s report on SOA Life-Cycle Management, Q1 2008.

Erich Roch posted recently on SOA Registry Repository Tool Integration which provides a link to the IBM DeveloperWorks article: IBM SOA Registries and Repositories Portfolio Overview

The CBDI Resource Portal has a short article on Service Asset Management

(School of Business, Economics and Law, GÖTEBORG UNIVERSITY, The Department of Informatics)

Roman Stanek chief software architect and founder of the SOA registry supplier ´Sysnet` is quoted by Windely (2006) and Stanek says: “Without SOA governance, you end up in a Web services version of DLL hell. SOA governance gives consistency, predictability, and allows big applications to be built from small pieces”

Service Oriented Government: 7th SOA For E-Gov

2009-05-02 Saturday - Simulation Based Engineering

Shift in Simulation Superiority...

International Assessment of Research and Development in Simulation-Based Engineering and Science, released on Apr. 22, 2009, by the World Technology Evaluation Center (WTEC).

This WTEC panel report assesses the international research and development activities in the field of Simulation-Based Engineering and Science (SBE&S). SBE&S involves the use of computer modeling and simulation to solve mathematical formulations of physical models of engineered and natural systems. SBE&S today has reached a level of predictive capability that it now firmly complements the traditional pillars of theory and experimentation/observation. As a result, computer simulation is more pervasive today – and having more impact – than at any other time in human history. Many critical technologies, including those to develop new energy sources and to shift the cost-benefit factors in healthcare, are on the horizon that cannot be understood, developed, or utilized without simulation. A panel of experts reviewed and assessed the state of the art in SBE&S as well as levels of activity overseas in the broad thematic areas of life sciences and medicine, materials, and energy and sustainability; and in the crosscutting issues of next generation hardware and algorithms; software development; engineering simulations; validation, verification, and uncertainty quantification; multiscale modeling and simulation; and SBE&S education. The panel hosted a U.S. baseline workshop, conducted a bibliometric analysis, consulted numerous experts and reports, and visited 59 institutions and companies throughout East Asia and Western Europe to explore the active research projects in those institutions, the computational infrastructure used for the projects, the funding schemes that enable the research, the collaborative interactions among universities, national laboratories, and corporate research centers, and workforce needs and development for SBE&S.

The panel found that SBE&S activities abroad are strong, and compete with or lead the United States in some strategic areas. Both here and abroad, SBE&S is changing the way disease is treated, the way surgery is performed and patients are rehabilitated, and the way we understand the brain; changing the way materials and
components are designed, developed, and used in all industrial sectors; and aiding in the recovery of untapped oil, the discovery and utilization of new energy sources, and the way we design sustainable infrastructures. Data intensive and data-driven applications were evident in many countries. Achieving millisecond timescales with molecular resolution for proteins and other complex matter is now within reach due to new architectures and algorithms. The fidelity of engineering simulations is being improved through inclusion of physics and chemistry. There is excitement about the opportunities that petascale computers will afford, but concern about the ability to program them. Because fast computers are now so affordable, and several countries are committed to petascale computing and beyond, what will distinguish us from the rest of the world is our ability to do SBE&S better and to exploit new architectures we develop before those architectures become ubiquitous. Inadequate education and training of the next generation of computational scientists and engineers threatens global as well as U.S. growth of SBE&S. A persistent pattern of subcritical funding overall for SBE&S threatens U.S. leadership and continued needed advances, while a surge of strategic investments in SBE&S abroad reflects recognition by those countries of the role of simulation in advancing national competitiveness and its effectiveness as a mechanism for economic .



Most of the new petascale systems are built on multicores with complex memory hierarchies. From the programming standpoint, these new large multicore systems present another major disruptive technology—a challenge even greater than cluster computing and message passing. According to John Hennessy of Stanford University, this is “the biggest problem Computer Science has ever faced”. Simple porting of highly scalable codes like the QBOX or any computational mechanics codes will not lead to any reasonable efficiency, and it carries the danger of largely underutilizing these very expensive petaflop systems, as the PITAC report suggested. Researchers will need to rewrite their application codes and rethink carefully their corresponding algorithms and software. Numerical libraries such as ScaLAPACK will have to undergo major changes to accommodate multicore and multithread computing. The complexity that this involves can be illustrated with a simple example: Consider a system with 128 cores per socket, with 32 sockets per node, and with 128 nodes per system for a total of 524,288 cores. Let us also assume that the system has four threads of execution per core. Hence, the total number of threads that a researcher has to handle is two million, a large number of threads indeed!

Management of so many threads is an almost impossible task, even for very experienced programmers, and therefore new programming languages are required to deal with this enormous multithreading complexity. New languages from the High Productivity Computing Systems (HPCS) program of the U.S. Defense Advanced Research Projects Agency (DARPA) point the way toward the next-generation programming environment on petaflop computers. Specifically, Partitioned Global Address Space (PGAS) languages for the SPMD (single program multiple data) model, such as Unified Parallel C (UPC), co-Array Fortran, and Titanium, and dynamic languages (X10/IBM, Fortress/Sun, Chapel/Cray), offer many advantages for programming in the new environments. They support both private and shared data, distributed data structures, one-sided memory communications, synchronization, and collective communications. PGAS languages are a good fit to shared memory computers but also to hybrid shared/distributed architectures, and they have locality that may be important when dealing with more than 100 cores per chip.

UPC, in particular, is expressive enough to allow programmers to hand-optimize. An example is shown in Figure 5.5, where UPC is compared against MPI for gather/scatter operations used in finite element codes; there is a clear factor-of-two speedup by using optimized UPC instead of MPI. In terms of the dynamic languages, X10 emphasizes parallel safety, whereas Fortress and Chapel emphasize expressivity. Fortress uses a math-like representation; X10 and Chapel employ a more traditional programming language front-end. Before the HPC community is likely to adopt these new languages, however, there are many challenges to be addressed, including interoperability with the existing languages, scalable memory models, and parallel I/O procedures.