Ideas about Enterprise 2.0 products and philosophies

Social Media: How to Make it NOT Useless

Many companies have been adopting Social Media and Enterprise 2.0... some of them because it sounds cool, some because they have money to burn, and others because they actually have a strategy. But eventually, the big boss will come around and ask, "What are we really getting out of all this time and energy? Let's calculate the ROI!"

At this point, you might want to brace yourself for disappointment...

I'm not saying this because most Social Media strategies I've seen are useless... just that they would be hard to justify if you break it down into black an white ROI. According to a recent report by Forrester research, the ROI calculations are fine, but they provide an incomplete picture.

For example, some online retailers found that if a product has online comments, that reduces the return-rate. Whether the comments are good or bad, it doesn't matter. People buy more of the good ones, and avoid the bad ones, which overall improves margins.

However, there are other things that are more difficult to quantify... like has you brand improved among your audien

  • Has having a presence on Facebook and LinkedIn helped us recruit better candidates more quickly?
  • Has having a presence on Twitter enabled us to enhance our brand, and improve Google rank?
  • Has having a Blog enabled us to genuinely connect with our audience, helping us whether the publicity is good or bad?
  • Has our social media presence enhanced brand awareness and/or loyalty?

If you only use metrics that measure hard current ROI, then you might be neglecting the value of reducing future negative ROI.

(hat tip Mike Melanson)

Oracle UCM 11g Now Released!

Good news! The 11g version of Oracle UCM is finally available! This version is a bit of a re-write to run on top of the WebLogic application server. Oracle has been talking about this release for some time, so I'm glad to see it finally available.

Despite the architecture change, the basic administration interface should be familiar to existing UCM customers. The install is a lot different, and you'll need to learn basic WebLogic application server administration. This isn't as tough as it sounds... you can refer to my presentation on the top 10 things UCM admin need to know about WebLogic to get started. Once you wrap your head around the concepts of instances, servers, and domains, it's not too difficult.

There are a ton of new performance enhancements in this release... when using a half-rack Exadata Machine, they were able to get 180 million 100k document check-ins per day. Note: these are full document check-ins; not merely lightweight "object" storage. Now that UCM is the repository for IPM, you can imagine how Exadata makes an excellent addition to a high-ingestion setup.

Download performance is pretty good as well... using the new Open WCM technologies, Oracle was getting about 120 Site Studio web page hits per second on commodity hardware... Is that a lot? Well, by way of comparison, Wikipedia has a farm of 249 servers, and each node gets on average 80-200 hits per second per server... sometimes spiking to 250... and Wikipedia is using a very lightweight LAMP stack, as opposed to the full enterprise JEE stack that Oracle was using for their tests. I'm sure with a additional tuning (like a CDN) you could get more than 120 hits per second with UCM... but as a general rule, if you need more than 120 hits per second, you really need more than one server!

You can download the new software in the usual place. The documentation is bundled with the rest of the Oracle Fusion Middleware documentation,

Since 11g is so new... Oracle University doesn't have any training for it yet. Luckily, my company -- Bezzotech -- can do Oracle UCM 11g training if you need it.

Oracle UCM jQuery Plugin for AJAX

I recently put together a jQuery plugin for Oracle UCM, and thought I'd share. This connector allows you to use jQuery to make UCM Service calls through AJAX, and easily display the results. This is 100% pure JavaScript, no Java, Idoc, or ADF required! You can download the plugin from the Bezzotech library page.

You will need to be familiar with jQuery before you can use this plug-in. You can start with the jQuery tutorial at W3Schools.

This plug-in is essentially a collection of wrappers around the $.post() method in jQuery, to allow you to more easily make AJAX calls to Oracle UCM. For example, in order to make a "Test Connection" button to call the "PING_SERVER" service, and pop-up a status message, you'd use code like this:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="jquery.oracle-ucm-1.0.js"></script> <form> <button id="pingServer" name="pingServer">Test Connection</button> </form> <script> $(document).ready(function(){ $("#pingServer").click(function(){ var testData = { IdcService : "PING_SERVER" }; $.ucm.executeService(testData, function(ucmResponse){ var msg = ucmResponse.getValue("StatusMessage"); alert(msg); }); return false; }); }); </script>

Notice how we have to pass function(ucmResponse){} as a parameter to the executeService method... and then fill that function with the code we want to run after the request completes. Also note that we are passing in functions as parameters to the button's click event, and to the document's ready event. Passing around functions in this way looks quite odd if you're used to object-oriented languages like Java... but it's standard operating procedure for jQuery and AJAX.

The ucmResponse object is a standard JSON data object, with the following convenience functions added:

  • getValue('value') looks in the LocalData and the ResultSets to get a value from the response.
  • getRow('resultSetName', index) gets the row in the specific ResultSet at the specific index as an associative array (hashtable) of name-value pairs.
  • findRowIndex('resultSetName', 'column', 'value') returns the first row index in the result set where the column equals the specified value.

There are more examples and instructions in the download. If you have any suggestions or requests, please leave a comment!

What Almost Everybody Gets Wrong About Collaboration

I've used dozens of collaboration systems... none of which really stood out to me. It wasn't that they were difficult to use, it's that none of them actually solved the human problems that limit our ability -- and our desire -- to actually collaborate.

It wasn't until recently that I came across a talk from Clay Shirky, which explained pretty well what was missing... Clay spoke about human nature and software and asked a very important question: why do some kinds of sharing work well, while other fail?

Well... one reason is that according to anthropologists, there really is no one thing called "sharing." We humans -- like all primates -- have three distinct ways that we share... and our brains are wired to do different things based on what kinds of sharing we are doing.

For example... I want you to imagine that a little old lady is walking up to you on the street. She makes direct eye contact, and gestures that she has a question for you. I want you to take a deep breath and genuinely imagine that she asks you one of the following three things... and take note of your emotions:

  1. she asks you for money,
  2. she asks you to help her cross the street,
  3. she asks you for directions to the bus stop

If you are like most primates, your initial gut reaction to #1 is something like "NO! MINE!" Your gut reaction to #2 is "eh... OK..." And your gut reaction to #3 is "Absolutely! I'd be happy to!"

Why??? All three are sharing, aren't they? Not quite... millions of years of evolution have wired us to react differently to different kinds of sharing. The examples above each demonstrate one kind of sharing:

  1. Sharing Goods: the gut reaction it to feel bad when you give somebody else your goods... because then you can't use them anymore, and you might not be able to replenish them. Even generous people have this initial reaction.
  2. Sharing Services: people are more generous with favors, because they don't lose anything physical... merely their time. However, before sharing your time, everybody does a little mental math. Do I have the time? Is this worth my time, or should I delegate to somebody else? Shouldn't I be compensated for my time?
  3. Sharing Information: people are most generous when it comes to sharing information... it takes little measurable time, it costs nothing, and sharing information makes us feel good. We feel good, because we feel like we've helped out one like us, and made the world a better, more knowledgeable place.

Clay used the example of Napster to illustrate his point... it took a goods sharing problem (can I have your CD?) and a service sharing problem (can you make me a mix tape?) and turned it into an information sharing problem (can I download all your already ripped albums?). People were sharing their albums online because it made them feel good.

Like monkeys with iPods...

The problem with most collaboration software is that collaboration software relies too much on "service sharing" to get people to take action. I post some information on a place for "sharing" and to make it better through input from others... but in order for that to happen, first you need to read it and understand it. That's sometimes not a big deal, but in many cases it's a significant time investment.

To make matters worse, some of these systems even make it difficult for you to do the mental math for you to determine whether reading my document is worth your time... Is this for an important project? How important? Do you need my expertise for all of this, or just a few pages? Should I be charging your department for my time? Not only is this still a "service sharing" problem, but a pretty tough one at that...

Ideally, a good collaboration system would obey the 2 minute rule. Getting information is still something of a service... but if it's a service that can be performed in under 2 minutes, it will probably "feel" more like an information problem... which makes it more likely to be done. If it takes more than 2 minutes, then it feels like a service problem, and then we're back to the mental math problem...

Getting down to the 2 minute rule is tricky... you could opt for a system like Aardvark, which tries to match simple questions with the right person to answer it... Alternatively, you could force people to jump through a few hoops first before asking a question; essentially making it easy for people to answer your question. If people can estimate the difficulty of the task and the value provided by the solution, then it's easier for them to do the mental math for the tougher problems.

Neither of these are new concepts... in fact bug tracking systems for successful open source projects use a blend of both. They'd have to, or their entire model would collapse! Although I have yet to see any enterprise level collaboration system truly adopt these concepts... probably because the enterprise is something of a captive audience. If you're lucky youll have a system that focuses on ease-of-use and good training... but adapting to human behavior isn't always high on the list. Would people still use your collaboration system if you didn't pay them? Probably not... which usually means a problem...

Hopefully the big push to "Enterprise 2.0" solutions will get more software companies thinking about making software that's a natural extension of human behavior... Maybe in a few years we'll have Aardvark for the enterprise... but I'll take my standard curmudgeony "wait and see" attitude ;-)

Should You Trust Your Integrator To Pick Your Vendor?

CMS Watch was recently asked should I let my implementation consultants pick my ECM vendor? That's a pretty tough one to answer. On the one hand, your system integrator would have a fairly informed opinion about what software would work best for your problem. On the other hand, they may have a financial incentive to push you towards one vendor over another... so even if the vendor merely guides the process, there could be danger. A biased consultant will generate a biased RFP which may intentionally favor one vendor over another. I've seen it happen many times.

Hopefully I will not alarm anybody when I confess my bias is usually towards Oracle software. I have this bias for a few reasons:

  • they have good products that are easy to install and scale well,
  • I know their products the best, so I'll be able to implement an Oracle-based solution faster than a non-Oracle solution,
  • I have a great working relationship with Oracle

This last point is more important than most people realize... The CMS Watch article focused mainly on the negative aspects of a close relationship... but there are several positive ones as well. The main one being that enterprise software is typically very complex, with all kinds of hidden features and tricky undocumented configuration. If you or your implementation team has a close relationship with the vendor, you'll be able to extract much more value out of the software you purchased.

So, what's the "fair" solution? Kick out anybody with bias? Not quite...

I usually recommend that clients get unbiased feedback to do the initial selection... The biased person should not be involved here, because they may favor products that are a bad fit, simply because it's "what they know best." However, after the initial selection, the problems changes a bit. At this point, any of the top 3 should suffice... so the question now is which one will make your team the most successful? At this point, biases are ok, as long as they exist because your TECHNICAL team knows and loves the product. If they are familiar with it, comfortable with it, and know how to maintain it, then let them go with their gut... even if it seems like "bias."

You shouldn't be afraid of technology biases: they are there for a good reason... you just need to know when to keep them in check to avoid making a costly mistake.

Finally! Oracle Gets Approval for Sun Acquisition!

Well, that took long enough! The European Union finally approved the merger... so now it's official that Oracle owns Sun (and Java!). Oracle is having a press conference about their Sun strategy this Wednesday, January 27, at 9am Pacific Time. They covered a lot of this at Open World 2009... but now I guess it will be official.

They probably won't announce the inevitable layoffs at this talk... although some speculate that 50% of Sun's workforce is redundant after the merger. I'd expect them to talk big about the Exadata V2 hardware... maybe something about pre-packaged Oracle "appliances." It would be cool to have a database in a box, or something akin to the Google Search Appliance for their secure enterprise search.

I'd also expect some talk about virtualization... ever since the BEA acquisition, Oracle has owned a very interesting virtualization solution. I'm not talking about their Linux VM; I'm talking about their Java VM. Instead of making a virtual machine of operating systems running J2EE application servers, BEA had a solution that virtualized just the application server without an operating system. Leaner, meaner, fewer security holes, and much easier to maintain. Oracle has kept pretty quiet about this technology... I'd expect it to be touted a bit more.

What's your feeling? Does anybody out there think Oracle will make an earth-shaking announcement? Does anybody think their strategy will be significantly different than what they have strongly hinted at last year?

AIIM Launches a Request For Proposal (RFP) Template for ECM

Ah, the dreaded RFP... the big giant document that you hope asks all the right questions from an unbiased point of view... difficult to write, and difficult to respond to. I myself prefer proof-of-concepts and bake-offs to RFPs... but RFPs are pretty good at weeding out the people and products you don't want.

Well, good news for folks in the ECM universe! The AIIM organization has drafted a ECM RFP Template that you can use to generate your RFPs. It's $79, but probably worth it if you are new to ECM and need to know what questions to ask. Experienced ECM professionals might not need it, but it's probably still worth checking out to see if the template suggests asking questions that you don't...

If you have feedback, they appear to have a discussion thread on Information Zen to help make it better.

My Latest Podcast on Oracle Technology: ECM, Collaboration, and Enterprise 2.0

Recently Brian Dirking interviewed me for an Oracle Authors Podcast on content management, collaboration, enterprise 2.0, and other topics of interest... You can download the MP3 and listen at your leisure. Questions include:

  • What is "infoglut?"
  • Is it fair to say most people fall short of true enterprise-wide content management?
  • How do you see "Social Media" affecting ECM?
  • What's the difference between content management, collaboration, and enterprise 2.0?
  • What's the difference between a "process worker" and a "knowledge worker?"
  • Where is ECM going in the next 5 years?

If you've read my blog or my books, I'm sure you know that I have a fairly strong opinion on many of those topics... at one point the producer had to interrupt one of my rants because we were running short on studio time. ;-)

Top 10 New Years Resolutions for ECM

A lot of folks are doing end-of-year predictions about what will happen in 2010 in the Enterprise Content Management universe. In general I'm not a huge fan of making predictions on the future of technology... the easiest way to predict the future of technology is to build it. So instead of countering their predictions with mine, I thought I'd share a list of ten new years resolutions for ECM geeks:

1) Test Your Disaster Recovery Strategy!

Yes, you probably have a decent backup strategy... but are you sure??? When was the last time you tested it? If you haven't tested your disaster recovery strategy, then you don't have one. What if your server melts? How long would it take to recover? What if your existing backups are corrupted? What if your database gets hacked and somebody deletes all your tables? Test your existing what-if scenarios... and then add one more to the list!

2) Install Necessary Patches

Are your security patches up to date? Or is there some annoying little bug that's driving you nuts, which might be fixed in a newer version? It's probably a good time to take stock of where you are, and where you'd like to be... Oracle Metalink has some pretty good advice on How To Maintain UCM and How To Maintain Site Studio. After doing the minimum, think a bit about where you'd like it to go next.

3) Learn About At Least One New ECM Feature or Technology

ECM is a fast changing field... do you know as much as you need to know about records management? How about the new features in Site Studio 10gr4? Have any new connectors been released that might make integrating ECM into your systems easier or more useful? How much do you know about Web 2.0 and Enterprise 2.0? Make a commitment to read a book or at least some blogs about something new in the ECM universe, and how it can benefit you.

4) Calculate Return-On-Investment

Some ROI is based on fairly hard-cost numbers that are easy to calculate... How much less printing and shipping did you have to do this year? Did you save money on warehouse space by scanning documents instead of keeping paper copies? Were you able to lower call-center volume with a self-service web site? Were you able to save on legal costs because your system was easier to audit?

Other kinds of ROI are harder to calculate... for example, how much time did you used to spend looking for documents, compared to now? Were you able to more effectively collaborate? Were you able to avoid problems and spot new opportunities because you had more information at your fingertips? These kinds of calculations might have to rely on soft numbers, and some end-user surveys.

5) Retire Outdated Systems

The primary value of ECM is that you can use it as a central repository for all your content... but all that value is wasted if you keep those old systems around. Commit yourself to retiring at least one outdated system. Go for the low-hanging fruit: something with useful information, that is difficult to use, and easy to replace.

6) Determine What Content Is Popular

It is always a good idea to keep statistics on what content is popular... not only does it help you determine what information is useful to your audience, it's also a great way to encourage user adoption. If you knew that your content had a below-average popularity amongst your peers, you might take some more care to make your content easier to understand, and easier to find. In other words... once rankings are public, people use less jargon, and better metadata.

It's also a good way to determine what content needs to be updated... if a one year old document is extremely popular, you might want to kick off a workflow to get the original author to make a new version.

7) Perform a General Audit Of Your Repository

Run a few performance tests on your site... spot check your users to make sue their security credentials are not too generous... see if you can simplify your workflows so they are faster... check your repository to see which metadata fields are always left as the default (a good sign that nobody uses them)... see if you can simplify your security and metadata model a bit...

8) Run Formal Usability Tests

There are a lot of great ideas on usability tests in Don't Make Me Think... but my favorite is also the most simple:

  • Come up with 10 or so common use cases for your system: why would people use it?
  • Collect 10 novice users who have never had any training on your system
  • Ask them to perform these 10 simple tasks, and don't give them any guidance
  • Videotape them
  • Force your developers and administrators to watch every minute of the tape!

Trust me... there are few things more painful to a developer than watching people click the wrong button... it will haunt them in their sleep until they make the system easier to use. Especially if you threaten to make them watch it every day until it's fixed.

9) Documentation!

Admit it: there is a little bit of black magic in your setup. Some customization you wrote, some script you hacked together, some configuration flag that nobody else knows about... Commit yourself to documenting at least three features of your solution that would be difficult for people to figure out n their own. And then -- of course -- check it into your ECM system!

10) Give Back To The Community

Got an idea for an ECM blog post? Maybe a nice presentation topic for local user group? How about some quick tips and tricks that you can share on the Oracle ECM forums and mailing lists? Then please share! At the very least, show up to local user groups and network with your fellow ECM practitioners... ARMA, and IOUG all have local groups worth checking out.

Software is like a lot of creative endeavors: the very best always create more value than they take. Which is a good New Year's Resolution, no matter who you are ;-)

Oracle UCM Security: Challenges and Best Practices

I recently gave a security talk at the Minnesota Stellent User's Group... Stellent of course being the old name for Oracle Universal Content Management. I uploaded it to Slideshare, and embedded it below:

This talk is a variation on a talk I gave at Crescendo a few years back... it covers the security risks and vulnerabilities inside Oracle UCM, and countermeasures to prevent break-ins. This talk is not a how-to for integrating LDAP, Active Directory or Single Sign On... rather it's intended to be an introduction to cross site scripting, SQL injection, and other common web application attack vectors. It's a bit scary for a while, but then it tells you how to prevent attacks.

Enjoy! And don't be evil...

Garnter Sued for $132 Million for Saying Mean Things

OK, this is just nutty...

A tiny Silicon Valley software vendor is taking on mighty Gartner, one of the technology industry's largest and most influential market research and consulting companies. The battle is playing out in a San Jose federal courtroom, where ZL Technologies is asking for $132 million in damages (plus even more in a punitive judgment), saying the research outfit damaged its prospects by ranking it in the bottom segment of its closely watched Magic Quadrant report. The MQ divides technology providers into different classes, with the bottom segment essentially forming a "do not buy" recommendation.

Blogger reactions are varied... but I agree that this is a pretty silly lawsuit.

ZL Technologies makes an email archiving product, and Gartner is not impressed with it... so in their opinion they call it a "niche" market player. Since in the US we have a little thing called the first amendment, this suit should be just thrown out. Unless Gartner is guilty of some kind of fraud... but I'd doubt it. They're too big of a firm to take that risk.

Besides... calling a product "niche" is hardly an insult. Stellent was once "niche", then "visionary," and after many many years it made it to "leader". "Niche" hardly means "do not buy," it simply means that the product might not be suitable for some industries, or some uses. In order to be a "leader", you need an innovative product with a good strategy, and a large enough organization to ensure the product will be around for a while (and not gobbled up and shut down by Open Text). Even if you have the best technology in the world, if you don't have a future vision, and the ability to grow your business, you're going to be called "niche."

I disagree with Gartner frequently -- mainly because they focus a bit too much on the "ability to execute" angle, and they do tend to ignore open source a lot... but this lawsuit is just ridiculous.

Enterprise 2.0: Ignore the Fads, Follow the Trends

A few years back, Andrew McAfee "coined" the term "Enterprise 2.0." Recently, he's been criticized on the web here, here, and here, for his definition... Critics are saying his definition is outdated, unhelpful, and flawed. Some of this criticism is a tad harsh, but a lot of it is valid. McAfee responded by re-stating what E2.0 is:

Enterprise 2.0 is the use of emergent social software platforms within companies, or between companies and their partners or customers.

Kind of light on the details, eh? He continued to define related terms like "social software", "platforms", "emergent", and "free-form"... which fleshed out the definition a bit... but still, I'm left with a big question. How is any of this actually helpful??? It doesn't mention technologies... it doesn't mention purpose... it doesn't mention value. Based on this definition alone, there's not really a compelling reason for anybody to get excited about it. Luckily, because of the Web 2.0 cool-aid, anything with a 2.0 after it will generate buzz, so people latched on.

Let's contrast this with the definition of ECM by AIIM:

Enterprise Content Management (ECM) is the strategies, methods and tools used to capture, manage, store, preserve, and deliver content and documents related to organizational processes. ECM tools and strategies allow the management of an organization's unstructured information, wherever that information exists.

Its not perfect, but it should be pretty dang clear to any businessperson what problems ECM solves, and what every day tasks will be easier if it is done right. It also makes it obvious that its about strategies and methods; not just tools and technologies.

I frequently lament that anybody is trying to define what Enterprise 2.0 is, before we even know what it is. The 2.0 clearly means that it is intended for the "next generation" of enterprise software... but what is the next generation of enterprise software? If it's nothing more than enterprise social software -- which is what McAfee says -- then why on earth do we also need the term "Enterprise 2.0"? If its just blogs, wikis, and next generation collaborating tools, then we already have a term: Web 2.0. In either case, the phrase "Enterprise 2.0" is useless.

Now, if Enterprise 2.0 is truly meant to define the "next generation" of enterprise software tools, then the term will one day become useful. However, since these tools are still being envisioned and designed as we speak, a definition is still fairly useless... since we don't know what Enterprise 2.0 is yet!

If anything, the definition of "Enterprise 2.0" should reflect the trends in enterprise software, not just the fads. Ignore blogs and wikis. Shun social software. Instead, take a good, hard look at the broad trends that will have a major effect over the next 10 years. Here is a small sample:

  • The never-ending increase in computer power: storage, network bandwidth, processor speed, and cloud computing... there will soon be another tipping point like there was in the early 1990s.
  • Retiring baby boomers, who are taking a lot of institutional knowledge with them en mass.
  • The millennials, who have never known a world without the internet, and who are natives to online collaboration.
  • Globalization: more competition means you need better tools to test out innovations. Companies need to fail faster, and learn better if they are to survive.

What do all these trends mean for Enterprise 2.0 software? It's hard to say for sure... but what is clear is that more and more of the most important data and software will emerge on the "edge" of your networks. Why have a central repository at all when the average laptops are powerful enough to run their own content management systems? The average user now has tremendous power to create content, and run easy-to-install collaboration tools. The genie is out of the bottle my friends... all we can do now is try to control the damage. Identity management, enterprise search, and distributed information management can help with security and content... but for the application proliferation problem, I'd bet on enterprise mashups.

As the baby boomers retire, you can forget the idea of teaching them new software so they can share their knowledge. No way, no how, ain't going to happen. Instead, you need a new system for capturing "people" knowledge as effortlessly as possible. My idea is to just rip-off Robert Scoble. He made a name for himself with nothing more sophisticated than a camcorder and some editing software. You want knowledge from technophobes? Why not engage them in one-on-one taped interviews? Low tech people-oriented solutions are frequently the best option for capturing content and context, although you will need something like an enterprise YouTube for consumption.

As the millennials enter the work force -- what some people call the "gamer generation" -- what will their needs be? The obvious solution is that they want something like Facebook for the enterprise. News flash: there already is Facebook for the enterprise... it's called Facebook. More compelling is the idea that employee management and business process management will evolve into enterprise simulation software. Something like "SimCity Enterprise Version". Software like this will need to be seeded with a ton of historical data, information about your processes and employees, and information about the current market. Then, you can run a simulation on the "what if" scenarios in a world of interdependent agents. This may seem far-fetched, but there is a lot of software out there right now that solves one specific piece of this puzzle... it's just that nobody has put all the pieces together yet.

We don't need another word for Enterprise Social Software... nor do we need to ride the coattails of Web 2.0 to sell the same old application with a Wiki bolted on. However, we do need to be aware that the enterprise will change a lot in the next 10 years: and not because of fads, but because of trends.

Web Form Tip: Add Excel-Like Calculation To Input Fields

When I'm filling out web forms -- especially ones with financial data -- I find myself frequently missing the ability to use Excel-like math syntax. For example, you could type this into an Excel field:

= 111 + 222

And the moment you moved to another cell, it would calculate the answer, and place 333 in the cell for you. This is extremely handy, but alas, very few web sites allow this feature. So much power in web browsers, and yet this little touch of usability is relatively absent. It reminds me of the scene from Futurama, where Phillip J. Fry and Bender the surly robot are trying to hammer out their monthly budget:

    BENDER: Now to figure out how much money I'm raking in off those twerps!  
                (Scribbles out some numbers with a pencil and paper) 
                Awwwwww, I need a calculator.
    FRY:    You are a calculator!
    BENDER: I mean a good calculator.

In an effort to help make web sites more like "good" calculators, I'd suggest adding some simple JavaScript to turn any number field into an Excel-calculator field. It's pretty simple, really... just capture the "onBlur" and "onKeyPress" events. If the user moves to a new field or hits "return", the code evaluates if the cell begins with a "=" character. You can try it out in the fields below... The relevant source code follows.

Value 1

Value 2

Value 3

<script>
	// create the always useful 'trim' function
	function trim(str) {
		return str.replace(/^\s+|\s+$/g,"");
	}

        // check to make sure the JS code is 'safe'
        function isMathProblem(str) {
                return ! str.match(/[a-z,A-Z]/);
        }

	// check to see if the 'return' key is pressed
	function isReturnKeyPressed(e) {
		var isReturn = false;
		var characterCode = 0
		if(window.event)
			characterCode = e.keyCode;
		else if(e.which) 
			characterCode = e.which;
		if (characterCode == 13)
			isReturn = true;
		return isReturn;
	}
	
	// evaluate the math, if it starts with a '=', ignore errors
	function doExcelMath(field, e) {
		if (typeof e != "undefined" && !isReturnKeyPressed(e))
			return;

		var val = trim(field.value);
		if (val.charAt(0) == '=' && isMathProblem(val)) {
			val = val.substring(1);
			try {
				val = eval(val);
				field.value = val;
				field.focus();
				field.select();
			}
			catch (ignore) {
			}
		}
	}
	
</script>
<form name="excel-webform" method="get" action="#">
<b>Value 1</b> <input type="text" name="value1" onBlur="doExcelMath(this)" onKeyPress="doExcelMath(this, event)"></input><br />
<b>Value 2</b> <input type="text" name="value2" onBlur="doExcelMath(this)" onKeyPress="doExcelMath(this, event)"></input><br />
<b>Value 3</b> <input type="text" name="value3" onBlur="doExcelMath(this)" onKeyPress="doExcelMath(this, event)"></input><br />
</form>

If this doesn't catch on, I might have to make a Greasemonkey script instead to cram this code into every web site I use...

NOTE: it can be risky to allow a user to call the JavaScript 'eval' function on arbitrary input data. They could accidentally munge up their page, or insert cookies into their browser. In most cases this will not lead to a successful cross-site-scripting attack... but depending on what you keep in your cookies, you should run some penetration tests to make sure nothing bad can happen.

Blog, or Blorphan?

Blogs, Wikis, and other Web 2.0 goodies have an important place in a broader enterprise content management strategy... but some caution is advised. As I mentioned in last year's talk "Enterprise 2.0: How You Will Fail," I think it might be more important to focus on the practical realities.

The free-flow of information is great and all, but does it translate into actual productivity? Or are you just creating faddish tools that will eventually be abandoned by users, after the novelty wears off?

Let's take blogs for example... Technorati's State Of The Blogosphere 2008 report claims that there are 133 million blogs in the world... Sounds great so far... but only 7.4 million (5.6%) of these blogs posted an article in the last 4 months! A mere 1.5 million (1.1%) posted an article within the last week, and about 900,000 posted in the last day (0.68%).

If these numbers are reflective of what you would find in a corporate blogging initiative, the outlook is fairly bleak. Assume you have a large push to get your employees blogging, and you succeed in getting 1000 bloggers in your company. If these statistics hold, that means that only 6 blogs out of 1000 will have useful, up-to-date information! Another 50 may have useful information, but it could be up to 4 months old... and possibly stale.

The rest of them could very well languish as "blorphans." One or two posts initially... but then only updated when the author is bored. In general, these posts will be tiny gems of knowledge strewn about your enterprise; usually outdated, and frequently without context.

So much for using blogs to measure the "pulse" of your company!

If you start a corporate blogging initiative, please do no attempt it without a strategy for giving people the tools and encouragement they need to keep going:

  • Have lots of helpful info on how to blog, perhaps coupled with a training program.
  • Give incentives for blogging... not monetary, but have public rankings of hot topics, hot bloggers, most linked content, most forwarded content, and the like.
  • Have a "blog for blogs," where people can exchange tips on blogging, and teach each other on the benefits of blogging.
  • Have a "president's club" for bloggers, elected by their peers, for bloggers that genuinely helped them. This could be for the best tips and trick, best breaking news, or the best analysis.
  • Use blogging tools that are easy to use, and which allow people to track their popularity, and how people tag their blog.
  • Rate improvement in blogging skills on yearly employee review forms, and be sure to give them time to blog.

Most people agree that public blogs help companies by making them more "transparent." Even if customers love your products, they will always have the fear that you might "go away" and not be able to help them in the future. Blogs from real people with real passion can help your customers feel more connected to the "pulse" of your company... even if that "pulse" is filled with stale information.

However... for internal people, the best way to keep everybody up-to-date is likely a more formal knowledge sharing process. Or you can just stick to rumors an innuendo, since company rumors are 80% correct anyway...

New Site: samplecode.oracle.com

For a long time, folks have been asking for a SourceForge-like site for Oracle consultants where they could share free code snippets. I've been trying to get one of these going for a while... but I knew it would be nothing without Oracle branding and an internal push. Well, Oracle recently announced this site:

You need to be either an Oracle employee, or an OTN member in order to use it. It's backed with Subversion (yay!), so you'll need hat to contribute. The number of projects is still fairly small at the moment... and it doesn't have a category for Oracle UCM yet. However, once it does, I'm sure we could get the number of projects there up to 20 or so ;-)

The W3C Kills XHTML in Favor of HTML 5!

File this one under its about frigging time!

The W3C has announced that it is dropping support for the XHTML 2 working group, in favor of HTML 5. Now, I'm a big fan of HTML5, but I don't see this as necessarily good news...

In the past, the W3C tried to dump HTML entirely in favor of XHTML... Here's an idea! You know all those web sites you just made? Well get ready to do it all over again... because with new and improved XHTML your rewritten pages will look and act exactly the same! Obviously, XHTML failed utterly to gain in popularity. Probably because the W3C is just plain awful at making specifications that are actually useful...

Not to be left out, the HTML faithful decided to create the Web Hypertext Application Technology Working Group (WHATWG) to try to continue development... they were upset that HTML was neglected and stuck on version 4.01 since 1999! This group included folks from Apple, Mozilla, and Opera, with some help from Google. That working group came up with some great ideas and actual functioning technology, so the W3C finally caved and made a working group for HTML 5 back in 2007... Fast forward 2 years, and the W3C finally realizes that XHTML 2 was going nowhere, so it was time to ditch it in favor of HTML 5.

Now... part of me feels this is bad... because now that they can no longer ruin XHTML, the W3C can just focus all of its energies on ruining HTML. I'm also irked by the justifications the W3C put forward about dropping XHTML:

HTML and XHTML 2 working groups were formed by W3C in March 2007. "Basically, two years ago we chartered two working groups to work on similar things, and that created confusion in the marketplace," said Ian Jacobs, W3C representative.

Yeah, right... they were doing "similar things." Not even close, Ian. Allow me to translate: the W3C doesn't have a clue what people need the web to do, so we're going to allow Apple and Mozilla to figure it out for us, then we'll claim credit!

Classy...

Let's hope the good folks at WHATWG can see through this garbage, and don't let the W3C ruin HTML 5.

Email Patterns Can Predict The Health Of Your Company

As I mentioned previously and in my latest book, data mining your corporate email can yield some pretty interesting information... even if you don't read the contents. My angle is that by analyzing who emails whom and when, you can get a sense of who is "friends" with whom... and by doing so you can hit the ground running with any Enterprise 2.0 social software initiatives.

One nugget that I never thought of was how the emergence of email "cliques" can determine whether or not your company is in serious trouble... Two researchers -- Ben Collingsworth and Ronaldo Menezes -- recently analyzed the email patters at Enron to see if there were any predictors of the impending doom. Initially, they thought they would find interesting changes immediately prior to a large crisis... However, what they found was that the biggest change in email patterns happened one full month prior to the crisis!

For example, the number of active email cliques, defined as groups in which every member has had direct email contact with every other member, jumped from 100 to almost 800 around a month before the December 2001 collapse. Messages were also increasingly exchanged within these groups and not shared with other employees... Menezes thinks he and Collingsworth may have identified a characteristic change that occurs as stress builds within a company: employees start talking directly to people they feel comfortable with, and stop sharing information more widely [prior to a crisis].

Interesting stuff... although this is only one data point. The increase of "active email cliques" is probably a good indicator of the amount of stress and negative rumors in your company, or in a specific division. However, as an actual predictor, it might not work so well. It will be difficult to know for sure, because its really difficult for researchers to get access to random corporate emails.

Also, if you institute any kind of email data mining system, people will alter their behavior. These email cliques will simply go offline if think that big brother is watching... they will probably leave some kind of a trail, but it will be more subtle, and lead to lots of false positives.

Ultimately, as a manager you're probably better off just talking with your employees to see if they are demoralized... because spying on them might only make matters worse.

(Hat Tip: Nat Torkington)

Joel on Platform Vendors

A while back I blogged about the lack of Oracle UCM "vertical applications". A vertical application is an add-on to an existing product or platform, but one that is industry specific. A lot of Oracle UCM consultants have created very general add-ons, and have sold them along with their services.

On occasion, Oracle implements one of these general features, and the add-on product becomes obsolete. Unsellable... and this can cause some grumpiness... but it doesn't have to be this way.

Joel on Software has recently had a similar rant about people who make add-ons to platforms... but in this case, he's referring to the iPhone. Similar to Oracle UCM, the iPhone is a platform... so you'll get some folks who just "fill the gaps," and others who create entirely new markets. A lot of gap-fillers had their profits crushed when the new iPhone OS rendered their add-ons obsolete. Some quotes:

A good platform always has opportunities for applications that aren’t just gap-fillers. These are the kind of application that the vendor is unlikely ever to consider a core feature, usually because it’s vertical — it’s not something everyone is going to want. There is exactly zero chance that Apple is ever going to add a feature to the iPhone for dentists. Zero.

Or, more succinctly, as Dave Winer once said:

Sometimes developers choose a niche that’s either directly in the path of the vendor, or even worse, on the roadmap of the vendor. In those cases, they don’t really deserve our sympathy.

Yes... If you make a general add-on to Oracle UCM, you have a wider possible audience... but that doesn't mean you'll be able to sell to it all! You'll have a tiny bit of market penetration, and then one day Oracle will just write a clone of what you did.

When it comes to add-ons to platforms, verticals are almost always more profitable. The market might be smaller, but it is much easier to highlight the need to your market, and the competition is less. If you make something good, odds are you'll be able to sell it for a looooong time.

"Web 2.0" is the Millionth English Word???

Well, isn't this convenient... according to the Global Language Monitor, the phrase "Web 2.0" has become the one-millionth word in the English language... narrowly beating out "Noob," "Slumdog," and "Cloud Computing."

Firstly... yes, English does have more words than any other language. The British Empire kind of spread English everywhere... and unlike French and Spanish, English acts like a sponge, absorbing every word it can find! Taboo, Tatoo, Tortilla, you get the picture.

But... I call shenanigans. I think this thing was rigged to get maximum press coverage. "Web 2.0" is not a word, its a phrase. Also, it has been around for about 7 years now, and was hugely popular in the technology field for the past 5. It is a much more common phrase than "Cloud Computing." The word count folks claim that it needs to be mentioned 25,000 times before its an "official" word... But the New York Times alone mentioned it on 2,700 occasions! I'm sure a survey of other sites would demonstrate that this word hit the 25,000 sweet spot many years ago...

Others are likewise skeptical:

Part of what makes determining the number of words in a language so difficult is that there are so many root words and their variants, said Sarah Thomason, president of the Linguistic Society of America and a linguistics professor at the University of Michigan... Thomason called the million-word count a "sexy idea" that is "all hype and no substance."

I'll agree there...

Oracle Glassfish Now Supports Jython and DJango

Oracle -- as you know -- plans on purchasing Sun and all their Java-licious technology. This includes the open source Glassfish application server, which is a free competitor to Weblogic, which Oracle obtained in the Sun BEA acquisition... and they both competed with OC4J, which was Oracle's application server prior to 2008.

I -- along with everybody else -- am very curious to see how all this plays out... It certainly appears that OC4J has lost favor, and Weblogic stole the show... but now Oracle "owns" an open-source alternative to Weblogic as well. So which one should you choose? Naturally, this depends a lot on what out-of-the-box features and integrations you need... But if I were a developer creating a new application from scratch, I'd probably go with Glassfish. Besides being open source, they will soon have built-in support for JRuby/Rails and Jython/DJango web frameworks. To me, that says the people behind Glassfish really "get it" when it comes to delivering web frameworks that make developers more productive...

According to Vivek Pandey's blog, the latest preview release of Glassfish v3:

  1. Provides GlassFish v3 connector and deployer as OSGi module. Which means that deployment of a Python application will trigger Jython Container code.
  2. Wire up the HTTP request and response at very low level by implementing a GrizzlyAdapter, hence resulting in better runtime performance and scalability using grizzly scalable NIO framework.
  3. WSGI (Web Services Gateway Interface) is a Python standard to wire a Web Server to Python web frameworks such as Django or TurboGears etc. Jython Container implements WSGI interface and so it would be pretty easy to add support for various Python web frameworks. Currently, we have Django and we will have others such as TuroboGears, Pylons etc.
  4. Currently Jython Container is available thru GlassFish v3 Update Tool. In the future it may appear with GlassFish v3 core distribution.

His blog also has step-by-step instructions about how to enable Jython and DJango... with luck, this will be rolled into the final release, so these steps will be easier.

I'm also curious to see what Jake and the AppsLabs boys might think about Glassfish... those guys are building some of Oracle's most "social" applications, and they are big JRuby/Rails fans. I'm more of a Python/DJango guy myself. I've said many times that if I were to rewrite the Oracle Content Server from scratch, I'd probably have picked DJango as the core framework... But DJango in a Java container??? That's even better! Quick coding, easy modifications, plus the reliability of Java.

But that's just for my needs... others may prefer the "Weblogic way" for different reasons.

Recent comments