Subscribe: /dev/null
Added By: Feedage Forager Feedage Grade B rated
Language: English
business  cache  coherence  data  java  key  map  new york  new  number  oracle  people  store  support  time  years 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: /dev/null


Cameron Purdy

Last Build Date: Thu, 9 Apr 2015 17:36:12 -0400

Copyright: Copyright 2015

So long and thanks for all the microfiche!

Mon, 6 May 2013 17:39:06 -0400

Konnichiwa! It's been a year since I've blogged here, and once again, I'm headed to Tokyo for the JavaOne and Oracle OpenWorld Tokyo events.

I've also moved my blog to another location:

JavaOne Tokyo!

Sat, 31 Mar 2012 23:00:00 -0400


I'm headed to Tokyo for the JavaOne and Oracle OpenWorld Tokyo events.

In other news, Arun Gupta stirs up a bees nest with a blog entry on how Java EE 6 is a lighter-weight alternative to Spring, and Jeff West chimes in with a few thoughts of his own.

Feedback on Elastic Data

Tue, 26 Apr 2011 03:15:22 -0400

Wow! The new Elastic Data capability has been a hit with everyone I've talked to about the release. There are still a couple areas (like indexes) that Elastic Data doesn't help with (yet), but for the "big data" use cases we're working with, it seems to be a great fit.

Coherence training in NYC on May 2

Tue, 19 Apr 2011 12:45:00 -0400

There's an upcoming public 5-day training course in New York City the week of 2 May: Oracle Coherence 3.6: Share and Manage Data In Clusters. A month later, there's the new 3-day Coherence administrator course in New York City: Oracle Coherence 3.6: Administer and Troubleshoot Clusters.

Links to available training course, documentation, screencasts, and everything else related to Coherence are located on

Elastic Data: Terabytes of Cache

Mon, 18 Apr 2011 12:15:00 -0400

The Oracle Coherence 3.7 release went live today. You can read more about it on InfoQ and PC World.

There are close to 500 improvements in the release, but the headline feature is Elastic Data, which enables applications to scale elastically both horizontally (scale-out) and vertically (scale-up), transparently managing "Big Data" across RAM and solid state storage (SSD, or "flash drives"). With a total of two lines of configuration (both optional), you specify the amount of RAM to allocate per node to Elastic Data, and what drive to transparently expand storage onto. On my Mac notebook, for example, I can easily run a 100GB cache across two local cluster nodes with full HA (thanks to a second synchronous copy of the data). That's a total of 200GB of data on a notebook that "only" has 8GB of RAM -- and my test scripts run Java with just a 1GB heap! To top it off, Elastic Data runs as fast as on-heap data storage!

We'll be releasing more video walk-throughs of new Coherence features over the next few days, and hopefully I'll get some time to talk about some of the R&D we're doing focused on high-performance and ultra-low-latency I/O, and how it will eventually make its way into the Java platform. If you think what we're doing with flash storage is cool, wait until you see what we can do with an ultra-low-latency 80-gigabit Infiniband network! :-)

On a Train

Wed, 3 Nov 2010 05:57:00 -0400

On the occasion of taking a train this morning, and finding this one in some old notes:
On a Train

I saw your face
A beautiful reflection in a window
Eternal youth and grace
My gaze, transfixed, thus nudged you
From your listless sleep
I turned to see your eyes
And the grey came out of your hair
Like foam comes out of a wave
As the color faded from your face.

/dev/null is web scale

Sun, 12 Sep 2010 18:00:00 -0400

It turns out that my blog (/dev/null) is web scale!

Serialization Maps

Sat, 24 Jul 2010 02:25:00 -0400

What do you get when you combine Binary serialization with an AbstractKeyBasedMap or AbstractKeySetBasedMap? Let's take a look. Let's start with the BinaryStore interface, which represents the ability to store raw (i.e. opaque) Binary data, for example in a file: public interface BinaryStore { /** * Return the value associated with the specified key, or null if the * key does not have an associated value in the underlying store. * * @param binKey key whose associated value is to be returned * * @return the value associated with the specified key, or * null if no value is available for that key */ public Binary load(Binary binKey); /** * Store the specified value under the specific key in the underlying * store. This method is intended to support both key/value creation * and value update for a specific key. * * @param binKey key to store the value under * @param binValue value to be stored * * @throws UnsupportedOperationException if this implementation or the * underlying store is read-only */ public void store(Binary binKey, Binary binValue); /** * Remove the specified key from the underlying store if present. * * @param binKey key whose mapping is to be removed from the map * * @throws UnsupportedOperationException if this implementation or the * underlying store is read-only */ public void erase(Binary binKey); /** * Remove all data from the underlying store. * * @throws UnsupportedOperationException if this implementation or the * underlying store is read-only */ public void eraseAll(); /** * Iterate all keys in the underlying store. * * @return a read-only iterator of the keys in the underlying store * * @throws UnsupportedOperationException if the underlying store is not * iterable */ public Iterator keys(); /** * If a BinaryStore is aware of the number of keys that it stores, then it * should implement this optional interface in order to allow that * information to be efficiently communicated to an intelligent consumer of * the BinaryStore interface. * * @since Coherence 3.7 */ public interface SizeAware extends BinaryStore { /** * Determine the number of keys in the BinaryStore. * * @return the number of keys in the BinaryStore * * @since Coherence 3.7 */ public int size(); } } The BinaryStore interface is implemented by a number of storage facilities, such as for Oracle Berkeley DB, allowing Coherence to store data off the Java heap, and even on disk. The consumer of the BinaryStore interface that we're looking at today is the serialization map, i.e. a Map implementation that appears to contain object keys and object values, but actually manages a mapping from Binary keys to Binary values by delegating to an underlying BinaryStore. There are a number of serialization map implementations, arranged here by their inheritance relationships: AbstractKeyBasedMap SimpleSerializationMap - a basic serialization map that avoids keeping keys in memory AbstractKeySetBasedMap SerializationMap - a basic serialization map that relies on the entire key set being in memory AbstractSerializationCache - an abstract serialization map that adds support for the ObservableMap API SerializationCache - a serialization map that supports size-limited eviction and time-based expiry via the CacheMap and ConfigurableCacheMap API SerializationPagedCache - a significantly more complicated expiry-based cache that expires an entire BinaryStore's worth of data at a time The general implementations of each of these (except for the SerializationPagedCache) are relatively straight-fo[...]

Binary, Buffers and Streams, Oh My!

Sat, 24 Jul 2010 01:00:00 -0400

It's worth spending some time explaining the evolution of one of the most central classes in Coherence: Binary. The Binary class was introduced in early 2002 as the basis for the partitioned cache, which is the technological cornerstone of today's In-Memory Data Grid (IMDG) products. At the time, we needed a class that would encapsulate the binary form of a key, guarantee immutability, provide a predictable (and machine-independent) hash code, implement equals(), and be readable and writable, for example to and from a message, packet or stream. When faced with this set of requirements, one had to look no farther than Java's own String class for an example API that would be well-known on the Java platform, and that is exactly what we did. String is immutable, it represented a char[] (while we required a byte[] for a binary value), it provided a stable and predictable hash code, an equals() implementation, and could easily be read from and written to a stream. The early version of Binary provided this rough set of capabilities. The idea behind the partitioned cache was to take an infinite domain of keys and reduce that infinite domain down to a finite domain of partitions, with the cluster responsible for (1) assigning ownership of those partitions to cluster members, and (2) assigning backup responsibilities to other members. Even before we introduced the partitioned cache, we had to be able to transmit keys over the wire -- for example in a Coherence replicated cache -- and thus we already had support for key serialization. With the introduction of the Binary class, not only was there something to hold the result of that serialization, but there was also a predictable hash code for that result, thus reducing the infinite domain of keys down to a set of 4 billion hash codes, with the understanding that no matter where the key was serialized, it would result in the same hash code. The partition identifier (PID) is calculated from that hash code modulo the maximum (preferably prime) number of partitions. Given some implementation of serialization, such as Java Serializable/Externalizable, Coherence ExternalizableLite, Google Protocol Buffers, or the Portable Object Format (POF), and given a context (i.e. such necessary things as a ClassLoader), there exists a function f() such that Binary=f(Object), some inverse function f-1 such that Object=f-1(Binary), and subject to Java's rules of equality as defined by equals(), the following must hold true for keys: For a given Binary key b, b == f(f-1(b)) For a given Object key o, o == f-1(f(o)) For two given Object keys o1 and o2, o1 == o2 iff f(o1) == f(o2) Generally speaking, we refer to that function f() as toBinary(), and that inverse function f-1 as fromBinary(), although the actual interface is far less reminiscent of SmallTalk: /** * The Serializer interface provides the capability of reading and writing a * Java object from and to an in-memory buffer. *

* Serializer implementations should implement the ClassLoaderAware interface * if they need access to a ClassLoader. However, to support hot-deploying * containers, it is important that a Serializer not hold any strong * references to that ClassLoader, or to any Class objects obtained from that * ClassLoader. * * @author cp/jh 2007.07.21 * * @see ReadBuffer * @see WriteBuffer * * @since Coherence 3.2 */ public interface Serializer { /** * Serialize an object to a WriteBuffer by writing its state using the * specified BufferOutput object. * * @param out the BufferOutput with which to write the object's state * @param o the object to serialize * * @exception IOException if an I/O error occurs */ public void serialize(WriteBuffer.BufferOutput out, Object o) throws IOException; /** * Deserialize an object from a Re[...]

It's Maps all the way down

Fri, 23 Jul 2010 21:30:00 -0400

From "A Brief History of Time": A well-known scientist (some say it was Bertrand Russell) once gave a public lecture on astronomy. He described how the earth orbits around the sun and how the sun, in turn, orbits around the center of a vast collection of stars called our galaxy. At the end of the lecture, a little old lady at the back of the room got up and said: "What you have told us is rubbish. The world is really a flat plate supported on the back of a giant tortoise." The scientist gave a superior smile before replying, "What is the tortoise standing on?" "You're very clever, young man, very clever", said the old lady. "But it's turtles all the way down!" Coherence uses a analogous architecture, but replace "turtle" in the above story with "Java Map interface". For example, a common use case is to cache a limited amount of data in an application server tier, backed by an In-Memory Data Grid (IMDG). The topology for this use case is referred to as "size-limited near caching with a partitioned cache"; in other words, the application server uses a near cache to keep recently- and commonly-used data locally in memory, while the entire data set (up to a few terabytes) is cached by the In-Memory Data Grid. Coherence, as an IMDG, automatically partitions all of the data across the available cache servers (aka storage-enabled nodes). In this scenario, the cache that is being used on the application server is a Java Map, implemented by Near Cache. The Near Cache is backed by two Java Maps: The first is an in-memory size-limited Java Map (where the "near" data gets stored), implemented by Local Cache, and the second is the partitioned Java Map, implemented by Partitioned Cache Service. The partitioned Map is actually a thin ClassLoader-aware veneer that handles serialization and deserialization, and delegates to an underlying binary-only Java Map, also implemented by Partitioned Cache Service. The binary implementation uses TCMP messaging to communicate across the cluster to the server(s) that own the partition(s) involved with a given client-side operation. When an operation request is received by one of those servers, it is translated into an invocation against a member-specific Java Map, implemented by the Storage module of the Partitioned Cache Service. That invocation is then typically delegated to a multiplexing Java Map, implemented by a Partition-Aware Backing Map (PABM). The invocation is then delivered to an actual data-managing Java Map, which is the backing map that was configured for that cache. The backing map may in turn be composed of a sequence and/or tree of delegating maps, such as when the cache is backed by a database; in this case, the backing map is a database-aware Java Map, implemented by Read/Write Backing Map (RWBM). The Read/Write Backing Map will store cache data in memory by delegating to a configured backing Java Map, implemented for example by a Local Cache or a thread-safe Hash Map. (There are even more turtles than this, since there are fault-tolerant "safe" layers, the option for client/server proxy layers, client- and subject-specific security layers, and "backup" redundancy layers.) All in all, Coherence contains roughly 80 Map extensions and implementations, and a few dozen more in the unit and functional tests packages. Many of the early Map implementations in Coherence were based on the AbstractMap implementation that was part of the Java Collections framework, but AbstractMap turned out to be a rather poor base class for Map implementations for a number of reasons, including: At first glance, AbstractMap implements everything except for one method. Unfortunately, that one method is entrySet(), which means that instead of implementing a Map of keys to values (which makes sense), you have to implement a Set of key/value ("Entry") pairs (whi[...]

Hasta la vista, baby!

Fri, 21 May 2010 15:15:00 -0400

Abi has joined this session!

Connected with Abi. Your reference number for this chat session is 2357642.

Abi: Welcome to Microsoft Customer Service Chat, Cameron. Kindly give me a moment to review your question.

Abi: Thank you for waiting. I'm sorry to hear that your having issues with the 25-digit product key of your Windows 7. Did you get an error message? If yes, may you please provide it to me?

Cameron Purdy: Yes, in the title it says "Invalid product key" and then in the body of the message it says "The product key you have entered does not appear to be a valid Windows 7 product key. Please check your product key, and type it again."

Abi: I see. By the way, please note that this chat service is available to guide you to the appropriate resources for your questions. Often this can include technical support options or a phone number to the appropriate Microsoft Team.

Cameron Purdy: I have typed it and checked it several times now. (It doesn't help that the font is ridiculously bad and you can't tell whether some letters/numbers are sixes or G's.)

Abi: Cameron, did you receive this message during activation or installation?

Cameron Purdy: Activation.

Abi: I sincerely apologize for the inconvenience this has caused you.

Cameron Purdy: I have the original package in front of me with the product key. This is supposed to be an "upgrade" to the Vista OEM license that came with the computer, but when I tried to upgrade it told me that I had to install a new copy, so I did the install, and now it won't take the key.

Abi: For this particular issue, please contact our Personal Support at 800-936-5700. They are open Monday - Friday 5 AM - 9 PM, Saturday - Sunday 6 AM - 3 PM Pacific Time.

Abi: Is there anything else I can help you with today, Cameron?

Cameron Purdy: The location of a local Apple store?

Abi: I'm sorry but Microsoft doesn't support Apple.

Abi: It seems like I lost you. I hope this will be resolved soon. Thank you for using Microsoft Customer Service Chat. Please feel free to come back again. We are available 7 days a week, 24 hours a day.

Abi has left this session!

The session has ended!

Coherence 3.5 Book

Mon, 12 Apr 2010 12:15:00 -0400

For such a successful software package that's used by thousands of companies and has been out in the market for over eight years, it's a little surprising that the only documentation available to date came from the vendor itself. Thankfully, Aleks Seovic, who is one of the authors of Spring for .NET, wrote a hefty volume on building high-performance, scalable applications with Coherence 3.5: There aren't too many good books on the subject of extreme scalability and scalable performance, and very few that look at those topics in tight relation to High Availability (HA), continuous availability and reliability. This book brings a lot of those ideas down to earth, and shows how to architect and build real, working applications that scale well, perform beautifully (and consistently!), and survive hardware failure without any impact on the users of the applications. Here's Aleks in his own words talking about this topic: The part of a typical application that is most difficult to scale is a data layer. Scaling web servers out is trivial -- you simply add more of them behind the load balancer. Because HTTP is naturally a stateless protocol, HTTP requests can be easily balanced across many machines. The situation is similar with the application servers, but with an important difference -- in order to be able to scale application servers out, we need to make middle tier services stateless. This is not necessarily a bad thing, but it can lead to both performance and scalability problems if done incorrectly. Unfortunately, very few services are truly stateless in real life. What is usually the case is that they need some data to process, so the common approach is for a service to load data from the data layer, process it, and persist the result back in the data layer. That means that in order to make application services stateless, we need to push all the state (even the transient state, such as HTTP sessions) to the data layer. This puts additional load on the data layer -- the more web and application servers we have, the harder our data layer will have to work to satisfy incoming requests. The problem is that most applications use RDBMS as a data layer, and relational databases are both difficult and expensive to scale. When you use master-slave replication, clustering or sharding to scale your database, you significantly increase both the complexity and the cost of the system. Even if you use an open source database, such as MySql, you will have additional hardware and administration costs. In the case of sharding, you will also increase development cost quite a bit. The bottom line is that relational databases were simply not designed for scale out. Even though we have come up with different solutions to scale them, all of them feel like a kludge to a certain extent, and have some fairly significant limitations. On the other hand, Coherence and other in-memory data grids were designed with scalability as a primary goal. In the case of Coherence specifically, it is trivial to scale the cluster out by adding more machines. Coherence will dynamically repartition the cluster, which will automatically reduce both the data volume and the processing load across the cluster. The net result is that in-memory data grids allow you to put state back into the application. This can significantly reduce the load on a database -- it is not uncommon to see database load drop 80% or more after Coherence is introduced into the architecture. They also allow you to keep transient data, such as HTTP sessions, only within the grid, reducing the load on a database even further. Since I've been talking with Aleks about this project the whole way through, I can attest that this book was a long time in the making! It's never hard to start one,[...]

All Good Things ...

Mon, 12 Apr 2010 11:15:00 -0400

The big news in Javaland from this past week is that James Gosling left Oracle. That sounds so negative, though.

How about this instead: James Gosling started a new blog!

Yeah, that's a tough one. It's always disappointing to lose talented people. As for you, James, best wishes, and I hope we'll still see you at JavaOne.

Eight Theses

Thu, 21 Jan 2010 18:00:00 -0500

A recent post by Tim Bray started a conversation on a mailing list that I enjoy lurking (and occasionally commenting) on. In "Doing It Wrong", Tim laments the complexity of "enterprise systems", and the heavy-weight processes and cultures that surround them. Now I may be fairly evil to point this out, but Tim is widely credited for co-inventing XML, and thus (IMHO) is automatically disqualified from lamenting the complexity of enterprise systems, since most modern complexity seems to somehow be related to the use of XML ;-). Einar Landre, speaking at Oppdat, and on much the same subject, asked the question "What is the reasons why students or startups manage to pull off things that big enterprise IT teams almost never manage to pull off?" Dave Bartlett responded: There are examples of groups withing large companies that have successfully short circuited the bureaucracy. In the '80s the term for these groups was usually a "skunk works" project. Essentially a start-up within a large company, but for that project to succeed there had to be someone with the vision to recognize an opportunity from the changes that are emerging from technology, business and society. With the entrepreneurial culture we have today, less of these talented people go into large corporations. And Barry Hawkins added: Regarding "enterprises" (a term I've come to loathe), the apathy and ineffectiveness seems to stem from being so far removed from the actual business of providing people something they pay money for. So very few companies manage to reach a largish size and maintain that sense of immediacy and connection with their domain. I added seven points to consider, which after some feedback I expanded to these Eight Theses: There is a difference between version 1 and version 2. Building something with a single purpose from scratch is mind-bogglingly easy compared to changing something that already exists. While we use the term "system integration" in enterprise software, what we're really talking about is going from version 72915287 to version 72915288 of a complex system called "IT", composed of many moving parts (e.g. applications and the infrastructure that they run on). Those same people, if they were building a new "IT version 1" to include all the features of "IT version 72915288" would be able to do it in a much shorter aggregate time, at much lower aggregate cost. Second system effect. While I just claimed that a veteran IT group could build an "IT version 1" from scratch quite quickly and inexpensively, there is also an incredibly high likelihood that they could not build it at all. The name given to this phenomenon is "second system effect", which basically means that people who have battle scars from a legacy system will tend to over-invest in the "flexibility" and "completeness" of a green-field replacement of that system (often out of fear of missing something important), causing the complexity of the project to sky-rocket and killing it in the process. In summary: Knowledge is paralyzing. (That could largely explain why students are fearless.) The real cost of complexity increases exponentially. I usually deplore folklore about start-ups that "go big" (e.g. Google and Twitter), but there is one that I'd like to repeat (and probably butcher in the process), and here it is: One guy wrote eBay in a day -- one guy, one day! When they built version 2, the project took the same guy many weeks. Version 3 took many years. There can never be a version 4, because the system is so complex that it literally cannot be replaced in total. Just to be clear, the same brilliant person is usually present for version 1 and 2 and 3, so why does each version take longer -- even if replacing th[...]


Thu, 8 Oct 2009 19:00:00 -0400

I was interviewed recently on the topic of innovation as part of the Oracle Innovation Showcase. Reading back through it, I liked this question and answer:
Q: What would you call the enemy of innovation?

A: The first is complacency. A lot of people are satisfied with what they have. If you can convince yourself you're satisfied, you'll stop looking for a better solution. The other is an inability to listen and appreciate the complexity of a problem. Everyone wants to believe they have the answer before the question even gets asked. People don't take the time to listen and appreciate the individual complexity of each customer's problem and the nuances of their environments.

The full interview can be found on the Oracle Innovation Showcase.

The challenge with GC in Java and .NET

Wed, 30 Sep 2009 11:45:00 -0400

A recent topic on Artima is coincident with a topic that I was recently writing about. I've included a portion of that here: -- There exists no shortage of opinions on the topic of what aspects are the most important in a system of execution. One voice will claim that only performance matters, while another will suggest that it no longer matters at all. One voice will claim that achieving efficiencies in development is far more valuable, while another will insist that predictability and stability in execution is critical. Opinions morph with time, as the reality of the physical units of execution evolves and the conceptual units of design are ever the more realized in languages and libraries. Nonetheless the state of the art today bears the hallmark of a path followed far beyond its logical conclusion. In 1977, John Backus raised an early warning in his ACM Turing Award lecture: "Surely there must be a less primitive way of making big changes in the store than by pushing vast numbers of words back and forth through the von Neumann bottleneck. Not only is this tube a literal bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual units of the task at hand. Thus programming is basically planning and detailing the enormous traffic of words through the von Neumann bottleneck, and much of that traffic concerns not significant data itself, but where to find it." While programming advances have largely digested and expelled the explicit concerns of store-addressing and word-at-a-time thinking, these advances have been repetitively accreted onto a burial mound whose foundation remains a von Neumann architecture. Perhaps the success of that underlying architecture is the result of natural selection, or perhaps we have only inertia to blame. In any case, the evolution of concurrent multi-processing and distributed systems has stretched the von Neumann architecture past its effective limits. Specifically, it appears that the recent growth in the extent of the now automatically-managed store has occurred at a pace well beyond the increase in performance of the heart of the von Neumann machine: the processor. Whether this imbalance can be rectified by further technological accretion or by the adoption of a fundamentally new execution architecture is yet to be seen, but regardless the inevitable and predictable increase in performance that has become the opiate of an industry has taken a sabbatical, and may have accepted an early retirement altogether. There has existed a loose historic alignment in the growth of processor performance, memory capacity, memory throughput, durable storage capacity, durable storage throughput and network throughput. This relatively consistent growth has allowed a general model of assumptions to be perpetuated throughout hardware architectures, operating systems, programming languages and the various resulting systems of execution. Now we find that model to be threatened by the failed assumption that processor performance will increase at a rapid and relatively predictable rate. To maintain the façade of progress, explicit hardware parallelism has emerged as the dominant trend in increasing processor throughput. Symmetric Multi-Processing (SMP) has a relatively long history in multi-CPU systems, but adoption of those systems was hobbled both by high prices and a lack of general software support. The advent of the Internet propelled multi-CPU systems into the mainstream for back-end servers, but it is the recent, seemingly instantaneou[...]

Upcoming Coherence SIGs

Wed, 30 Sep 2009 11:30:00 -0400

Unfortunately, considering that we've booked the largest room that Oracle has available, the NYC Coherence SIG scheduled for 1 October is basically "sold out". (Pre-registration is required.)

Fortunately, we have another one coming up in San Francisco and the Bay Area. This one is will be held at Oracle's Redwood Shores campus on 8 October. Pre-registration is required for this one, too, but we've reserved plenty of room. Some of the topics being covered:

  • Aleks Seovic, who authored a book on Coherence (coming out later this year) will be talking about Coherence extension points and utilities and tools that he built as part of writing the book. Aleks (who wrote a good portion of Spring.NET) was also deeply involved with the architecture and implementation of Coherence for .NET, and he's a fun speaker.
  • Matt Rosen and Horea Abrudan from Orient Overseas Container Lines will be talking about how they have used Coherence, including the use cases they set out to address, the development process, and what they've learned in production.
  • Everett Williams, who authored the Coherence JMX Reporter and a number of monitoring features in the product, will be presenting on ... the Coherence JMX Reporter. For those of you who haven't seen it, the JMX Reporter allows the cluster to produce time-series analytics that help to diagnose issues in large-scale production environments, i.e. the types of environments that you can't take down to "debug", and that are so large that you couldn't do it even if you were allowed to.

There are quite a few other Coherence events going on this quarter as well, but the biggest is Oracle OpenWorld in San Francisco. Click on that link and save it, because it has all of the information about Coherence at OpenWorld, and will save you a ton of time! (OpenWorld is usually around 85,000 people, so it can be pure chaos!)

Going green ...

Thu, 18 Jun 2009 11:45:00 -0400


JavaOne 2009 - I will miss you

Tue, 26 May 2009 12:30:00 -0400

I am not going to JavaOne this year. It's a bit of a relief: For the past several years I've been furiously working on presentations up until the last minute, and it's nice to not have that annual deadline hanging over my head. On the other hand, my over-sized ego was completely decimated by the lack of an invitation to speak, and I fear that I will never recover from it.

This will also be the first JavaOne since 2003 without the annual TangoSolarmetric Party. Putting on a party takes a lot of planning, a budget ... and at least a few people going to the show (which we don't have this year). I have some very fond memories from the parties, but the event itself wasn't the important thing -- it was the friendships formed and the relationships grown over the years.

I am currently reading (working?) through the Artima book on Scala, which is a relatively new language (from the creator of the Pizza language) that runs on the JVM and has good interoperability with Java. It's interesting to have witnessed the impact of Java from its inception through today, and hopefully there's a lot more to come.

The clock starts ticking ...

Fri, 10 Apr 2009 13:00:00 -0400

MacBook Pro, 15-inch, Aluminium
2.93Ghz Intel Core 2 Duo
4GB 1066MHz DDR3 SDRAM - 2x2GB
320GB Serial ATA @ 7200
SuperDrive 8x (DVD±R DL/DVD±RW/CD-RW)
iWork '09 preinstalled
AppleCare Protection Plan


Incubator, Durable Topics, Durable Queues, Oh Boy!

Tue, 31 Mar 2009 20:30:00 -0400

I said "watch this space", and just a few days later, I'm happy to announce that the Coherence Incubator has a new release of all the incubator projects. The most notable changes are in two of the projects. First, in the Messaging Pattern, there are some big new features detailed by Brian Oliver:

1. Initial support for Queues (not just Topics)

2. The introduction of Subscribers (for both Queues and Topics)

3. Support for Durable and Non-Durable Subscribers (to Topics)

4. Support for Transactional Subscribers - the ability to rollback read messages (for both Queues and Topics).

Also, the Push Replication Pattern was updated, with new JMX features described by Brian:

[..] the Coherence Push Replication Pattern adds support for “draining” pending updates for Publishers that have been off-line for a long period of time. That is, instead of keeping all of the pending updates for a Publisher (ie: site) that you may be upgrading, taken down or taken offline, you can now “drain” those updates as to restart publishing from a point in time.

The blog goes into more detail, so check it out!

Several of the Coherence SIGs that I mentioned have already been scheduled:

See you there!

Coherence March 2009 Update

Sat, 28 Mar 2009 02:00:00 -0400

It's probably pretty obvious, but I've found it difficult to blog much lately. Given that I'm finally coming up for air, I did want to write while I had the notion to blog (and during one of the seemingly few periods of time that aren't considered a "quiet period" when I'm not supposed to say anything about how well we're doing). A week ago Oracle massively exceeded expectations, completely crushing the hopes of the doomsday crowd. Part of those results stems from the growth in Fusion Middleware, which includes BEA WebLogic. This past quarter I saw a big jump in the number of accounts switching from WebSphere back to WebLogic on the high end, and (quite surprisingly, considering the economic climate) from JBoss to WebLogic. I could mark it up solely to a great sales organization, but there are some really interesting things at work that have made a huge difference in the ability to win business with WebLogic: WebLogic is getting a higher level of technology investment as part of Oracle than it has seen in a long time, and those investments are starting to pay real rewards for our customers. We showed a plan for WebLogic and the other BEA products. We have been steadily delivering on the plan. Customers appreciate the "ability to execute" combined with actual execution. Several of the technologies in the Fusion Middleware stack just can't be found elsewhere. Start with jRockit, the real-time JVM that dominates all of the performance records (see here, here, here and here for example.) Add reliable cross-platform, multi-portal session clustering with single sign-on support via Coherence*Web, and the ability to globally load-balance a single application across multiple data centers. Top it off with end-to-end operational monitoring. Wow! All in all, very impressive, and very exciting to see first hand. Coherence growth in the market continues at a stunning pace. It's hard for me to fathom, having worked to build a customer base at Tangosol over a seven year period, that Oracle can eclipse that entire number on a quarterly basis. It's been great working with so many new customers, but it's also been a constant challenge to keep up with the growth. Over the past several quarters, we've been able to dramatically increase our resource levels and our bandwidth, and part of that success has been a direct result of the Coherence Incubator, with its published patterns for messaging, WAN replication and other advanced grid capabilities. (Watch this space!) As usual, I can't talk about future releases, other than to say that we're working on them. It's been fun for me to be able to re-engage at an engineering level with a number of our customers, both old and new, and to realize that I haven't completely lost the ability to understand the challenges that they are facing and how we can provide solutions as part of Coherence. I've spent probably half of the past two weeks in code reviews for things in the pipeline, some of which I had contributed to on the engineering side. It's an eye-opener, witnessing the progress of everything from new capabilities to defect resolutions, and reassuring, to see the processes continue to refine the quality of the software. I'm planning to be in Norway the 14-15 of April, and London the 16-17 of April, visiting with customers and partners. Hopefully I'll be able to get to schedule some of the visits that I wasn't able to get into the schedule when I was at QCon London a few weeks ago. Also, in addition to the upcoming Coherence[...]

How to start a company and win your own Apple Macbook Pro: The Conclusion

Sat, 28 Mar 2009 00:30:00 -0400

In December of last year, I announced a contest with a Macbook Pro as a giveaway. I was hoping to have it wrapped up by the end of January. Then I announced that I would publish the result by the end of February. And now it's the end of March.

There are only a few possible conclusions:

  • I'm slow.
  • I'm busy.
  • I'm a pathological liar.
  • I'm dead.

I am grateful to announce that I'm still alive. The other three problems I haven't quite managed to solve yet.

Nonetheless, and without further ado, I am pleased to announce the winner of this first contest: Roberto Marquez. While I would love to tell you about his idea, the deal is that he has a shot at going off and implementing it without me spoiling his party by telling you what the idea is. Congratulations, Roberto, and best wishes. Your Dell Apple will soon be on its way to your house. Hopefully a bit faster than the turn-around on this contest. ;-)

As an aside, I did want to share a few things that I learned as a result of this contest:

  • A lot more people responded than I expected to. That should have been the first clue that this was going to be harder than I had planned for.
  • I was shocked by how many ideas were really good. Seriously good. Seriously. Like ideas that I can actually imagine working well with some elbow grease and a little luck.
  • You could probably guess this, but the number one technology category of idea was stuff related to the iPhone. Score one for Apple attracting developers. (Hence the giveaway idea.)
  • You could probably guess this too, but the number two technology category of idea was stuff related to social networking. Very creative uses of existing social networks, though -- very few people suggested creating their own Facebook.
  • A major theme (not the majority, but a healthy minority) were ideas that would never make any real money, but would have been valuable to society, or some of the ideas would have been just plain fun. There's got to be a way to carve out some of the $5 trillion that Obama is doling out for some of these keyboard-ready projects. ;-)
  • I noticed a lot of similar contests popping up. Since I patented the idea before I posted the contest, I now own Mark Cuban. And people say our patent system sucks ....

I'm seriously considering "round 2", but if I do, I'm going to have help. In the meantime, here's wishing a great group of entrepreneurs the best of luck. :-)


The true challenge of software development

Fri, 20 Mar 2009 11:00:00 -0400

There's a huge chasm between code that appears to work for the most part, and actual working software. Fundamentally, that massive distance contrasted with the illusion of things "almost working" creates the challenges that we have in improving our industry and defending the cost of "doing it right the first time".

California Coherence Road Trip

Tue, 17 Feb 2009 17:00:00 -0500

I'm in California this week for a couple Coherence-related events:

Road trip!

Oracle Coherence 2008: Year In Review

Thu, 12 Feb 2009 09:30:00 -0500

OK, I admit that it's a little late for a "year in review" post, but since I'm late at everything else, I might as well just do it. To start with, it's always hard to believe that yet another year has passed. As with many years, our team was so busy that we hardly paused to celebrate -- even our holiday party was planned last-minute. We did get one really good break, though: Our engineering team took a few days and disappeared to an undisclosed -- and from what I hear, paradise-like -- location. With the growth that we've had in the team, it was important for us to go back to the basics, and make certain that everyone understood and agreed to the principles that we hold to, and that we count on. We came out of that meeting with a shared sense of purpose, and a renewed commitment to taking great care of our customers and providing them with the best software in the industry. Things are humming now, but I always like to point out that it wasn't always this easy. Any time a company or a team goes through a major transition, there's a huge opportunity to break things, lose people, and to lose track of what your purpose is. The Oracle acquisition (now almost two years ago) was extremely disruptive for us, and we had to dramatically re-organize our resources in order to train up a larger sales force, field technical staff, etc. We're finally on the other side of that process, with a tremendously successful presence around the globe, and with particularly effective teams in New York and London. The best part of it is that we made it through that transition without losing a single engineer, and actually managing to significantly grow the team in the process. The timing couldn't have been better. As concerns about the economy mounted, banks and other financial institutions turned en masse to Coherence and the safe harbor of Oracle. As a result, we've been inundated with work, running training courses, assisting with architecture, and helping customers move new systems into production. It's unbelievable just how busy we've been. To support the large developer communities in New York and London, we started a quarterly Coherence user groups in both locations, and they have surpassed our every expectation. We run between 75 and 150 people at every user group meeting, and draw great speakers from our customer base. As a result, we are announcing another Coherence user group: The Bay Area Coherence user group, which will have its first meeting next week! In the meantime, our engineering group completed the Coherence 3.4 release, which was the biggest release we've ever had. For the first time, applications could reliably share data in real time across any platform and any language, using the native Java, .NET and C++ interfaces to Coherence. Of course, there were lots of other features in 3.4, including triggers and event transformers, inclusion of Oracle's Berkeley DB, and significant improvements to the Coherence*Extend and the management infrastructure. And speaking of improvements, we just shipped Coherence 3.4.2, which includes tight Coherence*Web integration with the latest WebLogic Server and Weblogic Portal releases, in addition to updated support for basically all the other commercial and open source application servers in the market. The performance is impressive, and the capabilities (single sign-on support across multiple applications, shared sho[...]

Update on the contest

Thu, 12 Feb 2009 08:37:43 -0500

It's been just over two months since I announced the MacBook Pro contest, and I'm closing the entries today. I still have some more reading of the entries and some follow-up correspondence to do with some of the participants, but I plan to have the results announced by the 21st of February.

Thank you to all the participants, and good luck :-)


Fri, 30 Jan 2009 01:30:00 -0500

hunched figure through the fog
tends the hidden soil among
soldiers with drooped shoulders
and others arms straight out

disjoint and awkward with silent prayer
upon memories and beds of petals true
silent slippers glide through green
glades littered with stone

whose hands that made are also here
with pain itself forgotten long
since folded in peace and guarded
only by simple verse

may someone always leave
white daisies on your bed
to greet the soldiers shadows
and see you safely home


Thu, 29 Jan 2009 02:30:00 -0500

Several years ago, I was watching Frontline. It's a quality investigative reporting show on the public broadcasting (PBS) network here in the states. Evan Williams, a reporter who is banned from Burma by the repressive military government in response to his past reporting on human rights abuses, managed to sneak back in and interview a number of people related to the democracy movement. This is the movement made internationally famous by Daw Aung San Suu Kyi, the democratically elected leader of Burma. Her reward for being elected was permament house arrest, and having many of her family and friends tortured -- and often killed -- by the military government.

All this I already knew. This has been going on for over 10 years now, after all.

Most of the people interviewed by Williams were off camera, their faces hidden for fear of being tortured and killed. And then he interviewed a man who had witnessed some of the most brutal of human rights abuses, and was willing to appear on camera to relate them. Evan asked the man, "Aren't you worried about the result of being interviewed?" The man did not pause more than a second, and he replied that indeed he knew the implications: He would be tortured and killed for it, but it was more important that the world knew.

Another interviewee had given an interview 10 years earlier, and paid dearly for it. Instead of being bitter at Williams, he thanked him -- for helping to get the word out to the rest of the world.

I was reminded of this today when I read about Charter 08 in China. If you don't get to read anything else today, read that article. It is people such as this who represent by simple courage the great hope of humanity. Thank you, Tang Xiaozhao.

More Thoughts on Software Startups

Wed, 10 Dec 2008 18:00:00 -0500

There were a number of things that occurred to me after my recent post on starting a company (and maybe winning a Mac Book Pro in the process), and I’ve also received a number of great comments and ideas from others on the topic. To start with, Rob sent me several links that he really enjoyed. The first is a recent post by Mike Cannon-Brookes, one of the founders of Atlassian, which is shockingly successful self-funded software business, known best for their JIRA and Confluence products (both of which I enjoy using myself!)

Our initial hunches have proven to be correct. The internet has changed how software is distributed, the web has made it possible to be global from day 1, the cost of writing enterprise software has decreased.

The second is a post by Peldi Guilizzon on the history of his young startup (inspired largely by Atlassian!), his reasons for doing it, and his goals:

That’s when I thought to myself: “I gotta get ON this“.


I want to see how much a single person can achieve with an idea, a laptop and the Internet. I want to learn what my limits are. Being the product of just myself, Balsamiq is a tangible representation of “the best that I can do”, which is fascinating to me.

I want to build software that solves real problems, makes people more productive and elicits powerful feelings. I want Balsamiq to be known for its customer service and I want it to be part of a new breed of startups: small, bootstrapped software companies with big ambitions.

What a great vision!

Risk Management on a Grid

Wed, 10 Dec 2008 16:30:00 -0500

This Friday, Brian Oliver is hosting an event in New York City titled Innovations in Risk Management using Oracle Coherence (contact Craig Blitz for more information). Among projects that Brian has worked as an architect on: an algorithmic trading systems at a hedge fund, the web's most popular online betting site, the financial world's highest volume foreign exchange system, and several equities exchanges.

Brian also has architected several of the projects on the Coherence Incubator, including the cross-WAN replication framework that he describes in his latest blog entry. I just got back from New York, where I got to meet with several banks that are already using it, and several more that are preparing to. While it can handle traditional one-way replication with ease (and without any single point of failure "mirroring servers"), it also supports "hot-hot" deployments in which both sites can service requests -- even when they are disconnected; when the sites reconnect, the cross-site replication "catches up", and allows the application to resolve any conflicts that occurred during the disconnect. For banks, this solves the classic pricing problem of having to calculate prices locally in real time, yet to keep the information related to pricing (including the quoted prices themselves) in sync globally.

The latest project to show up on the Incubator: The Coherence Functor Pattern, with full source and documentation. Brian has a lot more in the pipeline for the Incubator; keep an eye on his blog for more details.

How to start a company and win your own Apple Macbook Pro

Mon, 1 Dec 2008 06:30:00 -0500

Have you ever had an idea for something you'd really like to do, but then find a limitless list of lots of reasons why you couldn't do it, why you shouldn't do it, or why you should just wait a while before you do it? I've been struggling with giving birth to such a notion for a while, and I think I'm finally ready to take the plunge and make it reality. Like many ideas, this one began easily enough. I was talking with a local entrepreneur here in Boston about what finally made him pull the proverbial trigger and step out on his own to start a business. At the time, I had just begun to work with others like him to try to share things that I had learned, to lend a helping hand, and to provide a listening ear. (Humorously, as it turns out, the listening ear was always the most valuable thing that I had to offer; it turns out that you can get bad advice from just about anyone.) Over the next few years, I asked the same question often, and was often surprised by the answers. It turns out that there's a surprisingly small gap between the decision to stay in a safe job and the decision to go out on one's own to join a startup or even start a new company of one's own. Often, it came down to a small incident, a conversation overheard, a line from a movie or a presentation, or even the proverbial coin toss. That started me thinking: How many people are a hair's breadth away from trying it? I was soon to find out. Since starting and subsequently selling a company, I've spoken to countless people about their own dreams - and often plans - of starting something new. Some of the ideas and plans might be classified as "challenged", but I've been surprised by how many are truly ingenious. Following the thread to its logical conclusion, I started asking people a simple question: "What's stopping you?" It turns out that there are a lot of good reasons. For example, many people have comfortable jobs that pay them far more than they could find anywhere else; it's truly hard to walk away from a deal like that. I was surprised though by how many bad reasons that there were, such as: I don't know how to write a business plan; I don't know how (or I don't have the necessary connections) to raise capital; I've never started a company; I didn't go to business school; I'm an engineer, not an entrepreneur or an executive. So I set out to slay some of these dragons, and in the meantime a fun idea began to be crafted in my cranium. First the dragons: I don't know how to write a business plan. Don't ever buy the nonsense about a business plan. Yes, at some point you'll need something written down as part of the process of raising venture capital (assuming you go that route), but don't start with a written business plan. Look, there is a name for people who start by writing a business plan: business school students. If you ever need to know which way it is to the university cafeteria, those students may be the best people to follow, but please don't take their advice on business until they've personally run a few into the ground. I've had venture capital partners tell me that they get four hundred business plans each day. I'm going to put this as bluntly as I can: When an investor pulls out their checkbook and asks [...]

Governor's School

Sun, 16 Nov 2008 10:00:00 -0500

In 1988, as a soon-to-be senior in high school, I attended the first Alabama Governor's School. This past Friday, twenty years later, I spoke at the annual luncheon that raises money to support the program. This is what I said. -- When Carolyn called to ask me to speak here today, I wasn't sure what I would speak on. As we talked, she described how the Governor's School has advanced since I attended some twenty years ago. She asked me about my memories of the program, about my university years, and my career. I told her of my years at the University of Alabama, I spoke of my wife and three young children, and I told her the story of how, over the past eight years, I founded and helped to build a successful software company named Tangosol, culminating in its sale a year and a half ago. I spoke with pride about how, over eight years of business, the company had lost only one employee; how we had more than doubled the business every one of those years; how the people that we built the business with had themselves grown and become leaders in their own right. Of it all, Carolyn was most curious about the name of the company, Tangosol, and asked me how that name came to be. What's in a name? It's a question that often occurs to me. I remember several years ago my grandmother's glowing pride when someone sent her an advertisement, cut from a newspaper, for a house that her husband, a builder and master craftsman, had built; the advertisement said simply this: "Home for sale. Built by master craftsman Rufus Purdy." What's in a name? There's room for an awful lot in a name, if you're willing to invest in it. In my case, as I remember it, my schooling was a challenge. I was never a straight-A student, and I struggled just to make the honor role. I often forgot or otherwise failed to complete my homework, and I was labeled a trouble-maker -- apparently correctly so, since as far as I know, I still hold the paddling record at the private school in Pennsylvania where I spent five years. How I ever came to be nominated for or accepted by the Alabama Governor's School remains a bit of a mystery to me -- perhaps one that will hopefully make someone think twice before tightening up the admission standards -- but it is not a mystery without some explanation. What's in a name? Unwind the cord far enough, and perhaps we would find these lines in Oscar Wilde's Helas, from 1881: Surely there was a time I might have trod The sunlit heights, and from life's dissonance Struck one clear chord to reach the ears of God. People have an amazing capacity to survive, to grow, to believe in something larger than themselves, to find hope in hopelessness. Society flourishes for more cause than just the resiliency of the individual; its true strength lies in its ability to pass on its values, and to build and invest in each new generation. I moved to Alabama in 1986, not long after the space shuttle Challenger had imprinted its fiery end on each of our memories. In a modest school of a modest town, I was given the most exceptional of gifts: A clean slate, a fresh start, an open door, an opportunity to excel, and an environment in which my potential truly had value. I cannot possibly over[...]

Coherence Incubator Feedback

Wed, 22 Oct 2008 11:55:00 -0400

A bank customer writes regarding the messaging pattern in the Coherence Incubator:

Beautiful bit of code. I downloaded it, fired it up and 5 mins later had 3000 messsages consumed and produced per sec. People here were pretty impressed. There are a couple of projects in the pipeline in Equity Derivatives which should now use Coherence.

Gotta love it!

Fall Comes, Fall Leaves

Fri, 17 Oct 2008 16:15:00 -0400

I wrote this a few years ago about fall, and just happened to stumble across it today:

I have seen you with your nose pressed up against the glass, staring out the window. The leaves have begun to change in front of your eyes, and I can tell that you are ready for your journey. Is it the change in the air, or the colors on the trees that have sparked your imagination? Each leaf hangs by just a thread of its former life, dangling for one last long moment, before plunging to the earth in a graceful series of swinging arcs. The fall wind tumbles through the leaves slowly, picking and choosing which piles to play with, and still i see your nose upon the window, and your breath steaming upon the pane. You will run like the sun, with the tones of an autumn sunset, and play in the leaves, as all children should. This too can be your world, made just for you, although you never seem to sense that. In your eyes are the hopes and joys of youth, of endless sunsets and long-awaited sunrises, there pressed up against the glass. And then, in an instant only the curtains remain, a slight swaying the only hint of your departure, and then your laughter greets my ears from all directions, as you finally find your home, among the leaves.

Here in Boston, the trees are dressed in their finest colors right now. Beautiful. Simply beautiful.

Coherence Incubator Project

Thu, 16 Oct 2008 10:30:00 -0400

The Coherence Incubator was launched yesterday and announced at the London Coherence SIG. Speaking of the SIG, it was packed -- standing room only -- and lasted for four hours. Brian unveiled several of the patterns documented (with source code) on the Coherence Incubator including:

  • Command Pattern - This is a scale-out and Highly Available distributed implementation of the classic "Command Pattern".
  • Store and Forward Messaging Pattern - This is a scale-out and Highly Available framework for distributed Store and Forward Messaging.
  • Push Replication Pattern - This is a powerful framework for replicating the transactional data in real-time systems from one data center to another; it supports bi-directional WAN replication with application-customizable collision-reconciliation policies.

As for what's next in the queue ... let's just say that it's a project that a few hundred of our customers have been asking for for a while.

See you tonight at the New York Coherence SIG!

London? New York? Get Coherence!

Wed, 15 Oct 2008 08:30:00 -0400

Tonight (Wednesday, 15 October 2008) is the latest installment in our London Coherence SIG. The meeting is already over-subscribed, with people threatening to bring their own seat-cushions and sit on the floor. So what's the big deal tonight? Brian Oliver will be unveiling the Coherence Incubator, including the source code for the two-way WAN replication used by many of the major banks in London and New York.

Speaking of New York, our first New York City Coherence SIG is tomorrow night, and it's also over-subscribed, but come on out and we'll make room one way or another. Maybe it's because the skills are in high demand, or maybe it's just the free food ;-) Brian Oliver will be leaving the London meeting and flying over to speak at the New York meeting, Merrill Lynch will be presenting what they've learned from a number of their Coherence projects, and I'll be speaking as well.

The Sky is Falling and Other News

Mon, 13 Oct 2008 23:00:00 -0400

This morning I received a piece of email titled "The Financial Collapse - What Will Happen Next?" These "sky is falling" articles are becoming far too common, but in a society driven by the relentless search for meaningless extremes, it's hardly surprising. Besides, when things get bad, the natural human response is to imagine that things will get far, far worse, and then start to look for someone else to blame it all on. Here's a brief excerpt from the email to give you a small sense of dire doom regarding the impending complete and catastrophic collapse of our culture:

We will shortly see the collapse of the economies and currencies of the USA, Canada, UK, Ireland, Australia and New Zealand. The speed of this collapse is catching many by surprise. It will happen once their overseas investors withdraw confidence in their economies and withdraw their capital. Without being able to roll over their loans there will be a collapse of their currencies and defaulting on their international debt obligations. They will be blamed for the economic crisis that has engulfed the globe, bringing the hatred of the whole world against them.

It will result in the Anglo-Saxon nations sink into abject poverty; their people face starvation, disease, famine, and abject poverty. Their people will suffer greatly, as their societies sink into anarchy, as law and order breaks down, and society collapses. Their nations will be taken over by their creditors as they try and recover their debts, and their people put into slavery. It will be a time of great suffering and tribulation to its people.

In response, I'd like to make a simple suggestion, a hypothesis, a modest proposal of an idea:

Doomsday predictions are the bubble economy of a depressed mind.

The Germans use the term scheißer. Auf English, we call them shysters. What these people try to sell is their opinion, and we purchase it with the only currency that is suitable for stupid ideas: Email forwarding. Unfortunately, with each forward, we lend these ideas a credence that they would otherwise lack in a normal economy.

Just like the various bubble economies (remember "dot coms"?) were crazy contraptions conceived by our capitalistic culture, these negative bubbles are just as full of hot air and just as lacking in common sense.

Here's my simple suggestion: Use common sense. First, don't fall for the bubble extremes of boom and bust; they are only illusions. Second, don't spend what you don't have; both individually and as a country, we need to pay down our debts and we should learn to save so we'll be prepared for when we have real problems.

OpenWorld: It's a Wrap!

Fri, 26 Sep 2008 01:15:00 -0400

Oracle made some announcements this week that have the industry buzzing. We shipped Coherence 3.4, we announced the WebLogic Application Grid, and we added an option for running our Coherence grid software in cloud environments such as Amazon EC2.

Behind the scenes, the big news for us was the coupling of Coherence with the jRockit Real-Time Java Virtual Machine (JVM) in the WebLogic Application Grid (and also the WebLogic Suite). Using Coherence with jRockit provides the first real-time data grid with deterministic latency. In several demonstrations that I've seen, we achieved latencies that never even reached ten milliseconds, even when the JVM was doing a "full GC".

Well, I've been away from Boston for most of the past month, so it'll be good to get home. I am tired; I had back-to-back meetings for most of the week. It was great to see the excitement around the combined products, and to speak with so many of our customers. Until next time ..

Update: New York CHUG rescheduled

Mon, 8 Sep 2008 21:00:00 -0400

The New York City Coherence SIG was scheduled for 9 October, but it has been moved to 16 October due to a conflict with a holiday. Remember to reserve a spot early so that we can make sure that we have reserved enough space.

DataSynapse Align '08

Mon, 8 Sep 2008 15:30:00 -0400

I'm in Washington D.C. tonight and tomorrow for the DataSynapse Align 2008 conference.

Cross Language: State of the Art in 2008

Wed, 3 Sep 2008 17:30:00 -0400

I've gotten a lot of questions about how we support multiple languages over time without serious forking issues. So far, we have three full implementations of the Coherence Extend client: pure Java, .NET (pure C#), and pure C++. Each of these implementations contain a few hundred thousand lines of code, so it was important to us to have a plan up-front to keep them in sync. There are three key elements in our technical planning that have made this work: Familiarity. The set of public (API) functionality available on all three language platforms is the same, and knowing the API in one language will provide re-usable knowledge for the other language platforms. For example, check out the public C++ API documentation and notice how the vast majority of the API is identical to the Java and .NET APIs. Process. When we change functionality or fix a bug on one platform, the bug-tracking engine (we use JIRA) is correlated with the source control (we use Perforce), and when the issue is closed, we evaluate the issue and -- if appropriate -- we immediately create issues for the other two language platforms and correlate those with the original issue. This becomes a "TODO list" to make sure that any improvements are consistently applied across all language platforms. Framework. The consistency of the programming framework that we use across the three languages is incredible. We invested a lot of time up front (especially in C++) to ensure that we could keep the hierarchy and general design in sync across the language platforms. This results in code that almost always appears to be near-identical across different languages (language-peculiarities aside). Here is one example, starting with the original Java code: public void serialize(PofWriter out, Object o) throws IOException { PortableObject portable; try { portable = (PortableObject) o; } catch (ClassCastException e) { String sClass = null; try { sClass = out.getPofContext().getClassName(m_nTypeId); } catch (Exception eIgnore) {} String sActual = null; try { sActual = o.getClass().getName(); } catch (Exception eIgnore) {} throw new IOException( "An exception occurred writing a PortableObject" + " user type to a POF stream: type-id=" + m_nTypeId + (sClass == null ? "" : ", class-name=" + sClass) + (sActual == null ? "" : ", actual class-name=" + sActual) + ", exception=" + e); } // set the version identifier boolean fEvolvable = portable instanceof Evolvable; Evolvable evolvable = null; if (fEvolvable) { evolvable = (Evolvable) portable; out.setVersionId(Math.max(evolvable.getDataVersion([...]

Still Going

Sun, 31 Aug 2008 18:30:00 -0400

It appears that I haven't blogged in a while. Yes, well there is an explanation: Blogging is about two things: ego and inertia. It's about ego, because people who blog are delusional (or idiotic) enough to believe that anyone else on the planet will benefit from reading what they have to say, and it's about inertia, because once you are in the habit of doing it, you can often keep doing it. Unfortunately, once you get off the treadmill, it can be hard to get back into the habit. (I will also consider accepting that I am just vainly arguing that my ego isn't large enough.) At any rate, I haven't been twiddling my thumbs. Yes, I have been stuck on hundreds of long conference calls. Yes, my inbox is slightly larger than the Wal-Mart data warehouse. Yes, I do go to meetings to plan schedules for conference calls to decide on what the agenda should be for meetings. But none of that is really important, is it? And here's why: Behind the scenes at an undisclosed location, a team of sequestered engineers has been diligently working to deliver the next generation of data grid software, and the release candidate (Coherence 3.4 RC-2) is now available for download. With 32- and 64-bit cross-platform C++ support, 32- and 64-bit .NET support for C#, VB, ASP.NET and all of the other .NET languages, and with Java support for Java SE and EE (JDK 1.4, 1.5, 1.6 and beyond -- including our own JRockit Real-Time JVM), we are now able to deliver a consistent API across virtually every language and platform that our customers are deploying on, all the way up to the IBM Z Series and all the way down to commodity blades -- and everything in-between. With over 300 improvements in the Java and .NET products, and over 200,000 new lines of code in total across the various language platforms, this is the largest Coherence update ever. Here are a few of the upcoming related events: JavaZone - 16-18 September - I'll be in Norway speaking at JavaZone. Apparently they failed to get me registered on the "please do not allow back into the country" list after my last infamous visit. Oracle OpenWorld - 21-25 September - OK, 75 thousand people descend on San Francisco for this conference, which is just crazy! There are nine sessions on Coherence at OpenWorld this year. Check them out! New York City Coherence SIG - 9 October - Based on our very successful London user group, and after many requests from customers, we have started a New York user group. Mark the date, and reserve a spot early -- if this is as big as the London group, we're not sure if we have reserved enough space. London Coherence SIG - 15 October - We continue to build our very successful London user group; this is definitely the meet-up to be at if high scalability, trading systems and stock exchanges are in your vocabulary. So it's been a busy year. And a productive year. But our best is yet to come. Peace. [...]

Targeted Advertising

Wed, 4 Jun 2008 12:30:00 -0400

There are evil people in this world. You know the type that I'm talking about. I'm talking about people that you'd never let your kids around. People that you'd never buy a house in the same town if you knew that they lived there. People whom you watch closely out of the corner of your eye when you see them in a restaurant, wary of where they are in relation to your children at all times.

Yes, I'm talking about people who do targeted Internet advertising. People who somehow figure out stuff about you that cookies were never supposed to tell them. People who know what illicit web sites (such as Fox News and the Drudge Report) that you (yeah, you) visit when you think that you're not being watched.

Have you ever wondered just how much they know about you? Have you ever wondered if these websites leak your age, your gender, or ever more personal details about you to their advertisers? Well, wonder no more:


Yup. Age. Gender. Even the receding hair-line.

Is nothing sacred anymore?

Careful Subtlety

Wed, 30 Apr 2008 22:30:00 -0400

Sometimes I wonder how authors can wrap up a thought, an idea, an emotion, a taste, a scent, a state of mind, a picture or a scene, and bundle it into those specific words and in that specific order that allows us to unpack it even hundreds of years later, and to feel and see and smell what the author felt and saw and smelt .. and sometimes even enjoy a chuckle with the author.

This is one of my favorite examples, from T.S. Eliot. Every time I read it, I am sitting there in the restaurant with him (in his chair!), but feeling not only his part, but also that of the waiter. It is called Hysteria:

As she laughed I was aware of becoming involved in her laughter and being part of it, until her teeth were only accidental stars with a talent for squad-drill. I was drawn in by short gasps, inhaled at each momentary recovery, lost finally in the dark caverns of her throat, bruised by the ripple of unseen muscles. An elderly waiter with trembling hands was hurriedly spreading a pink and white checked cloth over the rusty green iron table, saying: 'If the lady and gentleman wish to take their tea in the garden, if the lady and gentleman wish to take their tea in the garden ...' I decided that if the shaking of her breasts could be stopped, some of the fragments of the afternoon might be collected, and I concentrated my attention with careful subtlety to this end.

Careful subtlety. Cute. The euphemistic understatement.

Coherence for C++

Fri, 25 Apr 2008 13:45:00 -0400

Brian Oliver already spilled the [Java]beans, or more appropriately let the C++ out of the bag, so there's not much more to say, other than that as of last night, the product download is available to our beta partners for select private preview. This is a cross-platform, 32- and 64-bit, multi-threaded and thread-safe, pure C++ implementation of Coherence, with support already completed for most of the Portable Object Format (POF).

Here's a few quick stats on this little project:

  • 120,000 - the number of new Lines of Code (LoC) in the C++ implementation
  • 0 - the number of third-party libraries and third-party Lines-of-Code used
  • 4 - the number of integration issues encountered

The last statistic is incredible. Literally dozens of sub-projects, built by eight different engineers, totaling well over one hundred thousand lines of code, came together with only four integration issues! That means that there were only four hiccups between grabbing the completed sub-projects and having a built and running product!

Here's some of the ways that the project achieved this:

  • Well-spec'd interfaces, most of which were cemented before implementation began.
  • Very high rates of code coverage in the unit tests.
  • Fully automated builds and regression tests (CI).
  • Full peer review of code.

Still, to have only four integration issues for a project of this size is almost unbelievable!

GridToday article on Data Grids

Mon, 7 Apr 2008 10:15:00 -0400

From an interview posted today on GridToday with me on the topic of Data Grids, Coherence, etc.:

"One of things about going from being fairly exotic to being sort of mainstream is that a lot of the considerations our customers had when we were working with them a few years ago are not the same consideration they have today. Our customers have certainly focused much more on the manageability and the monitoring, what we refer to internally as 'Project iPod' -- this idea that just because you’re controlling 10,000 CPUs, it doesn’t mean it has to be as complex as configuring 10,000 servers. For many of these applications, it should be as simple as pressing the 'play' button. If it needs 10,000 CPUs to do that, it should be able to allocate, deploy, start up, configure, etc., everything it needs to do across extreme-scale environments. And just as easily, when it’s done with what it has to do, if it’s no longer needed, it should be able to fold itself back up and put itself away."

Warning: It's a long interview, but I never was one to say a few words .. ;-)

Dell to buy Apple

Tue, 1 Apr 2008 10:50:33 -0400

Momentum Continues for Merger of Dell and Apple Institutions, Customers, Reseller Group See Benefits in Combination Round Rock, Texas, 31 March, 2008 Momentum and support for Dell Inc. (NYSE:DELL) merger with Apple continued to grow today as several institutional investors, a large industry association for resellers and customers indicated their support of the merger. Today's announcements included: Banc One Investment Advisors intent to vote in favor. Steve Salopek, a Banc One fund manager, said the money management firm is voting for the deal because a combined Dell and Apple is stronger than a standalone Dell. "By combining the two, Dell acquires intellectual property in the media player, phone and fruit business," Salopek said, adding that there are also significant cost reductions to be had. Banc One owned 5.1 million Dell shares as of the end of the year. The State Teachers Retirement System of Ohio told CNET it planned to vote its shares in favor of the deal. The Ohio teachers group, which owns 3.5 million Dell shares and 4.3 million Apple shares, said it met with both sides before making its decision earlier this week. Representative Laura Ecklar said the staff of the teachers' fund made its decision based on several factors, including the amount of integration planning the two firms had done, their confidence in the projected cost savings as well as faith in black turtleneck-wearing management. The ASCII Group, Inc. (ASCII), the world's largest community of independent solution providers and value-added resellers (VARs), today announced its support for the merger. "It is in the best interests of Dell and Apple shareholders to vote in favor of this merger," said Alan Weinberger, chairman and chief executive officer of The ASCII Group. "It is simply a good business decision. Combined, the new Dell will have a VAR force in the small- and medium-sized business sector second to none. This market already is a very large and important one for both companies. These 'feet-on-the-street' partners provide hardware, software and services to the small business market and MP3 player aficionados and give a definite edge to manufacturers whose customers are left out in the cold by direct sellers whose only goal is to make the sale." Deloitte Consulting today announced the results of a comprehensive, independent survey of 2,354 Information Technology (IT) decision-makers on the proposed merger. A strong majority of survey respondents -- all of whom are Dell and Apple customers -- view the merger of Dell and Apple as having a positive impact on their business. About Dell Dell Inc. (NASDAQ: DELL) listens to customers and delivers innovative technology and services they trust and value. Uniquely enabled by its direct business model, Dell is a le[...]

Dylan Thomas

Wed, 20 Feb 2008 18:30:00 -0500

Dylan Thomas on the spoken word:

Too much poetry to-day is flat on the page, a black and white thing of words created by intelligences that no longer think it necessary for a poem to be read and understood by anything but eyes.

Sun wanted me to post it

Mon, 18 Feb 2008 19:30:00 -0500

OK, it's not a "cat blogger day" button, but it'll do:


I'm speaking at JavaOne this year on .. oh yeah, everyone can probably guess what I'd be speaking on. It'll be fresh though, I promise.