Despite my bashing of Agile analogies yesterday, I am a fan of its goals... and I frequently encourage people to audit their process and see what pieces of Agile will work for them.
CIO Magazine has a great article about how a grumpy old IT manager converted to Agile. It was a good article, and reminded me of how the Stellent dev team worked.
"Eric [the Agile consultant] recommended re-architecting the core in order to empower parallel development."
Parallel development is one of the key reasons why 3 Stellent developers could easily do the work of 30. It was unique to the Stellent core eight years ago, and still fairly unique today.
Dubbed component architecture, it allowed developers to write new apps without interfering with others' code. Nearly every new feature could be first designed as a component delivered on the side, then merged into the core codebase when appropriate. For all intents and purposes, a properly written component behaved exactly as if it were a fundamental part of the core product, but with vastly fewer change management issues.
There were only a few parts of the product not accessible through component architecture... usually by design. Sometimes we'd open them up to modification... but sometimes they were so important for the stability of the system that we had to disallow modification with components.
This design eliminated the need for most developer meetings, as well as the fear of stomping on somebody else's work. Whenever a conflict arose, we would fix it, and fix the core so that similar conflicts would not happen in the future.
"In his Turing award lecture 'The Humble Programmer,' E.W. Dijkstra wrote: 'One of the most important aspects of any computing tool is its influence on the thinking habits of those that try to use it, and... I have reasons to believe that that influence is many times stronger than is commonly assumed.'"
Very very true... If your programming methodology is so process-oriented that even a dumb programmer can follow it, then the end result will be dumb programmers. If, however, your tools allow for agility and improvisation without planning, the end result will be programmers too clever for their own good.
I myself prefer something in the middle: process for infrastructure, agility for applications. This means you need to have a good grasp of where the flexibility needs to be in your system, and switch methodologies appropriately. You must alter both your software development methodologies, and your change management protocols.
Unleash the agile developers when flexibility is key... but use the process-oriented developers when doing the mundane tasks that absolutely must be done according to a regulated standard.
Otherwise, your system will be similar to a universe where avant-garde Jazz singers do your taxes, and straight laced economists make music.
No offense to Mick Jagger...
Ahhh... now this is convenient...
Oracle finally has a download page for their universal content management suite, formerly the Stellent Universal Content Management suite... I had been looking for this download page every once in a while since 10gr3 was released.
The download is free, but you need an Oracle login first to access it. It comes with document management, web content management, digital asset management, and records management. You can even get the Verity integration as a separate download.
I'm a little surprised that they are making Verity available... Oracle typically doesn't like to resell other people's software. That decision probably had something to do with the sheer volume of customers who are still using the Verity search engine. I was chatting with a few other ECM vendors -- like the folks from DAY software -- at the last AIIM conference. Very few people seem to be using Verity these days, its all about FAST for the search engine.
Stellent made a FAST integration a long time ago, but very few folks made the switch... I wonder why?
Oh well, enjoy the downloads...
No surprises there... but at least now I can talk about it!
Oracle has released its first new version of the old Stellent product suite today, and labeled it Universal Content Management 10g Release 3. Its got a few nifty features that you wouldn't find in version 7.5.2...
My wife Michelle has been working long hours the past week on media briefings, and she was quoted on several big sites... including a post on CIO.com:
Users now have more choice about how they store their content, according to Michelle Huff, principal product manager for Oracle Content Management, who was formerly with Stellent.
Yep! That's my Michelle! I'd recognize her flair anywhere...
I'm not presenting (for once), but I will be doing mostly shmoozing... looking for vendors who have integrations with EMC/IBM/Microsoft, but perhaps not Oracle/Stellent.
Most of the sessions were pretty high-level. I'd rather get that info by skimming a blog than by sitting still for 50 minutes... I believe I'm not alone, otherwise Content Management software wouldn't exist!
The keynotes on Tuesday were OK. The first spent a lot of time talking about print-on-demand, which isn't exactly what makes my blood race. The next keynote was from the CEO of ING Direct. Interesting talk, and I liked hearing about his business model, but there was very little content management sprinkled in it.
The third keynote was from the VP of the Sharepoint team at Microsoft. That was pretty OK. I chatted with quite a few third party solution providers out here about it. They all said Sharepoint makes a good demo, but there just isn't enough technology under the hood to do anything enterprise-scale with it... but the guy did have 3 good points:
- There are many industries -- oil exploration in particular -- where knowledge management is critical. These industries have been on a hiring freeze for so long, that all the 50-60 year olds who know everything will soon retire, and take all knowledge with them.
- The newest generation of workers have never known a world without the internet.
- If you don't have an infrastructure that contains best-of-breed collaboration tools (blogs, wikis, instant messaging, social bookmarking, maybe even Twitter) that the young workers expect, then you will neither attract nor retain high quality talent.
There, I just saved you a trip to Boston!
The third point I think is the most salient... not having good collaboration and content management tools today, is like not having email 10 years ago. People expect to be able to search and find content on their intranet from one single source... they expect to keep in touch through blogs... they expect informal collaboration on wikis... and they've gotten good with these tools. If you can't deliver what they need to feel productive, then you won't attract the best and brightest young workers.
The corollary to that point is that, in my humble opinion, there is no such thing as good collaboration software. There are plenty of tools that streamline collaboration bottlenecks, the most useful being email... but the concept that you can install software that makes all your people/project/change management problems evaporate is beyond ludicrous. You can never replace a good manager, or a small team with a shared vision for success. Dunbar's rule of 150 will also rear its ugly head... unless your collaboration software vendor knows what the heck I'm talking about, keep shopping.
Based on my Tuesday experience, I decided to skip the Wednesday keynote by the CEO of Business Objects...
The more I use Google My Maps, the more I realize how easy it is to create a Google Mashup with Oracle's Content Server -- part of Oracle Universal Content Management, formerly known as Stellent, bla bla bla!
Here's an example of a KML file to display one point at Minneapolis:
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <Document> <Style id="style1"> <IconStyle> <Icon> <href>http://maps.google.com/mapfiles/ms/icons/blue-dot.png</href> </Icon> </IconStyle> </Style> <Placemark> <name>Minneapolis</name> <description><![CDATA[<b>Minneapolis, MN</b>]]></description> <styleUrl>#style1</styleUrl> <Point> <coordinates>-93.3,45,0</coordinates> </Point> </Placemark> </Document> </kml>
If you use this KML file in a mashup, it will display a blue dot at Minneapolis, and the pop-up balloon for it will contain Minneapolis, MN, in bold letters. I saved this to a file named minneapolis.kml, after which I can place it in a simple mashup, which is very similar to the mashup for the masses code I posted last week.
Notice how simple this format is... first you need one or more Style nodes containing information about what image to use for the Icon on the map. Then, you need a Placemark node for each point you want to display. That node contains the name, description, and styleUrl nodes to control how the location is displayed on the map. The coordinates node contains the latitude and longitude coordinates for the Placemark.
If you don't know the latitude and longitude for your locations, then shame on you! That's like not knowing your IP address... No big deal, Google has a Geocode API that can translate an address into GPS coordinates. You can do this in code by simply connecting to a specially formatted Google URL, and parsing the XML response. That sample is in PHP, but its easy to translate into any web-scripting language.
To sum up, it is amazingly simple to output KML formatted data. It would be easy to run a database query, and output this XML with a few dozen lines of code. In IdocScript, you could run a GET_SEARCH_RESULTS service, or a Schema query, and output this data with ease.
For advanced users you can even create LineString nodes for paths, Polygon nodes for shapes, or NetworkLink nodes so you can refresh your points after a specific period of time! That would be handy for the big board in the war room, so you can see when that nice green light turns red...
This and much more is covered in the KML Tutorial. Happy hacking!
Well, I'm back in London my friends... partly because I have a client our here, and partly because I really like overpriced beer.
I'm also out here to give my Enterprise Mashup talk to the folks at Stellent Crescendo Evolution 2007 in London. Mashups are fun stuff, and I'm pretty sure my theories about data modeling and data visualization will go over quite well amongst those in the financial industry out here... Those folks have tons of raw data that they'd love to visualize and analyze and capitalize... and other izes that I can't conceptualize at present.
Luckilly I already broke in all my dress shoes, so I haven't had a need for band-aids yet.
After three weeks in London, followed by two weeks in California, I was looking forward to one solid week off to catch up on things and relax a bit. And guess what?
So I'm once again behind on my blog, my reading, and my correspondence.
Anyway, I met a ton of great people at Crescendo. It feels like there's a lot of work out there, the trick is finding the challenging yet fun projects. I have a lot of good leads, and I should have time to follow up once I'm fully healed.
It was hard to get a feel about how the customers felt about the Oracle purchase. Most seemed happy, but they are also upset that Stellent will probably never be able to give a roadmap presentation with fixed dates ever again.
C'est la vie, I suppose. Gotta take the good with the bad.
The last day of Stellent's User Conference... and quite probably the last Crescendo ever.
Jo and Raquel had a great talk about Site Studio best practices. They dressed up like the Flintstones, and gave a talk about web sites so simple even a caveman can do it.
It was pretty similar to their talk last year, but they added a few extra bits about fragment caching. Overall, really good. And surprisingly well attended since it was the fist presentation in the morning after the beach party.
Then I went to the presentation on Oracle Business Activity Monitoring. It was good: its probably the most important piece of Oracle software that I know nothing about... a lot of their tools are natural extensions to content management: web center suite, web caches, single sign on, secure enterprise search, etc. But Business Intelligence and Business Activity Monitoring are pretty different beasts.
I saw the BI/BAM demo yesterday... Kellsey and I grilled the Oracle guy pretty well, and I was fairly impressed with what it can do. The tough part is knowing what kinds of data to gather and analyze.
Unfortunately, all of the Oracle talks at Crescendo were pretty high-level. I kind of wanted more nitty gritty details. I guess I'll have to download Oracle's documentation, or get a book to learn more. Maybe they'll have more details at Oracle Open World.
The keynote was good... they gave awards to Stellent customers and partners, and gave a long talk about Oracle user groups. I think those user groups will be a really good resource for Stellent users, since they are well attended and all over the world.
I went to the talk about database performance tuning by Mary Jo Hoepner, and it was pretty good. I learned about some cool new features in SQL Server 2005. I should get a book on all that...
The talk on creating digital asset management rendition sets was pretty good as well. It was nice to see how easy it was to add new processing rules to DAM. Both Image Alchemy and ImageMagick are very powerful, and easy to plug into content refinery.
Billy and Amir gave a great talk called Pimp My Content Server, which was really funny. They showed a lot of great ways to leverage Web 2.0 functionality in the Content Server, and make quick customization. I'd like it if they made their samples available, but its hard to do that last 20% to make a component easy to install. They seemed to make heavy use of some low-level schema features, so the set-up is probably complex for the average Stellent user.
After that, I went off to my talk on enterprise mashups. It was pretty well received. People laughed when I got to my predictions slide... I predicted the long, slow, and hopefully painful death of J2EE portal servers. At the end I said:
Bye bye portals! I never liked you! You're complex, and weird, and you make my friends sad.
Then I pulled out a Nerf dart gun, and shot the portal server (thanks Fishbowl!).
After that, it was the beach party. That was fun, but I think the DJ should have played longer. People just started dancing when they had to shut down. Of course, a beach party at the Hotel Del Coronado is pretty pricey... and Stellent was on a budget... so they had to draw the line somewhere.
Overall, another fun day.
I was a bit confused about one of the parallels. He said a lot of businesses obsess about worthless metrics. I agree... but to make a parallel to human intelligence, he asked "how many of you are conciously regulating your heartbeat?" He seemed to imply that this obsession with the wrong details about the business may actually be hurting the business.
True... but it might be possible that this pain is necessarry...
Didn't human intelligence evolve over a long time? Is it reasonable to think we can get close to that without the growing pains of "dumb" business intelligence first?
What's more important... to try to nail high-level intelligence for a business, or start out with dumb intelligence, simple rules, and allow a smarter organization to emerge? Shouldn't the focus be on making tools that are adaptive, flexible, and maybe a little scary? Or, does Accenture have a really good methodology that lets them skip the painful bits?
I cornered Royce and tried to ask him about this... Oddly enough, we just talked about neurobiology for 15 minutes. Then Michelle and the ladies wanted to get the birthday party started, and Royce had to write a speech, so I'll have to ask him later.
Unfortunately, Crescendo occurs about a month before the official Oracle / Stellent merger. Customers are clamoring to find out when exactly specific features will be added to Stellent's product line.
Stellent used to do that all the time, but now Oracle has a lot of legal rules about what the marketing folks can say. Therefore, a lot of the talks are about vision and strategy... not many details about the future.
The JSR 170 integration makes sense, because its easy, and customers love a standard interface to a content management system... but I was never a fan of that protocol. Its even weirder than WebDAV, and less useful. I talk about this at length in chapter 12 of my book...
BPEL based workflows makes tons of sense. I like the ad hoc nature of their workflows. As long as you can still inject code when you need, this is a very good idea.
I wasn't so thrilled with the JDeveloper demo. I talked with Hui about this a bit... we agreed that it doesn't really feel that different from JBuilder or Eclipse. I really liked the Multi Client Development feature, but the rest felt a bit too complicated.
Hui had a good point: the most impressive part of the demo was the create an EJB based web app in 5 minutes, however JBuilder had that exact same demo six years ago. It seems impressive, but nobody writes code that way. Its trying to be everything for everybody, which is really hard to to.
I also disagreed with the overall design philosophy. The lead developer talked about how people are ditching J2EE in favor of .NET simply because J2EE is too complicated. I agree... but he claimed the solution is more tools to mask the complexity. I disagree... the solution is to rewite J2EE to be easier, so people can write apps with nothing more than VI or Emacs.
My talk on making Stellent integrations was fairly well recieved. It felt like I was helping put a lot of people on the right track. I also got a half dozen business cards out of it. Tom Motzel should be pleased...
The first day of Stellent's user conference was fairly uneventful... There were no presentations Monday, just a welcome reception. I spent a good deal of time catching up with my former co-workers, and doing as much networking as possible.
I'm slowly spreading the news that I'm an independent consultant. I tried hard to keep that news quiet for a while, because I didn't want anybody to think I was fishing for clients while I still worked for Stellent. It worked a little too well: there are still a few Stellent employees who don't know I've left.
I guess my blog is a lot less popular than I thought...
I'm giving my presentation on integrating application with Stellent today. Tonight is a big birthday party for my wife Michelle. I'll blog more info about the conference tomorrow.
So I was surfing Amazon to do some xmas shopping today, and couldn't help myself from checking up on my book. I have a screen-scraper that tracks the sales rank, but I still like to check it manually once in a while...
Anyway, for some odd reason, Amazon decided to pair it with the Interwoven book on Team Site:
Odd... it probably would be better paired with a book on HTML, CSS, or Information Architecture... instead of a competitive product!
In a way it makes sense. If you are preparing to purchase a CMS, it makes sense to buy both books even if you're only going to use one, so you can compare, and choose which one to buy.
... and then decide upon Stellent ;)
Yes, the rumors are true... I have decided to resign from my job as a Stellent developer, and try my luck in the big bad world as an independent consultant! Today, December 1st 2006, is my last day.
This change has been coming for some time... I've had the run-my-own-business itch for years. I've talked about it at length with my boss and co-workers. And now, with Stellent being purchased by Oracle, the timing couldn't be better.
It feels great to be a part of something bigger than myself... like helping to create a product as uniquely innovative as the Stellent Content Server. Down in development, we were contrarians about everything. We used Java when nobody else would. We had a web based interface before most people had email. We had a data-driven framework for quickly adding features, while others used ivory tower OOP that was impossible to customize. We had a service-oriented architecture (SOA) seven years before there was even a word for it! Most of that was Sam White's vision... we were just the lucky ones who extended it to include our vision.
I can go on and on and on about newer features that we did right... but based on history, nobody will believe that it was the right design for another five years! Plus, Oracle would frown on me blabbing too much...
My favorite part is that whenever somebody said we should re-write the entire product to leverage trendy new buzzword X, we would demand a complete answer to one simple question: why? Not because we didn't want to write the code, but because we wanted to nail it: do it in a way that Just Made Sense.
We were pulled in every direction and asked to do everything: XML, XSLT, EJB, Application Servers, Portal Servers, JSP, ASP, SOAP, you name it. Some were good ideas, some were natural extensions to the product; others were an awkward fit. But we refused to ever jump on any bandwagon, or drink anybody's kool-aid... and that defiance has made all the difference.
Luckily, since we were an SOA through-and-through, we could create a loosly-coupled integration with just about anything... which helped when people demanded that we integrate with just about everything!
I know I'm leaving Stellent in good hands with Oracle. Unlike a lot of big companies, these guys really seem to get it. They know a lot, but more importantly, they know what they don't know.
For example, we have been considered leaders in content management infrastructure for years, despite being actively targeted by huge companies that usually crush the competition: IBM, Microsoft, EMC, you name it.
I feel Oracle understands that Stellent hit upon a formula that was remarkable, and I think they're really curious to know the recipe for our secret sauce. How did we constantly school the big boys, despite having less than a tenth as many developers!? He he he...
In the last lines of the last chapter of my Stellent book, I talk about what the future of Stellent could be. Little did I know, that six months later I have to rewrite the damn thing. I'll probably have to type more than just
Anyway, the final words in my book are these:
Regardless of what the future holds, you can be sure that the Stellent Content Server can rise to the challenge. Stellent has the most flexible ECM system available. Its Java engine allows it to run on virtually any platform. Its data-driven service-oriented architecture allows it to quickly integrate with any remote repository or implement practically any new specification.
In short, bring it on.
I spoke those words with total confidence when Stellent was one thousand times smaller than the competition.
And now? Well, lets just say, those guys are sooooo toast...
I found a security hole with the StartupFilter sample in chapter 11 of my book, so I thought I would alert you once I had it fixed.
I don't think the impact of this bug will be big, because after the filter runs its really obvious that the web interface is not right... so most people probably disable the component when they notice this issue.
And yet somehow I and 3 technical reviewers missed it.
Anyway, you should download the latest version of the sample code if you want to use that sample.
And if everybody could whip out the white-out, please change page 236 from using this DataBinder constructor:
DataBinder serviceBinder = new DataBinder();
DataBinder serviceBinder = new DataBinder(
If you did it the old way, then any environment value you changed would be reflected in all future DataBinders. As you can image, that would cause really weird things to happen on the web interface, and it can sometimes be a security hole.
This and any other eratta should be fixed in the next revision of the book.
This book was released on Monday, June 26th, 2006. It is currently available for purchase from APress Publishers. It is also available on Amazon.com, and ships within 24 hours. I am having a lot of fun tracking its sales rank. I also wrote a script to scrape the sales rank from Amazon.com, and store it in a spreadsheet.
The official description for the book is as follows:
The Definitive Guide to
Stellent Oracle Content Server Development is the most complete book available for this Enterprise Content Management application. It gives an introduction to Content Management, followed by an in-depth discussion of Stellent's Oracle's core service-oriented architecture.
It details how its flexible, component-driven model makes it easy to customize the appearance and behavior of the server. Focusing on the developer, this book gives step-by-step examples for creating data entry forms, designing skins, adding services, customizing the web interface, integrating with other applications, and modifying the behavior with Java. Throughout the book the author reveals tips and tricks on security, performance, metadata design, maintenance, undocumented features, and general best practices.
It is complete with appendices detailing the inner working of the Content Server. This includes a full discussion about the IdocScript language, the JSP integration layer, and some of the internal Java APIs. You will find this a vital resource whether you're just considering Stellent, or you own it and want to customize it to fit your exact needs.
Are you looking for a guide for general content server users or administrators? Oracle University offers training and manuals; one of them should suit your needs. I'd recommend the Web Based Training product for training your general users: partially because I helped create it, but mostly because its far less boring than a book. ;)
10-05-07 Update: My book is searchable via Google Book Search, so if you're having a hard time finding info on personalization or CHECKIN_NEW, you can use Google. Its not as nice as owning a PDF of the book, but it'll do in a pinch.
7-20-06 Update: I discovered a security hole in the Java component named 'StartupService'. If you have this component installed, please replace it with the latest version of the source code.
If you find and error or omission anywhere in the book, you can either:
- Leave a comment below, or
- Fill out an official eratta report with the publisher.
When I get some spare time (har) I'll see if I can trick Google into indexing the archives. If that fails, I may have to start importing them into this site.