←2009-02-14 2009-02-15 2009-02-16→ ↑2009 ↑all
00:00:34 -!- oerjan has quit ("Good night").
00:09:11 -!- Sgeo_ has joined.
00:12:57 -!- KingOfKarlsruhe has quit (Remote closed the connection).
00:26:14 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
00:28:04 <ehird> Who here uses qmail? AnMaster?
00:28:17 <AnMaster> ehird, correct. Night
00:28:20 * AnMaster goes to bed
00:28:29 <ehird> AnMaster: Impeccable timing.
00:29:13 <ehird> AnMaster: You got one second? Guess not.
00:29:29 <AnMaster> well
00:29:30 <AnMaster> ok then
00:29:36 <AnMaster> I have a headache tough
00:29:38 <ehird> what imap server do you use with qmail?
00:29:39 <AnMaster> though*
00:29:55 <AnMaster> ehird, um I don't. I use maildir...
00:30:08 <ehird> AnMaster: Ah, you read mail directly on the server?
00:30:29 <AnMaster> ehird, I'm used to the pine/mutt/alpine family of mail clients yes
00:30:36 <ehird> How quaint. :p Thanks anyway :)
00:30:57 <AnMaster> ehird, also I hate MTAs, that is as long as they are working they are ok, but I hate sysadmining them
00:31:18 <ehird> Yes, that's why I'm trying to decide between qmail and letting google host my mail atm.
00:32:25 <AnMaster> mhm
00:32:38 <ehird> bye
00:32:41 <AnMaster> ehird, qmail config is not as bad as sendmail config though
00:32:44 <AnMaster> and night
00:46:43 <psygnisfive> erg
00:47:02 <psygnisfive> guys, i have a question you might have a worthwhile opinion on
00:48:03 <oklopol> i think you know what my answer is.
00:48:10 <psygnisfive> is it oko?
00:48:39 <oklopol> well i have no idea.
00:52:37 <psygnisfive> so my question is this
00:53:03 <psygnisfive> i have these things called glosses that represent a sort of annotated form of a sentence
00:53:33 <psygnisfive> and there are a number of standard orthographic forms used to annotate
00:53:46 <psygnisfive> i want to be able to integrate this into the database software im building tho
00:54:15 <psygnisfive> in which the standard orthgoraphic forms are representative of things in the database
00:54:56 <oklopol> you lost me at "things"
00:55:07 <psygnisfive> :P
00:55:11 * oklopol is too tired for big words
00:55:12 <psygnisfive> should i store the glosses as just strings like "F.B.Q" and require that searches work on the orthographic forms only
00:56:23 <psygnisfive> or should i make the glosses actually store pointers to the items in the DB instead of storing just strings of representation?
01:14:14 -!- GreaseMonkey has joined.
01:35:42 -!- Corun has quit ("This computer has gone to sleep").
01:44:26 <olsner> hmm, no oerjan?
01:56:09 <GregorR> Anybody want to play Cheskers?
01:58:28 <oklopol> NO.
01:58:29 <olsner> maybe you can play cheskers and I can be in the audience making fun of you?
01:59:12 <GregorR> ...
01:59:46 <oklopol> wait
01:59:51 <oklopol> cheskers
01:59:56 <oklopol> is that some wacky game of yours?
02:00:01 <oklopol> checkers + chess
02:00:08 <GregorR> Naturalismo.
02:00:23 <oklopol> right, right, for some reason god only knows, i thought it was a typo
02:00:46 * oklopol is slowwww
02:00:52 <oklopol> ...but still NO
02:00:55 <oklopol> need to koed
02:00:56 <oklopol> ->
02:01:17 <olsner> co-educate?
02:01:33 <olsner> as in, interact with females?
02:02:11 <oklopol> yes, i'm a pornstar
02:02:17 <Sgeo_> Anyone want to play Arimaa?
02:02:18 <GregorR> No, he's just impersonating the word coed, so he'll be interacting with female impersonators.
02:02:36 <GregorR> Sgeo_: Oooh, I should add Arimaa support to my board game software ...
02:02:37 <olsner> sweet, pornstar and crazy-person.. I'm just missing two out of two
02:02:51 <Sgeo_> GregorR, what about legal issues?
02:03:21 <GregorR> Sgeo_: Has legality ever stopped me before? Bahahahahah!!!
02:03:32 <Sgeo_> GregorR, I have no clue, obviously
02:06:46 <Sgeo_> http://arimaa.com/arimaa/license/
02:06:56 <GregorR> Yeah, should be compatible.
02:07:03 <Sgeo_> http://arimaa.com/arimaa/license/current.txt
02:07:05 <GregorR> The software is F/OSS, but that's copyright, not patent ^^
02:08:14 <Sgeo_> "Some usage or distribution of Arimaa may be non-commercial, but also not fall
02:08:14 <Sgeo_> under the personal, educational and research (PER) category. For such cases a
02:08:14 <Sgeo_> written authorization must be obtained from Arimaa.com.
02:08:14 <Sgeo_> "
02:08:24 <Sgeo_> " * I want to freely distribute software that incorporates Arimaa. Such as
02:08:24 <Sgeo_> open source software that plays Arimaa.
02:08:24 <Sgeo_> "
02:09:44 <GregorR> Bah, why would somebody patent a game created for the purpose of testing the limits of AI. That's so stupid.
02:12:28 <bsmntbombdood> lots of patents are
02:19:18 <pikhq> Yeah, that is the one dumb thing about Arimaa.
02:19:46 <pikhq> Really sad, since everything else about Arimaa is rather clever and smart...
02:20:18 <pikhq> Fairly deep game.
03:18:35 -!- bsmntbombdood has quit.
03:19:31 -!- bsmntbombdood has joined.
03:32:19 -!- chuck has changed nick to chuck_cat.
03:32:35 -!- chuck_cat has changed nick to chuck.
04:04:44 -!- Slereah2 has joined.
04:08:51 -!- Slereah has quit (Read error: 110 (Connection timed out)).
04:17:28 -!- Slereah has joined.
04:26:13 -!- Slereah2 has quit (Read error: 110 (Connection timed out)).
04:49:18 -!- Dewio has joined.
05:01:56 -!- Dewi has quit (Read error: 101 (Network is unreachable)).
05:18:56 -!- Sgeo__ has joined.
05:21:05 -!- Pthing has quit (Read error: 104 (Connection reset by peer)).
05:33:22 -!- Slereah has quit (Read error: 110 (Connection timed out)).
05:34:00 <oklopol> holy shit
05:34:08 <oklopol> i have a palindrome embedded in my nick!
05:34:11 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
05:36:08 -!- Sgeo_ has quit (Read error: 110 (Connection timed out)).
05:49:12 <psygnisfive> lopol is indeeda palindrom
05:49:13 <psygnisfive> e
05:50:20 <oklopol> i was actually talking about the "o", but yeah i guess "lopol" is a palindrome as well
05:51:07 <psygnisfive> :P
05:51:35 <psygnisfive> you have a wonderful ability to counter ones expectations
05:52:19 <oklopol> i do now? it's probably just the lack of sleepness.
05:53:09 <oklopol> i just made my first GC, and it was so trivial i'm a bit ashamed i did it.
05:53:30 <oklopol> two hours until the breakfast store opens
05:53:43 <oklopol> all i can do until then is troll irc channels by being my tired self
06:05:11 <GregorR> oklopol: Everyone has at least len(nick) trivial palindromes :P
06:05:42 <GregorR> oklopol: Conservative GC? Mark and sweep? Copying? Generational? Magic GC?
06:08:39 <psygnisfive> GC?
06:09:03 <psygnisfive> oh
06:09:06 <psygnisfive> garbage collector
06:09:07 <psygnisfive> ok.
06:21:53 <bsmntbombdood> how does a conservative gc know how large objects are?
06:22:26 <bsmntbombdood> oh, duh, it hacks the allocator
06:38:54 -!- Sgeo has joined.
06:49:44 <GregorR> bsmntbombdood: It /is/ the allocator.
06:49:59 <bsmntbombdood> yeah
06:53:35 <bsmntbombdood> but you still have to use a malloc thing
06:54:08 -!- Sgeo__ has quit (Read error: 110 (Connection timed out)).
06:58:46 <bsmntbombdood> allocators get awfully complicated
07:02:16 <bsmntbombdood> like in memcached, they decided malloc() isn't good enough
07:04:03 <bsmntbombdood> and you still see things like obj_t objcache[128];
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:08:42 -!- GreaseMonkey has quit ("Client Excited").
08:20:52 <Sgeo> Bye all
08:21:16 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
08:48:57 -!- kar8nga has joined.
09:10:00 -!- oerjan has joined.
09:14:39 <oerjan> <oklopol> i have a palindrome embedded in my nick!
09:14:53 <oerjan> me too! six of them in fact
09:15:20 <oerjan> oh wait, seven
09:15:34 <oerjan> forgot the empty string
09:16:18 <oerjan> <oklopol> i was actually talking about the "o", but yeah i guess "lopol" is a palindrome as well
09:16:34 <oerjan> no that's way to destroy my joke in advance
09:16:41 <oerjan> *now
09:17:24 <oerjan> <GregorR> oklopol: Everyone has at least len(nick) trivial palindromes :P
09:17:29 <oerjan> +1
09:17:53 <oerjan> maybe i _should_ start reading the rest of the logs before responding. nah.
09:20:09 <oerjan> also, that's technically correct only if you count duplicates, in which case it still isn't, should be 2*len(nick)+1
09:20:28 <oerjan> (empty strings all around)
09:27:53 -!- kar8nga has quit.
09:56:07 -!- Hiato has joined.
10:02:42 -!- Hiato has quit (Remote closed the connection).
10:04:30 -!- Hiato has joined.
10:12:25 <oklopol> GregorR: oklopol: Conservative GC? Mark and sweep? Copying? Generational? Magic GC? <<< variant of m&s.
10:13:18 <oklopol> i would probably feel less dirty if it was something algorithmically contentful
10:14:09 -!- appletizer has joined.
10:16:20 <oklopol> oerjan: there is an infinite amount of empty strings in every hole, isn't there?
10:19:22 <oklopol> counting duplicated may not be such a great ida
10:19:24 <oklopol> *idea
10:19:26 -!- appletizer has left (?).
10:30:52 <oerjan> oklopol: i assume you count only once per position...
10:31:22 <oerjan> otherwise it would get SILLY, and we wouldn't have THAT
10:31:28 <oklopol> ah, infinite amount, but they all have the same position, yes i guess that's solid logic
10:31:37 <oklopol> yes, exactly :)
10:36:06 -!- Hiato has quit ("Leaving.").
10:59:06 -!- Judofyr has joined.
11:10:01 -!- dbc has joined.
11:13:41 -!- sebbu2 has quit (Read error: 60 (Operation timed out)).
11:15:20 -!- kar8nga has joined.
11:25:47 -!- Judofyr has quit (Remote closed the connection).
11:26:31 -!- Judofyr has joined.
11:26:39 -!- oerjan has quit ("leaving").
11:32:18 <oklopol> d-d-d-d-D-D-D-DANNNNCE aLLLL nIGHT lONGGGGGGG
11:37:12 <dbc> Hi people.
11:37:32 <oklopol> hi you.
11:52:27 -!- MigoMipo has joined.
11:56:26 -!- ais523 has joined.
12:02:05 -!- KingOfKarlsruhe has joined.
12:03:17 -!- jix has joined.
12:09:17 -!- sebbu has joined.
12:20:08 -!- fungot has quit (brown.freenode.net irc.freenode.net).
12:20:08 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
12:20:08 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
12:20:18 -!- Deewiant has joined.
12:31:41 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client").
12:44:53 -!- Judofyr has quit (Remote closed the connection).
12:45:35 -!- Judofyr has joined.
13:09:29 -!- jix has quit (Read error: 60 (Operation timed out)).
13:32:14 -!- fizzie has joined.
13:34:09 -!- kar8nga has quit (Read error: 60 (Operation timed out)).
13:45:21 -!- Slereah2 has joined.
13:54:33 -!- MigoMipo has quit (Read error: 110 (Connection timed out)).
14:18:47 -!- ais523 has joined.
14:24:10 -!- olsner_ has joined.
14:38:14 -!- olsner has quit (Read error: 110 (Connection timed out)).
14:38:17 <ehird> [14:35:33] <oklopol> [05:53:09] i just made my first GC, and it was so trivial i'm a bit ashamed i did it.
14:38:23 <ehird> you're right that's trivial
14:38:26 <ais523> hi ehird
14:38:27 <ehird> but, you know, it's fun.
14:38:29 <ehird> hi ais523
14:38:37 <ais523> I wrote a GC for Overload a while back
14:38:41 <ais523> two, in fact
14:38:53 <ais523> because the GC semantics are part of the language
14:38:58 <ehird> oklopol: gcs CAN be algorithmically contentful
14:39:00 <ais523> the first one was mark-and-sweep
14:39:04 <ehird> do it parallel, and generational
14:39:04 <ais523> and the second one was weird
14:39:09 <ehird> that's tricky
14:40:50 <oklopol> ehird: i know
14:41:03 <ehird> yah
14:41:05 <ehird> just suggestering
14:42:41 <oklopol> well this is in c++, and it's just not fast enough to code in to be all that fun.
14:42:49 <oklopol> so i just made something simple that works.
14:43:32 <ais523> oklopol: did you make it for a reason, or just for fun?
14:43:38 <ais523> and which algorithm did you use?
14:43:41 <oklopol> it's for a c++ course.
14:43:48 <oklopol> and i didn't really use an algorithm
14:44:05 <ais523> well, the code has to be using some method to do it
14:44:10 <ais523> and even trivial algorithms have names
14:44:25 <oklopol> but i think it's mark-and-sweep
14:44:30 <oklopol> ofc
14:45:22 <ehird> mark and sweep is pretty much the most dumb thing ever
14:45:22 <oklopol> but you know giving mark-and-sweep a name is like naming different ways to call a function, it's just kinda stupid, since anyone will come up with it given the problem statement, there is absolutely no insight to it.
14:45:26 <ehird> it's no wonder gc had a bad rep
14:45:38 <ehird> oklopol: it's useful when talking about it
14:45:41 <oklopol> well different ways to call a function is a bad example.
14:45:43 <ehird> oh, debian 5 is out
14:45:46 <ais523> pass-by-value, pass-by-reference, pass-by-name
14:45:47 <oklopol> ehird: sure. i still don't like it.
14:45:48 <ais523> ehird: "5"?
14:45:54 <ehird> yes.
14:45:57 <ehird> debian 5.0 "lenny"
14:46:00 <ais523> it's Lenny, and something like the ninth or tenthversion
14:46:04 <ehird> http://www.debian.net/News/2009/20090214.en.html
14:46:07 <ehird> " Debian GNU/Linux version 5.0"
14:46:10 <ais523> I wasn't even aware Debian had version numbers
14:46:14 <oklopol> ais523: yes, very bad example, also you could consider call conventions another categorization
14:46:24 <ais523> obviously, it must have version numbers that don't follow an obvious pattern
14:46:27 <oklopol> much more algorithmical insight to it
14:46:29 <ehird> ais523: I'm pretty sure Lenny and the like are just codenames, like Tiger and Leopard
14:46:38 <ehird> although apple are now marketing with those names, they didn't use to
14:46:50 <ais523> ehird: sort of, except that those names are the names of the repositories
14:47:03 <ehird> I bet internal apple code has "Leopard" in it, too
14:47:06 <ais523> the way it works is that a few weeks ago, "Lenny" was the testing repository
14:47:18 <ais523> "Lenny" is now the stable repo, and testing is "Squeeze"
14:47:30 <ais523> and those names are the names you actually have to give to the package manager for it to work
14:47:39 <ehird> ais523: I just looked it up, debian's gone:
14:47:44 <ehird> 0.x, 1.x, 2.x, 3.x, 4.x, 5.0
14:47:57 <ehird> so it's not the ninth or tenth release, they're just slooooow.
14:47:58 <oklopol> ais523: maybe a better example is something like insertion sort, sure it's useful to have a name for it, but it's not like anyone implements insertion sort, insertion sort is what you implement if you don't feel like thinking or reading and want to get the job done.
14:48:05 <ais523> so you can either say "stable" to automatically stay on the stable repo (which would upgrade from etch to lenny automatically)
14:48:15 <ehird> 4.0 was released april 2007
14:48:22 <ehird> so 5.0 is a positively fast release
14:48:24 <ais523> or say "etch", then it stays on etch until you tell it to upgrade to lenny
14:48:30 <ais523> (and etch is now the oldstable repo)
14:48:48 <ehird> http://www.debian.net/doc/manuals/project-history/ch-detailed.en.html#s4.6
14:48:50 <ehird> Mostly deaths...
14:48:55 <ehird> (Important Events section)
14:49:58 <ehird> ais523: what do you think debian will do when they run out of toy story names?
14:50:11 <ais523> persuade Disney to release Toy Story 3
14:50:31 <ehird> Erm, they're already making it :P
14:50:37 <ais523> there are still quite a lot they haven't used yet, though
14:53:21 <ehird> holy shit, linus uses _this kind of emphasis_ a lot
14:53:23 <ehird> http://article.gmane.org/gmane.comp.version-control.git/217
14:54:23 <ehird> ais523: ah:
14:54:24 <ehird> Other codenames that have been already used are: buzz for release 1.1, rex for release 1.2, bo for releases 1.3.x, hamm for release 2.0, slink for release 2.1, potato for release 2.2, woody for release 3.0, sarge for release 3.1, and etch for release 4.0.
14:54:35 <ehird> so the codename changes more frequently than the major release
14:54:46 <ehird> so this is the 10th release or thereabouts
14:54:50 <ais523> yes, I wonder what makes them decide whether a release is minor or major/
14:55:29 <ehird> well, they seem to be going for major release = codename, once every year and a half or so
14:55:39 <ehird> going by etch and this new one here
14:55:46 <ais523> major release = codename is necessary
14:55:51 <ais523> or their whole release process would fail
14:55:59 <ehird> what I mean is,
14:56:04 <ehird> not changing the codename on a minor release
14:56:07 <ehird> like they used to, as above
14:56:23 <ais523> ah
14:56:47 <ais523> what I mean is, there doesn't seem to be any way to tell whether a Debian release is minor or major, except from the version number
15:01:08 <ehird> yes
15:01:17 <ehird> I guess those minor releases were not that minor
15:01:25 <ais523> yep
15:01:29 <ais523> basically, the way Debian works
15:01:36 <ais523> is that they have unstable, which is cutting-edge
15:01:46 <ais523> and experimental, which is even more cutting-edge
15:01:55 <ehird> yes
15:01:59 <ais523> unstable contains the latest versions of whatever packages they're using
15:02:03 <ais523> so, say, the latest version of KDE 3
15:02:04 <ehird> When I used debian as a desktop OS I used sid
15:02:10 <ehird> because everything else was hopelessly slow
15:02:14 <ais523> whereas experimental contains the latest version of KDE 4
15:02:19 <ais523> because 4 isn't in mainstream yet
15:02:22 <ehird> unstable = testing, right?
15:02:26 <ais523> not quite
15:02:26 <ehird> and experimental = unstable
15:02:29 -!- Hiato has joined.
15:02:47 <ais523> if something's been in Debian unstable for a certain number of days and nobody reports a bug in it, it moves into testing
15:02:51 <ehird> yes
15:03:01 <ais523> the number of days depends on how serious the bug that fixed it was
15:03:08 <ais523> so, say when I release a new C-INTERCAL version
15:03:20 <ais523> it goes into unstable as soon as Debian package it, and into testing if nobody reports a bug after 8 days
15:03:25 <ais523> longer if there's a code-freeze on
15:03:44 <ehird> yes
15:03:48 <ais523> every so often, they gradually code-freeze testing
15:04:02 <ais523> and delays there get longer and longer, until they're only porting fixes for release-critical bugs
15:04:26 <ais523> when there are no release-critical bugs in testing, and there's a freeze at the time, it becomes the next stable version
15:10:11 -!- BeholdMyGlory has joined.
15:22:44 <dbc> Think I'll note again that in case anyone has a boardgamegeek membership, I've got an "esoteric language programmer" microbadge available. http://boardgamegeek.com/microbadge/7285
15:31:16 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client").
15:31:41 -!- ais523 has joined.
15:31:51 <ais523> MIBBIT PLEASE STOP DOING THAT
15:32:10 <ehird> wow, allcaps
15:32:15 <ehird> is this a first?
15:32:21 <ais523> I don't think so
15:37:59 <oklopol> o
15:38:25 <ais523> o8o
15:41:02 -!- BeholdMyGlory has quit ("rebooting").
15:43:56 -!- BeholdMyGlory has joined.
16:05:44 -!- Slereah2 has quit.
16:07:55 -!- kar8nga has joined.
16:08:19 -!- Slereah has joined.
16:10:09 -!- Slereah has quit (Client Quit).
16:10:54 -!- Slereah has joined.
16:11:29 -!- Slereah has quit (Client Quit).
16:21:59 -!- Slereah has joined.
16:23:32 -!- Hiato has quit ("Leaving.").
16:26:30 -!- BeholdMyGlory has quit (Remote closed the connection).
16:38:57 -!- BeholdMyGlory has joined.
16:48:58 <GregorR> Heh, apparently there's a process called Electrowinning.
16:52:11 <ais523> what does it do?
16:56:54 <ehird> Electrowinning, also called electroextraction, is the electrodeposition of metals from their ores that have been put in solution or liquefied. Electrorefining uses a similar process to remove impurities from a metal. Both processes use electroplating on a large scale and are important techniques for the economical and straightforward purification of non-ferrous metals. The resulting metals are said to be electrowon.
17:01:46 * ehird is working on a HIDEOUS ABOMINATION.
17:02:25 <ehird> Objectivist-C. Entities fight for processor and memory. More efficient producers (e.g., a prime checker using a better algorithm) end up killing other entities.
17:02:34 <ehird> All based on the C we know and love!
17:06:09 -!- oerjan has joined.
17:07:29 -!- kar8nga has quit.
17:08:04 -!- MigoMipo has joined.
17:09:03 <oerjan> <ais523> pass-by-value, pass-by-reference, pass-by-name
17:09:13 <oerjan> hm, are there any more esoteric ones, i wonder
17:10:17 <GregorR> Pass-by-arbiter. Rather than getting the object, you get an object that can access the original, but you have to access it through annoying proxy-like requests.
17:10:23 <oerjan> if there were, i'd expect INTERCAL to have incorporating some...
17:10:26 <oerjan> *ed
17:10:45 <oerjan> oh right
17:11:17 <ehird> oerjan: yes
17:11:23 <oerjan> hm prototype OO falls under that, doesn't it
17:11:37 <ehird> oerjan: call by copy-restore
17:11:40 <ehird> call by sharing
17:11:44 <ehird> call by need
17:11:48 <ehird> call by macro expansion
17:11:50 <ehird> call by future
17:12:10 <GregorR> call-by-copy-restore ought to be functionally indistinguishable from pass-by-reference
17:12:19 <oerjan> oh right, call by need i should have remembered
17:12:25 <ehird> http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_copy-restore
17:12:38 <oerjan> GregorR: not with concurrent programming
17:12:43 <GregorR> Ah yse.
17:12:44 <GregorR> *yes
17:13:08 <GregorR> call-by-macro-expansion is effectively call-by-name
17:13:13 <ais523> oerjan: there's the method Feather uses
17:13:18 <oerjan> GregorR: i was going to ask that
17:13:24 <ais523> pass-readonly-by-value-or-reference-it-doesn't-matter
17:13:44 <ais523> and you can retroactively change the value of any object you were passed
17:13:54 <ais523> which causes it to change in the past, thus you get passed the new changed value
17:13:57 <ais523> so the object is always readonly
17:13:58 <ehird> call-by-macro-expansion is not call by name
17:14:04 <oerjan> ais523: well that applies to any pure language too like haskell
17:14:12 <ais523> yes
17:14:12 <ehird> f(x) = x*2
17:14:14 <ehird> f(y-3)
17:14:15 <ehird> and such
17:14:22 <ais523> although haskell doesn't retroactively change function arguments
17:14:26 <ehird> and scoping
17:14:33 <ehird> call-by-macro-expansion can access variables in its expander
17:14:35 <oerjan> or ML, really
17:14:37 <ehird> call-by-name can't
17:15:00 <ehird> ais523: in Haskell, every value is a function returning its value. after the first evaluation, it actually rewrites its own machine code into a trivial return
17:15:02 <ehird> so it's only evaluated once
17:15:31 <oerjan> i would be surprised if ais523 didn't already know that
17:15:37 <ais523> umm... that's in a particular implementation of Haskell, you mean
17:15:44 <ais523> nothing about the language suggests machine code is involved
17:15:46 <ehird> ais523: it's the standard way
17:15:56 <ais523> well, yes, it's sensible
17:15:57 <ehird> oerjan: he knows haskell, but doesn't seem to know much about its implementation
17:16:00 <ais523> that doesn't make it the only way, though
17:16:04 <ehird> of course
17:16:06 <ais523> ehird: more I don't care much about its implementation
17:16:10 <oerjan> well yeah, in _theory_ haskell can be faithfully implemented with call-by-name instead of need, i think
17:16:10 <ehird> it's just the fun, esoteric, efficient way
17:16:12 <ais523> because that doesn't affect use of the language
17:16:14 <oerjan> it's just insane
17:16:19 <ehird> oerjan: it just specifies "non-strict"
17:16:21 <ais523> and I wouldn't call it esoteric
17:16:31 <ehird> an auto-memoizing, auto-parallel call-by-need haskell would be valid
17:16:39 <ehird> and work apart from things like unsafePerformIO
17:16:42 <ehird> well, it'd work, just go haywire
17:17:07 <ais523> unsafePerformIO breaks the semantics of Haskell
17:17:14 <ais523> the 'unsafe' is there for a reason...
17:17:21 <ehird> of course
17:17:25 <ehird> unsafeCoerce is funner, though
17:17:33 <ais523> just like looking at the code of a function in Underlambda breaks its semantics
17:17:46 <ais523> you can do it by printing out a continuation and reading it in as text, but that's unsafeCamelCase
17:17:49 <ehird> in ghc, (unsafeCoerce () :: Double) gives you something like 3.2752
17:17:53 <ehird> instead of segfaulting
17:17:56 <ais523> what does unsafeCoerce do?
17:18:03 <ehird> ais523: unsafeCoerce :: a -> b
17:18:12 <ehird> <ais523> oh dear...
17:18:22 <ais523> I can guess
17:18:29 <ais523> it reminds me rather of the _cast operators in C++
17:18:37 <ehird> except more dangerous
17:18:43 <ais523> except those would crash if you tried to do an impossible coercion, even dynamic_cast<>
17:18:55 <ais523> and crash with an exception rather than segfault
17:18:55 <ehird> oh, it lets you segfault in haskell
17:19:04 <ehird> unsafeCoerce 3 :: Either () ()
17:19:06 <ehird> prints out
17:19:09 <ais523> also, how does unsafeCoerce figure out what types its arguments are
17:19:10 <ehird> Left <hang...> <segfault>
17:19:15 <ehird> ais523: umm, it doesn't
17:19:22 <ehird> it just gives back the internal pointer data
17:19:23 <ais523> well, its result
17:19:26 <oerjan> ehird: obviously if you coerce into something with pointers in it
17:19:26 <ehird> ais523: you tag it
17:19:32 <ehird> (unsafeCoerce a :: TypeIWant)
17:19:46 <ehird> just like you can do (2+2 :: Integer)
17:19:56 <ehird> oerjan: yes
17:20:27 <ais523> ehird: what does unsafeCoerce () return
17:20:29 <ais523> if you don't tag it?
17:20:41 <oerjan> ais523: meaningless question i think
17:20:49 <oerjan> it has all types
17:20:52 <ehird> ais523: forall b. b
17:20:52 <ais523> well, it has to either return something or error
17:20:58 <ehird> just like how
17:21:00 <ehird> (2+2)
17:21:01 <ehird> is of type
17:21:02 <ais523> yes, that's its type
17:21:06 <ehird> (Num a) => forall a. a
17:21:10 <ais523> I wonder what value the interp prints, though
17:21:14 <ehird> ais523: it doesn't
17:21:18 <ehird> there's no instance for (Show (forall a. a))
17:21:19 <ais523> makes sense
17:21:21 <ehird> and you can't make one
17:21:25 <ehird> so you get a type error
17:21:30 <ais523> ugh
17:21:36 <ais523> we need an unsafeShow, obviously
17:21:40 <ehird> heh
17:22:07 <oerjan> ais523: that requires the interpreter to have enough information, fortunately it probably has due to gc
17:22:19 <oerjan> to distinguish pointers at least
17:22:27 <ais523> you could just print out a hex representation or something
17:22:39 <ais523> or a series of Haskell commands that create the value that's there
17:22:45 <ehird> there's probably an unsafePointer# :: a -> Integer
17:22:49 <ehird> err, Int
17:23:16 <ais523> Perl has Data::Dumper::Dumper, you apply it to an object and get a series of commands to create that object
17:23:18 <ehird> i want an inefficient haskell impl that has a playground
17:23:22 <ehird> like,
17:23:34 <oerjan> ais523: yes but perl has dynamic types
17:23:51 <ehird> nativeCallCC :: ((a -> a) -> a) -> a
17:23:54 <ais523> Perl's more untyped than dynamically typed
17:23:57 <ehird> and you can do
17:24:16 <ehird> nativeCallCC (\f -> f 3 + 2) --> 3
17:24:31 <oerjan> callCC makes no sense in a non-strict language
17:24:37 <ais523> are you sure you got the type of nativeCallCC right?
17:24:44 <ehird> oerjan: sure it does
17:24:50 <ehird> ais523: err, it should be
17:24:54 <ehird> no
17:24:55 <ehird> that's right
17:25:12 <ais523> let's see... a continuation is of type a -> (), isn't it?
17:25:13 <ehird> oerjan: + forces its arguments (obviously), and when (f 3) is evaluated the current evaluation chain is given up
17:25:16 <ehird> ais523: no
17:25:28 <ehird> [17:25:23] <ehird> :t callCC
17:25:28 <ehird> [17:25:25] <lambdabot> forall a (m :: * -> *) b. (MonadCont m) => ((a -> m b) -> m a) -> m a
17:25:28 <ais523> well, it clearly doesn't return
17:25:40 <ehird> the reason I had a as the result is so you can use it in expressions like that
17:25:50 <GregorR> Let's play Cheskers!
17:25:55 <GregorR> Somebody! :P
17:26:23 <ehird> Me!!
17:26:24 <oerjan> ais523: callCC has the type of pierce's [sp] law in boolean logic
17:26:27 <ais523> ehird: that's like making printf return an integer so you can do printf("Hello, world!\n") + printf("Bye!\n");
17:26:38 <GregorR> ehird: http://codu.org/cheskers/client/cheskers.html# game 18, join as white
17:26:40 <ais523> that's not the reason printf returns an integer, and if it was it would be stupid
17:26:41 <ehird> ais523: it's useful because nativeCallCC (\x -> x 2) should be valid.
17:26:56 <ais523> oerjan: I've never heard of pierce's law
17:26:58 <ehird> GregorR: Loading...
17:27:02 <ehird> Works on Safari?
17:27:12 <GregorR> ehird: Haven't tested it on Safari ... works on Konq :P
17:27:13 <ehird> ais523: peirce's
17:27:21 <ehird> GregorR: Just hangs at "loading".
17:27:26 <ais523> ehird: I don't think it should be valid, it's semantically nonsensical
17:27:33 <ehird> ais523: no it isn't
17:27:51 <ais523> what you've written there would translate into C as int func {return return 2;}
17:27:59 <ehird> ... I don't think you understand call/cc
17:28:05 <ais523> yes I do
17:28:09 <oerjan> ais523: it's one of the laws of boolean logic that aren't in intuitionistic logic
17:28:21 <oerjan> like excluded middle
17:28:43 <ais523> a continuation doesn't return a value, by definition, so it doesn't make sense to make it return a value
17:29:01 <ehird> it returns the Void valu
17:29:01 <ehird> e
17:29:05 <ehird> in haskell, (forall a. a)
17:29:07 <ais523> hmm... actually, giving it type forall b. a -> b would make sense
17:29:10 <ehird> this is standard, e.g.:
17:29:14 <ehird> error :: forall a. String -> a
17:29:27 <ehird> haha wow, in Ruby 1.9 you can use λ to make a proc
17:29:30 <ehird> (that's a unicode lambda)
17:29:38 <ais523> the physical unicode character?
17:29:42 <ais523> they're stealing from INTERCAL!
17:29:46 <ehird> :-D
17:29:49 <oerjan> ais523: oh wait, it's ((P -> Q) -> P) -> P
17:29:57 <ehird> oerjan: hmm, that is the right type
17:29:58 <ehird> sorry, I was wrong
17:29:59 <ais523> (CLC-INTERCAL for ages, and C-INTERCAL for a while, accept ¬ as a synonym for NOT)
17:30:01 <ehird> but ais523 was too
17:30:30 <ais523> hmm... oerjan's type looks righter than ehird's, at least q can be () then
17:30:51 <ehird> yes
17:30:54 <ehird> oerjan's type Is right
17:30:59 <ehird> and it's what haskell's callcc continuation monad uses
17:31:06 <ehird> Valid ruby:
17:31:13 <ehird> add = λ(a,b){ a + b }
17:31:15 <ehird> puts add.(1, 2)
17:31:26 <ais523> ugh, why the dot?
17:31:32 <GregorR> ehird: Doesn't work in midori either, but firebug is being unhelpful.
17:31:38 <ehird> ais523: because in ruby you can call functions without parens
17:31:49 <ehird> and lambdas give you Procs
17:31:56 <ehird> a.(b) is short for a.call(b)
17:32:05 <ehird> also valid ruby:
17:32:08 <ehird> add = λ a, b { a + b }
17:32:11 <ehird> (omitting parnes)
17:32:12 <ehird> *parens
17:32:33 <ais523> in Perl that would be $add=sub{shift+shift}; say &$add(1,2)
17:32:40 <ehird> yep
17:32:44 <ais523> the parens are optional, &$add 1, 2 would work too
17:32:53 <ais523> also, shift+shift is ridiculous
17:33:03 <ais523> because it isn't defined which order the shifts evaluate in, but it doesn't matter
17:33:15 <ais523> shift-shift might not work because you don't know which shift evaluates first
17:33:32 <ehird> s = λ x { λ y { λ z { x.(z).(y.(z)) } } }
17:33:32 <ehird> k = λ x { λ y { x } }
17:33:32 <ehird> i = λ x { x }
17:33:33 <ais523> $_[0]-$_[1] is the same number of chars and shorter
17:33:43 <ehird> ...
17:33:45 <ehird> the same number of chars
17:33:46 <ehird> and shorter?
17:34:01 <ais523> I meant more correct, not shorter
17:34:06 <ehird> ah
17:35:27 <GregorR> ehird: Aha, fixed. Will push in a sec.
17:35:33 <ehird> yay
17:36:09 <GregorR> OK, pushed.
17:36:16 <ehird> ais523:
17:36:16 <ehird> c = 2; -> ;c { c = 1 }.call; c # => 2
17:36:20 <ehird> MWAHAHAHAHAHAHAHA
17:36:35 <GregorR> The problem is I was checking whether firebug was enabled so I could use its console, but my check didn't work on Safari, so thought it was always enabled.
17:36:51 <ehird> GregorR: link
17:37:02 <GregorR> ehird: http://codu.org/cheskers/client/cheskers.html# , join game 18 as white
17:37:12 <ais523> GregorR: did you write cheskers?
17:37:18 <ehird> Loading...
17:37:19 <ehird> Loading...
17:37:19 <ehird> Loading...
17:37:39 <GregorR> ais523: Half.
17:37:42 <GregorR> ehird: WTFBBQ
17:38:14 <ais523> well, I joined 18 and it seems to work for me
17:38:30 <GregorR> ehird: Works on Midori :P
17:38:44 <ais523> I take it that the checkers move as in checkers and the chess pieces as in chess/
17:38:49 <GregorR> ais523: Yes.
17:38:49 <ais523> what's the win condition? checkmate?
17:38:52 <GregorR> ais523: Yes.
17:38:53 <oerjan> <ehird> All based on the C we know and love!
17:38:54 <ehird> you're all mac hating blubberheads. :|
17:39:00 <oerjan> not objective C?
17:39:01 <GregorR> ais523: Wanna play? :P
17:39:02 <ais523> GregorR: anyway, play a move
17:39:18 <ehird> >:(
17:39:20 <ehird> I WANNA PLAY :|
17:39:29 <ais523> GregorR: I am playing
17:39:40 <GregorR> ais523: So am I, it's your turn ;)
17:39:46 <GregorR> ais523: Whoops, spoke too late.
17:39:50 <ais523> no it isn't ;)
17:40:03 <ais523> are captures compulsory?
17:40:06 <ais523> for the checkers?
17:40:09 <GregorR> ais523: No. Nor is multi-jumping.
17:40:17 <ehird> GAH I'LL DOWNLOAD FIREFOX.
17:40:18 <GregorR> ais523: They're slightly more like pawns than checkers in that sense.
17:40:24 <ehird> EVEN THOUGH FIREFOX IS _AWFUL_.
17:40:24 <GregorR> ehird: I want you to play! But I can't test Safari :P
17:40:35 <GregorR> No wait, yes I can, I have a mac laptop :P
17:40:44 <ehird> but you HATE ME so you won't :P
17:40:50 <ais523> safari is one of the worst and buggiest mainstream browsers on Windows, but apparently it works a lot better on Mac
17:41:29 <ehird> Apple suck at windows software
17:41:34 <ehird> case in point: quicktime
17:41:40 <ehird> quicktime is the worst, most annoying piece of crap on windows
17:41:46 <ehird> on mac, it's the best way to play non-music media
17:41:53 <ais523> was that apple's originally?
17:41:55 * ehird downloads firefox
17:41:59 <ais523> or did they buy it off someone else?
17:42:00 <ehird> ais523: QuickTime is Apple's yes
17:42:14 <ehird> On OS X it's actually the core media framework
17:42:38 <ais523> strange, it won't let me move my king to f1 or g1
17:42:58 <GregorR> Uhhhh, it should ...
17:43:03 <ehird> GregorR: OK, link
17:43:15 <ais523> oh, I see what happened
17:43:18 <ais523> you put yourself in check last move
17:43:21 <ais523> and I think that confused it
17:43:22 * ehird pukes over firefox a bit
17:43:27 <GregorR> ehird: http://codu.org/cheskers/client/cheskers.html# , but now I'm in the middle of a game with ais523 :P
17:43:29 <ais523> you're still in check, by the way
17:43:33 <GregorR> ais523: How so?
17:43:33 <ais523> I should have just taken your king
17:43:38 <GregorR> Oh looka that :P
17:43:44 <GregorR> Shouldn't have moved THAT checker :P
17:43:48 <ais523> your king and queen are the wrong way round
17:44:06 <GregorR> ais523: No, they're not, that's a change we made for cheskers.
17:44:12 <GregorR> ais523: It's utterly unfair if they're not swapped.
17:44:12 <ais523> which is what makes that trick possible
17:44:17 <ais523> and yes
17:44:30 <ehird> end your stupid game with ais523
17:44:31 <ehird> I'M COMIN' IN
17:44:34 <ehird> what number
17:44:35 <ehird> :D
17:45:19 <ais523> you should make moving into check impossible, it screws things up
17:45:33 <ais523> or do it as in Shogi, where if your king is captured you lose even if you weren't checkmated
17:46:13 <ais523> the chess pieces seem a lot more useful than the checkers, but I suppose that isn't surprising
17:46:53 <GregorR> ais523: The checkers serve more to get in the way, but that doesn't make them not part of the strategy.
17:47:17 <ais523> well, obviously, the relatively useless pieces are the same for both players
17:47:27 <ehird> GregorR: what numberrrrr
17:47:47 <GregorR> ehird: We're playing 18, but don't go taking that over :P
17:47:56 <GregorR> ehird: I'll start a new one
17:48:01 <ehird> make it 3-player
17:48:02 <ehird> :P
17:48:12 <GregorR> ehird: http://codu.org/cheskers/client/cheskers.html# join 19 as white
17:48:26 <GregorR> ehird: Actually the server should more-or-less support that, there are just no rulesets in the DB defined for three players.
17:48:44 <ehird> okay, so what're the rules :x
17:48:50 <ehird> joined btw
17:49:07 <ais523> ehird: the same as in chess and in checkers (draughts) combined
17:49:19 <ehird> yikes. i'm crap at both :-D
17:49:27 <GregorR> ais523: I find it somehow unsurprising that you're better than me at chess :P
17:49:30 <GregorR> ehird: That's fine, I suck too :P
17:49:39 <GregorR> ehird: Your turn.
17:49:43 <ehird> I'm so crap that I can barely remember how chess works :-D
17:49:48 <ehird> Err, let's move a checker.
17:50:09 <ehird> can the two piece types interact?
17:50:35 <ais523> yes, checkers can take chess pieces by jumping them, chess pieces can take checkers by collision
17:50:38 <ais523> just as in the actual games
17:50:47 <ehird> OK
17:51:40 <ais523> and I used to be captain of the house chess team, although I haven't played since school
17:51:52 <GregorR> ais523: That was a lot of work to decide that move :P
17:52:00 <ais523> GregorR: I had it planned
17:52:06 <GregorR> ehird: Sorry, go ahead :P
17:52:11 <ais523> taking the bishop was relatively obvious, after all
17:52:39 <ehird> I've played chess about thrice in my live
17:52:47 <GregorR> ais523: Enjoy my queen :P
17:53:32 <ehird> http://homepage.mac.com/avidrissman/extimgs/st.png <- Oh heck yes.
17:53:51 <ais523> GregorR: it's not as if I didn't set a trap for her two moves ago
17:54:02 <ais523> but you got a bishop and rook in exchange, that's normally about fair compensation
17:54:35 <GregorR> ais523: In case you haven't noticed, I don't HAVE your rook :P
17:55:02 <ais523> oh, two bishops
17:55:08 <ais523> not a bishop and rook, you misplayed that slightly
17:55:24 <ais523> you could have used the king to defend the queen, and got the rook that way
17:56:13 <GregorR> ehird: Sorry our game is going slow, but ais523 is kickin' my arse :P
17:57:15 <GregorR> ehird: Thanks for the queen :P
17:57:25 <GregorR> ehird: Uh, you just moved into check :P
17:57:32 <ais523> is there any way to watch games in progress?
17:57:32 <ehird> :D
17:57:33 <GregorR> ehird: I WIN
17:57:42 <ehird> I AM STILL MOVING
17:57:42 <ehird> :D
17:57:54 <GregorR> ais523: You can join any game as any player and just don't play. We have an observer player built in, but I forgot to add it to the UI X-D
17:58:07 -!- Hiato has joined.
17:58:36 <ais523> GregorR: does it detect checkmate/
17:58:42 <ais523> it should at least ban moves into check
17:58:48 <ehird> http://www.reddit.com/r/programming/comments/7xe5p/give_it_up_reddit_python_c_print_njoin_joinn_for/c07o0ty <- first reply is golden
17:58:50 <GregorR> ais523: It should, but it doesn't :P
18:00:21 <ais523> also, what happens when you crown a checker?
18:00:44 <GregorR> ais523: It turns into a king.
18:00:48 <ais523> ehird: a BF program that does something ekse
18:00:48 <GregorR> ais523: HAW HAW JUST KIDDING
18:00:57 <GregorR> ais523: It turns into what we call an "ace", which is just like a checker king
18:00:57 <ais523> GregorR: a checkers king, or a chess king?
18:01:01 <ais523> ah, ok
18:01:18 <ehird> <ais523> ehird: a BF program that does something ekse
18:01:18 <ehird> what
18:01:29 <GregorR> ais523: It'd be funny though if it turned into a chess king ;)
18:01:42 <ais523> the BF program doesn't do the same as the Python program
18:02:21 <ais523> I can't tell from my head what it does print, but it prints lots of different letters, not just * and space
18:03:21 <ehird> ais523: ... "first reply is golden"
18:03:27 <ehird> was the keyword in that link
18:03:32 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server").
18:03:46 * GregorR is struggling for good moves :(
18:04:35 <ais523> ehird: it's even funnier in that it's correct, though
18:04:39 <ais523> it would be funny even if it was wrong
18:04:49 <ehird> yes
18:04:55 <ehird> you seemed to be looking at just the first post,t hough
18:04:58 <ais523> GregorR: you only /have/ one legal move here...
18:05:08 <ais523> ehird: it's more fun when trying to work out if the post is correct
18:05:16 <ehird> yeah I thought it was a joke at first
18:05:48 <GregorR> ais523: That doesn't mean I can't cry myself to sleep looking at the board :P
18:06:09 <ais523> looks like it's going to be a long endgame which I win convincingly, based on that
18:08:37 <ais523> GregorR: check, just to make sure you notice
18:09:10 <ais523> and mate
18:09:31 <GregorR> WITH MY DYING BREATH I KILL YOUR QUEEN
18:09:56 <GregorR> RAAAA ANARCHIST CHESS
18:10:11 <ais523> do I really have to spend the time to take all your other pieces too/
18:10:15 <ais523> your king is already dead...
18:10:29 <GregorR> No :P
18:10:33 <oerjan> it's not dead, it's just resting...
18:10:44 <ais523> captured, to be precise
18:10:47 <ais523> in my castle
18:10:57 <ehird> I want anarchist nomic
18:11:10 <ais523> what, nomic without rules?
18:11:15 <ais523> isn't that an oxymoron?
18:12:05 <oerjan> oxymoron: someone so stupid they don't deserve to breathe air
18:12:38 <ehird> ais523: :D
18:14:14 <GregorR> ais523: So anyway, aside from how much I suck at chess, don't you think that cheskers adds an interesting dynamic to the game? (Since some of your pieces which would otherwise take a few moves to release are free, but because they start out free they're quite valuable and so bringing them out too early is unwise)
18:14:57 <ais523> it's somewhere between chess and shogi in terms of playstyle
18:15:13 <ais523> it basically forces open games, as it's impossible to clog the board up with pawns
18:15:19 <GregorR> Yuh
18:15:19 <ais523> and it's harder to defend things
18:17:50 <GregorR> Not that you needed to defend anything >_<
18:18:07 <ais523> that's because you weren't attacking
18:18:20 <GregorR> That's because I was spending half the game defending :P
18:18:34 <GregorR> s/half/all/
18:18:48 <ais523> does black play first?
18:18:53 <GregorR> Yes.
18:19:09 <ehird> Whoa, Leopard's speech synthesis is creepily realistic.
18:19:47 <GregorR> Oh, that's not right :P
18:19:51 <GregorR> White is supposed to play first :P
18:20:04 * ehird uploads example
18:20:40 <GregorR> ais523: I don't know what you're talking about, white plays first and that's how it's implemented! *cough*
18:21:15 -!- FireFly has joined.
18:21:38 <ais523> hi FireFly
18:21:44 <FireFly> Hello
18:22:03 <ais523> hmm... what esolang projects are people working on at the moment?
18:22:11 <oerjan> GregorR: sure you're name isn't really George L? :D
18:22:13 <oerjan> *your
18:22:18 <ais523> I'm not, really, I'm busy with other things (although continuing to think about Underlambda)
18:22:34 <FireFly> I'm finding Sir. Cut interesting
18:22:35 <GregorR> oerjan: ........................................... joke: FAILED
18:22:49 <oerjan> DID NOT
18:22:59 <GregorR> oerjan: WELL I DIDN'T GET IT
18:23:05 <ais523> also, trying to work out if an infinite-memory version of Advance Wars would be Turing-complete with the default AI
18:23:25 <FireFly> ...the game?
18:23:28 <ais523> yes
18:23:32 <oerjan> GregorR: i guess you don't read Darths & Droids, or anything else Star Wars...
18:23:32 <ais523> I managed to create a loop
18:23:39 <FireFly> Ooh
18:23:41 <FireFly> Tell me
18:23:43 <ais523> with a red infantry and a blue infantry who continuously walked round in circles
18:23:51 <FireFly> Sounds interesting
18:23:52 <ehird> Creepy OS X text to speech: http://filebin.ca/zfgscj/speech.ogg
18:24:17 <ais523> if you go city plains river river plains plains river river city plains river river plains plains river river
18:24:28 <ehird> CLICK AT YOUR OWN RISK
18:24:28 <ais523> bent round in a loop so the last river connects to the first city
18:24:33 <ais523> and start an infantry on each city
18:24:52 <ais523> then the two infantry will both go round in the same direction, never encountering each other
18:24:57 <ais523> at least with the "defensive" AI
18:25:04 <FireFly> Hmm
18:25:31 <ais523> the reason being that going forwards, the infantry goes city / plains river / river plains / plains river / river city
18:25:34 <ais523> and repeats from there
18:25:36 * oerjan almost forgets swatting FireFly -----###
18:25:44 <FireFly> Why? :<
18:25:59 <ais523> going backwards it would be city / river / river plains / plains river / river plains / city
18:26:02 <ais523> which is one turn longer
18:26:08 <FireFly> Ah
18:26:10 <ais523> and the AI always chooses the shortest route
18:26:11 <FireFly> Makes sense
18:26:13 <ehird> FireFly: you're a firefly
18:26:15 <oerjan> oh, i was just not paying attention
18:26:17 <ais523> so both infantry go round in the same direction
18:26:17 <ehird> he has a fly swatter
18:26:28 * FireFly dies
18:26:44 <ais523> and they want to keep going round so as to capture each other's cities, which exchange ownership every 5 turns
18:26:58 <FireFly> That's really interesting
18:27:10 <ais523> I think this principle can be extended with 3 players to make increment and decrement operations on two counters
18:27:17 <ais523> where the counters are the amount of money each team has
18:27:29 <ais523> the problem is getting that to affect control flow
18:27:47 <ehird> Does nobody find it as creepy as I?
18:28:19 <ais523> well, infantry walking round and round in little squares in a post-apocalyptic wasteland forever is pretty creepy
18:28:39 <ehird> Not that
18:28:40 <ehird> :P
18:29:36 <ehird> ais523: This: http://filebin.ca/zfgscj/speech.ogg
18:30:03 <ais523> ehird: this isn't my computer, and it doesn't have speakers or ogg codecs
18:30:08 <ais523> what's the chance I'll be able to play it?
18:30:12 <ehird> ah.
18:30:31 <FireFly> Not over 9000%
18:30:51 <ais523> where does the over 9000 meme come from?
18:30:53 -!- KingOfKarlsruhe has quit (Remote closed the connection).
18:30:58 <ehird> ais523: a youtube video
18:31:07 <ehird> using a few seconds of the show Dragonball Z
18:31:23 <ais523> oh, I've heard of Dragonball Z
18:31:29 <ais523> but IIRC, 9000 is rather low in the context of that show
18:31:35 <ehird> ais523: Here's a text transcript: http://qntm.org/?9000
18:31:42 <ais523> what is qntm.org?
18:31:48 <ais523> this terminal has internet filters
18:32:14 <ehird> qntm.org is the website of Sam Hughes.
18:32:26 <ehird> Is it blocked?
18:32:29 <ais523> never heard of him, I don't think
18:32:36 <ais523> and no idea, I'd have to click on it to find out
18:32:41 <ehird> It's just text.
18:32:43 <ais523> and visiting a blocked website gets you in trouble
18:32:44 <pikhq> Sam Hughes is a brilliant sci-fi author.
18:32:48 <ais523> some really weird things are blocked here, though
18:32:51 <ais523> such as the X11 licence
18:32:55 <ehird> ais523: How to Destroy the Earth - he wrote that.
18:33:01 <ais523> well, the licence isn't weird, but the fact it's blocked is
18:33:07 <FireFly> Btw, the DS version of advance wars?
18:33:08 <ehird> And the Earth Destruction Advisory Board.
18:33:13 <ehird> And the Fine Structure series. And ...
18:33:18 <ais523> FireFly: there are two DS versions of advance wars
18:33:28 <FireFly> Ah.. Well, theres also a GBA version
18:33:32 <ais523> I was trying on Dark Conflict, which is probably better for esoprogramming because of the temporary ports
18:33:35 <FireFly> Or, at least one
18:33:39 <FireFly> Hm
18:33:40 <ais523> and there are also two GBA versions, so oyu fail in that respect too
18:33:40 <FireFly> Brb google
18:33:46 <FireFly> :<
18:33:52 <ais523> "Brb google"?
18:34:08 <FireFly> Nvm
18:34:25 <oerjan> Fnd. Grb lk lpsfn
18:36:08 <ehird> Ugh.
18:36:10 <ehird> ferret.c: In function ‘rs2s’:
18:36:10 <ehird> ferret.c:165: error: ‘struct RString’ has no member named ‘ptr’
18:38:26 <oerjan> well let's hope it's easy to ferret out that bug
18:38:43 * ehird kills oerjan with a fork
18:38:43 <ais523> ferret.c?
18:39:02 <ehird> ais523: ferret = ruby bindings to indexer thingy
18:39:03 * ais523 vaguely mumbles something about cruelty to forks
18:39:14 * oerjan realizes he deserves it, and croaks
18:39:22 <ehird> hmm not binding, native, okay
18:39:29 * ehird revives oerjan because puns are fun
18:44:30 <oerjan> Brains...
18:55:32 * oerjan realizes ehird is a master strategist
18:55:44 <oerjan> He is capable of many-pronged attacks...
18:55:58 <ais523> ok, that's a good pun
18:57:46 <ehird> XD
18:59:15 -!- kar8nga has joined.
19:02:27 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client").
19:05:48 <oerjan> http://welldonefillet.blogspot.com/2009/01/stabbing-fork-what-is-it-good-for.html
19:16:19 -!- MigoMipo has joined.
19:30:52 <ehird> An irritating algorithm to code: Find the rightmost, deepest application in an SKI application.
19:33:14 -!- FireFly has quit (Excess Flood).
19:35:34 -!- Hiato has quit ("Leaving.").
19:36:04 <ehird> This, by the way, lets you lazily evaluate SKI and get a non-blowing-up SII(SII):
19:36:05 <ehird> ```sii``sii
19:36:05 <ehird> ``i``sii`i``sii
19:36:05 <ehird> ``i``sii``sii
19:36:05 <ehird> ```sii``sii
19:36:24 <GregorR> "Non-blowing-up" being the technical term of course.
19:36:28 <ehird> Since you evaluate the rightmost, deepest expression that can be reduced (`sx can't be reduced, ```sxyz can be)
19:36:30 <ehird> GregorR: Yep.
19:37:01 -!- Sgeo has joined.
19:37:15 <ehird> oerjan: say, is that reduction lazy?
19:37:17 <ehird> I think so
19:37:46 -!- FireFly has joined.
19:38:04 <GregorR> Heh, here's a new chess variant: Stupidly-friendly chess. You're never allowed to put a king in check :P
19:38:07 <oerjan> um lazy implies leftmost...
19:38:16 <ehird> oerjan: sure?
19:38:35 <Deewiant> GregorR: winner decided by arbitration?
19:38:54 <oerjan> pretty sure
19:39:09 <ehird> oerjan: it would check the parent expression
19:39:23 <ehird> so in ``kk```sii``sii, it wouldn't loop
19:39:34 <GregorR> Deewiant: Eventually somebody has to give up from being bored of the sixteen hour game they've just been playing :P
19:39:41 <ehird> because while ```sii``sii is the rightmost, deepest expression you can evaluate, its parent is a `kx
19:39:44 <Deewiant> GregorR: a tie will happen eventually
19:39:48 <ehird> so it skips straight to the ``kkx
19:39:58 <GregorR> Deewiant: Well, it's assumed you're trying to avoid stalemate :P
19:40:07 <Deewiant> Ah, well that's crap. :-P
19:40:14 <GregorR> NORLY!?!
19:40:15 <GregorR> :P
19:40:39 <oerjan> ehird: well then you aren't really doing rightmost
19:40:42 <ehird> Chesssss: Stupidity-friendly chess but whoever makes the move leading to a tie wins.
19:40:44 <ehird> oerjan: true
19:40:53 <Deewiant> Something like that might make sense if the winner is decided by strength of pieces remaining (what's the term) when a tie happens
19:40:56 <ehird> it's rightmost-deepest-if-would-be-evaluated-anyway
19:41:04 <ehird> still lazy
19:41:14 <GregorR> There's a precursor to chess in which if you get it into a stalemate you win.
19:41:20 <GregorR> So that's not without precedent.
19:41:26 <Deewiant> Yep.
19:41:54 <ehird> oerjan: in ````skkkk```sii``sii, it'd evaluate the func to find out if it's k first, ofc
19:41:55 <ehird> (and it is)
19:42:45 <oerjan> ehird: you are ending up with leftmost, i say
19:43:01 <ehird> oerjan: no, because:
19:43:01 <ehird> [19:36:04] <ehird> ```sii``sii
19:43:02 <ehird> [19:36:04] <ehird> ``i``sii`i``sii
19:43:02 <ehird> [19:36:04] <ehird> ``i``sii``sii
19:43:03 <ehird> [19:36:04] <ehird> ```sii``sii
19:43:07 <ehird> (evaluated in my head according to these rules)
19:44:45 <oerjan> if you replace the first ``sii with something else that turns into `kk but only _after_ applying it, but still without using its argument...
19:44:58 <ehird> oerjan: hm?
19:45:11 <ehird> oerjan: it checks the result of the evaluation but does not replac
19:45:20 <ehird> so it sees that `i``sii = ``sii, but leaves it as is in the expression
19:45:22 <ehird> so it can do rightmost
19:45:50 <oerjan> bah
19:46:04 <ehird> oerjan: what
19:46:21 <oerjan> essentially you evaluate leftmost until you find that something more rightward happens to be evaluated, then you backtrack
19:46:33 <ehird> pretty much
19:46:46 <ehird> still lazy, as far as I can tell, and evaluates ```sii``sii without growing
19:47:13 <oerjan> hm
19:47:27 <oerjan> you know call by _need_ is what you really want, i think
19:47:44 <ehird> You can't do that in ski
19:47:48 <ehird> since there are no bindings
19:47:54 <oerjan> i.e. the expansion happens only because evaluating one copy doesn't evaluate the others
19:47:56 <ehird> call by need = call by name, without bindings
19:49:19 <oerjan> you can do graph sharing
19:49:25 <ehird> oerjan: vut
19:49:42 <ehird> like, search the tree for all occurances of the same expr
19:49:42 <ehird> ?
19:49:46 <oerjan> i.e. when doing ```sxyz -> ``xz`yz , the z should be _shared_
19:49:57 <ehird> ah
19:50:07 <oerjan> in fact that's enough since that's the only ski rule that duplicates things
19:50:08 <ehird> oerjan: but ``xz`yz isn't reduced immediately
19:50:21 <ehird> I'm doing step-until-x-==-eval(x)
19:50:31 <ehird> so it'll just return App (App x z) (App y z)
19:50:39 <ehird> where z = App S K or whatever
19:51:46 <ehird> oerjan: so how do you do it then?
19:52:07 <oerjan> well haskell datatypes don't usually allow sharing detection
19:52:11 <ehird> yeah
19:52:30 <oerjan> you need some id or monadic references for that
19:52:39 <ehird> that's what I'm avoiding :-(
19:53:20 <oerjan> you could also use a tie-the-knot trick, where you bundle the evaluation of z with z
19:53:27 <ehird> "bundle"?
19:54:09 <bsmntbombdood> does haskell do multiplication lazily?
19:54:14 <oerjan> bsmntbombdood: no
19:54:21 <bsmntbombdood> what's 0 * _|_
19:54:28 <oerjan> unless you define a numeric datatype where it does
19:54:33 <oerjan> it's _|_
19:54:55 <oerjan> in the standard datatypes, arithmetic is strict in all arguments
19:58:02 <oerjan> ehird: i'm not sure if it would be useful to you, essentially it would implement ski laziness with haskell laziness, but maybe add some symbolic tags or something
19:58:02 <Deewiant> for reasons of SPEED
20:11:45 * ehird installs gtk2hs to install yi
20:11:48 <ehird> to edit this ski thingymabob
20:32:19 <GregorR> Cheskers now has support for chess (minus proper promotions (always promotes to queen) and en passant)
20:34:25 <oerjan> also castling?
20:35:33 <oklopol> castling is a rule that's actually used, you can't leave *that* out.
20:36:23 <oerjan> it strictly requires keeping some extra state, though
20:36:36 <GregorR> Whoops, forgot about castling entirely X-D
20:37:03 <oerjan> as does en passant
20:37:16 <GregorR> En passant requires less.
20:37:46 <oerjan> yeah
20:39:17 -!- MigoMipo has left (?).
20:52:53 -!- FireFly has quit ("Later").
20:55:50 -!- ehird has changed nick to ehird|away.
20:57:41 -!- FireFly has joined.
21:03:00 -!- ehird|away has changed nick to ehird.
21:11:08 -!- Judofyr has quit ("sleeping").
21:34:19 <GregorR> Implemented castling :)
21:34:43 <SimonRC> ooh, what is this?
21:34:48 <SimonRC> BFchess?
21:35:00 <GregorR> lol, no, it actually has no relevance to this channel whatsoever :P
21:35:08 <oerjan> KICKBAN
21:35:27 <GregorR> A friend of mine and I wrote a game server to play a mix of chess and checkers (cheskers), and now I'm generalizing it to play most any game on a vaguely chess-like board.
21:35:38 <GregorR> (As well as properly supporting all the basic chess rules :P )
21:36:41 <SimonRC> mixed how?
21:37:11 <GregorR> You start with a row of chess pieces and two rows of checker pieces.
21:37:44 <SimonRC> ok...
21:38:32 -!- MigoMipo has joined.
21:38:41 <GregorR> That's it :P
21:38:48 <GregorR> Beyond that it's just standard chess and checkers rules.
21:38:59 <GregorR> But it changes the dynamics of the game a lot.
21:39:04 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server").
21:39:43 <SimonRC> I imagine one ends up with a useful bishop and a crap bishop
21:39:55 <GregorR> Indeed.
21:40:10 <GregorR> We call them the "free" bishop and the "pinned" bishop.
21:40:19 <oklopol> ö
21:40:21 <GregorR> Same is true (to a much lesser degree) of the knights.
21:40:24 <oerjan> r
21:40:44 <GregorR> Ü
21:41:01 <oerjan> m
21:42:45 -!- ehird has changed nick to ehird|away.
21:45:10 <ehird|away> hi
21:45:15 -!- ehird|away has changed nick to ehird.
21:45:19 <oerjan> you don't exist
21:45:38 <oerjan> you're an anti-entity
21:45:40 <ehird> yep
21:45:46 <oerjan> no, not you
21:45:50 <GregorR> Yeah, well you're an auntie-entity
21:45:56 <oerjan> the other guy, who said hi
21:46:12 <oerjan> your evil remote twin
21:47:26 <oerjan> auntities and other uncleanness
21:47:36 <ehird> aunt titties
21:48:29 <oerjan> whatever turns you on
21:48:44 <GregorR> ... *stab*
21:49:03 <oerjan> for which one?
21:49:12 <GregorR> ehird.
21:49:24 <oerjan> :´(
21:49:42 * ehird is dead. :-(
21:49:50 <GregorR> oerjan: What, you think I'm stabbing with sunshine and rainbows? :P
21:50:08 <oerjan> hm does that mean your auntity now exists?
21:54:44 <GregorR> There's a little bit of aunt titty in all of us.
21:59:15 <SimonRC> uuuuhhhhh, ooook
21:59:38 <ehird> hi SimonRC
22:05:17 -!- Corun has joined.
22:19:22 -!- kar8nga has quit (Read error: 145 (Connection timed out)).
22:41:25 -!- psygnisfive has quit (Remote closed the connection).
22:55:41 * SimonRC goes
23:03:24 -!- Deewiant has quit (Read error: 60 (Operation timed out)).
23:06:45 -!- Deewiant has joined.
23:09:40 -!- oerjan has quit ("Argh").
23:13:16 -!- oerjan has joined.
23:24:00 -!- jix has joined.
23:30:52 -!- psygnisfive has joined.
23:31:03 <psygnisfive> ehird da
23:31:27 <psygnisfive> i showed the Life sierpinski gasket to my philosophy-and-computers prof and his response was "you gotta be frikkin kidding me"
23:32:56 <ehird> :DD
23:33:23 <pikhq> :)
23:36:30 <pikhq> ... Sierpinski gasket in life?
23:36:34 <GregorR> ??
23:36:40 <psygnisfive> yes?
23:36:42 * pikhq want see
23:37:01 <psygnisfive> i showed it off the other day after ehird's doubly mirrored gasket :|
23:37:13 <psygnisfive> wellnowwhat.net/transfers/Golly1.jpg
23:37:15 <psygnisfive> wellnowwhat.net/transfers/Golly2.jpg
23:37:20 <psygnisfive> oh whoops
23:37:32 <psygnisfive> wellnowwhat.net/transfers/Golly1.png
23:37:34 <psygnisfive> wellnowwhat.net/transfers/Golly2.png
23:38:27 <ehird> pikhq: just draw a long perfectly straight line
23:38:33 <ehird> voila: sierpinski.
23:38:44 <pikhq> Well. Damn.
23:38:46 <psygnisfive> yeah
23:38:48 <ehird> it has to be one of the top coincidences of the century.
23:38:50 <psygnisfive> pretty crazy
23:39:00 <ehird> i'm sure there's a deep mathematical reason for it
23:39:02 <ehird> it's just amazing
23:39:05 <psygnisfive> oh there is
23:39:08 <GregorR> More accurately, it's not a coincidence at all, as <ehird> i'm sure there's a deep mathematical reason for it
23:39:10 <psygnisfive> its pretty simple when you look up close
23:39:16 <psygnisfive> its amazingly obvious
23:39:20 <ehird> GregorR: it wasn't intended, though
23:39:28 <ehird> to the best of my knowledge
23:39:37 <psygnisfive> the reason is basically this ok
23:39:37 <GregorR> Right, 'struth.
23:39:50 <psygnisfive> the long line spawns two neighboring lines, right
23:39:59 <psygnisfive> because of the rule for cell activation
23:40:00 <ehird> right
23:40:05 <psygnisfive> so you go from ...010...
23:40:10 <psygnisfive> to ...01110...
23:40:27 -!- BeholdMyGlory has quit ("godnatt").
23:40:30 <psygnisfive> this then creates two more neighboring lines, while killing off those original three due to crowding
23:40:35 <ehird> yeah
23:40:35 <psygnisfive> so you get ...0100010...
23:40:48 <psygnisfive> and now you have the same thing again
23:40:50 <ehird> yep
23:40:51 <psygnisfive> only doubled
23:40:56 <psygnisfive> and separated by 3 0's
23:41:00 <ehird> and the debris it generates = sierpinski
23:41:12 <psygnisfive> this keeps happening, separating out the long single lines, doubling each time
23:41:44 <psygnisfive> so that as they build outwards, they naturally form sierpinski's triangle by just .. spreading and doubling.
23:44:23 -!- jix has quit ("activating sleep mode ......... Done").
23:44:41 <oerjan> hm this explains why it forms initially on the border of the shrinking lines, but not why it doesn't decay more afterwards (although the picture shows some decay)
23:44:51 -!- comex has quit ("Caught sigterm, terminating...").
23:45:02 <ehird> that's not decay
23:45:04 <ehird> it smoothes out
23:45:08 <psygnisfive> it doesnt decay afterwards because it just ends up producing oscillators
23:45:44 <oerjan> so somewhat accidental perhaps
23:45:59 <oerjan> or maybe symmetry comes into it
23:47:58 -!- comex has joined.
23:48:16 <psygnisfive> oh dude
23:48:19 <psygnisfive> Golly has the metapixel
23:48:39 <oerjan> huh?
23:48:45 <psygnisfive> it has a number of them it seems
23:48:54 <psygnisfive> the self-simulation of Life
23:49:38 <oerjan> wait golly = GoL ?
23:49:48 <psygnisfive> no Golly is an app for running GoL
23:49:58 <oerjan> ah
←2009-02-14 2009-02-15 2009-02-16→ ↑2009 ↑all