Saturday, March 14, 2009

Broken... or worse

It's been a long time since someone has so quickly and effectively handed me my ego on a platter... long past due, some might say!

So I want to thank Geoff Dalgas, a core member the StackOverflow team, for doing the honors...

Here's the background: I have been rethinking my earlier (possibly premature?) criticism of StackOverflow, and seriously considering "taking my business" to StackOverflow... my business in this case being that of answering SQL Anywhere and MobiLink technical questions on the public NNTP forums at

I've been doing that for many years, and I've been an active member of Team Sybase since its inception in 1993. So... plenty of time to develop an ego of planetary size.

Anyway, StackOverflow is a truly wonderful programming Q & A website built around tags rather than subforums; i.e., individual posts are manually marked with tags like "sqlanywhere" but otherwise everything's stored in one big bucket.

I just want to work with posts tagged as "sqlanywhere". There aren't a lot of those right now, but there are tens of thousands of threads in the NNTP forums so if even a fraction of the SQL Anywhere and MobiLink developers came over to StackOverflow, that would change dramatically.

I figured out how to search StackOverflow within the context of a tag, but not stay there. Not even the StackOverflow search stays within the context of a tag; you have to keep typing [sqlanywhere] in the search box or it will suddenly broaden the search.

At least, as far as I can tell... after a few hours of searching and reading and testing, and after answering a couple of questions here and here, I decided to ask my very first question on StackOverflow:

How to I get StackOverflow to treat a tag as a subforum?

I want to work within the context of a particular tag; i.e., only see messages that have been tagged with "sqlanywhere", as if SO supported subforums.

I know that I can tailor an initial StackOverflow search with a particular tag using one of the following techniques, but in each case the tag is only applied to the initial search; i.e., on a subsequent search using the SO GUI the user must re-enter the tag [sqlanywhere] or else the search suddenly broadens:
<form id="search" action="" method="get" target="_blank">
<input name="q" class="textbox" onfocus="if (this.value=='search') this.value = ''" type="text" maxlength="80" size="28" value="[sqlanywhere]">

<form id="search" action="'sqlanywhere'" method="get" target="_blank">
<input name="q" class="textbox" onfocus="if (this.value=='search') this.value = ''" type="text" maxlength="80" size="28" value="">
In any event, I want the pseudo-subforum "tag localization" to extend beyond searching.

O frabjous day! Callooh! Callay!

Within two minutes, Geoff Dalgas sprang into action! ... on a Saturday morning no less!

Geoff marked my message as "closed" and tagged it as "belongs on uservoice", no other comment.

A bit of digging revealed that uservoice is the place where people post StackOverflow enhancement requests.


I had no intention of asking for an enhancement to StackOverflow, not after using it for only a few hours. That would be hugely presumptuous, coming from a n00b like me.

I just asked how to do something, and if the answer is "you can't" then that's OK too.
Well... I guess I did get an answer, in a rude and roundabout way.
Sure, I could argue against the "closed"... if that's even possible for a n00b with no "reputation"... or I could go ahead and post the question on the uservoice forum, but that's not important.

Here's what is...

Important Lesson Learned

If Geoff Dalgas was just some random dude, no big deal, the interweb is full of people like him. But he's not some random dude, he represents StackOverflow.

And through him, StackOverflow is saying "Breck Carter is not welcome! Go away!"

Quickly, effectively, thoroughly... here's the lesson I've learned: Don't tell friends to ask questions on StackOverflow.

The SQL Anywhere and MobiLink developer community is filled to the brim with serious professionals. Everyone who answers questions on the NNTP forums (Sybase tech support, iAnywhere Solutions engineers and outsiders like me) are unfailingly gentle and polite when dealing with even the simplest of questions. The developers are used to that level of service, and they would be shocked and horrified at the treatment waiting for them at StackOverflow.


Sure... Geoff might think so. But remember, he's not just a community member, not just a moderator, he's at the very heart of StackOverflow, and that's important.

Thank you, Geoff Dalgas, for saving me from spending any more time learning about StackOverflow, and from embarrassing myself with friends and clients.


I did have a second question for StackOverflow all lined up ready to go:
How do I create a Google Custom Search Engine that searches within a tag on StackOverflow?

The StackOverflow search is nice, but Google it ain't.

For example, a Google search on the word subforum will also find subforums and sub-forum, but apparently StackOverflow will not.
Google web search is great, we all know that. What isn't so great, at least for someone with my abilities, is making it work well with websites like StackOverflow.

Sure, it's easy to set up a Google Custom Search Engine to search all of StackOverflow, but how do I specify an url pattern that will limit the search to posts tagged with "sqlanywhere"? These patterns don't work:*[sqlanywhere]
I'm sure there is an answer, maybe someone will comment here ( not gonna ask on StackOverflow, ego still healing :)

Why StackOverflow?

Some time ago, in the search for true happiness, I lowered my expectations about developer support forums. I now only have two requirements: First, the forums have to be fast, and second, they have to be searchable by Google.

Once upon a time, the NNTP forums satisfied those requirements. NNTP client software like Forte Agent was blindingly fast, and with the immediate feed from the Sybase NNTP server to Google, the Google Groups search facility brought the power of Google search to bear.

No more. Forte Agent is still fast, but Google Groups search is broken... and that's the main reason I was revisiting StackOverflow.

Here's the story on Google Groups search, told by example...

Never mind that the following search only finds two matches; after all, 2003 was a long time ago, and the feed from to Google Groups has been inoperative from time to time.

No, the problem here is quite different: Google Groups is returning one hit from an entirely different group than the one requested:

The "wrong groups" problem occurs randomly. Sometimes Google Groups searches in the domain range sybase.* return hits in groups entirely outside that range.

The following Google Groups date range search doesn't find any posts in January 2009:

... even though quite a few exist:

... and even though other Google Groups searches can find January posts.

But those are minor issues compared to the problems with exact phrase searches. The following Google Groups searches were formed by plucking various phrases from actual NNTP posts made over several years. None of these searches find anything:
"download acknowledgement disabled" group:sybase.public.sqlanywhere.mobilink

"use named row parameters" group:sybase.public.sqlanywhere.mobilink

"unable to calculate the timestamp precision" group:sybase.public.sqlanywhere.mobilink
In each case, Google Groups does have matching messages and can display them via other searches, it just can't find them using simple exact phrase searches.

Here's an interesting case; this Google Groups search doesn't find anything: "run syncase.sql" group:sybase.public.sqlanywhere.mobilink

But this search does work, and does successfully find the post that contains the longer phrase "run syncase.sql": "syncase.sql" group:sybase.public.sqlanywhere.mobilink

And this search works too; go figure: "run syncase" group:sybase.public.sqlanywhere.mobilink

Yup, broken... or worse

Google Groups search is broken, which means Google Groups is broken... useless... untrustworthy.

And StackOverflow is run by people like this.

My search for happiness continues.


Anonymous said...

I have often noticed how patiently and politely you Team Sybase folks answer the repeat simple questions, the obnoxious questions, and the actually challenging questions.

What a GREAT group!


Mike said...

I looked up two users on Stackoverflow.

User John Skeet (5 months)
Reputation 44,277
Votes 1902 ; 1797 yes 104 no

Moderator Geoff Dalgas (7 months)
Reputation 588
Votes 143 ; 77 yes 66 no

Even though Dalgas may be a moderator, I sure wouldn't be intimidated by him. He's a freakin' kid.

Then I looked you up. No wonder you knew what PL1 was. I didn't see any IMS data bases on your list. I liked IMS databases because you could get directly into them and snoop around. And if you didn't like what you saw you could change it! Sort of like peek and poke.

I haven't messed with anything for a long time. So I can see why you might consider yourself a noob in certain area's. If your out for six months or more, or learning a new field, it's like starting all over. But you have the gray hair and the kiddies don't. Score a big one for you.

Breck Carter said...

Mike: Sure, I remember IMS DB/DC/Fastpath, back when "relational" was the upstart and "hierarchical" and "network" databases ruled the world. I can still remember what GHNP means (get and hold for update the next segment within parent). But, like PL/I, if ya wanted me to actually write IMS haiku, I'd have to look up the syntax... and no, I don't put IMS on my resume. ( For the "haiku" conversation, readers are referred to comments on and ...hmmm, I'm thinking NNTP would be a lot easier here :)

Out for six months? Sometimes it feels like you have to struggle to catch up if you take a weekend off... but it makes me feel all warm and comfy to hear "Java" referred to as "legacy" and "out-dated"... it's only a matter of time when the same will be said about Ruby on Rails, Python, ...

Anonymous said...

> Don't tell friends to ask questions on StackOverflow.

More accurately, don't ask questions about Stack Overflow *on* Stack Overflow.

It's in the FAQ and everything:

Also, try to refrain from asking questions about Stack Overflow itself unless you absolutely, positively have to. Most programmers don't come here to learn about the intricacies of Stack Overflow; they come here to get answers to their programming questions. Let's try to help them out by not cluttering up the system with navelgazing meta-discussion. If you want to suggest a feature or discuss how Stack Overflow works, visit our UserVoice site.

Breck Carter said...

Jeff: My criticism stands. I read that paragraph in the FAQ. I did not want to suggest a feature. I did not want to discuss how Stack Overflow works. I did not want to learn about the intricacies of Stack Overflow. I *did* try to refrain from asking a question about Stack Overflow, but after reading the FAQ, I believed that it was OK to ask a simple and straightforward question that, apparently, has a simple and straightforward answer: "you can't do that." It was a programming question, in that I was trying to write the url pattern for a Google Custom Search Engine. The treatment I received, and others receive apparently, is rude. Quoting the FAQ back at me is also rude... I did RTFM :)

And that was my point: rudeness, organizational rudeness in fact. The buck stops with you. If in fact "visit our UserVoice site" is your final answer, arbitrarily editing (closing) a question is still absolutely unacceptable, it is censorship. It is a fundamental flaw, not in the way Stack Overflow has been built or how it generally works (it's great!), but how it is used. Stack Overflow is not an anonymous wiki, and editing of signed works without permission is generally not done in polite company.

It is far too late for you to change how it is used, and for all those reasons I stand by my opinion: Don't tell friends to ask questions on StackOverflow... something else will come along, someone will copy your ideas, add a dash of civilized behavior!

Maybe you'll even sell them the code, let competing models of behavior work it out in the marketplace :)