Fog Creek Software
Discussion Board

New Discussion Features

I'm outta control here.

(1) Mailto: links are no longer in plaintext in the HTML file, to prevent harvesting by spammers. (Try View Source on this page -- my email address is completely hidden from spammers -- there's no mailto: and there's no @ sign). The kewl thing is that they still work, as long as you have JavaScript turned on.

(2) - URL's look like URLs. Just type something that starts with http: and leave a space at the end.

(3) reply count in index because the peoples were BEGGING

(4) Jared rewrote the query to calculate reply counts so it's a scrillion times more efficient. (1 query instead of n queries for the index page)

(5) Extra blank lines at the end of a post are trimmed.


PS No rude comments about "by the time you finished adding all these features, you could have installed 10 copies of slashcode."

Joel Spolsky
Thursday, October 18, 2001

You can protect the email addresses without using Javascript.

Just replace the "@" with "%40" in the code.

The browser will still correctly change it to an @ but spambots will not get them.

Madhu Menon
Thursday, October 18, 2001

<<You can protect the email addresses without using Javascript.

Just replace the "@" with "%40" in the code.

The browser will still correctly change it to an @ but spambots will not get them.>>

Changing @ to %40 will only protect your email address from really dumb spambots. The JavaScript solutions offers some more protection but is IMHO still a poor man's solution.

It would be much better to completely hide the email address and link the name to a web page which allows visitors to email the poster, just like any serious forum software, like vbulletin, does.

Jan Derk

Jan Derk
Thursday, October 18, 2001

<<PS No rude comments about "by the time you finished adding all these features, you could have installed 10 copies of slashcode.">>

I'll try to make a nice comment about that issue ;)

Your web site in combination with these discussion forums have a huge potential of becoming the central meeting place for programmers/GUI designers/web designers/etc. While the current forum is nice and clean it lacks several features if you guys want this place to become more than a place where visitors can add a few comments to articles. More and more people will ask for:

- Different categories.
- Receive email when someone responses to your thread.
- Search functionality.
- Allowing users to editing their old messages.
- Split long threads over multiple pages.
- Moderation tools allowing moderators to easily cancel/edit/move posts.
- <Your favorite forum feature here>

While any of these features could be implemented in house, it would IMHO be a serious waste of time and a clear case of the Not-Invented-Here syndrome (I vaguely remember reading a rather interesting article about that subject), as affordable and much more powerful alternatives are readily available.

I noticed that you guys are a Windows shop, but I would recommend to setup a Linux server with a copy of vbulletin ( Or if you don't feel like running a Linux server yourself, get an account at the best host in the world (

Just my 2 cents and if anyone is thinking I'm talking bollocks, just ignore me.

Jan Derk
Thursday, October 18, 2001

Joel wrote:
> Mailto: links are no longer in plaintext in the HTML file, to
> prevent harvesting by spammers. (Try View Source on
> this page -- my email address is completely hidden from
> spammers -- there's no mailto: and there's no @ sign).
> The kewl thing is that they still work, as long as you have
> JavaScript turned on.

And if you have JavaScript turned off (perhaps because you've read of too many exploits, or because JavaScript is often used for annoying things such as status bar scrolling messages or pop-up windows), you don't see anything. You can't even figure out the email address by looking at the source, because it's all in hex -- ''\x3C\x61\x20\x68\x72\x65\x66\x3D\...'.

If you had left the localpart and domain name as literal text, a human eye would be able to pick it out. On the other hand, so would a spammer if the script is clever enough -- but hey, they can make scripts that will look for sequences of '\xNN' and decode those and look inside them for 'mailto' links, so no difference there. I'd suggest putting the email address as readable text.

Philip Newton
Thursday, October 18, 2001

Instead of vBulletin, why not ?

I think the point was that you could use just about anything.

Thursday, October 18, 2001

I have a free Windows ASP based forum with lots of features, some of which can be disabled in config if you dont want them. Its free and all source can be mucked about, we have been using it on our site for a couple of years and had no problems.
Get it for free at , personally though I like this simple forum. It is perfect for just adding comments and quick and easy. However, I would agree if you want serious and lengthy discussions to take place then a more advanced forum is necessary.

Dan Petitt
Thursday, October 18, 2001

Another forum I use, used WWWThreads until a few days ago.  Apparently it had a real problem with supporting more than 340 simultaneous users.  I have no idea whether FogCreek's user base threatens this number, but it seems like an awfully small number.

Paul Brinkley
Thursday, October 18, 2001

Is it possible to get new discussion entries as email?  Or otherwise tell what the new entries are, in any topic?

(If not, I can just see this message being overlooked!  What irony!)

Paul Brinkley
Thursday, October 18, 2001

(1) Re: mailto.  I'm one of the people who sent email to Joel about this, and I do appreciate the effort.  Unfortunately, I have my doubts about whether this particular approach really serves users very well.  I don't know what the ideal solution is, as spambots keep getting smarter.  If it were me, at this point in time, I'd probably display emails as links to a script that checks ORBS/MAPS/whatever and then displays the address as a JPEG image.  Eventually the spammers will probably figure out how to deal with that, but it might take a while.

(2) Re: other stuff.  I also sent Joel some email saying that IMO there's no excuse for developing a forum that lacks threading, user accounts, and (most importantly) real markup in posts.  I still believe that.  Even Slashdot has figured out how to implement these features, and I'm sorry but if you can't even do as well as Slashdot then you have obviously stepped outside of your core competency.

Jeff Darcy
Thursday, October 18, 2001

I don't really agree. The requirements were straightforward. Keep it simple, allow anyone to post without having to register and login, get it up quick. Joel has succecced in this and it is a nice, easy forum to use.

Mailing links can easily be solved by just clicking a link on a user name which displays a form that you can enter your message, then the server sends the email directly using the database field.

No email address will ever come in contact with HTML and therefore can never be harvested. This is the only true, effective and relatively simple solution.

Dan Petitt
Thursday, October 18, 2001

Let's not forget: A lot of people HATE threading. Including me. This is why VBulletin, UBB, etc. are popular, they keep all the replies on one page, which is a very straightforward style many people enjoy. As for Joel just using some off the shelf solution, I've gone through all the available scripts many times myself, and I hate them all, there is at least one problem with each of them that makes them not useful for my purposes, I'd be surprised if Joel wasn't the same.

Thursday, October 18, 2001

Yes, a lot of people hate threading.  A lot of people like it, too.  Why take the choice away?  Even Slashdot allows that choice, and I consider Slashdot as an example of something that's barely adequate in it's category.  And what about markup?  What's the excuse for not allowing that?  Don't tell me it would have slowed down the project too much; I've dealth with those same issues very recently and I know better.  Maybe Joel needs to re-read the bits in the software-engineering books about defining requirements to suit users rather than implementors.

As for "one problem with each" *one* problem enough to justify writing a new program lacking half the features common and expected throughout the category?  I've also set up several discussion systems, I've also noticed at least one thing about each that I didn't like, but I *just dealt with it*.  Hell, most of them were open-source, so if I really cared that much I'd change it and it would still be better than trying to roll my own from scratch.

Jeff Darcy
Thursday, October 18, 2001

It's very interesting to look at how this project has been handled in light of$47 and$212.  It's hard to imagine the same person was involved.

Jeff Darcy
Thursday, October 18, 2001

I have written a couple of functions that allows conversion of URLs to hyperlinks. It's written in VBScript using regular expression. It also converts email addresses to hyperlinks, which in this case needs to be modified..
Take a look at

Thursday, October 18, 2001

I think there is an important point here.

Sometimes programmers program "just because it's there".  None of us have paid for this service.  In a few short hours Joel provided this forum which has allowed many interesting discussions to take place.

Joel is having fun!

He's probably learned a few things too.

Furthermore, he now owns a 90% complete lightweight discussion board, and he is directly familiar with every line of code in it.

He didn't have to shop around for competing products.  He doesn't have to put up with any features that don't work exactly the way he wants them to work.  Experimentation has it's place.  (As does playing around).

Shawn Yarbrough
Thursday, October 18, 2001

Oh, absolutely, there's a lot to be said for doing something just for the hell of it.  Look on Freshmeat or Sourceforge and you'll see dozens of projects that were clearly not meant - at least no seriously - as anything but learning exercises.  Most of them are email clients.  ;-)  This past weekend I whipped up my own nano-CMS on my own website, partly to "scratch an itch" and partly as an excuse to learn some stuff.  I know the urge.

Joel has created a nice toy.  Really.  And it's great that he lets us play with it.  Really, again.  What I have a problem with is the way that other discussion systems are being presented as somehow broken or deficient, when in fact they meet most people's requirements far better than this system.  It also bothers me that someone who claims to be an authority on "the right way" to develop software, who has written repeatedly about the importance of functional specs etc. even for the smallest one-person projects, has so clearly not taken their own medicine.

As I said, I just wrote my own nano-CMS.  Whoop de do.  It's a toy, and I acknowledge it as such.  Although it serves my own needs better than anything else I could find, and I'd be glad to give source plus assistance to anyone who wanted to try it, I could not in good conscience claim it was in any way competitive with - let alone superior to - other content management systems.  I'd gladly give it up if I did happen to find some suitable system that I had previously overlooked.  That's how I feel such "experiments" should be presented.

BTW, lack of a "preview" feature is beginning to annoy me, as is the fact that after posting you're taken to a totally generic query-string-less default.asp page instead of one that can be bookmarked to check for responses later.  Looks like someone's using the referrer when they shouldn't be.

Jeff Darcy
Thursday, October 18, 2001

I agree, I really would like a preview feature.  Especially since the edit window is quirky for me.  Carriage returns don't always display where I think they will and there's a weird bug that makes the cursor jump from the bottom of the message to the top.

I don't know if this is Joel's doing or if it's because I'm using Netscape 6.1.

Shawn Yarbrough
Thursday, October 18, 2001

BTw, what's wrong with using NNTP? Reading articles in Usenet with a dedicated client like FreeAgent is a hell of a lot faster and easier than clicking on links in webpages. Besides, it's easy to keep reading only those threads you find interesting. Besides, for those HTML-inclined, it's OK to let people post in HTML in non-Usenet news servers.


Frederic Faure
Thursday, October 18, 2001


I agree: NNTP is better (richer).

I have seen NNTP servers/data that export an HTTP interface (ie which let you read recent messages using a web browser, though you then lack all the threading/filtering etc which you would have if you were using a full-blown NNTP client).

IMO this effort (a clean-looking HTTP interface) would have been better if it weren't the *only* available interface (e.g. if it wrapped an underlying NNTP server).

Christopher Wells
Thursday, October 18, 2001

Of course... the whole javascript thing isn't going to help you at all if a spambot actually executes the javascript (which wouldn't be that hard).

Friday, October 19, 2001

Is a "preview" function on the backburner?  That's always nice, to see how your post will turn out.

Friday, October 19, 2001

I recommend showing the poster's email address in the next line with the "@" replaced by a "at" and the ".com" replaced by "dot com". So would become "john at hotmail dot com". This would give a visible email address and still defeat spambots.

I suspect a bug in the board software, so I'm going to try an experiment. I think that only the first URL posted in a message becomes a hyperlink. So here goes...

If I'm right, only Yahoo should be hyperlinked. I'm hoping I'm wrong.



Madhu Menon
Sunday, October 21, 2001

Unfortunately, Madhu, most of the spambots were smart enough to decode that form starting at least two years ago.  It's necessary to munge the address much more thoroughly than that.

Jeff Darcy
Monday, October 22, 2001

The forums at have a preview feature, HTML insertions, etc. Work well and handle a LOT of traffic.

Mike Sivertsen
Wednesday, October 22, 2003

*  Recent Topics

*  Fog Creek Home