Wednesday, March 15, 2006

Blog Or Get Off The Pot

I hate blogs.

It's not that I hate them, really; I just don't like the "diary" format. It doesn't suit my needs very well.

However, I have this day job, you know, just like you probably do. And that takes up most of my time. If there's any time left, I'd like to spend some amount of it actually blogging, as opposed to dicking around endlessly with software and configuration just to enable me to blog the way I want to. If I'm going to dick around with coding stuff, I'd rather do something other than that.

But I hate blogs. The format's not right. Chronological ordering of my posts just plain sucks. It forces you to dig around through monthly archives, wondering if there's anything good in all the crap I spew out.

What I want is closer to my own personal Reddit, or Digg, or something like that (but not quite like them, either). I don't want you to come to my site and see what I've posted most recently. RSS can take care of that. I want you to see what other people have voted as my best entries. On my site. You shouldn't have to go to Reddit to get a decent directory of my blog. Anyway, you can't; anything that makes it onto Digg or Reddit or is mixed in with everything else, and gets bumped down into oblivion by stuff that's newer and/or better.

Blog entries should be organized by popularity, not time. Or ideally, you can pick either one. Why the hell don't blogs do that?

But it's got to be even better than that. Having a self-organizing browse interface like Digg's on my blog page would be nice, but I want more.

For instance, I want inline comments. Putting everyone's comments at the end is pretty lame. Even worse, most blog packages these days don't even seem to have Slashdot-style threaded commenting. Instead, the comments are ordered chronologically, just like the entries. So the comment threads are invisible, and commenters have to say stuff like "um, actually I was replying to Dave, not Peter", and quote each other heavily -- a whole subculture of commenter hacks, just to fake threading.

Why the hell don't blogs have threaded comments? Sure, sure, some do. But that's still not enough. Not by a long shot. They need threaded comments and inline comments.

What do I mean by inline comments? I want people to point at a particular sentence I wrote, get all excited or pissed off about it, and say "I want to comment on THIS! This point right here!" So when you're reading, you should get to that part, and see a little icon or link that takes you off to a comment thread on that particularly interesting or disputed section.

In other words, the commentary on a blog entry should grow outward, not downward.

And I want versions. I want to make changes to my entries sometimes -- heck, frequently. But that's culturally weird, and feels dishonest to me, because I've sort-of permanently overwritten the old version. I think people have a right to see how my ideas changed over time, after they yelled at me or made brilliant observations or whatever. So people should be able to see the revision history for individual posts.

It's starting to sound slightly Wiki-like, isn't it? Yeah, a little. But what I want doesn't exist today. It's not a blog, and it's not a wiki, but it's similar to both of them. I want an essay-publishing system, basically.

All that revision-history stuff complicates the commenting, of course; each comment has to keep metadata about which blog revision it was talking about. It's even more complicated if you have versioned comments, so users can go back and fix their typos or change their minds. But it's not like that stuff's impossible, is it? Aren't there companies whose full-time efforts are going into making cool blog software?

Blogs have evolved into the dominant form of self-publishing, and yet nobody's doing it right. To me, that can only mean one of two things, both depressing. Either nobody's been clever enough to figure out an interface that actually works for people who aren't just posting their daily cat picture, or web programming is so insanely hard that nobody's been able to get features out fast enough to keep pace with the ideas.

It's probably a little of both. But my God, if they're hurting for ideas, all they need to do is ask. They're bursting from me; I can't keep them in anymore.

Want some? OK. Here's one: I'm sick of global configuration options. Global config options are so 1970s. When I go into Firefox, I want to be able to override every single configuration option on a per-page basis, or even better, with url pattern-matching rules. Doesn't that seem just patently obvious? And yet there aren't any browsers that let you do that. (Or are there? You tell me. Wouldn't it be nice if you could put an inline comment right here letting me and all the readers know?)

Same goes for my blog software: I want per-post configuration. It seems like I should be able to specify different stylesheet templates for each entry if I want — at least for different categories. Technical posts should have a different stylesheet from the posts about my last vacation.

And I should be able to change the settings for how I'm notified about comments on a per-post basis, because I'll care more about some of them than others.

Isn't all this stuff obvious? How can people not think of this stuff?

Oh, and not to put too fine a point on it, but how about a decent content-editing tool? Blog software packages can't seem to get this simple thing right. You pretty much get simple "convert line breaks" behavior, or you can embed HTML tags and screw with them for hours until you figure out how to make the blog HTML renderer behave the way the exact same tags work in every other page in your browser. If you're lucky. Sometimes it's just impossible, and you have to live with their screwed-up interpretation of the spacing before/after an ordered list or a heading element or whatever.

Can it really be that hard to get this stuff right? O'Reilly's group blogs don't even put a frigging blank line after a heading element, so your first sentence is smooshed right up under the heading.

I'm not asking for WYSIWIG here; I realize that's almost impossible given the amazingly crappy mix of browser technology standards we have to work with today. All I'm asking for is something halfway decent, like you get from any Wiki worth its salt. RedCloth would be my personal preference, but gosh, just about any wiki-style markup language would be preferable to the current choices ("convert line breaks" or "embed HTML tags that don't work properly") that most blog systems give you.

So I've been meaning to set up a public blog for nearly a year, and I haven't done it because all the blog-hosting options are just so wrong. I've been struggling with this whole issue -- not having the right self-publishing software -- and wondering whether to try writing it myself, or to just bite the bullet and live with the crap that's out there today.

Giving it the Ole College Try

How would I approach writing it myself? Well, I'd probably use Ruby on Rails. I don't think it's the end of the evolutionary road for web programming, not even close, but damn if it isn't so much farging better than the alternatives. I plan to blog about my vision for web programming of the future at some point. I think you'll like it. But for now, we've got Rails.

With Ruby on Rails, you can actually think about writing your own blog software. That level of grandiose ambition (and it is grandiose if you have as little free time as I do) enters the realm of plausibility. Until recently, it just wasn't a feasible part-time effort, because, let's face it, Web Programming is a Big Crap Sandwich, and we all have to take a bite of it. But Rails makes the idea at least conceivable.

So the other day, I poked at it a little. I set up a Rails server with Apache and SCGI, and then immediately thought -- HMMMMmmmmm, if Rails is so cool, then maybe someone's already written a blog software package in Rails. I could set that up, and since it's Rails, and I'm familiar with it, I could start evolving the software in the directions I want it to go.

Well, it's true. There is one. It's called Typo. But I have no idea if it's cool or not, because you can't install it. I mean, you can, but not in the amount of time I'm willing to allot to the effort. There's almost no documentation, and what docs exist are all completely outdated, because apparently most software developers still don't understand that nobody will use their shyte if they don't document it. The Typo folks are far from the only ones guilty of this.

And as if the Typo doc situation weren't bad enough, Rails doesn't have a model yet for hosting multiple applications in the same Rails codebase. You have to manage them as separate code trees, and handle all the routing in your webserver. Which is pretty lame, if you think about it, because Rails has a really cool routing-rules minilanguage, so why the hell can't you use it for your routing? So I have to keep Typo and any other Rails apps I want to run in their own little jail cells, with Apache as the illiterate prison guard who can't understand complex instructions I want to give it.

Dammit, what's a person to do?

I wonder how software engineers set their priorities, sometimes. Are the Rails folks even thinking about the multiple-app installation problem?

And look at MovableType, which still evidently doesn't have threaded comments, but they support group blogs. But what good is a group blog? They're just weird. I haven't seen one that works well. Maybe there are a few out there. But what percentage of all blogs do they really constitute? It doesn't seem like it was the most important feature to add.

I'm just speculating, though, since I haven't looked at MT in a long time. I'm not a big fan of Perl anymore, and I'd rather throw my weight behind software written in languages I at least like a little bit.

And yeah, I'm sure you'll all want to tell me to please try your blogging software cuz its k00l. But I can't frigging install them all, only to find they suck as bad as Typo did. I've installed MovableType before, and it took at least half a day of tedious labor. I'm sure YOURS will also be a day of work. Forget it; there's no point in wasting precious days evaluating your probably-broken software and digging around your probably-missing documentation. There are plenty of hosts out there, and after looking at Typo, I decided to use one.

Supporting languages I like is partly why I picked Blogger; it's got a mix of Java and Python folks working on it, or so I've heard, and I think Java and Python are a darn sight better than Perl. Python, especially. It's a good language. Also picked Blogger because I have some friends that work there. And I hear it's going to get better at some point in the future. And "Blogger" is a cool name. So I'm willing to live with its inadequacies for now.

So I'm going to start blogging. It was blog, or get off the pot. Posting static HTML pages was ridiculous. (But hey, I honestly didn't think anyone was going to read them. It didn't really become a problem worth thinking about until late December.)

What will I blog about?

I have a lot of stuff to say. For one thing, I've realized that I have more ideas than time. Way more. It's not even close. I've been hoarding ideas for several years now, hoping I'd find time to get around to implementing (or documenting, or publishing, or whatevering) them someday. But it's not going to happen. Software and documentation both take time to write. Lots of time. If I come up with ten ideas that take 5 years each, I'm pretty screwed.

I did a 5-year idea once. I had an idea for a game in 1993. I knew exactly what game I wanted to play. I could envision it and even describe it in great detail. It was a fusion of all my favorite games to date: Nethack, Darker Realms LP Mud, Ultima IV, and Crossfire. A multi-player, tile-based, graphical MUD. I knew it would be a wonderful game, and yet nobody was writing it, or even discussing it. After a year or so, I realized nobody was thinking about it like I was. But I wanted to play the thing, so I decided to buckle down and write it myself. I figured it'd take me about 18 months. I mean, it's a tiles game; how hard could it really be? So I started working on a design in 1996, and started coding in 1997.

18 months, what a joke of an estimate. The game was pretty much "done" the way I'd originally envisioned it after about 5 years. I spent another 2 years pushing it to new levels; after actually having it online, new ideas started really coming in, both from me and from the players. After a total of 7 years, I threw in the towel, because my productivity had slowed to a crawl, all because of Java. God, I wish I'd picked Python. Or Common Lisp, or something that supports dynamic development. But in 1996, Java had great marketing, so that's what I picked. Thanks, Sun! You screwed me!

Half the game's written in Jython now; it simply isn't possible to do an extensible game like that in Java. You either write your own minilanguage or you use a JVM language; those are your only choices. People are adding code to the game right now, as we speak, and they're changing it on the fly. They can't go rebooting the f***ing server with a hundred players online every time they want to make a change. Java just doesn't work for that kind of application. Nor does C++. So all online games use dynamic extension languages. No exceptions.

Five years, that's how long that little idea took. Plus 2 years of adding bells and whistles. And that, folks, is why I'm giving in and using a blog host. Because I have lots of ideas, lots of things to say and to explore, but only a few dozen years left at best. I can't afford to go chasing every 5-year idea that springs to mind. After due consideration of the crap web frameworks and crap blog packages out there, I decided that I don't want to spend my next 5 years implementing my vision for a decent self-publishing system. Someone else can do it.

But those static HTML pages had to go. I had to blog or cut bait.

So here we go. I'm blogging now. I hope you'll like it!


Anonymous Anonymous said...

Great! But the link at your site is broken -

6:28 AM, March 15, 2006  
Blogger Justin D-Z said...

I'm writing a MUD in Ruby right now.

I started with Java - this is how I learned java. Man I hate writing accessors and mutators.

I tried in C# - this is how I learned C#. Man I hate the MSDN KB. Actually, I just blogged about it because doing so kept me from vomiting.

Now I'm going in Ruby. Oh man. There's no comparison. It really is 3x better in 1/3 of the time with 1/2 the code (or less).

I think a MUD project is a good way for me to learn better software engineering--threading, polymorphism, plug-ins and other things in the context of an event-driven system. Would you agree with this statement? Or, could you suggest another chewable project that is a good general exercise?

6:52 AM, March 15, 2006  
Anonymous Anonymous said...

Keep an eye on ycombinator's infogami. The creator has strong ties to the reddit crew and is probably pretty well placed to realise your redditblogiki idea.

9:17 PM, March 15, 2006  
Anonymous Anonymous said...

Hmm, the inline-comments-idea is really good, but how to implement it? How do you specify the text to comment on? Per paragraph, per word, or per character? Comment on comments, or comment on words in comments too?

How to display them? Next to the text, in a balloon? Hide them by default?

Versioned post are good, but versioned comments? Doesn't this make the system too complicated?

If I have time, I'll try to create something like inline comments. Versioned posts/comments should be easy to do with acts_as_versioned.

So, three views: by tag, by date, and by rating.

10:53 AM, March 16, 2006  
Anonymous Anonymous said...

i feel very similarly about there not being enough time, in general; there's just too much stuff out there!

you, for example, have a really interesting blog. i read some of your book recommendations (notably geb, a book i too intend on finishing one rainy day/week/year ;) and articles on dynamic languges, checked out your game, etc... while this may come off as being, um, dunno, condescending maybe, there are just *zillions* of great resources like this out there, all needing to be read! :/

(for example, i spent nearly a straight week once reading all of charles bloom's blogs, rants, coding logs... don't even get me started about wikipedia, tabbed browsing and grouped bookmarks...)

what's an eternally curious person to do these days? on the one hand, it's great that there's so much information accessible to everyone, but on the other, some people (such as myself) can feel very "stretched" and disoriented at times amidst the constant buzz of a million minds working and publishing at once...

one constantly has to choose between catching up or doing one's own thing, and as time goes on it's becoming increasingly difficult to take breaks if you want to stay current in any decently technical field. at least this is how it seems to be me now, relative to say 1995.

5 years to fully flesh out a single idea is about right, and any decent programmer should be having many decent ideas each and every day (involuntarily, need-a-notepad-in-the-shower moments). in my case this produces a constant feeling of guilt, that i should be doing a thousand things (besides the stuff i need to do irl) and that i'm constantly "missing things" and "out of the loop" :(

i hope i'm not the only one who suffers from this from time to time!

-thomas (

5:07 PM, March 16, 2006  
Blogger Phil said...

For instance, I want inline comments.

Nobody else I know has a blog with posts as long as yours. If all your entries were less than 2k, inline comments would be less important.

Not that I'm complaining; I enjoy your long posts. I'm just pointing out why you have an itch that nobody's scratched yet.

Now go learn greasemonkey and do it.

9:26 AM, March 17, 2006  
Blogger Phil said...

In other words, the commentary on a blog entry should grow outward, not downward.

It's not exactly what you're talking about, but Fugi creates a 2D commentspace.

9:35 AM, March 17, 2006  
Anonymous Anonymous said...

I just found a program called "Pligg" (a Web2.0 CMS, whatever that means). It doesn't have inline comments, but it does appear to have popularity scoring of articles.

9:35 AM, March 17, 2006  
Anonymous Anonymous said...

Has anybody else come across people posting software releases as blog entries? It's CRAZY! You find yourslef linked to some blog announcing product V1.2.3 and you have to trawl through all their other crap to find out if it's the latest version or not.

Anyway funny coincidence I was reading through your drunken rants just yesterday Stevie and now here I am. Oh yeah also learning Ruby it rocks.

1:31 PM, March 17, 2006  
Blogger Steve Yegge said...

> Now go learn greasemonkey and do it.

That's really not a bad idea at all. I love GreaseMonkey, and write gm scripts all the time. I even spent some time while setting this blog up thinking about how I'd go about "deploying" a custom GreaseMonkey script just for my blog. I suppose I could host it over on my cabochon site, but it'd be nicer if Blogger offered some minimal file uploading support.

Anyway, thanks for reminding me. I'll ponder it.

2:58 PM, March 17, 2006  
Blogger Steve Yegge said...

> Hmm, the inline-comments-idea is really good, but how to implement it? How do you specify the text to comment on? Per paragraph, per word, or per character? Comment on comments, or comment on words in comments too?

I was thinking per-paragraph, although of course it's tricky, since the original poster could delete or insert paragraphs, including that one in particular. You need a reliable way to tie the comment thread back to the text that sparked it. So maybe I'd just save the paragraph and the approximate document location, and just have that original paragraph duplicated at the top of each inline comment thread. Then no blog-entry versioning is needed. Maybe the blog author could move the balloons around to new document locations if the blog undergoes any significant surgery after posting. Yeah. Don't try to hard to figure it out algorithmically; just let the blog author deal with making it all line up after edits.

> How to display them? Next to the text, in a balloon? Hide them by default?

I was thinking a slim gutter/margin, with a little balloon next to any paragraph that has a comment thread. Assume any comments on that paragraph are part of the same thread. Show/hide would be nice, but probably isn't critical.

> Versioned post are good, but versioned comments? Doesn't this make the system too complicated?

Yes, don't worry about versioned comments. :)

> If I have time, I'll try to create something like inline comments. Versioned posts/comments should be easy to do with acts_as_versioned.

Sounds like a Rails person talking here.

> So, three views: by tag, by date, and by rating.

That would be exceptionally, *exceptionally* cool. Especially if it were documented. :)

3:07 PM, March 17, 2006  
Anonymous Anonymous said...

I read some of your drunken blogging posts. They're interesting. This won't change how you feel, but seeing as I feel the need to air this out and your provision for nameless guys like me the opportunity to post comments, I'll take it.

In regards to the interview chronicles regarding how someone was aweful or saved themselves during job interviews, I'd have to say you're a bit of snob aren't you? Granted the people you plan to hire will be paid substantial amounts of money to do good solid work, I think you're the kind of interviewer who tends to mold the people who work under him into little clones of him. "You must know this for me to consider you a 'true engineer' otherwise, I will boot you out the door." I think it's narrow minded and it's a wonder why more people don't go into the technical fields with the people who are currently populating it. Egoists and snobs even if it is deserved.

8:32 PM, March 17, 2006  
Anonymous Anonymous said...


Thanks for writing this, I found it quite interesting. However I don't agree completely, for example you wrote that you can learn a lot w/o doing exercises. For me I think i only understand if I solved a problem myself (that means after reading theory and studying example do some exercises)

You also wrote that it's good to spend some time on surfing on wikipedia, so I will try this now. Let's see what I learn..

5:46 AM, March 18, 2006  
Anonymous Anonymous said...

I want to be able to override every single configuration option on a per-page basis, or even better, with url pattern-matching rules

Opera Technology Preview 2 has a feature called "Site preferences" which lets you change most settings based on url patterns.

8:36 AM, March 18, 2006  
Blogger Dave said...

Your idea for blogging software is exactly the sort of thing that I'm looking for right now. And I looked at Typo, as well, but encountered the same problem--no one has really put out a good set of documentation, so trying to modify it is an exercise in trial-and-error.

The question is, if you don't write this software, who will? Is Typo the answer, if someone will just write some documentation?

9:44 AM, March 18, 2006  
Anonymous Anonymous said...

> When I go into Firefox, I want to be able to override every single configuration option on a per-page basis, or even better, with url pattern-matching rules.

Closest I've seen so far to this (in Firefox) is the tweaking of permissions on a per-site basis. From

// Use configurable security policies to override popups, see

// Turn off for particular sites:

"capability.policy.popupsites.sites", "");


1:15 PM, March 18, 2006  
Anonymous Anonymous said...

Take a look at Peter Norvig's site:

He has his content arranged by popularity and topic (with RSS for chronological stuff and a google search box, too).

4:22 PM, March 18, 2006  
Blogger Random Geek said...

Is the game code available, or have you considered making it available, to provide an example (or warning) for folks who would like to spend 5-7+ years working on something similar?

4:59 PM, March 20, 2006  
Anonymous Anonymous said...

Omniweb for the Mac lets you override settings for any page you visit.

8:14 AM, March 24, 2006  
Anonymous Anonymous said...

I can't find any RSS link to your blog, so I took the liberty of entering your site at FeedBurner.

For anyone who's interested, an RSS feed of this blog is available at:

(Steve, if you want me to delete it, please contact me at

12:35 PM, March 24, 2006  
Anonymous Anonymous said...

You can get pretty much everything you asked for in a blog except inline comments through Drupal and judicious choice of plugins. Check out my blog for an example of some of it.

9:36 AM, March 30, 2006  
Anonymous Anonymous said...

Me and my friends have inline comments working fine at our blog, which is wiki-based.

People insert comments by either adding (: comment text --[[Name]]) directly into sentences, or lines starting with colons like

: comment text --[[Name]]
:: reply to comment --[[Other Name]]

between paragraphs or after the text.

Comments are hidden while viewing the blogs' front pages with multiple entries; they become visible while looking at the individual articles.

Being a wiki there are naturally not so many redundant comments -- and long off-topic-threads can move to separate pages like any wiki.

2:46 AM, April 05, 2006  
Anonymous Anonymous said...

Commentary allows retrofitting inline commenting.

5:00 PM, April 06, 2006  
Blogger Jesse Millikan said...

Shortly, scriptable Hobix by Why not mentioned. I haven't used it.

12:31 PM, April 13, 2006  
Blogger Ron said...

Sounds to me like what you want is a Wiki, not a blog.

10:36 AM, April 15, 2006  
Anonymous Anonymous said...

I just found a working example of inline comments:

The only downside is that it's written in java script.

9:54 PM, June 07, 2006  
Blogger Unknown said...

dude, the format you're lookig for is called a "book" -- couldn't you have said that in 2 paragraphs? -- geez -- seriously though, check out PLIGG -- open source digg -- may be what you're looking for -- nice to bump into ya on the interweb steve

9:03 PM, July 10, 2006  
Blogger Peter Merel said...

You're describing a tiddlywiki. Try for a free one. Tiddlies do easy 80% what you're looking for, and if you really want to nail the remaining 20% you can find almost anything on

1:58 AM, November 28, 2006  
Blogger Heath said...

I recently subscribed to your feed, Steve, (after attending the Google Developer Day and reading some of the related articles) so I'm catching up on some of your older posts. Just in case you or someone else is still curious about the points you raised, I have a few suggestions:

Blogs are "diary" format because they are personal - everyone has down days or thoughts that don't appeal to everyone, and it is that human quality that makes blogs appealing. I like the blog format precisely because it cuts through the popularity competition that is Digg et al, and allows me to explore the posting personality of people that interest me. In particular, I have enough opportunty for influence by the unwashed masses in the many push technologies available. Reading chronological posts in blogs is a very welcome alternative.

Inline comments are a nightmare feature from a readability viewpoint. Besides, it's already solved in a much cleaner fashion with technology I like to call "quote if necessary". On the other hand, threaded comments are a great idea - for example, I hate how the author's comments are included inline with everyone elses, when they are often just replying to another comment.

Versioning? Maybe, but it's relatively rare, and edits can be tagged as edits manually, which is a standard, functional option.

Anyway, my real addition to your rant is a solution for your call for what amounts to a markup system for blog entries. You've probably heard of this by now, but I was also stunted by the same gross inadequecy, particularly when posting code snippets. After some investigation, I came across Markdown, which is simply invaluable in my blogging. It essentially allows you to use wiki-like syntax for your posts, which are rendered correctly when you submit. As a bonus, the markup is designed to look very good as plain text too, which allows great versatility.

Finally, I just want to concur with Thomas Ludwig, who in his comment says that the amount of content worth pursuing is very poorly compensated by the time available to actually pursue to. I feel it, brother, well said.

PPS. I don't know whether my Google account will reference my blog, and naturally I do want to share, so here's my ego link: Killing Mind

7:10 AM, June 04, 2007  

<< Home