.xxx vs .kids.us

CNN is reporting that ICANN is moving ahead with a plan to create a ‘.xxx’ domain for adult (ie, porn) sites.

This is even stupider than .kids.us, and that’s saying a lot. Back in 2002, Congress passed the The Dot Kids Implementation and Efficiency Act to create a safe haven for kids-friendly websites. Neustar has the contract to run it and keep it kids-friendly; back in late 2002/early 2003, they were very optimistic about how many sites there woudl be, or at least they claimed to be. The goal was to have enough content in .kids.us that parents could use a whitelist filter on the internet — if everything a kid wants is in .kids.us, or at least enough of it is, then they don’t need to venture out into the scary world of .com.

.kids.us registration opened September 4, 2003. More than a year and a half later, how many .kids.us domains are there?

As far as I can tell, the full list is:

Wow, 24 domains! Trampoline and Trampolines have identical content, but we’ll let that slide. Oh, yeah: a, info, music, space, games, us, newyork and news are all from the same people. And Summum and Mummies have the same content. Nick and NickJR are both Nickelodeon, of course. So those 24 domains are 22 unique sets of content from 14 different companies. Is that enough to replace the rest of the internet, you think?

So, will .xxx do even worse than this? No, I don’t think so — I expect there will be a couple hundred domains within the first few months it’s live, even at $60/year. But they won’t be new sites, and they won’t replace existing sites. They won’t do anything to ‘clean up’ the other domains. So, will it make it easier for customers to find their smut? Well, maybe, but it’s hardly ilke that’s hard now. So what’s the point?

The point is, it’s a way for a ‘legit’ company to siphon off $60/year from pretty much every major porn site. it’s a way for someone to make money from the smut industry without having to get into the smut business. I understand why ICM Registry Inc. is in favor of it. I don’t understand why ICANN is.

2005-06-01 23:13:14 | Comments (0) | TrackBack (0) | Computers::Internet::DNS

Amazon Wishlist Priorities

Sometime this weekend, Amazon.com wishlists got a priority system; you can now mark items on a 5-rank scale from "Don't buy this for me" to "Must have", and wishlists can be sorted by priority.

This has been a long-desired feature and it's good to see it implemented, but I hope it'll be exposed through the webservices API soon; setting priorities on 17 pages worth of items with one form submit per item would be an exercise in frustration.

2004-02-23 03:07:00 | Comments (3) | TrackBack (0) | Computers::Internet::Web::Sites

Stealth Disco, Stealth Marketing

Stealth Disco is getting a fair amount of attention in various places.

Unsurprisingly, it appears to be stealth marketing, although I'm still not sure for whom.

StealthDisco.com is registered to

William L Hollister (CTLGDN-236318)
1323 N. Milwaukee #3
Chicago, IL 60622
US

Administrative Contact:
William L Hollister (236322) billhollister@yahoo.com
3126162594

Bill Hollister is a copywriter who joined Cramer-Krasselt's creative department in early 2003 after previous agency stints at Arnold Worldwide and Amster Yard. C-K is an "integrated marketing communications company" with offices in Chicago amongst other places.

Other people at C-K's Chicago office have phone numbers in the 312 616-2400 to 312 616-2600 range.

Stealth Disco is owned and controlled by a copyright at an Internet-facing marketing company from his desk at work. QED.

Update, minutes later: Okay, there's now a "who's behind this" link that basically says all that, but it wasn't there a few days when I first saw this and did the detective work.

2003-09-16 01:51:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Sites

Moving from IE to Firebird

If you're using browsing with Internet Explorer for Windows and you haven't tried it recently, it's time to give Mozilla Firebird a serious look. Firebird is faster, more standards compliant, more secure, and is designed with you in mind rather than large companies (ie: advertising blocking; popup blocking). Perhaps most importantly, Firebird is still getting better at an astonishing rate, while it's been years since the last IE update, and Microsoft has said there won't be another one, ever, without switching your OS to Longhorn when it's out in a few years.

If you've been reluctant because of how used you are to IE, then Jamie's guide to switching may be useful.

Help save the world; embrace the lizard.

2003-08-16 14:25:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Browsers

Textile2 0+1i

The very first release of a textile 2 plugin for Blosxom is now available, based on Brad Choate's MT Textile 2 beta.

This is beta, or worse. It's been tested on all of half a dozen documents. The underlying engine it uses is also beta. You should expect both the plugin syntax and the markup syntax to change.

To use:

  1. download mttextile-2_0b.zip from Brad Choate's page
  2. download textile2-0-1i.zip
  3. create lib and lib/Text directories in your plugin state directory2, if you don't have them. install extlib/Text/Textile.pm from mttextile-2_0b in that directory
  4. install textile2 from textile2-0-1i.zip in your plugin directory
  5. look at textile2's configuration variables, consider changing them
  6. install the meta plugin if you don't have it installed
  7. rename plugins with numeric prefixes to ensure proper ordering, if necessary. meta needs to be before textile2, and is required. If you're using it, SmartyPants needs to be after textile2. Although it's not as important (or necessarily right), most other plugins that do text changes probably should be after textile2; that would include macros, wikiwordish, imagesizer (which isn't actually needed, in its stock form), and the like.3
  8. create a test story with meta-markup: textile2 in its header
  9. hope

The textile2 syntax is both more regular and more extensive than the textile 1 syntax, and is intended to be at least mostly backwards compatible. In at least one way that matters to me, it isn't, though1, so this plugin is designed to be usable side-by-side with the earlier textile plugin. If you're willing & wanting to switch over entirely, configure the $handle_textile_1 variable to 1 and remove the textile plugin; then meta-markup: textile will invoke textile2.

1 With textile 1, there doesn't have to be any space between the final '!' on an image link and following text; with textile 2, there does.

2 That's your plugin directory, not your plugin state directory; thanks to Andy Fragen for the note.

3 This step added following Andy Fragen's difficulties -- thanks for being a guinea pig, Andy!

2003-07-27 09:14:00 | Comments (18) | TrackBack (0) | Computers::Internet::Web::Blosxom::Plugins::Textile

Textile 2 test post #1

That should be a h1 (well, h4, with my configuration)

this is a blockquote

this ia a normal paragraph

  1. this is
  2. a numbered
  3. list
  • this is
  • an unnumbered
  • list
this isa wikistyle table
with tworows andthree columns

Up to there, that's all textile-1 syntax too

this is a code block

this is a paragraph with id "first"

  1. Multi-level
  2. lists
    1. are now
    2. supported
  3. although
    1. it's not obvious
    2. how you would
  4. format them
    1. if you didn't have one
    2. parent item between
      1. each
      2. sublist

This is code here.

This is a test link

this should go back to first

bq.* Can blockquotes
* contain lists
* now?

2003-07-27 09:03:00 | Comments (1) | TrackBack (0) | Computers::Internet::Web::Blosxom::Plugins::Textile

AOL Search's Encoded/encrypted Queries

For some reason, AOL has started encoding and/or encrypting the query strings in some of their URLs; I'm now seeing referers like "http://aolsearch.aol.com/aol/search?encquery=0523DA770DD87C92A11FA742545B0E51&invocationType=keyword".

The encquery argument is obviously hex-encoded; it's always a multiple of 16 characters/8 bytes long. Using that URL brings you to an AOL search form with the query string filled in, so it's obviously a two-way encoding, not a one-way hash like SHA or MD5. Playing with it some, it seems to be encoding in 8-byte blocks, each block independantly (ie, no cypher chaining or whatnot). Every 8-byte hex value seems to be valid, although most aren't meaningful.

My first thought is DES, but why? What possible value can this have, given that we can trivially use AOL's own servers to unencrypt any strings we're curious enough about?

perl -MLWP::Simple -ne 'chomp;' \
 -e '$content = get("http://aolsearch.aol.com/aol/search?encquery=$_");' \
 -e '$content =~ m:adSetSearch\(.(.*?).\):; ' \
 -e 'print "|$_|$1|\n";'

Observed crypt-blocks:

0523DA770DD87C92googirl
063C8DD46B89BDC4Porn
08BB4AA8E36C7C20naked mo
08E21A0BC16D828Cg german
09679D0C4567D025nude pic
0BDAEF70C6FC68A2ones top
0C3FDC1248CF8A6Ccatherin
0CC6D0ECA50FFAEBNigerian
0F2B5C5C6FFCE9C4AY PICS
1057969442DA68C0ion nake
10C3446BC60C2A51septembe
122D96E035D7A974sex
1422E292C3DECB8Djennifer
148BEA2FD5D647B5ode and
14A2EEFA14742853ex pics
14F38E2337C9523Cy
16E11065C3C27C3Driffin
189E1B6959826133x pics
1B2CC7577993583B,com
1C206C973A74A1FCnames of
1C8B961CE87AD684herine Z
1E0627FE98ECD60Fnedy pic
1F4C4AFE7994A975"Barbie
25D6E23000EF6B94tures of
293747FF89B6FBE2prettywo
2A160E67570827DFTopless
2AC6C0BCB4CA32F1topless
2BB312297005DF63Griffin"
2D6951D97DA75336lillian
2D9E98DC1D03753Fes of 20
2DD945F71ECB6AFBpicture
2E16255EAFE4B5BFnude
2E705F30E3A511C0Jennifer
2F177EF07AEF4CA7top 10 n
2F950B8D97C0CD5Fn underw
3074329C5AC17011blog
378C526636962071tatu nak
397EBD8482BFC98Dnude
3B3F4F4A859BC26Aof barb
3CF90C4015899D84pictures
3D58EFBD582825ADcoolidg
413131F8415626D9static m
4245610E205D8563ol icons
4323FBA51BC0D35Dricci pr
46E8B8F4D244ED0Bs 2003
473EEB8D2BBDF634ear
48CDD1031B508819e zeta j
49223F302E67C5ACnude da
4A18B45BF989FBEBe zeta-j
4D087C1AC5483A9Bennedy a
50E4F3684E0307A2ete nude
51507132591A78AErotenber
5192400549890462BARBIE G
51D9B253D63C4BC2bondagef
5649424CDBA72A8Bless
58B5FA1DCF8E1A90old tatu
5C0C69CAB3158339ickey
61443D60C18984ABe (nud
617D3E7C15256EBC" Willow
61A7970984BAB959and Ken
634A673ECBA9BC45tatu kis
63675C5C3EC50EABe naked
68FC1DCB6326C4A5erfolds
6A26BF93E884C9DCm
6D163ECEB4C548FDozac nat
6F26062C2815A228naked
6F4D1A7130C11088men porn
6FAC27D8C1CDD4CFFUCK MYW
6FF950BC4EE4401Eed
701FC4CBA5F073C6women 4
705818487A33B74DRIFFIN
7063FBF8C1FD8897auline h
707B807BA31792D9she hulk
709DF1B856877CD1ude scen
72E894B219A291E4mlf porn
73279E6E76C31E93debra au
73901C506BF59575playboyh
7461EF729187325Ewomen
749F907B1A67AF09having
7525FBAA2AF445E3n
778C93B2FA17097Dstin nud
798BE5EF554D13A3t.a.t.u.
7F7299010487A181willow k
81DFB4328D832AAAcs of to
843941B7124F932C"Touched
8493DA409621C4A7r11,01
856A17657C4434B2national
857B105D6902F6F3ses for
858E7BF0FE6965B3pics
86224097E03C26A5es free
876B28228EF297BCd pictur
8774FB16936BE5B9old cent
8C798FAEF7325316stacks p
8DFCA1B66E62978BAmanda P
92306BAC9A9D3B43e nude
936A8EC04458E81Aof men
93CDC5C2FFF9B4F1airies
9574019BA1D46D55ms
95A893E639B20951parker s
96D5AD87A5B5AE3Dshaq nak
96E28B6B8E3540F7she-hulk
9BEDD55516260A73ones
9E850775072BCBEAhickey
A11FA742545B0E51lesbians
A1770CF91588F7C2istory
A254D77E0038CA39nude tat
A3A4A69354B5F11Cude
A4174D1D31376196rmons
A5F78FD71BB27CBCm felton
A6ACA58065548346Oreo
A966784C2BBEE8BAlillian
A9BFBA39D72DBF48tatu
AB3E3D3C8CA47975pauline
AB9E4C875A0B1420onzalez
ABBF96FFE02E3BA7men
AC6B1ABCA5D83EECbarbie g
AD2CC291DBAE0F5Barmenian
B3122F290DF600F3-hulk se
B4A53D9C78C938B5riffin n
B711CD82EE3CAE02otos of
B939AC4BFC8D954Emake nud
BB8E8111665632CCe
BF9F1762CD49C031oops Cat
C203B263C0570005s
C32140D56AB79269less pic
C5D9FF408AF1FC39parker n
C8183823CCB8B74Ekiva por
C8AC9C85229BB84Die griff
CA1CAE06813F0052miriam g
CA4CDC1E96C0A122Barbie G
CAA8826D9004768Esnotsyki
CE43FDC014328B05eta Jone
D159AF7D53C4624A"Nick Nu
D186A0A7FAB81106zoe dres
D20A7E5B73AB434ACoolidg
D354C6338B3CF41Enaked ph
D36B38468641AF36free she
D4C56F5059DD5C0602
D57FDCBE2B2C4DB1Cory Mor
D811D0474689CC1Acomputer
DA91641DF3A8CCF6naked pi
E14ACF112D03442Din mormo
E165898386CAA559in
E36877B3885257DBu
E77A29A1DEDAE051sex
E992E4A9FBAB673Fsing
EA5F1E63363A6C9Ee barbie
EE64A695D264CA80parker
EF297FADD656630Abobcrane
F00FB05B309E2317gan
F2B6964DE547088Bsex pic
F312BDA62F591A58de"

2003-07-15 07:35:00 | Comments (1) | TrackBack (0) | Computers::Internet::Search

Feedster Backlog and Blosxom

Feedster, a great RSS-based blog search engine, has a new Backlog feature; you create an RSS feed for the full history of your blog and tell Feedster about it, and it does a one-time load of the whole thing.

There are a few different possible ways for Blosxom bloggers to generate this feed.

The easiest way, for people who started their blogs this year, would to use the built-in date-filtering system; for example, http://molelog.molehill.org/blox/2003/index.rss is an rss feed of all my posts from 2003.

If you have pre-2003 entries, you'll have to be a little more clever. A minimal solution, which has some other possible uses, is to use a very small plugin like the following:

package numentries;
use CGI;
sub start {
  $blosxom::num_entries = CGI::param('numentries') 
    if defined CGI::param('numentries');
  1;
}
1;

then give Feedster an url like http://molelog.molehill.org/blox/index.rss?numentries=1000 (where '1000' is high enough to include all your entries).

I've done more or less that -- rather than create a whole plugin for that, I've just included that snippit in my catch-all plugins for small things like that, jtl.

Update: specified CGI::param rather than just param, as new versions of CGI.pm require.

2003-07-15 04:13:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Blosxom

Telephone Directory Directory

Infobel has a useful worldwide directory of telephone directories.

2003-07-09 22:12:00 | Comments (1) | TrackBack (0) | Computers::Internet::Search

David Baron on User Stylesheets

One of the huge mostly untapped promises of CSS is user stylesheets -- the ability of users to control the presentation as much as website owners/designers do. Almost all the modern browsers I use support them (I don't think Camino provides an interface, yet), but none except Opera ship with interesting example.

David Baron wrote up some useful notes on how they should be written nearly 4 years ago; although CSS has come a long way since then, these are stll the best notes I know of on this subject.

Have I just been missing something? Can someone point me at a great repository of useful and interesting user stylesheets to play with?

2003-07-09 22:10:00 | Comments (2) | TrackBack (0) | Computers::Internet::Web::Design::CSS

IE/Win div Scrolling Bug

notestips explains an IE/win bug that can lead to missing or garbled text. They propose a workaround, which I'm now using here.

IE users, please let me know how this works for you, whether it fixes the missing text problems or not.

2003-07-06 18:45:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Browsers::IE

Cyveillance gets the kids.us monitoring contract

According to the Washington Post, NeuStar ended up going with Cyveillance for the kids.us monitoring. That's an odd choice -- so far as I know, Cyveillance doesn't have any experience with inappropriate-material filtering, just with trademark & copyright matters.

Washington, D.C.-based NeuStar Inc., which owns the government contract to operate dot-us, plans to use a combination of technology and human supervision to patrol the kids.us space. The company has enlisted Arlington, Va.-based Cyveillance to perform routine scans of kids.us addresses using its "spidering" technology. Cyveillance will flag questionable material and send it to NeuStar for review. Depending on how badly the material violates the rules, NeuStar either will shut down the offending site immediately or give operators a few hours to remove the material on their own.

NeuStar employees could be forced to make thousands of decisions that can't be left to a computer, said Ram Mohan, chief technical officer for Dublin-based Internet addressing firm Afilias LLC and a former spider software developer.

I'm standing by my earlier predictions that kids.us will be a dud, that there will never be more than a couple dozen kids.us domains registered. The rules are too onerous and the benefit too slight for anybody to want to give up their well-known .com address for this.

2003-06-30 13:07:00 | Comments (0) | TrackBack (0) | Computers::Internet::DNS

Amazon via RSS, in Perl

As previously mentioned, Sean Nolan has a very cool public Amazon RSS service, which he graciously supplies source for -- in ASP and XSLT.

I wanted to tweak a few things (remove the reviews from the description, give better feed titles for browsenode and authorsearch feeds (alas, only slightly better for browsenode), better links for the channel URL), but I don't have an ASP system, so I rewrote the scripts in perl.

If anybody's interested in tweaking further, the source is available under the same terms as Sean's original. You'll need perl, XML::Simple, LWP::Simple, XML::RSS and an Amazon developer's key; the URL arguments should be drop-in compatible with the original.

2003-06-29 09:08:00 | Comments (1) | TrackBack (0) | Computers::Internet::Web::RSS

GoogleDance

The GoogleDance is Google's index update; being a large system, the updates take a while, during which search results may be inconsistent (more than usual, even). The Google Dance Tool is useful for comparing the various results Google might return.

2003-06-27 17:16:00 | Comments (1) | TrackBack (0) | Computers::Internet::Search

Real RSS Validator?

Dive Into Mark nicely summarizes some of the most-recent Recent Unpleasantness in the RSS world.

Nowadays, namespaces are funky, and funky is wrong, because everyone must do RSS exactly as UserLand does. The RSS validator is now known as Mark and Sam's validator, where Mark and Sam are grand arbiters making lots of value judgements that people "be on our case about".

Thank you, Brad. Thank you for proving exactly why we need a new format that is vendor-neutral, freely extensible, and thoroughly specified. I couldn't have said it better myself.

echo is looking promising, at least. Thank goodness.

2003-06-25 23:33:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::RSS

Blosxom Update Noodlings

Anthony Towns has a new blog, and he makes a pretty reasonable and interesting Blosxom suggestion

I think what would be nice is having blosxom see the files,

 -rw-r--r--    1 aj       aj            323 May 25 20:29 foo.txt
 -rw-r--r--    1 aj       aj             80 May 26 13:10 foo.txt-1
 -rw-r--r--    1 aj       aj            103 May 26 14:40 foo.txt-2

and magically translate that into an original entry, with two dated updates. You could then mark the files as uneditable once you've finished writing them, and not worry about accidently revising history.

A simple version of this would be pretty easy -- a plugin with a story() handler that looks for the -## files and just appends them, with an "Update ...:" header.

There are some interesting questions though about how it should act in the face of date sorting and specification; when showing index.html, should foo be listed as May 25 20:29 or May 26 14:40 (the former would be easier; the latter would be doable by supplying an entries()). When showing /2003/05/25 what should be shown? How about /2003/05/26?

2003-06-18 11:51:00 | Comments (5) | TrackBack (0) | Computers::Internet::Web::Blosxom

CSS3 Selector Support chart

Backup Brain points to this MacEdition Guide to CSS3 Selector Support, which shows some interesting patterns: IE6/Win is pretty dismal, IE5/Mac is decent, and current versions of Mozilla and Safari (and others that use the same underpinnings) are pretty good.

The surprising standout is MSN for Mac -- it's got nearly complete support. This is IE/Mac's Tasman rendering engine with a different UI on top of it, and presumably Microsoft could release a very nice IE6/Mac pretty easily -- but of course, they've said they are't going to.

2003-06-17 15:31:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Design::CSS

IE/Mac dead

As everyone who cares has already heard, Microsoft has announced the death of Internet Explorer for Macintosh.

I've not used IE/Mac in a while (first I moved to Chimera/Camino, then Safari), but I think the "ho hum" responses a lot of people are having a little unfair.

First, competition is a good thing; it leads to innovation and experimentation, and the best ideas can then be used by everybody. Second, IE/Mac is (and I get funny looks from people who know me every time I say this) a damn fine browser.

Eric Meyer is mourning too, and points out some of the major advances IE/Mac brought to the table. Now, nearly all of us (well, those of us who aren't using IE/Win, at least) are benefiting from these ideas in Mozilla proper, Safari, and the Mozilla-based browsers like Camino, Firebird, and galeon.

2003-06-14 23:59:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Browsers

Courier, Scourge

I wish to never see Courier again. It's ugly enough when large enough and done well, but when you combine X's rather lacking font implementation with small font sizes, it's useless. Useless, I tell you -- a code face in which you can't differentiate '{', '}' and '|' might as well be scribbled instead.

I have a variety of perfectly acceptable monospaced fonts (JMK's neep being my favorite -- I'd love to have that on OS X), and I've configured my browsers to use them rather than Courier for monospaced text, and that helps some. It doesn't do a damn thing, though, for pages that use <font face="Courier"> or equivalent CSS rules. I could click "always use my fonts", but that's killing a fly with a baseball bat.

Is there a CSS selector style I'm just missing, that would let me put a rule in a user stylesheet to say "always override Courier with Neep"?

Update: Example screenshots added

Courier This is Courier -- note how hard the braces and parentheses are to differentiate, how the '=' and '>' aren't vertically centered, and just how generally ugly it is.


Lucida Typewriter This is Lucida Typewriter, which I believe is a standard system font on Windows and thus nearly as ubiquitous as Courier. Note that braces and parenthesis are easily differentiated, as well as opening and closing braces.


Luxi Mono This is Luxi Mono, a good choice as a default mono face for current Linux systems (and in fact, it is the default "monotype" face for the Phoenix/XFT combination). The letterforms look a lot like Courier, nothing to really throw people off, while still being much easier to read.


Neep This is neep, my preferred coding face. Every character is readily distinguishable -- note the 'l's and single quotes. That does mean the letter forms aren't as close to Courier's as, say, Luxi's, but I'm more than willing to live with that for a face that's easy to read and never ever confuses me.

2003-06-08 02:25:00 | Comments (6) | TrackBack (0) | Computers::Internet::Web::Browsers

MSN 8.5 Parental Controls

MSN 8.5 is coming

Changes in MSN 8's parental controls are mainly navigational in the form of new tabs and buttons to help customize settings.

Hmm... anyone out there using MSN's parental controls and feeling like talking about any changes they see?

2003-06-04 01:28:00 | Comments (0) | TrackBack (0) | Computers::Internet

Flash Click to Play

Ted Mielczarek has given the best example I know of why browser behavior should be user-extensible, whether via XUL or something else.

His flashblock Phoenix / Firebird plugin puts the user in control of Flash-based advertising: no more animated ads that can't be turned off, no more bits of the browser screen that don't respond to mouse wheels for no good reason. And all without giving up Flash entirely and putting up with the plugin popup windows, and having to switch to a different browser for the very occasional times you actually want to see Flash content.

I think Firebird is going to be my default Linux browser for a while now, and I may just switch on OS X too.

And for you Windows users out there, let me say again -- if you're using IE and haven't tried Mozilla or Firebird in a while (or ever), it's time. You'll be glad you did.

2003-06-03 02:23:00 | Comments (9) | TrackBack (0) | Computers::Internet::Web::Browsers::Mozilla

Nigerian 419 Comment

Oh wow, Mr. Williams Larason was in a horrible car accident, and I stand to make millions, all thanks to Barrister sabinus chibuikem, or so he says in a recent comment.

This is of course just a variant of the Nigerian 419 scam and hardly worth noticing, much less mentioning, except for the move to weblog comments and the small window that gives into the workings of the scam.

The message was posted from 192.116.126.198, part of a block assigned to SKY2Net ltd/gilat, apparently for use in Israel. The user got to this site via a Yahoo! search for 'names 20 to 55 years men and there email address in france.'; right now, this is hit #83 -- did he leave 82 comments before getting to me?

2003-05-29 06:50:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web

Firebird Font Problem

For reasons that are mostly sound and too long to go into here, I'm slowly upgrading a RedHat 7.2-ish box to RedHat 9-ish, without doing anything so crass as using the official upgrade software or rebooting the machine.

At the moment, glibc has been upgraded to 2.3.2, gcc to 3.2, XFree86 to 4.3, most of gnome to 2.2ish (not that it matters much, since I'm using garnome 2.4.2 for the bits of gnome I use), and python to 2.2, and the bare minimum of miscellaneous packages to make rpm happy with those bits.

Everything is working fine and dandy, and the improvements I was looking for are here -- except phoenix / MozillaFirebird no longer shows smart quotes properly. A curly apostrophe (&#8217;) shows up as a y-umlaut; a curly left double-quote (&#8220;) as an acute accent (I think), and a curly right double-quote (&8221;) as an upside-down exclamation point. They're in the source as numeric entities, so they aren't getting binary-mangled somewhere along the way, nor are they being interpreted as the wrong encoding or character set, so I'm pretty sure that just leaves font display problems.

I recompiled MozillaFirebird from CVS source, and that version does the same thing. Mozilla 1.4b works correctly.

Anyone have any ideas?

2003-05-28 15:14:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Browsers::Mozilla

RSS Family Tree

RDFWeb has an RSS family tree available (also as an SVG file, for those who are all cool and cutting edge, which apparently isn't me).

I haven't seen the "RSS Futures document" from Netscape that it mentions, and I think RSS 1.0 also inherits from at least Netscape RSS 0.91 and possibly up through Userland 0.92. It also doesn't list Userland RSS 0.93 or 0.94, but they'd go in the obvious place and don't have any impact on the rest of the tree.

Update: Rael Dornfest saved a copy of the "RSS Futures document" last time Netscape made it available.

2003-05-23 04:39:00 | Comments (1) | TrackBack (0) | Computers::Internet::Web::RSS

Felton on Spam Challenge/Response

Edward Felton has some comments on email challenge/response systems. He's got some valid points, but I think he's missing two important things.

First, the 'hole' that needs to be opened in the sender's Spam blocker doesn't have to be based solely or even partially on the content of the challenge message; it can also be based on the sender, the Subject header, and the In-Reply-To header. As long as your system is set up such that all mail you send is replyable-to, that's enough -- and the Spammers can't use the hole unless they can guess at least an address of someone to whom you've sent mail.

Second, he predicts that spammers will set up automated response systems; this is certainly a possibility, and in the ~2 years I've been using TMDA I've seen evidence of this -- twice. The vast vast vast majority of spammers, though, don't and can't use valid email email addresses to send from, and thus won't ever see the challenge to respond to. If c/r systems become so prevalent that they're forced to start using replyable addresses, then a whole new set of methods for dealing with them will be opened up, and that will be a net win -- even if it maes the c/r systems no longer useful.

2003-05-19 11:58:00 | Comments (0) | TrackBack (0) | Computers::Internet::Mail::Spam

Blosxom Emacs Joy

Doug Alcorn had an emacs save-buffer-same-timestamp function, useful for editing Blosxom posts. I idly mentioned wanting to set it up to be auto-bound to C-x C-s for story files in my Blosxom tree, and before I could remember/figure out how to do that he posted an updated version.

LazyWeb wins again!

2003-05-16 14:23:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Blosxom

RSS 0.91 vs RSS 0.91 reDux

Sam Ruby points out a difference between the two RSS 0.91 specs that I missed in my comparison. Oops!

Netscape's <channel> can contain an optional <textinput> element; UserLand's may not, but has a very very similar <textInput> element.

This is similar to the confusion in OPML RSS subscription files over "htmlurl" and "htmlUrl"; could it be that Radio's XML parser is case insensitive and/or the UserLand folk(s) just think XML is?

2003-05-16 08:46:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::RSS

I upgraded from Blosxom 1.x to 2.0, and plugins are acting just weird. Help!

I upgraded from Blosxom 1.x to 2.0, and plugins are acting weird. They're running, but...it's hard to describe. Sometimes they work, sometimes they don't. Any ideas what's going on?

One possible problem is that you copied & pasted your configuration variables, including the 'my' on those lines. In Blosxom 2.0, those need to be declared without 'my' so plugins can see them; if they have the 'my', they're private to blosxom, and plugins can't see the plog name, the data directory, etc.

2003-05-13 21:49:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Blosxom::FAQ::BlosxomPlugins

Profiling Blosxom, Mark 0

On the Blosxom mailing list, Dave Walker asked about ways to profile Blosxom. There were a few suggestions, such as using time or Devel::SmallProf, but neither of those knows anything about how Blosxom works, and can't give information at very useful levels of detail (time isn't detailed enough; SmallProf is actually too detailed -- if all the time's going in Storable, you'd really rather know if it's from calendar or categories).

Frost Back pointed to the MTTimer Movable Type plugin and asked if anybody could port it.

I'm pretty sure the answer is "no" -- the plugin architectures are radically different, and MTTimer's tag-based approach just doesn't make any sense in a Blosxom world. That doesn't mean there aren't other ways of getting good information, though.

Presented here are two (count them: 1, 2 -- yes, two) completely and totally different ways to do Blosxom profiling. They both require Timer::HiRes but are believed to be otherwise dependancy-free.

Pure Plugin Profiling

The first one is for profiling a plugin at a time, and is minimally invasive; it uses a pair of plugins, "timer_start" and "timer_end". These plugins need to be named in such a way that they 'sandwich' the plugin you're interested in; for instance, if you have a plugin named '65wikiwordish' that you want to profile, you'd install these as '64timer_start' and '66timer_end'.

Together, they measure the time used in the sandwiched plugin's start, filter, head, date, story, foot, and end functions, and write the times out to standard error; usually, that will end up going to a log file.

This method isn't able to measure the time in 'entries', 'template' or 'interpolate', nor in the anonymous functions returned by those. As such, it isn't suitable for profiling plugins such as search (which uses entries), flavourdir (which uses template) or interpolate_conditional (which uses interpolate).

The output looks like (all on one line)

TIMER: date:0.003872 end:0.000100 filter:0.001381 foot:0.000099 head:0.000090 start:0.005967 story:0.012366

For best results, leave this running a while to get multiple result sets, rather than assuming the first one you see is representative. See below (after the invasive method) for information on a summarizing tool.

Incredibly Invasive Instrumentation

The second method replaces your whole blosxom.cgi script with one with lots of instrumentation added. It divides the whole Blosxom execution time up into multiple overlapping bits (in this version, 29 plus up to 9 per plugin). The 'instrumentation.txt' file included presents a hierarchical outline of how these bits relate to each other, but you'll likely need to dive into the blosxom.cgi source to figure out exactly what's included n what -- that's okay though, right, since f you aren't comfortable doing that you aren't trying to profile at that level anyway, right? right.

For each plugin, there's a "plugin_whole_name" bit, which includes all the time spent in the plugin, plus one "plugin_function_name" bit for each function the plugin actually uses; these may well be useful even without digging into the other bits.

The output format is the same as for the first method, except it's tagged with "TIMES" instead of "TIMER", and it's much much longer.

Summarizing

The included 'blos-times' script will the output of either of these (or both, comingled, optionally along with other stuff -- ie, it's okay to throw a whole error log at it), and produce possibly useful summary data. For each defined 'bit' it finds, it will display the minimum time, maximum time, total time, and the average time (mean) per run. Someone with more statistical interest than I might want to add median and standard deviation, but what's there is there.

Using

Download, unzip, and use. If you use the alternate blosxom script, make sure to configure it before you install it, and don't erase your real one. The longer you run it, the better the information you'll get from it, but it chews up disk space so keep an eye on it.

No software comes with a guarantee, and this is no different; that said, it's even less supported than most of my plugins, but it's presented in the hope of being useful or inspiring.

2003-05-13 19:22:00 | Comments (1) | TrackBack (0) | Computers::Internet::Web::Blosxom::Plugins::Profile

XBL and the Zen Garden

Hyatt has a brief introduction to the magic of XBL, showing how the cool Zen Garden could be even cooler if all the world were Gecko.

2003-05-13 01:25:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Design::XBL

I'm using Blosxom 2.0rc2 and some plugins work but others just don't. Why?

I'm using Blosxom 2.0rc2 and some plugins, like 'meta' and 'SmartyPants' are working just fine, but others, like 'buy_from_amazon' and 'ping_weblogs_com' aren't; it's like they're not there at all! What the heck's going on?

You may be tripping over a perl bug; Perl 5.6.0 as shipped with Mac OS X 10.2 (Jaguar) has this problem, as do at least some compilations of 5.5_003.

To work around the bug, change line 149 of blosxom.cgi from

    my($plugin_name, $off) = $plugin =~ /^\d*(\w+?)(_)?$/;

to

    my($plugin_name, $off) = $plugin =~ /^\d*(\w+?)(_?)$/;

. (the only change is transposing the ')' and '?' at the end).

If you're interested in the details of the perl bug, read on; if not, feel free to stop here.

Still here? Okay.

The problem seems to lie in setting the values of capture variables (like $2) for parenthesis that don't match. In the original expression, the (_) doesn't match anything when the expression finally matches, so $2 should be undef; it's not, though, it's "_".

If you walk through the RE evaluator, there's a pretty plausible way this could happen -- at some point, the (\w+?) is matched against "ping_weblogs"; since the ? makes the + non-greedy, the matcher tries to make a match by continuing in the expression; it matches the final "_" against the (_), sets $2 to "_", and goes on, only to run into the "$"; since it's not at the end of the string, the evaluator backtracks to the last choice it made -- and it should clear out the capture variables it set on the way. Possibly as a slightly misguided optimization, it does not -- after all, it'll get set again if the expression matches, right? Finally, the evaluator's matched the whole "ping_weblogs_com" against the (\w+?), and it continues on; it doesn't match the "_" in "(_)", so doesn't set $2, but it turns out that's okay -- that whole group is optional. It gets to the "$", which matches, and it's done, we have a match! But $2 is still set to "_" from the earlier failed match attempt.

The fixed version works just alike, except the (_) isn't optional -- it always matches, it just sometimes matches the empty string. Thus, when the evaluator gets to the final match, and checks (_?) against the end of the string, the parenthesis DO match, and do get filled in -- with "".

This seems to be fixed in 5.6.1, and $2 is properly either "_" or undef in the original version of the expression; the changed version still works too (although the choices are now "_" or "").

This fix will be incorporated into 2.0rc3, due out any day now, so this FAQ entry will hopefully have a short shelf-life as such, but the details of the bug may stay interesting longer.

2003-05-01 16:30:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Blosxom::FAQ::BlosxomPlugins

I added a stylesheet link, but my CSS isn't working. Why not?

<link rel="stylesheet" type="text/css" href="blosxom.css" />

A stylesheet link like that won't work with Blosxom for two related but different reasons.

First, it's using a relative URL for the stylesheet, but what that means will vary depending on how the page is accessed. http://molelog.molehill.org/blox/, http://molelog.molehill.org/blox/Computers/Internet/Web/Blosxom/FAQ and http://molelog.molehill.org/blox/2003/04/29/, for instance, will lead to three different meanings for what "blosxom.css" means (it's slightly worse than that, actually! http://molelog.molehill.org/blox/2003/04/29 leads to a fourth meaning for "blosxom.css").

So, you need to specify a full path for your stylesheet. But what full path? That leads to problem #2.

Blosxom serves up blog pages only; it doesn't serve up individual files. If you specified "$url/blosxom.css", Blosxom would go looking for the "blosxom.txt" story and the "css" flavour. Your stylesheet (as well as other related files, such as images) need to be put in a directory where the webserver can get to them directly, not via Blosxom, and you need to give a full path for that.

For instance, I use:

<link rel="stylesheet"
type="text/css"
href="/blog/flavours/$flavour/molelog.css"
title="Default">

2003-04-29 14:04:00 | Comments (1) | TrackBack (0) | Computers::Internet::Web::Blosxom::FAQ::BasicSetup

Multiple and Alternate Stylesheets

It's well known that <link> with "stylesheet" and "alternate sylesheet" relationships can be used to provide multiple user-selectable stylesheets (at least when they're using a non-broken browser).

What isn't so well known is that there are actually three types of stylehseets: persistent, preferred, and alternate. Although alternate stylehseets are differentiated, reasonably enough, by 'rel="alternate stylesheet"', the difference between persistent and preferred isn't so obvious.

Preferred stylesheets are those that are replacable with alternate stylesheets, and are probably what you want to be using for your main stylesheet if you're usign altenate stylesheets. Preferred stylesheets have a rel attribute of "stylesheet" and have a title.

Persistent stylesheets are used in addition to whatever preferred or alternate stylesheet the user has selected. You probably don't want to use any of these if you're supplying alternate stylesheets. Persistent stylesheets have a rel attribute of "stylesheet" and no title.

Thanks to Netscape DevEdge for explaining this. I never would have figured it out on my own by experimentation, and had somehow completely missed it in the HTML spec.

2003-04-29 04:03:00 | Comments (1) | TrackBack (0) | Computers::Internet::Web::Design::CSS

SeeError 0+1i

Most of my plugins' instructions include like "Look at your error log.". What if your hosting provider won't let you, though?

Well, first, consider getting a different hosting provider -- this one obviously isn't concerned with making it easy (or even possible) for you to do interesting work.

What if that's not an option, though?

Well, the SeeError plugin is a partial solution. In normaly use, it redirects all error output to a temporary file, then appends it to the end of the served page, and removes the temporary file.

If the $handle_die option is enabled, then any raised exceptions will cause a "Possibly-Fatal Error" message to be output to the browser, along wih whatever error text is available. This mode is useful if the only output you're otherwise getting is "fatal server error".

This is not a perfect solution. Drawbacks include, but may not be limited to:

  • error output before seemore is loaded is lost
  • error output after seemore's end() is called is lost
  • if there's a fatal error, no other error output will be printed, even if $handle_die is set; nor will the temporary file be cleaned up
  • this plugin can't be usefully controlled via blosxom's normal enable/disable mechanism; in particular, disabling it will appear to work but will lead to sustained disk-space loss as temporary files are created and not removed. do not leave this plugin installed but disabled.
  • the $handle_die option gives quite a bit of spurious output; it's invoked any time an eval fails, even though that's a perfectly normal occurance, and as far as I can tell it can't differentiate the important times from the unimportant.

Using:

  • download the plugin, unzip it, and put the plugin file in your plugin directory
  • turn on $handle_die if you need to (ie, if you're getting "Fatal server error" rather than blog output)
  • configure the $tmp_dir if you need to; the default should work for unix-like systems.
  • browse to your blog and scroll to the bottom; any error output will be appended. (Depending on your html formatting, you may actually need to look at the page source to see it)

2003-04-28 14:41:00 | Comments (0) | TrackBack (0) | Computers::Internet::Web::Blosxom::Plugins::SeeError

Distributed RSS Discussion