Monday, March 30, 2009

2009-03-30 Monday - Erlang Links / Resoruces

James Hamilton: Erlang and High-Scale System Software

James Hamilton (Windows Live Services Platform): On Designing and Deploying Internet-Scale Services

James also provided links to the following presentations on one of his blog posts:

Chris Newcombe: Erlang, Productivity and Performance

Ulf Wiger (Ericsson AB): Erlang Programming for Multi-core

Friday, March 27, 2009

2009-03-27 Friday - Ontology Development for SOA

A question was recently asked on the Yahoo service-oriented-architecture group - about how to develop an ontology for SOA.

Dave McComb of Semantic Arts is a good resource to tap for ontology design.

The 2009 Semantic Technology Conference will be held in San Jose, June 14-18

An interesting tool for developing ontologies: Swoop
"SWOOP is a tool for creating, editing, and debugging OWL ontologies. It was produced by the MIND lab at University of Maryland, College Park, but is now an open source project with contributers from all over."

Protégé is another free, open source ontology editor and knowledge-base framework worth considering.

The following article resources may be of interest to others that are unfamiliar with Canonical models and ontologies.

IBM DeveloperWorks published a series of articles in 2007 that may be of some interest (in particular, "Web services and the semantic Web, Part 3: Understand RDF and RDFs" and "Web services and the semantic Web, Part 4: Create an ontology")

Common Models in SOA: Tackling the Data Integration Problem

Exploring the Enterprise Service Bus, Part 3: Four approaches to implementing a canonical message model in an ESB

The information perspective of SOA design, Part 4: The value of applying the canonical modeling pattern in SOA\

Single Canonical form - not for SOA

Erl's soapatterns web site: Foundational Inventory Patterns > Canonical Schema

SOA: Canonical "Data" Model

SOA: Canonical Domain Model, Federated Canonical Domain Models

ECDM Mediation: Esperanto vs Babel Fish

Top 10 SOA Pitfalls: #4 - Incorrectly applied Canonical Data Model

Information Architecture for SOA

Updated 2009-03-28:

A Faceted Approach to Building Ontologies

Toward a Unified Ontology of Cloud Computing

An Ontology for Tactical Cloud Computing

Updated 2009-03-29:

Swoogle - semantic web search (over 10,000 ontologies)

OntoSelect Ontology Library

CO-ODE project
The CO-ODE project aims to build authoring tools and infrastructure that make ontology engineering easier. We specifically support the development and use of OWL-DL ontologies, by being heavily involved in the creation of infrastructure and plugins for the Protégé platform and more recently, OWL2.0 support for the OWL API.

Many of our collaborators have come from the life sciences community, but we aim to support as broad a range of users as possible - researchers, librarians, industry, and the Semantic Web community

In support of this work the team have also been involved in organising tutorials and workshops on OWL.

The project is supported by JISC and is a collaboration with Stanford University

Building OWL ontologies tutorial

OWL Pizzas: Practical Experience of Teaching OWL-DL: Common Errors & Common Patterns

Saturday, March 21, 2009

2009-03-21 Saturday - Parallel Computing

Blaise Barney, Lawrence Livermore National Laboratory
Introduction to Parallel Computing:
Part 1: The basics of parallel computing

Part 2: Designing and implementing parallel programs

Principles of Parallel Programming
by Calvin Lin, Larry Snyder
With the rise of multi-core architecture, parallel programming is an increasingly important topic for software engineers and computer system designers. Written by well-known researchers Larry Snyder and Calvin Lin, this highly anticipated first edition emphasizes the principles underlying parallel computation, explains the various phenomena, and clarifies why these phenomena represent opportunities or barriers to successful parallel programming. Ideal for an advanced upper-level undergraduate course, Parallel Programming supplies enduring knowledge that will outlive the current hardware and software, aiming to inspire future researchers to build tomorrow's solutions. "...the first basic book on the subject that I've ever seen that seems to have the pulse on the true issues of parallelism that are relevant for students." --Alan Edelman, MIT "Principles of Parallel Programming is a wonderful book and I plan to use it in our new parallel programming course..."---Peiyi Tang, University of Arkansas, Little Rock "I like [Principles of Parallel Programming] very much for a few specific reasons: it's concise, covers the most relevant topics but does not take thousand pages to do it, it is hands on and it covers. ..recent developments with multi-core and GPGPU." --Edin Hodzic, Santa Clara University

Patterns for Parallel Programming
by Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill
The Parallel Programming Guide for Every Software Developer From grids and clusters to next-generation game consoles, parallel computing is going mainstream. Innovations such as Hyper-Threading Technology, HyperTransport Technology, and multicore microprocessors from IBM, Intel, and Sun are accelerating the movement's growth. Only one thing is missing: programmers with the skills to meet the soaring demand for parallel software. That's where Patterns for Parallel Programming comes in. It's the first parallel programming guide written specifically to serve working software developers, not just computer scientists. The authors introduce a complete, highly accessible pattern language that will help any experienced developer "think parallel"-and start writing effective parallel code almost immediately. Instead of formal theory, they deliver proven solutions to the challenges faced by parallel programmers, and pragmatic guidance for using today's parallel APIs in the real world.Coverage includes: *Understanding the parallel computing landscape and the challenges faced by parallel developers*Finding the concurrency in a software design problem and decomposing it into concurrent tasks*Managing the use of data across tasks*Creating an algorithm structure that effectively exploits the concurrency you've identified*Connecting your algorithmic structures to the APIs needed to implement them*Specific software constructs for implementing parallel programs*Working with today's leading parallel programming environments: OpenMP, MPI, and Java Patterns have helped thousands of programmers master object-oriented development and other complex programming technologies. With this book, you will learn that they're the best way to master parallel programming too.

Distributed and Parallel Systems: From Cluster to Grid Computing
by Peter Kacsuk, Thomas Fahringer, Zsolt Nemeth
Distributed and Parallel Systems: From Cluster to Grid Computing is an edited volume based on DAPSYS 2006, the 6th Austrian-Hungarian Workshop on Distributed and Parallel Systems, which is dedicated to all aspects of distributed and parallel computing. The workshop was held in conjunction with the 2nd Austrian Grid Symposium in Innsbruck, Austria in September 2006.

Introduction to Parallel Computing (2nd Edition)
by Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta
This book provides a basic, in-depth look at techniques for the design and analysis of parallel algorithms and for programming them on commercially available parallel platforms. Principles of parallel algorithms design and different parallel programming models are both discussed, with extensive coverage of MPI, POSIX threads, and Open MP. This second edition includes two new chapters on the principles of parallel programming and programming paradigms, as well as new information on portability. For programmers wanting to gain proficiency in all aspects of parallel programming.

The Art of Multiprocessor Programming
by Maurice Herlihy, Nir Shavit

The Sourcebook of Parallel Computing (The Morgan Kaufmann Series in Computer Architecture and Design)
by Jack Dongarra, Geoffrey Fox, Ken Kennedy, Linda Torczon, William Gropp, Ian Foster, Andy White
Sourcebook of Parallel Computing is an indispensable reference for parallel-computing consultants, scientists, and researchers, and a valuable addition to any computer science library. -Distributed Systems Online "The Sourcebook for Parallel Computing gives a thorough introduction to parallel applications, software technologies, enabling technologies, and algorithms. This is a great book that I highly recommend to anyone interested in a comprehensive and thoughtful treatment of the most important issues in parallel computing. " -Horst Simon, Director, Director, NERSC, Berkeley "The Sourcebook builds on the important work done at the Center for Research on Parallel Computation and within the academic community for over a decade. It is a definitive text on Parallel Computing and should be a key reference for students, researchers and practitioners in the field." -Francine Berman, Director, San Diego Supercomputer Center and the National Partnership for Advanced Computational Infrastructure

Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their Implementation
by George Em Karniadakis, Robert M. Kirby II

Sunday, March 15, 2009

2009-03-15 Sunday - SOA Governance Review

This is the review I submitted to Amazon, for the new IBM Press book from Pearson Education: SOA Governance, Achieving and Sustaining Business and IT Agility, by William A. Brown, Robert G. Laird, Clive Gee, Tilak Mitra.

This book is a great reference for large scale organizations that need a handy reference to the various possible processes and artifacts that could comprise an extensive SOA Governance process.

This book will save you a lot of money by reducing (or eliminating) the need to hire expensive SOA consultants to guide you through the mechanics of organizing and structuring a SOA Governance process.

As you read the book, keep in mind that the authors recognize and point out that this isn't a one-size-fits-all. Indeed, they recognize that smaller organizations may need to scale down the processes to suit their environment.

Governance is a complex topic, so I also agree with another reviewer's comment that the reader will benefit greatly by reading other Governance books (such as Todd Biske's) to supplement their views and perspectives on different approaches.

A gentle criticism:

The book seems to focus primarily on manual processes and identifying Governance artifacts to be produced - but gives scant attention to the techniques and mechanics of automating Governance checks that can be performed via Design-Time and Run-Time policy enforcement. This would be an excellent area to expand on in a future revision of the book - and would be an excellent way of supporting the goal of "Agility" referenced in the title.

Saturday, March 14, 2009

2009-03-14 Saturday - GPL Links

I am a proponent of Open Source - but I am also a staunch Capitalist. From my research, I tend to lean more toward the MIT, BSD, and Apache licenses as good examples of Open Source.

Until recently I didn't have a very strong opinion of for-or-against GPL. However, recent behavior by a particular vendor (in regard to their abuse of the GPL) has caused me to review and reflect deeper on the implications for organizations that develop and release software under GPL, or organizations that may consider incorporating GPL software in their application development.

This blog post will help me organize my research as I find and review articles that discuss what it means to release under GPL.

Bait-and-Switch and Software Licenses

Why GPL? Or: How the GPL eats the kittens it protects

Warning: the following blog link has some strong language:
The GNUtards Must Be Crazy

GPL Considered Harmful

Wednesday, March 11, 2009

2009-03-11 Wednesday - When Open Source Isn't

Inigo Montoya (The Princess Bride): You keep using that word. I do not think it means what you think it means.

Note: In the following discussion - I do not suggest that all software should be free - my contention is that if you are going to label your software as GPL - then you should play by the GPL rules. Claiming your software is GPL - and then playing games with the EULA - could be construed as false advertising.

From the web site:

The Foundations of the GPL
Nobody should be restricted by the software they use. There are four freedoms that every user should have:

  • the freedom to use the software for any purpose,

  • the freedom to change the software to suit your needs,

  • the freedom to share the software with your friends and neighbors, and

  • the freedom to share the changes you make.

Not too long ago I assisted a client in evaluating a vendor's GPL'd "Open Source" community edition of a testing product (they also offer a Professional Edition for sale commercially). I think their use of the term "Open Source" - and more specifically their claim of it being released under the GPL - was perhaps a misguided crack induced delusion typo.

In 2007 the vendor's own web site trumpeted their release of their software under the GPL:
xxxxxxx is available under the GPL Open Source license. What does that mean?
The GPL License is the most widely used open source license, with its roots in the Linux Project. This license promotes free usage of the software while ensuring that all contributions and modifications will be freely distributed for the benefit of the community.

More information on the GPL license can be obtained from Under the terms of this license you can freely use the product for your own benefit with no guarantees or support from xxxxxxx. You are also free to make modifications to the source code provided that you redistribute the code under the same GPL license.

What many users apparently didn't realize, since they were lulled into a false sense of safety by the claim of GPL, was that the crafty bastards slick corporation included this clause in their EULA, basically attempting to override and invalidate the GPL:
2. License Restrictions. This License does not permit you or any third party to:
(i) modify, translate, reverse engineer, decompile, disassemble (except to the extent that this restriction is expressly prohibited by law) or otherwise attempt to discover the source code of all or any portion of the Software;
(ii) modify, translate or create derivative works of all or any portion of the Software;
(iii) copy the Software (other than a single copy solely for back-up or archival purposes);
(iv) rent, lease, sell, offer to sell, distribute, or otherwise transfer rights to the Software;

This morning I received an interesting email from the vendor...declaring End of life (EOL) for the Community Edition. They also took this opportunity to emphasize a particular clause in their misbegotten Software NAZI EULA:
If you still have a version of the product we remind you that under the EULA, any distribution of the product or using it to service third parties is strictly forbidden.

By virtue of the vendor releasing the software under GPL, there are some interesting points in the GPL which I think might be of interest to review...which would seem to be in conflict with the vendor's EULA restrictions noted above:

"The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users."
"...General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software..."
"...Developers that use the GNU GPL protect your you legal permission to copy, distribute and/or modify it."
10. Automatic Licensing of Downstream Recipients.
"Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License"
"You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License."

Suggestion #1: Don't punk the GPL

In any event, I promptly wrote them back and assured them that I was happy to report that I was in full compliance with their "strictly forbidden" EULA restrictions (since my computers were happily and completely free of their software). And since I don't want to encumber my clients with their botched messy Open Source EULA issues - they will also happily be advised to avoid their software in the future.

It is interesting to contrast the vendor's EULA restrictions with what Wikipedia has to say on The Open Source Definition (emphasis added to the important bits):

The distribution terms of open-source software must comply with the following criteria:
(The definition was based on the Debian Free Software Guidelines, written and adapted primarily by Bruce Perens.)

1. Free Redistribution
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

2. Source Code
The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.

3. Derived Works
The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

4. Integrity of The Author's Source Code
The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.

5. No Discrimination Against Persons or Groups
The license must not discriminate against any person or group of persons.

6. No Discrimination Against Fields of Endeavor
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

7. Distribution of License
The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

8. License Must Not Be Specific to a Product
The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.

9. License Must Not Restrict Other Software
The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.

10. License Must Be Technology-Neutral
No provision of the license may be predicated on any individual technology or style of interface.

When analyzed against this definition, the vendor's use of the term "Open Source" appears to simply be a marketing gimmick.

From another concerned community user:
"The EULA thing sorta blows my mind. How can you release software under the GPL and then revoke all the freedoms in a EULA?"

Suggestion #2: If you want to develop an Open Source community around your product, RESPECT the culture of the Open Source community.

When I contacted the VP of Sales, he characterized their decision to declare End of life (EOL) based on the following rationalization:
"Typically, firms providing a real load testing service found xxxxxx Open Source to be inadequate for their client needs."


I suspect the VP lives in a different reality truth may be somewhat different: The vendor probably discovered, like many Community Edition users, that the Open Source version of their software was sufficient for most user needs - and they found no urgent need to upgrade to the Professional Edition.

If someone wants to offer their software on a restricted XX-day evaluation basis - fine. If you want to charge a nominal fee for a trial version - fine. But don't try and blow smoke up my kilt and tell me your Community Edition is Open Source - when it isn't.

If the vendor benefits by claiming affinity with the GPL - to induce the Open Source community to contribute (quality assurance reviews, testing efforts, ideas for new features, bug fixes, code for new features) - then the vendor has an obligation to honor the letter, spriit, and intent of the GPL: Not just some of it; not just the bits that they like; and they certainly shouldn't be claiming a release under GPL - when they are in fact - not.

Suggestion #3: Don't b.s. the Open Source community.

There are plenty of other options out there - and I will happily direct my clients to consider every single alternative before they ever use this vendor's software.

Wednesday, March 04, 2009

33rd Annual IEEE International Computer Software and Applications Conference

33rd Annual IEEE International Computer Software and Applications Conference

Seattle,Washington, July 20 - July 24, 2009
Co-located with IPSJ/IEEE SAINT 2009

4th IEEE International Workshop on Engineering Semantic Agent Systems (ESAS 2009)

Applying Semantic Technologies in Research and Development of Ontology-Enabled Multi-Agent Systems.

2009-03-04 Wednesday - Application, System, Network Monitoring

I recently spent some time investigating the Business Activity Monitoring (BAM) capabilities available with Microsoft BizTalk 2006 R2.

Here are some additional resource links that I've found of interest:

Zenoss (Commercial Open Source Application, Systems & Network Monitoring)

2007 review, Zenoss Core

Killer open source monitoring tools (Cacti is mentioned)

Leverage Nagios with plug-ins you write

2009-03-04 Wednesday - Open / Message Passing Interface (MPI)

This evening, while doing some research on SOA and Cloud Computing technologies, I came across this article on the Center for High Performance Computing, University of Utah: How to compile and run a trivial MPI program through the CHPC Batch system

Open MPI
"Open MPI is a project combining technologies and resources from several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) with the stated aim of building the best Message Passing Interface (MPI) library available. It is used by many TOP500 supercomputers including Roadrunner, which is as of 2008 the world's fastest supercomputer."

Open MPI represents the merger between three well-known MPI implementations:

- FT-MPI from the University of Tennessee
- LA-MPI from Los Alamos National Laboratory
- LAM/MPI from Indiana University

with contributions from the PACX-MPI team at the University of Stuttgart. These four institutions comprise the founding members of the Open MPI development team.

Message Passing Interface (MPI):
"...a specification for an API that allows many computers to communicate with one another. It is used in computer clusters and supercomputers. MPI was created by William Gropp and Ewing Lusk and others."
"MPI is a language-independent communications protocol used to program parallel computers. Both point-to-point and collective communication are supported. MPI "is a message-passing application programmer interface, together with protocol and semantic specifications for how its features must behave in any implementation."[1] MPI's goals are high performance, scalability, and portability. MPI remains the dominant model used in high-performance computing today."

The Los Alamos Message Passing Interface
("LA-MPI is no longer in active development, but is being maintained for use on production systems at LANL...future development is focused on the Open MPI project, a new component-based, extensible implementation of MPI-2.")

Open MPI: Open Source High Performance Computing

MPI.NET: High-Performance C# Library for Message Passing

Intel® MPI Library 3.2 for Linux or Windows
"Implementing the high performance MPI-2 specification on multiple
fabrics, Intel® MPI Library 3.2 focuses on making applications perform better on IA based clusters. Intel MPI Library enables you to quickly deliver maximum end user performance even if you change or upgrade to new interconnects, without requiring major changes to the software or to the operating environment. Intel also provides a free runtime environment kit for products developed with the Intel MPI library."

On-Demand MPI Cluster with Python and EC2 (part 1 of 3)

MPI Cluster with Python and Amazon EC2 (part 2 of 3)

Data Wrangling Image: Fedora Core 6 MPI Compute Node with Python Libraries

MPI-HMMER is an open source MPI implementation of the HMMER protein sequence analysis suite. The main search algorithms, hmmpfam and hmmsearch, have been ported to MPI in order to provide high throughput HMMER searches on modern computational clusters.

Microsoft MPI

Older MPI References

Message Passing Interface Forum
MPI Documents

LAM/MPI Parallel Computing

IBM MPI Programming Guide
IBM MPI Subroutine Reference
IBM Redbooks - RS/6000 SP: Practical MPI Programming

MPI.NET Software

MPI Tutorials

Ohio Supercomputer Center Introduction to Parallel Computing with MPI

Stanford Linear Accelerator Center (SLAC) MPI Tutorial

MPI FORTRAN90 Examples

The Message Passing Interface (MPI) standard

MPICH-A Portable Implementation of MPI

Blaise Barney, Lawrence Livermore National Laboratory: Message Passing Interface (MPI)

SP Parallel Programming Workshop

HARNESS Fault Tolerant MPI

Parallel Programming with MPI by Peter Pacheco

Message Passing Interface (MPI) FAQ

HP Message Passing Interface library (HP-MPI)

National Energy Research Scientific Computing Center, Introduction to MPI
(A DOE Office of Science User Facility at Lawrence Berkeley National Laboratory)

Interoperable MPI, National Institute of Standards and Technology

Internet Parallel Computing Archive > Parallel > Standards > mpi

MPI-FM: Message Passing Interface on Fast Messages
"MPI-FM is a high-performance cluster implementation of the Message Passing Interface (MPI) based on a port of MPICH to Fast Messages. The Message Passing Interface is an industry standard communication interface for message-passing parallel programs. It provides a wealth of capabilities including synchronous and asynchronous messaging, datatypes, and communicators. MPI-FM is a complete implementation of the MPI standard 1.0 based on the Argonne/MSU MPICH code base. However, the MPICH code base was tuned significantly to avoid buffer copies and reduce the critical path length for message reception. The effective software overhead for the MPI send/receive is below 3 microseconds in MPI-FM."



Condor Version 6.6.11 Manual, Condor Team, University of Wisconsin-Madison

2009-04-24 Friday Update:

Heidi Poxon, Technical Lead, Performance Tools, Cray Inc.
Craypat OpenMP and MPI Metrics

Sunday, March 01, 2009

2009-03-01 Sunday - Amazon Web Services (AWS) Links

Amazon Web Services (AWS)

AWS Documentation
Developer's Guide, Amazon Elastic Compute Cloud

AWS Management Console (Beta)

AWS Sample Code & Libraries

Amazon EC2 Library in Java

Amazon Machine Images (AMI)

Configuring Amazon EC2 for RAID

Setting up an Amazon AMI with Java and MySQL on EBS using the AWS Management Console

Google Code Project: Unified Cloud Interface
The unified cloud interface (UCI) or cloud broker will be composed of a semantic specification and a ontology. The ontology provides the actual model descriptions, while the specification defines the details for integration with other management models.
One of the key drivers of the unified cloud interface is to create an api about other api's. A singular programmatic point of contact that can encompass the entire infrastructure stack as well as emerging cloud centric technologies all through a unified interface.
In this vision for a unified cloud interface the use of the resource description framework (RDF) or something similar would be an ideal method to describe our semantic cloud data model (taxonomy & ontology). The benefit to an RDF based ontology languages is they act as general method for the conceptual description or modeling of information that is implemented by web resources. These web resources could just as easily be "cloud resources" or API's. This approach may also allow us to easily take an RDF -based cloud data model and use it within other ontology languages or web services making it both platform and vendor agnostic. Using this approach we're not so much defining how, but instead describing what.
Cloud vs. Grid, the conversation continues

2009-03-01 Sunday - Tech Event Calendars

A very useful tech conference calendar event aggregation service:

I also found

2009-02-28 Saturday - The Next Start-up

Attending the CloudCamp Seattle event today - and spending some time on the Seattle 2.0 web site - has helped renew some of my passion for launching another start-up.

I've been involved in 5 start-up companies since 1996 - three that I launched and self-funded, and two that were VC/angel funded (Paul Allen's and Allvest's

The three that I launched were all profitable. is still going strong - and much of my original design is still in use in their core infrastructure.

I've kept a notebook for many years now with ideas for products, services, web 2.0 social applications, etc. - time to get busy again and start creating something.