-
Recent Posts
Recent Comments
- David Jones on GPO To Set Firewall Exception For Windows 10 RDP
- Greg Woods on GPO To Set Firewall Exception For Windows 10 RDP
- Neil on GPO To Set Firewall Exception For Windows 10 RDP
- Gopal Sharma on GPO To Set Firewall Exception For Windows 10 RDP
- Rob Eberhardt on GPO To Set Firewall Exception For Windows 10 RDP
Archives
- March 2025
- September 2023
- February 2022
- July 2020
- November 2018
- October 2018
- May 2017
- April 2016
- March 2016
- November 2015
- October 2015
- September 2015
- June 2015
- May 2014
- August 2013
- July 2013
- March 2013
- August 2012
- June 2012
- May 2012
- February 2011
- December 2010
- November 2010
- October 2010
- August 2010
- June 2010
- October 2009
- September 2009
- May 2009
- April 2009
- March 2009
- September 2008
- August 2008
- July 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- July 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
- November 2005
- October 2005
- September 2005
- August 2005
- July 2005
- June 2005
- May 2005
- April 2005
- March 2005
- February 2005
- January 2005
Categories
Meta
Monthly Archives: May 2005
Finally saw the Enterprise finale..
Symptoms:
Bad acting. I guess Frakes & Sirtis are several years outta practice (and shape). And who wrote that dialog anyway?
Bad effects. Can’t think of a good excuse here. I mean, really: stars between the camera and the ship?!? (space-fireflies???)
Bad production. Tons of obvious overdubs. They must’ve already pink-slipped the sound engineer. (Not to mention the amateur-looking phasers…)
Why end an otherwise decent series (and legacy) on a bad note?? Bah!
Diagnosis:
“slapped together”
An observation: Door Store -vs- Vote-For-Me yard signs
Traditional email spam like the unsolicited Door Store ads they drop on my step (in plastic covers to maximize slipping).
Comment spam is a “We’re voting for Mr. Shmiggle” sign put in my yard without my consent.
Now that I’ve worked it out, I understand why comment spam irks me so much more, because it (ab)uses my reputation for its own (search engine) advancement. But I don’t want to put up a fence by closing comments tho, because I do want my friendly neighbors to visit and talk to me.
So anyway, if anyone using .Text 0.95 is interested, here’s my code to negate the search engine benefit to the comment spammers:
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim reqURL As String = Request.CurrentExecutionFilePath
IF reqURL.toLower().indexOf("/archive/")<0 OR Request.Form.ToString()<>"" THEN EXIT SUB
'-- get content
Dim oWriter As New StringWriter()
Server.Execute(reqURL, oWriter)
Dim strResponse As String = oWriter.ToString()
oWriter = Nothing
'-- find comment section
Dim iStart As Integer, iStop As Integer
iStart = strResponse.IndexOf("<div id=""comments"">")
IF iStart>0 THEN iStop = strResponse.IndexOf("</div>", iStart)
If iStart <> -1 And iStop <> -1 Then
'-- nofollow comment section's links
DIM strTarget as string = strResponse.Substring(iStart, iStop - iStart)
DIM strTargetFixed as string = _
strTarget.replace("<a target=""_new"" href=""http", _
"<a target=""_new"" rel=""nofollow"" href=""http")
strResponse = strResponse.replace(strTarget, strTargetFixed)
End If
'-- send content
Response.Write(strResponse)
Response.End() 'prevent conventional response
End Sub
Just replace the standard Application_BeginRequest procedure with this one in the global.asax.vb file (or absorb mine into it.) It intercepts outgoing comments and dynamically inserts rel=”nofollow” into any contained links.
It won’t prevent comment spam, but it will negate the search engine benefit to the comment spammer, turning the “Vote-For-Me” signs into mere litter in your yard.
One catch: this breaks .Text’s inline “Remove Comment” links. You can still delete them in the the admin area’s Feedback section, tho. Since the comment spam seems to come in waves, that’s an easier way to delete them all at once anyway.
(I guess my next goal is actually preventing comment spam via a captcha or challenge-reponse mechanism, but til then I feel more luxury of time to explore possibilities.)
Comments closed?
This sucks, but the gambling comment spam has hit a critical limit, and I’ve wasted a stupid amount of time trying to solve it (without luck).
So I’ve closed comments. And now reopened, with my own clever nofollow solution.
To enumerate my frustrations:
- .Text 0.95 code is complicated (*). Adding rel=“nofollow” to comment links is apparently not possible. It’s apparently possible with 0.96, though, but…
- Getting the .Text 0.96 install package is difficult. There’s no simple zip/exe download from its mysteriously-deserted website (like the older versions on gotdotnet Workspaces) — Instead, you have to get, install, configure and use SourceGear Vault just to download it. (For those who want to skip this hassle, I’ve zipped the .Text 0.96 source code here.)
- Installing .Text 0.96 is difficult. Of course, installing 0.95 was a big pain too (plus dotTextHelper had bad docs), but this is worse. I followed the explicit instructions (still not included with the installer), and I get errors (“Could not load type ‘Dottext.Global’.”) . It seems the various DotText DLLs are not actually present in the bin folder. I doublechecked the Vaultpub source, and it’s the same there. Anyone Where’s the
- Community Server won’t do single-user mode. As a result, it would change all my existing URLs. There are hacks (1, 2) , but they create myriad other problems. (Why isn’t single-user mode built-in as a checkbox on the installer?!)
- Community Server’s code is too complicated (*), so attempting to troubleshoot those hacks was a waste of hours.
- I will grant, though: CS is much easier to install (ah an actual installer!), and I found a great .Text to CS converter, which imported my content perfectly.
* The code for both .Text and Community Server’s code is way too complicated. Why is an open-source app — which is supposed to encourage hacking from other devs — full of such highly-abstracted code?? A main reason I settled on CS/.Text was because I know ASP.net fairly well (and ASP extremely well). Unfortunately, the extreme complexity/abstraction and lack of decent docs pretty much cancels that out. I’ve seen PHP apps which were easier to figure out (and I barely know PHP).
….If I’m going to waste this much time on fixing one little thing (comment spam), it’s so tempting to just write my own. I specifically tried to avoid that, though, because I have so many other technical time-drains.
Argh!
Inheritance run amok!

I found this exploring in VS.Net’s Object Browser. That’s what, 6 layers of inheritance? I’m frightened!
Next 10 Songs
Next in my random song roll:
The Grays – Everybody’s World
Argent – Hold Your Head Up
Atomic Opera – The Circle Is Closed
Kool & The Gang – Stone Love
Bullmark – Track 12
Newsboys – Breakfast
Spock’s Beard – The Great Nothing
Jason Falkner – Don’t Show Me Heaven (live)
Mike Helm – Still Alive Somewhere
Queensryche – Empire
A better RDP client: Royal TS
Microsoft currently has two official RDP clients: Remote Desktop Client (built-in to Windows XP Pro, and downloadable for nearly anything else), and the Remote Desktops MMC snapin (from the Windows 2003 Administration Tools Pack).
They have all the right features between them, but neither has all of them in one place. The Remote Desktop Client has the most options, but can’t connect to console session (aka “session 0”) and is meant for one remote connection at a time. The Remote Desktops Snap-in can do these two things, but is missing tons of other options, plus one especially dumb limitation: It can’t connect to a port other than standard 3389. (It gives an error “The server name cannot contain the following characters: spaces, tabs , ; : ” < > * + = \ | ? ,” — Another over-zealous coder under-thinking his validation logic!)
Update:
Microsoft says the Remote Desktop Client can connect to the console session, via a command-line switch. Not sure why it’s not a checkbox on the options dialog
, but it doesn’t work for me anyway. It removes the %sessionname% environment variable, but Terminal Services Manager still shows the session is a “RDP-TCP#” name. Oh well.(turns out the console session has to already be logged in).Something else I found: you can’t connect to the console remotely with a non-admin account — it gives you an error that “To log on to this remote console session, you must have administrative permissions on this computer.”
The standalone Client is best when you’re working in-depth on one remote machine. The Snap-in is better for when you’re working lightly on several machines, and don’t need the extra options. In daily use, I usually find myself switching between the Snap-in and the Client. It’s a small but constant pain.
This is all to say that I just found Royal TS from code4ward, which is a free, open-source (C#) app, which attempts to combine the best of both programs. (It’s like the Snap-in interface, but on steroids.)
I’ve been using it for a few days, and it’s very good. I only wish it could do a better full-screen, or use less screen real-estate with the embedded view. I may try my hand at C# just to hack it up.
Hm, the author’s site is down now. Hopefully it’s temporary. Meanwhile, here is is on Snapfiles: http://www.snapfiles.com/get/royalts.html




