Ayende @ Rahien

Refunds available at head office

Does you application has a blog?

I was having dinner with Dru Sellers and Evan Hoff and Dru brought something up that really sparked my imagination. To put it in more concrete words, what Dru said started a train of thought that ended up with another mandatory requirement for any non trivial application.

Your application should have a blog.

Now, pay attention. I am not saying that the application team should have a blog, I am saying that the application should have one. What do I mean by that? As part of the deployment requirements for the application, we are going to setup a blog application that is an integrated component of the application.

Huh? I am building Order Management application, why the hell do I need to have a blog as part of the application? Yes, PR is important, and blogs can get good PR, but what are you talking about?

This is an internal blog, visible only for the internal users, and into it the application is going to blog about interesting events that happened. For example, starting up the application would also cause it to post to its blog about that, which can look like this:

image

This looks like log messages that were written by a PR guy. What is the whole point here? Isn't this just standard logging?

Not quite. This is an expansion of the idea of system alert, where the system can proactively determine and warn about various conditions. This idea is anything but new, you are probably familiar with the term the Operation Database. But this approach has one key factor that is different.

Social Engineering

Using a blog, and using this style of writing, making it extremely clear what should and should not go there as a message. You obviously are not going to want to treat this as a standard log, where you just dump stuff in. From the point of view of actually getting this through, this make a task that is often very hard into a very simple "show by example".

From the point of view of the system as a whole, now business users have a way to watch what the system is doing, check on status updates, etc. More than that, you can now use this as a way to post reports (weekly summary, for example) and in general vastly increase the visibility of the system.

Using RSS allows syndication, which in turn also also easy monitoring by an admin, without any real complexity getting in the way. For that matter, you can get the business user to subscribe to it with Outlook (if they don't already have a standard RSS reader) and get them on board as well.

Now, this is explicitly not a place where you want to put technical details. This should be reserved to some other system, this is a high level overview on what the system is doing. Posts are built to be human readable and human sounding, to avoid boring the readers and to ensure that people actually use this.

Thoughts?

Comments

Stefan Lieser
08/30/2008 07:59 AM by
Stefan Lieser

Great idea Oren! This would encourage developers to write meaningful and understandable messages instead of simply throwing events and displaying stack traces to the end user.

Michael Morton
08/30/2008 08:59 AM by
Michael Morton

I agree, it's a good idea. Reminds me of the site that lets your Xbox 360 blog about itself.

Jesper
08/30/2008 10:38 AM by
Jesper

I also agree its a very great idea. I have been thinking of such a system for a while now and are planning to implementing it in our admin system soon.

The only thing I havn't figured out is how to make rss private? Is there a good way?

joey
08/30/2008 12:14 PM by
joey

funny i was just thinking abou this for our internal applications and going to pitch it to our manager.

Marcin Mikołajczak
08/30/2008 12:33 PM by
Marcin Mikołajczak

If you want to make RSS feeds private the easiest way (that works with Outlook at least) is to enable HTTP Basic Authentication and visit the RSS feed with IE to input credentials and check the option to save them. Then Outlook will transparently use those credentials to update the feed.

Arnon Rotem-Gal-Oz
08/30/2008 01:19 PM by
Arnon Rotem-Gal-Oz

I've been doing this for a while I call this pattern blogjecting watchdog after the original idea - blogjects (objects that blog- which talks of physical objects -see www.nearfuturelaboratory.com/files/WhyThingsMatter.pdf )

Arnon

Grant
08/30/2008 01:44 PM by
Grant

Great idea, I've been doing this for about a month now with some good results. By using a sharepoint 'blog' people can subscribe to RSS (if they know what it is), or via email alerts

Ayende Rahien
08/30/2008 02:14 PM by
Ayende Rahien

Arnon,

Yes, we were talking about your book and that started the conversation in that directon

Chad Myers
08/30/2008 02:19 PM by
Chad Myers

Do we need an MetaWeblogAPIPostAppender for log4net now? :)

Ayende Rahien
08/30/2008 02:47 PM by
Ayende Rahien

No, you explicitly don't want to route this through logging framework. That would defeat the whole point of changing the way people think

no longer a geek
08/30/2008 03:28 PM by
no longer a geek

Come on guys, this is the last straw. You're becoming nuts.

Ryan
08/30/2008 06:24 PM by
Ryan

I think this is a great idea. It is out of the box and I think it would let users really get involved in what's happening with the system. Plus maybe, just maybe we could get a few less phone calls.

Josh
08/30/2008 07:22 PM by
Josh

I just enjoyed the broken english title of this post, "Does you application has a blog?" ALL YOUR BASE ARE BELONG TO US OREN!

Buddy Stein
08/30/2008 10:39 PM by
Buddy Stein

Super Idea, we need a blog framework

Thomas Hansen
08/31/2008 08:31 AM by
Thomas Hansen

Good idea, though it would take more development than the actual system itself for an average size system to make it possible to not becoming a "boring logging system"...

To write a system like this which would create blog items which wasn't boring would be an IMENSE job...

firefly
08/31/2008 09:56 AM by
firefly

This is a great idea, now I don't see why log4net couldn't be extend to support something like this. perhad a void Blog(object message) :)

Mark Hoffman
08/31/2008 03:25 PM by
Mark Hoffman

Hmmm..not a bad idea. Never really thought of sending "friendly" status messages via RSS. Our support staff would love having something like this since the current logs are too terse for them to read.

Chris Patterson
08/31/2008 03:58 PM by
Chris Patterson

I think this is a great idea (duh).

Some good examples:

===

What a day!

Posted by ProductionDB @ 7:34pm

Today was a very stressful day. I spent probably ten hours utilizing over 90% of my processing power -- not to mention that my IO bandwidth was nearly saturated due to the use of XML producers in the database. Why can't you programmers get off your ass and write some efficient database logic? I mean seriously, 90% CPU on a database, what are you doing to me? Writing tight loops to build dynamic strings in SQL, only to then run those dynamic strings inside my query processor? I'm not human you know -- I can't guess what you really meant to do.

Hopefully tomorrow will be better, but my slack-ass IT department can't get the even slacker-ass purchasing department to buy me a girlfriend to help "handle-the-load" if you know what I mean. Anyway, I'm going to dump a log and hit the sack. Another busy day tomorrow I'm sure. I would say I'm looking forward to the weekend, but I'm sure it will be another joyful index rebuild to handle all the crap they're going to throw at me next week. I guess after a week of eating crap I need some time to get back to "regularity."

TTFN.

-Proddy

===

Yeah, that would be just crazy.

Peter Seale
08/31/2008 07:49 PM by
Peter Seale

I love the idea of informal communication with an app's users, but I'm thinking more along the lines of manually-created messages about system upgrades, enhancements, changes in behavior, new user documentation, upcoming (scheduled) downtime, etc. Autogenerated posts would (hopefully! :) ) only be a small slice; one category making up part of a larger blog.

But I really like the idea; an app that reports interesting tidbits about itself to the users.

Angsuman Chakraborty
09/01/2008 01:55 AM by
Angsuman Chakraborty

We are building such system in our application. However instead of blog, it is instant messages.

The only thing I havn't figured out is how to make rss private? Is there a good way?

That is simple. Use basic HTTP authentication. Most feed readers understand this and ask you for auth details.

Andre
09/01/2008 02:49 AM by
Andre

Kinda related, but our app (a Winforms app) launches a wiki in one of the docking windows. Latest news/updates are there, and we've used it to push instructional videos to our users too.

Rinat Abdullin
09/01/2008 09:29 AM by
Rinat Abdullin

Wasting development time to make system notifications read like a novel... sounds like a horrible idea.

Everything else - that's just a common idea of implementing monitoring framework (BTW, usually it is better to be external to the system being monitored). Normally such monitoring system simply has "Green/Yellow/Red" status (just like the NUnit tests).

And if the global system state is in warning status, this means that there are some unhandled notifications or possible problems (as determined by the monitoring system after applying some dsl-coded rules to the statistics returned by the specific sub-system); "red" obviously means critical errors. Composite report of such problems/errors is your application blog entry.

BTW, you can simply use CC.NET (in secured mode) + cc.tray + some publishing provider for this approach.

Sidar Ok
09/01/2008 11:05 AM by
Sidar Ok

Very good idea indeed, we need a template based infrastructure to handle notifications and do the necessary API calls to add the post to necessary blog engines.

One other good aspect of this is one can write a comment about this and this will serve as a follow up such as

I couldn't connect to the remote web service for 30 times today, there is definitely something wrong.

  • Person 1 : It is a known issue since we are reconfiguring the firewall

  • Person 2 : Actually the problem is not about firewall, I believe it is a bug etc.

And comments can also be a way to inform system (don't worry, known issue, high importance, etc) so it can be a learning system too.

Thanks for sharing it! Now let's expand and build :)

neslekkim
09/01/2008 11:25 AM by
neslekkim

Great idea!

All sorts of service providers should have somehting like this. I hate it when you have problems with browsing, email etc, and you have to ask the provider what is wrong..

Often you call them, and they say what they could have written to an blog like this, that would offload huge part of the people calling to find out...

Ayende Rahien
09/01/2008 02:54 PM by
Ayende Rahien

Rinat,

Think about the social aspects of such a system.

Ayende Rahien
09/01/2008 02:54 PM by
Ayende Rahien

Rinat,

Think about the social aspects of such a system.

Rinat Abdullin
09/01/2008 03:06 PM by
Rinat Abdullin

Oren,

having Green light on the monitoring report summary is already motivating enough, as proved by TDD and CI.

Ayende Rahien
09/01/2008 03:11 PM by
Ayende Rahien

For OPS, maybe.

But this is explicitly not for ops.

This is built to be a way to a) get developers to actually do the high level monitoring in a good way, b) to expose the application to the rest of the organization, making it easier for the org to accept it and, along the way, creating better communication and transparency.

For example, the app complaining that it is too busy will generally make it easier to get new servers, and a sob story about how slow some 3rd party is will get things moving very quickly.

You want ~3 posts a day there at a maximum, under normal conditions, but the main goal here is to get everyone aboard involved and have a good understanding of what is going on.

Rinat Abdullin
09/01/2008 03:47 PM by
Rinat Abdullin

Oren,

Why do not you want to use “pictures” instead?

They are worth 1k words each and require considerably less resources to develop, compared to the “IBloggingIntelligence” implementation.

Wire the lava lamp to the monitoring status summary and you get every single person in the room involved.

Wire the monitoring status to the dashboard piece in the project management system – you have every single project stakeholder involved.

Persist monitoring reports in some repository and build timeline graphs for the indicators in Warn/Error state and you get the intuitive visibility around the trends (optionally adding horizontal bars for the allowed levels, as defined in some project specs).

PS: sorry for the duplicate email

Ayende Rahien
09/01/2008 04:06 PM by
Ayende Rahien

Because I am not interested in just red/green.

I am interested in making what the system is doing to a wide audience.

As a simple example, a daily summary of what is going on with the app is invaluable to the business users, since they can get a feel for what is going on.

An alert that goes on the blog has immediate and concrete affect because the people who read that are also the people who has the power to move things.

It is all about the leverage that something like this gives you.

Rinat Abdullin
09/01/2008 06:42 PM by
Rinat Abdullin

Hmm... actually:

1) "project stakeholders" includes "people who has the power to move things" (as defined in wiki or the Project Management Body of Knowledge).

2) Dashboard on the project management system is the primary informational entry point for any project stakeholder (if such system is in place, of course) since it aggregates all information about the project status in the top-level report. As such, it has smaller communication gap and wider audience than any application blog. Actually, app blog could be perceived as one of the optional drill-down views of such a summary report.

Ayende Rahien
09/01/2008 11:38 PM by
Ayende Rahien

Dashboard is often meaningless to stakeholders, because it is focused on the tech details

Rinat Abdullin
09/02/2008 06:51 AM by
Rinat Abdullin

This is the Dashboard for the Microsoft Project Portfolio Server 2007:

http://rabdullin.com/wp-content/uploads/2008/09/za101659051033.jpg

You do not see a lot of tech details there.

Ayende Rahien
09/02/2008 10:50 AM by
Ayende Rahien

And I see zero reason to actually go there and look at things at regular intervals.

Rinat Abdullin
09/02/2008 11:25 AM by
Rinat Abdullin

That's because you're thinking from the development point of view.

But for the project managers this dashboard is like CC.NET for a dev.

Jeff Brown
09/03/2008 12:12 AM by
Jeff Brown

Great idea!

At least an amusing one.

Creating a blog or Jabber feed for an application assumes a-priori that we have services that can recognize and describe various kinds of common or likely faults. From a system architecture perspective embedding self-diagnostics can be very beneficial. We can also reuse a good portion of this effort by defining common back-out, retry, and fail-over schemes and coupling them with intelligible application-level interpretations.

Ayende Rahien
09/03/2008 12:43 AM by
Ayende Rahien

Jeff,

Absolutely, and the moment you try, you have to face that, meaning that you overall quality rises.

Bil Simser
09/03/2008 04:44 AM by
Bil Simser

Hmmm.. very interesting (and somewhat creepy). I'm going to look at adding this to Terrarium and creating a terrarium blog. Should be a very cool social experiment and something people might talk about. Thanks!

Comments have been closed on this topic.