Tuesday, June 30, 2009

2009-06-30 Tuesday - Programming Scala, Chpt. 12

Chapter 12 of the Programming Scala book, by Dean Wampler and Alex Payne is now posted and available online for review.

Saturday, June 27, 2009

2009-06-27 Saturday - Links

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

One Day in Kanban Land

Kanban vs. Scrum


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

Tuesday, June 23, 2009

2009-06-23 Tuesday - Presentations / Communications

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

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)

Tuesday, June 16, 2009

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

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

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


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

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

This discussion thread indicates that this might be resolved in JDK 1.6
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-limit

where:

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

Saturday, June 13, 2009

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

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

Here's the main BIRT page where you can download the latest release:
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

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



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

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

Wow.

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

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



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



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

Wednesday, June 10, 2009

2009-06-10 Wednesday - International Semantic Web Conference

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

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

2009-06-10 Wedensday - SAP Resources

Enterprise Service Bundles for SAP Industries

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

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

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


SAP Network Blogs

Monday, June 08, 2009

2009-06-08 Monday - JavaOne 2009 - Interesting Presentations

I'll use this blog posting to collect and organize links to interesting presentations that were given during JavaOne 2009:

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)

Saturday, June 06, 2009

2009-06-06 Saturday - Finally Succumbed to Twitter

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

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

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








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

Friday, June 05, 2009

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

Very cool demonstrations this morning

Robot Competitions: 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

Thursday, June 04, 2009

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

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

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

Alex Miller, from St. Louis, announced he is organizing a conference to be held in St. Louis later this Fall
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

Session: TS-5395, "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

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

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

Very impressive.

WS02 implementation of the StockTrader application

Wednesday, June 03, 2009

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

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

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

SLAD performs both experimentation and modeling

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

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

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

2009-06-03 Wednesday - JavaOne 2009 - Photos































2009-06-03 Wednesday - JavaOne 2009 - ZeroTurnAround.com

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

2009-06-03 Wednesday - JavaOne 2009 - Fiorana

I had a very interesting talk this afternoon with Sandeep "Sandy" Agarwal, Director of Business Development, at Fiorana Software, Inc. (http://www.fiorano.com)

2009-06-03 Wednesday - JavaOne 2009 - Terracotta

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

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




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

Moderator: Eric Klein, Vice President, Java Marketing, Sun
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...

2009-06-03 Wednesday - JavaOne 2009 - Rethinking the ESB

Sitting in session TS-5341, Rethinking the ESB: Lessons Learned from Challenginging the Limitations and Pitfalls.

Presenters:
Andreas Egloff, Sun Microsystems, Inc.
Frank Kieviet, Sun Microsystems, Inc.

Two interesting ESB clustering concepts / points made:

  • homogenous clustering topology
  • heterogenous clustering topology

Read more about: OpenESB at JavaOne 2009

Tuesday, June 02, 2009

Monday, June 01, 2009

2009-06-01 Monday - JavaOne - in the Pavilion

A quick walk-through the JavaOne Pavilion this afternoon...about 30-40% of the exhibitors are companies that I have not heard of before - so this is going to be a very productive trip.

My friend Dean Wampler just suggested a Ruby site: futureruby.com

I'm waiting for a confirmation on a schedule for an interview with the Terracotta executives sometime Tuesday or Wednesday morning.

I have an interview setup with SpringSource executives for this Thursday.

This morning I interviewed Omer Trajman, Senior Director, Cloud and Virtualization, for Vertica Systems, Inc. (vertica.com)

2009-06-01 Monday - JavaOne 2009 - Cloud Computing Patterns

2:40PM, sitting in the presentation, more notes to follow shortly...



Cloud Compute Instance Provisioning

Provisioning Elements
- Base OS
- Utilities & agents
- Platforms and frameworks
- Custom application code
- configuration files
- Data and volumes

Provisioning Participants
- Console
- Cloud interface
- Comopute instance
- Image repository
- ...


Static Image Provisioning
- very simple scripted provisioning
- deploys full stack to cloud compute image with little customization
- appropriate for low-complexity, low volatility code
- easy integration into existing monitoring processes
- may be more secure - could run keyless
- external orchestration left to console (load balancer)
- requires very good Test/QA procedures


Push Provisioning
- Builds on static pattern by "pushing" additional provisioning informaiton / configuration
- still have to do a fair amount of error checking in the deployment script
- have to know a fair amount of OS and platform / environment

Pull Provisioning
- builds on static pattern / introduces client/server interactions
- appropriate for high codebase volatility and architectural complexity at great scale
- adds several new participants which introduce administrative overhead and points of failure
- provisioning server handles external orchestration



Monitoring Apps in the Cloud
- Crucial Function of Application Service Operations
- Forces (Business Inputs)
-- SLA
-- Margin Analysis
- Primary Strategies (some overlap)
-- Agent Based: detects events in real-time
-- Polling: simple health checks, synthetic round-trip


Agent Based:
Pros:
- Rich data
- HIgh control over what is observed
- Realtime event detection
Cons:
- Resource overhead on every instance
- Data traverses public network
- Lifecycle sustaining implications

Watch Polling (example: Amazon Cloud Watch)
Pros
- No resource overhead
- Simple
- Scope is dimensionable
- No sustaining implications
Cons
- Costs 0.015 / Instance / hour (Amazon?)
- Limited data
- Lock-in

2009-06-01 Monday - JavaOne 2009 - Press/Analyst Briefing on Cloud Computing

11:50am - sitting in a Press/Analyst briefing

Moderated by Ray Valdez (sp?) - Gartner

Panel:
Lou Tucker, Sun Microsystems, CTO of Cloud Computing
Todd Fast, Sun Microsystems, Chief Architect, Platform-as-a-Service, (CTO, zembly.com)
Tim Bray, Sun Microsystems
Geir Magnusson Jr., Apache Foundation

The following are some snippets of the presentation that I've hopefully captured without too many errors...

...the idea of "nano-services" or "micro-services"...to fill in the niche needs

"cloud food chain"

"facebook is a channel", "mypace is a channel"

...As you move up the stack, to be a true cloud...there is more value [offered], you [as the customer] also have to willing to give up more [things]...

"[multi-tennancy is a requirement to be a true cloud]"

programmatic control over provisioning must be there...

Elasticity is considered important

Architecture: what is actually shared?

Tim Bray: Amazon doesn't tell you anything about the underlying architecture...[and does that really matter?]

Todd: Architecture or Programming Model?

Monetization...

2009-06-01 Monday - JavaOne - Red Hat Press Conference

Sat in on the Red Hat press conference this morning...more dtails to follow.