Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

bdg gives away a Video iPod

Here I am on the last day of BEA Participate awarding a Video iPod to Niren Patel, who accepted the winning iPod on behalf of his coworker Karl Cepull. Congratulations!

Categories
bdg

Chris Bucchere Interviewed by the Sloan (MIT) School of Management

sloanLast week I had the pleasure of being interviewed by former Plumtreevian and soon-to-be-graduate of MIT’s Sloan School of Management, John Osborne. Following the interview, he submitted this great write-up, which I have posted below. Enjoy!

Background

Chris Bucchere grew up in the San Francisco Bay Area and studied computer science at Stanford University. After graduating from college, he spent five years working for Plumtree Software as a developer and implementation consultant focusing on integration and customization projects at customer sites. In 2002, he founded Bucchere Development Group (BDG), an independent consulting organization focused on helping Plumtree customers with implementation, integration, and training. BDG operates out of the DC Metro Area and San Francisco. This past week, I talked with Chris about how he identified his market and got his company running.

How did you identify the market? And get your first customer?

Chris commented that he didn’t put forth a lot of thought toward identifying the market. He had just quit his job and was moving to Washington, DC. He started calling all customer contacts he had worked with while at Plumtree. Since Plumtree had more consulting work than it could manage, a number of customers asked Chris to fill in the gaps. Chris signed on to do a six month engagement at Merck in the UK.

How did you fund BDG?

Chris leveraged the money he earned consulting for Merck to get BDG officially up and running. He structured the firm as an LLC, hired an operations manager and another consultant. Since that time, BDG has generally been able to fund itself through revenue. In times of greater financing need, Chris has turned to credit cards which—when exploited properly—can offer a low 1% interest rate.

Chris also noted that customer funding is emerging as an interesting source of capital. At the moment, one of his customers is providing the funding for a custom add-on. The customer wants the add-on themselves, but also wants BDG to be able to resell the product to other customers.

What do you do to ensure continued growth?

One of Chris’ major growth opportunities came serendipitously when BEA Systems acquired Plumtree Software. Chris quickly ramped-up on the BEA suite and became a consulting partner. Being a BEA partner opened up more potential customers and projects. Now BDG is a value-added reseller for BEA, a position that provides BDG a new channel for income. At the moment, BDG employs seven full-time staff to meet it customer obligations.

How do you drive new business?

BDG has released a number of small products as open source. This strategy has help generate new consulting engagements and get the firm name out. BDG is also considering developing more closed source add-ons which it can sell to existing customers.

What were the biggest challenges, and what would you do differently now?

Chris identified staffing as his single biggest challenge. He commented, “For me, staffing is harder than selling new business.” Chris struggled to find seasoned consultants. He therefore turned to college campuses. BDG recruits new college graduates and then runs them through its own six month training program, leveraging the same training materials it sells to customers.

Generally, what characteristics make entrepreneurs different?

Chris echoed the conventional wisdom about entrepreneurship. In short, folks who want to start new enterprises need to be self-confident and passionate about their work. And, above all, they need to be willing to take risks.

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

BEA Participate Rapidly Approaching

All of us at bdg are starting to get excited about BEA Participate! As you already know, we’re sponsoring this year’s ALUI and ALBPM event and I’m giving a demo of some slick integration between ALUI (ALI and ALI Collaboration), ALDSP and ALSB that illustrates how AquaLogic can be used to implement an SOA.

We’ll also be giving away some cool — yet practical — gizmos that will be sure to brighten your day. Literally.

Be sure to come by the bdg booth, pick up a free gift, and enter to win this year’s grand prize — a 30 Gb Video iPod, in bdg black (of course).

Whether it’s at my talk/demo, at the bdg booth or anywhere else, we look forward to seeing you at the conference.

Categories
bdg dev2dev Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Portals and SOA: Portals in a Service-Oriented Architecture

I’ve been invited to give the following talk at BEA Participate:

Why is a Service-Oriented Architecture important to an IT infrastructure and what are the elements and products needed to build out an SOA? These questions answered, plus a discussion on how portals are the practical starting point to leveraging SOA.

Quite honestly, the title and abstract make it sound like an invitation to engage in a lively game of buzzword bingo, but I assure you this talk will be light on the trite — you won’t hear me use the acronym SOA more than once or twice — and heavy on the real deal, rubber-meets-the-road stuff about how mere mortals/human beings are actually accomplishing the sort of things that SOA evangelists are preaching these days.

So, here’s what you can expect: I’ll talk a bit about some of the challenges of building integrated user experiences in today’s enormously complex and heterogeneous IT environment and show how a software developer — without superpowers — can piece together an integrated true-to-the-principals-of-SOA application using ALUI, ALDSP (Data Services Platform) and ALESB (Enterprise Service Bus). This will culminate in an actual, real-life demo.

I will of course make sure to sacrifice a chicken to the Almighty Goddess of Demos or do whatever else I have to do to make sure my demo doesn’t crash. Scratch that, I’ll just run it on Linux and everything will be fine.

So, all joking aside, if you have any ideas for items you’d like me to include in (or exclude from) my talk, please post your comments here. I’ll be sure to give anyone who makes a good suggestion a “shout out” during my presentation. They’re actually giving me a whole hour this time, so they’ll be room for plenty of tomfoolery, geekspeak, silly anecdotes and still time to answer your insightful questions at the end. As one of my good friends and business partners said following my talk at last year’s BEA World,

you never know what to expect during one of [Chris Bucchere’s] talks.

I’m not sure exactly what he meant, but of course I took it as a compliment.

In closing, while we’re on the subject of BEA Participate, I just wanted to say thanks to Christine “Obi” Wan for giving me the opportunity to present and, more importantly, for putting together such a great-looking agenda, which you can review if you like, because now it’s posted on the BEA Participate site.

In the meantime, do your best to convince the powers that be at your company/organization that they will finally discover the secret to “leveraging SOA” if they send you to this conference. Also, please don’t mention that every past Odyssey has had several open bars.

Comments

Comments are listed in date ascending order (oldest first)

  • Working with Aqualogic we all know how it’s easy to plug in our portlet into Aqualogic. We don’t need Aqualogic portal running on our own computer to do this, we don’t need special IDE, we don’t need upload wars into portal. It took time to explain this to my experience J2EE collegaes that got some experience with IBM Websphere. Here what they do there:
    http://www-128.ibm.com/developerworks/websphere/techjournal/0410_barcia/0410_barcia.html
    A lot of steps pretty much the some but have a look at step 11. Here is the core difference. So at least one benifit of SOA is that we don’t need to do step 11.

    Posted by: Bryazgin on April 13, 2007 at 7:03 AM

  • >Quite honestly, the title and abstract make it sound like an >invitation to engage in a lively game of buzzword bingo True, I have the some issue. In my article (for russian development network) I want to stress SOA architecture of Aqualogic, but I don’t want to use SOA word. Audience is pretty techical so they all pretty much feed up of this word. Hmm, may be I will end up with this:
    Avoid nightmare of step number eleven !
    At least, “what the hell this guy talking about?” will be more predict reaction. 🙂

    Posted by: Bryazgin on April 13, 2007 at 7:25 AM

  • Hi Dmitri! Thanks for your insightful comments.As I’m building the demo for my talk, I’ve noticed that these SOA tools encourage you to loosely-couple everything. And that’s a good thing. As you pointed out, ALUI fits into this nicely with its loosely-coupled portlet architecture. The evil “Step 11” (too bad it wasn’t “Step 13”) is: “Select the Browse button and navigate to the WAR file for your portlet, then select Next (Figure 17).” Step 11 has some pretty awful implications for the enterprise. First off, it assumes that everything is Java, which, as much as I love Java, is just wrong wrong wrong in the heterogeneous enterprise. Secondly, it tightly couples your portlets to your portal, which is contrary to SOA.As an aside, I was listening to some Web 2.0 podcasts in the car the other day, and this guy who worked on Google Maps talked about “seams” in an architecture. To paraphrase, he basically said that everyone misuses the word “seamless.” Seams, just like in the textile industry, are critical to enterprise architecture. Just as seams hold swaths of fabric together and separate one bit of fabric from another, they also help define boundaries in the enterprise architecture that are equally critical to SOA. Without seams, everything must be homogeneous — applications must be bought from the same vendor, run on the same OS, be written in the same language, etc. — and this is completely contrary to the reality of enterprise software and systems and completely anti-SOA.

    To illustrate how not being “seamless” is actually a good thing, I’ve designed a demo system that involves bits of LAMP (Linux Apache MySQL PHP), bits of Java, bits of .NET and bits of Adobe Flash all held together with seams built with ALDSP, ALESB and ALUI. I’m still working on the technical side of things, but the use case is simple: a sales rep wants to quote his customer. Behind the scenes, his company is running a LAMP CRM server, a Flash/SQLServer product database, a .NET portal, and a Java-based Collaboration Server. Using a hybrid of ALDSP, ALESB and Java and .NET web services, the user experience is easy and seamless, but behind the scenes, it’s the powerful seams supported by ALDSP and ALESB that make this not only possible, but fairly straightforward.

    If you’re interested in hearing more, register for BEA Participate and [shameless plug]come to my talk[/shameless plug]! By the way, I’m co-presenting with Joseph Stanko, the BEA Engineering Manager responsible for the development of Ensemble (formerly known as Project Runner) — he will run several slides to help you understand the theory behind SOA and I will show the reality of how the AquaLogic stack truly enables SOA in the enterprise.

    Posted by: bucchere on April 14, 2007 at 6:07 AM

  • Alas, I’ve finally finished my demo. I had some configuration issues with ALSB, but ultimately they boiled down to the interface between the keyboard and the chair, i.e. human error. I had the proxy service calling the business service, which, in turn, called the proxy service again. You should have seen the utter wasteland this little tidbit of mutual recursion made of my machine. Actually, I was impressed — Java would spit out a JVM_Bind error once it exceeded some internal maximum, but ALSB (running on WLS 9.2) would actually keep running. Nice.Anyway, now that I’m past all that, I have an ALDSP layer over two disparate data sources (one MySQL DB containing CRM info and one HSQL DB containing product info) exposing data through netui/beehive to a single ALI portlet. (The nifty little portlet uses script.aculo.us to show an interesting new take on the age-old concept of master-detail.) I also included an Adobe Flex-driven portlet. The two portlets use some client-side IPC (inter-portlet communication) to exchange info and then they call a proxy service on ALSB that takes info from both sources and creates a Word document (in the form of a sales quote). The business service also uploads this document to ALI Collaboration so that people can work on it collaboratively before sending it to the customer. (I may replace this last little bit with a .NET web service, just to show that Java and .NET are both acceptable alternatives for writing the “glue” or “seams” in a true service-oriented architecture.)Lastly, the event coordinators have locked in a time slot for us: Monday, May 7th at 4:30 PM in the Technical/Developer Track.

    If you’re “participating” it would great to see you at our talk or at the bdg booth. This year we have a cool — yet practical — giveway that will definitely brighten your day. Looking forward to the conference!

    Posted by: bucchere on April 22, 2007 at 7:52 PM

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

bdg Sponsorship of BEA Participate 2007 Confirmed

bdg_sponsors_bea_participateHere’s some more shameless self-promotion (isn’t that what blogging is all about?) — we’ve just been confirmed as a sponsor for BEA Participate 2007.

Look for more details about our role in the upcoming conference here.

Hope to see you there!

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Upcoming ALUI (Plumtree) Training — April 9th, 2007

We’re very pleased to announce that we’ve finalized the date for our next ALUI/Plumtree training course, scheduled for the week of April 9th, 2007.

We’re changing the lineup a tad to provide three days of ALUI administration training followed by three days of developer training, but all in a five day week. So how do we plan to pack six days of training into five? The answer is “super Wednesday,” which will be a day when we teach administration for developers. In other words, it’s the last day for the administrators (advanced administration) and the first day for the developers.

Bottom line: to sign up for either class (or the whole week), send an email to [email protected].

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Happy Birthday, bdg!

congratsbdg just turned four! To celebrate the beginning of year five, we’ve launched a new web site. It’s all about how bdg, given our background of providing high-end Plumtree/ALUI consulting, development and training, is now ready to take on Enterprise 2.0.

There’s also a new slogan to go with our new web site and blog: the bdg way.

For the geeks who are reading this, we built our new web site in Ruby on Rails, which explains the elegant friendly URLs. We also built a simple Rails-driven CMS behind the site, so you should see updates more often now that it’s easy breezy to make changes.

Meet the new bdg and read all about enterprise 2.0, the bdg way on www.thebdgway.com.

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Public Sector Breakfast Seminar: Ajax, Java & Mission Critical Applications

I’m very pleased to announce that I’ve been selected by Nexaweb to sit on a panel of Enterprise Web 2.0 experts. My co-panelists include:

  • Brant West, VP Federal Sales, Autonomy
  • Brenda Dixon, Commerce Industry Account Lead, IBM Federal Systems
  • David Bock, Technical Director, FGM
  • David McFarlane, Chief Operating Officer, Nexaweb Technologies, Inc.

The event takes place on Wednesday, 11/8 at 8 AM at The L’Enfant Plaza Hotel in DC.

If you’d like to attend the free seminar, please register here. Hope to see you there!

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

bdg gives away the iPod

On the last day of BEA World, bdg gave Robert Gill a brand new 4Gb iPod nano (in black of course). Accepting the iPod on his behalf is Robert’s coworker Ed Ulicny.

Categories
bdg dev2dev Featured Posts Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

UUID Object Opener, The Coolest ALI Taglib Yet

Anyone who’s ever done a major Plumtree/ALUI deployment knows of this problem: You create a portlet or community (or any other object) in Dev and then you migrate it to Test and on to Production. The problem is that you’ve also written some code in your navigation portlet or in another portlet that depends on an ObjectID (e.g. you’ve used a pt:standard:opener tag) and now, in each environment, your ObjectID has changed and you’re basically hosed.

Pre-G6, I came up with a solution described (somewhat hastily) in this post, but it requires a lot of leg work and — worse yet — manual configuration in each environment.

Enter G6 and the magic of taglibs. (Am I beginning to sound like a broken record? Yes, I know, you can’t fix every problem with a taglib, just 95% of them, right?) With this new taglib I wrote today, I extend AOpenerLinkTag and simply convert a UUID to an ObjectID and ClassID so that you can use the same taglib invocation in every environment. I don’t want to toot my own horn too much here, but honestly, this is pretty much the most useful taglib I’ve ever encountered, and once again, it took under 30 minutes to write.

Before I dive into the source, let me back up and say that I had to bend the rules a bit. OOTB, there are two subclasses of ATagAttribute: RequiredTagAttribute and OptionalTagAttribute. I added a third: MutableTagAttribute. It looks and smells like a tag attribute, but under the covers it’s not. Instead of grabbing its value out of the tag invocation, it allows you to set/change the value at runtime inside the taglib code. Granted, this is a little weird, but it’s what I needed to do in order to subclass AOpenerLinkTag and keep it happy dappy.

MutableTagAttribute.java:

package com.bdgportal.alui.taglibs;

import com.plumtree.portaluiinfrastructure.tags.metadata.*;

public class MutableTagAttribute extends ATagAttribute {

  private String value;
  
  public MutableTagAttribute(String name, String desc, AttributeType type) {
    super(name, desc, type);
  }
  
  public String GetDefaultValue() {
    return value;
  }

  public void SetDefaultValue(String value) {
    this.value = value;
  }
  
  public boolean GetIsRequired() {
    return false;
  }
}

Now that we have a tag attribute that we can change on-the-fly, writing the taglib was a snap.

UUIDObjectOpener.java:

package com.bdgportal.alui.taglibs;

import com.plumtree.portaluiinfrastructure.tags.*;
import com.plumtree.portaluiinfrastructure.tags.metadata.*;
import com.plumtree.xpshared.htmlelements.*;
import com.plumtree.taglib.standard.basetags.*;
import com.plumtree.server.*;

public class UUIDObjectOpener extends AOpenerLinkTag
{
  public static final RequiredTagAttribute UUID;
  private MutableTagAttribute OBJECT_ID;
  private MutableTagAttribute CLASS_ID;


  public UUIDObjectOpener() {
    OBJECT_ID = new MutableTagAttribute("objectid", "Not used -- do not set a value for this!", AttributeType.INT);
    CLASS_ID = new MutableTagAttribute("classid", "Not used -- do not set a value for this!", AttributeType.INT);
  }

  public ATagAttribute GetObjectIDAttribute()
  {
    return OBJECT_ID;
  }

  public ATagAttribute GetClassIDAttribute()
  {
    return CLASS_ID;
  }

  public static final ITagMetaData TAG;

  static
  {
    TAG = new TagMetaData("uuidobjectopener", "Opens an object based on its UUID.");
    UUID = new RequiredTagAttribute("uuid", "The UUID for the object you want to open.", AttributeType.STRING);
  }

  public HTMLElement DisplayTag()
  {
    Object[] objectAndClassId = ((IPTMigrationManager)(((IPTSession)GetEnvironment().GetUserSession()).OpenGlobalObject(PT_GLOBALOBJECTS.PT_GLOBAL_MIGRATION_MANAGER,
          false))).UUIDToObjectID(GetTagAttributeAsString(UUID));
  
OBJECT_ID.SetDefaultValue(objectAndClassId[PT_MIGRATION_OBJECT_COLS.PT_MOC_OBJECTID].toString());
    CLASS_ID.SetDefaultValue(objectAndClassId[PT_MIGRATION_OBJECT_COLS.PT_MOC_CLASSID].toString());
    return super.DisplayTag();
  }

  public ATag Create()
  {
    return new UUIDObjectOpener();
  }
}

To deploy this code, see the excellent section on edocs about creating custom Adaptive Tags.

To use this code in a portlet, do the following.

myportlet.htm:

<span xmlns:pt='http://www.plumtree.com/xmlschemas/ptui/'>
   <pt:mytaglibns.uuidobjectopener pt:uuid="{00000-0000-0000-000000}" pt:mode="2">Open My
   Object</pt:mytablibns.uuidobjectopener>
</span>

I did actually test this taglib and it worked swimmingly. Of course you need to substitute a real UUID for all those Os.

In closing, here’s a little shameless plug: I’ve been asked by BEA to give a short, 20-minute talk at BEA World on my favorite subject (duh, taglibs) at the ALUI Developer User Group on Monday, September 18th in Moscone Center, San Francisco. It will happen some time between 1 and 5:30 PM. The ALUI User Groups are free for conference attendees. I hope to see you there or at the bdg booth. Please come on up and introduce yourself — I always like to meet members of this great community in person.

Enjoy!

Comments

Comments are listed in date ascending order (oldest first)

  • Will there be any performance issues using this tag as it involves additional operations of getting Object ID and Class ID from the UUID?

    Posted by: psudhir_it on February 6, 2007 at 10:15 PM

  • From what I can tell, the tag makes a single SQL query (something like select objectid, classid from ptmigration where uuid = ?) which should be a pretty darn fast query, especially since there’s probably an index on uuid.

    The portal is making database calls left and right when you’re displaying a portal page, so making one more database call to generate an opener link shouldn’t really be a performance factor. Nonetheless, it’s definitely something to think about and I’m glad you brought it up.

    Posted by: bucchere on February 7, 2007 at 5:53 PM

  • Hi Chris! Am attempting to move this over to .NET; can you tell me which reference I need to add to resolve com.plumtree.taglib.standard and the AOpenerLinkTag? I’m not sure how to convert this Java fragment, which appears to have two seperate definitions of TAG: public static final ITagMetaData TAG; static { TAG = new TagMetaData(“uuidobjectopener”, “… UUID.”); …can you tell me what it means, and any tips on converting to C# ? Should have an opportunity to throw some load at this later on; will post my results here. My customer is already sensitive to performance problems caused by header portlets making DB calls; so I will also be looking into the caching possibilities. Cheers, Rob

    Posted by: rwagner on October 10, 2007 at 11:04 AM

  • Here is another option. The little known server.pt?uuID={XYZ-UUID} syntax. We use this in our public site which is not gatewayed to deep link into portal content without the need for an adaptive tag. We also use this to establish fqdns in apache that redirect to portal pages. For example in apache setup a fqdn of docs.bea.com which points to portal.bea.com/portal/server.pt?uuID={XYZ-UUID}.

    Posted by: ryanyoder on February 11, 2008 at 6:18 AM

  • Wow, very cool! I totally didn’t know that syntax even existed. If it’s supported, it ought to be documented, because it’s quite handy.

    One gotcha is that you need to pass mode=2 if you want to open the object in view mode because the default is edit mode, e.g.: /portal/server.pt?uuID={46514C0F-0187-4340-AA24-84E41C00C60F}&mode=2

    Posted by: bucchere on February 11, 2008 at 6:31 AM