00:04:04 -!- lambdabot has quit (Ping timeout: 250 seconds). 00:04:07 -!- coppro has quit (Ping timeout: 252 seconds). 00:04:18 -!- coppro has joined. 00:07:39 -!- SimonRC has quit (Remote host closed the connection). 00:07:40 -!- BeholdMyGlory has quit (Remote host closed the connection). 00:07:47 -!- SimonRC has joined. 00:16:31 -!- augur has quit (Remote host closed the connection). 00:21:47 -!- azaq23 has quit (Ping timeout: 276 seconds). 00:22:00 -!- azaq23 has joined. 00:28:40 Gregor, :(:( 00:36:34 I feel guilty for not donating now 00:38:39 -!- javawizard has joined. 00:38:45 -!- jcp has quit (Ping timeout: 240 seconds). 00:38:47 -!- EgoBot has quit (Ping timeout: 240 seconds). 00:38:47 -!- javawizard has changed nick to jcp. 00:38:53 -!- Zuu has quit (Ping timeout: 240 seconds). 00:38:54 -!- pingveno has quit (Ping timeout: 240 seconds). 00:38:57 -!- Zuu_ has joined. 00:39:23 -!- EgoBot has joined. 00:40:54 -!- Guest26140 has quit (Quit: /dev/io failed). 00:40:58 -!- pingveno has joined. 00:41:14 -!- variable has joined. 00:42:33 -!- augur has joined. 00:53:33 -!- zzo38 has joined. 00:53:47 Let's 'patamagic. And also 'pataprogramming. 00:54:34 -!- quintopia has quit (Ping timeout: 250 seconds). 00:54:40 -!- quintopia has joined. 00:54:40 -!- quintopia has quit (Changing host). 00:54:40 -!- quintopia has joined. 00:54:43 -!- olsner has quit (Ping timeout: 252 seconds). 00:57:00 -!- olsner has joined. 00:58:41 Hay! I did not receive NickServ and ChanServ notices immediately, it took a few seconds after I joined, and then those notices are on. 00:58:45 -!- Mannerisky has quit (Ping timeout: 252 seconds). 01:01:56 -!- SimonRC has quit (Ping timeout: 250 seconds). 01:12:09 -!- SimonRC has joined. 01:28:04 I added all of the spell/feats in gopher too, now it is not limited to HTTP only. 01:28:13 (You can still access on HTTP as well) 01:31:15 -!- pumpkin has changed nick to hypnotoad. 01:31:23 -!- hypnotoad has changed nick to copumpkin. 01:32:11 Do you like this spell? 01:35:02 Are you sure? 01:38:19 Do you sure? 01:49:10 I want to cast the spell called "Break Into Debugger" (Sor/Wiz 9) 01:49:19 Welp, looks like I'll be taking dlsym@libdl.so as second prize :P 01:50:40 -!- iconmaster has quit (Quit: I wish I had something witty to put here...). 01:50:58 Gregor: Did you lose libc.so so you put libdl.so instead? Or, is something else? 01:51:09 I already had libdl.so 01:51:18 But yes, I will not be getting libc. 01:51:42 OK. 01:52:01 who got libc 01:52:03 Now are you going to sue everyone on this channel because you did not get libc? 02:07:30 -!- zzo38 has quit (Quit: create a file in your home directory called "README"--and have the file contain the words: README: No such file or directory). 02:15:52 -!- oerjan has joined. 02:21:25 why is this not working 02:22:38 yeah `quote is buggy with actual regexes. i've known for a while but i have nowhere near enough understanding of shell escaping to fix it. 02:23:08 (i assume the passing through shell breaks it.) 02:23:48 or i vaguely recall, it may be that test for a number which did something screwy 02:24:20 delving into even more obscure shell details. 02:26:14 in other news, i should learn to read the rest of log before commenting. 02:26:33 (WHAT DO YOU MEAN THAT'S NOT NEWS) 02:27:25 -!- augur has quit (Remote host closed the connection). 02:27:27 -!- azaq23 has quit (Ping timeout: 240 seconds). 02:30:15 -!- azaq23 has joined. 02:34:35 elliott: "borkelde"? 02:34:44 ancient norse goddess of mayhem 02:35:36 Just received IM Spam 02:35:45 It used the praise.hm URL shortener... 02:51:41 Now are you going to sue everyone on this channel because you did not get libc? 02:51:59 no use suing people who are too poor to contribute, is there. 02:52:27 -!- zzo38 has quit (Quit: create a file in your home directory called "README"--and have the file contain the words: README: No such file or directory). 02:52:30 cute. 02:53:14 -!- augur has joined. 02:55:25 -!- augur has quit (*.net *.split). 02:55:28 -!- nooga has quit (*.net *.split). 03:01:05 -!- oerjan has quit (*.net *.split). 03:01:06 -!- variable has quit (*.net *.split). 03:01:08 -!- copumpkin has quit (*.net *.split). 03:01:10 -!- Vorpal has quit (*.net *.split). 03:01:11 -!- Ilari_antrcomp has quit (*.net *.split). 03:01:14 -!- fungot has quit (*.net *.split). 03:01:14 -!- mycroftiv has quit (*.net *.split). 03:04:48 -!- augur has joined. 03:04:51 -!- augur has changed nick to Guest20296. 03:05:07 -!- oerjan has joined. 03:05:07 -!- variable has joined. 03:05:07 -!- copumpkin has joined. 03:05:07 -!- Vorpal has joined. 03:05:07 -!- Ilari_antrcomp has joined. 03:05:07 -!- fungot has joined. 03:05:07 -!- mycroftiv has joined. 03:05:13 -!- Sgeo_ has joined. 03:05:15 -!- nooga has joined. 03:06:37 -!- Sgeo has quit (Ping timeout: 251 seconds). 03:18:30 Gregor: halp 03:18:42 ? 03:19:18 how do i break the select method form all input objects in the DOM on all webpages via greasemonkey? 03:19:37 HMTLInputElement.prototype.select = empty function doesn't work 03:19:46 i think because it gets run after the page is loaded maybe? 03:20:15 do i need to loop over dom and break them all individually? 03:20:51 You're only trying to break it from JS' perspective, right? 03:20:57 yes 03:21:26 i don't want a page to be able to do auto-highlighting on mouseovers and such 03:21:40 In principle that should work. But it could just be unconfigurable. Have you checked if HTMLInputElement.prototype.select actually changed? 03:22:18 ah, no...interwebs tell me that works though 03:22:23 usually 03:22:55 is there an about: page for the dom inspector? 03:23:45 -!- Sgeo__ has joined. 03:24:36 nvm found an add-on 03:31:51 -!- Gregor` has joined. 03:32:57 -!- Sgeo_ has quit (Ping timeout: 246 seconds). 03:32:59 -!- Gregor has quit (Ping timeout: 246 seconds). 03:34:57 -!- azaq23 has quit (Ping timeout: 276 seconds). 03:36:22 DOM inspector does not let me see the contents of "prototype" 03:40:09 -!- azaq23 has joined. 03:55:25 -!- Guest20296 has changed nick to augur. 03:55:42 -!- Sgeo__ has quit (Read error: Connection reset by peer). 03:55:42 -!- Sgeo__ has joined. 03:55:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 03:59:59 -!- wareya has quit (Read error: Connection reset by peer). 04:00:42 -!- wareya has joined. 04:06:48 -!- wareya_ has joined. 04:08:00 -!- mycrofti1 has joined. 04:09:07 -!- wareya has quit (*.net *.split). 04:09:09 -!- oerjan has quit (*.net *.split). 04:09:09 -!- variable has quit (*.net *.split). 04:09:14 -!- Vorpal has quit (*.net *.split). 04:09:15 -!- Ilari_antrcomp has quit (*.net *.split). 04:09:18 -!- fungot has quit (*.net *.split). 04:09:18 -!- mycroftiv has quit (*.net *.split). 04:09:20 -!- oerjan has joined. 04:14:39 -!- Vorpal has joined. 04:14:39 -!- Ilari_antrcomp has joined. 04:19:12 -!- copumpkin has joined. 04:21:49 -!- oerjan has quit (Quit: leaving). 04:40:59 -!- asiekierka has joined. 04:47:12 -!- asiekierka has quit (Read error: Connection reset by peer). 04:47:19 -!- asiekierka has joined. 05:01:05 -!- Gregor` has changed nick to Gregor. 05:02:06 -!- augur has quit (Remote host closed the connection). 05:07:35 -!- asiekierka has quit (Ping timeout: 255 seconds). 05:26:39 -!- augur has joined. 05:41:36 -!- azaq23 has quit (Quit: Leaving.). 06:32:31 -!- copumpkin has quit (Ping timeout: 246 seconds). 06:32:57 -!- copumpkin has joined. 07:02:47 -!- lament has quit (Ping timeout: 255 seconds). 07:43:20 -!- mtve has joined. 08:20:20 -!- lifthras1ir has joined. 08:20:39 -!- shachaf_ has joined. 08:21:26 -!- nottwo_ has joined. 08:21:34 -!- shachaf has quit (Disconnected by services). 08:21:41 -!- shachaf_ has changed nick to shachaf. 08:23:10 -!- rodgort has quit (*.net *.split). 08:23:10 -!- cheater00 has quit (*.net *.split). 08:23:15 -!- clog has quit (*.net *.split). 08:23:16 -!- lifthrasiir has quit (*.net *.split). 08:23:17 -!- nottwo has quit (*.net *.split). 08:23:23 -!- jcp has quit (*.net *.split). 08:23:25 -!- Leonidas has quit (*.net *.split). 08:23:26 -!- Lymia has quit (*.net *.split). 08:23:28 -!- jcp has joined. 08:23:29 -!- Leonidas has joined. 08:23:29 -!- Lymia has joined. 08:30:06 -!- rodgort has joined. 08:32:36 -!- cheater00 has joined. 09:11:30 -!- Zuu has joined. 09:11:30 -!- Zuu has quit (Changing host). 09:11:30 -!- Zuu has joined. 09:12:30 -!- coppro_ has joined. 09:12:41 -!- Zuu_ has quit (*.net *.split). 09:12:41 -!- coppro has quit (*.net *.split). 09:12:42 -!- Ilari has quit (*.net *.split). 09:13:36 -!- Ilari has joined. 09:40:16 -!- sebbu has joined. 09:40:16 -!- sebbu has quit (Changing host). 09:40:16 -!- sebbu has joined. 09:40:43 -!- copumpkin has quit (*.net *.split). 09:40:45 -!- olsner has quit (*.net *.split). 09:40:47 -!- Deewiant_ has quit (*.net *.split). 09:40:47 -!- sebbu2 has quit (*.net *.split). 09:40:54 -!- yiyus has quit (*.net *.split). 09:42:27 -!- Ilari has quit (Ping timeout: 260 seconds). 09:43:40 -!- Ilari has joined. 09:45:17 -!- copumpkin has joined. 09:45:17 -!- olsner has joined. 09:45:17 -!- yiyus has joined. 09:52:09 -!- Deewiant has joined. 10:19:07 -!- mycroftiv has joined. 10:20:19 -!- Gregor` has joined. 10:20:39 -!- mycrofti1 has quit (Ping timeout: 240 seconds). 10:20:42 -!- Gregor has quit (Ping timeout: 240 seconds). 10:29:53 freenode seems somewhat unstable today 10:29:53 -!- clog has joined. 10:34:25 Perhaps they're still patching. 10:34:28 -!- SimonRC has quit (Ping timeout: 252 seconds). 10:34:51 (Re "[Global Notice] Hi folks! As you'll have noticed, we've been having some connectivity problems tonight. We're working on patching things together just now." about seven hours ago.) 10:35:04 -!- SimonRC has joined. 10:35:22 ah 10:35:26 I missed that one 10:44:08 -!- cheater- has joined. 10:46:16 -!- cheater00 has quit (Ping timeout: 246 seconds). 10:49:38 -!- Slereah has quit (Ping timeout: 248 seconds). 10:56:08 -!- Slereah has joined. 11:00:28 -!- shachaf has quit (Ping timeout: 258 seconds). 11:00:58 -!- shachaf has joined. 11:09:53 -!- Sgeo_ has joined. 11:12:29 -!- wareya has joined. 11:12:53 -!- wareya_ has quit (Ping timeout: 246 seconds). 11:12:54 -!- Gregor` has quit (Ping timeout: 246 seconds). 11:13:00 -!- Sgeo__ has quit (Ping timeout: 246 seconds). 11:14:37 -!- Gregor has joined. 11:15:03 -!- Gregor has changed nick to Guest79498. 11:37:48 -!- Guest79498 has quit (Ping timeout: 246 seconds). 11:37:49 -!- cheater- has quit (Ping timeout: 246 seconds). 11:38:35 -!- Gregor has joined. 11:39:01 -!- Gregor has changed nick to Guest96426. 11:39:28 -!- cheater- has joined. 11:55:26 hey guys 11:55:33 are there any markov bot plugins for xchat? 11:56:54 there's another channel where people speak german and they keep on accusing me of being a markov bot 11:57:04 so i thought i should actually set up a markov bot that could chat for me every now and then 12:00:57 -!- cheater00 has joined. 12:02:55 -!- cheater- has quit (Ping timeout: 246 seconds). 12:24:52 -!- sftp has joined. 12:25:40 -!- Guest96426 has changed nick to Gregor. 12:37:58 -!- variable has joined. 12:55:21 -!- coppro_ has changed nick to coppro. 13:07:00 -!- Sgeo_ has quit (Read error: Connection reset by peer). 13:07:03 -!- FireFly has joined. 13:33:01 -!- augur has quit (Remote host closed the connection). 13:39:02 -!- BeholdMyGlory has joined. 13:41:08 -!- MigoMipo has joined. 13:43:19 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:05:17 -!- augur has joined. 14:06:00 -!- copumpkin has joined. 14:06:57 -!- FireFly has quit (*.net *.split). 14:06:57 -!- variable has quit (*.net *.split). 14:07:00 -!- Ilari has quit (*.net *.split). 14:07:00 -!- sebbu has quit (*.net *.split). 14:07:06 -!- Vorpal has quit (*.net *.split). 14:07:07 -!- Ilari_antrcomp has quit (*.net *.split). 14:08:13 -!- FireFly has joined. 14:08:13 -!- variable has joined. 14:08:13 -!- Ilari has joined. 14:08:13 -!- sebbu has joined. 14:08:13 -!- Vorpal has joined. 14:08:13 -!- Ilari_antrcomp has joined. 14:20:09 -!- FireFly has quit (*.net *.split). 14:20:09 -!- variable has quit (*.net *.split). 14:20:13 -!- Ilari has quit (*.net *.split). 14:20:13 -!- sebbu has quit (*.net *.split). 14:20:19 -!- Vorpal has quit (*.net *.split). 14:20:19 -!- Ilari_antrcomp has quit (*.net *.split). 14:20:40 -!- FireFly has joined. 14:20:41 -!- variable has joined. 14:20:41 -!- Ilari has joined. 14:20:41 -!- sebbu has joined. 14:20:41 -!- Vorpal has joined. 14:20:41 -!- Ilari_antrcomp has joined. 14:29:19 -!- augur has quit (Remote host closed the connection). 14:32:55 -!- augur has joined. 14:47:57 -!- oerjan has joined. 14:49:59 -!- copumpkin has quit (Ping timeout: 252 seconds). 14:51:57 -!- copumpkin has joined. 14:52:50 -!- lambdabot has joined. 14:54:38 -!- asiekierka has joined. 14:56:02 -!- pumpkin has joined. 14:57:24 -!- copumpkin has quit (Ping timeout: 246 seconds). 15:01:22 -!- Phantom_Hoover has joined. 15:17:45 -!- sftp has quit (Remote host closed the connection). 15:26:28 -!- azaq23 has joined. 15:32:26 APNIC down 0.03: 128k+32k+16k+2x1k+256+/32+2x/48 to Australia, 64k to China, 512 to Indonesia, /32 to India, /48 to Norfolk Island, /48 to New Zealand, /32 to Singapore, 64k to Thailand. 15:34:12 Well, at least APNIC is now under 12Mi addresses. :-) 15:37:13 -!- asiekierka has quit (Ping timeout: 258 seconds). 15:37:26 When did you project APNIC depletion? Mid-April? 15:38:20 614.5k addresses in a day. 15:38:25 I'll compute new projection... 15:38:32 -!- lament has joined. 15:41:19 I got Thursday 14th April this time. 15:42:16 (that date is next week!) 15:43:13 How 'bout for North America? 15:43:20 (Or is "the Americas" the region? I forget) 15:48:57 3.64 blocks (58Mi) or so seemingly. 15:49:48 (Free, don't know about the allocation rate, it is much much lower than APNIC rate). 15:51:45 So we could cruise at least through 2012. 15:52:08 Heh, in the last 30 days lists, the only allocation bigger than 256k not from APNIC is one 1M allocation from AfriNIC. 15:53:43 perhaps when APNIC runs out the run will spread to other regions... 15:54:34 unless they have rules to prevent asian companies from allocating IPs from elsewhere 15:56:54 Yeah, that's the worry. 15:58:06 The demand might spread to ARIN and RIPE NCC, quickly depleting those. Then after those have been sucked dry, LACNIC and AfriNIC. 15:59:38 1 block of demand (combined) per month would suck ARIN and RIPE NCC out completely in about 6.5 months. 16:02:08 Hmm... The default option in Lagerholm's tool previously was "RIR shopping allowed", now that option is no longer the default. 16:04:13 If Asian operators don't shift demand to other regions and if ARIN and RIPE don't suffer similar run-on-the-bank scenarios as APNIC (both fairly dubious assumptions), RIPE would run out late next year (even RIPE itself isn't that optimistic!) and ARIN in early year after that. 16:05:36 -!- lament has quit (Ping timeout: 260 seconds). 16:05:39 -!- elliott has joined. 16:05:45 23:37:58: quintopia: But he ping-timeout'd, not quit. 16:05:46 23:38:51: i don't think it's a problem with his connection 16:05:46 23:39:15: i bet he just unplugged his computer because he was fed up with us 16:05:46 my client can do that sometimes 16:05:48 Full demand shifting would cause everything to run out early next year. 16:06:11 00:28:40: Gregor, :(:( 16:06:12 00:36:34: I feel guilty for not donating now 16:06:18 i don't see Gregor saying anything beforehand? 16:06:22 did the logbot go down? 16:06:50 elliott: I shall not discuss libc.so in-channel, but that doesn't stop other people from doing so :P 16:07:03 Gregor, can you at least confirm that you didn't get it? 16:07:15 'twas not meant to be. 16:07:20 err 16:07:21 wait 16:07:25 what made people suspect that he didn't get it 16:07:36 sgeo just seems to have decided that out of the blue 16:07:44 elliott: he changed his nick back? 16:07:48 elliott: Facebook. 16:07:54 um his nick had been back five years ago 16:08:15 Or the lack of raucous celebration? 16:08:17 ...what. 16:08:33 If there was raucous celebration, it would have started nowishly :P 16:08:50 FWIW, my DNS doesn't realise .so is a TLD yet. 16:09:40 Really? Not your browser? 16:10:17 -!- elliott_ has joined. 16:10:57 http://sprunge.us/JdbJ ;; :D 16:11:03 -!- elliott has quit (Disconnected by services). 16:11:04 -!- elliott_ has changed nick to elliott. 16:11:07 -!- elliott has quit (Changing host). 16:11:08 -!- elliott has joined. 16:13:55 Wonder if IPv6 allocation rates in Asia-Pacific will take some rocket fuel when APNIC IPv4 pool depletes. 16:14:48 -!- sftp has joined. 16:16:21 ... The primary worry with that is if APNIC is fast enough to handle the demand, not that it would deplete APNIC pool (there's over 30 bilion /48s to allocate until half-block threshold is reached, and then there's IANA with 506 blocks). 16:17:06 Gregor, whois fails as well. 16:17:28 Actually, I can get to nic.so. 16:17:33 Phantom_Hoover: whois would fail because it doesn't know how to whois .so in particular. 16:17:55 Plus I don't think they provide a whois-protocol whois server... 16:18:04 Is your browser Chrome, perchance? 16:18:06 This TLD has no whois server. 16:18:08 :o 16:18:09 that's like 16:18:12 the hidden realm 16:18:22 The nic.so whois says nothing about libc.so. 16:18:24 It has a web-accessible captchawhois :P 16:18:36 Phantom_Hoover: The auction isn't over yet, and even if it was it wouldn't be allocated yet. 16:18:45 Who's WINNING 16:19:04 Charlie Sheen. He's a real C programmer. 16:19:09 Anonymous bidder #449 16:19:24 Remind me which one you are. 16:19:28 #442 16:19:37 Gregor: So close! 16:19:39 Oops, calculated that estimate wrong: I get Wednesday 13th April using the current pool size (not pool size after Friday). 16:19:40 AKA libdl.so :P 16:19:40 X-D 16:20:21 I had an earlier number than the others because I was in the ld-linux.so auction, although I made no bids there. 16:22:21 But for some reason Huston site has APNIC having extra 0.2 free blocks (which would push depletion to ~Friday 15th April). 16:22:26 Oh, not #whatever in the auction, just in general :P 16:22:31 I was thinking dayum, you had no chance. 16:22:39 Also ld-linux was actually fought over at all? X-D 16:26:53 fizzie: YOU'RE a Forthy kind of person aren't you?! DO YOU WANT TO TRY THE FRTH DEVELOPER PRELEASE 16:28:12 I'm not that frothy; I'm really actually quite stale. 16:29:03 What? Graph on APNIC site is showing only down 0.01, but values for numerious previous days have gone down 0.02 (retroactively!). 16:29:28 fizzie: Well, yeah, being almost 30 and all. 16:29:54 Ilari: the ip depletion is causing disruptions in the timestream. we are doomed! 16:43:21 we're mooded 16:44:05 the moody mod of doom 16:45:32 But for some reason Huston site has APNIC having extra 0.2 free blocks (which would push depletion to ~Friday 15th April). <-- and what happens then 16:45:40 THE END 16:45:42 OF THE WOOOOOOOOOOOOOOOOOOOOORLD 16:45:44 Ilari, how long before the LIRs get into issue? 16:47:35 issues* 16:47:35 brb phone 16:48:44 No idea how long LIRs have to go. There's certain allocation period (but I don't recall what current APNIC policies about that are). 16:48:49 it's the phone call of DOOM 16:49:46 Uh, oh: "CNNIC, the Chinese Registrar and CA have been EV enabled. As part of this, a new EV-enabled Root was added (the old is not EV-enabled)." (opera). Let's just say that certain persons don't trust CNNIC _at_ _all_. 16:49:56 hmm, aria2c is being a bit slower than usual :/ 16:50:01 -!- cheater99 has joined. 16:51:20 -!- cheater00 has quit (Ping timeout: 246 seconds). 16:52:07 In December 2010 some users requested that the Unity launcher (or dock) be movable from the left to other sides of the screen, but Mark Shuttleworth stated in reply, “I'm afraid that won't work with our broader design goals, so we won't implement that. We want the launcher always close to the Ubuntu button.”[11] 16:52:16 It SUPPLIES THE CONCEPTUAL ENERGY 16:53:16 Ilari, EV? Is that DNSSEC-related? 16:53:29 Extended Validation (related to SSL certificates). 16:53:37 No. It's Evisceration Vacancies. 16:53:40 Nothing to do with DNSSEC. 16:53:45 The Chinese government can now execute people OVER DNS 16:53:47 Ilari, ah 16:53:59 They basically just have a bunch of empty EV records in a domain. 16:54:00 hi elliott 16:54:03 how are you 16:54:07 When you do a DNS lookup, you get trapped in one and eviscerated. 16:54:09 ... Which .cn apparently doesn't have enabled. 16:54:39 hm 16:56:28 DNSSEC-enabling .cn would only make .cn vulernable to CNNIC. Giving them EV cert perms in browsers makes everything vulernable to them. 16:56:57 Ilari, hm. Is CNNIC bad? 16:57:05 wait, probably 16:57:20 http://sprunge.us/JdbJ < lol 16:58:19 Vorpal: Depends on how tightly China controls it... 16:58:59 right 17:01:10 -!- azaq23 has quit (Quit: Leaving.). 17:01:33 hmm, writing a Magenta parser looks scary 17:05:33 Magento? 17:06:26 * cheater99 hates the "opensores" web app/store called Magento. 17:10:41 First, I don't have a damn clue what any of this means anymore. The design was such a twisted mess that there was no way I could go back and add anymore to it. I sure as hell wouldn't want to be the poor sap trying to turn this disaster into a LALR(1) grammar for yacc. That said, I'd love to see someone try. 17:10:43 ahahahahah 17:10:48 good luck elliott. 17:11:10 magento, part esolang, part supervillain 17:12:41 -!- asiekierka has joined. 17:15:07 -!- ais523 has joined. 17:21:42 hi ais523 17:22:20 hi elliott 17:22:31 Hmm, HP Lovecraft was appalled when he discovered his great-great-grandmother was Welsh. 17:23:10 You're HP Lovecraft's great-great-grandmother? 17:24:13 Honestly, V*rpal's not paying attention right now. 17:24:20 OH GOD WAIT HE IS 17:24:22 -!- asiekierka has quit (Read error: Connection reset by peer). 17:24:26 I know not what you talk about. 17:24:41 How Welsh I am. 17:24:52 -!- asiekierka has joined. 17:24:55 You're Welsh; so? 17:25:01 -!- asiekierka has quit (Read error: Connection reset by peer). 17:25:08 OH GOD WAIT HE IS <-- just back 17:25:11 ;P 17:25:22 elliott, nothing. 17:25:29 OK. 17:26:07 -!- asiekierka has joined. 17:26:07 wow, Common Lisp actually has if/else 17:26:09 btw, I think I might do some sort of fuzzy-matching on highlighting. Would be fun 17:26:11 that is, with explicit else 17:26:43 (loop for i upto 20 17:26:43 if (oddp i) 17:26:43 collect i into odds 17:26:43 else 17:26:43 collect i into evens 17:26:43 finally (return (values evens odds))) 17:27:03 That's not proper if/else. 17:27:10 That's loop, so it doesn't count. 17:27:20 ...of course it's loop 17:27:26 that's why it surprised me 17:27:26 sheesh 17:27:39 (i wouldn't have expected it to pronounce it in quite that way) 17:27:58 BF really needs a while/else 17:28:09 BF just needs an if :-P 17:28:14 e.g. if (*p) while (*p) {} else {} 17:28:24 it'd let me abbreviate my huge BF Joust program much better 17:28:44 I think I finally got it within fizzielance's nesting constraints, by examining the other programs and adding only the cases that actually ran 17:28:53 {[...]+}-{...} 17:28:57 which is a bit like constant tweaking, but I don't care as it's working around an intepreter failure 17:29:01 works for 0/1 booleans 17:29:03 does what you said 17:29:05 sort of 17:29:10 wait, exactly what you said 17:29:14 well, it'd matter in BF Joust because of itming 17:29:16 *timing 17:29:18 fizzielance lol 17:30:04 !bfjoust anticipation http://sprunge.us/CNiW 17:30:15 Score for ais523_anticipation: 40.2 17:30:37 ^ defence program that beats slowpoke 17:30:49 that made me think Culture ship names, then I tried to think why, then I realised that an (IIRC obnoxious) Wikipedian used that Culture ship name as a username for a while 17:30:51 unfortunately, I figured out how to adapt slowpoke's strategy in a way which probably is completely fatal to defence 17:30:56 then I regretted my auto-thinking 17:31:03 ais523: you said that /last/ time too 17:31:14 what, that slowpoke was fatal? 17:31:15 (Culture ship in question is Anticipation Of A New Lover's Arrival, The) 17:31:22 (Let's just pretend I've memorised every Culture ship name without ever reading the novels) 17:31:24 ais523: yes 17:31:30 perhaps 17:31:54 but anticipation-style strategies can only work by assuming the program in question uses consistent timings 17:32:06 and I worked out how to make slowpoke vary its attack timing 17:33:04 ok, the person who used that name has /way/ too many pseudonyms 17:35:37 http://libdl.so/ <-- best web page ever? 17:35:46 (Not URL, page) 17:36:17 haha 17:36:22 probably not, but it's good for a quick laugh 17:36:24 gregor richards? 17:36:31 ok gregor... now i know your powerword 17:36:36 >:D 17:36:39 SO HOW MANY THOUSANDS DID THAT ONE COST MR. GREGOR "MONEYBAGS" RICHARDS [U+PRBLM TROLL FACE] 17:37:03 ais523: what's the ;s in anticipation? 17:37:11 cheater99: ... my ... name? 17:37:12 ;s? 17:37:20 elliott: There was no auction. $10 :P 17:37:21 yes. 17:37:27 your powerword. check it on ED. 17:37:34 >>>(-)*20<(-)*20<(-)*20<(+)*108; 17:37:34 cheater99: My name isn't a secret. My real name is on my /whois . 17:37:36 all one of them 17:37:37 oh, I must have been putting trailing semicolons out out of habit 17:37:40 X-D 17:37:50 the ()*14 stuff is debug cod 17:37:50 Gregor: No, your REAL NAME 17:37:52 *code 17:37:56 http://encyclopediadramatica.com/Powerword 17:38:00 Gregor: Mrs. Mary Gregor Richards 17:38:02 juiced currently notices loops like that and prints them to stderr whenever they execute 17:38:11 elliott: *Richardson 17:38:15 which is really helpful when debugging 17:38:22 and other interps ignore them 17:38:41 ais523: we decided on ()*0 as the comment format; IMO that would be a far superior method 17:38:52 because printing all comments in a debug mode is a pretty good idea in bf joust 17:39:01 elliott: perhaps, but comments are sometimes really long 17:39:04 since comments (at least for me) tend to just denote when the warrior starts doing something interesting 17:39:04 Revealing to your victim that you know their Powerword: Real Name will cause them to panic, as they suddenly confront the possibility that their Furaffinity posts or the Eagle-Fox hybrid voraphile porn on their DeviantArt account could be sent to their IRL co-workers and friends. Their typical reaction will be to DELETE FUCKING EVERYTHING - fortunately, most good trolls take screenshots. 17:39:07 comments and debug tags are inherently different things 17:39:08 ais523: only /yours/ 17:39:20 what if someone puts the entire code generator in a comment? 17:39:29 ais523: Gregor tried that, the syntax rules made it impossible :) 17:39:36 [( They're on our flag; time to attack )*0 17:39:41 or uses comments to explain their decoy setups? 17:39:47 [-] ( They're gone! Or are they? )*0 [(Nope)*0 ...] ...] 17:39:59 ais523: that's acceptable to print out, IMO 17:40:03 it's easy enough to skip over such things 17:40:05 not if it's several lines long 17:40:10 ais523: it only happens once 17:40:19 the code generator for anticipator has huge paragraphs explaining which timings are used by which other programs 17:40:23 *anticipation 17:40:31 ais523: OK, well, what if we said that ()%0 was debug? :-D 17:40:41 ouch 17:40:54 especially as ({a})%0 should semantically run the a 17:41:01 (juiced screws up on that case, though, IIRC) 17:41:03 ais523: Don't go ouch, my other idea was ((debug)*0)*-1 17:41:15 ouch 17:41:21 precisely :D 17:41:29 especially as ({a})%0 should semantically run the a 17:41:31 we could use this! 17:41:33 the other advantage of ()*n is that it doesn't need to store any information the interp isn't already storing 17:41:34 (before{...}after)%0 17:41:35 USEFUL! 17:41:36 juiced deletes comments on load 17:41:40 but not ()*n loops 17:41:45 especially as ({a})%0 should semantically run the a 17:41:48 so... 17:41:57 ais523: lance's architecture required deleting ()*n, IIRC 17:41:59 (comment {a} comment)%0 17:42:03 obvious 17:42:04 Vorpal: PRECISELY 17:42:06 (before{...}after)%0 USEFUL! 17:42:14 also, not comment 17:42:14 debug 17:42:19 for which a before/after pair might actually be useful :) 17:42:42 elliott, so what about proper code comments? 17:42:52 we've already agreed those are ()*0 17:43:00 elliott, I thought that was debug? 17:43:05 no 17:43:06 oh wait 17:43:11 % 17:43:11 right 17:43:17 although they're more dead code than comments, because they still have to have balanced (), [], etc. 17:43:21 and can't have {} in them without a ()% in them 17:43:22 and whatnot 17:43:26 elliott, I wasn't aware of that ()%n existed 17:43:28 and ()s in them still have to be followed by * or %, etc. etc. etc. 17:43:31 Vorpal: (a{b}c)%n 17:43:47 elliott, ah well without the {} I meant 17:44:13 that doesn't exist 17:45:36 * elliott opens a lance directory to start coding 17:45:45 no deadline, before anyone asks :P 17:45:54 Anyone have a way to convert a spreadsheet into a LaTeX table? 17:46:00 what format? 17:47:49 .xls AtM, but I can use Calc to convert it. 17:49:10 ew, use Gnumeric :) 17:49:17 Well, OK. 17:49:22 Same difference/ 17:51:09 hmm 17:51:10 with 17:51:14 struct foo { A x; B y; }; 17:51:16 assuming you have 17:51:21 struct foo blah = ...; 17:51:27 B *foo = &foo->y; 17:51:27 is 17:51:39 (struct foo*)(foo - offsetof(struct foo, y)) 17:51:46 guaranteed to be a pointer to blah? 17:51:48 *foo * 17:52:10 It is useful when implementing generic data structures in C. For example, the Linux kernel uses offsetof() to implement container_of(), which allows something like a Mixin type to find the structure that contains it:[3] 17:52:11 #define container_of(ptr, type, member) ({ \ 17:52:11 const typeof( ((type *)0)->member ) *__mptr = (ptr); \ 17:52:11 (type *)( (char *)__mptr - offsetof(type,member) );}) 17:52:11 This macro is used to retrieve an enclosing structure from a pointer to a nested element, such as this iteration of a linked list of my_struct objects: 17:52:13 seems so 17:56:26 Phantom_Hoover, convert it to csv, then a fairly simple sed script should be able to do the rest 17:57:10 Of course, everyone has time to make a sed script to do tasks which should be routine enough for preëxisting automation. 17:57:11 might need some manual adjustment for header 17:57:11 still should be easy to automate it 17:57:44 Phantom_Hoover: You have time to whine on IRC, you have time to write a tiny sed script. 17:57:47 elliott, that looks cool 17:57:56 pitty is is not portable 17:58:06 unless I misremember 17:58:15 Vorpal: offsetof is C90 17:58:18 that container_of is nonportable, though 17:58:25 or is it typeof that isn't 17:58:33 either typeof or offsetof is non-portable 17:59:06 typeof is nonportable, but container_of is nonportable also because of ((type *0)-> 17:59:14 *no first ( 17:59:19 er wait 17:59:22 *((type *)0)-> 17:59:43 Phantom_Hoover, uh, you mean you hate coding? And I was trying to be helpful. I know of no such tool but suggested a somewhat easy way to convert very large tables 18:05:39 -!- oerjan has quit (Quit: Good night). 18:05:53 ais523: how much did your original huge program nest? 18:09:18 -!- asiekierka has quit (Ping timeout: 260 seconds). 18:11:00 hmm, C could really do with generics 18:12:07 elliott, you could do "C with templates" to simulate this ;) 18:12:18 elliott, but more seriously. Have a look at the C99 header tgmath.h 18:12:48 funnily there is no pure C way to implement tgmath.h 18:13:28 hmm, I'm not even sure that's true 18:13:32 it would be really ugly though :) 18:13:59 Vorpal: well, if you knew certain things about sizeof... 18:14:13 so it can be implemented _for almost any given implementation_ in pure C 18:14:30 since the vast majority of implementations I would guess have different sizes of all of the relevant types 18:15:57 ouch 18:16:07 elliott, not true. Few embedded things do. 18:16:11 elliott: it nests 1 per cycle it waits 18:16:13 and isn't embedded systems something like 80%-90% of the computers in the world? Read that somewhere.. 18:16:13 aren't* 18:16:18 ais523: I mean, source code nesting depth 18:16:21 () and [] and {} combined 18:16:29 *combined 18:16:32 2 more, I think 18:16:38 or maybe 3 more 18:16:40 Vorpal: yeah, but i hope most embedded systems don't run C 18:16:44 (they probably do, but I hope they don't) 18:16:47 the code is pretty simple, just doesn't compress well 18:16:49 ais523: that's not an answer, the answer is constant 18:16:58 I know it broke fizziewhateverlance's limit 18:17:13 elliott: indeed, 1 per cycle it waits, which is a value I set when writing the code 18:17:18 I think I originally had it at 1600 18:17:26 hmm, wasn't it more? 18:17:51 (I'm wondering how high to set the stack limit, or alternatively, whether I really must dynamically allocate) 18:19:05 I'd happily put it all the way up at 100000 if I thought it would help, although it'd make the program much longer 18:19:17 -rw-r--r-- 1 ais523 ais523 204754 2011-04-04 05:18 anticipation.bj 18:19:26 I doubt I'd go much above 2000 or so without exceeding the 1MB limit 18:19:53 aaargh 18:19:58 20 lines in half a second 18:20:02 yet I had no lag elsewhere 18:20:04 freenode fail 18:20:24 ais523: there is no 1 meg limit 18:20:29 unless fizzielance has one 18:20:36 " elliott: it nests 1 per cycle it waits" to " I doubt I'd go much above 2000 or so without exceeding the 1MB limit" arrived in a single second 18:20:41 Vorpal: k 18:21:04 actually, I think it might be interesting to do BF Joust with a nesting restriction on expanded [] 18:21:08 a really small one, say 16 18:21:13 ais523: yes, but that's not the language we're using :) 18:21:19 it'd probably make ()% redundant 18:21:26 but it'd get rid of slowpoke and improved-slowpoke-style things 18:21:28 ais523: I'll probably just malloc a 1,048,576 structures big thing for the nesting stack 18:21:34 or maybe smaller, a struct seems to be... 18:21:37 (I'll hold off on improved-slowpoke in case it truly is impossible to defend against) 18:21:44 4 + 4 + 4 + 4 18:21:48 on both 32-bit and 64-bit 18:21:59 so that would be 16 megabytes :) 18:22:07 otoh, 16 megabytes isn't much to allocate 18:22:13 doing it dynamically should be easy 18:22:14 otooh, nobody is going to nest _that_ much 18:22:17 Vorpal: yeah, but i hope most embedded systems don't run C <-- what do you expect them to run 18:22:18 wait, I can just use the cycle limit 18:22:18 duh 18:22:23 in case you're wondering, joust allocates the stack during the parser 18:22:24 that's a literal hard limit 18:22:27 *juicd 18:22:31 *juiced 18:22:37 ais523: it isn't hard, but manual memory management angers me anyway 18:22:40 Vorpal: asm or forth 18:22:46 in fact, the nesting stack's stored in the same structs that the program is 18:22:59 elliott, C is the majority as far as I know. Then there is a bit of ADA and asm. And a few thiny other languages including forth. 18:23:04 ais523: it doesn't even compile to jumps? lol 18:23:14 elliott, do ada is getting a lot more rare very quickly 18:23:16 Vorpal: *Ada 18:23:17 though* 18:23:19 weird typo 18:23:22 you've made that typo like 48734953948593475893745793845793459837598345 times 18:23:25 elliott: it effectively does 18:23:27 but it's more structured 18:23:28 or is it ais523 18:23:48 elliott, but yeah, C very clearly dominates 18:24:02 hmm, when camelcased is opcode Opcode or OpCode? 18:24:10 Vorpal: unfortunately. 18:25:00 elliott, and in embedded the ISA bus isn't still quite dead yet. Sadly. 18:25:04 It is dying, but not there yet. 18:25:11 I'm not joking. 18:25:47 oh noes? isa isn't that old 18:26:05 elliott, ISA was quite horrible 18:26:22 (before objecting that it was invented in 1981, remember that i've been reading about Multics and identifying with a lot of the design goals and implementation, and that was in 1969) 18:26:31 no wait 18:26:34 multics started in 1964 18:26:35 even earlier 18:26:57 elliott, does that mean you think everything old was better? 18:27:07 no, it just means that i've looked a lot further back than most people :) 18:27:18 oh, and I seem to like ALGOL 60 quite well, based on what ais523's said and some other things 18:27:24 (ofc Lisp is even older) 18:27:46 elliott, you should go write machine code on punch cards 18:27:57 UR JUST A MINDLESS OLDIE CONSERVATIVE 18:27:58 no 18:28:02 assembler? You got to be kidding 18:28:02 GO DO OLD THINGS 18:28:22 been practising your reading comprehension i see :) 18:28:33 elliott, no I didn't say that :P 18:28:33 elliott, I agree multics had some good points 18:28:42 come on. 18:28:54 ais523: does your hardware pass the man or boy test? 18:28:59 elliott, also I never said I wouldn't want to play with punch cards myself! 18:29:02 (I would!) 18:29:15 elliott: I haven't looked at it yet 18:29:18 Vorpal: that kind of fetish will get you in hospital with papercuts all over 18:29:24 ais523: it's basically a set of the insanity of call by name 18:29:27 elliott, har har 18:29:29 it should do, because it's harder for it to happen incorrectly than correctly 18:29:40 (I know the test exists, and more or less what it tests) 18:29:40 ais523: (the answer is -67, but Knuth thought it was -121 in the original paper, that's how hard it is :D) 18:30:09 elliott, what is this test you are talking about? 18:30:11 what's difficult in hardware is very different from what's difficult in software 18:30:11 ais523: so does your compiler work on ICA code or ALGOL 60 code? 18:30:14 Vorpal: http://en.wikipedia.org/wiki/Man_or_boy_test 18:30:58 elliott: it works on ICA parsetrees, atm 18:31:05 ouch 18:31:11 also, that program doesn't compile into hardware, it uses an illegal sort of recursion 18:32:08 what's the max cycles? 1 M? 100 k? 18:32:15 (hardware has to be finite-state; that means restricting what's allowed) 18:32:17 in jouoouououououououost, i mean 18:32:23 100k 18:32:31 is the normally agreed-upon value nowadays 18:33:43 ais523: err, no 18:33:48 ais523: I don't think 18:33:51 ais523: that was a bug in egojoust, IIRC 18:33:56 's repetition code 18:33:59 no, the bug made it interpret -1 as 10k 18:34:00 rather than 10k 18:34:03 *rather than 100k 18:34:41 hmm, okay 18:36:37 still, C needs generics :) 18:36:46 you can't even define a stack in C! 18:37:08 either you have (1) ugly (void *) munging requiring extraneous allocation with stacks of structures, 18:37:15 elliott, you can with macros 18:37:20 (2) both an array and an index variable that are separate, 18:37:21 or 18:37:29 (3) a macro that defines a bunch of types and functions for working on a specific type 18:37:39 such a macro is hideously ugly and causes binary bloat 18:37:41 elliott, it can take a type as parameter to the macro 18:38:02 there's actually a final option, a bunch of functions that take sizeofs and a bunch of macros that call them with the appropriate sizes, but that's insanely ugly too. 18:38:03 and a pain to code 18:38:19 elliott, you could do it as a linked list 18:38:31 duh, that's what the function solutions were 18:38:37 OTOH, a linked list is pretty inefficient for a stack in C 18:38:39 because malloc is slow 18:38:48 elliott, oh, I though the functions operated on an array of some sort 18:38:49 a growing away is much better, but even more work to code 18:39:05 elliott, so stop coding C 18:39:16 -!- Wamanuz4 has joined. 18:39:25 I'd still have to write my own growing array in Haskell I think :-D 18:39:29 or maybe the vector package has that 18:39:39 -!- Wamanuz3 has quit (Ping timeout: 246 seconds). 18:39:41 elliott, surely perl has this? 18:39:43 XD 18:39:50 anyway C is more useful, since EgoBot's Haskell environment is uncertain 18:39:57 and also, because BF Joust execution is quite intensive 18:40:00 coppro: I think the Alternative Vote campaining's starting to start in earnest; the government sent out leaflets explaining what the vote was about, and links to the campaign websites: http://www.yestofairervotes.org/ http://www.no2av.org/ 18:40:01 and I like it to be fast 18:40:04 elliott, anyway it would be trivial to do in scheme 18:40:14 I love how the "no" campaign indirectly calls the US a third world country 18:40:15 ais523: it started a while ago 18:40:28 elliott, use lambdabot? 18:40:35 elliott: well, yesterday's when all the leafleting, etc, reached my house 18:40:41 ah 18:40:51 elliott, so do it in ASM! 18:40:57 total freedom 18:41:02 Vorpal: not portable, even more work to code generic things 18:41:27 ais523: are opinion polls out yet? 18:41:37 coppro: I don't think so 18:41:39 ais523: heh, howso? 18:41:42 but I haven't really looked 18:41:43 ais523: I'd expect the yes campaign to do that 18:41:49 "all first-world countries have a sane voting system!" 18:42:23 ais523: ugh @ the yes site, just because bad people vote no on AV doesn't mean it's a good idea (it is, but for better reasons altogether) 18:42:25 well, the no campaign seems to be based on two points: a) it's expensive, b) it means that the winner will be chosen by back-room deals between politicians rather than who people actually voted for 18:42:30 interestingly, Java-style generics would actually be a good fit for C, but they won't work because sizeof 18:42:33 I don't understand b) 18:42:41 ais523: you forgot c) ONE PERSON ONE VOTE LOL I AM RETARDED 18:42:43 as in, do they have a point, or are they just lying in order to try to confuse people? 18:42:47 elliott: they didn't list that 18:42:56 ais523: that's the "slogan" on their website, IIRC 18:42:59 ah 18:43:06 yep 18:43:12 see top-right corner image of http://www.no2av.org/ 18:43:32 one thing I note about the No campaign is that there's a very strong indication, if not spelt out, of "all sane politicians oppose AV, AV is a Lib Dem conspiracy to let Nick Clegg become dictator!" 18:43:33 "The Alternative Vote will be wrong for BRitain and wrong for the Labour Party." 18:43:40 hmm, no2av looks like it might get people to actually vote yes :-D 18:44:11 it looks strongly targeted at Labour voters, to me 18:44:19 and people who voted Lib Dem but regretted the decision 18:44:25 unfortunately, that may well be > 50% of the country 18:44:26 ais523: I suppose the Tories have already made up their minds 18:44:39 I'm not certain they have 18:44:55 people who have looked into the maths think that AV would probably be good for the Tories short-term, and bad long-term 18:44:58 also, I wonder if most people regret voting for the Lib Dems because they've been spineless, or because they've decided that the current government is TOO LEFT WING? 18:45:04 the former is the sane reason, but I fear it might be the latter 18:45:15 elliott: because they threw in with the Conservatives 18:45:20 ais523: so the former :) 18:45:42 (I wouldn't have minded the Coalition if it wasn't effectively the Conservatives governing with the name of the Lib Dems) 18:45:52 I'm the other way round, I didn't manage to vote Lib Dem due to a mixup (despite trying), but don't regret the result of the election 18:45:53 coppro: I think the Alternative Vote campaining's starting to start in earnest; the government sent out leaflets explaining what the vote was about, and links to the campaign websites: http://www.yestofairervotes.org/ http://www.no2av.org/ <-- which country? 18:45:53 ah UK 18:45:53 ais523, so what is this change really about? 18:45:53 elliott, ais523: what is the actual suggested change here? 18:45:53 a saner voting system would be good for UK. But it needs to be saner. 18:46:00 Vorpal: YAY LAG 18:46:04 all those mesages just came at once 18:46:05 elliott, what? 18:46:10 elliott, oh 18:46:16 a saner voting system would be good for UK. But it needs to be saner. 18:46:19 than what, AV? 18:46:22 AV is perfectly sane 18:46:24 Vorpal: the suggested change is to replace a first-past-the-post voting system with alternative-vote 18:46:25 elliott, than your old one 18:46:29 it's just instant-runoff 18:46:32 AV is definitely saner than FPTP 18:46:34 elliott, I got your messages in bursts btw 18:46:36 because most things are saner than FPTP 18:47:00 ais523, hm 18:47:03 also, in all the AV elections I've participated in so far (at university), it's been pretty sane for one-person-elected results 18:47:27 one person elected stuff is where you get into issues 18:47:28 I know from personal experience that STV (the generalised version to select more than one seat) is mostly sane, but gets extremely insane in edge cases 18:47:37 ROI use IRV for presidential elections 18:47:40 never ever try to elect fourteen candidates to twelve places like that 18:47:42 quick, let's start the propaganda machine! 18:47:44 I'm not saying that the Swedish one very good, but it is quite okay 18:48:12 ais523: yay for Stochastic votes, the only mathematically sane voting system! 18:48:17 the swedish what? 18:48:18 Stochastic! 18:48:23 I was just about to say that. 18:48:24 -!- calamari has joined. 18:48:34 I hereby propose all 0 #esoteric elections be held with stochastic voting 18:48:42 (I'm not sure stochastic voting is quite sane on such a small scale, though :)) 18:48:54 olsner, voting system. It is saner than the old UK one. And than the US one. 18:49:09 by definition no voting system is good 18:49:09 elliott: how does that work? everyone votes, then you choose a result at random? 18:49:20 ais523: that's brilliant, but no, and I have definitely told you about it before 18:49:27 it's pretty sane I think, everything is excessively sane in sweden... except the government, of course 18:49:39 ais523: "In each riding, ballots cast are counted. A random candidate is selected with a distribution proportional to the number of votes for each candidate. The selected candidate wins the seat." 18:49:52 ah, that's slightly saner 18:49:55 but people will still hate it 18:49:56 ais523: it's much saner 18:49:58 ais523: this is the only voting system in which the only rational choice is to vote for your preference 18:50:07 ais523: people will hate it and it'll never be implemented, but there is no logical reason to hate it 18:50:17 it completely eliminates tactical voting and other such nonsense 18:50:25 elliott: no it does not 18:50:33 coppro: it eliminates tactical voting being _rational_ 18:50:38 no it does not 18:50:41 yes, it does 18:50:42 elliott: but that doesn't mean the winner we be reflective of the group 18:50:54 elliott: no, no it does not 18:50:56 coppro: it seems to get around Arrow's Theorem by having a nondeterministic result 18:51:04 coppro: are you going to answer why, or are you just going to say it's not? 18:51:23 ais523: yes, that I know 18:51:30 it's pretty sane I think, everything is excessively sane in sweden... except the government, of course <-- :D 18:51:35 elliott: what about this: /everyone/ voted for is elected, and they make collective decisions by voting themselves, with voting power proportional to the number of people who voted for them 18:51:42 actually, that's just Liquid Democracy, isn't it? 18:51:48 elliott: parties 18:51:57 coppro: that's not an answer, let alone a proof 18:52:02 elliott: 18:52:08 variable: ? 18:52:11 http://blog.computationalcomplexity.org/2011/03/unusual-voting-scheme.html 18:52:19 any constituency system has the fundamental flaw that a voter may want to vote for a less preferred person in order to get a more preferred overall outcome 18:52:34 coppro: all the _individual_ elections are completely fair 18:52:43 if you want candidate A in the seat, there is no reason not to vote for candidate A 18:52:48 coppro: in this case, you _don't_ want candidate A in the seat 18:52:51 elliott: this is true 18:53:02 your ideal world has candidate A in the seat, but the current world except candidate A in the seat is not a world you want 18:53:18 variable: er, that isn't stochastic voting, just so you know 18:53:32 elliott: see the link 18:53:33 wait a second. Don't you vote for a party over there? 18:53:36 do you vote for individuals? 18:53:43 in Sweden we vote for a party, and then state the preference of a candidate in that party 18:53:50 Vorpal: you vote for an individual who's part of a party 18:53:51 Vorpal: no, mmp is stupid 18:53:54 this is for local seats 18:53:57 ais523: and while arrow's theorem doesn't apply due to nondeterminism, it doesn't actually get around it 18:53:58 which seems to make a lot more sense, than voting for a given person 18:54:09 voting for a person is perfectly logical, it's not electing a president or anything 18:54:11 it's picking who will represent you 18:54:13 r area 18:54:17 variable: i did 18:54:23 variable: what is the relevance 18:54:39 ais523: since the algorithm effectively works by picking a dictator at random 18:54:48 elliott: I know. I just wanted to point out an interesting type of Real Life voting system 18:54:54 coppro: ???? no it doesn't 18:54:59 elliott: yes it does 18:55:01 it's not random 18:55:02 relevance = talking about voting + voting system 18:55:02 it's weighted 18:55:07 Vorpal: current UK voting system: everyone lives in a constituency; you vote for one person who represents the constituency; whoever gets the most votes in a constituency is elected to government 18:55:11 you're using the unweighted sense of "random" to make it sound bad 18:55:11 elliott: based on vote proportions 18:55:13 you're using the unweighted sense of "random" to make it sound bad 18:55:21 Vorpal: you vote for an individual who's part of a party <-- no. We vote for a party. The party has made an ordered list of candidates in the given voting area. You can check one to alter your preference from the top one to that one. Enough checks on a candidate can re-arrange the order of the list. 18:55:32 parties don't exist in theory at all, but in practice, each major party suggests someone in each constituency who's more or less forced to toe the party line 18:55:35 i.e. picking someone at random and going with their preference 18:55:37 Vorpal: no, WE vote for that 18:55:41 you as in you-in-our-scheme 18:55:42 although occasionally you get "rebellions" where they disobey the party line anyway 18:55:45 ais523, not at all like the Swedish one then 18:55:50 Vorpal: indeed 18:55:52 coppro: again, using the different sense of random to make it sound bad 18:56:21 elliott: now, you can weight the selection process by, say, square root of votes received 18:56:31 quoting http://en.wikipedia.org/wiki/Elections_in_Sweden#Voting: "Unlike in many countries where voters chose from a list of candidates or parties, each party in Sweden has separate ballot papers." (and then read on) 18:56:39 ais523: since the algorithm effectively works by picking a dictator at random 18:56:43 all this does is make it sound like the system is 18:56:45 >>> import random 18:56:50 >>> random.choice(list_of_candidates) 18:56:52 no wait 18:56:55 >>> DICTATOR = random.choice(list_of_candidates) 18:57:15 both "dictator" and "at random" give the sentence way more emotional content than it should have and makes it read completely wrongly 18:57:18 wow, this no-to-AV site contradicts itself 18:57:28 "The candidates chosen from each party are determined by two factors: the candidate's ranking by their party and the number of preference votes from the voters. Though the parties still entirely control the names on their own party lists, the system gives the voters a degree of power in choosing candidates from the list." 18:57:30 no 18:57:33 you got it wrong 18:57:35 ais523: I should start a yes-to-stochastic site, just to make everyone vote for AV 18:57:39 >>> DICTATOR = random.choice(list_of_voters) 18:57:46 elliott, you mean this is the system you aim for? 18:57:47 >>> WINNER = DICTATOR.choice 18:57:48 good 18:57:53 coppro: that's not true at all 18:58:00 Vorpal: what 18:58:01 Vorpal: ? 18:58:08 elliott: in the simplest stochastic system, it is 18:58:13 as I said, you can ery it more 18:58:14 Vorpal: no, WE vote for that <-- what? 18:58:17 coppro: that's not a stochastic system _anyone_ is proposing 18:58:22 HERE'S MY VOTING SYSTEMS GUYS HURP DURP 18:58:26 >>> WINNER = CANDIDATES[0] 18:58:32 THIS IS IDENTICAL TO FIRST-PAST-THE-POST AND ALSO ALL SYSTEMS 18:58:34 YOU CAN VERY IT MORE 18:58:37 BUT IT'S STILL THE SAME SYSTEM!!!!! 18:58:40 ALL VOTING SYSTEMS ARE UNFAIR 18:58:48 coppro: you ^ 18:58:52 *VARY 18:59:15 elliott: in any case, the system /does/ violate a fundamental tenet of democracy that I feel should be maintained 18:59:40 namely, that a sufficiently large majority should get to choose 19:00:07 most voting systems violate that in practice 19:00:13 coppro: that's incredibly vague 19:00:25 and it doesn't violate that tenet at all 19:00:31 coppro: what YOU'RE arguing for is literal direct democracy 19:00:41 because, if you have representatives, they could vote for something the large majority doesn't want! 19:00:46 VIOLATES A FUNDAMENTAL TENET OF DEMOCRACY 19:00:54 coppro: and one which is fundamentally impossible to have along with the other "democratic" principles (see arrows theorem which has been mentioned before) 19:00:56 so if you're proposing completely pure direct democracy... 19:01:00 uhh, have fun, I won't be joining you 19:01:00 gah, this yes-to-AV site suggests that AV eliminates tactical voting 19:01:15 which it doesn't, although it makes it both risky and confusing, which means it'll likely drop in practice to a level low enough to not be significant 19:01:45 The ability to successfully vote tactically in practice is very reduced and requires some serious mathematics and accurate opinion polls to work out 19:02:21 which means that only geeks will vote tactically and thus control the system! 19:02:24 YESSSSSSSSSSSSSS 19:02:33 elliott: ++ 19:02:33 -!- augur has quit (Remote host closed the connection). 19:02:39 or rather coppro ++ 19:02:49 coppro: indeed; the correct way to vote tactically under AV is to vote for a party with more extreme views than the party you think is most likely to win but don't want to win first, keeping your other preferences in order, with small probability 19:03:00 elliott: I just prefer a dictatorship with myself at the helm 19:03:00 and I wouldn't want to take that risk 19:03:08 also, the situations in which it comes up are kind-of rare 19:03:13 :-p 19:03:22 dictatorship sounds like too much work 19:03:22 variable: yes, I'm familiar with Arrow's theorem, however, there are voting systems that can maintain a majority criterion provided, of course, that you drop the independence of irrelevant alternatives 19:03:29 i'd just have people use a mind reading device on me 19:03:35 and implement whatever i think is good 19:03:42 independence of irrelevant alternatives is pretty useful 19:04:00 hmm, which of the criteria does AV fail? it meets IIA, doesn't it? 19:04:08 but impossible in any deterministic voting system 19:04:12 variable, a direct democracy would surely work? 19:04:13 ais523: Wikipedia probably has the answers :-P 19:04:19 ais523: no, it doesn't meet IIA 19:04:19 elliott: indeed, but I'm being lazy 19:04:22 in practice, no sane voting system does 19:04:23 Vorpal: Uhhhhhhh, define work 19:04:29 Direct democracy so does not work in practice 19:04:29 because violating the other two are worse 19:04:39 Direct democracy gives you a country with no taxes and infinite public services :P 19:04:50 coppro: oh right, because an irrelevant alternative could get more first-place votes than the party that eventually wins, and yet more or less no support elsewhere? 19:04:53 actually, no 19:04:57 elliott: indeed, but I'm being lazy 19:04:59 by trying to think it out yourself? 19:05:12 oh, because it can split the vote for the eventual best party in half, causing it to lose in the first round 19:05:18 -!- augur has joined. 19:05:26 in fact, a direct democracy would be fun 19:05:30 elliott: hey, thinking's easier than using the Internet 19:05:34 time consuming however 19:05:37 Vorpal: you end up with rational ignorance and tyranny of the majority (ok - not a necc. a mathematical argument - but an important one to) 19:05:43 `addquote elliott: hey, thinking's easier than using the Internet 19:05:47 350) elliott: hey, thinking's easier than using the Internet 19:05:49 Vorpal: A fun BAD IDEA. 19:06:04 variable, you mean like in Switzerland and the Minaret ban? 19:06:22 ais523: yes, exactly 19:06:24 Switzerland isn't totally direct-democracy. 19:06:42 Vorpal: I only read about that in passing - but yeah 19:07:25 ais523: the alternatives to failing IIA are failing the unanimity criterion or a dictator 19:08:46 aren't there four criteria, any one of which can be broken? 19:08:50 oh, the other one's always producing a result 19:09:23 I think Condorcet fails that one, and meets the other three 19:09:29 * tswett waits. 19:09:34 which is a really interesting combo 19:09:38 hrrm 19:09:40 Vorpal: ToM is roughly: "when the controlling members of a voting system vote against the non-controlling members in a way which affords no positive to either side" some would extend that to "in a way which affords to positive to the non-controlling side" 19:09:41 especially as it often does produce a result 19:09:43 variable, you risk that with too anyway. Weather-wane politics to keep the power. 19:09:43 Less likely yes but still a risk 19:09:43 Rational Ignorance is: "I don't care about this issue either way - so I won't vote" and thus leads to a minority controlling 19:09:47 hm 19:09:55 Vorpal: imagine a law giving $100 to every person in new york and taking that from idaho's budget. all the people outside of those two states would not vote (they are rationally ignorant) and NY would win with a bad law (taking money from other people without reason) because of a minority of a total voters) 19:10:04 ais523: hmm, I bet there are voting systems like "Condorcet, and if it doesn't work, tweak and repeat" 19:10:20 there are quite a few condorcet-and-tiebreak systems 19:10:21 variable, right 19:10:22 the tweaking part being the thing that breaks a different criterion, obviously 19:10:28 hmm 19:10:33 like ranked pairs 19:10:41 tweak-and-repeat's an interesting way to do things, though 19:11:02 Switzerland isn't totally direct-democracy. <-- indeed. But in this specific case, that was the aspect that mattered. 19:11:15 elliott: some ideas I have seen are basically threshold + rotate: everyone votes one person from a pool of nominies. If they get at least X% of the vote they get to be in charge for L amount of time after which the next one takes over 19:11:24 once they all rotate - new elections 19:11:25 ais523: Condorcet, and if it produces no result, remove the least popular candidate, and reassign all votes for that candidate to the candidate just above it in poopularity (where popularity is measured by the sum of 1/ranking over all votes for them, or something), then repeat 19:11:50 elliott: Condorcet takes rankings as an input 19:11:58 ais523: oh, and this does mean that if you vote (3, X) and (4, Y) and Y gets knocked off, then you'll vote (3, X) and (4, X) which is impossible normally 19:11:59 gregor! 19:11:59 ais523: yes it does 19:12:01 ais523: I accounted for that 19:12:15 ais523: that system i just invented probably already exists, anyway :) 19:12:16 but it only compares pairwise 19:12:23 ais523: wrong 19:12:38 ais523: create a mapping of candidate->popularity, where popularity = sum1/ranking for all votes for candidate 19:12:43 gregor! ??????? 19:12:44 where ranking is the ranking the candidate was at 19:13:03 ais523: pick the candidate with the least popularity; change all votes for (ranking,candidate) into (ranking,candidate2), where candidate2 is the second-least candidate by popularity 19:13:04 then repeat 19:13:12 no, the way Condorcet works is for any two candidates, a > b if more people put a above b than put b above a, now tsort the results and see who ends up first 19:13:13 gregor! ??????? 19:13:20 it doesn't produce a result because sometimes you have cycles 19:13:21 quintopia, variable, Vorpal: ??? 19:13:22 variable: that is how i go about getting people's attention 19:13:26 ais523: note: if you have (3,X) and (4,Y) and Y gets knocked off and X is candidate2, this turns into (3,X) and (4,X), but that's okay 19:13:29 Gregor: i sent you pm. 19:13:30 Gregor, I have no clue 19:13:32 ais523: AND? 19:13:32 so how do you define "least popularity"? 19:13:35 ais523: I TOLD YOU 19:13:37 quintopia: typically prefixed with a "ping" on IRC :-\ 19:13:38 ais523: you use the ranking pairs directly 19:13:40 not condorcet's output 19:13:43 elliott: ah, OK 19:13:47 I think that probably does have a name 19:14:02 variable: maybe that is a freenode tradition, but i shun and eschew tradition 19:14:30 ais523: yes; possibly it doesn't make the decision to turn (3,worst-candidate-but-one) and (4,worst-candidate) into (3,worst-candidate-but-one) and (3,worst-candidate-but-one) 19:14:35 ais523: (I imagine it might just drop the latter vote) 19:16:15 -!- tswettbot has joined. 19:16:24 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 19:16:30 tswettbot: oh dear 19:16:52 Okay, I think I know what's going on. I'm telling it to connect, but the object holding the connection is instantly garbage collected, since I'm not doing anything with it. 19:16:52 ais523: aargh, one day I'm going to kill G. for introducing "moron in a hurry" 19:16:58 oh shit, it's a tswettbot 19:17:01 tswett: what language? 19:17:03 * pumpkin runs 19:17:05 Smalltalk. 19:17:17 oh shit, is it going to talk to us about the weather then? 19:17:18 tswett: are you using the destructor to close the connection or something? 19:17:24 if so, that's probably a bad idea :) 19:17:31 and I think smalltalks are mark-and-sweep usually, not refcounted 19:17:36 so I very much doubt it's freed instantly 19:17:40 or, rather, they're anything but refcounting 19:17:49 -!- Phantom_Hoover has joined. 19:17:54 I'm not telling it to close the connection at all. 19:18:15 is source available? or is it written in the sort of Smalltalk where source doesn't really exist, only objects? 19:18:19 All I know is that if I don't do something with the object, tswettbot doesn't show up here. 19:18:32 ais523: I could "file out" the package, which might produce readable source code. 19:19:31 ais523: You could have just asked "Is it written in GNU Smalltalk?" 19:19:40 Anyway, Smalltalk projects are usually shared with Monticello, the language-aware VCS. 19:19:51 In Squeak, at least, and IIRC it runs on the popular commercial systems too. 19:20:12 Anyway, Smalltalk's GUI and expressions you evaluate manually apparently do not use separate threads automatically. So, since this expression will continue evaluating until tswettbot disconnects, I don't get to use the GUI for a while. :P 19:20:15 elliott: I think I went to some effort to make sure that in Feather, source really did always exist 19:20:36 -!- tswettbot has quit (Ping timeout: 252 seconds). 19:20:38 tswettbot should be out of here in just a mom--yep. 19:24:20 The file-out was successful, but I have no idea where the file is. :P 19:24:24 out 19:25:12 Here it is. It's inside the application package. 19:25:32 THIS IS WHAT YOU GET FOR USING OS X 19:25:36 or RISC OS I guess 19:25:38 or ROX 19:25:50 Alas, this file is CR-delimited. 19:28:13 CR-delimited? 19:28:42 It uses CR to denote a line break. 19:28:47 There are no LFs anywhere. 19:28:58 is that like comma-separated, with LF between lines and CR between fields? 19:29:08 which would by the way be a nice file format 19:29:25 tswett, classic mac os? 19:29:27 wouldn't using tabs between fields make more sense? 19:29:36 for bonus points, EBCDIC has LF, CR, /and/ NL 19:29:40 hello 19:29:48 I thought OS X didn't use CR any more 19:29:49 I can never spell EBCDIC 19:29:50 it's always 19:29:51 ebidibic 19:29:54 ebidbidbdicbd 19:29:56 btw, do you know the original reason both LF and CR were created? 19:29:56 beidbeidbebibeic 19:29:58 ebdiebdciebdeibcidebciebdiebcidbeicbiecicd 19:30:05 beiber 19:30:08 ais523, what did NL do? 19:30:12 Vorpal: newline, of course 19:30:19 elliott, same! 19:30:22 Vorpal: that's certainly not what I'm *using*. I guess this Smalltalk format just happens to use CR for lines. 19:30:29 ais523, well duh 19:30:31 ais523, but how was it used 19:30:33 the BCD stands for binary-coded-decimal, it's easier to spell if you know that 19:30:36 Vorpal: I don't know 19:30:39 If OS X still used just CR for line breaks, nothing would work. :) 19:30:40 ais523, as compared to how CR and LF were used 19:30:40 ah 19:31:12 are you implying OS X works, tswett? 19:31:22 elliott: no, I'm implying that *some* of it works. 19:31:29 hmm well that might be true, mathematically 19:31:33 depending on the definition of works 19:31:52 For example, I can use the TextEdit application to create a plain text file, open up the Terminal application, cat the file (if I can find it), and boom, it's the file I entered into TextEdit. 19:32:30 tswett: doesn't textedit use rtf even if you just type plain text, by default 19:32:31 ;D 19:32:55 Yup. 19:33:06 hah 19:33:17 I guess it's the file you entered into TextEdit, i.e. literally the file 19:33:21 just not the text you entered into TextEdit :-D 19:33:32 although i don't think the terminal distinguishes \n from \r\n 19:33:40 and it probably decodes any utf-8 sequences 19:33:41 Okay, okay, I have to use some menu options to make that work. :P 19:33:42 so it's not even the same file! 19:33:53 tswett: that doesn't work if you don't have a mouse!!! 19:33:59 Here's what the file-out of my Smalltalk looks like: http://pastebin.com/yi34NaBs 19:34:08 elliott: I don't have a mouse. It works just fine. 19:34:29 tswett: a pointing device, then 19:34:32 You can almost read that file-out. 19:34:45 oh dear, wiktionary has lojban 19:34:52 It's delimited by exclamation marks, apparently. 19:35:06 It's mostly readable, but I have no idea what "]style[(45)f1!" means. 19:35:09 apparently zbasu was formed by finding out what the word is in a bunch of other languages, then taking letters at random 19:35:25 tswett: "TannerSwett" -- your smalltalk name is meant to be your initials, IIRC 19:35:37 nextPutAll: 'USER ', nick, ' * * :', nick; crlf; 19:35:37 second parameter is mode, not * 19:35:38 try 8 19:35:55 also classify your methods >:() 19:35:57 *>:) 19:35:57 No, they weren't taken at random. They used a very sophisticated and specialized PRNG. 19:36:18 tswett: also also, you probably don't want an accessor for the stream 19:36:20 or at least not a /setter/ 19:36:32 I thought the second and third parameters were the hostname and server. 19:36:40 no, that's in the old RFC 19:36:56 Oh. So you're saying the second parameter should be the number 8? 19:37:08 Or any other mode bitmask (there are only two bits you can set that are RFC-defined) 19:37:10 And yeah, I'll classify my methods once I figure out what classification they should go in. :P 19:37:16 IIRC that sets invisible and disables wallops 19:37:21 invisible is forced on freenode anyway 19:37:21 * tswett nods. 19:37:24 and a bot can't do anything useful with wallops 19:37:38 And yeah, I don't want a setter on stream. 19:37:46 tswett: Or arguably an accessor. 19:37:53 The getter should probably go, too, eventually. 19:37:55 Unless there's a reason for arbitrary other classes to be writing to the socket. 19:38:01 You could just have a writeIRCLine: method or something. 19:38:19 I should be using instVarAt: when I really need to access it manually for some strange reason. 19:38:27 So yeah. 19:38:30 Ouch. 19:38:46 Or the object browser. :P 19:38:55 tswett: You should write a working SmallNomic to motivate me to go back to mine :-D 19:39:04 That's what I'm working on. 19:39:14 Step one is obviously to write an IRC bot. 19:39:24 tswett: Damn. Then stop so I don't feel pressure when writing mine. 19:39:51 tswett: I would totally tell you the one thing something can't be called a Smalltalk nomic without, but you'd just STEAL IT if you haven't already and I CANNOT ABIDE BY THAT. 19:40:24 :P 19:40:40 I already have a bunch of ideas. Like, make the nomic scriptable with Lua. 19:40:51 tswett: Was... Smalltalk not good enough? 19:41:03 NO LANGUAGE IS GOOD ENOUGH! 19:41:04 I MUST HAVE TWO! 19:41:21 tswett: The Thing It Must Have is the ability to modify any core class, not just "Nomic-owned" ones, so that the nomic can even modify the programming language it's written in. 19:41:24 Seriously, I've never found a programming language with both persistence and sandboxing. So I'm using Smalltalk for persistence and Lua for sandboxing. 19:41:28 Ostensibly this would produce the GREATEST 19:41:29 PROGRAMMING 19:41:30 LANGUAGE 19:41:31 EVER. 19:41:33 tswett: You don't NEED sandboxing... 19:41:42 Apart from, like, running it in a chroot. 19:41:44 Yes, but it makes things much nicer, doesn't it? 19:41:47 No. 19:41:50 Imagine a MOO that doesn't have sandboxing. 19:41:51 It restricts what the nomic can do. 19:42:01 tswett: Is it meant to be a nomic or a MOO? 19:42:05 No, not that kind of sandboxing. Allow the nomic to sandbox the code that users put into it. 19:42:13 (It can't be both; it can only be a nomic with a MOO subgame.) 19:42:13 A moomic. 19:42:19 Okay, a nomic with a MOO subgame. 19:42:19 No, not that kind of sandboxing. Allow the nomic to sandbox the code that users put into it. 19:42:22 That's the kind of sandboxing I meant. 19:42:40 That's so well-integrated that it becomes a moomic. 19:42:42 tswett: The MOO should obviously be in Smalltalk :) 19:42:48 Mostly because Smalltalk is pretty well suited to writing nomics. 19:42:54 It is, yes. 19:42:58 erm. 19:42:59 Mostly because Smalltalk is pretty well suited to writing MOOs. 19:43:04 It is, yes. 19:43:05 (Because of the message-passing paradigm.) 19:43:21 So how does the sandboxing I mentioned restrict what the nomic can do? 19:43:31 I thought you meant sandboxing proposals themselves and the like. 19:43:35 Which is Satanic. 19:43:40 Oh. Nope. 19:43:58 Let people upload code and run it without asking anyone for permission. Naturally, that requires sandboxing. 19:44:01 tswett: Also also, you may not have a JS-based class browser proposal creation interface, because that's SmallNomic patented :P 19:44:26 * tswett writes the most ingenious code ever: [(Delay forSeconds: 5) wait] fork 19:44:36 Wow! It does nothing, in the background! 19:44:40 Like "sleep 5 &"! 19:44:44 Precisely. 19:44:52 tswett: Anyway if you were a REAL programmer you'd do it in Self. 19:45:36 I wonder how forkAndWait could possibly be useful. It provides threading, but only allows one thread to run at once. 19:45:50 Does it exist? 19:46:00 Yep. You can [(Delay forSeconds: 5) wait] forkAndWait. 19:46:00 Anyway, it'll only wait on it in the current thread. 19:46:07 But you could also just call the block. 19:46:09 I think. 19:46:17 tswett: Why not check out its code/comments? 19:46:41 I did. It says, "Suspend current process and execute self in new process, when it completes resume current process". 19:47:01 Huh. 19:48:45 Huh, there are these things called ProcessSpecificVariables. 19:48:56 tswett: Ew. 19:48:58 I guess which process you're in sometimes matters. 19:49:00 And yes, ew. 19:49:01 Just put it in an object :P 19:49:13 tswett, to protect some sort of thread state perhaps? If smalltalk has anything such 19:49:13 like thread local variables or whatever. 19:49:19 Vorpal: Again, ew. 19:49:22 What's wrong with using an object 19:49:27 [Foo new doThings] fork 19:49:58 elliott, Nothing I assume. I was just trying to give a suggestion for what might be the reason behind it 19:50:07 So, ew. 19:50:25 I don't know smalltalk :P 19:50:31 well I know a few basic things 19:50:33 but that is all 19:50:52 grr, the worst thing with the 19:50:53 -!- Mannerisky has quit (Ping timeout: 246 seconds). 19:50:57 foo stack[constant]; 19:50:59 int stack_ptr = -1; 19:51:05 thing is that you can't have functions that operate on the stack 19:51:12 without passing two params) 19:51:19 int stack_ptr = -1; <-- aieee! 19:51:19 Now to ponder how things are going to send and receive IRC messages. 19:51:22 elliott, needs to be long 19:51:23 Vorpal: what? 19:51:25 Vorpal: ... 19:51:27 or even better unsigned long 19:51:38 probably ssize_t 19:51:40 tswett: surely the bot should do that itself 19:51:47 or size_t 19:51:58 Vorpal: why, it's size-limited 19:52:10 elliott, by how much? 19:52:12 100k 19:52:19 elliott, they why not a short? 19:52:19 which i believe always fits in an int. 19:52:29 Vorpal: oh eff off... and a signed short can't store that 19:52:37 elliott, unsigned one 19:52:47 Vorpal: 100k > 65536 19:52:52 oh hm 19:52:55 and -1 is to denote "empty stack" 19:53:04 elliott, use int_least32_t or whatever the type is 19:53:05 even with 0 = no stack 19:53:06 you can't do 19:53:14 if (--n >= 0) ... 19:53:19 Vorpal: aka int 19:53:25 elliott, anyway I have worked on system where int was 16-bit 19:53:28 elliott, so no 19:53:33 not C90 19:53:33 -!- pumpkin has quit (Ping timeout: 250 seconds). 19:54:18 elliott, yes it is. It was freestanding however. 19:54:28 elliott, but please point me to the paragraph that says int must be at least 32 bits 19:55:04 hmm, seems int has to store at least +-32767 19:55:10 in C89 draft 19:55:16 let me check c99 19:55:31 — maximum value for an object of type int 19:55:31 INT_MAX 19:55:31 +32767 // 215 − 1 19:55:31 elliott, this is from C99 19:55:35 but I doubt it would change it radically from C90 19:55:41 very well then 19:55:45 215 - 1? what?) 19:56:57 elliott, long must be at least 32 bits 19:56:57 elliott, int must not 19:56:57 elliott, this is in 5.2.4.2.1 §1 19:57:04 Vorpal: i'm not talking to you until you stop lagging 19:57:09 elliott, that was 2^15 19:57:09 anyway there is only one solution 19:57:11 but copy paste 19:57:16 char ptr[sizeof(STACK_SIZE)]; 19:57:24 elliott, and it is you who is lagging from my POV 19:57:30 elliott, I think freenode is under attack 19:57:33 actually i dunno if sizeof(234234) works 19:57:35 i guess it does 19:57:37 since it can take a value 19:57:40 elliott, because I have <0.1s lag to server 19:57:40 but without an L suffix 19:57:43 it might sizeof the overflowed int 19:57:50 Vorpal: under attack AND YET 19:57:53 nobody but you is having troubles! 19:57:54 how strange! 19:58:07 elliott, I have no problems on other irc networks 19:58:18 yes. clearly freenode's problem just for you. 19:58:21 they're so kind 19:58:25 I could try reconnecting to another server except it would be a PITA 19:58:32 yes, it would take whole keystrokes 19:58:37 elliott, have you looked in larger channels 19:58:45 elliott, no it would take minutes to rejoin channels :P 19:58:53 #ubuntu looks perfectly fine to me 19:58:58 elliott, atm yes 19:59:01 elliott, there are lag spikes 19:59:12 and also, nobody else in here is whining but that's likely more a result of you being whiny than everyone else not having problems 19:59:20 -!- copumpkin has joined. 19:59:23 now if you'll excuse me, I'll go back to whining about C 19:59:26 -!- copumpkin has quit (Changing host). 19:59:26 -!- copumpkin has joined. 19:59:27 elliott, I'm not whining. You are. 19:59:39 freenode fail, i think freenode is under attack 19:59:42 because i have no problems with other servers 19:59:44 yadda yadda 19:59:46 Vorpal: stop whining about who's whining 19:59:53 olsner, hah 20:00:02 elliott, no. Because I saw that mentioned in another channel 20:00:07 by a former staff. 20:00:14 FORMER staff! golly gosh! 20:00:18 so authoritative 20:00:25 elliott, yep. I trust that guy more than current staff. 20:00:27 :P 20:00:28 anyway since freenode are incompetent i don't see why they'd get the facts right 20:00:33 presumably his sources are inside freenode 20:00:48 elliott, yes quite. 20:01:00 it's strange, you'd expect competence to go UP after lilo [REST OF SENTENCE REDACTED DUE TO EXTREME BAD TASTE] 20:01:24 ouch 20:01:25 lilo the bootloader? 20:01:27 ooh, netclock looks like fun 20:01:31 ais523, ... 20:01:40 ais523: yes. definitely. 20:01:43 ais523, lilo the founder of freenode 20:01:46 Vorpal: ah 20:02:16 i think the biggest channel i've ever seen was the "say the same RIP that everyone else has already said five times about lilo" channel 20:02:31 they turned on +m every now and then and when it came off about 100 messages a second came in 20:02:34 not even exaggerating 20:02:50 ais523, died in a car accident. The driver did a runaway or whatever the English word is. 20:03:06 specifically a car/bicycle accident 20:03:12 a car accident to me implies he was in a car 20:03:20 and doesn't actually implicate another car at all necessarily 20:03:21 Vorpal: hit-and-run? 20:03:56 ais523, ah yes that's it 20:04:18 elliott, he was a pedestrian. 20:04:22 Vorpal: um no 20:04:24 he was on a bicycle. 20:04:26 oh? 20:04:30 was it bicycle? 20:04:32 hm 20:04:33 On September 12, 2006, he was struck by a car while riding a bicycle at night in Houston, Texas in a hit-and-run collision. After the collision, it was reported that he was hospitalized for several days. He died on September 16. 20:04:42 went into a coma, I believe 20:05:00 night → 20:06:02 ais523: I wonder if anyone's just used C with Templates 20:06:03 apart from CUDA 20:06:04 :D 20:06:59 if for each C++ feature, there was a C-like language which was identical for C except with that feature 20:07:09 I wonder how many of the resulting languages would be used? 20:07:11 probably most of them 20:08:09 heh 20:08:13 C with Lambdas 20:08:15 C with Auto 20:08:19 (the different auto) 20:08:23 C with Different Casting Rules 20:08:29 C with Protected 20:08:37 C with More Specific Casts? 20:08:40 yes! 20:08:41 is what you mean? 20:08:44 no 20:08:52 f(x); /* x won't be casted to (void *) in C++ */ 20:08:54 you have to do it explicitly 20:09:02 C with Templates sounds pretty neat 20:09:03 (no matter what the signature of f or x is) 20:09:11 C with Long Compilation Times 20:09:41 X-D 20:09:47 C with Hindley-Milner type inference and implicit closures. 20:09:52 QCC: Now with LCT! 20:10:05 tswett: C++ has that? 20:10:13 elliott: ...really? 20:10:18 tswett: Thus "?" 20:10:27 it has type inference, not H-M though :) 20:10:29 well afaik 20:10:33 * tswett nods. 20:10:33 maybe the lambdas end up mandating it :-D 20:10:45 although you can't declare a function with auto params 20:10:45 so yeah 20:10:54 gah, why isn't there a type that can hold any other type in C :-D 20:10:58 clearly it should be void 20:11:05 because (void *) can point to anything 20:11:33 Because nobody would know how big it is. 20:11:46 sure you would, there's a limit because C implementations can't be TC by the standard 20:11:49 well 20:11:53 they can't be TC in the sense that objects can be infinite 20:11:59 or arbitrarily-sized 20:12:10 How many senses of TC are there? 20:12:26 I mean that hosted C89 is probably TC 20:12:31 but it still can't have arbitrarily-sized objects 20:12:49 it is probably TC with file IO, etc. 20:13:03 Just use a recursive struct. That will obviously solve the problem. 20:13:16 that would be awesome if you could do it :D 20:13:22 struct infinite_array { 20:13:24 bit value; 20:13:27 struct infinite_array rest; 20:13:28 }; 20:13:35 can only be fully addressed in unary 20:13:44 Yeah. There are no problems with that. 20:13:54 (array N ->value) accesses the Nth value 20:13:57 Eh, just use pointer arithmetic. 20:13:58 err 20:13:59 *.value 20:14:08 where zero is the null string, and SN is .valueN 20:14:16 tswett: pointers can only be of finite size 20:14:20 so that can't address the thing fully 20:14:29 in fact, you can't even do &infarray 20:14:33 because pigeonhole principle 20:14:46 If infinite_array is viable, so are arbitrarily large pointers. :P 20:14:53 nuh uh 20:14:57 sizeof(ptr) has to be finite 20:15:14 Yes, but so does sizeof(infinite_array), no? 20:15:15 because char has to be finitely-sized in hosted implementations because of CHAR_BIT 20:15:19 tswett: ...true 20:15:22 DRAT 20:15:27 sizeof should return a float 20:15:28 Hence. 20:15:30 so you can just return +inf 20:15:38 sizeof should return a cardinal number, so you can just return aleph_0. 20:15:44 NO 20:15:44 FLOAT 20:15:49 then you could implement turkey bomb too 20:16:23 Now, suppose you have a type like this: struct infinite_tree { bit value; struct infinite_tree left; struct infinite_array right; }; 20:16:36 it just returns +inf * 2! 20:16:51 The pointers required to address all of those things will have the order type x where x = 1 + x + x. 20:17:12 Rational numbers work perfectly well for that. 20:17:43 :-D 20:17:51 tree is at position 1. tree.left and tree.right are at positions 2 and 3. tree.left.left and tree.left.right are at positions 2 1/2 and 2 2/3. 20:17:53 also, sizeof is in char 20:17:56 so you should have char value; 20:18:10 I was just copying you. You copycat. 20:18:22 ur mom 20:18:31 hey maybe i should write an irc bot in idst 20:19:05 elliott, I think we have the potential to develop a great synergy. We can really leverage this. 20:19:21 tswett: What, your mom? 20:19:28 Yeah, she can really be leveraged hur hur 20:20:04 No, the synergy. We can leverage the synergy to develop solutions. 20:20:57 tswett: But can we do the needful? 20:21:26 elliott: think outside the box. Push the envelope. 20:21:49 tswett: Go further. 20:21:51 Reach out to humans. 20:21:54 Be humanistically synergised. 20:21:57 Precisely, yes. 20:22:06 (What is even the going on.) 20:22:41 yay, cola has been modified recently 20:22:44 (they added babies) 20:23:03 With our humanistically collaborative synergy utilized, we can open new windows to... I have no idea what I'm talking about, so I'll talk about something else. 20:23:14 What I want to do, I guess, is take this stream of characters and turn it into a stream of lines. 20:23:53 http://www.youtube.com/watch?v=VxidKnDXwd4 20:24:09 Ooh, nextLine. 20:25:13 What I want to do, I guess, is take this stream of characters and turn it into a stream of lines. 20:25:16 that's haskell talk :D 20:25:55 What I want is nextLine. :P 20:26:02 /home/elliott/idst/object/st80/_object.st:50: WARNING: redefining _sizeof can break object allocation; check _sizeof carefully in all subtypes 20:26:03 Fancies. 20:26:22 Well that's scary. 20:26:29 Gregor: It's part of the primitive object code :P 20:26:48 I think that messages implies that EVERY OBJECT should check _sizeof carefully, though, which is hilarious :P 20:27:05 tswett: You see, cola is also a better choice for a nomic because you can even edit the structure of a very object from inside! 20:27:11 NOMICS WILL WANT TO DO THAT 20:27:15 What's cola? 20:27:27 I've heard of cola bottle babies, but I don't know that. 20:27:27 Competition for Plof :P 20:27:28 http://piumarta.com/software/cola/ The successor to Smalltalk :P 20:27:34 (In a very real sense.) 20:27:42 In that Alan Kay runs the VPRI, and cola is the VPRI's project. 20:27:48 Gregor: Competition to @ too, it just isn't at that stage yet :P 20:27:54 tswett: Basically it: 20:27:59 tswett: (1) Completely describes itself in itself. 20:27:59 "cola (aka Idst, Jolt, the SODA languages, &c.) is an ongoing project to create a springboard for investigating new computing paradigms." Drat, I should have used "springboard" and "paradigm" up there. 20:28:03 tswett: (2) Is completely implemented in itself. 20:28:11 tswett: (3) Late-binds, and therefore lets you change, EVERYTHING. 20:28:20 Including how objects look in memory. 20:28:20 elliott: do you think we can leverage our synergy to create springboards for new solution paradigms? 20:28:24 Yes. 20:28:37 ais523: Can I pay you to bring back PerlNomic? 20:28:54 rm -f CodeGenerator-local.st 20:28:55 cp -p CodeGenerator-x86_64.st CodeGenerator-local.st 20:28:55 cp: cannot stat `CodeGenerator-x86_64.st': No such file or directory 20:28:58 THIS ARCHITECTURE DOES NOT FEEL SUPPORTED 20:29:05 elliott: if you pay me rent for an appropriate VPS, perhaps 20:29:13 No wait, there's no CodeGenerator anything. 20:29:18 C nomic in the form of a self-compiling C compiler: Best idea? 20:29:18 ais523: I already have a VPS X-D 20:29:26 Gregor: Either that, or worst idea :P 20:29:35 elliott: Aren't they the same? 20:29:41 Gregor: Obviously. 20:29:47 right, there's only ppc and i386 and arm code generators 20:29:50 * elliott make clean 20:30:00 Dudes, sandboxing is the most important possible codenomic feature. 20:30:12 tswett: No, it's the most important possible MOO feature :P 20:30:15 Self-modification is utterly unimportant compared to sandboxing. 20:30:18 X-D 20:30:18 Well, yes. 20:30:37 Let's turn Agora into a game of Chess. 20:30:47 "This proposal removes proposals." 20:30:51 "Checkmate." "Okay, I... uh..." 20:30:52 -!- augur has quit (Read error: Connection reset by peer). 20:30:57 elliott: BTW, do you know any reason why LXC (lxc.sf.net) plus a non-shitty FUSE unionFS wouldn't be a complete replacement for plash, but more maintainable? 20:31:07 "I call for judgement on the statement 'It is possible to call for judgements.'" "FALSE." "Drat." 20:31:10 The observation makes me almost want to write a non-shitty FUSE union FS ... 20:31:10 -!- augur_ has joined. 20:31:15 Gregor: lxc depends on cgroups, which I don't like. 20:31:19 And I don't think BFS supports. 20:31:26 OTOH, I like the idea of cunionfs. 20:31:40 So on one hand, I don't want you to switch to that system, but on another, I want cunionfs. 20:31:45 I cannot possibly advise. 20:32:09 elliott: would you happen to know if it's possible to take a stream in Smalltalk and split it into two streams, each producing the same data when read? 20:32:18 tswett: Why do you want to do that ... 20:32:29 elliott: Well, the alternative is to carve out the part of plash that depends on glibc and swap it out for a FUSE union FS. 20:32:34 So that if something wants to listen to the stream, you can just hand it a stream. 20:32:38 Maybe that's not the way to do this. 20:32:47 Gregor: That would work, but also sounds fairly pointless :P 20:32:53 Gregor: But it would give me what I want :P 20:33:04 Gregor: I would suggest writing it as an actual kernel module for lower latency though >_> 20:33:51 cola totally needs to use a build system written in cola. 20:34:03 Ooh, I just got the BEST IDEA. 20:34:15 elliott: The advantages of FUSE are: 1) The only root part is still just a program to do the chroot/setuid, and 2) I don't have to worry about enforcing permissions other than the ones requested :P 20:34:29 tswett: What. 20:34:30 But yeah, speed, bleh 20:34:36 We should have a bunch of codenomics in Smalltalk. Each codenomic should periodically pick a random class name, and copy that class out from another codenomic to itself. 20:34:42 Gregor: Well, Kitten would kinda want to use a cunionfs / :P 20:35:02 elliott: Yeah, SPS wanted a cunionfs /usr :P 20:35:17 So, Cola is completely self-describing. Does that mean that from the inside, the system looks as if it's interpreting itself? 20:35:26 Gregor: And FUSE for that sounds ... un-nice. 20:35:28 tswett: Compiling. 20:35:35 Okay. Whew. 20:35:35 tswett: And it doesn't just LOOK like it, it IS. 20:35:40 Cola's compiler is written in Cola :P 20:35:44 Also its object model. 20:35:45 Sun Microsystems introduced the first implementation of a stacked, layered file system with copy-on-write, whiteouts (hiding files in lower layers from higher layers), etc. as the Translucent File Service in SunOS 3, circa 1986.[4] 20:35:47 GOD DAMN IT SUN 20:35:59 I believe there's still a "runtime" in C, but as described in their paper, 20:36:05 the runtime doesn't define or control the object model. 20:36:11 elliott: okay, so... it's a lot like Smalltalk, isn't it. 20:36:11 http://piumarta.com/software/cola/objmodel2.pdf 20:36:22 tswett: It's like Smalltalk, except not failing at its goals. 20:36:40 tswett: Remember, this project is by Alan Kay's company, and I'm assuming you know who he is :P 20:36:41 * tswett opens up a typing practice program, and is asked to type "anesthetist house distensions nooned unstated outsets standouts nineteenths . . ." 20:36:54 Smalltalk defines a rigid in-memory layout to all its objects. 20:36:56 I think this program's estimate of my typing speed is going to be... inaccurate. 20:37:00 That cannot be changed at all. 20:37:05 Alan Kay. He's that guy who sounds like LNK. 20:37:12 tswett: He's the guy who invented Smalltalk >_< 20:37:26 (And therefore OOP :P) 20:38:33 aha 20:38:35 I just need x86_32 20:38:38 stupidest named target ever 20:38:46 hmm, there looks to be 64-bit support too but i guess it sucks 20:38:54 Maybe the builtin UnionFS is actually sufficient by now ... 20:39:15 OHWAITNOBLEH the whole issue is that I need to make sure it has /host user/ permissions, not /guest user/ permissions 20:39:32 tswett: Also "However, I am no big fan of Smalltalk either, even though it compares very favourably with most programming systems today (I don’t like any of them, and I don’t think any of them are suitable for the real programming problems of today, whether for systems or for end-users)." --Alan Kay :P 20:39:43 cola is basically meant to fix the fact that Smalltalk doesn't late-bind EVERYTHING. 20:39:53 By doing so, it ends up being completely self-reflective and self-implemented. 20:39:57 Gregor: wat :P 20:40:30 Gregor: I think FreeBSD jails might work for you, btw 20:40:35 Gregor: (prgmr can do BSD :P) 20:40:36 elliott: Yes, they would. 20:40:42 Just sayin' 20:40:48 elliott: prgmr can do NET 20:40:55 They might be Freeable but Idonno. 20:40:57 Gregor: It can do anything Xen can. 20:41:11 Gregor: There are sites with loads of howto-do-OS-blah-on-Xen things. 20:41:24 Well, what I mean is that there exist instructions on how to install NetBSD within an existing Linux without momentarily breaking out of Xen to start an install :P 20:41:43 "Testates"? What does that word mean? 20:41:45 Gregor: You could use the updated depenguinator :P 20:42:03 Gregor: http://www.daemonology.net/blog/2008-01-29-depenguinator-2.0.html 20:42:11 But it doesn't have Xen-specific things :P 20:42:11 SO UPDATED 20:42:33 Gregor: 2008-01, updated enough for me 20:42:39 Frankly if I switched to FreeBSD, it would be Debian GNU/kFreeBSD. My experience with the FreeBSD userland has been "OH GOD WHY" 20:43:11 Gregor sees a nasty userland and thinks "hey, GNU would be so much nicer" :-P 20:43:22 Maybe it's more like 20:43:24 That's because it is. 20:43:25 FreeBSD is all "OH GOD WHY" 20:43:30 But with GNU it's all "OH GOD WHY STOP BURNING MY CHILDREN" 20:43:33 and I'm an extreme masochist. 20:43:41 No matter what your silly opinion is, GNU currently has the best console tools that exist. 20:43:56 (My silly opinion :P ) 20:43:56 Best COMPLETE SET, maybe. 20:44:12 There are plenty of tools better than GNU's, they're just not in convenient packages :P 20:44:26 OK, let me make a more concrete statement: 20:44:38 "Every non-GNU program sux" 20:44:39 Nearly every GNU userland tool is better than its FreeBSD equivalent. 20:44:48 What? I can't troll that statement. 20:44:49 Plz fix. 20:45:05 /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libreadline.so when searching for -lreadline 20:45:05 /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libreadline.a when searching for -lreadline 20:45:12 ffff 20:45:31 I wish distros had competent multiple-architecture support that used qemu. 20:45:43 Then a sane 32-bit environment would just be s/qemu-x86_64/linux32/ 20:47:04 "Done with lesson 2! You typed 100 words in approximately 10 minutes." 20:47:08 I r typing master. 20:47:14 Wow :P 20:47:20 Are you really that terrible? 20:47:58 Can mount --bind be -o ro? 20:48:17 TIAS? 20:48:41 elliott: only with Dvorak. 20:48:52 [~/gregorsucks]% sudo mount --bind -o ro a b 1 20:48:52 mount: warning: b seems to be mounted read-write. 20:48:56 Gregor: No. 20:49:00 I'm using ten letters of the alphabet to type words that are, on average, ten letters long. Double that to get my actual typing speed with those ten letters. 20:49:08 [~/gregorsucks]% echo hello >b/b 20:49:08 [~/gregorsucks]% cat a/b 20:49:08 hello 20:49:10 Gregor: Doubly no. 20:49:21 My usual plash setup isn't actually unioning anything :P 20:49:22 Assuming that a word is actually five letters long on average and spaces take no time to type. 20:49:31 * Gregor hmmms some more. 20:49:44 elliott: how would you have lots of things listening to one stream? 20:49:51 tswett: Why would you have that? 20:50:02 I would have the bot read each line, then give it to everyone who's said they want to listen to lines. Possibly in threads. 20:50:25 * tswett nods. 20:51:13 tswett: Rule of thumb: Objects should be the only point of access to their members'... "features" :P 20:51:26 In this case, "getting lines from IRC". 20:51:30 * tswett nods. 20:51:32 And the object is the bot connection object. 20:51:54 "I have some ideas for a website but I don't have any skills in the realm of web development. Is there a site I can submit an idea to that will uphold my potential rights and ensure that no one implements my idea without consulting me first?" 20:52:04 And I thought copyright couldn't get any worse. 20:52:14 elliott: yes, the United States Patent and Trademark Office. 20:52:26 tswett: You can't copyright the idea for something, only an implementation. 20:52:26 is elliott trying to say that uncle tswett has accessed his privates? 20:52:30 He readily admits he can't implement it. 20:52:32 olsner: Yes. 20:52:43 elliott: really? Don't software companies patent ideas all the time? 20:52:49 tswett: Or do you mean "you can do it in practice, just you shouldn't be able to" 20:52:51 In which case, I agree 20:52:59 * tswett nods. 20:53:02 I thought you were saying that it was a proper avenue to do it :p 20:53:27 What do you think of overriding #new so that it throws an error, and using a keyword message to create new objects? 20:53:30 "I meant that it would be quite depressing for someone else to create a website with the same idea, that's all." ;; I wonder if this guy is trolling 20:53:38 It would be really sad if someone did this thing that I can't, so it should be made illegal! 20:53:45 It's wrooooooooong for people to think things that I've thought! 20:53:57 tswett: Make #new private instead. 20:54:07 * tswett nods. 20:54:08 tswett: OTOH, that may break the common idiom: 20:54:09 How do I do that. 20:54:14 foo := AClass new 20:54:23 foo: initialisationStuff; 20:54:24 s/// 20:54:25 bar: yupyup; 20:54:26 yourself. 20:54:27 elliott: http://sprunge.us/TSfJ LINUX: ONLY THE FINEST IN LOGIC 20:54:36 (Replace something with something; I'm too lazy to tell you what.) 20:54:43 Gregor: Uhhhhhhhhhhhh, wow. 20:55:00 tswett: Why'd you want to do it? 20:55:07 I mean, I think it's as simple as actually I have no idea. 20:55:11 Wait, you can't have private methods in Smalltalk. 20:55:17 Duh. 20:55:30 tswett: But yeah, what does your keyword initialiser do that makes you want to ban plain new? 20:55:59 elliott: well, I'd like this object to represent a connection to IRC, and... hm. 20:56:04 tswett: 20:56:10 conn := IRCConnection new 20:56:15 host: 'irc.freenode.net'; 20:56:21 port: 666; 20:56:23 yourself. 20:56:24 conn connect. 20:56:24 * tswett nods. 20:56:25 [...] 20:56:41 Is that better than connectTo:host:port:et:cetera:? 20:56:50 Mmmm, no. 20:56:53 * tswett nods. 20:56:55 Because you shouldn't be able to set them afterwards. 20:57:02 tswett: OTOH, make it 20:57:02 elliott: HALP, I'm starting to become convinced that bind mounts + chroot/setuid are all I need X-D 20:57:05 So how I'm currently doing things is perfect. Excellent. 20:57:06 connectTo: 20:57:07 connectTo:onPort: 20:57:23 With connectTo: using the reasonable default. 20:57:26 (194, obviously!) 20:57:29 (Or 6667 :P) 20:57:43 tswett: Just nicer naming IMO 20:57:48 conn := IRCConnection new. 20:57:54 conn connectTo: 'irc.freenode.net' onPort: secret. 20:57:58 withPort:withNick:withChannel: 20:57:59 :P 20:58:11 tswett: Ewwww. 20:58:18 connectTo:withThePortConnectedToBeingThePortNumbered: 20:58:24 conn := IRCConnection new. 20:58:29 conn nickname: 'MyBot'. 20:58:30 conn connectTo: 'irc.freenode.net' onPort: secret. 20:58:37 nickname: should automatically decide whether it's connected or not :P 20:58:42 Ooh, a nickname: message. I definitely need that. 20:58:45 And send a NICK message if it is. 20:58:50 If not, connectTo:onPort: will send it. 20:58:55 Thus avoiding TEH UGLY. 20:58:59 tswett: And of course join: and part: 20:59:04 So 20:59:08 conn := IRCConnection new 20:59:11 nickname: 'MyBot'; 20:59:19 connectTo: 'irc.freenode.net' onPort: secret; 20:59:23 join: '#esoteric'; 20:59:24 yourself. 20:59:38 -!- calamari has quit (*.net *.split). 20:59:40 -!- FireFly has quit (*.net *.split). 20:59:40 -!- variable has quit (*.net *.split). 20:59:42 -!- Ilari has quit (*.net *.split). 20:59:42 -!- sebbu has quit (*.net *.split). 20:59:47 -!- Vorpal has quit (*.net *.split). 20:59:47 -!- Ilari_antrcomp has quit (*.net *.split). 20:59:53 -!- olsner has quit (*.net *.split). 20:59:56 -!- yiyus has quit (*.net *.split). 20:59:57 -!- augur_ has quit (*.net *.split). 21:00:05 -!- lifthras1ir has quit (*.net *.split). 21:00:08 -!- quintopia has quit (*.net *.split). 21:00:14 Also connectTo should probably return immediately, rather than waiting for the network to reply or whatever. 21:01:10 It doesn't wait for any replies, I think. So we're good. 21:01:59 Are you using Squeak or Pharo or what? 21:02:25 -!- calamari has joined. 21:02:26 -!- Ilari_antrcomp has joined. 21:02:26 -!- Vorpal has joined. 21:02:26 -!- sebbu has joined. 21:02:26 -!- Ilari has joined. 21:02:26 -!- variable has joined. 21:02:26 -!- FireFly has joined. 21:02:26 -!- yiyus has joined. 21:02:26 -!- olsner has joined. 21:02:26 -!- lifthras1ir has joined. 21:02:26 -!- quintopia has joined. 21:02:51 Are you using Squeak or Pharo or what? 21:04:18 Yes. 21:04:25 Specifically, one of the former two. 21:04:29 Specifically, Pharo. 21:05:01 What should join: do when we're not connected? Throw an error? 21:05:07 Add it to the list of channels we should be in? 21:06:14 -!- augur has joined. 21:10:57 tswett: The latter :P 21:11:26 tswett: And part: should remove it... technically I think basically everything should work before you connect, including PRIVMSG. 21:11:33 So you could say what you want to happen immediately after connect, then tell it to actually connect. 21:11:54 -!- augur has quit (Remote host closed the connection). 21:13:28 ais523: hmm, you can't pass a structure to a varargs function, can you? 21:13:35 or can you, if you also pass its size? 21:13:57 in va_arg, you have to specify what type the arg is 21:14:10 yes, but let's assume that you specify the right type 21:14:10 and it could calculate the size from that 21:14:12 by magic 21:14:21 ais523: but e.g. you can't pass a float to a variadic function 21:14:24 because it gets upconverted to double 21:14:34 I don't think floats get upconverted to anything 21:14:46 ais523: um, yes, they do, for varargs 21:14:57 http://c-faq.com/varargs/float.html 21:15:03 A: In the variable-length part of variable-length argument lists, the old ``default argument promotions'' apply: arguments of type float are always promoted (widened) to type double, and types char and short int are promoted to int. Therefore, it is never correct to invoke va_arg(argp, float); instead you should always use va_arg(argp, double). Similarly, use va_arg(argp, int) to retrieve arguments which were originally char, short, or int. (For an 21:15:03 us reasons, the last ``fixed'' argument, as handed to va_start, should not be widenable, either.) See also questions 11.3 and 15.2. 21:15:07 *structs get upconverted 21:15:13 I know floats get upconverted, just typoed that they didn't 21:15:16 ah 21:15:27 that was a bad typo 21:15:32 OK, I thnk you can write a generic stack_push, but only in C99 21:15:49 unless you can't say 21:15:53 va_arg(ap, char[8]) 21:15:57 or even if you can, it might be illegal to say 21:16:01 va_arg(ap, char[obj_size]) 21:17:19 void stack_push_(void *stack, ssize_t *ptr, size_t obj_size, ...) 21:17:19 { 21:17:19 va_list ap; 21:17:19 char *data; 21:17:19 va_start(ap, obj_size); 21:17:20 data = va_arg(ap, char[obj_size]); 21:17:22 (*ptr)++; 21:17:24 memcpy(stack + ptr, data, obj_size); 21:17:26 va_end(ap); 21:17:28 } 21:17:30 ais523: behold the probably-invalid Cthulian horror 21:18:29 hmm 21:18:31 is char foo[a->b] valid? 21:18:32 in C99 21:18:36 Gregor knows these things! 21:18:48 -!- augur has joined. 21:20:39 Looks like a valid VLA in general. 21:21:44 hmm, darn, I think this will fail if a pointer to an element is smaller than (void *) 21:22:35 and I need a typeof too! oh woe! 21:22:36 this is impossible 21:23:01 otoh i could re-evaluate stack 21:23:36 and wait, stack_push could just be a macro in general... 21:24:42 http://sprunge.us/hRjV ;; an exercise in pointless 21:25:36 In any case you can only portably call va_arg when the specified type is compatible with the actual type of the corresponding provided argument (after the default argument promotions); and "compatible type" is a rather strict requirement. 21:25:40 -!- MigoMipo has quit (Read error: Connection reset by peer). 21:25:41 I just realized that in Smalltalk, you can save the world. 21:26:40 fizzie: Unfortunately types aren't values you can pass around :P 21:26:52 C should be Lisp, dammit. 21:27:38 Does Smalltalk have a nice way to denote a throwaway argument, like Haskell? 21:27:58 tswett: You shouldn't have them. Why do you have them? 21:28:06 (I realise I'm being annoyingly X-Y-problem here.) 21:28:20 Also the type in va_arg needs to be named such that simply postfixing a * makes a pointer to that type, and "char[obj_size]*" doesn't seem to be anything sensible. 21:28:35 fizzie: WELL YOU MAKE IT WORK THEN :P 21:29:11 elliott: because ifNotNilDo: takes a block that accepts one argument. 21:29:12 I have a feeling making it work completely portably is just not possible. (You need not have a general sort of stack to have a C, after all.) 21:29:23 tswett: Does [foo] not work as a block? 21:29:33 elliott: it doesn't work as a block that accepts one argument. 21:29:37 tswett: Also, it seems ifNotNilDo was removed from Pharo. 21:29:50 That's strange, because I'm using it. 21:29:53 In Pharo it’s been fixed long ago, and today somebody removed all sends of ifNotNilDo:, so the era of one of my “major small Squeak annoyances” finally completely ends today and ifNotNilDo: is history, at least in Pharo. 21:29:55 tswett: use ifNotNil. 21:30:02 Okay. 21:30:05 anObject ifNotNil: [:obj | obj doThing]. 21:30:08 tswett: Don't throw away the argument. 21:30:17 I don't know why you're meant to use the parameter. 21:30:23 But them's the breaks. 21:30:24 Even though obj is always the same as anObject? 21:30:31 fizzie: Err, it's not about the C stack. 21:30:41 tswett: maybe it's not guaranteed to be! Who knows. 21:30:42 *M 21:30:45 (*Maybe) 21:32:03 elliott: Yes, I see (now); but still, you could for example have an argument-passing system where floats and ints go to different stacks, and then va_arg'ing them without knowing the type's not going to be very easy. 21:32:31 fizzie: True. 21:32:32 If you're okay with only pushing objects you can take & of, you could have your macro provide sizes and pointers-to, but then you couldn't push literals. 21:32:46 Though was it possible to take & of a compound literal? 21:33:20 If you could somehow auto-declare a temp variable to use, you could & that. :p 21:34:31 "drawline(&(struct point){.x=1, .y=1}, &(struct point){.x=3, .y=4});" is listed as an example call when drawline expects a pointer to struct point. 21:34:56 Ouch. 21:35:08 So maybe your macro could wrap "x" to &(struct { typeof(x) field; }){ .field = x }. 21:35:15 (Still needs typeof.) 21:35:53 fizzie: Not if the declarer thing included a dummy 21:35:58 struct dummy { type field; }; 21:36:04 :p 21:36:13 And then malloced it to avoid the inevitable initialisation. 21:37:24 I think there was some sort of a rule that offsetof of the first struct member must be 0, so you should be able to then take that pointer and read sizeof(x) bytes out of it. (Though you need to cast it to a known pointer type before passing, either a void * or a char *.) 21:37:49 hey, they're maintaining the squeak os again 21:38:25 fizzie: The main thing was to avoid reevaluating the arguments. "So yeah." 21:38:42 Is initialize supposed to call super initialize? 21:38:47 Yes, it probably is. 21:39:11 Then again, maybe not. 21:40:13 elliott: halp 21:40:18 tswett: wat 21:40:38 elliott: should the initialize message I define call super initialize? 21:40:55 tswett: Look at some subclass' initialize message, see if it does :P 21:40:58 I think so but don't recall. 21:44:03 Why yes, I do super initialize. 21:44:54 Your MOM supernitialises. 21:45:05 More like SuperLAMEISES!!!!!!~!!!!!!!!\ 21:45:31 -!- pumpkin has joined. 21:46:07 I'M SO LAME 21:46:14 tswett: Is it not joining here any more? 21:47:05 -!- copumpkin has quit (Ping timeout: 246 seconds). 21:47:05 I haven't run it yet. :P 21:48:24 * tswett runs it. 21:48:38 tswett: Dudes, you totally need to make it so you can MODIFY IT WHILE IT RUNS 21:48:56 tswett: Are you still making it hang or are you "[bot connect] fork"ing :P 21:49:03 *connectTo: ... 21:49:06 http://www.cracked.com/blog/exploring-the-mysteries-of-the-mind-with-the-sims-3/ 21:49:19 elliott: I'm still making it hang. 21:49:33 tswett: Make the bot die and do that instead :P 21:49:50 What do you mean, make the bot die? I haven't run it yet. 21:53:01 Oh. 21:58:11 -!- elliott has quit (Ping timeout: 248 seconds). 22:06:10 -!- BeholdMyGlory has quit (Remote host closed the connection). 22:06:12 -!- FireFly has quit (Quit: swatted to death). 22:08:22 -!- copumpkin has joined. 22:09:08 -!- pumpkin has quit (Ping timeout: 246 seconds). 22:13:16 -!- Phantom_Hoover has quit (Remote host closed the connection). 22:58:44 -!- Sgeo has joined. 23:02:28 * tswett arrives. 23:36:14 -!- cheater00 has joined. 23:38:13 -!- sebbu has quit (Ping timeout: 264 seconds). 23:39:12 -!- cheater99 has quit (Ping timeout: 258 seconds). 23:40:48 -!- sebbu has joined. 23:40:48 -!- sebbu has quit (Changing host). 23:40:49 -!- sebbu has joined. 23:44:35 -!- augur has quit (Remote host closed the connection). 23:48:29 tswett, this isn't a MUD 23:49:18 Sgeo: what isn't? 23:49:28 #esoteric 23:49:31 * tswett nods. 23:49:36 Erm, hmm 23:49:54 It's not a dungeon. Although I think myndzi would disagree \m/ \m/ 23:49:55 `\o/´ 23:49:55 | 23:49:55 /´\ 23:49:55 (_| |_) 23:52:58 Ahh, myndzi. 23:53:03 \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ 23:53:09 Aww. 23:53:22 \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ 23:53:28 Yeah, no? 23:53:34 \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ 23:53:38 \m/ \m/ \m/ \m/ 23:53:42 \m/ \m/ \m/ \m/ 23:53:46 \m/ \m/ \m/ \m/ 23:53:48 * tswett shrugs. 23:53:50 \m/ \m/ \m/ \m/ 23:53:53 \m/ \m/ \m/ \m/ 23:54:00 \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ 23:54:04 \m/ \m/ \m/ \m/ 23:54:11 aww 23:54:20 \m/ \m/ \m/ 23:54:22 Well, maybe myndzi's \o/ limit is two \o/ s or something. 23:54:23 | | 23:54:23 /| /| 23:54:59 Or \o/ maybe \o/ they \o/ just \o/ have \o/ to \o/ be \o/ well-separated. 23:55:00 | | | | | ¦ | 23:55:00 /| /´\ /`\ /`\ /´\ ´¸¨ /| 23:55:13 What's that sixth one? 23:58:30 * Sgeo suddenly wants to make a four-dimensional maze in LambdaMOO