All posts by ajohnson

Search Engine Safe Urls

Search Engine Safe Urls seem to be a talked about topic these days… mod_rewrite being the de-facto for Apache users… there are a couple out there for IIS:

urlrepl — this is my favorite, mostly because it’s free. You can configure it either from a web browser or an ini file. Downsides: no regular expressions, configuration applies to all virtual servers defined in IIS.

Spider Safe Url — this one is nice.. but in the little testing that I did with it, it killed pages that didn’t have url variables… so while this would work:

/products/detail.cfm/id/23/category/83/

this will not:

/products/detail.cfm

which means that if you have single pages that don’t need url vars, you can’t use it.. Pete, am I wrong? Open source. Free.

IIS Rewrite — looks like the same thing as urlrepl mentioned above, ‘xcept you have to pay for this one… [on second look, this one is really full featured, moreso than urlrepl]. It supports regular expressions, check out the docs. $99 per server.

ISAPI_Rewrite — This one is really nice as well.. $63 per server, $453 per organization.

ColdFusion CFC’s

Working with ColdFusion CFC’s today, ran into a couple problems and I’m wondering if I’m alone or just inexperienced (or both):

a) when invoking a CFC as a webservice, do you have to have a CFIDE virtual directory in IIS in order for the CFC to function? (ie: I’m using multiple virtual hosts in IIS, if I don’t have a CFIDE virtual directory defined in IIS, calls to my webservice located in folder of the virtual host aren’t picked up)

b) can you use custom tags via cfmodule in a CFC? I’m getting an error (specifically “coldfusion.tagext.lang.IncludeTag$NoSuchIncludeTemplateException : Could not find the included template..” ) when using CFMODULE to call a custom tag. I’m absolutely positive that the custom tag path is correct… exact same page in the same directory (just not a CFC) uses it fine… Seems almost like CFC’s lose track of where they live. I saw a thread on forums, but no answer other than check your mapping… which I’ve done.

Gödel, Escher, Bach: An Eternal Golden Braid

I got a good chunk of reading yesterday because I went on the shortest ride of my life. It was about 60 degrees yesterday in Boston, perfect riding weather. I drove to Blue Hills, my favorite place to ride, had Blink on the CD player, and was all strapped in… bunny-hopped onto the trail-head and got a pinch flat when my back tire hit the curb. I didn’t have any extra tubes because I gave my last one to a guy who had a flat on my last ride at Blue Hills. Then I stepped in poo walking my bike back to the car. Sheesh…

So anyways.. I’m currently reading “Gödel, Escher, Bach: An Eternal Golden Braid” by Douglas Hofstadter. This book is over 700 pages and is described by one guy on the back of the book as “…an entire humanistic education..” so a) I’m not even going to try and give a description of what it’s about and b) I’m going to blog it as I go, rather than blog it after completing the book.

On Kurt Gödel’s discovery of the Epimenides paradox: “Epimenides was a Cretan who made one immortal statement: ‘All Cretans are liars.’ A sharper version of the statement is simply ‘I am lying’; or, ‘This statement is false’. It is that last version which I usually mean when I speak of the Epimenides paradox. It is a statement which rudely violates the usually assumed dichotomy of statements into true and false, because if you tentatively think it is true, then it immediately backfires on you and makes you think it is false. But once you’ve decided it is false, a similar backfiring returns you to the idea that it must be true…. The Epimenides paradox is a one-step Strange Loop, like Escher’s Print Gallery. But how does it have to do with mathematics? That is what Gödel discovered. His idea was to use mathematical reasoning in exploring mathematical reasoning itself. This notion of making mathematics ‘introspective‘ proved to be enormously powerful, and perhaps its richest implication was the one Gödel found: Gödel’s Incompleteness Theorem.” (pg 17)
— It’s interesting to see that introspection (in software development) probably has its roots in this mathematical introspection that Gödel introduced above…. what was the first language that used introspection?

On intelligent behavior: “No one knows where the borderline between non-intelligent behavior and intelligent behavior lies; in fact, to suggest that a sharp borderline exists is probably silly. But essential abilities for intelligence are certainly:
— to respond to situations very flexibly;
— to take advantage of fortuitous circumstances;
— to make sense out of ambiguous or contradictory messages;
— to recognize the relative importance of different elements of a situation;
— to find similarities between situations despite differences which may separate them;
— to draw distinctions between situations despite similarities which may link them;
— to synthesize new concepts by taking old concepts and putting them together in new ways;
— to come up with ideas which are novel.” (pg 26)
— Makes these ‘intelligent agents‘ not seem so smart doesn’t it? Next time you see a claim that this or that software is intelligent, apply the above tests to see if it passes. I’d love to know about software that does…

On being inside and outside a ‘System’: “… Now let me be very explicit about what I meant by saying this shows a difference between people and machines. I meant that it is possible to program a machine to do a routine task in such a way that the machine will never notice even the most obvious facts about what it is doing; but it is inherent in human consciousness to notice some facts about the things one is doing. But you knew this all along. If you punch ‘1’ into an adding machine, and then add 1 to it, and then add 1 again, and again, and again, and continue doing so for hours and hours, the machine will never learn to anticipate you, and do it itself, although any person would pick up the repetitive behavior very quickly. Or, to take a silly example, a car will never pick up the idea, no matter how much or how well it is driven, that is supposed to avoid other cars and obstacles on the road; and it will never learn even the most frequently traveled routes of its owner…. The difference, then, is that it is possible for a machine to act un-observably; it is impossible for a human to act unobservant.” (pg 36-37)
— The newest versions of Windows *are* in fact observant… the “Programs” menu ‘learns’ what programs you use most frequently and shows only those programs. How else could software applications become ‘observant’? Might your Palm handheld ‘notice’ that it gets synced every night before you go to bed and ‘suggest’ to you that it schedule itself to sync at 9pm? Wouldn’t it be nice if your cell phone saw that you called take-out twice in the last week and suggest that you add that phone number to your list of contacts?

On jumping out of systems: “It is an inherent property of intelligence that it can jump out of the task which it is performing, and survey what it has done; it is always looking for, and often finding, patterns.” (pg 37)
— Substitute the word ‘intelligence’ for ‘software developer’ or ‘business manager’. Revealing isn’t it?