February 17, 2010

 

Missing the Target, Accurately

 

I've been blogging since 2000. That's a long time in internet years. I've blogged about college life on Livejournal, about Soccer Refereeing on Blogspot, and about personal and computer topics at my old Gaming Clan's site, and most recently, here.

I've used Movable Type, Wordpress, TypePad, Livejournal, and BlogEngine.NET. They have one thing in common: They all miss the target, accurately.

That's not to say they're bad, but none of them are great, either.

Or, as Winston Churchill might put it:

Even Winston churchill thinks Blog engines suck

It has been said that Wordpress is the worst form of blog engine except all the others that have been tried.

For most of my adult life, I couldn't put my finger on why I disliked each blog engine, but it just felt like something was amiss. Until this question about creating a blog engine on Stack Overflow:

Cal Henderson (of Flickr fame) gave a keynote "Why I hate Django" at DjangoCon 2008, which is well worth a watch for many reasons. In one bit he asked how many of the audience were working on blogging engines. So many people put their hands up in fact that of those that didn't he asked "Why aren't you?"

Anecdote aside, I see so many questions and answers here that relate to building blogging engines I just have to ask, since I don't get it: why are so many people writing what surely must've been written countless times already? If you are writing one such engine, why are you? Because I seriously don't get it.

I'd thought about that for a long time too, but then I saw this answer:

Honestly? I think it's probably some combination of the following

[...]

  • It still hasn't been perfected (and amazingly, it hasn't)

He goes on to write:

I could never shake the nagging irritation I felt when I couldn't get TypePad to do something I wanted, however trivial. Why, again, couldn't I search my own freaking blog? To find an old entry, I had use either the next/previous links (lame), category links (assuming I'd bothered to categorize the entry I was looking for) or even worse, the proverbial "archive" links, organized descendingly as they are by date, hoping I might get lucky and choose the right month-year combo during which I'd happened to submit the entry in question. And why couldn't I just create a new, non-blog-oriented page containing some other kind of managed content, like my reading list, or a collection of movie reviews? Sure, I could succumb to the rigid structure of the TypePad system and simply "tag" all movie reviews as "movie-review" and dump them into the blog alongside everything else -- but why should I have to do that? I was an engineer, for God's sake -- I'd done this before. A blog was just CRUD -- a web app in its simplest form. Why hadn't anyone gotten one right, after nearly a decade of requirements gathering?

Screw it, I thought. I'm going to do this myself. Again.

Indeed, I feel the same way about BlogEngine.NET (that's what powers this blog). In no particular order:

  • Tattered Blog Layout (seriously, have you seen the front page of my blog?)
  • Posting Code is a nightmare.
  • WYSIWYG editor is so 2000 and late.
  • I can't publish entries ahead of time without mental and physical gymnastics
  • No mechanism to delete drafts
  • The user experience is annoying at best.
  • Oh, and passwords? Stored in plaintext.

Experiencing Stack Overflow's handling of  posting content was my lightbulb moment. Until that point I never thought it could be better for us. It is:

It's almost as if Stack Overflow was meant to be a blog:

It's a venn diagram.

Leave the blog part, and you have what I want out of my blog engine.

Features:

  • Easy to post using Markdown
  • Live Preview
  • Posts and Comments should be able to be voted on
  • No nesting of comments
  • Clean, uncluttered UI
  • RSS
  • Post Scheduling
  • Open ID authentication
  • ReCAPTCHA
  • Invisible Rate limits
  • RESTful URLs
  • Adding Non-Blog content as easy as adding Blog content

A Blog engine should make it easy to blog. It should be even easier than easy; it should be a joy to blog. 

I asked Jeff Atwood in an email whether or not the Stack Overflow team was going to branch out their source code and take this type of project on (since many of the underpinnings are already there). He declined, so I'm going to do it.

Wish me luck.

 


View Comments: Comments (9) |

Comments


February 17. 2010 02:43
Galilyou
No I see a reason why every man with his dog wants to build a blog engine. Good luck!

http://galilyou.blogspot.com/http://galilyou.blogspot.com/


February 17. 2010 02:53
Patrick McElhaney
I've noticed that web sites that do a good job of managing conversations trend toward a particular format. There's an item, responses to an item, and comments connected to responses. That way all responses to the item aren't mixed in with responses to the responses.

Items can be voted up/down or rated, which affects where they appear in search results. Responses can be voted up/down, with the most popular responses appearing first. Comments can be voted on, which doesn't affect their sort order (so the discussion timeline is preserved), but low rated comments may be hidden.

Also any author can edit/delete his content, which allows corrections / clarifications to be rolled into the original post, so that entropy actually decreases.

Stack Overflow (of course) and Amazon are both designed that way, and a number of sites are close. I'm hoping to find one more example so that I can call it pattern.

I don't know if there's a blog engine that works that way. If not, there ought to be. Good luck!

http://www.twitter.com/patrick_mchttp://www.twitter.com/patrick_mc


February 17. 2010 02:56
George
One thing I agree with Jeff on is that the 'forum' nature of sequential comments break when you get over a certain size (and don't even think about threaded conversations). Granted, most bloggers will never hit this magical number of comments, but it is there.  If comments can be voted on, then readers coming to a blog page will see the highest rated comments first, the cream of the crop, and not have to wade through hundreds of comments to see anything of value.

http://blog.yapb.net/http://blog.yapb.net/


February 17. 2010 06:04
Phileosophos
So in what ways do you find Wordpress lacking, G? I've been pretty happy with it for the most part. I wish I didn't get so much comment spam every day, and I'd like the searching to be a bit more powerful, but it handles almost everything else with aplomb.

http://phileosophos.com/http://phileosophos.com/


February 17. 2010 06:15
George
@Phileosophos

Re: Wordpress.

- Bloated Architecture. The "Microsoft" of the Blog world: Big, targetted for attacks, and always updating because of a security vulnerability.

- WYSIWYG editor. Not fun, especially when posting code. I can drop and do the HTML myself, but that's also a pain.

- Comment Spam is not handled rationally at all.

- Conversations in comments do not scale; no mechanism to separate the wheat from the chaff.

- Written in PHP. Since I'm primarily a .NET developer, I want to stick to a blog engine written in .NET (ASP.NET MVC, to be precise) as more to show we can play with PHP and win.

Otherwise, it's not a bad blog engine -- it's just not well suited for programmers.

http://blog.yapb.net/http://blog.yapb.net/


February 17. 2010 18:11
Phileosophos
Interesting. As to the "bloated" architecture, I definitely see the targeting for attacks bit. As to the updating, I've had to update three or four times in all the months I've been using it. That doesn't seem like a lot to me, but maybe that's because Microsoft is busily updating at least one of my machines every day.

I haven't done much code in the WYSIWYG editor, and I'm used to having to format everything by hand, so maybe that's why it doesn't bug me. I guess your complaint means there are better blog engines out there in that respect?

I'm not sure how you want comment spam to be handled. I wish I knew more about it, so maybe I could set up some kind of auto-rejection thingy. As it is I basically have to white-list anyone I want to post. That could be better, but compared to my previous blog (which had no anti-spam), it seems like a step up.

As to the conversations, yeah, no threading is a drag. I'm with you on that one.

As to what it's written in, I don't really care if I'm not maintaining it Smile

http://phileosophos.com/http://phileosophos.com/


February 18. 2010 06:18
Juan
Why don't you try to add markdown to an existing engine, such as http://www.dotnetblogengine.net/

http://www.juanformoso.com.ar/http://www.juanformoso.com.ar/


February 18. 2010 06:28
George
BlogEngine.NET has a number of issues with it that would need to be resolved first:

1. URLs are not in lowercase correctly (they should be).
2. Viewstate and other ASP.NET specific items make it an 'unclean' platform to use.
Specifically, bloated page size, controls named wonky things
3. Publish future date problem and
4. the deleting drafts problem

Instead of fixing these issues, I may as well create one that I can use, take pleasure out of using, and let that Project's maintainer conduct his project how he wants to.

http://blog.yapb.net/http://blog.yapb.net/


February 19. 2010 13:40
John Sheehan
I commend your "There must be a better way" attitude. But I've got to defend WordPress as a hardcore ASP.NET MVC dev.

1. Updates/Security: They take two clicks to install all from the admin. I've been running it for a few years and never been hit with anything. Not only do they patch issues fast, they add features faster than anyone. They also have far more exposure so issues get discovered and fixed faster. If you have security issues on your blog, you're on your own.
2. Comments: Use DISQUS. Handles threading, voting, spam, etc. They sync to your local WP database. You can reply to comments via email.
3. Extensibility: WP themes are cake even if you don't know PHP. There are plugins for everything you need. It's like jQuery: the shear size of the extensibility community is a feature of the product.
4. Editing: You can use markdown and installing a code highlighter is easy. Just post your code in a <pre> tag and it's handled automatically.

I'd like to see more devs spend their time putting tools to work instead of building more tools all the time. Why not spend your time on the content instead of yet another CMS? If you haven't tried using Wordpress you should at least give it a spin.

http://twitter.com/johnsheehanhttp://twitter.com/johnsheehan

Add comment


(Will show your Gravatar icon)

biuquote
  • Comment
  • Preview
Loading



Recent Comments

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.