Categories
aqcom aqWiki Cantrip computing epistula escape forever Imported From Epistula quoth web development

Mod Rewrite as a virtual hosting environment

So, I’ve now got control of istic.net. istic.net is going to have a number of subdomains, and I don’t really want to muck around with apache every time I want to add one, or get my Friendly Neighbourhood Sysadmin to do so.

Instead, I want mod_rewrite to do it, which it does. I have a virtualhost that handles *.istic.net, and passes it on to the following .htaccess file:

RewriteEngine on
RewriteRule     ^.*.istic.net.*$        -       [L]
RewriteRule   (.*) %{HTTP_HOST}/$1

Which redirects “http://ritual.istic.net” to ”~/sites/istic/ritual.istic.net”, which is what I want.

That shouldn’t have taken as many hours as it did, so I’m writing it down.

Secondly, I’ve moved my braindump – hol.istic.net – to a temporary new home whilst the DNS resolves. By the wonders of my new domain name, it’s temporarily housed at supercalifragil.istic.net which is possibly the best subdomain ever 🙂

So, my personal “hire me” site could go to “narciss.isitic.net”, I could move all my open source projects to “altru.istic.net”, set up a site about religion at ritual.istic, head of into the futur.istic and be all m.istic about it and whenever I got fed up with the whole blogging thing and needed to move, I can always go ball.istic.

This isn’t actually far from the plan, which is to move the far flung tin-pot empires of AqCom that are getting lost under five years of journal archives & articles, and move them to their own domains – or subdomains, or sub-subdomains – where they can live happily ever after.

Categories
Imported From Epistula MLP

Bookmarks

Because lack of content is a dangerous thing, and people are occasionally interested in this kind of stuff. My bookmarks file, slightly edited:

Bookmarklets

  • Translate
  • Referer
  • Wayback
  • <a href="javascript:var verbsRE=/(b)(i'm|it's|he's|here's|she's|that's|there's|they're|we're|what's|who's|you're|is|are|am|are|was|were|be|being|been|go)(b)/gi;var lyRE=/(w)(ly)(b)/gim;function HL(node){if(node.hasChildNodes){var hi_cn;for(hi_cn=0;hi_cn<node.childNodes.length;hi_cn++){HL(node.childNodes[hi_cn]);}}if(node.nodeType==3){var tempNodeVal=node.nodeValue;if(verbsRE.test(tempNodeVal)){tempNodeVal=tempNodeVal.replace(verbsRE,%22$1$2$3%22);tempNodeVal=tempNodeVal.replace(lyRE,%22$1$2$3%22);newNode=document.createElement(‘span’);newNode.innerHTML=tempNodeVal;pn=node.parentNode;pn.replaceChild(newNode,node);}}}HL(window.document.getElementsByTagName(‘body’)[0]);”>Passivator
  • Random Joke
  • <a href="javascript:(function(){var root=document.getElementsByTagName('html')[0];var mydomtree=processdomnode(root);var newwin=window.open();newwin.document.write('

    DOM tree

    ‘);newwin.document.body.appendChild(mydomtree);function processdomnode(n){if((n.nodeType==3)&amp;&amp;(n.nodeValue.replace(/[ nrt]/g,”).length==0))return;var mynode=document.createElement(‘div’);var mytitle=document.createElement(‘span’);if(n.nodeType==3){mytitle.setAttribute(‘title’,n.nodeValue);mytitle.appendChild(document.createTextNode(n.nodeValue.replace(/^[ ntr]*/g,”).substring(0,4)+’u2026′));mytitle.className=’content’;}else{mytitle.appendChild(document.createTextNode(n.nodeName));}mynode.appendChild(mytitle);for(var i=0;iShow DOM tree

  • <a href="javascript:(function(){var root=document.getElementsByTagName('html')[0];var mydomtree=processdomnode(root);var newwin=window.open();newwin.document.write('

    DOM tree

    ‘);newwin.document.write(‘

    Hide text nodes

    ‘);newwin.document.write(”);newwin.document.body.appendChild(mydomtree);function processdomnode(n){if((n.nodeType==3)&amp;&amp;(n.nodeValue.replace(/[ nrt]/g,”).length==0))return;var mynode=document.createElement(‘div’);var mytitle=document.createElement(‘span’);if(n.nodeType==3){mytitle.setAttribute(‘title’,n.nodeValue);mytitle.appendChild(document.createTextNode(n.nodeValue.replace(/^[ ntr]*/g,”)));mytitle.className=’content’;mynode.className=’content’;}else{mytitle.appendChild(document.createTextNode(n.nodeName));}mynode.appendChild(mytitle);mytitle.referenceNode=n;addEvent(mytitle,’mouseover’,hover);addEvent(mytitle,’mouseout’,unhover);for(var i=0;i4)&amp;&amp;(n.nodeName.toLowerCase()!=’body’))apch.className=’longcn’;mynode.appendChild(apch);}}if((n.childNodes.length>4)&amp;&amp;(n.nodeName.toLowerCase()!=’body’)){var expander=document.createElement(‘a’);addEvent(expander,’click’,dntoggle);expander.href=’#’;expander.appendChild(document.createTextNode(‘+’));expander.className=’expander’;mynode.appendChild(expander);}return mynode;}function addEvent(obj,evType,fn,useCapture){if(obj.addEventListener){obj.addEventListener(evType,fn,useCapture);return true;}else if(obj.attachEvent){var r=obj.attachEvent(‘on’+evType,fn);return r;}}function dntoggle(e){if(window.event)t=window.event.srcElement;if(e&amp;&amp;e.target)t=e.target;if(!t)return;ta=climbDomTree(t,’a’);t=climbDomTree(t,’div’);if(!t)return;minus=’–‘;for(var i=0;iShow DOM Tree II

  • Document Tree Chart
  • /g,’&amp;gt;’).replace(/</g,'&lt;').replace(/%22/g,'&quot;');}var q,h,i,z=open().document;z.write('

    Images linked to by ‘+hE(location.href)+’:


    ‘);for(i=0;q=document.links[i];++i){h=q.href;if(h&amp;&amp;I(h))z.write(‘

    ‘+q.innerHTML+’ (‘+hE(h)+’)
    ‘);}z.close();})()”>linked images

  • <a href="javascript:(function(){ function zoomImage(image, amt) { if(image.initialHeight == null) { /* avoid accumulating integer-rounding error */ image.initialHeight=image.height; image.initialWidth=image.width; image.scalingFactor=1; } image.scalingFactor*=amt; image.width=image.scalingFactor*image.initialWidth; image.height=image.scalingFactor*image.initialHeight; } var i,L=document.images.length; for (i=0;izoom images in
  • go to referrer
  • <a href="javascript:(function(){ function zoomImage(image, amt) { if(image.initialHeight == null) { /* avoid accumulating integer-rounding error */ image.initialHeight=image.height; image.initialWidth=image.width; image.scalingFactor=1; } image.scalingFactor*=amt; image.width=image.scalingFactor*image.initialWidth; image.height=image.scalingFactor*image.initialHeight; } var i,L=document.images.length; for (i=0;izoom images out
  • <a href="javascript:function toc(){var x = document.body.childNodes;var y = document.createElement('div');var title = y.appendChild(document.createElement('span'));title.innerHTML = %22Table of Contents%22;y.id = 'toc';var z = y.appendChild(document.createElement('ul'));y.className=%22list%22;var toBeTOCced = new Array();for (var i=0;i<x.length;i++){if (x[i].nodeName.indexOf('H') != -1 ){toBeTOCced.push(x[i]);}}for (var i=0;iTOC
  • Search Site
  • Subscribe with Bloglines
  • BugMeNot

games

Interesting

Art

food

Music

Visual

Tech

Words

People

Stuff

comics pending

blog this

Code

Python

eclipse

Research &amp; Ref

Stock

media

Computing

WinXP

Theme

Linux

psx emu

ed2k

Mush

food

Quick Access

Leakytap customs

Search Engines

Shopping

Blogging

Encyclopedia

Movies

Music

Dictionary

Thesaurus

Financial

News

Internet Tools

Programming

Open Source

Courier Services

Mozilla Development

Games

Television

Maps

Reference

Books

Medical

Syndication

2004-07-15

Categories
Imported From Epistula internet

GMail

I’m assuming everyone who wants a gmail invite has one by now, but in case not, I have a couple spare. Any takers?

All Gone

Categories
Imported From Epistula web development XML

Atom Comments

Looking up your hostname…
Got your hostname.
Welcome to the Internet Relay Network Aquarion
Your host is excalibur.esper.net running tiamat-1.0(04).ylist.hfix via dircproxy 1.0.5
This proxy has been running since Tue, 24 Aug 2004 09:41:55 +0100
nickserv
identify ****
Aquarion sets mode +i Aquarion
Now talking on #eddings
Topic for #eddings is: ‘I am A PRODUSER.’
Topic for #eddings set by itagne at Wed Aug 25 08:50:42 2004
Mandy
[10:29] yeah
Mandy
[10:29] occasionally I’ll log into the server via the website and delete the crap manually
Senji [10:41] continues to think that feeds should include magic information on how to comment on them, rather than you having to go to the actual entry’s page to comment.
Mandy
[10:46] it would be useful, yes
gilmae
[10:46] I’m betting taht will be ATom’s Killer Feature
-NickServ-
Password accepted – you are now recognized.
(You Connected)
Aquarion
Er, no. I think that’s a really sucky idea
gilmae
almost everything required to do it already exists in Atom, and the last stephas been mooted
gilmae
why?
Aquarion
Mostly because it dictates what I store (and can store) about a person
Senji
Aquarion – why?
Senji
Aquarion – the feature I want is basically a URL.
Aquarion
That already exists in RSS.
gilmae
what else would you demand of the user?
Aquarion
It’s what the <comments />element is for.
Senji
<comments />– no comments? 🙂
Senji
So it does… 🙂
Aquarion
gilmae, For any Epistula entry, I store various things from the location from where I posted it, date, time. I could include mood, current music playing, a whole host of things.
gilmae
for comments?
Aquarion
I could also do that with comments
gilmae
you could
Senji
Aquarion’s comments have lots of tickyboxes.
Aquarion
The point is that any standardised comments interface wouldn’t let me.
Aquarion
And there’s that too. It’s why any given API cannot do everything, and the Atom API won’t ever work fully for all weblogs
gilmae
The comments over Atom would just be a way for commenting for people who don’t want to go to your site though, in the same way that the feed is for people to read your posts without going there
gilmae
people who want the frilly bits are going to read the site, and comment there
Aquarion
They can fuck off. If they can’t be bothered to go to my site, I don’t need their opinion.
Senji also wishes that people wouldn’t use javascript popups for comment interfaces…
gilmae
It’s been al ong time since *you* were on dial up, eh, Aqn
gilmae
frankly, when I was on dialup, I didn’t have the time to sit around for people’s designs to load up
Senji
gil – people’s designs were too heavyweight then 😛
gilmae
I wanted to read what they said, not see the same design I saw yesterday
Aquarion
Because if it’s infinatly extendable, then no one client will support everything, and if it isn’t, then I can’t store everything I want.
gilmae
obviously, Aqn excepted cause he changes his header image often :- )
Aquarion
gilmae: It’s not the design. It’s the validation, the optional info (And different sites having different optional bits)
Mandy
Senji – I used to have javascript popups, but then I changed to a better blogging system. :-p
gilmae
Senji, I read about two dozen feeds daily, about another three dozen weekly…even light designs start to add up over that 56K link
Aquarion has about 180 RSS feeds he checks at the moment
gilmae
Aqn: validation? you can still do that over Atom
Aquarion
But I tend not to read them in the aggregator. If I want to read them, I go to the site they came from.
Aquarion
gilmae: Last I saw it, all atom’s validation was post effect. I can’t say “these you need”, and I still can’t include my tickyboxes
gilmae shrugs…behaviour differs obviously
Aquarion
I really don’t like the homogeneousness that reading everything though a aggregator (or a f/list, for that matter) dictates
Aquarion
I spend a while with my site making it look readable, and having it parsed though a sucky interface negates that
gilmae
don’t get me wrong, I’m really trying not to be personal, but that is so arrogant
Aquarion
Yes
gilmae
its a pretty short step to only allowing people to email you if they do it through the client you give them
Aquarion
I’d disagree with that.
Aquarion
My biggest problem with the comment-by-atom thing, and the reason why nothing I will ever write will use it, is that it’s an gaping hole with a large sign pointing into it saying “Free google-rank! Point your spambot here!”
gilmae
the only possible response I can give to that is awful, cause it is “It will all be better in the future”ism
Aquarion
When we have jetpacks and a base on the moon, I shall possibly rethink my position
gilmae
but the spec is pretty raw, and I just can’t see it going through without the ability to return reponse codes to indicate that an entry doesn’t validate, nor can I see it going through without allowing the author to close off comments, either permenantly or on a spam by spam basis
Aquarion
Yes, but that just means we have to run spamassassin on all our comments
Aquarion
And I’d rather not have another pile of “possibly spam” to sort though every week
gilmae
I can’t see why something like mt-blacklist can’t be used for Atom comments
Aquarion
Me neither, but I don’t see blocking spam as preferable to having the hole in the first place
Aquarion considers pasting this conversation into an entry
gilmae
actually, that’s very well done, Aqn
gilmae
you just came up with The Perfect Reason for people to write their own blogging engines
gilmae
“Well, I wrote my own so that my commenting system isn’t Movable Type’s”
Aquarion
Yeah, it’s a side benefit 🙂

(Slightly later)

gilmae
shall i make a Perfect World statement? :- )
Aquarion
You can, I might even append it to the entry I just posted 🙂
gilmae
In A Perfect World, and I accept that this is the same world as the one with Mr Fusion-powered-DeLoreans, you (Aqn) would be able to publish your schema/DTD/whatever of your commenting-frilly-bits, and the Atom client would be able to use discovery to see that you support this functionality and the schema would tell it how to support it
Aquarion
That is indeed a perfect world
Aquarion
Actually X-Forms would solve some of that.
Aquarion
Include an X-Form for the comment – which has validation information – for each entry
Aquarion
And, while we’re at it, I want a pony ana castle.
Categories
Computer Games Current Affairs Imported From Epistula Personal

Bring me that horizon

In brief then:

  • Am back from con. It was fun. Report later.
  • UK Media is back in “Qualifications” peanut-galleryery. Report later.
  • Doom 3 Rocks. Report later.
  • Sid Meier’s Pirates remake looks like it will rock. Report later.
  • Sims 2 has gone gold, and is on target for September release. Report later.
Categories
Imported From Epistula Personal

The saga of the cat, Part One

So, we have more or less been adopted by Arnold The Cat recently. Mostly because I tend to leave the back door open (Mmm, nature) and Arnold likes being fuzzled and so wanders up to my room when I’m home.

LoneCat, love of my life and co-inhabitant of this particular version of domestic bliss, is allergic to cats. Arnold, recognising this, prefers to sit on her bed if the doors open, and glare at her when she isn’t stroking him. Which is – obviously – always.

Thus the essential drama is maintained. LoneCat verses Real Cat. LoneCat is well trained. As she has mentioned she occasionally lets Arnold use the house as a thoroughfare, and today this ritual was once again performed. Arnold batted at the cat flap (installed by previous owners, one-way locked by us. Cats can get out, but not in), LoneCat let him in, failing to notice that it was pelting with rain outside.

Arnold, finding himself in a warm place in which he was not actively being rained upon, felt that this was a place in which he could remain. Specifically, he felt that halfway up the spiral staircase was the ideal place from where a small, cute, white and grey splotched feline could lay and carefully watch all that passed below. LoneCat – who couldn’t touch the cat – then tried to convince it vocally that this wasn’t a good place to be, and out in the nice, fresh rain was the ideal place for the well appointed feline this summer.

The cat didn’t swallow this. Instead, it batted at one of the yellow plastic ducks we have on our stairs for reasons I one day hope to explain. The cavalry – that is Me – was called in. I attempted to talk Arnold down from the stairs. I tried pushing, guiding it with strokes and fuzzles, and lifting it up. This was repulsed with tactics such as ignoring me, moving out of the way, and clinging to the carpet like industrial strength Velcro.

I used the heater to blow hot air at it, and it hid in an Amazon box. When I picked up the Amazon box, it went into the kitchen. I guided it out of the kitchen and it made a break for my bedroom – within the clutter of which a small feline could hide undetected for decades – whereupon the cat tripped on a rubber duck and hit the stairs face first.

At this point I could probably have picked up the stunned pet without any problem, save for the minor fact that I was trying not to laugh to much to do anything much. There then followed a short period of the cat attempting to pretend nothing had happened, whilst pointing out that it had a hurt paw now, and would quite like sympathy.

We left it. Score one to the cat.

Obviously, a little while after we left it alone it left of it’s own accord. It is, after all, a cat.

Once more with spellcheck

Categories
Computer Games Imported From Epistula

Doomed

I now have Doom3

BBL.

Categories
aqWiki Imported From Epistula

AqWiki release – beta testers wanted

I’ve released the very first version of AqWiki (Version Prerelease Alpha Milestone Zero Beta, not to underline the whole “Not final” thing too heavily. Or anything).

I’m looking for people to download it and run though the install instructions and report any problems to the bug tracker. It requires Linux, PHP, MySQL & Apache, and testers will earn my eternal gratitude and stuff.

Categories
Imported From Epistula Metablog web development

Subscribing to LJ RSS friends only feeds

Every LiveJournal publishes an RSS feed and an Atom feed, except those who are already syndicated accounts. The problem is that the main benefit of LJ beyond something like blogspot is the ability to block off some posts to everyone but your ‘friends’.

Much as I distrust the terminology, this is occasionally useful. So, how do you subscribe to a feed and see the ‘friends’ only posts? Like this:

http://username|password@​www.livejournal.com/​users/​exampleusername/​data/​rss?auth=httpd

Magic.

Don’t, whatever you do, do this in something public like Bloglines, or you’ll be storing stuff other people want private in a database over which you have no control and they have no idea.

+(Incidentally, If you add a feed with a username or username & password to bloglines, it’s set as “Private” so nobody else can see it. It’s still in their database, though, so I suppose it depends on how much you trust Ask Jeeves not to be Evil).+

Observations that the first this is equally true to LJ are normally completely ignored.

edited to replace soft-hypens in the long URL with zero width spaces because Mozilla doesn’t support shy and it breaks the layout. I hate the bazaar model when it means that nobody else cares enough to fix a bug. The relevant bug had it’s fifth birthday recently

Categories
Imported From Epistula Politics

Trust the computer

From Preparing for emergencies

Page 14:

“To prepare for an emergency, you should take time to find out: […]

  • The emergency procedures for your children at school
  • The emergency procedures at your workplace”

Page 16:

“If you hear, see, or come across anything that may be linked with terrorist activity, please tell the police.
[…]
Have you seen anyone pay an unusual amount of attention to security measures at any location?”

So, report anyone you see reading PfE to the police. If they have nothing to hide, they have nothing to fear.

(No, don’t report me, I got this from ForeverDirt)

Stay alert, troubleshooters.