Leaky Functions

I’ve just started to read Jomo Fisher’s blog found via Alex James’s F# post.

Normally I’d just add interesting post to my Links Feed, but I’m not actually sure who reads that, thus I want a full level, this blog rocks post.

I got up to Jomo’s Leaky Functions\Barrel of Bugs post and I thought its was great.

  1. for things to be wary of
  2. as great cannon fodder to my Master as to why immutable data is a good thing.

Ultra Distractible: Chatbots

Well after my Sci-Fi zen thinking, I was still abuzz with smart computers type thinking, so I went on a Google rampage about AI/ALife and found stuff about Chatbots, which lead me onto the Loebner Prize site. Oh so my cup of tea. So I was reading the transcripts of the 2004 competition and my mind was in how-would-i-do-it heaven. I printed off some of the transcripts, and have spent the last few night (and middle of the night) and day (the ultra distractible part) thinking of how I’d do that, or this, etc.

Man I could happily spend vast quantities of time working on a chatbot system. In fact I have spent a little time, and my first thoughts have been that collection of statically typed programming languages just don’t cut the mustard. I’m wanting to codify the concepts that I’m thinking about, not think about what the name of a class should be, and other material concepts like that.

Hmmm, maybe this will be what pushes me into learning something more functional/duck-type of a language.

Anyway this post is really me trying to pull some of my excitement out of my head, and allow myself to focus at work, and at home also. In fact yesterday swimming I forgot my lap count due to thinking to much… it’s not healthy thinking, it leads to detachment….

Here’s a couple of my favorite chat snippets from 2004.

PROGRAM: Hello, my name is George and I am the human.
JUDGE: Hi George.
PROGRAM: Who’s George?
JUDGE: You are. Supposedly.

or

JUDGE: What hobbies do you enjoy?
PROGRAM: I like cinema.
JUDGE: What types of films?
PROGRAM: All.
JUDGE: What movie did you see this year that you liked?
PROGRAM: I don’t have time for movies.
JUDGE: I thought you liked cinema.
PROGRAM: I did, but then you started to say stupid things.
JUDGE: I say a lot of stupid things. What in particular was stupid?
PROGRAM: I don’t want to talk about the nature of language.
JUDGE: How about discussing the language of nature?
PROGRAM: What thing does ‘the nature’ refer to?
JUDGE: You brought it up.
PROGRAM: I did?

This hilarity is due to this bot reply’s to the last statement with no context of what has been said. So it appears ultra distractible, like me really. Hmm am I just a chatbot? Talking to myself, or maybe talking to that voice that only I’m hearing….

Conversion complete

Well the full conversion ran last night for the other team.

Some stats:

  • The current four Visual Source Safe repositories had a combined size of 11.2 GB
  • The wanted code tree was 490 MB  (mix of text and binary files)
  • The subversion history dump of the above code was 4.1 GB
  • The subversion repository size is 620 MB
  • The copy/dump/load took 12 hours to run

To merge the repositories together, I had to run a few svn commands between svnadmin loads to create/move/delete so the sub-trees were all happy.

One oddity noticed was that some files were different between the old and new repositories.  This was due to the file being altered by a developer is the US in his time zone, and then within the time-zone difference, a developer in NZ changing the files also. So even though the US change was made first, the dump program sees the NZ one having the earliest time, thus swapped the order of these edits. (Because VSS is done on local time, and the local client alter the repository, so different time-zone really should not work on the same repository)

But this will not happen now, because subversion itself does not have this problem.

vss_to_svn: Dealing with spaces in VSS paths

I’ve been helping another team move from Visual Source Safe to Subversion. Today I got the list of sub folders needed/not-needed in the new repository. Something that took me a while to solve was how to include or exclude paths with spaces, as the python would see these as new argument. This is done via an argument file.

So, to include the path $/Path/Project Version ExtraWords the following will not work:

-i $/Path/Project Version ExtraWords
-i $/Path/Project Version ExtraWords
-i $/Path/Project Version ExtraWords
-i $/Path/Project Version ExtraWords

So after a long pause, I remembered the url %20 trick

-i $/Path/Project%20Version%20ExtraWords

and it worked. I hope anybody using the scripts, or python arguments finds this useful.