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:
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
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.
I agree, it's a good idea. Reminds me of the site that lets your Xbox 360 blog about itself.
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?
funny i was just thinking abou this for our internal applications and going to pitch it to our manager.
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.
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
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
Arnon,
Yes, we were talking about your book and that started the conversation in that directon
Do we need an MetaWeblogAPIPostAppender for log4net now? :)
No, you explicitly don't want to route this through logging framework. That would defeat the whole point of changing the way people think
Come on guys, this is the last straw. You're becoming nuts.
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.
I just enjoyed the broken english title of this post, "Does you application has a blog?" ALL YOUR BASE ARE BELONG TO US OREN!
Super Idea, we need a blog framework
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...
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) :)
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.
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.
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.
We are building such system in our application. However instead of blog, it is instant messages.
That is simple. Use basic HTTP authentication. Most feed readers understand this and ask you for auth details.
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.
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.
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 :)
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...
Rinat,
Think about the social aspects of such a system.
Rinat,
Think about the social aspects of such a system.
Oren,
having Green light on the monitoring report summary is already motivating enough, as proved by TDD and CI.
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.
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
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.
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.
Dashboard is often meaningless to stakeholders, because it is focused on the tech details
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.
And I see zero reason to actually go there and look at things at regular intervals.
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.
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.
Jeff,
Absolutely, and the moment you try, you have to face that, meaning that you overall quality rises.
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!
Comment preview