Feedage - RSS Feeds directory

Search Feedage
       Advanced

Login   Logout
2,051,365 feeds and growing!
Submit your feed
    Home    MyFeedage    login    Help    Feedage feeds
 
Quick links
Feedage BuzzsawBuzzSaw
Feedage FeedzoneFeedZone
Feedage PodzonePodZone
My GroupsMy Groups
My FeedsMy Feeds
Searched termsSearched
E-mail ThisE-mail This
E-mail ThisRSS Alerts
Feedage TrackerRSS Tracker

 
Subscribe: enterprise 2.0 the bdg way
Add to My Yahoo! Add to Google! Add to AOL! Add to MSN Subscribe in NewsGator Online Add to Netvibes
Subscribe in Pakeflakes Subscribe in Bloglines Add to Alesti RSS Reader Add to RSS Web Reader View with Feed Reader Add to NewsBurst
Add to meta RSS Add to Windows Live Rojo RSS reader iPing-it Add to Feedage RSS Alerts
enterprise 2.0 the bdg way http://thebdgway.blogspot.com/feeds/posts/default
Feed Statistics
Bookmarks
Bookmark with Del.icio.us Digg it Bookmark with Furl
Submit to Reddit Bookmark with Yahoo
StumbleUpon Toolbar Bookmark with Technorati

Views:8Feedage Grade B rated
Subscribed:0
Rating:0-0.061368517950292
Added:2007-10-14 14:17:22
Added By:Feedage Forager
Keywords:app  bar  bucchere  column  controller  enterprise  foo  huuuze  logic  oracle  page  people  rails  social  view  views 
Flag as InappropriateFlag as Broken
Preview: enterprise 2.0 the bdg way Add to MyFeedageRate this Feed:
Rate this feedRate this feedRate this feedRate this feedRate this feed

enterprise 2.0 the bdg way



Since 2002, you've known us as the Plumtree experts. Now we'd like to introduce you to Enterprise 2.0, the bdg way. If you'd like to know how to integrate blogs, tagging, wikis or social software into your IT infrastructure, you've come to the right place. If you're looking for Plumtree development, consulting or training, you've still come to the right place. But the consumer world is moving beyond portals. Worried that your enterprise software won't keep up? We can help, the bdg way.


Updated: 2008-10-02T15:42:38.502-04:00

bdg welcomes Michael Buckbee!

2008-09-30T00:26:55.057-04:00

We're very pleased to announce that industry veteran, entrepreneur and Rails developer Michael Buckbee joined the bdg team today as CTO and Lead Developer on The Social Collective!

Mike's career path is surprisingly similar to my own -- in multiple ways. Fresh out of college, he joined a health industry startup called Aristar in 1999. They were acquired by SoftMed, which was then acquired by 3M HIS. (Recall that I worked at Plumtree, which was bought by BEA, which was bought by Oracle.) Unlike yours truly, who left Plumtree in 2002, Mike stayed on at 3M. As someone who just doesn't know what it means to get bored, he also started several side projects. The most successful of these was Fabjectory, which could best be described as a 3D printshop that allows people to take their avatars (or other objects from the virtual world) offline and reincarnate them as real life figurines.

Again, our paths resemble one another, in an almost uncanny way. As I was toiling away on Feedhaus, Mike was building FeedMail, which essentially tried to allow people to read and respond to email from inside a feed reader. Like Feedhaus, the idea never really took off. However, some of Mike's other projects -- like Fabjectory -- generated an amazing amount of buzz, including articles in the New York Times and WIRED. Prior to starting Fabjectory, Mike had yet another side project called Second411 which allowed people to search for virtual items both in-world and on the web. Second411 was purchased by ESC in October of 2006.

Never one to settle for just a few side-projects, Mike also worked on FoxyMelody, Watchlister, OneToFive, FeedSpeaker and an open source HTTP queue that runs on Google's Application Engine. Here at bdg, we've long been in the business of throwing lots of spaghetti at the fridge and seeing what sticks, so obviously Mike will fit right in. Visit Mike's blog and project page for more about his amazing career.

As Lead Developer on The Social Collective, Mike is already busy getting the site prepped for SXSW 2009, which will launch early in Q1.

Please join me and the rest of the bdg team in extending a warm welcome to Mike!

I Don't Even Like Radiohead, But. . . .

2008-09-26T18:13:16.234-04:00

I wouldn't consider myself a Radiohead fan. But what they just did is about to turn the music industry on its head . . . again. Check out this snippet from an e-mail they just sent me:

To coincide with asking radio stations to think about playing Reckoner we are breaking up the tune into pieces for you to remix. After the insane response we got from the Nude remix stems and the site that was dedicated to your remixes...

Unique visitors: 6,193,776, Page Views: 29,090,134, Hits: 58,340,512, Bandwidth: 10.666 Terabytes, Number of mixes: 2,252, Number of votes: 461,090, Number of track listens: 1,745,304

...we thought it only fair to do the same with a tune that at least is in 4/4. You can get the stems (the different instruments/elements) from here.

Sample, cut, take the sounds, whatever. Play it in a club. Or your room. Then if you want you can upload your finished mixes to http://www.radioheadremix.com and be judged by everyone else. You can create a widget allowing votes from your own site, Facebook or MySpace to be sent through too. [Emphasis mine.] To start things off we asked James Holden and Diplo to do their versions.

Whatever you want to call this (user-generated production?), it's downright brilliant. The idea that I -- a mere mortal -- get to mix and produce the next Radiohead song and that my version (if the general public likes it) could be the next big Radiohead hit is simply a mind-blowing and totally game-changing idea. Starting with Napster, then Kazaa and other P2P networks, then the idea that a major-label artist like Radiohead would put up an album (In Rainbows) and ask people to name a price for it -- including $0 -- the music industry has changed dramatically over the past ten years. And Radiohead is, as usual, leading the charge.

Chris Bucchere's Oracle Open World Schedule

2008-09-18T11:17:34.744-04:00

I'm headed to Oracle Open World on Saturday, 9/20. Here's my proposed schedule. Like I said earlier, I'm probably going to spend most of my time in the unconference anyway, but here's what looked interesting to me:



If you'd prefer, you can also access this schedule in XML or ICAL format.

SXSW to Use The Social Collective for SXSW 2009!

2008-09-04T15:10:44.692-04:00

I am very pleased to announce that today bdg and SXSW have decided to partner to use The Social Collective to create a new registrant community for SXSW 2009.

More details will follow soon. But for now, please join me in a collective w00t for the entire bdg team while we celebrate this amazing milestone for us. We all look forward to seeing The Social Collective in action at SXSW 2009!

Sneak Preview of Chris Bucchere's SXSW RSS Preso at the Oracle Open World Unconference

2008-09-03T09:24:29.797-04:00

For anyone attending Oracle Open World, I'm planning to give a preview of my SXSW 2009 talk entitled "Not So Simple Any More: RSS's Bleeding Edge" in the unconference track at OOW. (This will happen regardless of whether or not SXSW selects my talk for inclusion in the 2009 agenda.)

The talk is scheduled for Monday, 22 September 2008 at 2 PM Pacific in Moscone Overlook II. BTW, I'll probably be spending most of my time in the unconference track at OOW, because I'm just that kind of guy.

Conference Social Networking Made Simple

2008-08-31T20:09:40.459-04:00

Three and a half months have transpired since our stellar debut at BEA Participate. (In internet time, that's a lifetime.) But better late than never, I'm very pleased to announce the launch of our marketing home on the web: www.thesocialcollective.com!

Please have a look and let us know what you think.

Friday Fun: Rails, Django and Caprese Salad

2008-08-29T19:42:24.631-04:00

I had this Twitter argument today with former coworker, fellow web developer and friend Bryan Hughes:

bucchere: The Spring Framework is driving me crazy. If this were Rails, I'd be done already.

huuuze: @bucchere If it was Django, it'd be faster and ready to scale.

bucchere: @huuuze I'm not interested in a religious war right now. Please don't provoke me. ;-)

huuuze: @bucchere No war -- even the Rails guys agree: http://is.gd/1ZZu

bucchere: @huuuze Apparently Gluon is even faster than Django. But is anyone using it? You have to consider factors other than performance.

huuuze: @bucchere Um, Django's used by thousands. It's not some fringe framework. Guaranteed anyone that's used RoR and Django will prefer Django.

bucchere: @huuuze How could you make that "guarantee" when you've never used Rails? I said I didn't want a religious war, you damn Python Nazi. ;-)

huuuze: @bucchere I've built a couple site using Rails. How many sites have you built using Django?

bucchere: @huuuze bdg's svn server just crashed. I have more important things to do than continue this pointless argument.

huuuze: @bucchere Then quit wasting time on Twitter. I'm not trying to start anything with you. Just be aware that RoR isn't the only game in town.

bucchere: @huuuze There are lots of religions too. And if I want to pick one and say the others are "wrong" then that's my prerogative.

huuuze: @bucchere Whatever dude. Not sure why you'd say Django is "wrong."

bucchere: @huuuze All I'm saying is that language/framework wars are like religious wars. I have mine, you have yours. Leave it at that.

bucchere: Enjoying a homemade caprese -- my favorite salad. (Now watch while @huuuze tells me his favorite salad is better than mine.)

huuuze: @bucchere Having never tried caprese, I have no opinion on the matter.

bucchere: @huuuze LOL. I'm glad we can still be friends. :-)

huuuze: @bucchere Get real. I'm only friends with Christians and Django users. ;)

* * *

So the time it took me to compile this discussion made me wonder why Twitter doesn't have threaded discussions. Summize (now search.twitter.com) has "conversations" but, like Facebook's wall-to-wall feature, just because the posts occur consecutively, it doesn't mean that they're actually "in" the same thread. If I were re-writing Twitter, adding threaded discussions -- and with it, the ability to reply to a specific Tweet -- would be near the top of my list.

Happy Friday everyone (and happy 3-day weekend for hard-working and hard-twittering Americans)!

Shameless Self-Promotion

2008-08-19T22:04:33.897-04:00

At last year's SXSW I said to myself: "Self, you need to be speaking at this conference next year."

Help me fulfill my self-fulfilling prophecy and please take a minute to vote for one (or both) of my proposed talks! Unlike the SXSWi Web Awards last year, you don't have to vote every day -- once is plenty.

The first is a solo presentation on the future of RSS.

The second is a panel discussion on whether it's better to have one horizontal social network like Facebook or loads of smaller, niche social networks.

Thanks for your support.

Middleware for the REST of us

2008-08-18T15:25:19.468-04:00

I'm sitting in my third Oracle Fusion Middleware briefing, this one at the Willard Hotel in Washington, DC. Thomas Kurian has been going through all the products in the Oracle stack in excruciating detail.

First let me say this: Thomas Kurian is a really smart guy. He holds an BS in EE from Princeton summa cum laude (that's Latin for really fucking good). He holds an MBA from the Stanford GSB. He's been working for Oracle forever and he even knows how to pronounce Fuego (FWAY-go). I'm dutifully impressed.

Unfortunately, all those academic credentials and 10+ in the industry is barely the minimum requirement for getting your head around the middleware space. Either I don't have enough (0) letters after my name, or I just don't get it.

For starters, there are way too many products -- the middleware space is filled with "ceremonious complexity" (to quote Neal Ford). App servers, data services layers, service buses, web service producers and consumers -- even portals, content management and collaboration has been sucked into this space. Don't get me wrong: the goals of the stack are admirable -- middleware tries to glue together all the heterogeneous, fragmented systems in the enterprise. Everyone knows that most enterprises are a mess of disparate systems and they need this glue to provide unified user experiences that hide the complexity of these systems from the people who have to use them. That makes the world a better place for everybody.

That was also, not coincidentally, one of Plumtree's founding principles and the concept -- integrating enterprise systems to improve the user experience -- has guided my career since I got my lowly undergraduate degree in Computer Science from Stanford in 1998.

So, it's a good concept, however, if you're considering middleware because you're trying to clean up the mess that your enterprise has become, you need to ask yourself the following fundamental question: does middleware add to or subtract from the overall complexity of your enterprise?

Your enterprise is already insanely complicated. You've got Java, .NET, perhaps Sharepoint, maybe an enterprise ERP system like SAP and say, an enterprise open source CRM system like SugarCRM or a hosted service like SalesForce.com. The bleeding edge IT folks and even (god forbid) people outside of IT are installing wikis written in PHP (e.g. MediaWiki) along with collaborative software like Basecamp written in Ruby on Rails. I'm not even going to mention all the green-screen mainframe apps still lurking in the enterprise -- wait, I just did. This veritable cornucopia [editor's note: I love those two words, especially when used together!] of systems just scratches the surface of what exists at many large -- and even some mid-to-small-sized companies -- today.

So clearly there's a widespread problem. But what's the solution?

At the end of his impressive presentation, I asked Thomas the following question: "How can middleware from Oracle/BEA help you make sense of the fragmented, heterogeneous enterprise when you have existing collaborative (web 2.0) technologies written in PHP, Ruby on Rails, etc. running rampant throughout IT and beyond?" (Okay, so I wasn't exactly that pithy, but it was something close to that.)

His Aladdin-esque answer came in the form of three choices:

  1. "Take control of" and "centralize" your IT systems by replacing everything with Oracle Web Center spaces

  2. Ditto by migrating everything to UCM (Stellant)

  3. Build a services framework and aggregate everything in one of four ways:

    1. Use a Java transaction layer (JSR 227)

    2. Use a portlet spec like JSR 168 or WSRP

    3. Build RESTful web services

    4. Use the WebPart adapter for Sharepoint


I like to call answers one and two "The SAP Approach." In other words, we're SAP, we're German, wir geben nicht einen Scheiße about your existing enterprise software, you're now going to do it the SAP way (or the highway).

Will companies buy into that? Some companies may. Many will not. ERP is a well understood space, so this approach has worked for SAP. Enterprise 2.0 is not terribly well understood, so that means even more diversity in the enterprise software milieu. [Editor's note: English, German AND French in one blog post -- not bad!]

So the only approach that I believe in is #3: integrate. Choose the right tool for the right problem, e.g. the WebPart adapter if you're using Sharepoint. Use REST when appropriate, e.g. when you need a lightweight way to send some JSON or XML across the wire between nonstandard or homegrown apps. Use JSR 168/286 for your Java applications. Even use SOAP if the backend application already supports it. Keep things loosely coupled so that you can plug different components in and out as needed. This requires a lot of development -- the glue -- but, I don't think there's any way around that. (You should take that with a grain of salt, because my company has been supplying the government and the commercial world with exactly that kind of development expertise since 2002.)

As for the overarching, user facing "experience" or "interaction" product -- that's where I've always used Plumtree (or AquaLogic Interaction). Will I start using Web Center Spaces? At this point, I'm still not sure. If it can be used as the topmost bit of the architectural stack to absorb and surface all the enterprise 2.0 software that my customers are running, then perhaps. If it's going to replace all the enterprise software that my customers are running, then no way José.

This conundrum really opens up a new market for enterprise software: I call it "Middleware for the REST of us" or MMM (not M&M, 3M or M3, because they're already taken): "Mid-Market Middleware" -- similar to the way 37signals approaches (with a great deal of hubris and a solid dose of arrogance) the Fortune Five Million by marketing their products toward the whole long-tail of small and medium-sized companies. Maybe the world needs a RESTful piece of hardware that just aggregates web services and spits out a nice UI, kind of like the "Plumtree in a Box" idea that Michael Young (former Plumtree Chief Architect, now Chief Architect at RedFin) had back in the last millennium.

Oracle Web Center Spaces might be the right choice for some very large enterprises, but what about the REST of us?

How the New Facebook Utterly Destroyed my Favorite Application (and Why That Makes Me Sad)

2008-08-16T16:10:59.636-04:00

I used to love Feedheads. It's a simple, elegant and beautiful application that does one thing really well: help you share your Google reader shared items.

Unfortunately, the "new" Facebook has rendered the application utterly useless and I can't think of a good way, as an end-user, to fix it. In fact, as someone who's built two facebook apps, I can't even think of a way that the Feedheads developers can fix it. What a calamity.

So here's the problem: the News Feed (and the Mini Feed) introduced an option that allows end-users to set the story "size" as shown on the right. When a Google shared item story comes through Feedheads now, it defaults to the "one line" size and as a result, it doesn't say anything other than "Chris posted an item to Feedheads."

Thank you very much, Facebook. That piece of information is completely useless. People who are reading your feed need to click through into the Feedheads application in order to see what story you posted -- and the whole point of Feedheads is to help you share your shared items, not make them harder to find.

(As a result of all this, Facebook also broke one of my applications, called WhyI. It has < 200 users, so very few people care, but . . . the point of the app was to help people ask themselves and their friends questions that have to be answered in five words or fewer. And of course, the questions and answers would show up in the Mini Feed and News Feed. But not anymore! Now it just says: "Chris posted a new mini-update using WhyI." Again, a totally useless piece of information. Drats.)

As an end-user, I can set the "size" of each feed item. So that means, after I hit Shift-S in Google Reader -- which doesn't take much effort -- I have to wait for the story to be published in Facebook and then, if I remember (which at this point is unlikely), I have to go into that little drop down on the right and set the size to "small" instead of the default, which is "one line." And here's the best part: I can't tell Facebook to remember this, so I have to do it every time.

All this just to share a shared item on Google Reader through Feedheads . . . ick.

Here's the best part. I just noticed that Facebook added their own feature to the new and "improved" news feed. You can import your shared items from Google Reader! And, not surprisingly, the news feed actually shows the stories' titles. In other words, Facebook took a great application -- Feedheads -- and replaced the functionality with their own feature; in the process, they rendered Feedheads useless.

This makes me sad. I only have one thing to say:

Wow, Facebook, how very Microsoft of you.

Nobody's Gonna Read This (and Why That Makes Me Happy)

2008-08-15T17:27:47.886-04:00

Boy do I love the fact that no one reads this blog. And to the few people who are exceptions to that general rule -- thank you for being so supportive!

I just hit two or three web pages in a row (TechCrunch, Digg and the Meebo blog) where each post I read had 80+ comments that reminded me why I rarely ever actually read comments.

Haters, trolls, flamers, spammers -- whatever you want to call them, the internet is ridden with people who are filled with spite and rage. The funny thing is that in no other forum (except for perhaps while driving) are people this cruel to one another. It's just not socially acceptable.

I realize that e-hate isn't a new problem: in fact, it dates back to the early days of UseNet, Netiquette and the ol' "do we allow AOLer's on the internet" debate. While doing some fact-checking on wikipedia, I was really amused to read about Godwin's Law, which sums up what I'm talking about better than I ever could: "As a Usenet discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one."

We all know the Kathy Sierra story. I'm glad she had a thick enough skin to re-emerge in the blogging world and on Twitter because the world is a better place with her contributions than it is without them.

We all remember The Great Sarah Lacy Twitter Massacre of SXSW 2008. I recently met Sarah at a tech event in DC and, believe it or not, she doesn't have horns, literally or figuratively.

Jason Calacanis recently "retired" from blogging. When I read his post, I immediately thought that it was just a PR stunt, but I'm beginning to realize that I can sympathize with his viewpoint. I really don't want to ever be an A-list blogger or "internet famous" because it's just like painting a big target on your own ass.

I love my family and close friends, I love the physical neighborhood in which I live and I love the virtual networks that have developed around my career and my passions for the past 15 years or so that I've been using the internet.

But honestly, a big part of me doesn't want anyone else to read this. Not because I don't take criticism well. (I don't, but then again nobody does.) I just wish some of the same general rules that apply to social interactions -- at say, a cocktail party, a baseball game or at the supermarket -- would apply to the internet.

Comments welcome. Just be nice, ok?

Are Twitter Replies Fundamentally Broken?

2008-08-14T00:20:01.434-04:00

Has anyone noticed that Twitter replies are fundamentally broken? Or, I should say, at least the "Replies" *tab* is jacked.

This isn't another "Twitter is down" post -- this is about a feature that doesn't work as it's designed.

As far as I can tell, replies to me only end up in my "Replies" tab if my Twitter account name (@bucchere) is the first token in the tweet. Yet a lot of people reply to multiple people or use the "@" notation in context, e.g. "I'm playing tennis with @bucchere."

That "reply," although it's clearly got my name in it, won't end up under my replies tab. Oops.

In The Social Collective, any time an @ token is found, it stores the message as a reply to . Isn't that how Twitter should work as well?

Has anyone else noticed this? Is anyone else annoyed like I am by this obviously broken "feature?" WTF?

There is a workaround, but it's kludgey. You can use Summize (now located at search.twitter.com) to search for @ (or just if you like). I did this, then ingested the resulting RSS feed into Google Reader and now I go there instead of to my Replies tab in Twitter. FAIL.

New Video: Demo of Conference Social Application

2008-08-05T10:56:29.681-04:00

This is a 30-minute clip from the general session at BEA Participate from back in May. Jay Simons and I demo the social application that bdg built for the conference.


BEA Participate 2008 Social Application Demo from Chris Bucchere on Vimeo.

RubyNation Community Site Accepting Registrations!

2008-07-18T11:32:37.674-04:00


bdg is very proud to be a RubyNation sponsor! The sold-out conference is just two weeks away. However, whether you're registered or not, if you want to network with other DC-area Rubyists, please take a minute to sign up for the Ruby Nation community, which you can access at http://rubynation.org/community.

We built this site for RubyNation using our new white-label social networking product for conference attendees and other members of the local Ruby community. This application made its debut at the BEA Participate conference in early May. It attracted over 800 registrants and generated 75,000 page views during the week of the conference. And of course, it's written entirely in Ruby on Rails.

If you're coming to RubyNation, thinking about coming to RubyNation (or you're a Rubyist who wishes he or she could make it to RubyNation), feel free to sign up for the site. Registration is easy and painless. Once you're in, you can "pimp" your profile with an avatar or photo, links, RSS feeds and products that you know and love. You can view and participate in discussions about each session at RubyNation and you can create and join groups to interact with your peers about a variety of interesting topics about Ruby (or anything under the sun).

So, don't waste any more time reading about this stuff -- come on in and let's get social at http://rubynation.org/community!

Our Web 2.0 Strategy

2008-07-01T13:33:35.709-04:00

Here at bdg 2.0, we plan to capture long-tail ecologies by disintermediating citizen-media value while we integrate Cluetrain life-hacks to aggregate user-centered podcasts, blogging and tag clouds that reinvent social ad delivery and syndication while designing rich-client widgets that enable rss-capable peer-to-peer communities to engage user-centered folksonomies.*

*Courtesy of the Web 2.0 B.S. Generator

Chris Bucchere Speaking at the NovaRUG on June 18th, 2008

2008-07-11T11:25:54.033-04:00

Update: you can now download the slides from my presentation!

Calling all local Rubyists! I'm speaking about modular page design in Ruby on Rails at tomorrow night's NovaRUG. The title of my talk is "To Portal or Not to Portal: How to Build DRY, Truly Modular Mashups in Rails."

The meat of my talk is going to come from these two recent blog posts:

Modular Page Assembly in Rails (Part 1)
Modular Page Assembly in Rails (Part 2)

I'll be followed by Arild Shirazi of FGM giving a presentation entitled "CSS for Developers."

Get all the details here.

P.S.: Free pizza!

Modular Page Assembly in Rails (Part 2)

2008-06-17T03:50:01.232-04:00

In Part 1, I explained how you can develop clean, DRY and encapsulated MVC code that allows for completely modular page assembly in Ruby on Rails.

In this follow up post, I explain how you can use a combination of layouts and content_for to apply title bars and consistent styles to your page components (or modules or portlets, or whatever you want to call them). The image to the left shows the finished product -- read on to see how I wrote the layouts and views to allow me to use some simple, straightforward CSS to apply this nice, consistent look-and-feel to this page (and the entire site).

The code here is easy to follow and it pretty much speaks for itself. It consists of two layouts (which I called aggregate and snippet), a sample controller and two sample views. Let's start with the controller for one page in your site that, say, aggregates a couple of modular page components together to show a nice view of company information.

Controller code (app/controllers/company_controller.rb):
def index
render :action => 'index', :layout => 'aggregate'
end

This controller simply delegates the rendering of the page to the index.html.erb view and tells Rails to use a layout called aggregate.

Now let's inspect the view.

View code (app/views/company/index.html.erb):
<% content_for :left do %>
<%= embed_action :controller => 'company', :action => 'company_list' %>
<%= embed_action :controller => 'feed', :action => 'feed' %>
<% end %>

<% content_for :center do %>
<%= embed_action :controller => 'company', :action => 'detail' %>
<% end %>

<% content_for :right do %>
<%= embed_action :controller => 'home', :action => 'sponsors' %>
<% end %>

This view defines three content regions, with the end goal being to create a page with three columns of "portlets." The left column contains two portlets: a list of all companies (company_list) and a news feed (feed). The center column contains a company detail portlet and the right column contains a portlet with information about sponsors. (Note that the portlets come from three different functional areas of the site, so they're decomp'd appropriately into three different controllers.)

Now, let's take a look at some layout magic.

Here's the aggregate layout (app/views/layouts/aggregate.html.erb):








<%= yield :left %>



<%= yield :center %>



<%= yield :right %>


I chose a table (yes, I still use tables) with three divs in it, one for each region of modules, but you could use pure divs with floating layouts or any other approach.

The three content regions, left, center and right, match up with the three content sections defined in the index view above using content_for. In case this isn't obvious, when the layout encounters a page-level definition of a content region in the view, it renders it. If there is no definition for a particular region, the containing column will just collapse on itself, which is the behavior we want.

This is a slight digression, but note how I used CSS classes to identify the columns and regions in a general way (using classes) and a specific way (using ids). This allows me to style the whole module-carrying region with CSS using table.main as my selector, all the columns using table.main td.column as my selector or all the regions using table.main td.column div.region as my selector. I can also pick and choose different specifc areas (e.g. table.main td.column#column-right) and define their style attributes using CSS. As you'll see in a minute, I can write CSS selectors to say if module A is in the left column, apply style X but if module A is in the center or right column, apply style Y. Pretty cool.

Now, let's explore the module layout. (Note that I've been calling page snippets portlets, modules or components, pretty much interchangeably. I think this illustrates that it doesn't make a difference what we call 'em -- e.g. portlets vs. gadgets -- the concept is fundamentally clear and fundamentally the same.)

Module layout (app/views/layouts/snippet.html.erb):

<%= yield :title %>

<%= yield :body %>

This layout expects three more content regions to be defined in the view: id, title and body. Here are the matching content regions from one sample view (for sponsors) -- for brevity's sake, I didn't include all the views.

Sample module view (app/views/home/sponsors.html.erb):
<% content_for :id do %>sponsors<% end %>

<% content_for :title do %>Our Sponsors<% end %>

<% content_for :body do %>
Please visit the sites of our wonderful sponsors!
<% end %>
Now, because of some nicely-placed classes and ids, I can once again use CSS selectors to give a common look-and-feel to all portlet containers (div.snippet-container), portlet titles (div.snippet-title) and to portlet bodies (div.snippet-body). Of course, if I want to diverge from the main look-and-feel, I can call out specific portlets: div.snippet-body#sponsors.

If I really want to get fancy, I can use CSS selectors to select, say, the sponsor portlet, but only when it's running in the right column: table.main td.column-right div.snippet-container#sponsors.

So, in summary, using layouts, content_for and some crafty CSS, I can create a page of modules that can be styled generically or specifically. Combine this approach with what I described in Part 1, and you can "portal-ize" your Rails applications without using a portal!

Was this useful to you? If so, please leave a comment.

Nominate Chris Bucchere for an Oracle OpenWorld Session

2008-06-18T14:46:09.036-04:00

I've presented at seven Plumtree Odysseys, one BEA World and two BEA Participates. Help keep the streak alive by voting up my Oracle OpenWorld presentation!

Here's what people had to say about my P08 preso this year. . .

Q5: What did you like most about the session?
  • The ppt presentation style!
  • Straight and to the point, dives right into it. Chris did a fantastic job!
  • very nice to hear how they put this together
  • amazing and inspiring
  • great session; should be one of the first sessions provided.
Q6: What could we do better next year?
  • bring this guy back (again)

The Social Collective Debuts at RubyNation

2008-06-18T14:46:28.376-04:00

We're very pleased to announce that, together with the organizers of RubyNation, we debuted our social application "The Social Collective" today as a means for RubyNation conference attendees and other Rubyists to meet and interact with their peers.

This is a very similar codebase to what we deployed at BEA Participate in May, but without ALI or ALBPM. These BEA (now Oracle) products provided a great, scalable and flexible architecture, but we didn't feel it was a good use of our resources (i.e. $$$s) to continue to use these products and we didn't want to pass this cost on to RubyNation, which, BTW, is only charging $175 for two jam-packed days of Ruby awesomeness.

So, for those of you who have been following all this social goodness coming from BDG, there are now two distinct versions of "The Social Collective:" one that uses BEA/Oracle products and one that does not. This affects pricing (obviously), so if you're interested in either, please contact us to find out more.

And in the meantime, if you're as gung ho about Ruby as we are, sign up for an account and help us grow the Ruby community here in DC and beyond!

Modular Page Assembly in Rails (Part 1)

2008-06-17T03:39:26.071-04:00

Recently I was faced with an interesting problem: I wanted to create a modular, portal-like page layout natively in Ruby on Rails without using another layer in the architecture like SiteMesh or ALUI. Java has some pretty mature frameworks for this, like Tapestry, but I found the Ruby on Rails world to be severely lacking in this arena.

I started with Rails 2.0 and the best I could come up with at first brush was to create a html.erb page comprised of several partials. Each partial would basically resemble a "portlet." This works fine, but with one showstopping pitfall -- you can't call controller logic when you call render :partial. That means in order for each page component (or portlet, if you like) to maintain its modularity, you would have to either 1) put all the logic in the partial view (which violates MVC) or 2) repeat all the logic for each component in the controller for every page (which violates DRY).

If that's not sinking in, let me illustrate with an example. Let's say you have two modular compontents. One displays the word "foo" and the other "bar", which are each contained in page-level variables @foo and @bar, respectively. You want to layout a page containing both the "foo" and the "bar" portlets, so you make two partials.

"foo" partial (app/views/test/_foo.html.erb):
<%=@foo%>


"bar" partial (app/views/test/_bar.html.erb):
<%=@bar%>


Now, you make an aggregate page to pull the two partials together.

aggregate page (app/views/test/aggregate.html.erb):
<%=render :partial => 'foo' %>
<%=render :partial => 'bar' %>


You want the resulting output to say "foo bar" but of course it will just throw an error unless you either embed the logic in the view (anti-MVC) or supply some controller logic (anti-DRY):

embedded logic in the view (app/views/test/_foo.html.erb):
<%@foo = 'foo'%>
<%=@foo%>


embedded logic in the view (app/views/test/_bar.html.erb):
<%@bar = 'bar'%>
<%=@bar%>


-- OR --

controller logic (app/controllers/test_controller.rb):
def aggregate
@foo = 'foo'
@bar = 'bar'
end


Neither solution is optimal. Obviously, in this simple example, it doesn't look too bad. But if you have hundreds of lines of controller logic, you certainly don't want to dump that in the partial and if you also don't want to repeat it in every controller that wants to aggregate that piece of code, which is supposed to be modular.

What a calamity.

I did some research on this and even read a ten-page whitepaper that left me with no viable solution, but my research did validate that lots of other people were experiencing the same problem.

So, back to the drawing board. What I needed was a way to completely modularize each partial along with its controller logic, so that it could be reused in the context of any aggregate page without violating MVC or DRY. Enter the embed_action plugin.

This plugin simply allows you to call invoke a modular bit of code in a controller and render its view, but not in a vacuum like render :partial. With it, I could easily put controller logic where it belongs and be guaranteed that no matter where I invoked the "portlet," it would always render correctly.

Here's the "foo bar" example, implemented with embed_action.

"foo" controller (app/controllers/foo_controller.rb):
def _foo
@foo = 'foo' #this logic belongs here
end


"bar" controller (app/controllers/bar_controller.rb):
def _bar
@bar = 'bar' #this logic belongs here
end


aggregate view (app/views/test/aggregate.html.erb):
<%= embed_action :controller => 'foo', :action => '_foo' %>
<%= embed_action :controller => 'bar', :action => '_bar' %>


That's it! Note that there is no logic in the aggregate controller -- that's not where it belongs. Instead, the foo and bar logic has been modularized/encapsulated in the foo and bar controllers, respectively, where the logic does belong. Now you can reuse the foo and bar partials anywhere, because they're 100% modular.

Thanks to embed_action, I was finally able to create a completely modular page (and site) design, with very little effort on my part.

In a follow-up post (Part 2), I'll explain how you can create really nice-looking portlets using everything above plus layouts and content_for.

This Just In -- BEA Participate Social App Stats

2008-06-18T14:46:43.813-04:00

I find this a little hard to believe, but the numbers don't lie. We had a whopping 75,000 page views the week of the conference!

That's more than 100 page views per registered attendee. This chart was from our
hottest day, Tuesday, 5/13.



Thanks to everyone for using our application. I think we may be on to something here!

Oracle and the BEA Deadpool

2008-06-04T09:12:59.603-04:00

Today Oracle announced that they will reveal their strategy for integrating (and/or shitcanning) BEA products. And boy are there a bunch of them -- almost 50 in total! With so many to choose from, we can play a fun little game. Which products are going to live and which ones are headed for the deadpool?

I've created a nice little anonymous poll here on my blog -- feel free to pick as many products as you like. A yes vote means you think the product will live on at Oracle and not voting for it means you don't.

I'll share my votes, because I'm just that kind of guy.

WebLogic Server: +1 (as I think it will replace Oracle's application server in the Fusion Middleware stack)

WLP, ALUI, Tuxedo and EVERYTHING ELSE: -1

It's too bad, but all good things (like ALUI) and even some lousy things (like WLP) must come to an end. The real shame is that many of the Enterprise 2.0 initiatives that BID started are not going to go anywhere. Oh well.

But hey, this is just one guy's opinion. Poll closes on 7/1 at 9 AM PDT/12 PM EDT -- then all will be revealed by the Oracle. Or not. We'll just have to see.

BEA Participate 2008: The Social Code

2008-06-18T14:47:15.071-04:00

I took the professional footage of my 1-hour presentation and overlaid it on top of the slides and demos. I had to break the video into two half-hour segments, which you can find below. (Note: you can't watch the video in HD in the embedded version; if you want to do that, you need to click through into Vimeo.)


The Social Code Breakout Session (Part 1) from Chris Bucchere on Vimeo.


The Social Code Breakout Session (Part 2) from Chris Bucchere on Vimeo.

I <3 Usage Data

2008-06-18T14:47:36.164-04:00

There's nothing better than reviewing usage data for an application you just launched, especially when those data show that people are loving it!

In our first week since the application went live, we've had more than 300 account registrations. That alone is a significant accomplishment. But it gets better. Here are some more stats:

  • 350+ messages sent (Rumbles and Private Messages)
  • 200+ podmob (Twitter) messages
  • 100+ shout-outs (pokes)
  • 100+ links and feeds added
  • 200+ groups created
  • 500+ mob adds (contacts)
  • 3000+ breakout session registrations
  • 3500+ notable actions (that have appeared in the Observation Deck feed)

We've also had almost 6000 page views since Monday and over 10,000 page views last week, our first week "in business."

Here's a great chart, courtesy of AquaLogic Analytics Server:
Analytics Stats

What's even more encouraging is that I've seen a surge in shoutouts, messaging and group activity as the conference approaches. And it hasn't even started yet! I expect our heaviest usage to come during the conference, although hopefully not the way it did on Twitter during Sarah Lacy's SXSW08 interview of Mark Zuckerberg.

Comments

Comments are listed in date ascending order (oldest first)

  • do you have any post conference metrics? would love to see how those look!

    Posted by: geoffgarcia on May 20, 2008 at 1:00 PM


Participate.08 Social Applications Launched!

2008-06-18T14:47:51.366-04:00

You can read all about it on dev2dev, so I won't repeat myself here.

Congrats to Rich, Andrew and Remy for all their hard work on these applications! They came out great and I'm sure the conference attendees will love them.