00:04:23 <eaon> *** eaon has quit ("bye")
00:07:14 <dmiles_akf> *** dmiles_akf has quit (Read error: 104 (Connection reset by peer))
00:30:41 <bjoern_> *** bjoern_ has quit (Read error: 110 (Connection timed out))
00:33:09 <xover> How in the deepest circle of Hell is it possible that people still use MS Word for anything?
00:34:17 <xover> The blasted thing can't keep Styles straight, changes what style is applied to a piece of text randomly, and can suddenly and without provocation decide that none of the lists in a doc is actually a list or that *all* tekst in it is.
00:41:53 <deltab> I guess they don't know any better
00:51:08 <jessica> * jessica is away: sleepytime for sick jessies
01:11:38 <Talliesin> sick :(
01:12:51 <crschmid1> Jess says to explain that she got in a car accident on Saturday (spinnig four lanes across a highway), and was confined to bed to relax muscles for a couple days. She's okay, but caught sick (possibly as part of shock) and feels like crap.
01:13:01 <Talliesin> :(
01:13:34 <crschmid1> *** crschmid1 is now known as crschmidt
01:13:51 <Talliesin> Seen the thing about the IDF not giving good security clearance to recruits that play D&D
01:14:01 <Talliesin> Role-player is the new gay.
01:14:05 <julie> *** julie (~nobody@dsl.allan.mv.com) has joined #swhack
01:17:25 <Talliesin> Army frowns on Dungeons and Dragons (IDF says players are detached from reality and automatically given a low security clearance): http://www.ynetnews.com/articles/0,7340,L-3052074,00.html
01:17:25 <swhacker> posted 726
01:17:37 <Talliesin> 726: http://archive.gamespy.com/comics/dorktower/images/comics/dorktower431.gif
01:36:49 <cskaterun> *** cskaterun has quit (Remote closed the connection)
01:54:47 <Talliesin> 726: http://archive.gamespy.com/comics/nodwick/ffn/ffn.htm
02:51:18 <cskaterun> *** cskaterun (~cskaterun@66.27.73.30) has joined #swhack
03:20:11 <valmont> *** valmont has quit (Read error: 113 (No route to host))
03:38:07 <themaximus_> *** themaximus_ (max@themaximus.user) has joined #swhack
03:38:22 <themaximus> *** themaximus has quit (Read error: 104 (Connection reset by peer))
03:44:01 <schepers> *** schepers has left #swhack
03:46:11 <schepers> *** schepers (~schepers@65.187.210.222) has joined #swhack
04:25:43 <crschmidt> night all
05:55:12 <drfu> *** drfu has left #swhack
06:12:35 <jeanniecool> *** jeanniecool (HydraIRC@64-40-59-5.nocharge.com) has joined #swhack
06:16:03 <deltab> ωωω.őřωέłł.řů
06:17:05 <jeanniecool> *** jeanniecool is now known as _jeannie_bighead
06:17:52 <deltab> woo, I found an easter egg code for jeanniecool
06:18:14 <_jeannie_bighead> lol
06:18:18 <_jeannie_bighead> <-- is sick
06:18:35 <_jeannie_bighead> And off to bed. G'night, Del.
06:18:37 <deltab> aww
06:18:50 <deltab> get well soon
06:19:06 <_jeannie_bighead> Thank you ;-)
06:19:40 <deltab> * deltab whistles the "We're Talkign Softball" song from The Simpsons
06:32:14 <bjoern_> *** bjoern_ (~bjoern@dsl-084-056-227-127.arcor-ip.net) has joined #swhack
06:35:04 <valmont> *** valmont (~chrisholl@lsanca1-ar8-4-43-220-080.lsanca1.elnk.dsl.genuity.net) has joined #swhack
06:42:54 <crschmid1> *** crschmid1 (~crschmidt@dsl.allan.mv.com) has joined #swhack
06:48:02 <crschmidt> *** crschmidt has quit (Read error: 110 (Connection timed out))
06:48:13 <julie> *** julie has quit (Read error: 110 (Connection timed out))
07:36:01 <eaon> *** eaon (~mememe@chello213047096087.6.12.vie.surfer.at) has joined #swhack
07:36:38 <eaon> *** eaon has quit (Remote closed the connection)
07:37:39 <eaon> *** eaon (~mememe@chello213047096087.6.12.vie.surfer.at) has joined #swhack
08:11:02 <libby> *** libby (~libby@82-32-5-17.cable.ubr01.azte.blueyonder.co.uk) has joined #swhack
08:19:34 <mattis> *** mattis has quit (Read error: 110 (Connection timed out))
08:26:48 <Moira> *** Moira (~moira@ACD84426.ipt.aol.com) has joined #swhack
08:31:55 <mattis> *** mattis (~mattis@host114-178.pool8250.interbusiness.it) has joined #swhack
08:31:56 <Monty> Thank goodness, mattis is back!
08:31:58 <phenny> Be quiet, Monty.
08:31:59 <Monty> bah, phone crashed :(
08:40:20 <Talliesin_> *** Talliesin_ (~Jon@83.70.234.31) has joined #swhack
08:44:39 <MoiraA> *** MoiraA has quit (Read error: 110 (Connection timed out))
08:57:39 <Talliesin> *** Talliesin has quit (Read error: 110 (Connection timed out))
09:06:01 <bjoern_> @Wunder Mannheim
09:06:04 <supybot> bjoern_: The current temperature in Mannheim, Germany is 55 F (9:50 AM CET on March 16, 2005). Conditions: Clear. Humidity: 63%. Dew Point: 42 F. Pressure: 30.33 in 1027 hPa.
09:06:20 <bjoern_> @Wunder Hamburg, Germany
09:06:31 <supybot> bjoern_: The current temperature in Hamburg, Germany is 53 F (9:50 AM CET on March 16, 2005). Conditions: Mostly Cloudy. Humidity: 72%. Dew Point: 44 F. Pressure: 30.04 in 1017 hPa. Visibility: 5.6 miles 9.0 kilometers.
09:06:41 <bjoern_> @Wunder Westerland, Germany
09:06:42 <supybot> bjoern_: The current temperature in Westerland, Germany is 42 F (8:50 AM CET on March 16, 2005). Conditions: Mist. Humidity: 87%. Dew Point: 39 F. Windchill: 33 F. Pressure: 29.89 in 1012 hPa. Visibility: 2.2 miles 3.5 kilometers.
09:23:24 <kandinski> this Easter I am going to read me some Dostoievsky: should I get The Idiot or Crime and Punishment?
09:30:32 <Talliesin_> *** Talliesin_ is now known as Talliesin
09:38:56 <libby> *** libby has quit (Read error: 60 (Operation timed out))
09:41:40 <dmiles_afk> *** dmiles_afk has quit (Read error: 104 (Connection reset by peer))
09:42:21 <dmiles_afk> *** dmiles_afk (dmiles@bdsl.66.14.82.104.gte.net) has joined #swhack
09:50:25 <JibberJim> *** JibberJim has quit ("Bye!")
10:00:59 <libby> *** libby (~libby@dhcp-05.ilrt.bris.ac.uk) has joined #swhack
10:06:09 <sbp> 419 spammers are getting surreal: [[[
10:06:11 <sbp> I am Mrs. Suha Arafat, the wife ofYasser Arafat, the Palestinian leader who died recently in Paris.
10:06:12 <sbp> ]]]
10:09:02 <libby> I got one from the estate of dennis thatcher recently
10:09:12 <crschmidt> *** crschmidt (~crschmidt@dsl.allan.mv.com) has joined #swhack
10:14:22 <crschmid1> *** crschmid1 has quit (Read error: 110 (Connection timed out))
10:15:54 <sbp> heh, heh
10:20:58 <sbp> chuckle:
10:21:04 <sbp> "If your project has to be a desktop app (question: does it?), you probably need a Windows version. At least till Google crawls down the pipe onto the desktop, and makes the OS underneath irrelevant." - http://paulgraham.com/summerfounder.html
10:24:06 <bjoern_> http://phatt.phonetik.uni-muenchen.de/phatt/index.jsp -- Ph@ttSessionz -- Phonetic-at-teenage-talk Sessions (German, though...)
10:27:04 <sbp> * sbp tries to translate the first paragraph
10:30:26 <sbp> can you see how I did, please, bjoern_?
10:30:29 <sbp> [[[
10:30:29 <sbp> The Institute for Phonetics at the University of Munich fart in gametes
10:30:29 <sbp> buns that jibble, speak of names with young end lichen church. These fat
10:30:32 <sbp> sessions dine with ground lagging fornications and the Twickenham speech
10:30:32 <sbp> verbal blender technologies: computer, the speech horking, for lesbians
10:30:35 <sbp> gyrating for blinds, navigation systems with speaking babies, MP3 players,
10:30:35 <sbp> the wharf's a-torching.
10:30:35 <sbp> ]]]
10:31:33 <bjoern_> You've http://www.pornolize.com 'd it...
10:32:00 <sbp> awesome
10:35:52 <JibberJim> *** JibberJim (~none@mailgw2.actix.com) has joined #swhack
10:36:18 <bjoern_> "BitRabbit is a growing new mobile game company and blah-brag-blah-boast-blah...." -- http://www.scene.org/jobs.php?id=55
10:41:58 <bjoern_> @wunder Mannheim
10:42:00 <supybot> bjoern_: The current temperature in Mannheim, Germany is 62 F (11:20 AM CET on March 16, 2005). Conditions: Clear. Humidity: 48%. Dew Point: 42 F. Pressure: 30.33 in 1027 hPa.
10:42:03 <sbp> heh, sic
10:42:08 <bjoern_> @math calc 62 F to C
10:42:09 <supybot> bjoern_: Error: invalid syntax (line 1)
10:42:15 <bjoern_> @math convert 62 F to C
10:42:16 <supybot> bjoern_: 16.6666666667
10:42:41 <JibberJim> @wunder LHR
10:42:46 <supybot> JibberJim: The current temperature in Heathrow, United Kingdom is 60 F (10:20 AM GMT on March 16, 2005). Conditions: Mostly Cloudy. Humidity: 63%. Dew Point: 48 F. Pressure: 30.04 in 1017 hPa. Visibility: 7.0 miles 10.0 kilometers.
10:44:13 <bjoern_> @help translate
10:44:13 <supybot> bjoern_: (translate <from-language> [to] <to-language> <text>) -- Returns <text> translated from <from-language> into <to-language>. Beware that translating to or from languages that use multi-byte characters may result in some very odd results.
10:44:16 <JibberJim> @wunder exe
10:44:19 <supybot> JibberJim: Error: No such location could be found.
10:44:26 <bjoern_> @translate german to english spring
10:44:28 <supybot> bjoern_: Error: Couldn't talk to server: [Errno socket error] (-2, 'Name or service not known')
10:44:36 <bjoern_> @supybot--
10:44:37 <bjoern_> @karma
10:44:39 <supybot> bjoern_: Highest karma: "sbp" (16), "crschmidt" (5), and "monty" (3). Lowest karma: "supybot" (-21), "sh1mmer" (-3), and "swhacker" (-2). You (bjoern_) are ranked 17 out of 51.
10:44:40 <Monty> what do i view webcams on a list
10:44:55 <bjoern_> Monty, tell us more...
10:44:55 <Monty> bjoern_: Okay, I'll tell us that next time I see them...
10:45:03 <bjoern_> Monty, oh well...
10:45:04 <Monty> L7: Downtime was due to C
10:48:30 <JibberJim> - http://online.wsj.com/article_email/0,,SB111075227698078072-IFjgYNglah4oZymZ4GHcaiGm4,00.html but no link :-(
10:48:42 <JibberJim> give me link love you WSJ people!
10:49:42 <bjoern_> Let's start a JimLink campaign!
10:50:04 <JibberJim> <a jim:href="..."> ??
10:50:28 <bjoern_> Well, LinkJim is odd...
10:50:46 <JibberJim> it's a crazy amalgam of me and xover!
11:03:36 <sbp> Ajax. that's hilarious
11:03:57 <sbp> at least Philip Lindsay went unlinked too
11:04:02 <sbp> you're not being left out or anything
11:14:21 <Arnia> *** Arnia (~jgeldart@roam-88-211.dur.ac.uk) has joined #swhack
12:02:12 <Arnia> *** Arnia has left #swhack
12:13:17 <crschmid1> *** crschmid1 (~crschmidt@dsl.allan.mv.com) has joined #swhack
12:14:56 <crschmidt> *** crschmidt has quit (Nick collision from services.)
12:15:01 <crschmid1> *** crschmid1 is now known as crschmidt
12:25:00 <libby> *** libby has quit (Read error: 110 (Connection timed out))
12:31:16 <DrBacchus> *** DrBacchus (~rbowen@67.96.190.10) has joined #swhack
12:37:00 <kpreid> *** kpreid has quit (Remote closed the connection)
12:42:02 <kpreid> *** kpreid (~kpreid@69-169-188-143.bflony.adelphia.net) has joined #swhack
13:08:21 <libby> *** libby (~libby@82-32-5-17.cable.ubr01.azte.blueyonder.co.uk) has joined #swhack
13:19:57 <JibberJim> *** JibberJim has quit (Read error: 60 (Operation timed out))
13:37:13 <JibberJim> *** JibberJim (~none@mailgw2.actix.com) has joined #swhack
14:04:13 <libby> *** libby has quit (Read error: 60 (Operation timed out))
14:13:31 <JibberJim> *** JibberJim has quit ("dIRC IRC Client - www.dragonmount.net/dirc/")
14:17:47 <JibberJim> *** JibberJim (~none@mailgw2.actix.com) has joined #swhack
14:23:43 <JibberJim> hmm, more people seem to be spelling gibbering with a j, it's getting annoying.
14:31:47 <themaximus_> *** themaximus_ has quit (Read error: 104 (Connection reset by peer))
14:32:07 <bjoern_> .gc jibberish
14:32:13 <phenny> jibberish: 52,100
14:33:57 <themaximus_> *** themaximus_ (max@themaximus.user) has joined #swhack
14:48:35 <libby> *** libby (~libby@82-32-5-17.cable.ubr01.azte.blueyonder.co.uk) has joined #swhack
14:49:43 <arcon> *** arcon (~arcon@dsl027-161-139.atl1.dsl.speakeasy.net) has joined #swhack
14:53:24 <sbp> .gc "squeak and gibber in the roman streets"
14:53:27 <sbp> .gc "squeak and jibber in the roman streets"
14:53:29 <phenny> "squeak and gibber in the roman streets": 624
14:53:34 <phenny> "squeak and jibber in the roman streets": googlewhack!! (only 1 result found!)
14:54:27 <crschmidt> note to self: never use collegeresearch.us
14:54:45 <sbp> whyn't?
14:55:05 <crschmidt> because they spelled gibber wrong!
14:55:10 <sbp> heh, heh
14:55:28 <sbp> it shows original creative thinking!
14:55:54 <crschmidt> it's a quote!
14:56:04 <sbp> very original creative...
14:56:43 <bjoern_> Sounds like there is a patent in it...
14:56:52 <sbp> I think Jim's already got a claim to it
14:57:04 <bjoern_> Does that matter?
14:57:10 <sbp> not as such
14:58:21 <sbp> come, my friend; let us draw peculiar frogs with titties and thereby make merry
14:59:28 <deltab> if it weren't for the g/j distinction, we wouldn't know whether young ladies were giggling or jiggling
14:59:40 <JibberJim> okay sbp... let's do it...
15:00:16 <crschmidt> deltab: does it matter much? Doesn't one often cause the other?
15:01:37 <julie> *** julie (~nobody@dsl.allan.mv.com) has joined #swhack
15:02:13 <deltab> sed -n s/^gi/ji/p /usr/share/dict/words
15:04:05 <deltab> I like 'jiveaway'
15:04:39 <sbp> jizzick
15:05:05 <sbp> jirouettism
15:05:06 <DrBacchus> *** DrBacchus has quit ("Meeting")
15:05:17 <sbp> jirlishness
15:06:05 <sbp> jillhooter
15:06:17 <sbp> jigmanically
15:06:52 <deltab> you're geust making those up, aren't you?
15:07:16 <sbp> no, but they are almost that good indeed
15:07:23 <arcon> *** arcon has quit ("Leaving")
15:09:49 <bjoern_> *** bjoern_ has quit (Read error: 104 (Connection reset by peer))
15:13:36 <arcon> *** arcon (~arcon@dsl027-161-139.atl1.dsl.speakeasy.net) has joined #swhack
15:15:58 <arcon> *** arcon has quit (Client Quit)
15:23:40 <jetscreamer> *** jetscreamer has quit ("i beat aol!")
15:37:00 <jetx> *** jetx (jetx@adsl-64-219-216-41.dsl.hstntx.swbell.net) has joined #swhack
15:39:02 <jetx> *** jetx has quit (Client Quit)
15:39:33 <jetx> *** jetx (jetx@adsl-64-219-216-41.dsl.hstntx.swbell.net) has joined #swhack
15:54:43 <jetx> *** jetx has quit (Client Quit)
16:39:40 <crschmidt> for those who might be interested, there's a FOAF meeting in 20 minutes in #swig
16:48:10 <eikeon_> *** eikeon_ (~eikeon@gandalf.mindlab.umd.edu) has joined #swhack
16:48:52 <sbp> <Monty> interesting visualization - in #swig
16:48:54 <sbp> - #esp
16:48:55 <Monty> L7: Downtime was written in Westerland, Germany
16:54:18 <bjoern_> *** bjoern_ (~bjoern@dsl-084-056-238-055.arcor-ip.net) has joined #swhack
17:16:48 <crschmidt1> *** crschmidt1 (~crschmidt@216-177-24-154.inaddr.G4.NET) has joined #swhack
17:17:00 <crschmidt1> Monty: remind me in 6 hours to plug a new ethernet cable in. I don't care, just do it, damnit.
17:17:01 <Monty> crschmidt1: Okay, I'll remind you about that on Wed Mar 16 23:17:00 GMT 2005
17:20:12 <crschmid1> *** crschmid1 (~crschmidt@dsl.allan.mv.com) has joined #swhack
17:20:41 <crschmidt1> bleh
17:25:10 <DrBacchus> *** DrBacchus (~rbowen@67.96.190.10) has joined #swhack
17:25:10 <crschmidt> *** crschmidt has quit (Connection timed out)
17:25:14 <julie> *** julie has quit (Read error: 110 (Connection timed out))
17:37:27 <crschmidt1> *** crschmidt1 is now known as crschmidt
17:47:22 <bear> *** bear has quit (Read error: 60 (Operation timed out))
17:48:03 <bear> *** bear (~bear@pcp08490351pcs.levtwn01.pa.comcast.net) has joined #swhack
18:02:08 <DrBacchus> *** DrBacchus has quit (Client Quit)
18:08:12 <valmont> *** valmont has quit ()
18:23:48 <bjoern_> @Wunder Mannheim
18:23:50 <supybot> bjoern_: The current temperature in Mannheim, Germany is 64 F (6:50 PM CET on March 16, 2005). Conditions: Clear. Humidity: 42%. Dew Point: 41 F. Pressure: 30.27 in 1025 hPa.
18:24:01 <bjoern_> @math convert 64 F to C
18:24:02 <supybot> bjoern_: 17.7777777778
18:25:05 <bjoern_> phenny, tell sbp wouldn't it be nice if #swhack's supybot.plugins.Weather.temperatureUnit would be configured differently?
18:25:08 <phenny> bjoern_: I'll pass that on for you when sbp is around.
18:26:00 <fap3> phenny: tell supybot to change his supybot.plugins.Weather.temperatureUnit setting
18:26:03 <phenny> fap3: I'll pass that on for you when supybot is around.
18:26:10 <sbp> @set supybot.plugins.Weather.temperatureUnit C
18:26:10 <supybot> *** supybot has changed the topic to: supybot.plugins.Weather.temperatureUnit C
18:26:16 <sbp> hmm
18:27:20 <bear> *** bear has quit (Read error: 60 (Operation timed out))
18:29:01 <crschmidt> @set Weather.temperatureUnit C
18:29:02 <supybot> *** supybot has changed the topic to: Weather.temperatureUnit C
18:29:17 <bear> *** bear (~bear@pcp08490351pcs.levtwn01.pa.comcast.net) has joined #swhack
18:29:37 <edzz> *** edzz is now known as edsu
18:31:37 <bjoern_> @config help supybot.plugins.Weather.temperatureUnit
18:31:38 <supybot> bjoern_: Sets the default temperature unit to use when reporting the weather. (Current value: Fahrenheit)
18:31:40 <phenny> supybot: 18:26Z <fap3> tell supybot to change his supybot.plugins.Weather.temperatureUnit setting
18:31:41 <supybot> phenny: Error: "18:26Z" is not a valid command.
18:31:54 <sbp> @config set supybot.plugins.Weather.temperatureUnit C
18:31:54 <supybot> sbp: Error: 'supybot.set' is not a valid configuration variable.
18:32:02 <sbp> @config .plugins.Weather.temperatureUnit C
18:32:03 <supybot> sbp: Error: 'supybot..plugins.Weather.temperatureUnit' is not a valid configuration variable.
18:32:07 <sbp> @config plugins.Weather.temperatureUnit C
18:32:07 <supybot> sbp: Error: You don't have the 'owner' capability. If you think that you should have this capability, be sure that you are identified before trying again. The 'whoami' command can tell you if you're identified.
18:32:17 <sbp> @whoami
18:32:17 <supybot> sbp: sbp
18:32:36 <sbp> @config #swhack plugins.Weather.temperatureUnit C
18:32:37 <supybot> sbp: Error: 'supybot.#swhack' is not a valid configuration variable.
18:32:45 <sbp> @config plugins.Weather.temperatureUnit #swhack C
18:32:46 <supybot> sbp: Error: You don't have the 'owner' capability. If you think that you should have this capability, be sure that you are identified before trying again. The 'whoami' command can tell you if you're identified.
18:32:51 <sbp> @supybot--
18:32:57 <sbp> @karma
18:32:57 <supybot> sbp: Highest karma: "sbp" (16), "crschmidt" (5), and "monty" (3). Lowest karma: "supybot" (-22), "sh1mmer" (-3), and "swhacker" (-2). You (sbp) are ranked 1 out of 51.
18:32:59 <Monty> old-style spelling gibbering with feeds.
18:33:30 <jsled> "old-school" is much more cool, monty.
18:33:32 <Monty> You want to suck emphasising spheres!
18:34:00 <jsled> I do, monty?
18:34:02 <Monty> I love it when you delight mag.
18:45:23 <sbp> slogger success story:
18:45:28 <sbp> [18:44] <sbp> <datetime>2005-01-06 05-01-00-930</datetime>
18:45:32 <sbp> [18:44] <sbp> <url>http://imgseek.sourceforge.net/</url>
18:45:43 <sbp> took ages to refind that site the first time around
18:45:53 <sbp> second time around, I just have to grep my slogger logs
18:45:59 <jsled> for what/
18:46:06 <jsled> ahem. s#/#?#
18:46:24 <sbp> $ grep -i 'gnome.*image' *
18:46:42 <sbp> since I'd used loads of different obvious keywords in trying to find it, the slogger logs were seeded with them
18:46:52 <sbp> annotation-by-finding-method
18:49:15 <crschmidt> *** crschmidt has quit ("leaving")
18:49:32 <crschmid1> *** crschmid1 is now known as crschmidt
18:58:18 <jsled> damn lending salespeople
18:58:51 <jsled> "Oh, you know ... rates are going up. Don't you feel like a fuck for not committing to a loan last week?"
18:59:03 <jsled> shaddup.
19:17:36 <valmont> *** valmont (~chrisholl@germany.pspdev.pas.earthlink.net) has joined #swhack
19:42:03 <DrBacchus> *** DrBacchus (~rbowen@67.96.190.10) has joined #swhack
19:43:57 <md-afk> *** md-afk (~mdupont@85.212.23.28) has joined #swhack
19:44:01 <jetx> *** jetx (jetx@adsl-64-219-216-41.dsl.hstntx.swbell.net) has joined #swhack
19:44:06 <jcowan> *** jcowan (~jcowan@a7cebc03.cst.lightpath.net) has joined #swhack
19:44:39 <jcowan> Whonkity!
19:45:27 <crschmidt> Whackity!
19:46:09 <sbp> Swhackity!
19:47:00 <jcowan> Ah, good. I have a new rant to emit, about a novel kind of database:
19:47:15 <jcowan> more flexible than a relational database, less anarchic than a pile of RDF triples.
19:47:54 <crschmidt> .w anarchic
19:47:57 <JimJibber> *** JimJibber (~none@82-43-210-159.cable.ubr10.newm.blueyonder.co.uk) has joined #swhack
19:48:01 <DrBacchus> anarchic?
19:48:04 <crschmidt> oh, anarchy-like.
19:48:06 <sbp> that which is in a state of anarchy
19:48:07 <sbp> duh
19:48:10 <phenny> anarchic 1. without law or control; "the system is economically inefficient and politically anarchic"
19:48:11 <fap3> i am anarchy
19:48:19 <crschmidt> HI JIM
19:48:23 <sbp> quiet in the audience!
19:48:27 <crschmidt> * crschmidt shushes.
19:48:28 <DrBacchus> I'm wondering how a database can be said to be anarchic. Just seemed ... odd.
19:48:39 <sbp> not database; triples
19:49:04 <fap3> hello kity
19:49:23 <sbp> jcowan?
19:49:27 <jcowan> yes.
19:49:39 <crschmidt> * crschmidt is still listening.
19:49:40 <sbp> rant to emit?
19:49:42 <jcowan> Right.
19:49:49 <fap3> hello kitty
19:50:09 <jcowan> The idea is that we have some items with properties and possibly associated unstructured bits.
19:50:12 <fap3> money is for the poor
19:50:18 <jcowan> Terminology is still rubbery.
19:50:51 <jcowan> Every item has a globally unique property called its key.
19:51:31 <PhUrl> *** PhUrl has quit (Read error: 60 (Operation timed out))
19:52:18 <jcowan> Property values are either simple datatypes (string, number, date) or an ordered list of keys.
19:53:04 <jcowan> A property is also an item, with a type property (string, number, date, key-list) and a parent property (another property) unless it is the distinguished root property.
19:53:09 <jcowan> The key of the root property is well known.
19:53:36 <jcowan> Every item can have a name property: the key of the name property (and the parent and type properties) are also well known.
19:53:42 <crschmidt> jcowan: this sounds similar to your data-organization that we discussed at one point a long time ago.
19:53:57 <crschmidt> Some application, when you were trying to figure out what to write next.
19:54:15 <jcowan> Indeed. I have I think simplified and generalized it here.
19:54:45 <sbp> sounds pretty easy to mock-up
19:55:03 <jcowan> Indeed. A simple Berkeley database and some conventions about what to put in the value field will do the job.
19:55:23 <sbp> any planned uses?
19:55:27 <jsled> jcowan: is the "parent property" a parent/child/is-a relationship, or more akin to a has-a/table-name?
19:55:37 <jcowan> is-a.
19:56:02 <sbp> so type is better as datatype?
19:56:16 <jcowan> sbp: eh?
19:56:32 <sbp> is-a in RDF and Python and all sane things is a "type" arc
19:56:42 <jcowan> Oh, oops.
19:57:05 <jcowan> the parent property is the relationship between a property and its superproperty.
19:57:26 <crschmidt> Then more akin to a has-a, I think?
19:57:27 <sbp> ah
19:57:32 <sbp> rdfs:subPropertyOf
19:57:35 <jcowan> Yes.
19:58:08 <jcowan> Oh yes, properties can be boolean. Very important, that. A boolean property has no value as such: it's true if present and false if not present.
19:58:20 <sbp> awesome
19:58:32 <jcowan> sbp: a whole bunch of things I'm thinking about will be very nicely implementable over this data structure.
19:59:10 <jcowan> It's easy to import relational database tables and to export RDF triples.
19:59:51 <jcowan> If you ask "Does item x have property y (with value z)?" the answer is "yes" if item x has any ancestral property of y instead.
20:00:22 <sbp> so kinda like inheritance?
20:00:50 <jcowan> Indeed. I think this is what subPropertyOf implies also.
20:01:09 <sbp> not entirely sure what you mean by ancestral property though... presumably x here is a property itself then?
20:01:29 <sbp> for it to have a parent. or can all items have parents?
20:01:51 <jcowan> No, I mean if x has any property q, such that q is a superproperty of y (or super-superproperty, etc.)
20:01:58 <sbp> ah
20:02:16 <sbp> so the parent relationship is transitive
20:02:20 <jcowan> Sure.
20:02:46 <jcowan> So given that x has property isGoat, then it implicitly has properties isAnimal, isAlive, isPhysicalObject ....
20:03:11 <sbp> rather nice
20:03:29 <sbp> so the name property is a human readable label, and the key is more like a UUID?
20:03:36 <jcowan> Indeed.
20:03:52 <kpreid> Are the property names universal?
20:04:06 <kpreid> Or local to some schema-for-this-application?
20:04:21 <jcowan> What do you mean by "universal"?
20:04:49 <sbp> is isAnimal to mean the same thing in all databases?
20:04:51 <sbp> presumably no
20:04:59 <kpreid> Could you merge arbitrary documents without collision in property meanings?
20:05:06 <jcowan> Yes.
20:05:12 <jcowan> Because each property has a unique key.
20:05:24 <jcowan> The trick is rather to do intelligent merging so that my property isAnimal is mapped to yours.
20:05:53 <jcowan> And the even trickier trick is to decide when this is or is not the Right Thing.
20:06:25 <DrBacchus> *** DrBacchus has quit (Client Quit)
20:06:33 <jsled> jcowan: no.
20:06:35 <sbp> this sounds very much like an optimised subset of RDF to me, with a slightly different datamodel (especially the booleans thing)
20:06:59 <jcowan> sbp: everything is an optimized subset of RDF.
20:06:59 <jsled> how is it better than a triple table?
20:07:12 <sbp> (but everything sounds like RDF to me. o/~ where Freud sees a penis, sbp sees RDF o/~)
20:07:12 <DrBacchus> *** DrBacchus (~rbowen@67.96.190.10) has joined #swhack
20:07:18 <sbp> true
20:07:35 <sbp> *** sbp has changed the topic to: <jcowan> sbp: everything is an optimized subset of RDF
20:07:44 <jcowan> jsled: because it provides structure that allows for bootstrap self-understanding to some degree.
20:08:03 <jcowan> You *can* structure your RDF to make that possible, but an arbitrary pile of triples won't in general have any.
20:08:30 <jcowan> jsled: What did you mean by "jcowan: no", BTW?
20:09:05 <jsled> I don't think it's the right thing, but I think I'm missing something about what you're saying.
20:09:18 <jsled> but that may just be because it's not what I've been after.
20:09:30 <jsled> Which I was hoping you would say.
20:09:30 <jcowan> I meant "whether merging my isAnimal with yours is or is not the Right Thing."
20:09:45 <jsled> ah.
20:09:46 <jcowan> As opposed to "whether the design is or is not the Right Thing".
20:10:31 <jcowan> Since every database contains its own replica of the root property, I can always merge your database into mine, but only if we agree on property mappings can we truly be said to interoperate.
20:11:07 <jsled> Hmm. sounds like any database where the table/column identifiers are well-defined .. uh ... identifiers.
20:11:30 <sbp> <jcowan> If you ask "Does item x have property y (with value z)?" the answer is "yes" if item x has any ancestral property of y instead.
20:11:35 <jcowan> jsled: the difference is that I allow (RDF-style) arbitrary flexibility in what properties I can assert about an item.
20:11:39 <sbp> surely you mean descendent, thinking about it?
20:11:57 <jcowan> yes.
20:12:28 <jcowan> * jcowan wonders if it's necessary to constrain everyone to give the root property the same properties?
20:12:53 <sbp> why would anyone want to give the root property any properties?
20:13:05 <jcowan> Ya got me.
20:13:29 <jcowan> You might want to give it divergent names for different languages, I guess.
20:13:42 <sbp> is the root property a child of itself?
20:13:45 <jcowan> No.
20:13:48 <sbp> aw
20:13:50 <sbp> :-)
20:13:52 <jcowan> The properties form a strict tree.
20:14:08 <sbp> you can't have loops at all?
20:14:11 <JimJibber> *** JimJibber has quit ("Bye!")
20:14:18 <jcowan> Who wants them?
20:14:28 <JimJibber> *** JimJibber (~none@82-43-210-159.cable.ubr10.newm.blueyonder.co.uk) has joined #swhack
20:14:30 <sbp> you can express equivalence that way
20:14:45 <jcowan> Good point, but I'd rather assert equivalence directly.
20:14:50 <sbp> fair enough
20:15:14 <jcowan> I think it would be a good thing to constrain people not to assert the root property on any item. That way it does not matter what (data)type it has.
20:15:27 <sbp> do you have an enumeration of all the datatypes in mind? XSD? will they be extensible?
20:15:36 <jcowan> XSD, ghu, no.
20:15:43 <sbp> phew
20:16:02 <jcowan> At the moment, string, number, datetime will keep me happy.
20:16:27 <jcowan> * jcowan tries to figure out whether it makes sense to allow non-boolean properties to have child properties.
20:16:28 <sbp> is i a number?
20:16:41 <jcowan> Why not.
20:16:48 <sbp> awesomeshire
20:17:13 <jcowan> I don't guarantee that particular implementations might not cough on it.
20:17:13 <sbp> I think it does, yes
20:17:19 <jcowan> Example?
20:17:32 <sbp> name, nickname
20:17:52 <jcowan> Nickname is a subproperty of name?
20:18:01 <sbp> yeah. or, better, ircNickname
20:18:11 <sbp> so if I'm doing a database of all the people in this room for example...
20:18:41 <sbp> then I can just add ircNickname "jcowan" and have name filled in for me
20:18:55 <jcowan> For some reason I never thought about multivalued properties, but there's no reason not to have them in the design.
20:19:16 <sbp> seems fairly essential
20:19:24 <jcowan> Yes.
20:20:04 <jcowan> There is a property of boolean properties, such that if it is true, the subproperties of this property are mutually exclusive.
20:20:30 <sbp> ...pardon?
20:21:16 <sbp> oh, a kind of disjunctive property?
20:21:30 <jcowan> Let the subproperties of isCarnivore be isDog, isCat, isWeasel. isCarnivore has the mutuallyExclusiveChildren property.
20:21:42 <sbp> ah yes. pairwise disjoincy
20:22:05 <kpreid> .gc disjoincy
20:22:10 <phenny> disjoincy: googlewhack!! (only 1 result found!)
20:22:17 <DrBacchus> And the rBaboon property
20:22:26 <sbp> take that A Theory of Interfaces and Modules I-Composition Theorem
20:22:33 <sbp> no longer the only use for disjoincy
20:22:34 <jcowan> I think baboons also eat plants.
20:22:43 <kpreid> .gc univore
20:22:49 <phenny> univore: 167
20:23:17 <jcowan> This means that if you search for "isCarnivore isMale" these terms are implicitly ANDed,
20:23:33 <jcowan> but if you search for "isDog isCat" these terms are known to be mutually exclusive, and are implicitly ORed.
20:23:40 <kpreid> cute
20:23:52 <kpreid> * kpreid fears scoping surprises
20:23:59 <sbp> it also imposes strict ordering of your hierarchy
20:24:13 <jcowan> kpreid: example?
20:24:19 <jcowan> sbp: How so?
20:24:20 <sbp> you can't have isCat and isSiameseCat as subproperties of isCarnivore if you want to take advantage of mEC
20:24:36 <kpreid> jcowan: only vague fears, no examples
20:24:39 <jcowan> No, but you can have isSiameseCat a subproperty of isCat.
20:24:43 <sbp> right
20:24:52 <sbp> so a nicer tree
20:25:54 <jcowan> * jcowan has gotten confused about ancestor and descendant inference
20:26:19 <jcowan> isName > isNickname, isAnimal >> isGoat, let us say.
20:26:28 <sbp> you can't infer a descendant from an ancestor / try as you might you'd far better notter
20:27:01 <jcowan> Right. If you ask for an ancestor, and a descendant is there, you can infer the ancestor.
20:27:03 <jcowan> But not vice versa.
20:27:16 <jcowan> And I am right and you are right and everything is quite all right.
20:27:28 <kpreid> jcowan: is it false that { ?pA mutuallyExclusiveChildren. ?pB subPropertyOf ?pA. } => { ?pB mutallyExclusiveChildren. }?
20:27:45 <sbp> (jcowan: incidentally: http://www.columbia.edu/itc/chemistry/chem-c140498/jack/ch11.html)
20:28:11 <jcowan> Ah, Donald Swan. Very cool. Thanks.
20:28:16 <sbp> no problem
20:28:33 <jetx> *** jetx has quit ()
20:28:48 <jcowan> kpreid: no, why should it be? isCarnivore +mEC > isCat +mEC > isSiameseCat
20:29:24 <kpreid> well, that would mean that you can't have:
20:29:28 <kpreid> [[[
20:29:28 <sbp> it's fine there
20:29:31 <kpreid> isCarnivore
20:29:35 <kpreid> isCat
20:29:57 <kpreid> isWhiteCat
20:30:02 <kpreid> isMaleCat
20:30:03 <kpreid> ]]]
20:30:35 <jcowan> Well, you can. But then you can't assert isCat mEC, because its subproperties don't satisfy mutual exclusion.
20:30:53 <crschmidt> Why wouldn't you just make things like type and color strings anyway?
20:31:15 <kpreid> Uh, because you just told me that isCarnivore mEC implies isCat mEC.
20:31:41 <jcowan> kpreid: Sorry, I misread you.
20:31:49 <jcowan> mEC is not inherited.
20:31:49 <kpreid> * kpreid didn't help.
20:32:15 <jcowan> I misread you as asking whether it *must* be inherited.
20:32:37 <jcowan> crschmidt: because you can't do inference on strings: there's no way to tell that "alice" is a subproperty of "blue".
20:32:43 <sbp> how do you declare a property to be a boolean type property? subClassOf boolean?
20:32:53 <mediovia_> *** mediovia_ (~mediovia@host217-42-198-6.range217-42.btcentralplus.com) has joined #swhack
20:33:03 <crschmidt> heh. committing ~ to svn is a big job... I'm used to 5 or 6 dots while "transmitting". So far I've got 3000 and counting.
20:33:12 <jcowan> datatype "boolean", I guess.
20:33:30 <jcowan> Or just boolean, where boolean is a well-known boolean property.
20:33:37 <sbp> so properties have their ranges datatyped?
20:33:46 <jcowan> Yes.
20:33:53 <jcowan> The domain of a property is "any item".
20:34:12 <sbp> so you can't have multidatatyped properties?
20:34:20 <sbp> something "blargh"; something 1
20:34:35 <jcowan> Doesn't seem useful to me. Example?
20:34:39 <sbp> or can you just say something datatype string; something datatype number?
20:34:46 <sbp> well...
20:34:54 <sbp> nope can't think of any
20:35:11 <sbp> perhaps a time, if you want to use datatime or unixtime
20:35:15 <sbp> but suck
20:35:31 <sbp> how are datatypes represented? strings?
20:35:33 <jcowan> With only a modest number of datatypes (and not forgetting listOfKeys), you can always explode such multityped properties.
20:36:05 <sbp> you mean have timeDatetime and timeUnixtime?
20:36:32 <jcowan> If you really think you must. But I'd rather do such conversions at the application level.
20:36:34 <crschmidt> well, timeUnixtime is an int, no?
20:36:43 <sbp> crschmidt: that's my point
20:37:00 <sbp> number, anyway, in this datatype scheme
20:37:04 <crschmidt> So, uh, you'd have a... oh
20:37:10 <sbp> sensibly. int/long/float sucks
20:37:19 <crschmidt> I thought you were saying those would be datatypes
20:37:25 <sbp> (type unification of int and long coming in Python 3.0!)
20:37:25 <crschmidt> rather than property names
20:37:28 <jcowan> Oracle secretly stores all numbers as variable precision floating point.
20:37:34 <sbp> heh, heh
20:37:56 <mediovia> *** mediovia has quit (Read error: 60 (Operation timed out))
20:38:08 <jcowan> IIRC there is a byte for the exponent and sign, and then base-100 digits in the following bytes.
20:38:57 <jcowan> crschmidt: "I thought you were saying those would be datatypes rather than property names": eh?
20:39:12 <sbp> to me, with timeDatetime and timeUnixtime
20:39:16 <crschmidt> jcowan: directed at sbp: I thought he was suggesting a timeDatetime and timeUnixtime dattype
20:39:28 <sbp> whereas I meant them as properties with datetime and number as their respective datatype ranges
20:39:36 <sbp> er, range datatypes
20:39:41 <jcowan> yes.
20:40:18 <kpreid> hmmm
20:40:27 <jcowan> What I'd like some guidance on, because I know I need it but I don't know how to do it, is how to represent integrity constraints.
20:40:47 <sbp> integrity constraints? got example?
20:43:05 <jcowan> Given a "subproperties" property with datatype listOfKeys, how do I represent the constraint "if item with key x is mentioned in the subproperties property of item with key y, x must be the parent of y
20:43:05 <jcowan> "
20:43:28 <julie> *** julie (~nobody@dsl.allan.mv.com) has joined #swhack
20:43:29 <jcowan> Or "all parent properties must contain only a single key
20:43:31 <jcowan> "
20:45:10 <jcowan> oops
20:45:30 <jcowan> make that "x's parent must be y"
20:46:32 <sbp> oh, { ?y subproperties [ contains ?x ] } => { ?y subproperty ?x }?
20:47:11 <sbp> something like: subproperties pluralOf subproperty
20:47:37 <jcowan> Well, sure. I suppose the question is "How weak a system can implement everything that's needed?" and since I don't really know what's needed yet, the question is vague.
20:47:40 <sbp> then you can do: { ?y ?p [ contains ?x ] . ?p pluralOf ?s } => { ?y ?s ?x }
20:48:01 <sbp> yeah...
20:48:14 <sbp> I was thinking about cardinality constraints too
20:48:34 <jcowan> I definitely don't want a full-bore FOPL reasoner, or even Prolog.
20:49:04 <kpreid> Ah, slippery slopes.
20:50:03 <jcowan> I suppose they'll have to be left up to application code for now, with a few critical integrity constraints (involving the property tree) implemented by force.
20:51:25 <themaximus_> *** themaximus_ is now known as themaximus
20:52:51 <jcowan> Hack for implementing unique keys:
20:53:00 <jcowan> Every database has a GUID
20:53:05 <jcowan> (base-64 encoded for compactness)
20:53:20 <jcowan> Every item has a timestamp, also base-64-encoded.
20:53:35 <sbp> I wrote up an... hang on
20:53:43 <jcowan> When an item is imported into a different database, it's prefixed by the GUID of its source database.
20:54:07 <sbp> http://inamidst.com/misc/urn-ti
20:54:15 <sbp> UID from time and IP address
20:54:22 <sbp> I'd throw in PID for this
20:54:49 <jcowan> "uuidgen" is your friend.
20:55:00 <sbp> too verbose
20:55:19 <jcowan> Hence the base-64 encoding. The output of uuidgen is hex with some random dashes which don't affect the uniqueness.
20:55:42 <sbp> that'lln't shorten it all that much will it?
20:55:50 <crschmidt> by 4, won't it?
20:55:58 <crschmidt> 64/16 = 4
20:56:46 <sbp> so 8 then... that's not bad
20:56:55 <crschmidt> by a factor of four *
20:57:26 <crschmidt> * crschmidt is sucking at typing and thinking today.
20:58:34 <DrBacchus> One or the other.
20:58:45 <DrBacchus> I'm going for the former.
20:58:46 <sbp> yeah, just suck
21:01:06 <jcowan> 22 bytes.
21:02:31 <jcowan> Plus five bytes for a 32-bit unixtime if we chop off two bits of it.
21:03:50 <sbp> why would you have to chop off two bytes?
21:03:53 <sbp> er, two bits
21:04:23 <jcowan> In base-64 we encode six bits per byte, so five bytes encodes 30 bits.
21:04:52 <jcowan> s/byte/character/g
21:05:09 <jcowan> Alternatively we could use six-character encodings and add extra MSBs to a Unix time.
21:06:20 <jcowan> In most databases, most items would be of local origin, I think.
21:07:48 <_mediovia_> *** _mediovia_ (~mediovia@host217-42-198-6.range217-42.btcentralplus.com) has joined #swhack
21:09:29 <sbp> ah, thanks
21:10:20 <jcowan> sbp must be relieved not to have the burden of voice.
21:10:49 <sbp> well I only had it for around three seconds, so that's fine
21:11:08 <jcowan> A variant of the uncertainty principle.
21:11:17 <jcowan> "Mankind cannot bear very much botitude."
21:12:18 <jcowan> This database model needs a name.
21:12:23 <jcowan> Any on offer?
21:13:15 <sbp> ooh, naming
21:13:16 <sbp> hmm
21:13:25 <mediovia_> *** mediovia_ has quit (Read error: 60 (Operation timed out))
21:13:48 <jcowan> I also figure that it needs three indexes: the main index by key,
21:13:56 <sbp> Mr. John Cowan's Super-Extraordinaire Classic Database-o-plex Concordance of Details What Are Arranged In Patternitudinous Br... no, I can't
21:14:12 <jcowan> I knew you were going to come up with something like that.
21:14:13 <sbp> itembase?
21:14:19 <sbp> yeah, yeah :-)
21:14:31 <sbp> proptree
21:15:24 <jcowan> an index showing which properties apply to items, and an index mapping from a key to the items which contain that key in keylist properties.
21:18:25 <sbp> I was thinking about an object oriented approach
21:18:39 <sbp> I'll likely be implementing it some time in the next few days
21:19:32 <jcowan> Every itembase contains a proptree.
21:19:51 <jcowan> I forgot to mention that well-known keys are designated by labels that are neither 6 nor 28 characters long.
21:20:16 <jcowan> e.g. root, parent, boolean, string, datetime, keylist, emc.
21:20:25 <jcowan> Oops, not parent.
21:21:02 <jcowan> superproperty
21:23:18 <sbp> neither 6 nor 28 characters long? what's the significance of that?
21:23:25 <jcowan> I like "itembase".
21:23:40 <sbp> superbase would be nice too
21:23:45 <sbp> propdex
21:23:50 <jcowan> I think superbase is a tm.
21:23:52 <sbp> itemdex...
21:23:55 <sbp> it is? bleh
21:24:05 <sbp> itemsoup
21:24:16 <jcowan> http://www.superbase.com
21:25:48 <jcowan> Itemsoup has no ghits, but sounds more unstructured than it is.
21:27:26 <sbp> yeah...
21:27:34 <sbp> I'm not enamoured with it either
21:27:44 <sbp> .gc itemtree
21:27:52 <sbp> ooh
21:27:54 <sbp> itree?
21:27:59 <sbp> sounds a bit Appley though
21:28:08 <phenny> itemtree: 1,970
21:29:58 <sbp> treeterbase!
21:30:12 <sbp> it sucks but I like the word
21:30:14 <jsled> souper treetre base.
21:30:25 <jsled> Or treeter, bah.
21:32:00 <sbp> keykeeper
21:32:08 <sbp> metabase
21:32:26 <sbp> keyshine
21:32:41 <DrBacchus> Amphetatree
21:32:43 <sbp> heh
21:32:48 <jcowan> * jcowan laughs
21:33:00 <sbp> blammo
21:36:32 <_mediovia__> *** _mediovia__ (~mediovia@host217-42-198-6.range217-42.btcentralplus.com) has joined #swhack
21:37:50 <jcowan> The device whereby the mailman gets into un-doormanned apartment buildings without carrying around a bunch of keys is called a "keykeeper", at least around here it is.
21:38:42 <sbp> didn't know that
21:38:45 <sbp> .gc keykeeper
21:38:50 <phenny> keykeeper: 760
21:38:53 <sbp> keytrum
21:39:15 <sbp> keytra
21:39:37 <jcowan> It's a box embedded in the building's outer wall near the door, with a Post Office lock on it, and containing keys to the building.
21:39:53 <jcowan> Sometimes, however, the carrier pockets the keys and leaves the keykeeper empty for the next carrier. Very Bad.
21:39:57 <JimJibber> growl!
21:40:12 <JimJibber> Sam Ruby really shouldn't be getting HTTP wrong!
21:40:33 <jcowan> No, he shouldn't.
21:40:38 <jcowan> But beware the Law of James Clark.
21:40:50 <sbp> Law of James Clark?
21:41:06 <jcowan> "When you think James Clark is wrong about a matter of fact, check again, then apply the Law of James Clark"
21:41:20 <_mediovia_> *** _mediovia_ has quit (Read error: 60 (Operation timed out))
21:41:46 <JimJibber> post a comment to his weblog, with application/xhtml+xml;q=0 in the accept header, get an application/xhtml+xml document back! - okay that's not strictly a violation of the spec, if that's the only document he's got, but when I try again later without that header I get a text/html one back
21:43:13 <sbp> jcowan: hehe
21:46:35 <JimJibber> okay, so now I need to confirm that the above is wrong behaviour...
21:46:45 <JimJibber> it's not optimal behaviour, but it's not exactly wrong :-(
21:46:51 <DrBacchus> *** DrBacchus has quit ("Home")
21:51:43 <sbp> ergo, Sam Ruby is James Clark
21:51:53 <sbp> what an interesting discovery we here have!
21:52:32 <jcowan> Well, let's say he is in the same equivalence class for some appropriate definition of equivalence.
21:52:42 <sbp> ooh
21:52:46 <sbp> I like that
21:53:07 <jcowan> * jcowan wonders if he might have done an inappropriate merge of Sam Ruby and Sam Hunting
21:57:27 <kpreid> Who's Sam Hunting?
21:58:09 <sbp> topic maps guy
21:59:12 <jcowan> He asked me (I didn't know who he was then) what the Infoset was once.
21:59:39 <jcowan> I took a guess, and said "Do you know what a property set is?" Luckily he said, "Yes".
22:00:13 <jcowan> s/property set/grove
22:00:19 <sbp> ah
22:00:19 <jcowan> I replied "It's a grove and that's all it is."
22:05:36 <jcowan> sbp: so you want to implement this as-yet-unnamed thing as an object network?
22:06:02 <sbp> on top of bdb
22:06:06 <sbp> in Python
22:06:49 <sbp> I'll have to think about the query component
22:07:00 <sbp> can't be as difficult as RDF though, and that was fairly easy
22:07:11 <crschmidt> jcowan: did you end up implementing RO-FTP in Python? I forget.
22:07:19 <jcowan> No, I decided to use Perl.
22:07:32 <jcowan> (course of least resistance)
22:07:47 <sbp> (but not in a scalar context)
22:07:58 <jcowan> sbp: here are my suggestions for physical-layer conventions, tell me if you approve:
22:08:12 <jcowan> Use \n to separate key-value pairs
22:08:26 <sbp> woah, woah
22:08:31 <sbp> big BZZT already
22:08:31 <sbp> what?
22:08:51 <jcowan> ummm, bdb = Berkeley DB?
22:09:02 <sbp> keys as in the unique keys presumably, and values as in the...
22:09:09 <sbp> ah, yes. well I can store pickled Python objects
22:09:36 <jcowan> I'd rather you didn't; it makes interoperability with non-python hard.
22:09:43 <sbp> fair enough
22:09:50 <jcowan> So I repeat:
22:09:55 <jcowan> \n separates key-value pairs
22:10:04 <jcowan> keys are alphanumeric
22:10:05 <sbp> UNBZZT
22:10:25 <jcowan> a key is separated from its value by :, #, or $ for string, number, or date
22:10:52 <sbp> hmm
22:10:58 <sbp> I'd rather $, #, and @
22:11:01 <jcowan> Okay.
22:11:03 <sbp> more mnemonicable
22:11:08 <sbp> $ for $tring
22:11:12 <sbp> @ for at-this-time
22:11:12 <supybot> sbp: Error: "for" is not a valid command.
22:11:35 <jcowan> I think $ is ugly actually: "key:value" looks better
22:11:50 <jcowan> How about : for string, @ for time, # for number?
22:11:58 <sbp> sure
22:12:12 <jcowan> 'k.
22:12:19 <jcowan> order of key-value pairs is not important.
22:12:27 <jcowan> Now we need a representation for list-of-keys.
22:12:49 <kpreid> * kpreid imagines version 273 where the type symbols have spilled out into Unicode punctuation
22:12:59 <jcowan> Oh yes, forgot to say UTF-8 throughout.
22:13:20 <sbp> wouldn't it make more sense to have the key value pairs as database mappings though?
22:13:30 <jcowan> What is a database mapping?
22:13:33 <sbp> then have an index for each set of mappings and use that to represent them
22:13:43 <sbp> well, key:value
22:14:08 <jcowan> How do you know which item it applies to?
22:14:24 <sbp> internal property I suppose
22:14:31 <jcowan> ???
22:14:46 <sbp> _foritem: itemname
22:14:58 <sbp> then disallow _ in property names
22:15:24 <sbp> hmm. just ignore me
22:15:41 <sbp> I prefer to think in code; it'll come out fine
22:15:42 <jcowan> I guess the db key could be itemkey:propkey and the value could be the value,
22:15:52 <jcowan> but it's hard to get all props for an item then.
22:16:10 <jcowan> mapping each record to an item seems safer transactionwise.
22:16:54 <sbp> harder to do key lookups though
22:16:56 <jcowan> How about prop,key,key,key... to represent a listOfKeys property?
22:17:07 <sbp> opening all records and grepping them doesn't sound appealing
22:17:10 <sbp> yup
22:17:19 <jcowan> Hence a secondary index
22:17:37 <sbp> what'll that be?
22:17:56 <jcowan> Well, let's say we want to know which items have props with key y.
22:18:36 <jcowan> Look in the db for y . "+"; it's value is a comma-separated list of keys for items with that prop.
22:18:55 <jcowan> Actually + is bad because it's used in base64.
22:19:25 <sbp> %?
22:19:54 <jcowan> Okay.
22:20:14 <eikeon_> *** eikeon_ has quit ()
22:20:39 <jcowan> And the value of x% is keys which contain this key as a property value.
22:20:45 <sbp> gotcha
22:21:08 <jcowan> Or alternatively just make these reserved properties % and % rather than separate db-level records.
22:21:12 <jcowan> er, % and %
22:21:16 <jcowan> God damn it.
22:21:22 <jcowan> Percent and double percent.
22:21:40 <sbp> is your client interpolating %% as % or something? :-)
22:21:45 <jcowan> Seemingly.
22:21:48 <sbp> wow
22:21:51 <jcowan> Do % and % look the same to you?
22:21:54 <sbp> yeah
22:21:55 <bjoern_> *** bjoern_ has quit (Connection timed out)
22:22:02 <jcowan> Me too, but I typed the second one as double-percent.
22:22:06 <jcowan> Test %a
22:22:10 <sbp> autocorrect?
22:22:13 <crschmidt> %%
22:22:32 <jcowan> Autoreplace list is empty.
22:22:38 <kpreid> * kpreid wonders if jcowan's client has some variety of scripting/interpolation
22:22:58 <crschmidt> xchat, right?
22:23:07 <jcowan> Yes.
22:23:21 <jcowan> Yes, % is magic.
22:23:39 <jcowan> Settings/preferences.
22:23:45 <jcowan> * jcowan turns that off
22:23:47 <jcowan> Test: %%
22:23:48 <jcowan> yeah.
22:24:15 <jcowan> The advantage of making x% and x%% separate db-level records is that they get updated independently of x.
22:24:43 <sbp> why is x%% different to x%?
22:25:05 <jcowan> x% gives the items whose properties include x
22:25:12 <jcowan> x%% gives the items whose property *values* include x
22:25:16 <sbp> ahh
22:26:09 <sbp> how about ones for lists of items too?
22:26:12 <jcowan> So to find the subproperties of z, you look in z%% for a keylist with key "superproperty"
22:27:39 <sbp> wouldn't need that for props, just values actually
22:27:49 <jcowan> yes.
22:27:56 <sbp> so x* could be for all items who property values are a listOfKeys and include x
22:27:59 <jcowan> To see the subproperties of the property z, you need to look in values.
22:29:17 <sbp> can items appear in listOfKeys twice?
22:29:22 <sbp> and does that have any meaning if so?
22:29:42 <sbp> for example if someone wins a race twice, I might include them in winners's listOfKeys value twice
22:31:22 <jcowan> I'm okay with it, although it sounds more like they won two closely related races.
22:31:26 <jcowan> Order matters.
22:31:31 <jcowan> in listOfKeys
22:31:37 <jcowan> I think %% and * are the same thing.
22:31:47 <sbp> okay. significant order and duplicates allowed
22:31:58 <sbp> hmm, I was wondering about unifying them
22:32:21 <sbp> I'm not sure if there's any time you'd want to know specifically if the item appears as a value rather than a value in a list or vice versa though
22:32:50 <jcowan> I don't see any reason to index non-list values at all.
22:33:08 <sbp> doing the lookup for either of them is easy if you have both %% and *: just look in %% and then look in *, but otherwise you have to go through all the values checking
22:33:10 <jcowan> No point in looking for all items that have 5 as a property value, e.g.
22:33:24 <sbp> really?
22:33:32 <jcowan> Example?
22:33:44 <sbp> if I want to find your phone number, first I need to find your item based on your name
22:33:54 <sbp> so I do ?item name "John Cowan"
22:34:14 <sbp> oh yeah, so I know the prop
22:34:15 <sbp> hmm
22:34:43 <sbp> nope, can't think of one
22:34:47 <sbp> conceded
22:34:52 <jcowan> Name should probably be treated as a special case, though.
22:35:19 <sbp> yeah. actually I forgot about its special placement
22:35:40 <jcowan> We don't want to maintain a giant record for every item which has a name, which will be most items.
22:36:04 <sbp> right
22:36:24 <sbp> though it reminds me of doing s: (p, o) and p: (s, o) RDF stores
22:37:52 <jcowan> So let's make x* be the inversion of all listofkeys props.
22:38:32 <sbp> I thought you said it's not required? just dump it in with %%?
22:38:37 <jcowan> So we have four types of records: key, key%, key*, name=.
22:39:51 <sbp> what does name= do?
22:40:37 <jcowan> Maps a name to its key(s).
22:40:54 <sbp> won't a name be all kinds of crud though?
22:41:01 <jcowan> yes, but a key can't end in =.
22:41:11 <sbp> hmm... okay
22:41:12 <jcowan> Oops, it can. Substitute ! or something.
22:41:24 <sbp> what's the regexp for a key then?
22:41:30 <sbp> oh, base64
22:41:35 <jcowan> [a-zA-Z+/=]+
22:41:39 <jcowan> 0-9, too.
22:41:39 <sbp> and for a prop?
22:41:44 <jcowan> Ditto.
22:41:55 <sbp> oh right, they're just keys
22:42:11 <jcowan> Like RDF.
22:42:26 <sbp> yeah. key c.= URI
22:42:39 <jcowan> Maybe URI should be a distinct type from string?
22:42:59 <jcowan> Or rather, resource is a distinct type from string.
22:43:23 <sbp> don't think it matters too much
22:43:30 <sbp> I'm not even sure about datatyping in general
22:43:51 <sbp> DanC's scalar argument for RDF datatypes still reverberates
22:43:57 <jcowan> What/where is that?
22:44:23 <sbp> http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2001Dec/0003
22:46:20 <jcowan> * jcowan reads it
22:48:46 <jcowan> I can sorta live with that for the various scalar types, but as designed we have to know what is a list prop and what is a scalar prop.
22:49:06 <sbp> list and scalar is fine
22:49:21 <sbp> that's like the difference between literal, bNode, and URI in RDF
22:49:39 <sbp> not the difference between an xsd:int literal and an xsd:datetime literal
22:50:03 <jcowan> We do need a convention for representing dates, though.
22:50:11 <sbp> W3C DTF
22:50:29 <sbp> I don't mind datatypes particularly if you want numbers and dates
22:50:57 <sbp> just seems a little arbitrary, especially when you start creeping URIs in :-)
22:50:59 <jcowan> It would sure make life easier for people in static typing languages.
22:51:48 <sbp> easier? in a statically typed language? what's the point? :-)
22:52:09 <jcowan> Lots of folks like them. I don't want to be exclusionary.
22:52:37 <sbp> then why pick number instead of int and float etc.?
22:53:46 <jcowan> I don't want to be too specific either. Some languages don't have those.
22:54:14 <sbp> hmm
22:54:17 <jcowan> Conceptually a string, a number, a point in time, and an Internet information resource are different things.
22:54:34 <sbp> oh, no doubt they're disjoint
22:55:02 <jcowan> In principle URI does it all.
22:55:18 <jcowan> instead of "foo" use "data:text/plain,foo"
22:55:36 <sbp> * sbp looks at all the XSD types
22:55:52 <sbp> I don't think "foo" == "data:text/plain,foo"
22:56:12 <sbp> str/num/pit/uri looks like a good summary of all the XSD types
22:56:19 <jcowan> "pit"?
22:56:24 <sbp> point in time
22:56:48 <sbp> dat?
22:57:02 <sbp> date and time (and date abbrev.)
22:57:23 <sbp> whatever, the long versions'll be used
22:57:29 <jcowan> Don't forget raw octets.
22:57:42 <sbp> that's string, no?
22:57:52 <jcowan> No. Strings are composed of characters, not octets.
22:58:12 <sbp> but you're not having an octets datatype?
22:58:22 <jcowan> No.
22:58:24 <sbp> (note: there'll be a bytes type in Python 3.0)
22:58:26 <sbp> why not?
22:58:30 <jcowan> But you can have one octet object associated with each item.
22:58:42 <sbp> (which is pretty much what str is not, only str is a misnomer)
22:58:48 <sbp> ouch
22:59:09 <sbp> wait, what's an octet object? an item?
22:59:18 <sbp> so you can have a list of octets?
22:59:44 <jcowan> No.
23:00:05 <jcowan> There is a magic prop associated with each item named "associatedOctets" whose value is raw octets.
23:00:11 <jcowan> In effect.
23:00:32 <sbp> okay. and by what means are they associated?
23:00:38 <sbp> oh, I guess it means "equivalentTo"
23:00:44 <sbp> owl:sameAs
23:00:51 <sbp> rdf:value, more like (which is owl:sameAs)
23:00:56 <jcowan> no.
23:00:58 <sbp> gah
23:01:20 <jcowan> At least I don't see how.
23:01:20 <sbp> * sbp will get one right!
23:01:39 <jcowan> e.g. you could represent an email as an item with props representing the headers.
23:01:42 <sbp> well I'm not sure how associatedOctets does anything unless it means that the item is equal to the value of it
23:01:59 <jcowan> The associatedOctets would be the (decoded) body of the item.
23:02:04 <sbp> right
23:02:28 <sbp> so you'd do: item headername value . value associatedOctets "..." .
23:03:00 <sbp> not liking this magic property idea
23:03:00 <jcowan> s/body of the item/body of the email
23:04:01 <jcowan> It's not a property that has associated octets, it's an item.
23:04:20 <sbp> right
23:04:24 <sbp> value there is a value
23:04:30 <sbp> which is, presumably, an item
23:04:36 <sbp> you can have items as values, right?
23:04:42 <sbp> yeah, you must be able to...
23:04:47 <jcowan> You can have lists of keys as values.
23:04:51 <jcowan> But not items as such.
23:05:12 <sbp> ah, I didn't know that
23:05:32 <sbp> that's where the %% * confusion came in then
23:05:37 <jcowan> Yes.
23:06:11 <jcowan> Still, keys are one-to-one with items, so effectively a list of keys is a list of items, semantically.
23:06:39 <jcowan> I'm not sure how this connects with associatedOctets.
23:06:53 <jcowan> In an email item, the props would be string props, since header values are strings.
23:06:56 <sbp> well, I'm just trying to understand associatedOctets
23:07:14 <sbp> okay, so where do octets come into that?
23:07:29 <jcowan> The octets associated with the item would be the body of the email.
23:07:33 <jcowan> Which is not a string.
23:07:40 <sbp> ah
23:07:44 <jcowan> At least once you decode it, it isn't.
23:07:46 <sbp> okay, so how would you model that?
23:08:10 <sbp> email body [value] . value associatedOctets "..." .?
23:08:31 <jcowan> just "email associatedOctets ..."
23:08:47 <sbp> so what if you want to associate something twice?
23:08:54 <sbp> say you want to do pictures of me
23:08:55 <jcowan> Example?
23:09:21 <jcowan> sbp picture pic1; picture pic2; picture pic3
23:09:26 <sbp> sbp picture [value1, value2] . value1 associatedOctets "..." . value2 associatedOctets "..." is how I'd do it
23:09:32 <jcowan> yes.
23:09:42 <jcowan> Where value1 and value2 are keys/items.
23:09:43 <sbp> okay, I follow now
23:10:00 <jcowan> The key point is that octets can't appear repeatedly.
23:10:13 <sbp> but if you had octets as a datatype, then they could do
23:10:23 <sbp> so... what's the rationale against?
23:10:37 <jcowan> I'd like to represent the octets as octets, not encoded.
23:11:07 <jcowan> So put octets last in the item record.
23:11:14 <jcowan> If at all.
23:11:29 <jcowan> Or put them in a separate db-level record altogether.
23:11:43 <jcowan> maybe better, that way the item record doesn't bloat by a 5 MB picture.
23:11:58 <sbp> gotcha
23:13:08 <jcowan> * jcowan arbitrarily picks | as the datatype character for resources
23:13:11 <sbp> I need to go to bed
23:13:22 <sbp> please let me know if you settle on a name, or come up with any further ideas!
23:13:39 <jcowan> * jcowan also picks key- as the db-level key for octets/blobs.
23:13:40 <jcowan> Will do.
23:13:45 <jcowan> I have to go home anyhow.
23:14:04 <sbp> 'nighty-'night
23:14:57 <jcowan> * jcowan is glad all this is logged
23:15:01 <jcowan> loggy, pointer?
23:15:01 <jcowan> See http://swhack.com/logs/2005-03-16#T23-15-01
23:15:08 <jcowan> Ittywhonk!
23:15:15 <jcowan> *** jcowan has left #swhack
23:17:03 <Monty> crschmidt1: You asked me to remind you to plug a new ethernet cable in. I don't care, just do it, damnit.
23:17:27 <libby> * libby watches showgirls. heh heh
23:19:30 <crschmidt> monty: remind me in 2 hours to plug in a new ethernet cable. stop whining.
23:19:30 <Monty> crschmidt: Okay, I'll remind you about that on Thu Mar 17 01:19:30 GMT 2005
23:36:34 <libby> [[
23:36:35 <libby> Verhoeven is the only director it the Razzie's history who accepted the award in person. Brave guy.
23:36:36 <libby> ]]
23:36:48 <libby> genius!