KBD

Keith Devens .com

Friday, March 19, 2010 Flag waving
QUOTING THE KEYLOGGER TO PISS PEOPLE OFF WHAT ARE YOU GOING TO DO ABOUT IT – Frostituté, Dragonblight (WoW Forums)

Tag: This website

Page 1 →

Daily link icon Sunday, July 12, 2009

  1. John Resig - HTML 5 Parsing ~:

    What's interesting about this particular implementation is that it's actually an automated conversion of Henri's Java HTML 5 parser to C++. This conversion happens automatically and changes will be pushed upstream to the Mozilla codebase.

    Normally I would balk at the mention of a wholesale, programmatic, conversion of a Java codebase over to C++ but the results have been very surprising: A 3% boost in pageload performance.

    When I finally get my new Django-based site running I'll switch my markup over to HTML5 Smiley

       (0) Tags: [Django, HTML, Mozilla, This website]

Daily link icon Wednesday, May 20, 2009

"via" links

Just noticed at Earl's site ~ he uses a tilde to represent "via" links. I like it.

Notes: 1. He only puts it at the end of a paragraph. Not sure whether I'd do the same. 2. It looks ugly with underlined links. I should create a via link style that's not underlined.

Daily link icon Thursday, July 12, 2007

  1. I dunno if I have a recent version of my blogging bookmarklet on my site anywhere... last time I tried to find it I think the version I found was outdated. So here it is: Blog.

       (0) Tags: [Bookmarklets, Code, This website]

Daily link icon Tuesday, February 6, 2007

  1. Why you should be using disambiguated URLs. Yep, all urls on my site each have a single resolved URL, no-www and all.

       (0) Tags: [This website]

Daily link icon Wednesday, August 30, 2006

Bug in my procmail blacklist

I've had a bug in my procmail blacklist over the past < 24 hours that made it so that if you mailed me through my web form I didn't receive your mail. Sorry, please try again.

Daily link icon Tuesday, May 2, 2006

  1. Digg: Good List of "Programming Fonts". That's me Smiley

       (4) Tags: [This website]

Daily link icon Thursday, February 16, 2006

What browser addon automatically spiders all pages linked from a page?

In my referrers I commonly see things like this (first URI was the referrer for all the other requests):

/weblog/archive/2002/Dec/26/LordOfTheRings - 86

/weblog/archive/2002/Dec/22/PoorIraqiSoldiers... - 1
/weblog/archive/2002/Dec/30/JamesBrownRULES/rss - 1
/weblog/archive/2002/Dec/28/FunnyCoding/rss - 1
/weblog/archive/2002/Dec/22/WriteCode/rss - 1
/weblog/archive/2002/Dec/23/MetroidMusic/rss - 1
/weblog/archive/2002/Dec/22/WriteCode - 1
/weblog/archive/2002/Dec/31/ProgrammingLanguagesUserInterface - 1
/weblog/archive/2002/Dec/31/ProgrammingLanguagesUserInterface/rss - 1
/weblog/archive/2002/Dec/28/NoCompile-TimeIncludeFunctionPHP - 1
/weblog/archive/2002/Dec/23/FireflyTimePersonalStories/rss - 1
/weblog/archive/2002/Dec/23/GoogleKnowsSpellcheckName - 1
/weblog/archive/2002/Dec/28/NoCompile-TimeIncludeFunctionPHP/rss - 1
/weblog/archive/2002/Dec/28/FunnyCoding - 1
/weblog/archive/2002/Dec/23/GoogleKnowsSpellcheckName/rss - 1
/weblog/archive/2002/Dec/21/Firefly,OneMoreTime - 1
/weblog/archive/2003/Jan/01/WillFiltersKillSpam - 1
/weblog/archive/2002/Dec/23/TotalInformationAwareness - 1
/weblog/archive/2002/Dec/31/BenSteinAmericanEnterprise/rss - 1
/weblog/archive/2002/Dec/22/SeasonOfFriends - 1
/weblog/archive/2002/Dec/31/BenSteinAmericanEnterprise - 1
/weblog/archive/2002/Dec/23/MetroidMusic - 1
/weblog/archive/2002/Dec/28/TheLadderTheory - 1
/weblog/archive/2002/Dec/23/Schaeffer - 1
/weblog/archive/2002/Dec/23/ProgrammingFunForDay/rss - 1
/weblog/archive/2002/Dec/30/DontGoShoppingHungry - 1
/weblog/archive/2002/Dec/28/MeaningfulProgramming/rss - 1
/weblog/archive/2002/Dec/23/ProgrammingFunForDay - 1
/weblog/archive/2002/Dec/28/MoreQuickLinks/rss - 1
/weblog/archive/2002/Dec/28/MeaningfulProgramming - 1
/weblog/archive/2002/Dec/23/BabyFactories - 1
/weblog/archive/2002/Dec/23/ScienceMagazinesHighlightOf2002/rss - 1
/weblog/archive/2002/Dec/28/MoreQuickLinks - 1
/weblog/archive/2002/Dec/28/ReasonsDidntTwoTowersNearlyLotR/rss - 1
/weblog/archive/2002/Dec/23/ScienceMagazinesHighlightOf2002 - 1
/weblog/archive/2002/Dec/23/ChristianityAndFreeWill/rss - 1
/weblog/archive/2002/Dec/30/DontGoShoppingHungry/rss - 1
/weblog/archive/2002/Dec/28/ReasonsDidntTwoTowersNearlyLotR - 1
/weblog/archive/2002/Dec/30/JamesBrownRULES - 1
/weblog/archive/2002/Dec/30/ThePerfectParser/rss - 1
/weblog/archive/2002/Dec/23/TotalInformationAwareness/rss - 1
/weblog/archive/2002/Dec/23/ChristianityAndFreeWill - 1
/weblog/archive/2002/Dec/23/IraqInvitesTheCIA - 1
/weblog/archive/2002/Dec/25/CharlieBrownChristmas/rss - 1
/weblog/archive/2002/Dec/30/ThePerfectParser - 1
/weblog/archive/2002/Dec/30/Relbookmark/rss - 1
/weblog/archive/2002/Dec/28/TheLadderTheory/rss - 1
/weblog/archive/2002/Dec/23/BillFrist - 1
/weblog/archive/2002/Dec/23/Schaeffer/rss - 1
/weblog/archive/2002/Dec/30/Relbookmark - 1
/weblog/archive/2002/Dec/23/IraqInvitesTheCIA/rss - 1
/weblog/archive/2002/Dec/23/BillFrist/rss - 1
/weblog/archive/2002/Dec/25/SnowballFight/rss - 1
/weblog/archive/2002/Dec/28/PHP4.3.0Released - 1
/weblog/archive/2002/Dec/28/PHP4.3.0Released/rss - 1
/weblog/archive/2002/Dec/28/IanMcKellenPlayDumbledore - 1
/weblog - 1
/weblog/archive/2002/Dec/25/ItllBeGreat - 1
/weblog/archive/2002/Dec/24/YouGottaSeeThis - 1
/weblog/archive/2002/Dec/28/IanMcKellenPlayDumbledore/rss - 1
/weblog/archive/2002/Dec/30/PoliticsForToday... - 1
/weblog/archive/2002/Dec/28/D.B.WoodsideInterview - 1
/weblog/archive/2002/Dec/26/ConversationBeach/rss - 1
/weblog/archive/2002/Dec/26/LetsBlowStuffUp - 1
/weblog/archive/2002/Dec/25/ItllBeGreat/rss - 1
/weblog/archive/2002/Dec/25/ChineseFoodForChristmas - 1
/weblog/archive/2002/Dec/27/OfficialLogoForDarwin - 1
/weblog/archive/2002/Dec/23/BabyFactories/rss - 1
/weblog/archive/2002/Dec/27/Reformed.OrgDown - 1
/weblog/archive/2002/Dec/25/ChineseFoodForChristmas/rss - 1
/weblog/archive/2002/Dec/26/LetsBlowStuffUp/rss - 1
/weblog/archive/2002/Dec/25/SnowballFight - 1
/weblog/archive/2002/Dec/27/Reformed.OrgDown/rss - 1
/weblog/archive/2002/Dec/25/Best.Cheesecake.. - 1
/weblog/rss - 1
/weblog/archive/2002/Dec/26/ConversationBeach - 1
/weblog/archive/2002/Dec/27/OfficialLogoForDarwin/rss - 1
/weblog/archive/2002/Dec/28/QuickLinks - 1
/weblog/archive/2002/Dec/25/CharlieBrownChristmas - 1
/weblog/archive/2002/Dec/24/McGreeveysDamnMoron - 1
/weblog/archive/2002/Dec/24/McGreeveysDamnMoron/rss - 1
/weblog/archive/2002/Dec/23/FireflyTimePersonalStories - 1
/weblog/archive/2002/Dec/26/LordOfTheRings/rss - 1
/weblog/archive/2002/Dec/24/YouGottaSeeThis/rss - 1
/weblog/atom - 1
/weblog/archive/2002/Dec/28/QuickLinks/rss - 1
/weblog/archive/2002/Dec/28/D.B.WoodsideInterview/rss - 1

Sorry to post the whole thing here, but that was the only way to give a sense of how annoying this is to me, and how much bandwidth and server resources these people waste. And, annoyingly, it doesn't just spider, but drops referrers everywhere. This must be a browser plugin that some people are using (or could it be one of those "accelerators" that some dial-up Internet providers provide?). I've checked my Apache log and there are no identifying marks such as a user agent appended to the browser's user agent string.

Anyone have any clue what this is?

Daily link icon Monday, February 13, 2006

Tag Cloud!

Hey, check it out. I now have a tag cloud based on power laws Smiley (big smile)

Daily link icon Sunday, February 12, 2006

Yay tags

Just tagified my site (does that make me web 2.0?). Incidentally, I just discovered that MySQL's API returns all result data as strings. So, even if your field is a number (say, your primary key), you get a string back. Weird.

Update: Incidentally, tag renaming is a pretty hard problem. You have to watch for recursive renames... and what happens if there's already a tag for the tag name you're trying to rename a tag to? You'll have to run through every associated tag table and update all the old ids to the new one, but it's not like there's only ever one association table (i.e. if I tag my weblog entries, and I make a tagged bookmark system, and have my wiki pages tagged, I'll have three different associated tables), so the tag library can't know what it has to update unless you tell it about all those tables. So, it's messy.

Daily link icon Tuesday, February 7, 2006

  1. Eric Sink: Yours, Mine and Ours (via Keith Gaughan). Good article, but then I realized I still had about half of it left. Maybe I'll finish it later. FYI, my weblogging tool is an example of MeWare too. Smiley

       (1) Tags: [Programming, This website]

Daily link icon Wednesday, January 18, 2006

  1. Netdisaster.com ★. My site's under attack! AAaaaaah! Mindless fun...

       (1) Tags: [This website]

Daily link icon Wednesday, January 4, 2006

test57 - Anne’s Weblog about Markup & Style

test57 - Anne’s Weblog about Markup & Style:

You really want to bookmark test57. It is the answer to all footer at the bottom while using CSS instead of a table with height="100%" (you there, put away that gun) problems you might have. (What a sentence.) I have used it a few times over the past few years and found it extremely useful and simple.

Ooh, maybe I'll de-table-ify my site now.

Update: Hah, I'm still right. Test57 doesn't show off why that layout breaks compared to tables. And... I tested it and I'm right. Try assigning a background color to the "nav" element in test57 and see what happens. Lame.

Anyway, there are other css-based column layouts I've seen that might not have this problem... maybe I'll revisit this later.

Daily link icon Tuesday, December 13, 2005

  1. I love my site. I can go to a non-existent URL, click edit, add some text and submit, {back*2}, refresh, and the page is there.

       (0) Tags: [This website]

Daily link icon Saturday, December 10, 2005

  1. Now that Atom is an RFC I implemented an Atom feed for my site. And it validates. It was actually basically done a few days ago but for bragging rights I wanted to get actual XHTML in the <content> element instead of entity-escaped HTML before I "went live", and that took a minor modification to my XML library.

       (0) Tags: [Programming, This website]

Daily link icon Tuesday, December 6, 2005

  1. I just found out Atom now has an RFC number: 4287. Congrats to all involved. Now it's definitely time for me to provide an Atom feed.

       (0) Tags: [Programming, This website]

Daily link icon Sunday, December 4, 2005

blo.gs seems to be broken for good this time

blo.gs seems to be broken for good this time. It'd be very easy for me to write some code to manage my blogroll, but the thing I liked about blo.gs was that it told me when sites updated. I wish I could get that data out of Ping-o-Matic somehow. Without ping data, I'll have no choice but to poll.

Maybe I could use PubSub, but I'd have to have a Jabber client running on my server.

Update: Testing PubSub. Also, what's always been frustrating to me about Blogrolling is that even though they must have the information about the time a site updated, they only expose a flag indicating whether the site has recently updated, where "recently" is some fixed time period you specify in your preferences.

Update: blo.gs just worked for the first time in days for updating my blogroll, but the blogroll on my site isn't mine. Weird.

Daily link icon Tuesday, November 29, 2005

  1. I've actually been keeping up with comments lately. Go me.

       (0) Tags: [This website]

Daily link icon Tuesday, November 22, 2005

uriescape

I've been meaning to write a replacement for PHP's built-in urlencode so that characters that don't have to be escaped in the path part of a URI won't be. Here 'tis:

<?php
function uriescape($uri){
    static 
$invalid_chars '/([^-A-Za-z0-9_.!~*\'():@&=$, ])/e';
    return 
str_replace(' ''+'preg_replace($invalid_chars'\'%\'.dechex(ord(\'$1\'))'$uri));
}

$uri ' -_.!~*\'():@&=+$,';
var_dump(urlencode($uri));
var_dump(uriescape($uri));
?>

Gives:

string(43) "+-_.%21%7E%2A%27%28%29%3A%40%26%3D%2B%24%2C"
string(17) "+-_.!~*'():@&=%2b$,"

Note that this is only valid for the path component of the URI. In particular, it's not valid for a query string since the extra characters ":", "@", "&", "+", ",", and "$" are reserved there. Though "+" is interpreted as a space anyway, so I don't know what it means to say that it's reserved in the query and not a path segment. And I don't know why characters like "/" and "?" are reserved in the query as well.

Update: Fixed so that the '+' would still be escaped, as it needs to be, despite what the spec says, to not be interpreted as a space. Where did that convention of using a '+' to represent a space come from anyway? I didn't notice that specified anywhere in the URI spec.

Daily link icon Thursday, November 17, 2005

"Clip words" function in PHP

I've found this simple clipWords function I wrote to be really handy. I use it for my quotes thing to generate page titles and such. Check your browser bar on this page, for example.

<?php
function clipWords($str$word_count){
    
preg_match('/^\W*(\b\w+\b\W*){0,'.$word_count.'}/'$str$matches);
    return 
trim($matches[0]);
}
?>

You can use code like this to generate an elipsis:

<?php
$short 
clipWords($full7);
if(
strlen($short) < strlen($full))
    
$short .= '...';
?>

Update: Or, alternately:

<?php
function clipWords($str$word_count){
    return 
join(' 'array_slice(preg_split('/\s+/'trim($str)), 0$word_count));
}
#or
function clipWords($str$word_count){
    return 
join(' 'array_slice(preg_split('/\s+/'trim($str), $word_count+1), 0, -1));
?>

Daily link icon Monday, November 14, 2005

Google Analytics

Joseph Scott’s Blog » Google Analytics. Ooh, I may sign up.

Update: From their service agreement:

You will have and abide by an appropriate privacy policy and will comply with all applicable laws relating to the collection of information from visitors to Your websites. You must post a privacy policy and that policy must provide notice of your use of a cookie that collects anonymous traffic data.

I have to post a privacy policy? Ick. Lame.

Also, under proprietary rights, does this:

(c) use the trademarks, trade names, service marks, logos, domain names and other distinctive brand features or any copyright or other proprietary rights associated with the Service for any purpose without the express written consent of Google;

mean that I can't talk about the service at all (since to talk about it I'd have to say "Google Analytics", for instance)?

And, if I stop using their service, I have to notify them in writing?

15. TERM and TERMINATION . Either party to the Agreement may terminate it at any time and for any reason.

Upon any termination or expiration of this Agreement... You will delete all copies of Google Analytics's UTM code from all Pages and certify thereto in writing to Google within three (3) business days of such termination.

No thanks.

Daily link icon Sunday, November 13, 2005

Comment subscriptions

I used to have a feature on my site that let you choose to be e-mailed when someone comments on a post if you give your e-mail address. In the notification e-mail you'd get a copy of the comment that was left, an 'unsubscribe' link, and so on. In fact, all the code for this is for the most part still in my weblog application code.

The main reason it's not enabled now is because I don't want people getting my comment spam (and flames) in their e-mail, but the only way around this is for me to approve comments before subscription e-mails go out.

Should I re-enable subscriptions despite the fact that people might occasionally get spam or flames? I suppose I can have a disclaimer that will tell people to beware. What do you think?

Update: Ned just implemented this feature.

Daily link icon Friday, November 4, 2005

Sam Ruby: Sometimes the dragon wins

Sam Ruby: Sometimes the dragon wins. Not here: ɥɦɐ. And you can search for it.

My dirty little secret, however, is that I'm storing everything in MySQL in fields declared to be encoded in latin1, storing UTF-8 in there anyway, and trusting the browser to get Unicode right. I've tried storing everything in Unicode-encoded fields in MySQL, but it mangled some of the rarer characters when I tried to convert this post once my host upgraded to MySQL 4.0 or 4.1 (whichever one first supported Unicode fields). Some characters worked, some didn't. My only guess is that MySQL only handled an older version of Unicode and stripped everything it didn't understand.

Should I pollute my root namespace?

I've decided that my wiki has long since been dead. Editing has been disabled for a while, and I don't even remember whether that was an accident or not (i.e. whether I was working on the software and left it broken (and whether that was intentional or not) or whether I just decided to disable it). Public editing just did more harm than good (extraneous pages were created, comments would be left I didn't need, and discussions would form (and a wiki isn't a good place to conduct a discussion)).

But, I still want a place to put random pages. So, should I:

  1. Put all random pages at my root (i.e. right under keithdevens.com/)?
  2. Clean up the /wiki and put all random pages there?
  3. Create a new namespace like /pages and put random pages there?

I'm leaning towards A because:

  1. I already have certain content pages at my root, such as the pages in my tabbed navigation at the top
  2. Even though they're at the root, random pages can still have structured (i.e. nested) URLs
  3. Why have the extra nesting of a /pages or a /wiki? It's like "of course they're 'pages'. They're on your web site, after all". Or alternatively, "Huh? /wiki, but uneditable pages?"

Chris Langreiter puts all his stuff under "space". Ian Bicking puts all his stuff at the root, but that's the root of blog.ianbicking.org so that doesn't count. Main reasons I'm reluctant to choose A are:

  1. It pollutes my root namespace and seems "messy" to me
  2. Lots of little pages at the root make trivial little pages as important, as far as the URL is concerned, as important pages like /about or /software
  3. I feel like it's hard to change to something else later if I do it this way

Opinions very welcome.

Daily link icon Thursday, October 27, 2005

Comment post times

I keep moving around time zones, so my blog comment times are getting all inconsistent. My post times are all made local to where I happen to be, and the time and zone are displayed. But for comments, they're all timestamped with my local time zone when they're made, but no record is kept of the GMT (UTC) time. So, I'm going to store both time zones, and display the local time as relative to the parent post, and the GMT (UTC) time. The third option is to display something like "22 minutes later" so time zone issues go away, but I don't fancy that.

As another site related thing, I may convert my calendar on the right to use this nifty Javascript calendar (via Michael) and maybe hook it up to some Ajax as a first foray into it.

Daily link icon Saturday, October 15, 2005

Is someone pinging for me?

Is someone pinging for me to tell sites like blo.gs (which powers my blogroll) that my site's been updated? According to blo.gs my site was updated 1 hour ago, but I didn't do it.

Update: And it keeps doing it. I've been watching it, and it's "pinged on its own" a bunch tonight. It says my site was updated 22 minutes ago, but I didn't do it. Given this strangeness, plus the fact that blo.gs' search has been disabled for weeks making it impossible to add new sites, it looks like it's time for me to move away from blo.gs.

Oh, not to mention the fact that they've been inexplicably displaying apostrophes as '&#39;' for a long time now.

Daily link icon Thursday, October 6, 2005

  1. Ned Batchelder: CSS-only RSS badge. Gonna do that. Also gotta compare with this version.

       (0) Tags: [This website]

Daily link icon Sunday, September 25, 2005

  1. Please don't comment and put a fake e-mail address. I made the field optional so that people wouldn't need to do that.

       (0) Tags: [This website]

Daily link icon Thursday, September 22, 2005

  1. Well, it's been a few years.

       (0) Tags: [This website]

Daily link icon Saturday, August 27, 2005

  1. Woo, my site's moving to San Diego.

       (0) Tags: [This website]

Daily link icon Friday, August 19, 2005

  1. ongoing · Atom 1.0. Time for me to support Atom Smiley I'll do that this weekend, along with autodiscovery.

       (0) Tags: [Programming, This website]
Page 1 →
March 2010
SunMonTueWedThuFriSat
 123456
78910111213
14151617181920
21222324252627
28293031 



RSS feed RSS feed for Keith's Weblog
Atom feed Atom feed for Keith's Weblog
Weblog archive
Recent comments
  on 2 posts

Recent comments XML

I hate ASP.NET

I hate ASP... I was doing wonders​with PHP, then suddenly one of my​clients...

Johnies: Mar 17, 6:14am

Quantum physics and free will

I knew you were going to say that....

Tom Massey: Mar 15, 9:26pm

Generated in about 0.193s.

(Used 10 db queries)