links for 2008-12-05

Bob Rhubart | Dec 5, 2008 02:00 -0700

Learning is a 2-Way process…

hans.wiggerman | Dec 4, 2008 23:28 -0700

You learn something new everyday. ..   yesterday I was in a customer visit  and we had a discussion about the architecture of the solution build for this customer. Along the way we chat about Cloud computing.  In fact I had the opportunity to learn the basics and benefits from this new IT buzz.  Although challenging, I will not go to the details in this blog  and leave this to the tech community.

The learning aspect is more relevant for this blog.  

My objective in every customer meetings is to tell about support, Share learnings,  how we work and how 'they' can make efficient use of 'the machine'. In fact, my approach is to take a case/sr that did not meet the expectations, do an internal (AAR) review and explain the learning to the customer. This can avoid falling in the same trap and is an opportunity to  improve the process...   as a free-gift back they tell me about the cloud computing ;-) 1+1=..3

I understand that it's difficult to do for all customers so we have regular (free) training sessions in support.  The agenda for this sessions can be found on our Oracle Support website.  

If you want a more personal approach we should have a chat. Looking forward to your comments but realize I am looking for learning as well ;-)

Hans








Learning is a 2-Way process…

hans.wiggerman | Dec 4, 2008 23:28 -0700

You learn something new everyday. ..   yesterday I was in a customer visit  and we had a discussion about the architecture of the solution build for this customer. Along the way we chat about Cloud computing.  In fact I had the opportunity to learn the basics and benefits from this new IT buzz.  Although challenging, I will not go to the details in this blog  and leave this to the tech community.

The learning aspect is more relevant for this blog.  

My objective in every customer meetings is to tell about support, Share learnings,  how we work and how 'they' can make efficient use of 'the machine'. In fact, my approach is to take a case/sr that did not meet the expectations, do an internal (AAR) review and explain the learning to the customer. This can avoid falling in the same trap and is an opportunity to  improve the process...   as a free-gift back they tell me about the cloud computing ;-) 1+1=..3

I understand that it's difficult to do for all customers so we have regular (free) training sessions in support.  The agenda for this sessions can be found on our Oracle Support website.  

If you want a more personal approach we should have a chat. Looking forward to your comments but realize I am looking for learning as well ;-)

Hans








Legacy

mary.ann.davidson | Dec 4, 2008 16:49 -0700

I have been rather silent on the blog front for some time. The reason has not been a happy one. I went through something very painful this summer that all of us inevitably experience: the death of a loved one. In my case, it was my best friend of 17 years – though Kerry was more than that, truly. As my sister says of him, echoing Alec Guinness in Star Wars, “there has been a disturbance in The Force.” Someone who was larger than life leaves a void in many lives, most especially mine. For awhile, I was tied up in his illness, then the funeral, and then I just could not pick up my virtual pen because it is hard to live through this much less write about it. The blog entry I really meant to write (about force multipliers) kept being crowded into the back of my mind, because I really needed to write about my friend Kerry and the meaning of legacy.

The occasion of death is a forced milestone in that it is a logical time to assess what matters in life. And what seems to matter to us during our lives is often not what matters after one’s course has run. There’s a story about a man reading that John D. Rockefeller had died and asking a companion, “How much money did he leave?” The answer was, “All of it.” All the things we think matter in terms of accomplishments, press clippings, portfolio, and so on, are dust in the wind once we are gone. Even having a building named after you is not all that permanent. The sages of Israel taught of Herod’s temple in Jerusalem: "Whoever has never seen the building constructed by Herod, has never seen a beautiful building in his life." Herod’s temple took over eighty years to build, yet the Romans utterly destroyed it in a matter of days. All we have left is a retaining wall of the temple structure and a holy day to mourn its destruction:Tisha B’Av.

No wonder that Jesus wept over Jerusalem and advised his disciples, "Do not store up for yourselves treasures on earth, where moth and rust destroy, and where thieves break in and steal. But store up for yourselves treasures in heaven, where moth and rust do not destroy, and where thieves do not break in and steal. For where your treasure is, there your heart will be also.”

Kerry did not leave a legacy in things the world values. He left no assets. No property. No portfolio. No bank account. No buildings named after him. No children. Yet he left a very rich legacy in many hearts. People who loved him. Lives he changed, mine in particular. To name two things near and dear to my heart, Kerry taught me to surf, and talked me into buying my house in Idaho. Oh, and committed me to buying a dog without asking (said dog, Thunder, is howling for a treat a I write this). How can you thank someone for giving you a life, or for helping make you who you are? I can’t really imagine what my life would have been like without him, except that it would have been so much poorer.

The number of calls, cards, emails, and so on I have gotten from people who knew him and cannot believe he is gone astonishes and humbles me. And the way they talk about him is a reminder of what really matters to people. One friend said that Kerry was the only person he could ever trust with money – after years of being burned by partners in business. Kerry not only made my friend good money, but was giving away his “trade secrets” by teaching my friend to do what he did in the markets. The financial institution he cleared paper through called up (to a person) to tell me how much Kerry had meant to them though none of them had met him personally: “We talked every day for four years and we didn’t just talk about the stock market; we talked about life.”

Particularly as we watch the recent economic meltdown caused – if I may be indulged here – by a number of people at all levels of society engaging in financial deception or delusion (such as buying a house one knows very well one cannot afford and that is bigger than one needs, or taking equity out to finance a lifestyle one cannot afford) – Kerry stood out. He always “paid cash or did without.” An old-fashioned value that the world needs more of.

He also had the most honest business model that I know of, one in which he took part of the risk that he assumed for his clients. I get lots of cold calls from money managers. I tell them if they are willing to work on the same basis as Kerry did, I will consider it Kerry made 25% of closed out net capital gains, which means if he lost clients money, he had to make it back for them and be in the black before he made any money for himself. None of these MMLs (money management leeches) take my offer, and typically stutter that my counter-offer is not reasonable. I reply that they want to get paid regardless of whether they earn me money or lose it all. The risk, in other words, is all mine, and none of it is theirs. What, one asks, is fair about that? Kerry only did well if his clients did well. A “square deal meal” kind of guy, an increasing rarity in a world where so many are without honor or integrity, and where many are happy to take the reward on the upside but want a bailout on the downside of risk (which economists rightly call a “moral hazard”).

Back to my point, a legacy of changed lives is all that we can really leave behind us that matters. Yet for some reason, in the software industry, “legacy” as a term seems to only be uttered with a sneer. “That is a legacy system” is almost always said with disdain. Why? What’s wrong with old code? Actual users (remember them?) think “legacy” means “something that works, that meets my business needs and is paid for and I am happy with it so I want to keep using it if possible.” Software kahunas think “legacy” is a pejorative term, and that new is always better, old is always bad, and we all need to upgrade “just because.” (The last software upgrade I went through required me to install all new client software with really poor instructions – uh, is there some reason I should have to magically know to rename a file to BLAHBLAH.exe?) and I absolutely lost it. It was the weekend Kerry died and the thing that caused me to break down and “lose it” was the software upgrade, not Kerry’s death. The three most dreaded words in the English language, as all parents learn to their dismay on Christmas Eve at 3AM, is “some assembly required.”)

Merriam Webster defines “legacy” as follows:

1 : a gift by will especially of money or other personal property : bequest 2 : something transmitted by or received from an ancestor or predecessor or from the past

I’ve talked about the first meaning of “legacy.” Now, to the second. Granted, not everything in the past is worth pulling forward and celebrating, but many things are. At the very least, the passage of time allows us to pan through historical dust to find nuggets of permanent value. The second meaning of legacy reminds us that not everything new is wonderful simply because it is new. In particular, the belief that “new and improved” equates to progress is almost a de facto religious belief among many technologists. Yet never has the half-life of technological progress been shorter. Who among us really remembers (or cares) who invented the FOOBAR protocol? Especially when the FOOBAR protocol will be overtaken by something else within a few short years.

Many of the things that historically matter to us now were not obvious to the citizenry of the time (does anybody remember the number one tentmaker in Jerusalem circa 30AD? Yet most of us have at least heard of an obscure carpenter/rabbi named Yeshua). Western civilization, for example, has percolated along quite happily on the strength of the ideas and writings of (if I may be forgiven) innumerable dead white males. Has anyone in the 21st century approached the stature of Rabbi Yeshua or other dead white males (Aristotle, Plato?) We may only know in hindsight. Despite the compressed lifecycle of so much we work with and work on, we should resist the temptation to engage in hagiography on the strength of anything short-lived or of recent occurrence, because we will probably be wrong about who and what really mattered.

An example of near religious ecstasy around technology is all the hoopla around cloud computing, if anyone can decide what it actually is. If by cloud computing, someone really means “software as a service,” that’s not actually a “new” idea at all. It’s been around for eons (remember Compuserve?). And many software vendors offer hosted applications and make a nice business out of it, too. Software as a service makes sense in some scenarios (is that alliterative, or what?). I personally outsource buying anything electronic to my brother-in-law, who does extensive market research and then tells me what to get. “Gizmo-buying-as-a-service” works for me.

If cloud computing is the idea that all your “stuff” will magically be “out there somewhere, in the cloud,” well, that is looney tunes for obvious reasons. Just think basics. I still have cookbooks if for no other reason than I can “fire them up” without waiting for software to load, and I would really hate to have to access recipes in the cloud. Open book, read recipe, book does not need rebooting, ever. Sometimes I do look for recipes online when I realize (in Idaho) that the cookbook I had with my pecan bar recipes is in San Francisco. So, “recipes as a service” might be useful sometimes – but I sure do not want the recipe server to be down when I am in the middle of cooking Thanksgiving dinner.

More to the point, the “it’s stored wherever, and you don’t need to know where” hype around “everything will be in the cloud” is technogobbledygook. There are many things you aren’t going to want to store “somewhere out there,” for good reasons, especially if you have no idea how secure it is and it is something you find valuable. Imagine someone saying, “Mrs. Smith, we can’t actually tell you where your daughter Janie – who you dropped off at day care this morning - will be during the day, she is out there in the daycare cloud someplace, running around, we are not really sure where. But trust us, when you stop by at 5 to pick her up, we’ll have her at the right place.” Yeah, right. Not surprisingly, security people are not buying “somewhere, out there” model of cloud computing. Nobody should. At the very least, instead of having somewhat defensible enclaves of security, you’d have to make everything secure, which is simply not possible.

I was reminded in a frightening way recently that people worship new technology without in many cases either analyzing what problem it solves or whether the benefits are worth the risks. Specifically, I recently heard a highly placed official in the Department of Defense opine about the fact that DoD wants to embrace Web 2.0 because (to paraphrase), “We need to attract and keep all these young people and they won’t work here if we don’t let them use Facebook in the workplace.” What are people going to use Facebook for in the Defense Department, one wants to know? <”Hi, my name is Achmed and I am an Al Qaeda operative. I like long walks on the beach and IEDs. Will you be my friend?” I don’t think so.>

The official went on to say that industry really needed to secure all these Web 2.0 technologies. At that point, I could not contain myself. I asked the gentleman if the Department of Defense was planning on taking container ships and retrofitting them to be aircraft carriers, or buying Lear jets and making them into F-22 Raptors? No, he said. Then why, I offered, does DoD think that the IT industry can take technologies that were never designed with security in mind and “secure them?” Why is IT somehow different that we can, ex post facto, make things secure that were never designed for the threat environment in which they are now deployed? People don’t use a road bike to mountain bike, I don’t use my short board to surf big waves (if I surfed big waves, that is, which I don’t. But if I did I’d get a really expensive blank and get someone to shape me a Big Wave Board, aka “rhino chaser”).

Your “tools” need to be designed for the environment in which they are going to operate. If they aren’t, you are going to have trouble my friend, right here in River City (with apologies to Meredith Willson). To put it even more succinctly (more apologies to Meredith Willson): “You gotta know the territory.” Meredith Willson was not writing about security when he wrote The Music Man, but “you gotta know the territory” is as succinct a description of a security weenie’s responsibilities as ever there was.

Mind you, I understand that the idea of collaboration is a powerful one and, if it is appropriately secure, can be a powerful construct. We read, for example, that the intelligence community has created an internal Web 2.0 construct called Intellipedia (along the same lines as Wikipedia). It makes sense that, instead of having one expert on, say, Syrian antiaircraft defense, that that person’s knowledge can be written down and accessed by others. In a way, that kind of collaboration facilitates “legacy” because someone who knows something valuable can share it with others far more easily than through one-on-one oral transmission. But there is a big difference between “let’s embrace collaborative constructs” and “let’s allow insecure and unsecurable Web 2.0 technologies into a classified environment.”

The key to the new is remembering the universal truths of old – legacies. This is particular true in security in that, while the attack vectors may change as the technology does, there are principles of security that do not change (“trust, but verify” works just as well for IT security as for arms control). Remembering and applying “legacy truths” will help us to avoid getting wrapped up in the latest technical fads as something “new and different” when really, it is just the same security issues wrapped in shiny new code.

There’s a great story from Jewish lore about King Solomon challenging a servant to find a magic ring for him, magic in that a happy man wearing it would become sad, and a sad man would become happy. After a long search, the servant brought to King Solomon a ring engraved, “This, too shall pass.” Technologists would do well to remember that story.

I admit to being more backward looking than forward looking. But this much I know: the “old legacy” values that Kerry lived by are still timeless ones. “Honor thy father and mother.” “I am the Lord thy God, you will have no other gods before me.” “For where your treasure is, there your heart will be also.” Kerry died penniless, but richer than anybody else I know. That he gave of himself to so many people is the legacy he leaves us, and I for one feel so blessed to have known him and to have been cherished by him. As for grief, “this too, shall pass,” and someday I will only remember the happy memories.

The only accolade – the only legacy - that matters at the end of your life is the one that I know Kerry heard from his Creator in the early hours of August 17: “Well done, thou good and faithful servant.”

E Keli, ‘o ku’u pu’uwai ‘oe, mau loa.

Remembering Kerry:

http://www.mtexpress.com/index2.php?ID=2005122267

Ua lawa.


Book of the Month: Tried By War: Abraham Lincoln as Commander in Chief by James M. McPherson

A really fascinating look at how Abraham Lincoln influence the military course of the Civil War, devising strategies that (once he could find generals who would adopt them) made a critical difference, such as attacking the Confederate lines at two different places at the same point in time. You also have a new appreciation (and frustration) of what Lincoln went through to find generals who understood how to win. And lastly, I have a new appreciation for the element of moral courage Lincoln displayed in prevailing against long odds. In 1862, the Democratic controlled Congress was whining that the war was taking too long, costing too many lives, and the North should sue for peace at any price, including taking the issue of slavery off the table. Had it not been for Lincoln’s moral courage in staying the course, the world would look very different indeed. Leadership is, among other things, taking the long moral view and not merely the expedient political one.

McPherson also wrote the Pulitzer Prize-winning Battle Cry of Freedom.

http://www.amazon.com/Tried-War-Abraham-Lincoln-Commander/dp/1594201919

It’s that time of the year again. A really lovely album of Christmas music (not all of which is in Hawaiian) is:

http://www.mele.com/music/artist/brothers+cazimero/cazimero+christmas+favorites/

Herod’s temple:

http://en.wikipedia.org/wiki/Herod's_Temple

About Meredith Willson:

http://en.wikipedia.org/wiki/Meredith_Willson

This, too, shall pass:

http://en.wikipedia.org/wiki/This_too_shall_pass

New Whitepaper: Options for Reducing E-Business Suite Database Sizes

Steven Chan | Dec 4, 2008 15:11 -0700

I have yet to encounter a database that ever got smaller.  Like waistlines and the US national debt, all databases seem destined to increase in size.  The E-Business Suite is no exception:  as we add more product capabilities and your business grows, so do your Apps databases.

Oracle-supplied solutions to managing Applications database size fall into two categories:  data growth control methods and data management methods.

Growth Control Methods

  • Archiving and purging
  • Database compression

Data Management Methods

A new Oracle whitepaper discussing these topics is now available:

Screenshot of Oracle Information Lifecycle Management Assistant used with E-Business Suite database tables

Roccaforte on Oracle Exadata

I caught up with Ray Roccaforte at the annual conference of the user group on Business Intelligence, Data Warehousing, and Analytics (BIWA). Of course, Oracle Exadata was a big topic of discussion at the conference, so I (Jeff) wouldn't let Ray go until he gave the Oracle Database Insider his quick take on the technology and its use for people in the BIWA SIG user group:

SmartHelp: UPK Delivered In-Application Support

bill.x.miller | Dec 4, 2008 14:27 -0700

Most Enterprise Applications contain some sort of In-Application Support. I use the term most because there are some that don't contain any sort of help for an end user. There are also end-users that prefer to one help button to launch a help feature, no matter what the application is. For either of these situations, Oracle's User Productivity Kit has a solution: SmartHelp.

SmartHelp is your one-for-all, in-application support tool that became available with UPK 3.1.5.


No matter if your browser is FireFox or IE, SmartHelp installs on the browser toolbar and can be configured to launch one or more than one UPK Player Package. This means that system administrators no longer have to configure help links for individual applications. It also means that end users only have to know one location to launch their UPK content.


Let's examine the steps necessary to install SmartHelp.

  • Publish your UPK Player Package to a web server

  • Locate the /stdhemi/hemi directory and copy/rename the odstdcontenturl.js file to odstdcustomurl.js

  • Modify the array string for the variable Gkod.Variables.OD_APPLICATIONSCRIPTS_URL to point to the appropriate Player Package url. (Follow the example in the file)

  • Install the SmartHelp button via the following url: http://server/directory/stdhemi/hemi/browsertbutton/browsertbuttonsetup.html

  • Close and restart the browser
  • At this point, your browser has been setup to use SmartHelp. You can navigate throughout your enterprise application and launch the UPK Player from this button.


    Which OCI8 DLL to use in PHP 5.3

    christopher.jones | Dec 4, 2008 12:40 -0700

    As I foreshadowed in a now distant post, Pierre has installed Oracle 11g Instant Client on the PHP Windows build box and updated the OCI8 build scripts for PHP 5.3 (and PHP 6).

    PHP 5.3 now has two mutually exclusive versions of the OCI8 extension DLL:

    php_oci8.dll


    • Built with Oracle 10gR2 client libraries. These libraries connect to Oracle Database 8.1 through to Oracle 11. (The DLL will also work with Oracle 11g libraries, but no DRCP connection pooling support is available)


    • enable in your php.ini with extension=php_oci8.dll


    php_oci8_11g.dll


    • Uses Oracle 11g client libraries. These libraries connect to Oracle Database 9.2 through to Oracle 11.


    • Allows you to use Oracle 11g connection pooling


    • Enable in your php.ini with extension=php_oci8_11g.dll


    The two DLLs have the same user script API that do the same thing. You only need to (and only can) enable one at any one time. Choose the one that matches your Oracle client libraries.

    Php_oci8_11g.dll is obviously a "new thing". Since PHP 5.3 has already entered its Alpha stage, NOW IS THE TIME TO TEST OCI8.

    In a related inflexion point change for PDO_OCI, the old php_pdo_oci8.dll (built with Oracle 8 libraries) has been dropped in PHP 5.2.7 and 5.3. Windows builds now only include php_pdo_oci.dll, which built with Oracle 10gR2 libraries. (Through the magic of Oracle library compatibility, this DLL will also work with Oracle 11g Instant Client).

    Thanks to Pierre, Rob, and Elizabeth S for help the getting the builds updated, to John Mertic for updating the MSI installer, and to Steph for some early correspondence on the topic.

    BPM Suite components + Studio feedback

    alex.toussaint | Dec 4, 2008 10:05 -0700

    As you probably know Oracle has several software products and suites. Coming from BEA, I am still learning everything there is available around here. On my product area Oracle BPM Suite, there are five main components: Oracle BPM, BPEL PM, BAM, Rules, and Web Center (restricted license for Process Portals). This is a very rich set of software tools with a wealth of capabilities able to cover the most demanding and intense BPM projects.

    Here is short cut to each component of the BPM Suite - always check OBPM Interoperability Matrix before you start a project: 

    1. Oracle BPM - Download
    2. Oracle BPEL PM - Download
    3. Oracle BAM - Download
    4. Oracle Rules (Oracle Business Rules is included in the Application Server and also part of SOA Suite) - Download : Download
    5. Oracle WebCenter - Download

    Not too long ago, we completed the launch of OBPM 10gR3, and now the team is heads down working on the next major release. In previous releases I had a chance to focus on SOA related items, easy of use features, usability, and integration with other products. This time around I will be focusing  most of my time on the Studio IDE. More precisely on the move from the Eclipse environment to the Oracle JDeveloper framework. This will be a lot of work and will keep us pretty busy.

    If you have any thoughts, requests, specific comments, or feedback please send them my way. (alex dot toussaint at oracle dot com)

    Cheers,

    --alex

    Web 2.0 Honeycomb

    David Dorf | Dec 4, 2008 08:00 -0700

    If you caught my article in RIS News entitled Web 2.0 Shapes the Next Generation of Enterprise Retail Software, then you have some idea of Oracle Retail's direction for user interface design. But here's a little more detail for those that are interested.

    Honeycombs.JPGThe concepts popularized by the term "Web 2.0" have already changed the way people interact on the Web, and soon they will change the way retailers use software. Leveraging Web 2.0 concepts for the benefit of business is branded Enterprise 2.0, or E20 for short. Retailers should be thinking about how E20 concepts can improve productivity and thus their bottom line.

    Using software has changed over the years starting with green screens, where users interacted with just a keyboard and there was a high learning curve, but power users could accomplish much. Then client-server applications appeared, and users had access to a rich, graphical experience that included a mouse. Then in the interest of universal access and easier maintenance, applications transitioned to browser-based interfaces at the expense of cut & paste, drag & drop, and fluid interactions.

    But it’s still not enough. Users want the best features of all three approaches. They want the “power user shortcuts” of green screens, the graphically rich interactions of client-server, and the convenience and ubiquity of browsers.

    In 2004, Peter Moreville described user experience in terms of seven traits arranged in a honeycomb. In 2007, Gene Smith used the same graphical treatment to describe the traits of social networks (like Facebook, Linkedin, and our own Oracle Mix).

    These ground-breaking diagrams help shape the way software designers think about the user experience.

    Applicability to Retail
    The most obvious place where these concepts have a big impact is through web stores. By incorporating reviews, pictures, rankings, tags, and affinities to name a few, retailers are able to position their e-commerce site as a product research hub. Amazon has been the leader in this area, but sites like Circuit City and Sears offer similar experiences.

    Some collaborative features at Amazon include allowing customers to upload their own photos of products, customer inspired lists (“Listmania”), and the daily blog. The “More Top Picks for You” carousel is a great way to display products, similar to flipping through albums on your iPhone.

    And these concepts might also apply to mobile devices and kiosks, allowing customers already in the store to get the information they need. But how could Web 2.0 impact enterprise software for retail?

    Data Integration
    A “mashup” is the mixing of data from different sources. My favorite example of a mashup is Zillow, the real-estate site. They combine neighborhood maps with tax assessments, real-estate listings, and historical home sales in order to provide homeowners with an estimate for the value of their home. This could all be done in an algorithm behind the scenes, but by graphically depicting all this information together on a map, they provide homeowners the context necessary to understand the estimate and tweak it if necessary.

    This is the direction retail software is heading as well. Data from different sources is being integrated together and graphically represented on dashboards to help merchants, planners, store management, and executives better understand the state of the business.

    Collaboration Makes Life Easier
    The typical merchant, planner, or supply chain specialist relies on others to provide raw data, suggestions, approvals, and confirmations. Too much time is spent waiting. Software should bring people together to more efficiently communicate by using the appropriate mode of communication. The phone, email, and instant messaging should all play a part, and each should be at the user’s fingertips. The concept of “presence” allows people to better communicate.

    Mediums like blogs, wikis, tagging, twitter, syndication, and widgets should help users exchange information in a timelier manner thus reducing the time it takes to make good decisions.

    Processes vs. Applications
    Traditionally, retailers have considered functionality in terms of applications. If you’d like to create an item, you use the merchandising application; if you want to create a promotion, you use the pricing application. Applications are a convenient way to package software, but they are not the way people think. People, on the other hand, think about the series of steps they must follow in order to complete a task. This concept was captured in software as the “wizard” and was a popular method for configuring applications.

    When retailers work, they think in steps. They want to do the “item induction” workflow or the “create promotion” workflow. These tasks likely involve several applications and include many people. Merchandising by itself doesn’t get work done, but doing the item induction workflow does.

    Combining Concepts
    Honeycomb%20-%20Workspace.gifThe next generation of enterprise retail software is focused less on applications and more on integrated business processes with collaborative features that make it easier to benefit from the group’s expertise. Web 2.0 technologies facilitate the user experience across these workflows, and generally increase user productivity.

    Oracle is bringing this approach to bear on the retail industry through products like Oracle Retail Workspace, Oracle Beehive, and its SOA-approach to application integration. The next-generation user experience honeycomb to the right represents the combined traits of the other two honeycombs, with “valuable” in the center. Everything about the user experience must continue to lend value to the overall business. In the end, that’s how the user experience must be measured.

    PHP Brasil ‘08 - Trip Report

    christopher.jones | Dec 4, 2008 07:17 -0700

    Last week's PHP Brasil '08 conference was held at the "UNIFIEO" University in Osasco, a region of São Paulo.

    São Paulo is a large, busy center of commerce. People work hard. Everyone at the conference seemed to have multiple jobs and interests. The well stocked magazine kiosks situated wherever people frequented show there is great a thirst for information and discussion.

    The conference was organized under the leadership of Er Galvão Abbott with community input, and in conjunction with a logistics team from "Tempo Real Eventos". The conference was very interesting and successful.

    Todd Trichler and I attended from Oracle, courtesy of Oracle Technology Network. The other "international" speaker was Luke Crouch from SourceForge.

    The conference opened up on Thursday with multiple training sessions. The main sessions were on Friday and Saturday, with up to ten parallel tracks. The talks were held in lecture theatres in the main building adjacent to the exhibition hall. It was pleasing to have "stadium seating" rather than stuffy hotel ballrooms.

    The exhibition hall was arranged around a basket ball court with a life-size PHP ElePHPant dominating one end. The booths looked great - no black curtains on aluminium poles - they were stylishly designed and each had a small flower/plant arrangement. Despite it being exam time we had a number of students and many of the teaching staff come through the hall.

    Having plush, soft-toy PHP ElePHPants on the Oracle booth really attracted attention. We gave a few away at my Friday keynote, and raffled off the others at the Install Fest. Sorry there weren't enough for everyone.

    My keynote covered all the good stuff: why databases are important, what Oracle offers so you don't have to re-invent the wheel, how to use PHP & the OCI8 extension, and I finished with connection pooling, a feature which shows Oracle's commitment to PHP. Slides are on OTN's PHP Developer Center (Slide direct link). We had a nearly full house in the largest lecture hall - I appreciate the compliment of this.

    The simultaneous translation team was very professional and a pleasure to work with. Marli, who handled my keynote solo from a little booth at the back, had googled and read up in advance on my topic. When we met, she had a list of words and phrases ready for clarification.

    Luke Crouch gave the Saturday morning keynote. He had got a friend to translate his slides to Portuguese, making it flow smoothly. I caught the first part of his talk, before having to head back to the Oracle stand.

    The Saturday morning break was filled by a PagSeguro-sponsored cheerleader show (do they call it a "cheer"?) and photo opp at the PagSeguro stand. The squad are apparently regulars at tech events. This brief, non-PC event was later offset by the refined culture of a caricature artist drawing sketches of attendees on PHP Brasil letterhead paper. He had a steady stream of sitters all the rest of the day.

    In the afternoon, our PHP Install Fest was squashed into a couple of hours. Normally we run these in the evening and keep showing technology and feature until the last attendee staggers out. We showed Oracle Enterprise Linux, Oracle VM, (http://linux.oracle.com/ and http://www.oracle.com/technologies/linux/), Oracle Database and the PHP OCI8 extension. I didn't get time to show APEX or SQL Developer, but the pages linked to have lots of info about these useful tools.

    Friday & Saturday evenings were spent in a local bar which served Chopp Brahma beer and tasty meat or cheese skewers to the throng of the conference locals. A pair of guitarists played and sang. I got to see a litttle Samba dancing, but the conference crowd, were, well, geeks, and only got roused to sing the choruses of their favorite songs. The obligatory "get the vistors to dance" session wasn't too painful, thanks to the Tempo Real ladies (you know who you are) counting the steps for us.

    The hotel for the conference was a nearby Best Western. It was new, comfortable, had great internet access and served great pizza. The folk staying there were bussed down to UNIFIEO in the mornings, and we were generally chauffeured about for meals and entertainment. Taxis were efficient and cheap for quick journeys too. Thanks to Anderson and his brother for doing the bulk of chauffeuring.

    Thanks to everyone who visited the Oracle stand, came to our talks, and generally networked with us - there are too many of you to name. Some of you have already exchanged emails with me. Keep in touch.

    Like many conferences, people spent time chatting and making contacts. Because of the number of concurrent sessions at any time, and following the general conference trend, some sessions had just a small, hard core of attendees. This is a challenge for all future conferences: they need to evolve new methods of information exchange.

    If you get a chance to attend next year's PHP Brasil conference (or conferences), go! But don't forget to take the time to visit other parts of Brazil to enjoy this varied, colorful part of the world.

    I was shooting B&W film, which will take me a while to process, but the few phone-camera snaps I took are at http://www.flickr.com/photos/cjbj/sets/72157610622868236/

    Er Galvão was busy running around attending to details but he, too, managed to get a few pictures http://www.flickr.com/photos/25904735@N08/sets/72157610630846968/

    Danielle, from the PagSeguro stand, took a lot of photos of the exhibition hall. I imagine she'll put some photos up soon at http://www.flickr.com/photos/melodani/.

    If you posted any photos, send me email.

    Obrigado!

    CedarCrestone Channel - Northwest Energy - Why Upgrade PeopleSoft and Utilize Talent Management

    toby.nakamoto | Dec 4, 2008 06:21 -0700

    Listen to the CedarCrestone Channel and listen to Northwest Energy's CIO Keith Cooke talk about how and why he upgraded to 9.0. He had done evaluations of other vendors but at the end of the day it was more cost effective and would receive more from an upgrade to utilize the backbone and talent management applications. His main goal was to partner with HR and enable them to be more to be a strategic department. He runs through the process of evaluation to implementation and the return he got out of it. Interesting point with different types of "workforce" now at Northwest Energy he took full advantage of the person model of the current release of PeopleSoft HCM.

    Take a listen - click here

    Web Oriented Architecture using Oracle software

    Take a look at this presentation. It describes the Web Oriented Architecture and explains why it needs a datagrid at the backend (Oracle Coherence), in order to scale the possible unpredictable "network effects" of one's own application.

    In this presentation I introduce all features of Oracle middleware offering which enable the WOA. They are:

  • Weblogic Portal REST API
  • Weblogic Portal Disc Framework
  • Weblogic Portal “Portlet Publishing”
  • Weblogic Server support for Rest
  • Weblogic Server support for pub-sub server
  • Ensemble for WebCenter Interaction
  • I'd like to know your comments/feedback.

    BI Publisher Demoshelf

    @lex | Dec 4, 2008 04:38 -0700

    Just wanted to share a link to a most useful resource with you:


    links for 2008-12-04

    Bob Rhubart | Dec 4, 2008 02:00 -0700

    Adventures in Netlink

    andy.grover | Dec 3, 2008 23:55 -0700

    Ever spent hours writing code and then found out it's not needed? I just had the pleasure. I wrote some code using netlink (via libnl) that takes an interface name ("eth0") and returns the ipv4 addresses associated with it, but the bug I thought I was fixing was not there, so I'm making a blog entry out of it :)

    Libnl has documentation. Autogenerated documentation -- which is better than nothing, but it's really an API reference, not a tutorial. Of course these days everything is in a git repo so I was able to muddle through by looking at the source, but of course this shouldn't be needed, in an ideal world...

    First, include some headers. This assumes you have libnl-devel RPM installed, and don't forget to link against libnl with "-lnl":

    #include <netlink/route/link.h>
    #include <netlink/route/addr.h>


    Here's the main function:

    static uint32_t parse_iface(char *ptr)
    {
           struct nl_handle *sock;
           struct nl_cache *link_cache;
           struct nl_cache *addr_cache;
           int ifindex;
           uint32_t result = 0;
           struct rtnl_addr *addr;
     
           sock = nl_handle_alloc();
           nl_connect(sock, NETLINK_ROUTE);
     
           link_cache = rtnl_link_alloc_cache(sock);
           addr_cache = rtnl_addr_alloc_cache(sock);
           ifindex = rtnl_link_name2i(link_cache, ptr);
           addr = rtnl_addr_alloc();
     
           rtnl_addr_set_family(addr, AF_INET);
           rtnl_addr_set_ifindex(addr, ifindex);
     
           nl_cache_foreach_filter(addr_cache, (struct nl_object *)addr, nl_cache_callback, &result);
     
           rtnl_addr_put(addr);
     
           return ntohl(result);
    }

    This code is connecting to the netlink socket to receive route-related information. The rtnl_*_alloc_cache() calls basically fill those caches with all the information from the kernel related to links (aka net interfaces) and addresses (all of them, whether ipv4, ipv6, appletalk, or whatever). So now all the info we need is in our address space, and we just need to sift through it!

    Luckily, we can cross-reference the two separate caches because ifindex refers to the same interface in either cache. The code then gets the ifindex for the passed-in name (e.g. if ptr was "eth0").

    The next part was kind of weird, due to being so flexible that simple things like what I wanted to do become nonobvious. The way you filter a cache is by creating an instance of the thing in the cache, and then only filling in the fields that you want to match the results. That's what the next few lines do, alloc an addr and fill in the limiters I wanted: ifindex (so I just get addresses for the one interface) and the family (limit to ipv4 addresses only).

    libnl is designed to handle multiple returns for everything. This isn't dumb -- an interface can still have more than 1 ipv4 addresses that will get returned, so it has a callback interface. You give it a function and it calls it once for each result. I named my function nl_cache_callback, let's take a look at it:

    static void nl_cache_callback(struct nl_object *obj, void *arg)
    {
           struct nl_addr *addr;
           uint32_t *ipv4_addr = arg;
     
           /* only get addr in 1st callback */
           if (*ipv4_addr)
                   return;
     
           addr = rtnl_addr_get_local((struct rtnl_addr *)obj);
     
           *ipv4_addr = *(uint32_t *)nl_addr_get_binary_addr(addr);
    }

    Like I said, this could be called more than once but I really just want the first one, so I am passing an initially-zero variable in the context argument, and if it's already set I bail out. The last wrinkle is that a struct rtnl_addr can hold a variety of different address types, so if I didn't already know I'd asked for only 32-bit ipv4 addresses, I'd have to use the accessor methods to find out the address's length and type. But since I do, I just copy the addr's 4 bytes into my 4 bytes, and that's it. Back in the first function, it's a quick ntohl(ipv4_addr)[1] and Bob's your uncle[2]!

    Have fun!

    [1] libnl also has a helper function that fills in a sockaddr directly, pretty nice
    [2] I actually have an uncle named Bob! Your results may vary.

    New Operations, Configuration and Batch Guides available for OUBI V2.2

    Anthony Shorten | Dec 3, 2008 19:41 -0700

    A new Operations and Configuration Guide for OUBI V2.2 is available from Metalink (Id 753297.1).

    This documentation includes the latest advice in these areas and covers the configuration settings. These documents are companions to other documentation available from MetaLink location in the Knowledge Base section

    WebLogic Server, JMS, Store-and-Forward and the C API

    brett.lomas | Dec 3, 2008 19:41 -0700

    I had to do some work around Store-and-Forward (SAF) using the WebLogic JMS C API for a customer recently. I found some of the C API documentation and examples have disappeared during the migration of BEA to Oracle (or perhaps this is a reflection of my lacking search skills, or indeed my persistence with search results) so this blog details my results in the hope it might be useful to someone else.

    Assumptions
    This blog entry assumes the following
    1. You have a proficiency in WebLogic Server and JMS
    2. You know about Java and C coding

    Notes
    While this blog reflects work done using WebLogic Server 10gR3, it should work with all WebLogic Server version 9 and above (for SAF).

    Introduction
    The JMS C API uses JNI to access the standard WebLogic JMS Libraries. The API follows the same flow as the Java equivalent (funnily enough) where a context is used to look up the connection factory and destination and the connection factory creates the connection etc etc.

    Setting up your Environment
    To use the C JMS API you need to set up your environment, this blog assumes Unix/Linux but the same principles apply for Windows users.
    1. Set up the CLASSPATH to include, the weblogic.jar file (found in /wlserver_10.3/server/lib - the path will change depending on the version you're using) or you can use the wlsjmsclient.jar instead of the full jar file if you wish.
    2. Set up the library path so your executable knows where to find the jvm and jni shared libraries. This equates to setting the LD_LIBRARY_PATH to something like /wlserver_10.3/server/native/linux/i686:/jdk160_05/jre/lib/i386/server/.

    The C Code
    Once you have done this you're ready to work on the code. The follow code 'skeleton' shows how to publish a message to a JMS Queue.
    1. Get the context using JmsContextCreate
    2. Use the context to get the connection factory using JmsContextCreateConnectionFactory and the destination (the queue) using JmsDestinationCreate
    3. Get the connection to the JMS Server using JmsConnectionFactoryCreateConnection
    4. Create the session using JmsConnectionCreateSession
    5. Create the producer (or consumer) using JmsSessionCreateProducer (or check me)
    6.Create the message (in this case a Text Message) using JmsSessionTestMessageCreate
    7. Send the message using JmsProducerSend

    When using the C API it is critical all handles returned from the API functions are closed or destroyed correctly using the appropriate -Destroy or -Close functions, failing to do so could cause memory leaks (don't depend on GC, especially when using the C API).

    Compiling
    When compiling you need to make sure you
    1. Include the WebLogic C API header files (located in /wlserver_10.3/server/include)
    2. Link the libjmsc.so, libjvm.so, and libpthread.so with your code.

    Here is an example command (using gcc):
    gcc -I/usr/local/bea/WLS103/wlserver_10.3/server/include -L/usr/local/bea/WLS103/wlserver_10.3/server/native/linux/i686/ -L/usr/local/bea/WLS103/jdk160_05/jre/lib/i386/server -ljmsc -ljvm -lpthread -o JMSClient JMSClient.c

    You could use make to automate a lot of this.

    Running the Binary
    Run the binary as you would any other linux/unix binary, while making sure the library path and classpath is set correctly

    Configuring the Store-and-Forward
    Once you have the simple producer working and publishing messages to a queue or topic you are ready to setup the SAF.

    You need to export the SAF Context file as per the SAF documentation. Once you have done this you need to make sure you use weblogic.jms.safclient.jndi.InitialContextFactoryImpl as the JNDI provider (passed as a parameter to the JmsContextCreate function and the URI (or connection string) needs to be the location of the SAF Context you exported. Make sure you have either weblogic.jar or wlssafclient.jar in the classpath.

    Because the SAF Sending Agent runs in a separate thread to your main thread there can be some latency between your producing the first message and it getting to the destination. This thread also means you need to make sure you don't exit the program too quickly, otherwise nothing will be sent (you keep exiting before the SAF Sending Agent can initialise)!

    Download Example

    You can download an example I have created here, this is only meant as an example and there is no warranty, use it at your own risk.

    References
    1. WebLogic JMS C Documentation
      a) JMS C Documentation
      b) The WebLogic Server 10gR3 JMS C API
    2. WebLogic Store-and-Forward Client Documentation

    OpenSource Distributed Computing Alternatives

    sandeep.phukan | Dec 3, 2008 12:34 -0700

    1. Apache Hadoop is a framework for supporting High Volumes of data in a distributed environment. The framework is impressive but the only problem I see is the use of SSH for communication across nodes. This might be required to prevent packet sniffing and IP Spoofing (a big concern in distributed systems). The additional problem I see is that Hadoop uses a point to point connection. It can be improved by using Reliable Multicast protocols.


    2. Terracotta is a very simple yet powerful Java based clustering technology that uses loadtime and runtime byte code injection methods to create clustered JVMS that may be local or remote. The Distributed Shared Memory looks impressive and can be integrated with existing POJOs with little or no code changes! It is an API less alternative. It does not involve RMI and only the object state deltas are communicated to reduce traffic. There are no benchmarks though and it would be interesting to see how well it scales.

    3. JavaParty is a neat Extension that enables parallel programming over a set of distributed memory machines without the overhead of RMI,Socket based communication and message passing. Problem is...it uses Pre-Compilers. Scary!!!

    Search on ....

    Rules from BPEL: Decision Service Usage Patterns Explained (10.1.3)

    Phil Varner | Dec 3, 2008 12:20 -0700

    Introduction

    The integrated way to use Oracle Business Rules (OBR) from a BPEL process is via the Decision Service component through a Decide activity. Chapter 18 BPEL Process Integration with Business Rules of the Oracle BPEL Process Manager Developer's Guide explains the basic steps for doing this, but there's always more information than can go in the official documentation. This post explains in greater detail how to use the various decision service configurations.

    Stateful vs. stateless

    By default, the decision service is invoked as a stateful service. This allows the same decision service instance to be called more than once within the same BPEL process instance and maintain state between calls. For example, we may retrieve some data from a database, make a call to a stateful decision service, branch in our process based on the result, access the database again, and call the stateful decision service again with our additional data.

    If you are only making one call to a decision service within a BPEL process using the "Assert facts, execute rule set, and retrieve results" operation type, consider changing the decision service to be stateless. This will improve performance because a stateful service invocation creates a new rule engine instance for each call, whereas a stateless service maintains a pool of services that can be reused. Thereby, the stateless service call has lower CPU overhead for creating the service instance and does not require additional memory because the rule engine instances already exist as part of the pool.

    Ruleset invocation type

    The Ruleset invocation type allows you to select from several Operation types, as described in section 18.4.3.1 "Mapping Input and Output Facts to BPEL Variables" of the BPEL Developer's Guide. The most common usage is the "Assert facts, execute rule set, and retrieve results" type as a stateless session. The other operation options are usually used for stateful sessions, whereby we want to maintain the state of the decision service between multiple calls, for example, if we wanted to use facts generated in the rules engine during one call as available to another call.

    RulesetOptions.jpg

    The primary advantage of using the Ruleset invocation type is it's simplicity, as the assert, execute, and retrieve operations are easily defined with in the Decide component. The primary disadvantage of using the Ruleset invocation type is that only rules from one ruleset will be evaluated. You cannot evaluate multiple rulesets against the same facts or use a pattern by which rules in one ruleset causes additional ruleset to be evaluated via the pushRuleset mechanism, because only the named ruleset is created in the rule engine instance.

    Note that if you have multiple calls to the same decision service within a BPEL process, even these calls do not maintain state between them, it is preferred to use a stateful session. This way, if the rules are modified during the lifetime of the process, the process will still use the rules which existed when the process started. Otherwise, there is a possibility that different rules can be used for different invocations of the decision service. Multiple calls to a stateful decision service that do not (or should not) maintain state between them should be invoked with the operation "Assert facts, execute rule set, retrieve results, and reset the session", so any facts in the rule engine are removed between calls.

    Function invocation type

    The most useful invocation type in the decision service is to call a function defined in the rules dictionary. This allows the user greatest flexibility in how the rules are used. However, this pattern also requires the user to perform some actions which can be automatically performed with the Ruleset invocation type.

    FunctionOptions.jpg

    There are two operation types for the Function invocation type, "Execute function" and "Execute function and reset the session". These have equivalent functionality when called as part of a stateless decision service. When called from a stateful decision service, resetting the session will cause all facts to be retracted, as with the similar Ruleset operation type.

    A function called from the decision service by this invocation type must meet the following requirements:


    1. return a XML Schema element type
    2. accept one or more XML Schema element types as parameters.

    It is necessary that the return and parameter types be XML Schema element types rather than XML Schema complex types. If complex types are used, the functions will not appear in the dictionary browser and therefore cannot be selected.

    The body of this function must do three things:

    1. assert the input parameters as facts
    2. push one or more rulesets onto the ruleset stack
    3. call the "run" method

    An example of a function which can be called from the decision service is shown below:

    DecisionServiceFunctionExample.jpg

    Function body:

    assertXPath("com.oracle.fmw.obr.test1", email, "//*");
    pushRuleset("RULESET_1");
    run();
    return email;

    This is a very simple function body. The function body can assert any number of parameters and push any number of rulesets onto the stack.