Ph: 8008582025

/dev/null

Cameron Purdy
Friday Sep 26, 2008

OpenWorld: It's a Wrap!

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 ..

Monday Sep 08, 2008

Update: New York CHUG rescheduled

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

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

Wednesday Sep 03, 2008

Cross Language: State of the Art in 2008

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(),
                evolvable.getImplVersion()));

        }

    // write out the object's properties
    portable.writeExternal(out);

    // write out any future properties
    Binary binRemainder = null;
        if (fEvolvable)

                {
                binRemainder = evolvable.getFutureData();
                }

        out.writeRemainder(binRemainder);
}

Here's the C# code:

public virtual void Serialize(IPofWriter writer, object o)

{
    IPortableObject portable;
    try
    {
        portable = (IPortableObject) o;

    }
    catch (InvalidCastException e)
    {
        string typeName = null;

        try
        {
            typeName = writer.PofContext.GetTypeName(m_typeId);

        }
        catch (Exception)
        {}

        string actual = o.GetType().FullName;

        throw new IOException(
                "An exception occurred writing an IPortableObject"
                + " user type to a POF stream: type-id=" + m_typeId

                + (typeName == null ? "" : ", class-name=" + typeName)

                + (actual == null ? "" : ", actual class-name=" + actual)

                + ", exception=\n" + e);
    }

    // set the version identifier

    bool       isEvolvable = portable is IEvolvable;
    IEvolvable evolvable   = null;

    if (isEvolvable)
    {
        evolvable = (IEvolvable) portable;

        writer.VersionId =
                Math.Max(evolvable.DataVersion, evolvable.ImplVersion);

    }

    // write out the object's properties
    portable.WriteExternal(writer);

    // write out any future properties
    Binary remainder = null;
    if (isEvolvable)

    {
        remainder = evolvable.FutureData;
    }
    writer.WriteRemainder(remainder);

}

And finally, here's the C++ code:

void PortableObjectSerializer::serialize(PofWriter::Handle hOut, Object::View v) const

    {
    PortableObject::View vPortable;
    try
        {

        vPortable = cast<PortableObject::View>(v);
        }

    catch (Exception::View e)
        {
        String::View vsClass;

        try
            {
            vsClass = hOut->getPofContext()->getClassName(m_nTypeId);

            }
        catch (...) {}

        String::View vsActual;

        try
            {
            vsActual = Class::getClassName(v);

            }
        catch (...) {}

        COH_THROW_STREAM (IOException,
                "An exception occurred writing a PortableObject"

                << " user type to a POF stream: type-id=" << m_nTypeId
                << ", class-name="
                << (NULL == vsClass ? "N/A" : vsClass)

                << ", actual class-name="
                << (NULL == vsActual ? "N/A" : vsActual)

                << ", exception=" << e);
        }

    // set the version identifier
    Evolvable::View vEvolvable = cast<Evolvable::View>(vPortable, false);

    bool            fEvolvable = NULL != vEvolvable;
    if (fEvolvable)

        {
        hOut->setVersionId(std::max(vEvolvable->getDataVersion(),
                vEvolvable->getImplVersion()));

        }

    // write out the object's properties
    vPortable->writeExternal(hOut);

    // write out any future properties
    Binary::View vBin;
    if (fEvolvable)

        {
        vBin = vEvolvable->getFutureData();
        }

    hOut->writeRemainder(vBin);
    }

Notice anything? It's almost identical code across all three languages. The initial code quality is extremely high, and the cost of porting fixes and new functionality from one language to another is minimal.

By the way, if you want to format your Java or C++ code into HTML for posting, check out this handy online formatting tool. (Unfortunately, the style sheet on my blog overrides the formatting.)

Sunday Aug 31, 2008

Still Going

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.

Wednesday Jun 04, 2008

Targeted Advertising

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:

[image]

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

Is nothing sacred anymore?

Wednesday Apr 30, 2008

Careful Subtlety

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.

Friday Apr 25, 2008

Coherence for C++

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!

Monday Apr 07, 2008

GridToday article on Data Grids

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 .. ;-)

Tuesday Apr 01, 2008

Dell to buy Apple

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 News.com 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 leading global systems and services company and No. 34 on the Fortune 500. For more information, visit www.dell.com or call 800-858-2025.


Permission to use quotations was neither sought nor obtained.


FORWARD-LOOKING STATEMENTS

This document contains forward-looking statements that involve risks, uncertainties and assumptions. If any of these risks or uncertainties materializes or any of these assumptions proves incorrect, the results of Dell and its consolidated subsidiaries could differ materially from those expressed or implied by such forward-looking statements.

All statements other than statements of historical fact are statements that could be deemed forward-looking statements, including predictions regarding the outcome and certification of the vote on the merger or the closing of the merger; statements regarding future improvement of Dell generally or specifically its profitability, earnings, revenues, synergies, accretion or other financial items; statements about the plans, strategies, and objectives of management for future operations, including the execution of integration and restructuring plans; any statements concerning proposed new products, services, developments or industry rankings; statements regarding future economic conditions or performance; statements of belief; and statements of assumptions underlying any of the foregoing.

The risks, uncertainties and assumptions referred to above include the actual certified results of the vote on the proposal to issue shares of Dell common stock in connection with the merger; the ability of Dell to retain and motivate key employees; the timely development, production and acceptance of products and services and their feature sets; the challenge of managing asset levels, including inventory; the flow of products into third-party distribution channels; the difficulty of keeping expense growth at modest levels while increasing revenues; the challenges of integration and restructuring associated with the merger or other planned acquisitions and the challenges of achieving anticipated synergies; the possibility that the merger or other planned acquisitions may not close or that Dell, Apple or other parties to planned acquisitions may be required to modify some aspects of the acquisition transactions in order to obtain regulatory approvals; the assumption of maintaining revenues on a combined company basis following the close of the merger or other planned acquisitions; and other risks that are described from time to time in Dell's Securities and Exchange Commission reports, including but not limited to Dell's annual report on Form 10-K, as amended on January 30, 2008, for the fiscal year ended October 31, 2007 and Dell's registration statement on Form S-4 filed on February 5, 2008.

Dell assumes no obligation and does not intend to update these forward-looking statements.

Wednesday Feb 20, 2008

Dylan Thomas

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.

Monday Feb 18, 2008

Sun wanted me to post it

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

speaking at JavaOne '08

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.

Azimuth

While digging through some more old files, I found this one, one of my favorites, titled simply Azimuth.

Only ask and i would tell you
every moment i would say
hold the sun there at its azimuth
or tear my heart away.

Only speak and i would listen
countless hours every day
sing to me while light remains
or tear my heart away.

The sun turns green, she turns to leave
a moment's whisper, let it be
we hold the sun upon the ocean
or sink into the sea.

As a small explanation: When I was a child watching a sunset while standing on the shore of a great lake with my father, he told me that the last color of the sunset is green, just before it slips behind the horizon.

Reading it out loud, one of the things I always notice is how the last line feels like it is missing a syllable or two, even though it matches the previous quartets. I always wonder what is missing, and what the subject is. Should it have said "or we sink into the sea," or perhaps "or let it sink into the sea." I suppose that is the riddle.

Saturday Feb 16, 2008

Rilke on Poetry

I was sorting through a decade of accreted files that had been bequeathed from one computer notebook to another as some form of ritualistic baton-passing as each notebook (or hard drive) had in turn given up its ghost -- or at least had lost favor in my perpetual quest for the latest and greatest technology.

At any rate, I found my stash. No, not that kind of stash. I found a stash of Rilke. This one piece is called "For the Sake of a Single Poem", and is from a collection called "From The Notebooks of Malte Laurids Brigge", by Rainer Maria Rilke:

... Ah, poems amount to so little when you write them too early in your life. You ought to wait and gather sense and sweetness for a whole lifetime, and a long one if possible, and then, at the very end, you might perhaps be able to write ten good lines. For poems are not, as people think, simply emotions (one has emotions early enough) -- they are experiences. For the sake of a single poem, you must see many cities, many people and Things, you must understand animals, must feel how birds fly, and know the gesture which small flowers make when they open in the morning. You must be able to think back to streets in unknown neighborhoods, to unexpected encounters, and to partings you had long seen coming; to days of childhood whose mystery is still unexplained, to parents whom you had to hurt when they brought in a joy and you didn't pick it up (it was a joy meant for somebody else --); to childhood illnesses that began so strangely with so many profound and difficult transformations, to days in quiet, restrained rooms and to mornings by the sea, to the sea itself, to seas, to nights of travel that rushed along high overhead and went flying with all the stars, -- and it is still not enough to be able to think of all that. You must have memories of many nights of love, each one different from all the others, memories of women screaming in labor, and of light, pale, sleeping girls who have just given birth and are closing again. But you must also have been beside the dying, must have sat beside the dead in the room with the open window and the scattered noises. And it is not yet enough to have memories. You must be able to forget them when they are many, and you must have the immense patience to wait until they return. For the memories themselves are not important. Only when they have changed into our very blood, into glance and gesture, and are nameless, no longer to be distinguished from ourselves -- only then can it happen that in some very rare hour the first word of a poem arises in their midst and goes forth from them.

I am not always sure what to think when I read that, for Rilke wrote many thousands of lines of poetry, and much of his poetry is exquisite; he is certainly one of my favorite twentieth century poets. Perhaps he did not need to take his own advice, or perhaps he simply lived many lifetimes within his life. Either way, the imagery in this piece is simply stunning. That was his gift. Always.

Saturday Feb 09, 2008

Code Reviews

We had C++ code reviews going on a good portion of the week, and so when someone sent me this comic, it gave me a good chuckle:

wtf? code review

Too true. Classic.

(Via OS news via Hal.)


Archives
« October 2008
Sun Mon Tue Wed Thu Fri Sat
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
             



Links
Referrers


The views expressed on this blog are my own and do not necessarily reflect the views of my employer.
Content copyright 2002, 2003, 2004, 2005, 2006, 2007 by Cameron Purdy. All rights reserved.


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser