00:00:18 also, quintopia, what do you like? 00:00:50 (also, I can't find a reason to distinguish between = and == in such a language..) 00:01:35 nddrylliog: anything that is done while naked with a member of the opposite sex, also naked 00:01:41 (seriously, like about what?) 00:02:20 quintopia, about languages 00:02:37 Let's write a programming language based on Wang tiles. 00:02:40 oh. I only like Makefiles 00:02:50 i program everything in Makefile 00:04:00 that would be a huge turn-off 00:04:29 Lymia: no. 00:04:35 why? you never have to try to remember how to call your program 00:04:37 Why not? 00:04:39 it's always just "make" 00:04:45 :D 00:04:47 Lymia: because 00:05:27 Let's make a programming language based on complex numbers. 00:05:36 make: *** No rule to make target `love'. Stop. 00:05:41 Lymia: no 00:05:45 how about a language called Bugger Overflow? You guys still haven't suggested a good language for that name. 00:05:46 tssk, no Daft Punk references. Shameful. 00:05:47 Why not? :( 00:06:00 quintopia, the only way to control program flow is to intentionally overflow buffers. 00:06:16 umm 00:06:26 how is it structured that that's the only way 00:07:13 even in C, the real damage is done upon returning from called function... 00:07:22 which is another form of control flow... 00:07:32 Figure it out. 00:07:39 O KAY 00:07:59 -!- elliott has set topic: argaarognaroijrigjieajgioajorjg. 00:08:02 it's staying like that 00:08:03 forever 00:08:31 -!- quintopia has set topic: alright, forever's up. 00:08:55 woo hooo http://bpaste.net/show/13389/ 00:09:01 -!- elliott has set topic: forever is like no times tfoij oj jlol what's this even. 00:09:17 best language evar 00:09:19 nddrylliog: "e.address.next" this is don't even i mean what is this you're 00:09:21 it should be +1 surely 00:09:23 you're just the and it 00:09:39 i really think having the address stuff in there is gonna make the logic fall down a bit :) 00:09:41 elliott, nope, + 1 iz no good 00:09:45 elliott: *you're* just the and it 00:09:52 _especially_ if you define addresses to be finite and every object to have a unique address. 00:10:21 map.c:501: error: incompatible types when assigning to type ‘Uint32’ from type ‘RGB’ 00:10:22 god what a fuck 00:10:29 so inconsiderate? 00:10:31 erm 00:10:31 elliott, + 1 doesn't mean much for adresses.. 00:10:31 wow 00:10:34 i was going to write duck :D 00:10:39 nddrylliog: sure it does, it means the address after that. 00:10:53 well ok you want +sizeof(blah), but er, you could do it like C and have +1 mean that 00:10:53 elliott, well so does anAddress.next - and it's a convention, for list-like data structures as well 00:10:57 i mean you need that anyway 00:10:57 yeah 00:10:58 but no 00:11:00 but yeah 00:11:01 i mean you need that anyway 00:11:02 but it'll be confusing 00:11:04 because address.next does that 00:11:07 yup 00:11:12 so address.next changes meaning depending on what you're addressing with it, which is just 00:11:13 your language is just 00:11:17 well 00:11:17 you need to think this through some more :P 00:11:35 I'd rather have address.next's meaning depending on what you're adressing, rather than + 1 depending on what you're adressing 00:11:35 really. 00:11:47 cause, you know, I'd expect "next" to be the next "thing", ie. the next "whatever". But I'd expect 1 = 1. 00:12:26 (I think I get it now: #esoteric is a niche social network dedicated entirely to dating elliott) 00:14:06 -!- copumpkin has joined. 00:15:26 nddrylliog: PRECISELY 00:15:33 although oerjan is also available. 00:15:40 I'd rather have address.next's meaning depending on what you're adressing, rather than + 1 depending on what you're adressing 00:15:43 but address.next means one thing 00:15:44 in your case 00:15:47 x == address.next 00:15:47 and 00:15:49 y == address.next 00:15:53 the .nexts there are evaluated differently 00:15:57 and that's just hugely fucked up. 00:16:03 UNLESS 00:16:09 you parameterise the address type on the type it's addressing 00:16:10 i.e. 00:16:10 instead of 00:16:17 "foo.address has type Address" 00:16:18 you have 00:16:23 "foo.address has type Address(foo's type)" 00:16:28 then .next could depend on that. 00:16:36 you would need conversions of course. 00:16:43 well yeah obviously 00:16:47 that's what I meant. 00:17:06 nddrylliog: so how do you write functions in this, tell it the big-O you want and it figures the rest out itself? :) 00:17:09 when i think address I think C, and.. C pointer types are somehow "parameterized" 00:17:28 re: functions: exactly! 00:18:28 -!- Behold has quit (Remote host closed the connection). 00:18:46 sure they are parameterised. (T *) has overloaded + :) 00:20:29 C? overloaded? surely you just. 00:20:31 *jest 00:21:28 Sorry elliott, I was asleep 00:21:39 Unforgivable. 00:21:49 So you hate my esolang 00:21:58 Did I say that? 00:21:59 :p 00:22:00 As for the AMD64/IA-32 PE/ELF stuff 00:22:02 WHY NOT? 00:22:07 'CUZ WINDOWS SUCKS 00:22:19 kfr, what's your esolang? 00:22:50 http://siyobik.info/misc/esolang/prime.html 00:22:55 It was just a quick joke idea 00:23:05 But writing a self hosting compiler would be massively awesome 00:23:10 Especially a portable one 00:23:56 It would probably be easier for a simpler language though 00:24:14 I wouldn't have to deal with stuff like optimising tail recursion etc 00:24:53 self-hosting? without IO? tough job 00:25:12 It prints the return value of the main "program" function to stdout at the end 00:25:15 also, without strings :D 00:25:21 hmm. 00:25:29 eh, pixley does it 00:25:29 what would it compile to? 00:25:32 So there is just one form of implicit output 00:25:41 nddrylliog: An AMD64 PE, for example. 00:25:58 No external dependencies other than kernel32.dll 00:25:59 nddrylliog: he wants to compile it to multiple executable formats because I don't know. 00:26:08 On Linux you could even do it without any shared libraries 00:26:10 Perhaps because he uses Windows and would like to convince himself that that's not a bad thing. 00:26:27 I use a variety of operating systems 00:26:49 ah right. 00:26:52 elliott I'd just like to do that because it would be really impressive and because it would take a considerable amount of effort 00:27:03 -!- variable has quit (Quit: Daemon escaped from pentagram). 00:27:07 Generating PE vs. generating ELF is not really all that much work. It's just header.s 00:27:09 *headers. 00:27:32 -!- macrohauler has joined. 00:27:36 -!- macrohauler has left (?). 00:27:44 nddrylliog: http://catseye.tc/projects/pixley/src/pixley.pix "Self-hosting" Pixley, although admittedly it is an interpreter, not a compiler. 00:27:56 elliott, yup, I googled that a minute ago 00:28:55 How is it self hosting then? 00:29:12 well with a Pixley specialiser, you can turn it into a compiler. :) 00:29:49 specialiser? 00:30:03 nddrylliog: read this: http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html 00:30:18 I have no clue whether I should go with Git or Mercurial 00:30:23 For single-person projects 00:30:29 Sgeo: scapegoat 00:30:34 I'm under the impression that Mercurial's easier 00:30:37 Sgeo: more seriously: darcs. 00:30:50 but scapegoat, once scapegoat exists! 00:31:00 That's the one that's notable only due to it being Haskell? 00:31:04 what? 00:31:09 >.> 00:31:13 darcs is notable due to having the only decent UI of any version control system. 00:31:23 and also the only "major" one that treats patches in any even vaguely-sane way 00:31:31 as opposed to just treating commits as copies of the whole repository. 00:32:08 Does TortoiseDarcs exist? 00:32:10 * Sgeo googles 00:32:23 Tortoise* are all terrible. 00:32:33 i don't know why anyone would use them apart from acute brain damage 00:32:35 * kfr used TortoiseSVN and uses TortoiseGit 00:32:45 lot of brain damage today! 00:32:53 Oh, I've also used TortoiseHg at some piont 00:33:24 -!- cheater- has joined. 00:36:13 -!- cheater00 has quit (Ping timeout: 240 seconds). 00:37:08 darcs is notable for having been written in Haskell 00:38:04 And for being excessively slow in general because it has no proper protocol of its own and pulls 30 gzip files per second via HTTP which are like 1 KiB in size each, without any concurrency at that. Good grief. 00:38:12 erm. 00:38:16 when was the last time you used darcs? 00:38:21 Three days ago 00:38:26 i don't think darcs 2 does that 00:38:34 anyway, darcs isn't notable because it's written in haskell, i don't give a shit about that 00:38:35 Whenever I have to pull stuff from HackageDB it takes 10-20 min :[ 00:38:41 kfr: works for me 00:38:51 Yes, it works, but it's really slow 00:38:57 works fast for me 00:38:59 * nddrylliog 's head is spinning. 00:39:01 too.. many.. projections 00:39:04 i don't think anyone uses darcs because it's written in haskell. or at least if they do they're a moron. 00:39:14 elliott: Oh, lots of Haskell people do 00:39:17 nddrylliog: don't worry, in a few days you'll have an epiphany and then decide that all language implementations should be specialisers 00:39:21 kfr: well. whatever. 00:39:28 elliott, I've already decided that - but I have no idea how to 00:39:33 nddrylliog: :) 00:39:39 nddrylliog: writing good specialisers is "current reserach" 00:39:40 elliott: Lots of Haskell people will use software written in Haskell over superior software which does the same 00:39:56 nddrylliog: iirc there was a team that got a specialiser behaving non-trivially when applied to itself. one team. :p 00:40:14 kfr: i'm not so cynical about haskell people. although i don't talk to them much, well, i do, but in #haskell, about Haskell itself. 00:40:59 Yeah, I'm in #haskell, too 00:42:23 i'm aware :p 00:42:25 kfr, which is better, TortoiseHg or TortoiseGit 00:42:32 I have nothing else to make a decision on 00:42:52 Isn't there something about git being easier to make throwaway branches with? 00:43:44 ok Sgeo is officially infuriating enough. 00:44:24 Well I would definitely pick git over hg, it's a really pragmatic VCS used for large projects. For example, unlike every other VCS I know it comes with a filtering language which allows you to programmatically modify the history of a repository to fix old erroneous commits etc 00:44:37 modifying history is evil. 00:44:43 (it's necessary in git, but only because git is badly-designed) 00:44:48 modifying History is evil. 00:44:54 history, not so much. 00:44:56 To remove accidentally committed sensitive files, etc 00:44:58 Modifying history is _necessary_ in Git? 00:45:01 It saved my ass so many times 00:45:04 Sgeo: No 00:45:12 kfr: that's easy to do without changing history if you really have to 00:45:23 the thing is, in git, people modify history *for aesthetic reasons* 00:45:32 in fact, every "git pull" that causes a merge does a rebase! 00:45:34 that's *inasnity* 00:45:37 -!- elliott has set topic: http://208.78.103.223/. 00:45:40 -!- elliott has set topic: http://208.78.103.223/esoteric/. 00:45:41 *insanity 00:45:49 -!- pikhq has quit (Ping timeout: 240 seconds). 00:45:57 -!- pikhq has joined. 00:46:13 git is also the fastest DVCS I've used and there are convenient sites for open source projects like github 00:46:21 So, one of my friends got published in a textbook 00:46:22 Google Code with hg works, too, but it's not as fancy 00:46:30 kfr: Umm, bitbucket? 00:46:34 Don't know it 00:46:36 Come on, it's like a feature-for-feature clone of GitHub. 00:46:39 github beats bitbucket anytime. 00:46:41 It's pretty damn popular too. 00:46:50 they'll always be several steps behind... 00:46:56 nddrylliog: Sure, but saying "github exists and google code sucks at hg" is a really biased portrayal. 00:47:14 elliott, well yeah. for what it's worth, google code doesn't even really exists 00:47:15 I wonder how much that xkcd strip promoted github... 00:47:21 Google Code is pretty bad. 00:47:26 especially since the latest redesign. 00:47:27 Sgeo: Which one? :o 00:47:39 bitbucket has free private hosting, right? 00:47:47 <3 http://lesbians.github.com/ 00:47:57 kfr, that one ^ 00:48:00 http://xkcd.com/624/ 00:48:18 Odd one 00:48:25 it's a pretty crap one. 00:48:35 Dont' really find it funny, shrug 00:48:37 is there such as a thing as an odd xkcd comic? 00:48:38 its number is >600 and <8xx (for some xx i forget) 00:48:41 so that it sucks immensely is obvious 00:48:53 I think Mercurial would be dead if not for the 6-or-so high-profile projects using it. 00:49:10 Anyways, overall my preference for VCS currently is: git > hg > bzr > darcs > any centralised one 00:49:19 git really sucks in two regards though 00:49:21 I've only ever used SVN before 00:49:26 1. like half of it is written in bash 00:49:31 no it isn't 00:49:33 git is all C now 00:49:36 or at least 90% 00:49:43 (this is also why windows users stopped whining) 00:49:45 2. it doesn't have a proper API 00:49:55 You forgot to rank arch and svk. :) 00:49:56 Unlike, say, hg 00:50:00 -!- variable has joined. 00:50:02 And Codeville! 00:50:02 Haven't used those 00:50:09 They're...rather obscure. 00:50:11 I'\ve only used cvs, svn and some commercial ones 00:50:17 Arch was the first Free(TM) distributed VCS, though. 00:50:24 And also the first one that anyone really paid any attention to at all. 00:50:24 and RCS! 00:50:25 Out of the ones I didn't mention 00:50:35 RCS? pah, i use SCCS 00:51:07 elliott, ahh shoot. That's the one I was looking for 00:51:16 Which, if used for a single-person project, will give me a greater understanding of DVCS? (I kind of gather that since it's a single person project, it won't be that helpful) 00:51:57 elliott: Do you know how many binaries and bash scripts MSysGit comes with right now? 00:52:00 127. 00:52:07 Sgeo, huh, sorry but I almost always use git for my single-person projects. Branches are goodness. 00:52:14 kfr, right - but it's msys. 00:52:18 kfr: why did you include binaries? 00:52:18 It requires a full BusyBox port 00:52:23 those are irrelevant 00:52:26 we are talking about shell scripts 00:52:36 elliott, are branches better in git than hg, as nddrylliog suggests? 00:52:38 Err that's very relevant, relying on BusyBox for a VCS implies mental poverty 00:52:43 mental poverty? 00:52:49 no, it implies someone who isn't going to bend over backwards for Windows. 00:53:00 you think Linus Torvalds gives a shit...? 00:53:05 kfr, msysgit is *so much more* than just git. 00:53:17 kfr, ergo it's not fair. 00:53:20 nddrylliog: Why else would they be in there if they weren't required? 00:53:30 because windows users like software bloat? 00:53:35 you're edging very close to being a troll tbh 00:53:36 Oh I'm sorry, apparently it uses /bin/sh 00:53:57 kfr, because msysgit provides a whole unix-like environment under Windows.. you have the console and everything. A minimal git for win32 would just provide git.exe and that's it. 00:53:59 im an open source fan, but must admit that the winpowershell really has an edge over any unix bash 00:54:07 kfr, and bash, and *vim*, yeah. 00:54:11 powershell is useless 00:54:15 well 00:54:19 elliott yeah it is 00:54:19 its internal architecture is nice 00:54:22 but actually getting anything done in it? 00:54:25 doesn't happen. 00:54:31 talking about trolls.. :D 00:54:41 y am i not surprised bout your opinion elliott 00:54:43 Alright I apologise, I thought git actually required all of these 00:55:00 me? have opinions? 00:55:03 ha! 00:55:07 But back when I had some problems with a port of git I ended up having to fix a sh script 00:55:17 "back when" = yes, it used to be written half in sh 00:55:19 it isn't now :P 00:55:21 ok..lets call it prejudices ;) 00:55:29 let's call it OBJECTIVE TRUTH 00:55:30 or ideals 00:55:32 It wasn't that long ago 00:55:35 Only 2 years perhaps 00:55:45 openvirtues *g 00:56:03 TortoiseGit or Git Extensions? 00:56:07 kfr: dude, git is only like 5 years old :P 00:56:20 * Sgeo is leaning towards th latter, mostly due to one response on StackOverflow that I saw 00:56:20 well, 6, but it only started becoming anything like modern git a year or two later 00:56:25 (man, has it been that long?) 00:56:33 Sgeo waht's "Git Extensions"? 00:56:47 http://code.google.com/p/gitextensions/ 00:56:54 Although its tagline seems a bit hubristic 00:56:59 "Torvalds seemed aware that his decision to drop BitKeeper would also be controversial. When asked why he called the new software, "git," British slang meaning "a rotten person," he said. 'I'm an egotistical bastard, so I name all my projects after myself. First Linux, now git.'" 00:56:59 Anyways, Microsoft still haven't realised that the problem wasn't that the shell is inferior 00:57:19 yes it was 00:57:21 The problem is that the default terminal is utterly useless 00:57:21 largely :) 00:57:27 cmd.exe is shit too 00:57:31 THAT. 00:57:35 you can't even do a for loop without shooting yourself 00:57:35 Yeah that's the csrss.dll interface 00:57:40 or uh 00:57:41 quote things 00:57:42 or anything 00:57:44 whats the problem about THIS kfr 00:57:47 also, msys used to ship with rxvt, which they've now given up for cmd.exe... anyone, explain? 00:57:51 and it has no `` or $() 00:57:52 you can download ps for free 00:57:52 hagb4rd: About what? 00:57:57 and uh 00:58:01 hagb4rd: dude powershell uses cmd.exe 00:58:07 so? 00:58:12 cmd.exe sucks 00:58:15 that powershell sucks is unrelated, but 00:58:18 try resizing \o/ 00:58:18 | 00:58:18 /`\ 00:58:22 elliott: They have another GUI for it 00:58:27 quad erat demostrandum? 00:58:28 elliott, is Git's branching a bad reason to go with Git? 00:58:31 But it is even more useless tham the csrss one 00:58:36 kfr: yeah i seem to recall it being terrible 00:58:46 http://siyobik.info/paracletus/\ 00:58:47 http://siyobik.info/paracletus/ 00:58:53 Check this for some screenshots/examples 00:59:01 Of why the csrss GUI sucks 00:59:19 My favourite is http://siyobik.info/paracletus/image/cmd-unicode.png 00:59:24 There have been numerous attempts at solving this problem. Most of these programs are derived from the PuTTy source code and they run on top of cygwin which causes numerous problems like not working in the regular Windows environment with backslash paths, bash treating backslashes as the first part of an escape sequence, etc. Few have attempted to write actual replacements from scratch which actually don't use cygwin in any way. One of those was 00:59:24 a project called "Konsole" I found on SourceForge, unluckily it suffers from similar problems as the original Windows csrss implementation like providing no proper maximisation and such. 00:59:28 i really wanted to use mintty with interix 00:59:31 but it wanted the cygwin dll 00:59:41 and when i gave it a copy, it then repeated every line after i entered it :( 00:59:49 so i used putty to ssh locally :P 01:00:23 -!- pikhq has quit (Ping timeout: 240 seconds). 01:00:25 Yeah I use PuTTy a lot 01:00:31 -!- pikhq has joined. 01:00:36 i like the part where you seem to not understand the difference between a terminal and a shell+coreutils >_> 01:00:41 at least from your mockup screenshots 01:00:44 Unluckily I still haven't managed to integrate the host file system into my Linux VMs flawlessly 01:01:03 kfr: try Gentoo Prefix. 01:01:05 vmhgfs and vboxsf suffer from some issues 01:01:06 it runs on Interix 01:01:12 very nice, and free too 01:01:16 it's like Cygwin, except far, far better 01:01:23 Curiously they suffer from identical issues 01:01:26 and ostensibly Microsoft-supported 01:01:38 and ofc it runs on regular NTFS 01:01:48 Which leads me to believe that this might be some deeper issue which only few people are aware of 01:02:13 It has something to do with file system in caching in Linux and the way it interacts with their drivers on top of NTFS 01:02:30 why is *everything* such a problem on top of NTFS 01:02:33 s/in caching/caching/ 01:03:07 linux has, like, the best FS support for an operating system, and we *still* rely on some userspace half-commercial crap that makes half proper uses of FSes bug (ie. Steam in Wine) 01:03:33 How does Steam rely on a bug? 01:04:00 nddrylliog: i don't rely on steam in wine :P 01:04:15 -!- poiuy_qwert has joined. 01:04:25 they make uses bug. Yeah.English. 01:04:54 wat 01:04:55 I parsed it as "use of an FS bug" :p 01:05:04 for reference, http://developer.valvesoftware.com/wiki/Steam_under_Linux#Wine.2C_Steam_.26_ntfs-3g 01:05:15 mentioning msproducts always leads to this neverending enervating war of opinions 01:05:19 kfr, yeah, we clearly have a precedence problem. 01:05:24 -!- poiuy_qwert has quit (Client Quit). 01:05:27 Git Extensions wants me to install MSysGit and not just regular Git 01:05:39 msysgit is regular git, if you're on windows 01:05:47 I love the "Don't minimize Steam!" on the valvesoftware linux wiki page 01:05:55 nddrylliog lol :/ 01:06:20 How difficult/easy will it be for me to figure out Git Extensions without looking at any documentation? 01:06:28 what is git extensions? 01:06:42 I am annoyed by how people frequently intentionally avoid portability whereas it's nearly free nowadays for a lot of stuff :/ 01:06:55 http://code.google.com/p/gitextensions/ 01:06:56 portability isn't free :) 01:07:09 kfr, YES. Like how there's no Left 4 Dead 2 client for linux. 01:07:19 Sgeo, also it's a bit ironic that GitExtensions is hosted on Google code... 01:07:39 well, it is almost free if you use a framework that is already fully portable, but using such a framework is not free :) 01:07:45 did Sgeo just imply that he can't/won't read documentation? 01:07:47 Ah, haven't seen that one before, interesting 01:07:54 won't. Not can't. 01:08:03 Sgeo, prove that you can! 01:08:33 Sgeo: i don't think anyone will really have the patience to help you if you yourself admit that you won't then help yourself solve the problems you have after that 01:08:43 -!- poiuy_qwert has joined. 01:08:45 elliott: I think he also implied that he won't watch documentation either 01:08:46 Sgeo: Well if you haven't used a DVCS before (which you said I think) then there will be some new concepts 01:08:56 But that's not really about that GUI, I bet it's easy to use 01:09:03 (i.e. the "video tutorials" they talk about) 01:09:07 olsner: right. so i'm pretty sure that if i answer any one of his questions, he won't stop bugging me about questions that are covered by the documentation. 01:09:08 elliott, I'm capable of reading documentation if I have questions. I'm just hoping not to have questions 01:09:12 so i won't. 01:09:28 elliott: probably 01:09:41 i.e. the difference between committing and pushing in a DVCS vs. committing in a CVCS 01:10:04 Is there really that big a difference for single person projects? 01:10:12 Yeah 01:10:28 Oh, right 01:10:34 It's a totally different approach to version control 01:10:38 I read the HgInit tutorial a long while ago 01:10:46 it's not big I think, but the distinction is always there 01:10:50 not if you're the only one committing :p 01:11:48 hmm, right, it matters if you set up a remote repository somewhere or if you're only committing locally 01:11:54 When you check out something from a DVCS repository you actually get the same files as the server you got it from. In DVCS basically "everybody is a server" (the people coming from SVN found this the easiest to understand in my experience) 01:12:21 And some people who use SVN a lot actually use lots of hacks to make it more like a DVCS 01:12:34 kfr: like svk! 01:12:44 so, give me simple problems to solve / data structures to implement so I can think some more about my language. 01:12:46 kfr: (svk is a DVCS built on top of svn. I'm not joking.) 01:12:56 To create local non-networked repositories which just use the file system, for example 01:13:00 nddrylliog: OCTREES 01:13:07 And to be able to push their state to online repositories :p 01:13:25 nddrylliog: IOCP/epoll/kqueue HTTP server 01:14:14 * Sgeo goes to watch the videos 01:14:26 kfr: that... 01:14:28 is not a data structure. 01:14:37 It involves some data structures! 01:14:39 or a "problem" in any real sense. in fact that's just an incredibly boring task in IO engineering. 01:14:46 elliott, +1 01:14:47 IOCP? oh, some Windows bullshit. 01:14:48 Pff. 01:14:59 elliott: Don't hate on portability 01:15:06 that's not portable to QNX. 01:15:17 well to be fair, octrees are quite boring as well.. 01:15:21 or, oh, lisp machines. 01:15:26 nddrylliog: yeah, but they're a data structure :P 01:15:35 elliott feel free to add more support! 01:15:41 kfr: if you really think "IOCP/epoll/kqueue HTTP server" when you think "interesting programming problem to solve", my condolences 01:16:08 :| 01:16:18 |: 01:16:49 :| 01:16:49 My first Haskell project was an SCGI server/web dev framework lol 01:17:04 nddrylliog may I interest you in a self hosting compiler? That certainly features some data structures 01:17:09 elliott, the problem is, I'm not sure how to define that a node has 8 children. 01:17:10 i think we're found the most boring person on earth people! 01:17:23 kfr, that's an idea - but I have no idea how to write a compiler for it in the first place :) 01:17:23 nddrylliog: that's because your "element" stuff makes no sense. :) 01:17:35 elliott, well find a better alternative then! 01:17:42 nddrylliog: do it like Coq :p 01:17:57 elliott, by jumping backwards on a single toe? 01:17:58 elliott: And it forces you to consider FFI stuff at least, heh 01:18:02 nddrylliog: yes. 01:18:08 elliott, thanks but no thanks 01:18:11 nddrylliog: you really should learn coq though :) 01:18:24 But what can I say, I've always been very interested in highly scalable networking stuff 01:18:25 elliott, yeah, probably. But I'm hesitant. Does it hurt at first, like anal? 01:18:27 Both clients and servers 01:18:36 kfr, what do you think of Io? 01:18:41 Never heard of it 01:18:56 kfr, seriously? http://iolanguage.com/ 01:19:07 elliott, yeah, probably. But I'm hesitant. Does it hurt at first, like anal? 01:19:09 it never stops hurting. 01:19:15 elliott, awwww. 01:19:46 I wonder what fraction of the e-mails exchanged contain passwords or other kinds of authentication tokens. 01:20:34 At first I always started interpeters for dynamically typed languages 01:20:50 But now I've developed a grudge against dynamically typed stuff 01:21:39 I wrote a fair amount of networked services in Ruby recently and it was a huge pain because of stupid errors which occurred days later after launching the servers 01:22:06 And most of those could have been solved by simple compile time checks in a statically typed language 01:23:09 i only code in ursala, true story 01:23:15 can i just say 01:23:17 that i hate everyone's guts 01:23:19 carry on 01:23:36 Are you sure it isn't Ursula? 01:23:45 Diminutive of bear or something like that 01:24:21 I think I saw somebody mention "Ursula" in here 01:24:28 So I thought they might be related 01:24:41 "Ursala is an interpreted functional language with some experimental features, intended mainly for text and numerical applications. " 01:24:44 -!- Lymia has quit (Ping timeout: 276 seconds). 01:24:45 Maybe unrelated after all 01:25:10 ursala is the most fun crazy 01:25:59 -!- oerjan has joined. 01:32:28 * Sgeo oohs at git stash 01:34:22 git stash is golden 01:34:41 "A consequence of Git’s distributed nature is that history can be edited easily." 01:34:49 http://www-cs-students.stanford.edu/~blynn/gitmagic/ch05.html 01:40:16 I should probably read a git tutorial, rather than looking for a tutorial based on this GUI 01:46:52 https://s-hphotos-snc3.fbcdn.net/hs317.snc3/28506_1437566584016_1378554866_31120765_1714195_n.jpg -> science joke 01:47:30 Sgeo, I'm not a fan of the ease of editing history - but meh 01:49:50 "A consequence of Git’s distributed nature is that history can be edited easily." 01:49:56 lol that has nothing to do with the distribution 01:50:13 hg, bzr, darcs are all opposed to modifying the history 01:50:33 Whereas in git there's even a "shell scripted filtering language" to modify it programmatically 01:50:35 darcs isn't _too_ opposed 01:50:36 "darcs obliterate" 01:50:57 :o not familiar with it 01:51:03 kfr: it obliterates a patch :) 01:51:03 Also, I must admit that I never use git stash 01:51:07 ONLY to be used when you miscommit 01:51:11 in scapegoat, modifying history is almost impossible. well. you can undo the last N commits. but that's about it 01:51:44 In fact I even frequently commit and push non-compiling code in some projects of mine :| 01:52:16 mcmap's testing philosophy is to not. 01:52:20 Does hg have an equiv to stash? 01:52:22 Because I pull from the repo from multiple unrelated computers and sometimes it takes me days to finish something before I any attempt any compilation :/ 01:53:00 But as all Haskell users know, "if it compiles, it works" 01:53:32 -!- Lymia has joined. 01:54:00 we do it with C... surprisingly it actually usually works 01:54:13 Very funny 01:54:23 i'm not joking :) 01:54:34 in C++, usually it's "if it compiles, it segfaults" 01:54:50 C is the opposite of compile time correctness 01:55:03 C++ is somewhat less faulty but still very prone to errors 01:55:16 Is cherry pick a Git thing or a Git Extensions thing? 01:55:27 Sgeo, git 01:55:33 Awesome 01:55:35 Sgeo, thank God for that :) 01:55:37 C++ programs that compile may fail less, but they're less maintainable than C programs. :p 01:55:50 cherry pick is a _darcs_ thing 01:55:53 Nah it's considerably easier 01:55:57 git's implementation is still inferior after all these years 01:55:59 I thought "cherry picking" was a general term 01:56:00 C++ doesn't even have decidable compilation. 01:56:03 Not even bound to VCS 01:56:11 it is, but darcs invented the VCS meaning 01:56:22 elliott, inferior how 01:59:35 Why does rebase exist? It seems like its only function is to prettify history 01:59:38 * Sgeo barfs 02:02:00 oerjan: hm haskell question 02:02:48 wait never mind. :) 02:02:49 O KAY 02:02:51 DAMN 02:03:08 oerjan: i was going to ask whether redefining fix to do the | x' == x = x | otherwise = go f x' thing would work 02:03:10 where x' == f x 02:03:14 except not only would that require Eq 02:03:18 but the first step would compare to undefined 02:03:22 since fix takes no base value 02:03:35 you don't say 02:03:42 oerjan: JUST BECAUSE I'M SLOW 02:03:55 :t iterate 02:04:03 eek no lambdabot 02:04:05 i should actually write a program in ursala sometime :P 02:04:07 oerjan: omg :( 02:04:09 ask Cale what we did wrong 02:04:21 oerjan: let's do it together, quick, to #haskell! 02:04:37 actually there's no lambdabot _anywhere_, so no need to panic on behalf of #esoteric 02:04:54 phew. 02:05:10 You all seriously ignored lambdabot's death 02:05:11 -!- elliott has quit (Quit: ell-"can now sleep soundly knowing that everyone's in trouble, not just us"-iott). 02:05:11 ? 02:05:21 -!- elliott has joined. 02:05:26 did you like my /quit message 02:05:28 i think i might start doing more of those 02:05:34 -!- elliott has quit (Client Quit). 02:06:21 lol 02:07:24 i did funny quit messages back when it was on vinyl 02:10:34 !fyb litterer http://lymia.x10.bz/evil.fyb 02:10:53 Score for Lymia_litterer: 92.0 02:10:57 nice 02:11:01 Brute force. 02:11:01 :v 02:11:28 where is the scoreboard folder again? 02:12:24 http://codu.org/eso/fyb 02:12:39 The @@ pesudo op is so overpowered. 02:12:39 : 02:12:40 :v* 02:13:08 It's effect is to basicly set the instruction pointer to the current code pointer. 02:15:05 That program is basicly the FYB version of a CoreWars core clear. 02:18:00 What are those crazy programming languages where the correctness of the code is part of defining the algorithm? 02:18:22 I think I recall some three letter initialism one where quicksort is like 150+ lines 02:18:32 It may be related to formal proof systems 02:20:11 I should probably look into Agda/Coq and such at some point, too 02:20:15 Learn about dependent typs 02:20:17 types* 02:20:32 hahahaha :) 02:20:35 speak of the devil. 02:21:00 kfr, I was discussing that with elliott a few minutes ago. 02:22:38 contracts are supposed to do that 02:23:45 Lymia: why doesn't litterer beat evil? 02:23:50 Dunno. 02:24:21 I'm not sure why evil beat so many things in the first place. 02:24:37 That big block of code is to get rid of every ! instruction in logicex-2 02:25:18 It's actual attack is literally nothing more than a quick scanner. 02:25:58 Hell, there's an ':' missing in it. 02:27:12 when you defect, it puts the data pointer at your own code pointer? and the defecting again puts it where? 02:30:04 When you defect, the data pointer is set to the code pointer. 02:30:21 If you defect twice, the effect is that the data pointer is set to the address of the second defect. 02:30:28 But stays in the same player's code. 02:30:48 huh 02:31:03 so it's like a free jump thing? 02:34:10 It's a much faster way than >>>>>>>>> to get to the middle of somebody's program. 02:39:09 I'm taking a statistics course 02:39:35 has someone tried a vampire pit sort of thing? seems like it would be difficult to plant an effective +[] since [] are in the middle of the instruction set, but if you can jump ahead like that, you could probably do it 02:39:56 What's a vampire pit? 02:40:00 I don't see why it's sqrt(sum([x-mean]^2)/n) and not sum(|[x-mean]|)/n 02:40:09 I see that they get different answers 02:40:17 But why the first is used instead of the second? 02:40:42 Hmm 02:41:10 It might show different behaviour in cases of single unusually deviant values 02:41:15 do you think it's a good idea to avoid duplicate images by comparing the mc5hash strings of their binary data? 02:41:17 kfr: basically getting the other program trapped in a loop doing what you want. for a large enough memory buffer, +[:+[];] would kill. 02:41:17 I imagine it's something like that 02:41:25 uh 02:41:27 dumb 02:41:37 +[:[];] 02:41:43 quintopia what language is that? 02:42:00 kfr: FYB 02:42:00 kfr, http://codu.org/eso/fyb 02:42:12 -!- SimonRC has quit (Ping timeout: 265 seconds). 02:42:13 do you think it's a good idea to avoid duplicate images by comparing the mc5hash strings of their binary data? <-- or have better ideas/solutions 02:42:14 Why do so many people in here obsess about that? 02:42:27 kfr, not sure, but it looks like fun 02:42:34 sgeo: because that is the definition of the L2-norm 02:42:41 hagb4rd, ask the tineye guys :) 02:42:55 is this a chan? 02:43:03 hagb4rd, nope, a website 02:43:08 http://www.tineye.com/ 02:43:16 quintopia, why? 02:43:22 hm, i thought you guys are the mathexperts here 02:43:25 :> 02:43:26 Ah, I started using tineye a while ago 02:43:49 hagb4rd: Mathematicians usually don't know crap about hashing and such 02:43:50 -!- SimonRC has joined. 02:44:07 !fyb litterer-2 http://lymia.x10.bz/evil.fyb 02:44:10 Score for Lymia_litterer-2: 100.0 02:44:13 =D 02:44:35 oh, wait. 02:44:38 : only triggers once 02:44:41 duhhh 02:45:05 quintopia, every thread runs once every tick. 02:45:10 It's not like corewars in that respect. 02:45:26 Lymia: how did you beat your previous tries? 02:45:41 quintopia, pad it until it works. 02:45:43 ;V 02:46:38 i just need to avoid duplicate images.. tha hash-solution is not implicitly required, alternative ways are welcome! :> 02:46:55 sgeo: yeah, i can't figure out why they don't use the average distance from mean instead. 02:47:19 instead it's sqrt(variance) 02:47:37 maybe just cuz it's easier to work with 02:47:53 Sgeo: 02:47:54 huh 02:47:57 oh ya, that's it 02:48:04 hm? 02:48:05 also because sqrt(x^2) is abs(x) 02:48:05 .. 02:48:05 it's because it's algebraically easier to work with 02:48:10 quote the wikipedia: It is algebraically simpler though practically less robust than the average absolute deviation. 02:48:31 Huh. 02:48:34 ah right sorry I didn't read correctly the second definition. 02:50:27 quintopia, 02:50:46 http://www.johndcook.com/blog/2010/11/29/where-to-wait-for-an-elevator/ -> explains that in somewhat easy terms 02:50:56 if I understood correctly what you are looking to understand 02:51:36 hagb4rd, there are special algorithms that deal with dup. images / music 02:51:47 yea.. tell me more 02:51:47 they are cross format as well - sometimes 02:52:23 can you give me an example? or a name? 02:52:32 sth to look for? 02:52:51 Gregor, you may want to take a look at the FYB scoreboard. 02:52:52 ;) 02:53:15 hagb4rd, yeah - hang on a sec 02:53:25 * variable was reading a paper recently - let me find it 02:53:41 take your time droog 02:53:58 and thanks ;) 02:54:00 I am actually somewhat interested in program vs. program stuff but in more complicated environments really, like real time strategy stuff 02:54:02 droo ? 02:54:10 Corewars and such are too dry for my taste 02:54:11 nadsat variable 02:54:17 clockwork orange? 02:54:42 i will build a nadsat compiler someday :P 02:55:37 I recently read A Clockwork Orange 02:55:38 http://en.wikipedia.org/wiki/Nadsat 02:56:36 hagb4rd, the general term is image similarity its the type of algo Tineye uses. I was reading about something called WALRUS recently 02:57:04 ok.. i will look for it.. thank you var :) 03:00:32 kfr: good book. it's just like to movie too :) 03:12:47 ndd@naku:~/Dev/fe2/source$ ./parser 03:12:48 ((a | ((a % 2) = 0) ) => (a # multiplesOfTwo)) 03:13:19 now to do anything useful with that.. or rather, tomorrow. 04:05:50 -!- pikhq_ has joined. 04:06:09 -!- pikhq has quit (Ping timeout: 264 seconds). 04:09:47 -!- lambdabot has joined. 04:12:28 -!- Lymia__ has joined. 04:12:32 -!- Lymia has quit (Disconnected by services). 04:12:34 -!- Lymia__ has changed nick to Lymia. 04:12:36 -!- Lymia has quit (Changing host). 04:12:36 -!- Lymia has joined. 04:43:43 -!- azaq23 has joined. 04:53:07 -!- acetoline has joined. 05:03:48 -!- pikhq_ has changed nick to pikhq. 05:10:56 ^ul (^^^)((0)(!(1)(!(2)(!(3)(_)))))~*^ 05:11:08 ^ul (^^^)((0)(!(1)(!(2)(!(3)(_)))))~*^!S 05:11:09 3 05:11:19 ^ul (^^^^)((0)(!(1)(!(2)(!(3)(_)))))~*^!S 05:11:19 ...bad insn! 05:11:32 ^ul ()((0)(!(1)(!(2)(!(3)(_)))))~*^!S 05:11:32 0 05:11:36 oerjan what language is taht? 05:11:42 underload 05:14:02 concatenative turing tarpit 05:17:28 Sounds toxic 05:18:45 * Sgeo pours a little bf into kfr's drink 05:18:58 http://esolangs.org/wiki/Underload 05:19:40 ^ul (:aSS):aSS 05:19:40 (:aSS):aSS 05:26:04 I can't come up with anything creative 05:26:19 Graph based programming languages are an old hat I bet 05:26:37 well we have Eodermdrome 05:26:52 and i recall there was another but i'm not sure if it's on the wiki 05:27:31 something based on kolmogorov machines iirc 05:29:19 Haha that sounds exotic 05:29:58 Or programming languages which are essentially based on replacing strings hmm 05:30:06 Haha grammars hmm 05:30:09 well kolmogorov was russian 05:30:17 I'm not talking about the name :p 05:30:21 I've just never heard of it before 05:30:48 replacing strings, then you want to look at /// aka Slashes 05:31:18 * oerjan notes that he is only mentioning his own favorites 05:32:00 i didn't make any of the languages but i made several of the programs 05:32:37 !fyb crasher ::;; 05:33:18 oh also thue 05:33:38 I think I broke it. 05:33:40 (i didn't do anything in that but it's perhaps the oldest string-replacing esolang) 05:33:59 !echo hi 05:34:01 hi 05:34:18 Lymia: EgoBot sometimes times out, especially the first time it's used in a while 05:34:30 same with HackEgo 05:34:32 !fyb nothing +[] 05:34:39 Really? 05:34:44 (they're both Gregor's bots) 05:35:11 well i wouldn't exactly _exclude_ bugs, either... 05:35:21 Okay, it's definitely "really fucking cold" out now. 05:35:25 !haskell print "hi" 05:35:27 I remember, we had to implement division in a string replacement language 05:35:32 "hi" 05:35:32 At university 05:35:34 It really sucked :[ 05:35:40 Tomorrow, we are expecting a high of -5 °F (-20 °C). 05:35:46 kfr, Eh? 05:35:47 kfr: heh 05:36:30 ((:::::)+):* -> $1 05:36:34 kfr: i made /// print numbers once i think, that requires dividing by 10 at least 05:36:34 ::::: -> : 05:36:53 Still, doing it as part of a larger program sounds nasty. 05:37:50 Gregor seems to have been idle since yesterday 05:38:45 Writing a self hosting compiler in that would be very challenging 05:40:07 (yes, I have an obsession with self hosting compilers, to me a language is "serious business" as soon as that has been done) 05:41:31 -!- poiuy_qwert has quit (Ping timeout: 240 seconds). 05:42:12 -!- poiuy_qwert has joined. 05:42:20 Actually I'm more interested in research languages, I think, not just bizarre/minimalist stuff 05:42:58 Eh, 'sokay. I think I last esolanged over a year ago. 05:44:11 i.e. stuff you can actually use to solve practical problems, *gasp* 05:45:27 -!- hagb4rd has quit (Ping timeout: 240 seconds). 05:46:35 GET OUTTA HERE 05:46:53 I figured the Haskeller would frown upon that :/ 05:47:04 i'm the haskeller now? 05:47:08 Yes. 05:47:36 "The best programming languages have no compilers" - #haskell 05:47:56 My favorite language is DWIM 05:48:01 ...that's rather strange to connect with haskell... 05:52:24 Score for Lymia_nothing: 0.9 05:52:24 Score for Lymia_crasher: 0.9 05:52:44 SOMEONE IS SLOW TODAY 05:52:57 Sgeo: DWIM = ? 05:53:05 Do What I Mean 05:53:23 [Note: If someone used that abbreviation for something else, I don't know about it] 06:18:18 I wonder how you would design a language which is tailored for writing operating systems while still providing a high degree of compile time correctness 06:19:42 That must be a nightmare 06:24:54 Doesn't ATS supposedly do that? Or am I utterly clueless? 06:25:23 http://en.wikipedia.org/wiki/ATS_%28programming_language%29 :o 06:26:06 That's interesting 06:26:06 http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php 06:26:11 I remember it from these games 06:26:22 It actually ranked third, after C++ 06:26:26 Very impressive 06:26:33 And I had never even heard of it before 06:30:52 kfr: By now about half of us are Haskellers, I think. 06:31:21 Yeah I'm slowly turning into a Haskelling language fascist, too 06:31:28 My mate warned me about that 06:32:08 ATS tutorial gives me a headache 06:32:13 Haha 06:32:19 Maybe I should look for an easier tutorial 06:32:29 I have no idea what unboxed and boxed allocation are 06:33:45 elliott is going to kill me. 06:35:10 -!- azaq23 has quit (Quit: Leaving.). 06:35:16 boxed = use a pointer to the representation, unboxed = embed the representation directly. approximately. 06:36:08 in haskell boxed also implies the possibility of a lazy thunk to be evaluated 06:36:40 Ah, I see 06:37:27 Unboxed is essentially only there for optimisation purposes. 06:39:34 yeah, and they treat it that way 06:39:37 also in haskell and some other languages, boxing means all values can be passed around in the same format, making polymorphic functions easier 06:39:43 you never specify whether it's unboxed _within_ the language 06:39:47 you specify whether it's strict or not 06:40:07 the fact that that can be unboxed if it's monomorphic and matches some simple is another issue 06:40:10 simple rules 06:40:35 (I don't consider GHC pragmas to be part of the language :P) 06:46:07 -!- Zuu has quit (Read error: Connection reset by peer). 06:46:10 -!- Zuu_ has joined. 06:48:00 Maybe I've been looking at this the wrong way 06:48:19 Maybe it's not the core features of a language that make it attractive 06:48:41 Maybe it's all about how you can have fun with it and visualisation and such 06:49:03 * kfr has some perverted notions of combining programming semantics and typesetting for visually pleasing rendering of code 06:49:44 Uh, oh... "APNIC expects normal allocations to continue for a further three to six months." 06:50:14 Perhaps the notion of writing code in a regular plain text editor is archaic 06:52:48 -!- asiekierka has joined. 06:56:09 Ilari: Well, yes. 06:56:58 Six months from now is turn of July to August... 06:57:53 Current depletion estimate for APNIC is end of September... 07:00:13 What that says: Either APNIC has their own models that are a lot more pessimistic than the "official" ones, or they are acknowledging that the "official" models just can't model what's to come... 07:00:48 Aren't the big IP block holders just going to gradually sell of theirs? 07:00:57 And the people will buy it 07:02:41 kfr: Ooooh, that'll buy us another few months! 07:02:43 "Yay". 07:03:05 pikhq there are at least 4-15 of /8s of which only fractions are really used afaik? 07:03:14 Owned by universities in the US 07:03:17 And AT&T and such? 07:03:36 Some of them already started giving up some of the space 07:03:38 kfr: We chew through 2 of them a month. 07:03:43 Ah, ok :p 07:04:24 * kfr already made sure that all the services on his servers are bound to IPv6 addresses, too 07:04:52 So people can run Linux 0days using cutting edge technology 07:04:55 :[ 07:06:56 -!- poiuy_qwert has quit (Ping timeout: 265 seconds). 07:08:14 -!- poiuy_qwert has joined. 07:09:32 Okay, I expect IANA IPv4 pool to finally hit zero on the day after tomorrow. 07:20:43 Ilari: Do those models account for APNIC holding onto a single /8 for essentially emergency use? 07:21:01 Heh, so they also shut down that one remaining Egyptian ISP last night. They are being very unprecendententialious. 07:25:11 -!- Sgeo_ has joined. 07:26:56 They do. 07:28:02 -!- Sgeo has quit (Ping timeout: 240 seconds). 07:35:27 -!- poiuy_qwert has quit (Ping timeout: 240 seconds). 07:56:57 -!- MigoMipo has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:04:30 It is currently at 5x/8 all reserved (one /8 going to each RIR...) 08:09:13 (IANA IPv4 pool that is). 08:26:48 Heh... Now there are notices about "Significant Announcement" regarding IPv4 (3rd February, 1430Z)... Can it get any more obvious? 08:44:21 Maybe they'll do a surprise announcement and say that they're inverting all the bits in allocated network addresses? 08:44:40 You know, for long-term 0/1 balance reasons. 09:09:25 -!- Mathnerd314 has quit (Ping timeout: 240 seconds). 09:19:25 -!- MigoMipo has quit (Read error: Connection reset by peer). 09:36:05 Selling off has two bad sides: 1) Expensive, 2) DFZ routing table gets hit by a fragmentation grenade... 09:37:02 Ilari: DFZ = ? 09:37:11 Default-Free Zone 09:37:45 (1) is only a bad side if you're the one doing the buying, not the selling. 09:37:48 That is, no default route. 09:38:30 They're going to sell them for like $500-1000 per IPv4 in the end 09:38:36 *per address 09:40:27 That would make a /16 cost somewhere between $30M to $70M... That's a lot. 09:40:32 Sell them on the black market, under the table. "Psst, hey, you there; wanna buy some good-quality uncut IPv4 subnets?" 09:41:04 "Don't buy your stuff from him; his /20s are actually non-contiguous /24s." 09:41:52 Well, buying form black market is risky. And I think most RIRs have policies allowing transfers... 09:43:12 At least ARIN definitely does. 09:43:45 "What a ripoff, the guy sold me a /16 from the 10.0.0.0/8 block!" 09:44:21 Well, this IPv4 exhaustion thing is going to be gigantic clusterfuck (to put it mildly)... 09:44:25 fizzie: Hahaha 09:44:32 Nice nerd fiction 09:46:08 -!- FireFly has joined. 09:48:35 -!- hagb4rd has joined. 09:53:43 -!- asiekierka has quit (Ping timeout: 240 seconds). 09:55:38 -!- BeholdMyGlory has joined. 10:01:50 ^ul (:a~*):a~*^^^SS 10:01:50 (:a~*):a~* ...out of stack! 10:02:13 ^ul (:a~*):^^^^SS 10:02:13 (:a~*):a~* ...out of stack! 10:05:08 ^ul (:a~*):^((~)~a*):*^SS 10:05:08 ~(~((:a~*):a~*)) ...out of stack! 10:10:29 -!- oerjan has quit (Quit: leaving). 10:17:48 -!- evincar has joined. 10:18:09 Hello all. 10:31:32 -!- impomatic has joined. 10:31:36 Hi :-) 10:31:39 Has anyone got access to issues of BYTE magazine 1978? :-) 10:32:09 impomatic: Well, I haven't, and nobody else seems to be around at this hour. 10:32:38 Why wouldn't they be :o 10:33:06 It's the middle of the day for like 2 billion people 10:34:55 kfr: Nobody greeted me. I was complaining. :P 10:35:05 Greetings are so archaic 10:35:13 Usually I intentionally ignore them online 10:35:41 Eh, consider it a ping to see if anyone who knows me is active. 10:36:18 Our electronic journal search thingie lists "Dental Bytes", "FishBytes" and "Nutrition Bytes", but neither of those is probably going to be much help there. 10:37:25 The main library has physical copies of BYTE for 1976-1981 in their underground storage facility V, but that would mean walking several hundred metres and inconveniencing other people, so I'm going to go with "no". 10:37:50 What *is* in BYTE magazine in 1978, though? 10:39:36 -!- Lymia has quit (Read error: Connection reset by peer). 10:40:06 -!- Lymia has joined. 10:41:07 Fizzie: a reference to Core War 6 years before A. K. Dewdney "invented" it :-) 10:41:56 Some guy is scanning all the old issues of BYTE and putting them online, but he hasn't reached that one yet :-( 10:42:49 -!- Lymia has quit (Read error: Connection reset by peer). 10:43:16 -!- Lymia has joined. 10:51:58 Do you happen to know the exact issue and article in question? I couldn't quite google out complete tables of content, just rather random and partially incomplete ones. 10:55:22 -!- ais523 has joined. 10:59:17 Fizzie: I can't find an exact issue, just volume 3, pages 106-107. I've been Googling for a while, but there isn't a complete index online :-( 10:59:30 -!- FireFly has quit (Quit: swatted to death). 11:01:23 quintopia: ooh, I like ETAS, I'll have to look at it in more detail when I'm less busy 11:03:24 ah, the IPv4 allocation happened 11:03:29 ais523: I've got another bigger-than-I-can-chew idea in the works since I last showed up here. 11:04:14 hmm, what is it? 11:05:29 A model of computation based on time, which generalises very well to highly parallel and (hopefully) quantum hardware. 11:07:05 I haven't formalised it, but it's theoretically sound and possible to implement. 11:07:22 Though once again I'm having difficulty figuring out how to actually do so. 11:09:00 it sounds like that may end up giving you as much trouble as Feather gives me 11:09:32 My natural reaction is "oh, just make a language", or "oh, just make an embedded DSL", but there's always the annoyance of trying to create a new semantic model while working within the constraints of the model of the host language. 11:09:49 Refresh my memory about Feather. 11:10:10 gah, don't make me! 11:10:19 Elevator pitch, come on. 11:10:24 I think there's a page on Esolang now that we can refer people to (http://esolangs.org/wiki/Feather) 11:10:47 How...helpful. 11:11:01 but basically, it's an esolang based around the command "retroactively change the value a variable had when it was created" 11:11:19 Sounds interesting. 11:11:24 -!- BeholdMyGlory has quit (Remote host closed the connection). 11:11:30 the concept's simple enough in a sense, but trying to get all the details in place without causing an infinite regress is tricky 11:11:36 That's sort of how my idea works...though not exactly. 11:11:51 nobody really understands Feather, not even me 11:11:58 so it's not surprising that other people's ideas are never quite the same 11:12:14 Basically you've got the absolute progression of time, and the state of the program is a pure function of the current moment in time. 11:12:36 Events occur, and effects may result, and generate further events, ad whateverum. 11:13:02 Effects are evaluated lazily, so nothing happens until something depends on it. 11:13:22 Which keeps the language purely functional, and lets you start jumping around and forking the timeline however you please. 11:13:25 ouch, that's confusing... 11:13:35 but sounds like a perfect basis for an esolang 11:13:37 It makes backtracking and parallel algorithms sexier than you can possibly imagine. 11:13:45 It's actually quite useful... 11:14:08 yep, it sounds it 11:14:13 ...not to say that an esolang can't be useful, of course. 11:14:24 they're better when they are, but that tends not to happen very often 11:14:37 But there are some other really beautiful things about it. 11:14:41 What's the significance of the lemons in the Esolangs logo? 11:14:54 it sounds vaguely like my question to the supervisor "what happens if you take a mathematical idealisation of a programming language and ignore the restriction that it must respect causality?" 11:15:06 kfr: they're actually limes, and I think it's just an image Graue grabbed at random 11:15:45 That's basically what I'm working with. You don't have to respect causality or symmetry if the potential futures eventually collapse into a single state. 11:16:30 Also, even if the effects of the program aren't reversible, the program itself is. You can pause, slow down, rewind, save and restore, and do basically whatever else you want to the running program. 11:17:00 that's not that far from Feather at all, really; the difference is that your method is functional-style with respect to the timeline, whereas Feather is imperative-style 11:17:14 There is all sorts of fun with complexity classes. Such as R being impossible to construct explicitly... 11:17:18 so you have a timeline that just happens and you lazily try to work out what it is, whereas Feather has an explicit mechanism for tinkering with time until the timeline says what you want 11:17:19 Well, you can simulate an imperative style in this, it's just less efficient. 11:17:23 indeed 11:17:33 but I meant, sort of, meta-functional vs. meta-imperative 11:17:34 Just say "effect: x is now 0". 11:17:43 Right. 11:17:47 it's hard to explain, because all the terminology required for time travel doesn't yet exist in English 11:17:51 or probably any other language 11:18:32 Yeah, languages tend to have terminology for what's useful and not much terminology for things that are not useful... 11:18:54 Ilari: indeed. 11:20:16 ais523: The coolest thing is that you can optimise branch prediction in the event/effect graph based on the running program's experience of which events actually occur, biasing toward branches that depend on more probable events, so the performance of the program can actually increase over time. 11:20:38 And relative usefulness also shows in how fine the distinctions are... More useful things tend to have much finer distinctions between different kinds than less useful things... 11:21:21 Ilari: which is why English has a lot of words for male versus female animals, groups of animals, and slang for being drunk. 11:21:37 Ah, to live in simpler times. :/ 11:22:16 ais523: Funny story, though, you know how I figured all of this out? 11:22:29 no, I'd have to guess and I'm quite bad at guessing 11:22:59 Drank some sake and watched Primer. 11:23:08 Suddenly it all made sense. :P 11:24:02 And coincidentally, the fact that I had already been thinking about this problem let me understand the movie on the first time through, which I hear is a rarity. 11:24:25 fizzie: the best I can find is a tiny extract on Google books http://bit.ly/eQTjVv :-( 11:24:27 And useless things don't tend to have words at all... Like diabetes or heart disease for hunter-gatherer populations... 11:26:11 Ilari: Never forget the power of circumlocution, though. If someone dies of complications from heart disease, and others are aware of this fact, then there will become a term for it. 11:26:39 The need for a single-word term only arises if it's prevalent, though. 11:26:44 Nowadays heart attacks are common but they haven't always been: In 1920's, one could be cardiac doctor and manage to pass 6 years in practice without seeing even one heart attack... 11:29:14 At it wasn't just that people were dropping left and right of heart disease but death was attributed to something else... Heart disease was really rare. 11:30:06 impomatic: Found it. 11:30:29 Oh, absolutely. We have the luxury of heart disease because we live in post-industrial luxury. 11:30:31 impomatic: It's not much more than that, really; it's a one-paragraph mention. 11:30:47 If we all had to live by the sweat of our brow, then we'd all be healthier, hunter-gatherer, herder, and agriculturalist alike. 11:30:58 In the July 1978 issue (vol 3, num 7). 11:31:01 Or fisher. 11:31:31 Pretty lucky that our library had it: the 1978 folder is inexplicably missing the Feb, Mar and Apr issues. 11:31:43 I'll photograph the article in question. 11:31:44 And lifespan doesn't explain the difference in heart disesase. Oh, and early agriculturalist populations were the unhealthiest populations ever seen... 11:31:49 Those are really the four basic setups for a human society...shame that the non-agricultural ones have gone by the wayside. 11:31:57 Won't be a good-quality copy, but should be legible. 11:33:24 -!- Lymia has quit (Read error: Connection reset by peer). 11:33:49 -!- Lymia has joined. 11:33:53 Actually, that's not entirely true. Agriculture has been around for just as long as the other lifestyles. Exclusively agriculturalist societies weren't particularly unhealthy either: the current consensus is that they arose gradually in response to climate change, and were perfectly stable and healthy societies, for the time anyway. 11:34:41 It was the early *totalitarian* agriculturalists that were unhealthy, because they were expanding and populating faster than contemporary medicine could account for. 11:34:55 Knowledgeable archiologist can tell apart remains of argriculturalists and hunter-gatherers with one look at the skull... 11:36:30 Oh, undoubtedly. But it's much easier to *find* the skulls of early expansionist agriculturalists than it is to find those of the non-expansionist ones. 11:39:28 Basically, the nutrient definencies, antinutrients and toxins totally fscked up the early agriculturalist people (later ones learned how to destroy the antinutrients and toxins)... 11:41:20 -!- sebbu has quit (Ping timeout: 265 seconds). 11:41:29 Now, do I take a nap before class and risk missing it, or stay awake, not accomplishing a whole lot? 11:41:30 Even with the latter ones, one could see they still had problems as they were quite short... 11:42:05 -!- sebbu has joined. 11:43:03 Additionally, agriculture with grains really fscks up the environment... 11:43:20 Well, human history isn't exactly filled with good nutrition. People have always eaten what's available, whether it's hunted, gathered, herded, fished, or grown. If you happen to get a balanced diet out of that, then hooray, you get to live. 11:44:06 Yeah, early farming techniques sucked as well, because some knowledge was simply not available. 11:44:59 Alright, I'm going to risk not making it to class by getting into bed. :P 11:45:17 Because it's cold, and I have sleep transitions like a cat anyway. 11:45:36 -!- evincar has quit (Quit: Goodnight.). 11:46:16 -!- azaq23 has joined. 11:55:20 impomatic: http://users.ics.tkk.fi/htkallas/byte1.jpg http://users.ics.tkk.fi/htkallas/byte2.jpg contain the relevant parts. (For context, it's an article about what you could potentially do with this mysterious thing called a "modem".) 11:57:59 -!- impomatic has quit (Read error: Connection reset by peer). 11:59:02 -!- impomatic has joined. 11:59:23 Grrrr.... clicking links in Chatzilla always causes a crash :-( 12:02:47 Thanks Fizzie, that's exactly what I'm after. :-) 12:03:41 Nondeterministic polynomial, like they say. Walk to the library at least got me some fresh air, maybe I won't now fall asleep. 12:04:03 -!- acetoline has quit (Ping timeout: 272 seconds). 12:05:03 Did you notice which issue it's in? 12:06:06 In the July 1978 issue (vol 3, num 7). 12:07:03 Thanks :-) 12:33:41 -!- Phantom_Hoover has joined. 12:34:19 -!- nddrylliog has quit (Quit: Ex-Chat). 12:48:34 * ais523 golfs his or her Slashdot signature 12:48:49 (it's an INTERCAL addition without using the stdlib, I noticed a way to save another character) 12:48:54 ais523, your gender is not ambiguous here. 12:49:11 yep, I just feel awkward using gendered pronouns 12:50:20 -!- fizzie has quit (Read error: Operation timed out). 12:52:26 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 12:52:36 -!- fizzie has joined. 12:53:48 hmm, apparently someone returned 45/8 12:53:51 but to ARIN, not IANA 12:53:54 so IANA is still out 12:55:53 "Interop Show Network" 12:56:32 Yeah, it might not make sense to have a /8 specifically for their trade shows. 12:57:36 And IANA isn't out yet, they haven't officially distributed those last five blocks yet. Admittedly that's just a technicality. 12:58:59 -!- Lymia_ has joined. 12:59:42 Looking at the press confrence speakers: They appear to be the the highest-ranking persons in ICANN (representing IANA), NRO (represents RIRs), ISOC and IAB. You don't have that sort of cast if one isn't announcing something really, really major... 13:00:20 They're going to announce what they're going to have for lunch next week. 13:00:25 ... Such as announcing full IANA depletion. 13:00:35 yep, it's bound to be full IANA depletion 13:00:48 and they're holding off on the automatic 5-block allocation until the press conference to get the timings worked out 13:02:08 -!- Lymia__ has joined. 13:02:25 -!- Lymia has quit (Ping timeout: 240 seconds). 13:03:30 APNIC doesn't have allocation policy change on IANA depletion (but the final /8 will be reserved). IIRC, some RIRs do have policy changes. 13:04:49 -!- Lymia_ has quit (Ping timeout: 240 seconds). 13:05:13 I like it how they talk about how the final-five-blocks policy will be "triggered". It gives me a clear visual image of some sort of a ridiculously huge mousetrap-like contraption. 13:05:43 "Oh no, you've triggered the Global Policy for the Allocation of the Remaining IPv4 Address Space! Everyone, run for your lives!" 13:06:03 -!- Lymia_ has joined. 13:06:59 RIPE also has only a "Allocations from the last /8" special policy, not anything that'd automatically change after the IANA event. 13:08:26 IIRC, ARIN policies do change... 13:09:13 -!- Lymia__ has quit (Ping timeout: 240 seconds). 13:10:54 "When ARIN receives its last /8 IPv4 allocation from IANA, a contiguous /10 IPv4 block will be set aside and dedicated to facilitate IPv6 deployment. Allocations and assignments from this block must be justified by immediate IPv6 deployment requirements." 13:11:01 Well, they do that immediately, I guess. 13:11:23 ("Examples of such needs include: IPv4 addresses for key dual stack DNS servers, and NAT-PT or NAT464 translators.") 13:15:17 Here's a humorous-in-retrospect RIPE position statement from October 2007: 13:15:21 "We recommend that service providers make their services available over IPv6. We urge those who will need significant new address resources to deploy IPv6. We encourage governments to play their part in the deployment of IPv6 and in particular to ensure that all citizens will be able to participate in the future information society. We urge that the widespread deployment of IPv6 be made a high priority by all stakeholders." 13:15:28 Yeah, that might have been a good idea. 13:16:12 ah, so ARIN's keeping back a /10 that can only be allocated for the purpose of if extra IPv4 addresses are needed to switch over to IPv6 for some reason? 13:18:19 Yes. Though there were quite some requirements for qualifying to get addresses from that block. 13:19:24 (And you can only get something between /24 .. /28 out of that.) 13:20:31 RIPE (and I think the others) also have a "the LIR must already have at least one IPv6 assignment before it can get any from the final /8" policy. 13:21:11 God, Headshoots is even funnier than Boatmurdered. 13:21:53 Boatmurdered has a better name, though 13:22:33 also, I found Headshoots quite hard to follow 13:22:46 although I agree, it's hilarious 13:23:11 I love the Room Outside Of Space. 13:25:46 hmm, apparently Java is also crashed by Double.parseDouble("2.2250738585072012e-308") 13:26:15 for a related reason 13:26:19 -!- asiekierka has joined. 13:26:20 (the bug was first reported in PHP) 13:27:21 (Headshoots is also way more awe-inspiring than Boatmurdered.) 13:27:24 ais523: Yes, and the compiler will hang if you try to compile "double d = 2.2250738585072012e-308;" and print it out. 13:27:32 fizzie: indeed 13:27:47 (the number in question is DBL_MIN with one digit changed, IIRC) 13:28:08 I guess the compiler-hanging problem has less denial-of-servicey implications, but still. 13:28:22 ah, PHP's hang happens with the last digit as 1, rather than 2 13:28:37 It's the same bug "the other way around", they say. 13:28:46 "Like PHP, Java gets stuck crossing the normalized/unnormalized border, but in the opposite direction: it starts with an estimate just below DBL_MIN — 0x0.fffffffffffffp-1022 — and is trying to get up to DBL_MIN." 13:28:57 ais523 lol yeah we just went over this in #haskell 13:29:07 DBL_MIN apparently ends with a 4 13:29:20 so it's definitely an edge case, but who'd have thought of testing it? 13:31:41 OpenOffice.org Calc seems to be OK with similar numbers (haven't updated to LibreOffice yet) 13:31:43 I wonder about Excel? 13:38:41 LibreOffice? 13:40:31 -!- ais523_ has joined. 13:42:13 It can bring down some of the banking systems :/ I know, I just tested it on the test servers we have at work.... All I can say is ^#%$ me that is quite something. 13:53:34 How's IPv4? 13:57:35 Gregor: Feeling exhausted, I believe. 13:57:45 (Maybe not quite.) 13:58:27 If you want a really short summary, APNIC got their two blocks, and IANA's very likely to have an event about their depletion the day after tomorrow. 13:58:38 (They've invited journalists and everything.) 13:58:47 (Perhaps there will even be cake.) 14:06:51 yep, the final allocation has been triggered 14:06:59 but hasn't happened yet, so that they can have a press conference about it when they do 14:07:21 45/8 was returned to ARIN, IIRC, which gives them an extra block to work with 14:07:27 but doesn't prevent IANA being depleted 14:13:38 -!- copumpkin has quit (Ping timeout: 264 seconds). 14:14:04 -!- copumpkin has joined. 14:14:12 -!- cheater- has quit (Ping timeout: 240 seconds). 14:16:13 Hmm... cat /proc/sys/net/ipv4/route/max_size --> 4194304 ... Not even DFZ is that large... 14:16:42 -!- cheater- has joined. 14:22:27 -!- MigoMipo has joined. 14:22:58 Is that thing in bytes or numbers of routes? 14:23:37 $ cat /proc/sys/net/ipv4/route/max_size 14:23:37 1048576 14:23:51 My table is smaller. :v 14:24:05 s#v#/# 14:25:18 Maximum number of routes... 14:25:35 You presumably have less RAM... 14:28:34 When lots of IPv4 traffic is much less than it is now and DFZ has exploded, running some PC as IPv4 DFZ router might be an option... 14:29:48 Remember it doesn't take a lot of major sites switching to radically slash the IPv4 traffic. 14:30:29 (assuming IPv6 is available) 14:30:49 There's 2G of RAM on that particular box. 14:31:02 -!- Lymia__ has joined. 14:31:40 This box has 8GB... 14:32:32 Looks like a linear dependency. :p 14:34:23 -!- Lymia_ has quit (Ping timeout: 240 seconds). 14:35:51 Not exactly... These figures (4M and 1M) have ratio of 1 entry per 2kiB memory. I have another computer with ratio of 8KiB per entry. 14:38:13 Ilari: My phone says 327y8 routes for 256M of memory. 14:39:03 That's 8 KiB per route too. 14:39:10 what's DFZ? 14:39:16 Default-Free Zone. 14:39:39 oh, an area where you need an explicit route for every prefix? 14:39:49 ouch 14:40:48 Yes. 14:42:53 Using PC as router might be slow, but it could handle insane number of routes at once... 14:44:52 the really expensive routers that the backbone use are pure custom-built hardware that can do the routing in parallel 14:45:08 presumably they actually need them, or they wouldn't spend that sort of money, but who knows 14:50:20 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:52:46 -!- asiekierka has quit (Ping timeout: 240 seconds). 14:54:24 There are some rather nice (if experimental) ways of (ab)using the caches and virtual-address translation machinery of x86 (and others) to do pretty fast routing-table longest-matching-prefix lookups. 14:54:47 Still, there's interrupt overhead from a separate NIC and so on. 14:54:50 Even the relatively puny FICIX (the Finnish commercial traffic hub) sees about 4 Mpps (million packets per second) of traffic over their switches; that's (for the routers on the sides that see large fractions of it) not too much time to spend on a single packet. 14:56:11 -!- Sgeo_ has quit (Ping timeout: 240 seconds). 14:57:47 -!- cheater- has quit (Ping timeout: 240 seconds). 14:59:54 -!- cheater- has joined. 15:01:20 Ah yeah, paging... x64 got rid of (most of) segmentation but still supports paging... 15:06:06 http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=752162&tag=1 is I think what I read. 15:06:33 It's an old paper, from '99. 15:08:36 Pentium II and Linux 2.0.30, how quaint now. :p 15:09:55 But it has 133 subsequent citations, I think there was some interesting stuff there too. 15:10:39 Some of it is of course exactly that sort of custom-hardware routers. 15:20:50 -!- copumpkin has joined. 15:25:56 -!- Mathnerd314 has joined. 15:29:32 -!- elliott has joined. 15:30:10 -!- Sgeo has joined. 15:30:53 -!- zzo38 has joined. 15:32:48 The ending of Headshoots is quite possibly the most awesomely bizarre thing ever. 15:32:55 it ended? 15:32:59 you'll have to remind me of what happened 15:33:00 ais523_, exactly. 15:33:02 -!- zzo38 has set topic: Rust monsters have to eat, too | http://208.78.103.223/esoteric/ | http://tunes.org/~nef/logs/esoteric/?C=M;O=D. 15:33:47 IIRC, someone made a deliberate attempt to kill it by setting off HFS /and/ a tantrum spiral, and someone else managed to revive it by making a sealed area out of part of the fortress and locking the rest of the world out 15:33:55 -!- FireFly has joined. 15:33:55 -!- elliott has set topic: Rust monsters are immortal and have no need to eat | http://208.78.103.223/esoteric/ | http://tunes.org/~nef/logs/esoteric/?C=M;O=D. 15:33:58 hmm, ais523_ plays DF? 15:34:01 elliott: no 15:34:01 or just knows about it? 15:34:11 but I tend to percolate a lot of info about that sort of thing 15:34:15 ais523_, yeah, that wasn't even halfway through. 15:34:28 ais523_: I can explain Minecraft perfectly to you, then: 15:34:38 By the end HolisticDetective and Nemo could have each taken on Cthulhu and won hands-down. 15:35:06 elliott: inspired by Dwarf Fortress, but with a simpler interface, simpler mechanics, and better graphics, and you do everything yourself rather than ordering AI dwarves to do it? 15:35:10 ais523_: It's like Dwarf Fortress, except dumbed down, with simpler game mechanics, where you're the only dwarf, and have an unreasonable compulsion to build random things. 15:35:15 ha 15:35:19 semi-snap 15:35:27 I've percolated quite a lot of Minecraft, too 15:35:31 Headshoots didn't even end: a couple of people just decided to flood it with magma and then finally make HD and Nemo skeletons, which wiped everyone else out. 15:36:10 elliott: meanwhile, I'm laughing at Java having almost the same bug as PHP 15:36:20 ais523_: the floating point stuff? 15:36:20 and showing all my students, who all had the same reaction more or less 15:36:23 elliott: yes 15:36:24 http://lparchive.org/Dwarf-Fortress-Headshoots/Update%2079/ is an analysis of their stats, which are apparently all off the scale. 15:36:31 ais523_: let's be fair, that's a very subtle bug 15:36:38 PHP crashes if you change the last digit of DBL_MIN from 4 to 1 15:36:41 ais523_: it was quite arguably /gcc's/ bug 15:36:43 Java crashes if you change it from 4 to 2 15:36:45 oh 15:36:49 ais523_: I meant the recent one 15:36:53 where parsing a float could hang PHP 15:36:57 elliott: I do mean that one 15:36:59 it's a double, not a float 15:37:00 ah 15:37:20 DBL_MIN is 2.2250738585072014e-308; PHP hangs on 2.2250738585072011e-308, Java hangs on 2.2250738585072012e-308 15:37:29 ais523_: well, I can't really blame anyone for having it, considering that IIRC the bug was in a library of common procedures -- not written by the PHP devs, some "standard" stuff to do it -- and to do with x87 15:37:34 and people are finding other applications that are crashed by similar numberlike strings 15:37:34 and volatile variables 15:37:40 and probably gcc's fault 15:37:52 I mean, I think Headshoots might be the closest thing to victory you can get in DF. 15:38:00 elliott: I can blame the PHP devs for it, specifically because the library they copied had a big comment saying "this code does not work on x87" 15:38:09 I'd forgive them were it not for that 15:38:18 ais523_: yes, but /it's not meant to/ 15:38:23 ais523_: it was a gcc "optimisation" 15:38:27 ais523_: normally, the code executed in SSE 15:38:31 it's not even gcc's fault 15:38:33 ais523_: but gcc decided to be Smart and moved one to x87 15:38:43 ais523_: optimisations changing behaviour == lol 15:39:17 elliott: err, no? optimising changing undefined behaviour == expected 15:39:38 luckily C99 defined it, which gives gcc scope for working out what should actually happen 15:39:46 ais523_: well, then it's the code's fault 15:39:52 the issue with C89 is that gcc can't really fix the bug because the intended semantics are completely unclear 15:39:52 and the PHP devs didn't write it 15:40:33 elliott: I'd agree, except for the code saying which archs it works on, with x87 not being one of them 15:40:49 PHP is the most impressive esolang I've seen so far 15:41:02 ais523_: except it /didn't/ run on x87 for the mostpart 15:43:52 kfr, clearly you haven't seen M4. 15:44:02 What's that? 15:44:17 Google it. 15:44:22 YOUR MIND WILL BE BLOWN 15:44:33 i.e. CPP for the terminally insane. 15:45:15 http://en.wikipedia.org/wiki/M4_%28computer_language%29 15:45:58 You should eschew CPP for it. 15:47:18 02:32:53 What are those crazy programming languages where the correctness of the code is part of defining the algorithm? 15:47:19 02:33:15 I think I recall some three letter initialism one where quicksort is like 150+ lines 15:47:19 02:33:26 It may be related to formal proof systems 15:47:19 02:35:04 I should probably look into Agda/Coq and such at some point, too 15:47:19 02:35:09 Learn about dependent typs 15:47:20 02:35:10 types* 15:47:34 (1) "Crazy"; well, computer proof systems, but more generally, languages with dependent types. 15:47:40 (2) ATS, and _quicksort_ isn't 150 lines. 15:47:57 _Quicksort that returns a proof that the array is sorted_ is something like that (_with_ whitespace and big comment block). 15:48:03 The latter being something you can't even do in most languages. 15:48:15 Wow, you're an avid log reader 15:48:29 A lot of people here are, they've just been quiet lately. 15:48:35 * elliott waves to ais523_ and oerjan 15:48:41 kfr, yesyesyes, we know you think that logs are The Man trying to keep you down. 15:48:46 (3) Yes. (4) Agda is quite similar to ATS, sort of, at the core, but less applied. Coq is interesting. 15:49:35 (Agda is an experiment in dependent typing under the delusion that it is a proof assistant.) 15:50:37 o_O 15:50:39 Phantom_Hoover: It isn't under that delusion. 15:50:46 Idiots are under that delusion. 15:51:17 Idiots a.k.a. most of its user base. 15:51:35 Phantom_Hoover: Not really. 15:51:43 Very few people use Agda. 15:51:50 Those who do are pretty damn smart. 15:51:50 A large part? 15:53:38 Damn, Agda users are even more elitist than the Haskell ones? 15:53:42 Now I need to switch... 15:53:44 Curses. 15:53:51 Phantom_Hoover: Name an idiot that uses Agda. 15:53:55 kfr: I don't use Agda. 15:54:08 elliott: Well I could do it 15:54:11 Haskell users are elitist now? 15:54:17 Phantom_Hoover yes 15:54:32 I think /proving/ large theorems in Agda is just about impossible and a silly thing to try and do if not used to do something else in Agda. 15:54:42 Phantom_Hoover has turned my off-hand remark into the Church of Anti-Agda. :p 15:55:03 elliott, it is called a theorem prover in many, many places. 15:55:16 Phantom_Hoover: Links. I very much doubt those calling it so use it. 15:55:23 See: the WP article. 15:55:42 I can link you to ten crap Wikipedia articles. :p 15:55:49 (Related to computing.) 15:56:30 "You know how they say that when you have a problem and you decide to use regular expressions to solve it, you now have two problems? Well, Haskell is the opposite in that regard. You start out with a problem, then you go through a lot of trouble to actually learn the language and then you no longer have the problem in the first place because you have lost interest in programming." - by Philip Wadler, from "Faith, Evolution, and Programming Languages", April 15:56:30 2007 15:56:32 WP = ? 15:56:47 Wikipedia. 15:59:10 Phantom_Hoover: http://twitter.com/pigworker/status/25356492341252096 Oh noes an Agda user, teaching no less! Probably an idiot! 15:59:39 Of course he's an idiot 15:59:43 He uses Twitter 15:59:46 That's Conor Whatthehellishislastname. 15:59:51 kfr: /facepalm 15:59:55 OH WAIT 15:59:56 elliott indeed 16:00:00 IT SAYS ON THE PAGE 16:00:06 Phantom_Hoover: OH WOW 16:00:08 WHAT TECHNOLOGY 16:00:09 Having a Twitter account -> /facepalm 16:00:29 kfr: Please enjoy your /ignore responsibly. 16:00:37 Phantom_Hoover: Choice McBride quote: "@tom_harper One day, Agda may become sufficiently comfortable that it too induces somnambulance. Just now...it's a great way to feel alive." 16:00:53 Also: 16:00:54 kfr, well, you probably think he's an idiot because he is an IVORY TOWER ELITIST. 16:01:02 @edwinbrady @larrytheliquid I was cautious about using Unicode in Agda at first, but I'm completely sold on it now. 16:01:05 @TacticalGrace The editor I use replaces all unicode symbols by blanks. I recommend it. 16:01:11 @pigworker That makes for some nice reading of the standard library :P 16:01:16 @TacticalGrace It reminds me of Zaphod Beeblebrox's peril-sensitive sunglasses. 16:01:33 XD 16:03:47 Aww, Unicode hater 16:06:53 well... unicode itself isn't so bad. it's just that nobody uses it. 16:07:26 ...what. 16:07:30 Everybody uses Unicode. 16:07:39 Uhm I use Unicode on a daily basis 16:07:57 kfr, the hate is not for Unicode per se, but for Agda's attitude towards it. 16:08:06 There's no hate there. 16:08:08 Sheesh. 16:08:09 IPv6 fun: If you get stale SLAAC addresses, there doesn't seem to be any (obvious) good way to clear them... 16:08:13 你是个白痴>-> 16:08:16 Phantom_Hoover: You are waaay to ideological about this :P 16:08:23 [16:03] * elliott waves to ais523_ and oerjan <--- ais523_ waves back, and didn't see the nickping because they were going through a student's work with them at the time 16:08:26 elliott, I am rephrasing what kfr said. 16:08:32 Phantom_Hoover: O. 16:08:33 *Oh. 16:08:38 Doing ip -6 addr del on them would be obvious way, but that doesn't work. 16:08:48 Phantom_Hoover that is not what I meant though :| 16:08:51 Whatever 16:10:00 did esolangs invent the idea of using Unicode for commands all over the place? 16:10:10 Doubt it 16:10:10 (the idea originally came from APL, but Unicode wasn't around at the time so it couldn't have used it) 16:10:25 Haha yeah APL somewhat inspired me there 16:10:44 I already thought of it before I had ever even heard of APL though 16:10:53 I thought nobody had done it before 16:10:57 then somebody showed APL to me 16:11:05 -!- BeholdMyGlory has joined. 16:11:17 elliott: I'm not convinced the Java floating point crash is x87-related at all 16:11:24 possibly not 16:11:33 especially as it seems to happen on 64-bit processors too, unlike the PHP crash 16:12:01 Well, that part of the ISA is the same on AMD64, no? 16:12:12 I love the comment from a redditor who works at a bank, and ran it on their test servers and crashed them 16:12:20 LOL. 16:12:45 (he or she was right to do that test, I think, and has probably warned his or her boss already; better discover you have a problem in test, than in production) 16:12:59 That PHP overlord originally claimed it was a bug in gcc, right? 16:13:07 ais523_: are you /sure/ they've warned their boss? I'd be pretty scared to... 16:13:16 elliott: no 16:13:20 Management doesn't exactly have a stunning track record of being understanding of those who discover vulnerabilities. 16:13:45 but I wouldn't be scared to, it would be a case of "the news is reporting a bug in Java, I checked to see if it affects us and it does, we'd better fix it before someone else uses it to bring down our system" 16:14:07 and management would be very unlikely to blame that on me unless they were in to shooting the messenger 16:14:17 perhaps you'd have to be careful in how you phrased your report to them 16:14:18 ais523_: that seems terribly _optimistic_ to me 16:14:45 > read "2.2250738585072012e-308" :: Double 16:14:46 2.2250738585072014e-308 16:15:01 Haha yeah we already did that in #haskell earlier today 16:15:10 > read "2.2250738585072011e-308" :: Double 16:15:11 2.225073858507201e-308 16:15:17 ais523_: consider http://techcrunch.com/2011/01/31/plentyoffish-ceo-we-were-hacked-almost-extorted-so-i-emailed-the-hackers-mom/ (sorry for linking to techcrunch...), where as far as I can tell from reddit and elsewhere, the actual story is that a security company reported a vulnerability in the site to him, and he decided to go batshit insane and try and ruin their reputation 16:15:22 really, you'd need to try all possible last digits 16:15:29 > text $ (\x -> x++' ':show x) "> text $ (\\x -> x++' ':show x)" 16:15:30 > text $ (\x -> x++' ':show x) "> text $ (\\x -> x++' ':show x)" 16:15:41 don't be silly; Haskell is perfect 16:15:43 it can't have bugs! 16:15:53 elliott: actually working for a company, you probably have more leeway, especially if your job is to find bugs 16:16:17 companies tend to be more understanding when their own employees do it then when some random person emails them 16:16:20 ais523_: oh, if your job is to find bugs, sure 16:16:24 but if you're just some random undering... 16:16:27 *underling 16:16:31 I guess I'm cynical :) 16:16:48 if you're in a bank, and your job isn't to find bugs or create bugs, you probably wouldn't have the rights to send arbitrary input to the test server 16:16:54 s/create bugs/write code/ 16:17:38 incidentally, use of show, repr, or similar constructs that languages have for escaping strings makes writing quines much easier 16:17:39 true 16:17:46 I prefer "create bugs" 16:18:39 :t text 16:18:40 String -> Doc 16:18:48 Doc? 16:18:59 normally :t gives a good idea of what a function does, but not in this case 16:19:24 @hoogle Doc 16:19:25 Text.PrettyPrint.HughesPJ data Doc 16:19:25 Language.Haskell.TH.PprLib type Doc = PprM Doc 16:19:25 System.Directory getUserDocumentsDirectory :: IO FilePath 16:19:29 ais523_: I think Doc is from prettyprinting 16:19:32 oh, it presumably makes lambdabot not quote its output 16:19:38 no, it's more general than that 16:19:44 that's just the Show instance of Doc that is doing that, I think 16:19:47 > rparen 16:19:48 ) 16:19:49 elliott: yes, I mean that's what it's being used for in this situation 16:19:52 > int 3 16:19:53 3 16:19:57 > "abc" 16:19:57 > brackets (text "af") 16:19:58 "abc" 16:19:58 [af] 16:20:04 > text "a" <> text "b" 16:20:05 ab 16:20:07 > text "a" <+> text "b" 16:20:08 Ambiguous occurrence `<+>' 16:20:08 It could refer to either `Control.Arrow.<+>', i... 16:20:13 > text "a" $$ text "b" 16:20:13 a 16:20:13 b 16:20:16 etc. 16:20:18 ooh 16:20:23 > text "a" $$ text "b" $$ text "c" 16:20:24 a 16:20:24 b 16:20:24 c 16:20:30 of course its purpose isn't just to make lambdabot unescape 16:20:34 > fix (text "a" $$) 16:20:35 but that's why it's involved in the lambdabot quine 16:20:38 mueval-core: Time limit exceeded 16:20:41 :( 16:20:44 :t iterate 16:20:45 forall a. (a -> a) -> a -> [a] 16:20:52 elliott: stop creating botloops 16:20:56 especially within a single bot 16:21:03 ais523_: botloops are a channel tradition TYVM 16:21:04 > (iterate (text "a" $$) (text "a")) !! 10 16:21:04 a 16:21:05 a 16:21:05 a 16:21:05 a 16:21:05 a 16:21:06 [6 @more lines] 16:21:09 aww 16:21:10 @more 16:21:10 a 16:21:10 a 16:21:12 a 16:21:13 lol 16:21:14 a 16:21:16 a 16:21:18 it's too smart :) 16:21:20 a 16:21:29 that was 11 16:21:37 yes 16:21:39 because the first is "a" 16:21:43 and then it becomes "a\na" 16:21:43 I hate how it adds a space in the beginning. 16:21:43 etc. 16:22:40 ais523_: botloops are a channel tradition TYVM <--- I know, that's why I know enough to avoid them 16:22:53 in fact, I fear it was me who started the tradition 16:23:21 ais523_: I actually botlooped lambdabot and egobot recently 16:23:41 fizzie: has fungot been told to ignore lambdabot? 16:23:41 ais523_: but there isn't afaik. i learnt from reading the wikipedia article 16:23:50 ^ignore 16:23:52 oh, no need, it got the list from Wikipedia 16:23:56 :D 16:23:57 LIST OF BOTS 16:24:28 What are botloops? Making bots give input to each other? PRIVMSG recursion? 16:24:51 11.01.20:12:51:36 ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);"; printf(s,34,s,34);// 16:24:51 11.01.20:12:51:36 !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);"; printf(s,34,s,34);// not available 16:24:51 11.01.20:12:51:38 ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);"; printf(s,34,s,34); 16:24:51 11.01.20:12:51:38 !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);"; printf(s,34,s,34); not available 16:24:52 11.01.20:12:51:51 ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);// 16:24:56 -!- elliott has left (?). 16:25:18 -!- elliott has joined. 16:25:23 kfr: it's when you get two bots to each output something that's valid input to the other 16:25:24 Heh 16:25:30 sorry 16:25:31 I was thinking about that earlier today 16:25:32 11.01.20:12:51:51 ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);// 16:25:32 11.01.20:12:51:51 !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);// not available 16:25:32 11.01.20:12:51:53 ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);// 16:25:33 11.01.20:12:51:53 !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);// not available 16:25:36 there 16:25:38 that's how i did it 16:25:41 "?so" turned out to just be 16:25:44 @source x 16:25:44 x not available 16:25:45 m4 doesn't seem to be good for preprocessing C codes. 16:25:46 @src x 16:25:47 Source not found. The more you drive -- the dumber you get. 16:25:48 because they're bots, they don't realise they've been tricked, and keep sending messages back and forth indefinitely 16:26:06 normally, until one of them gets kicked 16:26:08 zzo38: it was designed for processing Ratfor codes and Ratfor is very much like C 16:26:12 (Although they did try by making it send #line directives to the output) 16:26:13 or Freenode gets impatient 16:26:20 made by the K in awk 16:26:38 elliott: that's a different K from the K in K&R? 16:26:43 nope! 16:26:43 :p 16:27:34 What would you say is the most impressive esolang which is still being used to actually solve problems? 16:27:45 i.e. it is actually practical 16:28:10 the only esolang that I've ever seen used for practical tasks is Befunge-98 16:28:26 and in those cases, not because it's actually good at them, but because people wanted to do them in an esolang and it seemed less awkward than the alternatives 16:28:30 hi fungot, btw 16:28:30 ais523_: i just did the fnord fnord in scheme code? how can you use ' set_functions' anywhere in there? 16:29:24 some esolangs are very good at specific contrived tasks 16:29:45 like INTERCAL for bit-twiddling, or Brainfuck for certain types of text processing 16:30:01 but they're normally sufficiently bad at anything else that you can't easily write the support code needed to use them for those purposes 16:30:27 ^bf >,[>,]<[.<]!Hello, world! 16:30:27 !dlrow ,olleH 16:30:47 ^source 16:30:47 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 16:30:50 you're unlikely to find a shorter file-reverse in pretty much any other language 16:31:08 ais523_: in golfscript i think it would be one character 16:31:09 just "reverse" 16:31:31 yep, the "pretty much" was explicitly with GolfScript and floGscript in mind 16:31:48 and my as-yet-unnamed anagolf-based language 16:32:19 hmm, i can't actually find reverse on http://www.golfscript.com/golfscript/quickref.html 16:33:33 "reverse lines" is apparently 7 bytes in GolfScript, 2 in FlogScript 16:34:27 reversing the elements of a list is actually just 3 bytes in Underlambda: '*t 16:35:16 (t is fold, with no explicit zero: you can add the zero to the end of the list if you want to include that too, because Underlambda's untyped) 16:35:47 err, wait, you'd need to escape the list first 16:35:53 'ae'*t 16:36:04 (and e is map) 16:37:35 -!- azaq23 has quit (Ping timeout: 246 seconds). 16:39:20 -!- azaq23 has joined. 16:40:39 -!- asiekierka has joined. 16:43:01 -!- ais523_ has quit (Quit: Page closed). 16:47:21 -!- evincar has joined. 16:47:36 I return, with a vengeance. 16:47:40 AAAAAAH 16:47:45 Ohai. 16:48:08 ^ul ()(S)((a)^(b)^(c)^)^ 16:48:09 ...bad insn! 16:48:10 I'm working on something you'd like, then hate, then be indifferent toward, then hate, then like again. 16:48:13 ...:( 16:48:14 wut 16:48:24 evincar: are you INSINUATING something about me 16:48:36 elliott: I see what you did there. 16:48:47 I hope you do. :P 16:48:47 ... i don't 16:48:51 :D 16:48:57 You'll oscillate. 16:49:01 elliott: what's that UL program meant to do? 16:49:03 Sinusoidally, perhaps. 16:49:04 evincar: oh wow 16:49:07 it looks like a pretty obvious crash to me 16:49:07 xD 16:49:18 ais523: the a^b^c^ bit is meant to be a list represented as its folding instruction 16:49:19 ohhh 16:49:21 it should be ~^ 16:49:27 actually 16:49:28 it should be 16:49:29 given 16:49:31 yep, and there should be some colons in there too 16:49:39 PREVIOUS F 16:49:40 it should be 16:49:42 PREVIOUS CURRENT F 16:49:43 and then ^ 16:49:54 ^ul ()(S)((a)~^(b)~^(c)~^)^ 16:49:55 a ...bad insn! 16:50:02 also, isn't that map not fold? 16:50:04 grr 16:50:05 i need a dip 16:50:09 ais523: no, the function is meant to take two arguments 16:50:15 ais523: it starts with zero f on the stack 16:50:16 then it becomes 16:50:21 zero first-elem f 16:50:22 heh, the two are basically the same in Underload 16:50:23 then 16:50:27 f(zero first-elem) f 16:50:28 then 16:50:30 f(zero first-elem) second-elem f 16:50:39 f(f(zero first-elem) second-elem) f 16:50:43 and then at the end it should pop the function 16:50:48 Underlambda t works by dumping the whole list on the stack, then repeatedly running the operation you give 16:50:49 but this seems like it'll be a bitch to do.... 16:50:51 *do... 16:50:53 i need a dip <- were you actually talking about orally consumed tobacco there? 16:50:58 a number of times equal to the list length minus one 16:51:02 kfr: no, a combinator 16:51:08 Right 16:51:17 elliott: Underload dip is a~*^ 16:51:25 i know 16:51:34 ok so we want 16:51:45 (push first elem) dip dup (^) dip 16:51:47 kfr: it runs a program without the top stack element, then adds the element back again afterwards 16:51:49 can that be simplified 16:51:49 ? 16:51:51 -!- Mathnerd314 has quit (Ping timeout: 240 seconds). 16:52:01 ((a))a~*^:(^)a~*^ 16:52:02 I was about to ask if Haskell has it 16:52:05 that can surely be simplified 16:52:14 But I guess that's that 16:52:27 kfr: it doesn't really make much sense with Haskell's evaluation model, it's more a concatenative than functional combinator 16:52:51 evincar: but yes stay you are cool 16:52:59 but on lists rather than stacks, you could write it as "dip f h:t = h:(f t)" 16:53:09 lists are stacks 16:53:13 @pl let dip f (h:t) = h:(f t) 16:53:13 (line 1, column 26): 16:53:13 as far as the concatenative model is concerned 16:53:13 unexpected end of input 16:53:13 expecting variable, "(", operator, ":", "++", "<+>", ";" or "in" 16:53:20 stacks are essentially linked lists 16:53:22 elliott: well, yes 16:53:27 @pl \f (h:t) -> h:(ft ) 16:53:27 const ((: ft) . head) 16:53:28 @pl \f (h:t) -> h:(f t) 16:53:28 (`ap` tail) . (. head) . flip ((.) . (:)) 16:53:32 gross 16:53:34 oh, it has to be a function not a statement 16:53:40 haskell has no statements 16:53:45 what you said there is only valid in a do block 16:53:50 err, yes, that's what I meant by statement 16:53:53 elliott: It's noon here and I've been awake since 11pm yesterday. So forgive me if I suddenly fall asleep. 16:53:53 right 16:54:01 evincar: THAT WOULD BE GIVING UP 16:54:06 and that's the ugliest pointfree form I've seen ever 16:54:20 lol 16:54:41 Underload's inherently point-free, and a~*^ is pretty simple 16:54:42 It's almost pornographic. 16:54:53 but sometimes it gets ugly for other things 16:54:55 One way avoiding bot-loops would be to make their output as NOTICE messages instead of PRIVMSG 16:55:03 (OTOH, dip is much more important in Underload than Haskell) 16:55:06 @pl \a b c d e f g -> g f a c e d b 16:55:07 flip . ((flip . ((flip . ((flip . (flip .)) .)) .) . flip . ((flip . (flip .)) .) . flip . (flip .)) .) . flip . (flip .) . flip (flip . flip id) 16:55:11 zzo38: indeed, and that's what technically they should do 16:55:20 and probably would, were it not for mIRC 16:55:27 ^ul (TIME)S 16:55:28 Flipping burgers 16:55:34 freenode is my favourite mIRC server. 16:55:47 ais523: notices are ugly 16:55:49 in almost any client 16:55:51 and annoying too 16:55:57 ais523: Were it not for mIRC, many people would be spared having to begin or end sentences with "were it not for mIRC". 16:55:59 elliott: I don't think so. 16:56:00 anyway, botloops are _fun_ 16:56:02 zzo38: technically, fungot - and everyone else - misparsed that, CTCPs are supposed to be allowed in the middle of a line 16:56:03 ais523: ptys work perfectly well 16:56:12 * Received a CTCP TIME from fungot (to #esoteric) 16:56:13 elliott: ( define ( fnord liste symbol?) ( else ' even)) x sort ( filter xs ( x) 16:56:14 :> 16:56:16 worked for me 16:56:26 hmm, clients should probably just show notices as -fungot- rather than , with maybe a color change, and leave them identical 16:56:27 ais523: wait a minute, i need to do that 16:56:30 I think that's what clog does 16:56:37 -- is ugly :P 16:56:44 ^ul (ACTION asdf)S 16:56:45 * fungot asdf 16:56:45 (I take that back. According to Google, no one has ever said those five words in sequence before.) 16:56:49 -ugly? doing it on every line is famously scary- 16:56:52 ^ul (xACTION asdfy)S 16:56:53 xACTION asdfy 16:56:57 ^ul (xPINGy)S 16:56:58 xPINGy 16:57:02 * Ping reply from zzo38: ? second(s) 16:57:11 zzo38 wins the "only client that obeys the RFC" prize 16:57:13 why am i not surprised? 16:57:26 I thought zzo38 still did IRC over telnet/netcat? 16:57:37 I obey that part of the RFC too, when I'm IRC'ing by hand 16:57:39 ais523: No, I wrote my own IRC client. 16:57:49 ais523: he wrote his own client in PHP 16:58:00 elliott: I'm not surprised that it obeys the standard either 16:58:05 ais523: that consists of an IRC-protocol syntax highlighter, and a way to type "PRIVMSG #foo :" quickly 16:58:26 *completely* unrelatedly, all over the globe, stereotypes continue to be obeyed 16:58:28 haha, that was unexpected, but not surprising either 16:58:28 (Command-line PHP, as it turns out. If I ever rewrite it, it will use C (Enhanced CWEB) instead probably) 16:58:52 link us to PHIRC again zzo38? 16:59:00 elliott: It actually does a few more things that just syntax highlighting and way to type "PRIVMSG #foo :" quickly. It does a few other things too. 16:59:09 haha, that was unexpected, but not surprising either 16:59:10 what was? 16:59:16 the way zzo38's client works 16:59:18 zzo38: oh right, you can script it right? 16:59:20 with a Forth dialect? 17:00:50 Actually it has other features too. /F can be used to set filters, and /SET SHOWTIME + will make it display the time with each message received. And it will mask the parameter for any command line starting with PASS 17:01:00 It also has macros which can be assigned to function keys. 17:01:26 can you link again? 17:01:51 http://zzo38computer.cjb.net/prog/PHIRC/ 17:02:31 Can you offer the source code in a Free archive format such as tar? 17:02:35 wow, the gcc bug report about x87 weirdness (323, fixed eventually for C via the slow -fexcess-precision=standard that makes absolutely sure floating point is vaguely sane) ended up filling up with Exchange error messages about bounced email from what looks like a spambot address 17:02:46 elliott: OK I can do that. Just a minute. 17:02:52 I use gNewSense, so I cannot use any file format that is not openly standardised with a Free Software implementation. 17:03:11 ais523: heh 17:03:13 elliott: but .zip is an open standard with several free software implementations, IIRC 17:03:38 ais523: No, ZIP files are not an open standard. 17:03:48 Oh, it is. 17:03:53 ais523: Well, the original implementation has to be Free! 17:04:28 I want a desktop made out of completely open source hardware! 17:04:42 elliott: it seems muddled 17:04:48 OK I made a .tar.gz now available 17:04:56 7zip o/ 17:04:57 elliott: I'ma snooze a bit before class, but I'll be back on. When you get a sec, browse the logs from earlier and read up on the thingy I'm working on and started telling ais523 about. 17:05:10 PKWare released the original specification to the public domain (although not their original implementation), also the file extension .zip 17:05:17 I didn't even realise you /could/ release a file extension to the public domain 17:05:24 (as in, that such an operation was meaningful) 17:05:28 evincar: hmm, I didn't see that in the logs 17:05:43 oh, seems so 17:05:44 elliott: It'll be fun to hear you yell at me about it. :P 17:05:46 kfr: I would also like such a thing (currently I have no such thing) 17:05:56 -!- evincar has quit (Quit: Sleemp.). 17:06:17 zzo38: I know somebody on freenode who makes large feature size ASICs at home haha 17:06:28 I've also looked into VHDL/Verilog + FPGAs etc 17:06:39 But FPGAs would obviously not be free either 17:06:58 YOU SUCK AND YOUR LANGUAGE SUCKS 17:06:59 kfr: seriously, someone making ASICs at home? 17:07:07 what do they make them out of? 17:07:07 Yes the ZIP files is now open standard, whether or not the original implementation is Free is not important as long as it is open standard and Free implementation are available or that you can write one. 17:07:11 ais523: Oh, many freelancers do that commercially 17:07:21 I know somebody in Japan who does it commercially 17:07:24 I'm surprised that they can get sufficiently pure silicon 17:07:26 Open standards is more important I think. 17:07:41 There are some machines which can do it with larger feature sizes, I think? 17:07:58 Let me sanity check in ##electronics 17:08:02 At least he told me he did 17:08:05 the other parts of the process are not completely implausible to do on a small scale, although getting the accuracy required for the photomasks could be painful (presumably some sort of optical solution) 17:08:10 How are ASICs build? 17:08:18 I make ASICs out of paperclips. 17:08:40 zzo38: Well, the mainstream x86 ones are made in extremely expensive fabs in Taiwan 17:08:48 Which cost 50-75 billion USD each 17:09:00 And they need to make a new one for every new feature size 17:09:17 Anyways, it's based on photolithography 17:09:29 zzo38: you take some very pure silicon, then expose it alternately to an environment made out of a gas that reacts with silicon to form an n-type compound, and a gas that reacts with silicon to form a p-type compound, and oxygen (which reacts with silicon to form an insulator) 17:09:46 with various masks used to prevent the gas getting to parts of the chip you don't want it to affect 17:10:05 the length of time it stays in the gas, and the temperature, determines how deep the n-type, p-type, or insulating region goes into the chip 17:10:05 You basically change physical properties of a wafer by combining light exposure with extremely fine masks or something like that 17:10:12 sounds like great fun! 17:10:15 Gas? Oh boy 17:10:18 I must be totally outdated 17:10:52 so you can get a 3-D structure by, say, letting an n-type compound deep into the chip, then overriding it nearer the surface with a p-type compound that cancels it out 17:11:26 kfr: the light doesn't change silicon directly, you use it to let the mask into a particular shape 17:11:39 much the same way you make PCBs, except massively more precise 17:11:57 then the mask regulates chemical reactions which are what makes the n-type and p-type layers 17:12:18 Is there a open specification binary format for ASIC layers? 17:12:19 originally people used silicon dioxide as an insulator, and aluminium on the surface as a conductor 17:12:48 zzo38: This stuff is all super vendor specific as far as I know 17:13:01 but nowadays the aluminium layer isn't used, they just nest a bunch of diodes instead to form effectively a wire (as two diodes in opposite directions don't let any current through at all) 17:13:27 and likewise, the alternating-diode trick's used for insulators inside the ASIC itself (silicon dioxide's still used to protect the surface of the resulting ASIC) 17:13:47 kfr: Yes so is FPGA, I think. I would like to see an open standard for these kind of things, and for FPGA, also a FPGA chip that follows the open standard and has no secure loading mode. 17:13:54 kfr: as far as I remember, there's a standard format for ASIC specification, in that the format of the file itself is specified 17:13:57 but it's basically as general as XML 17:14:02 and what it actually /means/ is up to the individual vendors 17:14:06 thus, it effectively isn't open 17:14:39 (That way it is possible to make a FPGA that modifies itself and that you can use the same FPGA program with different vendors and it will still modify itself in the same way.) 17:14:44 zzo38: even with a secure loading mode, it would still work pretty well, as long as it still allowed reflashing 17:14:56 so long as it was possible to turn the mode in question off by wiping the chip 17:15:42 ais523: Maybe it would, if you can switch off secure loading mode it would work (so that you can load unencrypted data), but I would prefer to use a FPGA with no secure mode. 17:15:54 (explanation for people lacking content here: secure loading modes make FPGAs and similar concepts write-only, so people don't grab your source code from the chip directly once you ship it; on several models, you can bring the FPGA back to a read-write state by erasing it, preventing the data that was on there being read) 17:16:09 ^ignore 17:16:09 ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot)! 17:16:15 No, there's no lambdabot on the list. 17:16:20 there probably should be 17:16:22 or someone will try 17:16:29 we already did 17:16:31 but it was boringly easy 17:16:33 since you can ^def 17:16:34 also, I remember optbot 17:16:39 so i wouldn't bother 17:16:39 well, almost 17:16:47 ais523: i was going to bring optbot back 17:16:48 but then didn't 17:16:48 didn't it just spout random lines from the logs? 17:16:50 maybe i will 17:16:51 ^ignore ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)! 17:16:51 OK. 17:16:55 ais523: yes, but more importantly, 17:16:57 it set the topic 17:16:58 I don't think Sparkbot actually exists. 17:17:00 every 6 hours on the dot 17:17:04 My logs didn't really find anything about it. 17:17:05 ais523: to a random log quote 17:17:09 and it was great 17:17:46 ais523: Yeah I know somebody who worked with encrypted Flash stuff for his FPGA 17:18:07 still, there are some cases of people extracting the "source" even from ASICs 17:18:12 Designed to make reverse engineering difficult 17:18:16 someone cut open a 6502 and scanned it with an electron microscope 17:18:23 ais523: Do you know azonenberg? He does that 17:18:25 in order to make a bug-compatible emulator 17:18:27 Acid and microscopes 17:18:28 kfr: no, I don't 17:18:35 He's a regular on ##re 17:18:43 And many other related channels 17:18:50 -!- cal153 has quit (Ping timeout: 240 seconds). 17:19:00 Being a "regular" on a regular expression -related channel would be so punny. 17:19:33 fizzie: hurf durf 17:19:36 http://siliconpr0n.wikispaces.com/Tutorial+on+epoxy+decapsulation 17:20:20 fizzie: The channel is primarily about cracking commercial software and reverse engineering smart cards and jailbreaking new embedded systems and such 17:20:22 "epoxy decapsulation" sounds like a sort of execution method 17:20:44 I gathered as much from the context. 17:20:47 That's his page 17:21:38 ais523 http://siliconpr0n.wikispaces.com/Tutorial+on+using+micropositioners 17:22:17 The funniest part about this is that he never had any formal training in EE 17:22:23 And he's a CS undergrad or something 17:22:39 But his primary interest is hardware really 17:23:39 kfr: I'm the other way round, my first degree was in electronic engineering 17:23:45 but I'm doing my PhD in computer science 17:24:12 (electronic engineering is a much better undergrad degree than computer science, as the first is much more expensive than the second to study on your own without a university's equipment) 17:24:23 (and you can do them both at much the same time, one at university, one in your free time) 17:25:25 epoxy decapsulation :D 17:26:24 I can tell what the phrase means (clearly the opposite of epoxy encapsulation), but it sounds like it should be much more dramatic than it is 17:30:25 Ready the Epoxy Decapsulation Squad, we have a runaway. 17:31:04 -!- asiekierka has quit (Remote host closed the connection). 17:36:42 Square Root of Minus Garfield is rapidly hurtling towards the Garfield fo 17:37:00 *Garfield inus Garfieldocalypse. 17:39:01 hmm, yesterday's (i.e. the current) Lightning Made of Owls is very deep 17:40:14 ais523: walls aren't that deep! 17:40:57 incidentally, I think there's actually a fifth wall that it's possible to break as well 17:40:57 segfaults -- i love segfaults! 17:41:03 -!- cal153 has joined. 17:41:08 oh, that's what it's referring to? 17:41:09 heh 17:41:16 elliott: not directly, I don't think 17:41:22 only by saying it's a meta-meta-joke 17:41:32 http://www.mezzacotta.net/owls/?comic=328 same person 17:41:36 indeed 17:41:49 breaking the fourth wall happens when the fictional characters become aware that there's an audience, and that they themselves are fictional 17:41:52 http://www.mezzacotta.net/owls/?comic=326 17:42:05 breaking the fifth wall is when they start exploiting effects of the media their fictional universe is in 17:42:11 ais523: breaking the fifth wall happens when the real author becomes aware that there's characters, and that they themselves are real! 17:42:26 so, where's the fifth wall? perpendicular to the other four? 17:42:30 (Onion joke) 17:42:35 e.g. I Wanna Be The Fangame's "lag spike", which moves backwards and forwards really quickly just to make Windows unresponsive 17:42:47 haha 17:43:02 and likewise in the Impossible Quiz, where some of the questions (maybe only in the sequels?) can only be answered by exploiting corner cases of Flash's mouse handling 17:43:30 no, you have to do that kind of thing in the original 17:43:36 on a TV program, breaking the fifth wall would be if the characters started doing subpixel antialiasing 17:43:40 haha 17:43:50 exploiting the way the viewers' TV screens were likely to work 17:44:19 hmm, now what's wrong with this ... 17:44:34 "Java says one file per class, I say one file per function" 17:45:06 kfr: Java doesn't actually say that at all, you can put all the classes in one file and it works just fine 17:45:11 it's just anywhere in between that you have the issue 17:48:17 (note: technically, this works because /public/ classes have to be in a file to themselves; but you can make the other classes file-private and have just the one public class) 17:49:52 That doesn't really work if you need to have multiple public classes due to some sort of an interface. 17:50:00 I guess it normally works. 17:50:36 If someone gives you an object of a non-public class, I suppose you can do reflection on it freely? 17:50:52 If it's just the class declaration you can't access. 17:52:09 It is still "one file per class" if you're speaking of .class files, though. 17:54:26 I think you can reflect a non-public class, but I'm not sure 17:54:45 there might be some sort of visibility exception, like if you try to use reflection to assign to a non-public property of a class 17:54:49 fizzie: I think you can put all the .class files together in a .jar file? 17:55:13 11:27:23 Basically you've got the absolute progression of time, and the state of the program is a pure function of the current moment in time. 17:55:13 11:27:45 Events occur, and effects may result, and generate further events, ad whateverum. 17:55:13 11:28:12 Effects are evaluated lazily, so nothing happens until something depends on it. 17:55:13 11:28:31 Which keeps the language purely functional, and lets you start jumping around and forking the timeline however you please. 17:55:15 (A .jar file has the same format as a .zip file) 17:55:21 that's like FRP if you took away the part where it's sane 17:55:39 11:29:51 What's the significance of the lemons in the Esolangs logo? 17:55:39 /facepalm 17:55:55 there's a thread about the limes in the Esolangs logo 17:56:03 11:32:23 There is all sorts of fun with complexity classes. Such as R being impossible to construct explicitly... 17:56:03 WELL I DID IT 17:56:05 but it was mostly people concluding that they didn't know either, and probably there wasn't one 17:56:29 and even implemented it 17:56:30 *it! 17:56:30 :p 17:56:32 elliott: Well what does it stand for? :[ 17:57:28 But I do guess that if you want to, you might make a programming language where each function is a separate file in a ZIP archive. 17:57:55 Ew, then I'd have to write decompression stuff 17:59:29 11:32:57 it's hard to explain, because all the terminology required for time travel doesn't yet exist in English 17:59:29 11:33:00 or probably any other language 17:59:30 wioll haven been 17:59:47 elliott: I think that was just a joke 17:59:57 ais523: you think what was just a joke? 18:00:12 the time travel verbs thing in HHGTTG 18:00:19 Showing results for "will have been". Search instead for "wioll haven been" 18:00:19 why the fuck do you think I quoted it, Google? 18:00:21 as in, Douglas Adams just invented some verblike forms 18:00:24 because you fucked it up beforehand! 18:00:38 rather than actually having the meanings plotted out 18:00:47 elliott: I think you can use a leading + to prevent the did-you-mean triggering 18:02:03 but quotes should do that! 18:03:14 I'm always amused when people complain about Wikipedia's search feature 18:03:32 hello zzo38 18:03:35 to me, it's better than most other searches, for exactly the same reasons other people complain about 18:03:39 Wikipedia's search feature seems to work better than Google, I think. 18:03:44 ais523: well, I can never _find_ what I'm looking for with it 18:03:50 I can 18:03:57 but I suppose we're looking for different things 18:04:11 on Wikipedia, you don't put precisely what you're looking for, but rather the name of the page you think it will be on 18:04:32 and the names follow a consistent enough pattern that you can generally guess what the page will be 18:05:14 ais523: Yes they do, I just have C-l :w page name and I can usually guess the name of the page I want, either that or a name of a page that will redirect to the page I want. Since I can type fast it works better than disambiguation 18:09:45 -!- pikhq_ has joined. 18:10:13 -!- pikhq has quit (Ping timeout: 265 seconds). 18:11:02 elliott: you have to do +"sjkdfhskdjfh" to get exactly what you asked for :/ 18:11:51 quintopia: but elliott didn't ask for sjkdfhskdjfh 18:12:47 ais523: sjkdfhskdjfh is a new standard metasyntactic variable 18:14:25 "=\ 18:14:47 I owe $1,600 in taxes to Indiana. 18:14:49 YAAAAAAAAAAAAAAAAAAAY 18:14:50 dfijdfgsodgjoidjgsjfgsdlkfgjslkdjgfsdjkgf 18:14:57 Gregor: I owe Gregor in taxes to $1,600. 18:16:49 Gregor: I converted the Velota Hello World program to your steinway. 18:17:01 * Gregor nods sagely. 18:17:18 -!- zzo38 has quit (Remote host closed the connection). 18:17:54 Gregor: how does taxation work in the US? In the UK, unless you have an unusual financial setup, you fill in one form when you get a job, and are given a form whenever you leave a job, and taxes just work automatically from there 18:18:07 to the extent that people don't notice them much, maybe that's the idea 18:18:31 (to be precise, a percentage is taken out of your wage and given to the government by the company; and another percentage in sales tax whenever you buy anything with the resulting money) 18:18:34 ais523: It's mostly only a bit less automatic, with the caveat that different states are different taxing authorities, so if you live in one but work in another, they rape you a lot. 18:18:56 hmm, it seems to be in everyone's interest for taxation to be automatic 18:19:35 ais523: Basically, your employer estimates how much tax you owe, then you fill out a form saying what your taxable deductions are (child credits, that kind of malarky), and if the estimates were off, somebody gives somebody money. 18:19:51 don't US citizens living abroad have to pay taxes? 18:19:54 But you have to fill out one of those forms for the federal government, and one for every state you worked in that has income tax. 18:20:00 that's rather fucked up, I've always thought 18:20:03 ah, so forms every year 18:20:04 elliott: Yup. 18:20:15 lame 18:20:19 elliott: although only if they pay less tax to their local government then they would in the US 18:20:23 s/then/than/ 18:20:25 but it's still ridiculous 18:20:26 ais523: ...what 18:20:28 that doesn't even make sense! 18:20:41 it sort-of half makes sense 18:20:55 in that you aren't allowed to emigrate to avoid taxes, but are allowed to emigrate for other reasons 18:21:07 but the justification breaks down at one level 18:21:11 in that it makes no sense either 18:23:06 heh 18:23:30 I'm amused that you thought it made sense without the restriction, though 18:23:57 an interesting fact about the UK: if you're not a UK citizen, if you enter the country for just a few days (say on holiday), then when you leave again you can get a refund on all the sales tax you paid 18:24:27 so long as you remember to do so, and have been really pedantic about collecting tax receipts (which are often not the same thing as ordinary receipts that you're given when you buy something) 18:25:36 ais523: In Indiana, if you go buy things out of state without sales tax (and they catch you), you'll get charged Indiana sales tax. In Oregon, if you go to Washington and buy things WITH sales tax, they'll refund you :P 18:25:50 who, Washington or Oregon? 18:26:03 I'm amused that you thought it made sense without the restriction, though 18:26:04 no i didn't 18:26:07 well 18:26:09 ais523: Washington 18:26:15 i thought it made sense in the "let's just be horrible and evil" way :) 18:26:34 yep, I was wondering if you thought it made sense because it was arbitrarily evil 18:26:40 and putting a restriction on that made it less os 18:26:41 *so 18:26:46 well, less evil, more arbitrary though 18:29:05 ais523: Does that exempt-from-UK-sales-tax thing work for EU citizens? (Because the similar thing in France doesn't.) 18:29:17 fizzie: I don't know, but it wouldn't surprise me 18:29:54 certainly, when leaving the UK (i.e. you've crossed the border at an airport into an international area), you have to pay UK sales tax if you're travelling to a location in the EU, but not otherwise 18:30:11 so when you buy something, you have to show your boarding pass so they can work out how much tax to charge 18:32:06 13:03:46 • ais523 golfs his or her Slashdot signature 18:32:06 13:04:01 (it's an INTERCAL addition without using the stdlib, I noticed a way to save another character) 18:32:09 that "his or her" 18:32:10 WJW 18:32:35 elliott: I feel so dirty typing gendered pronouns, and have to stop and think about whether I actually /know/ they're correct or not 18:32:52 in here, there's no such need, I can just say "they" or "eir" or "his or her" without thinking 18:32:58 regardless of the sentence they're in 18:33:29 13:14:55 Looking at the press confrence speakers: They appear to be the the highest-ranking persons in ICANN (representing IANA), NRO (represents RIRs), ISOC and IAB. You don't have that sort of cast if one isn't announcing something really, really major... 18:33:29 13:15:32 They're going to announce what they're going to have for lunch next week. 18:33:31 :D 18:33:32 Certanly it is considerate for you to not just go on and assume you would agree with you about which pronoun to use. 18:33:38 -!- asiekierka has joined. 18:33:46 "Do you have... anything else to announce?" "Nope!" 18:34:25 I still think it's going to be the bit-flip thing. 18:35:55 what bit-flip thing? 18:36:46 ais523: A surprise announcement that they're going to invert the bits in all IPv4 network prefixes, for long-term 0/1 balance reasons. 18:37:00 ah 18:37:15 0/1 balance is actually an incredibly serious issue in electronic engineering on occasion 18:37:19 although in the short term, not the long term 18:39:10 13:26:07 "When ARIN receives its last /8 IPv4 allocation from IANA, a contiguous /10 IPv4 block will be set aside and dedicated to facilitate IPv6 deployment. Allocations and assignments from this block must be justified by immediate IPv6 deployment requirements." 18:39:11 wut? 18:39:16 13:26:35 ("Examples of such needs include: IPv4 addresses for key dual stack DNS servers, and NAT-PT or NAT464 translators.") 18:39:16 Ah. 18:41:30 14:38:52 $ cat /proc/sys/net/ipv4/route/max_size 18:41:30 14:38:52 1048576 18:41:30 14:39:06 My table is smaller. :v 18:41:30 14:39:20 s#v#/# 18:41:30 I preferred :v. 18:42:25 [root@niflheim ~]# cat /proc/sys/net/ipv4/route/max_size 18:42:25 524288 18:42:28 :[ 18:43:08 why do you have to be root to do that? 18:43:14 or are you just root for the sake of it? 18:43:30 it's 524288 for me too 18:43:30 I was doing iptables stuff in that shell 18:43:33 a much-unloved power of 2 18:43:57 ais523: what suggests he's root there? 18:44:12 elliott: the root@ and # in the shell prompt 18:44:17 ais523: oh, not fizzie? 18:44:20 no, kfr 18:44:27 ais523: right. i, uh, don't see his messages. :p 18:44:44 -!- Zuu_ has changed nick to zuu. 18:44:49 -!- zuu has changed nick to Zuu. 18:45:49 As was seen after that, my phone had the smallest table of them all, just 32768. 18:46:30 Of course it might not be very often that a phone is being used in a network setup that needs more than 30 thousand prefixes. 18:46:54 (Unless it is... the RoutaPhone.) 18:47:25 I want a RoutaPhone. 18:47:30 -!- sebbu2 has joined. 18:49:15 fi:routa == en:frost. 18:49:46 FROSTPHONE 18:50:19 -!- sebbu has quit (Ping timeout: 240 seconds). 18:50:54 "Does your iPhone keep exploding in the cold? Get the new FrostPhone! Guaranteed to survive down to ten kelvins." 18:51:05 Somebody make elliott unignore me, I am too cheap to advance the address in the configuration by one to change the hostmask :[ 18:53:03 I dearly miss his words of wisdom 18:56:42 fizzie: BTW, what *is* that strange tunnel system under your house in the old mine? 18:56:44 Mine tunnels? 18:58:29 Hmm? 18:58:43 Is this the right channel? :p 18:58:59 fizzie: Er. 18:58:59 If you mean the things spaced three blocks apart, those are mine tunnels. 18:59:02 Right. 18:59:24 Also act as shortcuts, the wide-tunnel route has a detour there. 18:59:28 Not that I ever go thataway. 19:00:47 -!- Lymia has joined. 19:00:49 -!- Lymia has quit (Changing host). 19:00:49 -!- Lymia has joined. 19:01:41 hi Lymia 19:02:01 http://blog.regehr.org/archives/370 -> of interest to people here 19:02:15 -!- Lymia__ has quit (Ping timeout: 240 seconds). 19:04:07 variable: indeed; I sort-of have the opposite problem: you have an algorithm that's proven correct, how do you translate it into software in such a way that you know it's still correct after the translation? 19:04:54 ais523, by using a trusted translator :-) 19:05:27 I'm not sure if there are any that take mathematical papers as input 19:05:46 doing it that way round is definitely easier than proving an existing program, though 19:05:51 verification is useful for very specific subsets of software - namely core software that will run mission-critical that is unlikely to change 19:06:06 -!- Lymia_ has joined. 19:07:05 I like that article's suggestion that verifiers should output machine-readable proofs of the program 19:07:10 variable: indeed; I sort-of have the opposite problem: you have an algorithm that's proven correct, how do you translate it into software in such a way that you know it's still correct after the translation? 19:07:11 ais523, by using a trusted translator :-) 19:07:11 I'm not sure if there are any that take mathematical papers as input 19:07:13 ais523: do it in Coq :) 19:07:17 then extract to Haskell 19:07:27 I like that article's suggestion that verifiers should output machine-readable proofs of the program 19:07:30 see frama-c/why/etc 19:07:31 *etc. 19:07:35 -!- Mathnerd314 has joined. 19:07:38 they output to Coq 19:09:02 -!- Lymia has quit (Ping timeout: 240 seconds). 19:10:22 -!- impomatic has joined. 19:15:12 It's not like I'm particpating in this conversation. :v 19:15:14 -!- Lymia_ has changed nick to Lymia. 19:15:15 -!- Lymia has quit (Changing host). 19:15:15 -!- Lymia has joined. 19:15:46 Lymia: don't worry too much, there are lots of conversations I don't participate in too 19:16:04 I'm commenting on elliott's copy/paste more than anything. 19:16:12 Maybe I'm confused as to what s/he meant to do. 19:16:55 so FSM accept regular languages; PDA accept context free; and TM accept anything ? 19:16:55 -!- asiekierka has quit (Remote host closed the connection). 19:17:11 Lymia: elliott wanted to reply to me, and was trying to give enough context that I knew what the replies meant 19:17:32 Lymia: it's called logreading :) 19:17:44 it was replying to something that happened much earlier 19:17:49 Context free ones need nondeterministic PDA. 19:19:36 Ilari are there any language types which FSM can't accept but D-PDA can ? 19:19:53 variable: sexps 19:20:26 ais523, reading them now 19:20:32 variable: For instance the classic a^n b^n language.... 19:20:57 so it goes regular - sexp - cfa - * == FSM - D-PDA - U-PDA - TM 19:21:20 oh, I was using sexps as a specific example, rather than a general class 19:21:30 ais523, is there some general class ? 19:21:38 I'm not sure what the general name of languages matched by deterministic PDAs is 19:21:54 I'm pissed off at my college - we don't deal with this stuff *ever* 19:22:01 * variable has to learn it online 19:22:02 -!- sftp_ has quit (Remote host closed the connection). 19:22:19 -!- augur has quit (Remote host closed the connection). 19:22:54 I think deterministic-PDA is the class matched by recursive regular expressions 19:23:31 Recursive regular expressions? 19:23:55 Ilari: regular expressions, except you're allowed to define them recursively 19:24:09 e.g. R = (aR*b) 19:24:24 -!- sftp has joined. 19:24:31 oh - I've had this idea for a long time - and was wondering if its true 19:24:45 in fact, they don't even need the * operator as you can do that with recursion, just alternation 19:24:55 Note that if you add operator to regular expressions that matches anything some subexpression of the whole can match (including if referencing subexpression it is itself in), the result will be class of all CFGs. 19:25:12 anything that could be defined recursively could be implemented in a non-rescursive manner 19:25:41 Ilari -> CFG ? 19:25:54 Context free ? 19:25:59 AFAIK, any context-free language can be written that way. 19:26:09 Ilari: really? that would surprise me 19:26:13 although it isn't obviously false 19:26:38 anything that could be defined recursively could be implemented in a non-rescursive manner <-- indeed, but you need more power than regular expressions provide to be able to do so 19:26:57 ais523, yes - just a thought I've had. 19:27:02 curious - is there a proof for this? 19:27:21 that regular expressions can't do recursion? yes, although I don't know it offhand 19:27:30 ais523, no - my idea 19:27:41 or that you can do recursion in an imperative language? it's basically done by emulating a stack by hand 19:27:48 ais523, yes - exactly 19:28:04 I think you can probably do it with continuations instead 19:28:09 continuations ? 19:28:47 let's see... a continuation represents the current state of a program, in such a way that you can rewind the program to there and get it to continue differently 19:29:18 like the series of steps that it took to get there rather than just the state ? 19:29:29 hmm, not really, it's just the state 19:29:40 but the idea is that you're making a choice when you create a continuation 19:29:49 any links I could read? 19:29:58 e.g. the usual way to create one is a call-with-current-continuation operator, which calls an arbitrary function with a continuation as its argument 19:30:09 and if the continuation is ever called, instead of doing that, returns the value it was called with 19:30:10 let me find one 19:30:31 http://www.madore.org/~david/computers/callcc.html 19:30:53 I'll read it in a bit - and come back here with Qs 19:30:57 * variable is busy for it 19:31:00 *for a bit 19:32:44 hmm, something awesome my supervisor did: finding counterexamples to security proofs in programs by doing things that were just completely outside what the proof assumed 19:33:14 e.g. saying there was a security bug in a protocol that used a callback function, triggered by calling fork() in the callback and doing different things in the two halves 19:33:30 I'm pretty sure he used call/cc for a similar demonstration 19:33:41 I'm not sure if there was much /point/ in doing this, but it was nonetheless hilarious 19:33:50 (especially as the person who wrote the proofs was in the room at the time) 19:35:58 "Think of a setjmp() function that would not have this limitation and you have a good approximation of call/cc. If you adhere to a stack-based paradigm of computation, or things to work in all cases we would need a full copy of the stack as per getcontext()." 19:36:09 hmm, that's actually how I implemented continuations in C-INTERCAL, IIRC 19:36:32 by using INTERCAL's getcontext() equivalent (to be more precise, forking and spinlocking, which comes to much the same thing except much more inefficiently) 19:40:55 There's also a community-scheme-wiki call/cc explanation article. 19:40:58 I'm not saying it's anygood. 19:41:21 the article I linked is the one I learned call/cc from 19:41:30 it's a weird concept at first, but it becomes really natural after a while 19:41:31 http://community.schemewiki.org/?call-with-current-continuation is the Wiki one. 19:41:48 It does the usual "start with exit continuations, build from there" thing I've seen elsewhere too. 19:42:17 http://community.schemewiki.org/?category-learning-scheme has links to three others, including one explanation for C programmers. 19:42:21 fizzie: You so Schemer. 19:42:25 Why isn't mcmap written in Scheme? :p 19:42:26 I don't vouch for the quality of any of these. 19:43:21 well, Scheme is sort-of famous for continuations 19:43:33 "Here's the secret: it's setjmp/longjmp. 19:43:33 But on no account say that to any Scheme programmers you know, it'll send them into paroxysms of rage as they tell you you don't know what you're talking about. Oh, and if you're a Scheme programmer who's accidentally stumbled on this page then please, please, stop reading now, for the sake of your blood pressure." 19:43:45 most languages don't really have them at all, Scheme has them in their standard library 19:43:51 ais523: not in its stdlib 19:43:53 ais523: in its language core 19:43:57 oh, right 19:43:57 it has no stdlib :P 19:44:04 well, that is the stdlib then, effectively 19:44:40 R5RS has a concept of "library procedure" as opposed to "procedure". 19:44:43 ais523: Scheme /also/ has DYNAMIC-WIND, meaning that the exact semantics of its control flow can kill small animals and children under the age of six. 19:44:53 The former have reference implementations in terms of the latter, I think. 19:44:54 fizzie: Yes, but it's just "technically optional procedure", no? 19:44:58 Ah. 19:45:16 But call/cc is a "procedure" not a "library procedure". 19:45:26 Well, sensibly. 19:46:03 ais523: The best thing about Scheme is that map can either be tail-recursive, work properly with call/cc, or only iterate through the list once -- pick two. 19:46:03 "To aid in understanding and implementing Scheme, some features are marked as library. These can be easily implemented in terms of the other, primitive, features. They are redundant in the strict sense of the word, but they capture common patterns of usage, and are therefore provided as convenient abbreviations." 19:46:03 what does dynamic-wind do? 19:46:21 ais523: (dynamic-wind before f after) is the same as (f), except that: 19:46:21 something that much more insane than call/cc sounds like something I should definitely learn about 19:46:27 - before f is called, before is called 19:46:29 - after f is called, after is called 19:46:34 - whenever control flow enters f, before is called 19:46:37 - whenever control flow exits f, after is called 19:46:46 the latter two including by call-with-current-continuation 19:46:59 ais523: this is benign without call/cc, but with it, it's a gigantic headache 19:47:00 aha, I was wondering why that was insane, apart from the last bit 19:47:01 Since I have the page open already for the earlier quote, let's have that too. 19:47:04 " * The dynamic extent is entered when execution of the body of the called procedure begins. 19:47:04 * The dynamic extent is also entered when execution is not within the dynamic extent and a continuation is invoked that was captured (using call-with-current-continuation) during the dynamic extent. 19:47:04 * It is exited when the called procedure returns. 19:47:04 * It is also exited when execution is within the dynamic extent and a continuation is invoked that was captured while not within the dynamic extent." 19:47:31 ais523: http://sisc-scheme.org/r5rs_pitfall.php 19:47:32 [[Jeff Siskind points out that its possible to be both call/cc and tail recursive, but the example he cites uses reverse after processing the list. So map can be: 19:47:33 Tail-recursive 19:47:33 Resistant to call/cc interference 19:47:33 O(1*n) 19:47:35 Pick two. In the above table, we've noted when a system is resistant to call/cc effects, and labeled systems that we know are tail recursive because the implementor has said so. Others in the list may be tail recursive.]] 19:47:45 so basically, it installs event handlers for call/cc-based gotos into and out of the functions 19:47:49 (O(1*n) is a horrible abuse of notation, but it's obvious what it means here) 19:47:54 ais523: that's such a... C way of thinking about it 19:48:13 SISC, btw, takes the call/cc and tail-recursive route, and thus map iterates over the list twice 19:48:17 elliott: indeed; slipping to a lower or higher level of abstraction often makes something easier to think about 19:48:20 but then, SISC is rather anal about standards-compliance 19:48:21 So I can make a system tail-recursive simply by "saying so"?-) 19:48:22 even by Scheme standards 19:48:26 fizzie: YEP! 19:48:39 Looks like Scheme48's map isn't tail-recursive. :p 19:49:21 hmm, SISC isn't in Ubuntu? 19:49:33 oh, it is in Natty 19:49:40 I'll steal the .deb >:) 19:50:16 At least dynamic-unwind forbids you from jumping into the before/after handlers by means of continuations captured while inside. 19:50:19 is map supposed to be resistant to call/cc interference? 19:50:25 fizzie: boring 19:50:38 is map supposed to be resistant to call/cc interference? 19:50:40 surely the correct semantics in such a case is to call the handler recursively? 19:50:41 every function is, pretty much 19:50:57 you should be able to call-with-current-continuation from anywhere, and call a continuation to anywhere 19:51:01 and have it work 19:51:05 elliott: oh, you mean map doesn't act like a naive implementation of map would if you call/cc out of it, then back into it again later? 19:51:24 ais523: indeed 19:51:29 ouch 19:51:31 at least, that's my understanding of the situation 19:51:58 now I'm trying to figure out why going through the list twice would help 19:52:19 -!- Behold has joined. 19:53:13 ais523: you reverse it at the end 19:53:19 oh 19:53:21 "Jeff Siskind points out that its possible to be both call/cc and tail recursive, but the example he cites uses reverse after processing the list." 19:53:42 perhaps if you had both cons and anticons that consed in the other direction? 19:53:48 presumably, since SISC's map is both call/cc-worky and tail recursive, you could just look at its source to figure it out 19:53:50 although that'd make pretty much every algo /but/ map insane 19:53:50 ais523: that wouldn't work 19:53:59 ais523: Scheme's lists aren't linked like that 19:54:03 they're just singly linked 19:54:06 because they're based on pairs 19:54:12 no, I mean still based on pairs 19:54:14 Well, anticons cells would be backwards lists, presumably. 19:54:17 well, right 19:54:22 -!- BeholdMyGlory has quit (Ping timeout: 276 seconds). 19:54:25 update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-r4rs (scheme-r4rs) in auto mode. 19:54:25 update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-r5rs (scheme-r5rs) in auto mode. 19:54:25 update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-srfi-0 (scheme-srfi-0) in auto mode. 19:54:25 update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-srfi-7 (scheme-srfi-7) in auto mode. 19:54:27 update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-srfi-55 (scheme-srfi-55) in auto mode. 19:54:30 just cons is (head . tail) and uncons is (all-but-last . last) 19:54:30 update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-ieee-1178-1900 (scheme-ieee-1178-1900) in auto mode. 19:54:35 scheme-ieee-1178-1900 19:54:37 ridiculousy 19:54:40 *ridiculous 19:54:52 hmm, that's anticons, not uncons 19:54:58 uncons makes a list into a pair, presumably 19:55:09 Unicons is (horse . horn). 19:55:20 hmm, interesting mental exercise: figure out in which languages Prolog's =.. is sane, and in which it's insane 19:55:28 heh, SISC actually has a .deb for it on its website 19:55:36 semantics of =.. are best described by example: [func, a, b] =.. func(a,b) 19:55:38 what does =.. do again? 19:55:39 ah 19:55:43 and ofc as it's Prolog, it works both ways round 19:55:46 ais523: homoiconic languages 19:55:53 yep, definitely sane in those 19:56:08 it works fine in Lisps, too, =.. is just eval 19:56:32 C I'm having trouble with 19:56:47 I think it fails there, specifically due to the length of the list not being known in advance 19:56:56 although you can do it for any known tuple just fine 19:57:07 aargh, distributing source code as a .jar 19:57:13 that's worse than Hitler 19:57:16 Hitler didn't even do that 19:57:42 elliott: what if I distribute binary inside the same .jar? 19:57:54 ais523: aargh 19:57:54 it seems like a really easy way to meet the GPL's distribute-source requirement 19:58:04 it's how I ship jettyplay, a binary+source jar 19:58:06 Our AI course uses source-in-.jar, but that's just so that the people can return a single file (with binary classes for the competition system and sources for me) built by the default build system. 19:58:14 -!- impomatic has quit (Read error: Connection reset by peer). 19:58:21 -!- augur has joined. 19:58:29 fizzie: my Java course uses source-in-.zip 19:58:39 is the default build system ant? 19:59:04 fizzie: Do you actually look at the sources? 19:59:05 olsner: Yes, I may have meant "default build file" there though. 19:59:13 poor souls 19:59:35 find | xargs javac is still my default build system 19:59:45 olsner: Many (most?) don't even notice, since they use the also-provided Eclipse project that automagically takes care of invoking it. 19:59:59 when not using NetBeans (which I use mostly because we teach it and I need to know what I'm teaching, although it's pretty nice as Java IDEs go) 20:00:00 (And even if they don't, it's just one command; they don't actually have to deal with Ant at all.) 20:00:22 Deewiant: Ho-hum, well, really cursorily if at all, unless I have some sort of a reason. 20:00:23 find | xargs javac is still my default build system 20:00:23 if ant must be involved, that is certainly the best way to do it :) 20:00:29 doesn't javac MyProgram.java work? 20:00:33 and compile dependencies? 20:00:42 hmm, I'm not sure 20:00:55 I thought it only compiled dependencies if the .class files were entirely absent 20:01:43 olsner: I do need to put some metainformation in the generated .jars and things like that. And at least it works for all the people who do things on a Windows/Eclipse platform, unlike, say, a Makefile. 20:02:00 checking the man page, it doesn't compile dependencies at all; if the .class file is absent for a dependency, it compiles the source enough to typecheck the rest of the program, but discards the resulting compiled info 20:02:11 Deewiant: Did you take the course at some point and/or were you taking it now and/or did you actually already graduate and/or are you still in Otaniemi anyway? 20:02:18 `addquote Deewiant: Did you take the course at some point and/or were you taking it now and/or did you actually already graduate and/or are you still in Otaniemi anyway? 20:02:31 Well, you never know. 20:02:32 Now. 20:02:38 284) Deewiant: Did you take the course at some point and/or were you taking it now and/or did you actually already graduate and/or are you still in Otaniemi anyway? 20:02:48 Deewiant: that's a pretty ambiguous answer to a question that general 20:02:54 Deewiant: Well, Friday's my annual "here's how you do the programming project" lecture. 20:02:55 although not as bad as "yes" 20:03:02 (I should probably update last year's slides.) 20:03:07 so fizzie's going to be lecturing to Deewiant? 20:03:14 Only if I'm going to be there. 20:03:18 Right. 20:03:25 Deewiant: surely you are, if there's a chance to meet fizzie? 20:03:36 He's seen me before, and the sight is not an impressive one. 20:03:41 ais523: they go to the same university, and they don't seem particularly EXCITED to meet 20:03:51 I mean, if I discovered one of my lectures was going to be held by elliott, I'd definitely try to make sure I didn't miss it 20:03:53 I was at fizzie's master's thesis presentation, but I don't think I've talked to him. 20:03:54 Although maybe it's just SO EXCITING that they CAN'T PUT IT INTO WORDS. 20:03:57 ais523: haha 20:03:59 ais523: I'll get to work on that 20:04:03 I've seen him around the building every now and then. 20:04:10 ais523: do you think I could just go up and ask them to let me deliver a lecture? 20:04:13 (other way round is rather more plausible, ofc) 20:04:21 Deewiant: I've probably seen you too, but I still don't exactly recognize you. 20:04:28 ais523: Psht, don't be so sure of yourself! 20:04:37 elliott: I once annoyed one of my lecturers into saying something along the lines of "if you're so smart, you take the lecture" as an undergraduate, and I responded by actually taking the lecture for about half a minute 20:04:45 until they realised I wasn't bluffing and told me to go and sit down again 20:04:51 :D 20:04:54 that is amazing 20:05:13 I don't think I took it very /well/, but I still think it's hilarious 20:05:32 Deewiant: I also ended up being the one who handles the "Machine Learning: Advanced Probabilistic Methods" course exercise sessions from next Friday on, but I guess that's not in your course schedule. 20:05:49 Nope. 20:05:52 You Finns, so lonesome. 20:05:58 hmm, what's the adjective form of "loner"? 20:06:11 The course lecturer was all "oh but teaching is so nice, you should try it, do you want to give out one or two of the lectures too?" 20:06:35 I was tempted to ask "if it's so nice, how come you don't want to do those by yourself?" 20:06:57 elliott: it is indeed "lonesome" 20:07:04 or "lonely", if you prefer 20:07:08 ais523: doesn't really work, though 20:07:12 although that probably has a slightly different meaning 20:07:14 hmm, what, a license block at the _end_ of a file? :) 20:07:48 ais523: would you like to take the Pixley Challenge? 20:08:08 probably not, but I lack sufficient information to make sure 20:08:08 Do you people know eachother? 20:08:34 only via #esoteric 20:08:34 Lymia: yes 20:08:38 Yes, we've been on the same IRC channel. 20:08:39 (we may be using a different definition of "know") 20:08:47 but you get to know someone quite well after talking to them for over a year 20:08:48 this is a pretty close community :P 20:08:50 even if you never meet in person 20:08:53 Know-in-real-life-know. 20:08:54 =p 20:09:21 The Finnish contigent has some real-life knowingship going on too, I guess. But not much. 20:09:32 ais523: The Pixley Challenge is one I invented, despite the name. 20:10:17 I'm not actually sure what Pixley is 20:10:33 ais523: The challenge is: Invent a (Turing-complete) language specifically designed to make a (non-cheating) self-interpreter as small/short as possible, while also making non-self-interpreters short (i.e. you can't make the most expressive language in the world that it can interpret itself in five lines, because e.g. a Scheme, Haskell or C implementation of it would take hundreds of thousands of lines) 20:10:48 ais523: Pixley is Chris Pressey's very-stripped-down Scheme subset: http://catseye.tc/projects/pixley/doc/website_pixley.html 20:10:53 The self-interpreter is: 20:10:54 http://catseye.tc/projects/pixley/src/pixley.pix 20:10:59 (and this also functions as a Scheme interpreter of the language.) 20:11:10 He implemented (at least most of) it in C and it was rpetty short. 20:11:11 *pretty 20:11:15 But that self-interpreter is very small, of course. 20:11:15 I take it the Underload self-interp doesn't count? 20:11:33 ais523: that counts as cheating :) 20:11:34 hmm, the question of which non-TC-langs can self-interp without cheating is also pretty interesting 20:11:48 And that Pixley interpreter I wrote isn't metacircular in an important way 20:11:52 it implements car/cdr/etc. itself 20:11:53 elliott, sounds fun. 20:11:54 rather than relying on the host system 20:11:58 which, I think, should count as a requirement 20:12:10 (it represents lists as Pixley/Scheme lists and functions as Pixley/Scheme functions, though, which is metacircular and also fine) 20:12:15 elliott: well, in a sense, Feather's all about being metacircular wrt everything 20:12:19 (but relying on your host to implement the actual primitives is cheating) 20:12:27 ais523: well, the idea is to invent a new language to do it :) 20:12:36 Choosing a subset of another language, like Pixley, is of course allowed. 20:12:41 Lymia: it is; it's quite difficult, though 20:12:58 I made a different Scheme subset with a self-interpreter shorter than Pixley's, but then I realised the self-interpreter didn't do recursion 20:13:02 and it'd be very hard to make it allow recursion 20:13:03 so I gave up 20:13:12 (the interpreter itself was recursive) 20:13:32 elliott: remember your lang dei? 20:13:48 ais523: underload sans ()? 20:13:49 yes, i do 20:13:50 I think I'd start with something similar to that, and then add some reasonably rich I/O primitives 20:14:03 ais523: dei needs an actual unputchar to do IO 20:14:07 well, sanely 20:14:08 also, change the commands to numbers 20:14:36 I'm assuming the I/O's allowed to be metacircular? 20:14:46 ais523: yes, of course... but I'd recommend not having IO at all 20:14:55 how else would I read in the input program without cheating? 20:14:56 ais523: it's perfectly OK if your interpreter takes the program as an argument 20:15:01 like http://catseye.tc/projects/pixley/src/pixley.pix does 20:15:06 in fact, depending on your language, it's OK to take it pre-parsed 20:15:13 ah, well the problem is how to represent the argument 20:15:22 e.g., writing a Pixley reader is no great feat at all, and Lisp EVALs always take an object, not a string 20:15:26 so the Pixley interpreter takes an object, too 20:15:29 Deewiant: This year I'm going to be feeding the tournament match results in real time into the course IRC channel. (Well, probably, anyway. Assuming I can find any place to run the tournament on.) 20:15:39 fizzie: this IRC channel too, please! 20:15:40 into #esoteric-blah too? 20:15:49 naw, plain #esoteric, this channel's activity has been declining rapidly 20:15:52 thanks to Minecraft 20:15:55 elliott: I love the way I had the same idea but automatically picked the spam channel 20:16:01 :) 20:16:08 fizzie: Just use Triton 20:16:32 fizzie: can *I* enter?!?!?! 20:17:06 Presumably yes 20:17:33 i thought it was finn-only 20:17:51 I'm sure there are non-Finns taking the course 20:18:10 hmm, hilarious semi-trolling idea: look for random universities that teach programming-related courses, and happen to hold a competition for whatever reason 20:18:22 and have the rules online without being behind a password wall 20:18:33 Deewiant: It feels so frivolous. And my existing scripts won't work with slurm. :/ 20:18:36 then submit entries yourself despite not being on the course (email to the person in charge of the course would do) 20:18:50 Deewiant: i'm not taking the course :P 20:19:04 fizzie: What the fuck are you talking about. 20:19:08 fizzie: Just use Triton Deewiant: It feels so frivolous. And my existing scripts won't work with slurm. :/ 20:19:12 You can always just flunk out after the competition. 20:19:24 elliott: Triton's one of our clusters, running on the SLURM job manager thing. 20:19:39 O KAY 20:19:53 fizzie: Remind me where you ran them previously; just around the CS building? 20:20:00 Anyway, people are doing Actual Research(tm) on Triton, I'd feel pretty silly queuing in ~1400 CPU-hours of student-made boardgame bots playing against each other. 20:20:11 1400 CPU-hours is nothing 20:20:21 :D 20:20:28 fizzie is so afraid of things. 20:20:29 what about running them all on one GPU? 20:20:29 That's like two bug fixes for me 20:20:35 () 20:20:48 Triton itself doesn't have more than ~1400 cores, that's like taking over the whole thing for an hour. 20:20:55 I'm not sure if I should kick these 20 viagra spammer bots from #esoteric, I'm scared of power. 20:21:06 Are you _sure_ I can run "ls" on the university servers? They might crash or something. 20:21:08 Deewiant: I ran them at one of HUT-CC's classrooms (once at Maari, once at the main building), but now that they've gone all WaveU, the workstations are no longer reachable. 20:21:21 fizzie: Right, so your scripts don't work anyway. :-P 20:21:24 elliott: well, I was very confused yesterday when I tried to run ls and found it didn't work 20:21:32 then I tried to cd to my home dir, and found I didn't have permission 20:21:36 ais523: THAT'S LIKE A NIGHTMARE 20:21:45 ais523: did you fix it with only shell builtins? please say yse 20:21:48 *yes 20:21:48 then I found that I didn't have permission to open any programs either, also the taskbar crashed 20:21:53 hmm, shells should come with gcc built-in, just in case 20:21:57 fizzie: But you know, you don't need to take over the whole thing for an hour, you can take over a part of it for 24 hours or whatever. 20:21:57 actually I didn't fix it at all, it magically fixed itself after a while 20:21:58 Deewiant: They work on anything that I can SSH into if I just list the hostnames. The HUT-CC folks told me to run everything on kosh, but that's just a single (if a rather beefy) machine. 20:22:06 elliott: *pcc? 20:22:15 it's much lighter-weight, and you hardly need optimisation in that situation 20:22:17 ais523: no, gcc! what if the only way to chmod you know of is gcc-specific? 20:22:23 ais523: also, might as well go all the way, tcc 20:22:27 but even a C compiler wouldn't help if you couldn't write the output files anyway 20:22:32 tcc is actually reasonably embeddable... 20:22:41 ais523: pipe to an fd? 20:22:46 i guess executing an fd might be hard 20:22:48 hmm, that might work 20:22:53 Deewiant: Also the real-time reporting works much better with the current system that reads the player-made moves in real time via the SSH connection; polling for NFS-shared files is ugly, as would be some custom cluster-node initiated networking. (Can you even get out from there anywhere?) 20:23:02 but I didn't have r, w, or x to anything on the system, nor did anyone else 20:23:07 and I was trying to mark code at the time 20:23:14 I don't think it was an /actual/ chmod -R 000 20:23:18 #esoteric task of the day: assume you can enter machine code into a shell; how can you run a program if you can't write to the fs at all? 20:23:20 including /tmp 20:23:21 but it was something that had similar effects 20:23:24 and can't mount any filesystems iether 20:23:25 fizzie: You'd have to go via the frontend, I think. 20:23:26 *either 20:23:46 fizzie: just run it on my laptop, i don't mind! 20:23:57 it'll only take five yeras 20:23:58 *years 20:24:29 elliott: Assuming Linux, does something like /lib/ld-linux* <(cat) count 20:24:34 Deewiant: I could ask about the CS building computer classes (or is that class now, is there anything else left than Paniikki?) but those are some pretty unreliable machines. 20:24:40 Deewiant: yep 20:24:45 Deewiant: except no 20:24:49 because that's not +x 20:24:58 and nor, I doubt, is <(cat) 20:25:06 /lib/ld-linux* is +x 20:25:09 <(cat) might not be 20:25:13 (I'm not sure <() would even be able to write the file, although I suppose /dev/fd is probably always writable like that) 20:25:17 /lib/ld-linux* is +x 20:25:18 no, it's not 20:25:26 you don't have read, write, or execute permissions 20:25:51 You didn't say that. 20:26:12 well, poo. :p 20:27:05 Can you write over /proc/self/mem in general? The proc man page seems to suggest it's read-only. 20:27:18 fizzie: Researchers' workstations are the typical ad-hoc cluster, I suppose. 20:28:10 Deewiant: Maybe, but it's a CS department's course, not ICS, so I can't use ours. Maybe I should speak to some of the CS people, in fact. 20:28:12 /proc//mem is not writable for any process. 20:28:29 fizzie: just write a worm that travels across the university network and uses everybody's machine for small amounts of computation 20:28:33 it's like a gigantic cluster that's all yours 20:29:48 IIRC, unless compiled with special option, the write code for /proc//mem files always returns an error. 20:30:24 The proc man page here says open, read and lseek are the only valid things you can do on it. 20:49:21 -!- pumpkin has joined. 20:52:48 -!- copumpkin has quit (Ping timeout: 240 seconds). 20:56:38 fizzie: Was it mooz who was commenting on Slaves to Armok: God of Blood, Chapter I all those years back? 20:56:50 Was it actually any good? :p 20:57:15 It was mooz; and I think that depends on "good". 20:57:27 Certainly it wasn't "good" as in "good game", but it was... an experience, I gather. 20:57:33 http://4.bp.blogspot.com/_qrfMkVoq9DA/TEXhav_6RQI/AAAAAAAAABs/tdUY1rlzbp0/s1600/armokky.jpg ;; is this a screenshot? 20:57:45 It looks familiar, yes. 20:57:46 From the looks of it it might not be worth playing even if you're a Dwarf Fortress fan. :p 20:57:51 is chapter III going to happen ever, or have people just decided that Dwarf Fortress is the only interesting game in the series? 20:58:04 ais523: where on earth can you go from dwarf fortress? 20:58:15 ais523: it's not so much a dead end, as an infinite corridor 20:58:18 -!- Tritonio has joined. 20:58:19 make III as much better than II as II is better from I! 20:58:31 ais523: I ask again: where on earth can you go from Dwarf Fortress? 20:58:34 -!- ais523 has quit (Read error: Connection reset by peer). 20:58:55 he just couldn't take the question 20:59:02 -!- ais523 has joined. 20:59:02 It was too much. 20:59:03 well, it would likely be a completely different genre 20:59:06 * ais523 has quit (Read error: Connection reset by peer) 20:59:06 he just couldn't take the question 20:59:06 It was too much. 20:59:34 let's see... it would be a simulator of the entire universe that used the actual laws of physics 20:59:39 (note: powerful computer needed) 21:00:00 ais523: powerful? understatement :P 21:00:02 and would let you simulate alternate historical paths of the actual universe 21:00:05 and possibly not even possible 21:00:08 if you mean quantuuum 21:00:17 elliott: I'm trying to make a comment on Dwarf Fortress' astonishing CPU usage 21:00:20 and how to scale that up further 21:00:28 and would contain dwarves, of course 21:00:29 ais523: make it four-dimensional 21:00:35 why? Chapter I didn't 21:00:50 ais523: hmm, the world should be 4D, displayed as 1D 21:00:54 since DF is 3D as 2D 21:00:58 elliott: each chapter so far has added more dwarves 21:01:03 haha 21:01:09 Hee, there's one of those fancy Hilbert curve internet address maps at http://www.renesys.com/blog/2011/02/egypt-a-hole-in-the-internet.shtml -- the man page for the picture-making program (ipv4-heatmap) lists "BUGS: Can't draw IPv6 address maps". Those would be some pretty empty maps. 21:01:18 in fact, the entire game's interface should be perfectly possible to work from an actual teletype typewriter 21:01:25 without colour, or more than printable ASCII 21:01:31 with linear, line-based input 21:01:40 (ofc, you'd need it to be hooked up to a supercomputer still) 21:01:43 isn't that just a text adventure? 21:01:58 ais523: no, as I said, the 1D, wrapped output would show you part of a four-dimensional universe 21:02:11 fizzie: heh 21:02:59 ais523: anyway, you clearly wouldn't be able to tell dwarves what to do, you would instead have to tweak the environment so that the dwarves independently decided what to do 21:03:11 indeed 21:03:14 actually, I think you'd be a politician 21:03:19 trying to get the dwarves to vote for you 21:03:24 since chapter I was direct-control hack 'n slash, and chapter II is ordering-dwarves-based control [indescribable], clearly chapter III is completely indirect control 21:03:27 ais523: that's far too concrete 21:03:36 and they'd be staging epic RPG-ish wars in order to get the right to vote for oyu 21:03:37 ais523: you should just be able to, say, put water into the atmosphere 21:03:37 *you 21:03:38 to try and cause rain 21:03:41 which will upset the dwarves 21:03:43 no, that's too direct too 21:03:46 causing them to try and go away from the rain 21:03:47 which is far underground 21:03:49 and thus they'll mine 21:03:54 and they'd be staging epic RPG-ish wars in order to get the right to vote for oyu 21:03:56 ooh, even better: 21:04:01 you're a politician in an _entirely unrelated land_ 21:04:06 yep, I like that one 21:04:15 and you have to keep being voted in by the people of that land, but use your powers to ascend to higher levels of power, 21:04:19 meaning you can do things like cause wars, 21:04:24 which affect the weather because of the weapons used, 21:04:30 which makes the dwarves decide to do things based on their AI 21:04:32 yep 21:04:32 :D 21:04:34 this is the best game ever 21:04:47 and there's no real win condition /or/ lose condition 21:04:48 who wants to implement it? 21:05:00 ais523: indeed, if all the dwarves die, you can keep going if you want 21:05:02 but getting anything you wanted to happen at all is a good enough accomplishment to start off 21:05:02 just, it'll be rather pointless 21:05:12 you can wait for more dwarves to evolve 21:05:30 either that, or just fill half the world's population with dwarves 21:05:40 and let the player decide which small subset of dwarves to focus on 21:05:46 (not in the game interface, just in their head0 21:05:47 *) 21:06:02 this is the best :D 21:06:11 ais523: better: have all species be procedurally generated 21:06:25 ais523: but if the world ends up to have no species that are sufficiently Dwarf-like, automatically throw away the world and start again 21:06:38 got it! 21:06:40 this means that the simplest world generation would take about 6 months on a normal computer 21:06:45 ais523: who has, me? 21:06:48 yep 21:07:16 ais523: also, the world should be simulated for about a million years, not the piddly hundred-or-so DF does 21:07:41 alternatively, simulate it for arbitrarily many years backwards, lazily 21:07:53 the theory is, that after a certain point, history won't have any observable direct effects on the world 21:07:58 so you just generate more as they become relevant 21:08:00 ais523: that's not in the DF spirit! 21:08:04 world generation should be insanely precise! 21:08:07 and INTENSIVE 21:08:13 ah, perhaps 21:08:22 hmm, and the names of the chapters have been increasing steadily 21:08:28 therefore, chapter III needs to be called something like 21:09:03 Slaves to Armok: God of Blood, Chapter III: Some Name, Part I: Some Other Name 21:09:10 (I'm not sure what comes after Part; Paragraph?) 21:09:26 part's actually more major than chapter 21:09:28 section is less major 21:09:33 then subsection, subsubsection 21:09:34 ah, indeed 21:09:39 You seem to go by the LaTeX terminology. :p 21:09:41 (/latex) 21:09:54 And paragraph does come after subsubsection; then subparagraph. 21:09:59 fizzie: due to a hilarious misclick on my touchpad, I managed to write the /latex in this channel, and the parens in another 21:10:10 mostly hilarious due to the timing 21:10:12 and then had to go and fix 21:10:26 so #unnethack is wondering why I said () for no apparent reason 21:10:33 are they actually wondering? 21:10:39 well, not out loud 21:10:42 but possibly privately 21:10:45 While /latex did not turn this channel into LaTeX mode? 21:10:52 fizzie: that would be \latex 21:10:53 ais523: indeed, in #unnethack-behind-ais523s-back 21:11:06 elliott: that's not what I meant! 21:11:19 wow, that channel actually exists, and ais523 is banned from it! 21:11:26 (although it would be hilarious if that channel existed, and more so if it were actually used; I can't check, though, because it would defeat the point) 21:11:36 ais523: i'm not kidding, try and join it 21:11:41 elliott: you just created it, most likely 21:11:52 psht, so suspicious 21:11:57 [Notice] -ChanServ- Channel #unnethack-behind-ais523s-back is not registered. 21:12:11 ais523: would _you_ register a channel like that? 21:12:41 obviously not, then it wouldn't be behind my back 21:13:55 ais523: I really want to play Chapter III now... 21:14:16 Once I tried to convince someone that a (nonstandard, Finnish) word was a real word; for some reason they weren't convinced by my "look, according to the Internet it's a real word" argument of: echo '

[word] is a real word!

' > tmp.html && firefox file:///home/fis/tmp.html 21:14:18 it'd be awesome if the vast majority of the computation was simulating all the _non-Dwarf_ civilisations, incredibly realistically 21:14:22 Perhaps I should have hidden the location bar. 21:14:25 because those are the ones you have to control 21:15:33 unfortunately, almost by definition, you wouldn't be able to run it if it were implemented, nor would anyone else 21:15:57 "Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system." 2011 surely is the year of Linux on the desktop, since the problem troubleshooting already is of the "restart your system" variety. 21:16:00 ais523: well, I wasn't thinking of it as quantum-physicsy any more 21:16:07 even so 21:16:16 millions of years of history would take a while 21:16:24 as would simulating effects that indirect 21:16:31 this should so let you play as a butterfly :) 21:16:44 fizzie: it says that on Windows too 21:16:57 fizzie, no suggestion of 'killall -9 firefox'? 21:17:01 normally, waiting a couple of minutes works, although oddly that isn't listed as one of the solutions 21:17:11 ais523: Well, yes, therefore logically the market shares should be equal. QED. 21:17:19 ais523: well, DF can simulate 100 years in about a minute on my machine 21:17:24 ais523, I'm guessing it's syncing it's configuration, etc to disk. 21:17:29 admittedly, of a medium-sized map 21:17:41 Lymia: yep, it'll be something like that 21:17:44 ais523: so 1000 years should take about 15 minutes, say 21:17:49 -!- BeholdMyGlory has joined. 21:17:58 elliott, and I do believe this is pre-optimization. 21:17:59 elliott, have you *looked* at DF's history? 21:18:03 It's not all that complex. 21:18:12 Fun fact: DF is compiled with symbol information. 21:18:14 Phantom_Hoover: it would be in StA III! 21:18:16 ais523: so, 1000 * 15 minutes = 10 and a half days 21:18:20 StA? 21:18:25 In theory you could recover the source to an decent degree. 21:18:26 =D 21:18:27 Slaves to Armok 21:18:28 Phantom_Hoover: Slaves to Armok: God of Blood, Chapter 21:18:31 to expand what ais523 meant by it there 21:18:34 Lymia: not really 21:18:36 disassembling C is non-trviail 21:18:48 Lymia: does it have line number info too? 21:18:51 hex rays 21:18:52 that'd help break the statements apart 21:18:53 ais523, dunno. 21:18:55 ais523: so, I bet you could simulate something reasonably close to StA III for a million years in less than a real-world month 21:19:10 Lymia: easy way to check is to open it in a debugger and try to set a breakpoint by line number 21:19:18 Good idea. 21:19:19 =p 21:19:22 Would gdb do? 21:19:27 yep 21:19:40 ais523: http://en.wikipedia.org/wiki/Wikipedia:Millionth_topic_pool#Video_games 21:19:42 ais523: "Dwarf Fortress by Bay 12 Games - will be out by then. Grue 12:56, 25 Mar 2005 (UTC)" 21:19:47 (DF was developed from 2002 to 2006 before being released) 21:20:07 -!- Behold has quit (Ping timeout: 276 seconds). 21:20:16 heh, [[Confirmed release date of Duke Nukem Forever]] is also on that list 21:20:17 and it has one now 21:20:25 Reading symbols from C:\Users\hiedanoakyu\games\df_31_12_win/dwarfort.exe...(no 21:20:26 debugging symbols found)...done. 21:20:26 Eh? 21:20:28 I forget the exact date, but it's a specific day of mid-2011 21:20:37 Lymia: how confusing 21:20:46 maybe it has debug symbols, but not in a format gdb understands 21:20:50 or perhaps it means something esle 21:20:51 *else 21:20:56 I recall seeing function names in it's binary at least. 21:20:58 [[That's wrong. It was released a long time before Dwarf Fortress (I know, I played it back then.) You can find it here. It never really reached the point of being a fully stable, playable game (you could wander around and kill things, basically, just like a primitive but crude-3D-graphical version of the Adventurer mode in Dwarf Fortress currently), but it went through several releases and collected user feedback that later influenced Dwarf Fort 21:20:58 ress to an extent. --Aquillion (talk) 06:04, 20 August 2009 (UTC)]] 21:21:10 And they're names that should be unique to DF. 21:21:11 Lymia: you'd have a lot better chance on Linux... 21:21:26 elliott, ? 21:21:29 Function names could be just __func__ strings used for error messages. 21:21:35 try it on the linux DF binary instead. 21:21:38 Ah. 21:21:45 Good idea. 21:21:46 =p 21:21:46 I might, actually 21:22:02 Reading symbols from /home/elliott/df_linux/libs/Dwarf_Fortress...(no debugging symbols found)...done. 21:22:03 oh well 21:22:24 so we'd have to guess what format the symbols are in 21:22:30 I imagine fizzie is right. 21:22:35 hmm, perhaps they aren't debug symbols, but asserts? 21:22:39 oh, fizzie said that already 21:22:41 [[Slaves to Armok II: Dwarf Fortress → Dwarf Fortress — The current title is wrong, and no one ever uses the ridiculously long full title. 155.33.172.164 (talk) 22:54, 3 October 2010 (UTC)]] 21:22:42 LAME 21:22:55 I should propose a move to [[Slaves to Armok: God of Blood, Chapter II: Dwarf Fortress]] 21:23:38 now I'm seeing how many of those exist as a non-stub, non-redirect 21:23:56 wow, DF's fluid simulation is a CA 21:24:00 [[Snakes on a Train]] is the first one on the list 21:24:07 ais523: how many of what? 21:24:10 ah 21:24:15 and [[The Last Dangerous Visions]] the second 21:24:22 millionth topic pool 21:24:41 also, a couple which were serious articles that hadn't been written, like [[Ringworm]] 21:25:01 What *was* the millionth article? 21:25:06 JORDANHILL RAILWAY STATION 21:25:14 heh, [[Military history of Oceania]] 21:25:18 THE ONLY RAILWAY STATION THAT MATTERS 21:25:24 http://en.wikipedia.org/wiki/Jordanhill_railway_station 21:25:28 now an entirely serious article 21:25:33 that article is so ridiculously huge 21:25:40 GOD BLESS JORDANHILL 21:26:06 hmm, someone made a sensible attempt to win: searching for the most common name for a school that didn't yet have an article 21:26:16 coming up with [[St. Mary's School]], which is indeed now a bluelink 21:26:27 haha 21:26:44 The Linux binary of Dwarf Fortress seems to contain some DWARF debugging data (how appropriate!), but only the .eh_frame things required for runtime call-unwinding by exception handlers. 21:26:59 The summer before I went to grad school, though, we restarted the fantasy project. This time, it was called Slaves to Armok: God of Blood, named after Armok, the god from dragslay. Armok himself was named after "arm_ok", a variable that counts the number of arms you have left, for inventory purposes. This was a 2D project in a somewhat-isometric view, where you walked around a cave with a bunch of goblins in loincloths. It was entertaining, but s 21:26:59 hort-lived. 21:27:01 So it's a bit arguable if that can even be called debugging data. 21:27:12 also amusing: [[Tantalum telluride]], mostly amusing because it was User:TantalumTelluride who suggested it 21:27:20 commenting that it's interesting as to whether it would be kept 21:27:23 number of arms you have left, amazing 21:27:26 it seems it was created, and is still blue 21:27:40 My user name is derived from the chemical compound tantalum telluride, which was not notable enough to be the subject of a Wikipedia article when I joined the project. Wikipedia editor Nightstallion eventually created an article about tantalum telluride on 10 March 2006. Feel free to edit or expand it within the bounds of Wikipedia policy and guidelines. 21:27:53 and User:TantalumTelluride has never edited it, presumably due to conflict of interest 21:28:02 Also the Linux executable of DWARF fortress is an ELF file, eh-eeh-eh. 21:28:43 * elliott tries to figure out whether Liberal Crime Squad is a joke at the expense of liberals or conservatives 21:28:47 [[Welcome to Liberal Crime Squad! The Conservatives have taken the Executive, Legislative, and Judicial branches of government. Over time, the Liberal laws of this nation will erode and turn the country into a BACKWOODS YET CORPORATE NIGHTMARE. To prevent this from happening, the Liberal Crime Squad was established. The mood of the country is shifting, and we need to turn things around. Go out on the streets and indoctrinate Conservative automato 21:28:47 ns. That is, let them see their True Liberal Nature. Then arm them and send them forth to Stop Evil. Eventually the public will fall behind us, and we will put more Elite Liberals in government.]] 21:28:56 [["Hello. If you have not already guessed, I am with the Liberal Crime Squad. Welcome! You are here, so you are willing to fight the rampant conservatism that is gripping America like a big rampant America-gripping device." 21:28:56 "Well… I'm not sure." 21:28:56 "Yes, you are! You are Liberal in your heart. All people are Liberals at heart. It is part of your True Liberal Nature." 21:28:56 "But there are so many political groups out there. What does the Liberal Crime Squad stand for?" 21:28:57 "Everything! We stand for everything that is good and pure in America! This is what you must know…" 21:28:57 hmm, not too many are bluelinked, not dismissing obvious "joke" submissions (that is, submissions that are clearly serious rather than jokes, and thus shouldn't count for the poll) 21:28:58 http://lcs.wikidot.com/liberalism]] 21:29:08 -!- Tritonio has quit (Quit: Leaving). 21:30:18 elliott, oh, *wonderful*. 21:30:19 To quote Bored of the Rings, on the topic of Linux executable and debugging information formats: "And since that day it's said by all / In ballad, lay and poem / 'Only trust an elf or dwarf / As far as you can throw 'em!'" 21:30:46 Phantom_Hoover: I honestly can't figure out whether it's a liberal making a joke out of jokes at the expense of liberals, or a conservative making a joke at the expense of liberals. 21:30:49 (It's another Bay 12 game.) 21:30:58 Reality: oppose 21:31:14 Anti-American Hate Groups: support (for their free speech) 21:31:23 Phantom_Hoover: I honestly can't figure out whether it's a liberal making a joke out of jokes at the expense of liberals, or a conservative making a joke at the expense of liberals. 21:31:23 (It's another Bay 12 game.) 21:31:26 I can't see a tongue-in-cheek liberal writing that. 21:31:39 the scary thing is, from the point of view of the US, more or less the entire world is full of liberals 21:31:50 who are also socialists 21:32:13 Phantom_Hoover: I can 21:32:20 in that it's a parody of the kind of things American conservatives actually say 21:32:24 ais523, naw, the really scary thing is that Obama would be right-wing by Tory standards. 21:32:38 i.e., if I was parodying Bill O'Reilly or Glenn Beck or someone, I would definitely write "Reality: OPPOSE". 21:32:41 elliott, well, that's getting into meta-parody, which is rather sh 21:32:45 *shaky 21:32:46 It's rather sh indeed. 21:32:51 I think he still manages to be left-wing by BNP standards, though, so at least there's /some/ overlap 21:33:06 http://www.bay12games.com/lcs/, anyway 21:35:00 * Lymia gives elliott a random hug 21:35:07 O KAY 21:47:10 -!- Behold has joined. 21:47:45 -!- Mathnerd314 has quit (Ping timeout: 240 seconds). 21:48:02 Fuck this shit. 21:48:04 -!- pikhq_ has changed nick to pikhq. 21:48:12 -!- Mathnerd314_ has joined. 21:49:53 -!- Mathnerd314_ has changed nick to Mathnerd314. 21:50:21 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds). 21:51:46 pikhq: ? 21:57:31 -!- ais523 has quit (Read error: Connection reset by peer). 21:57:51 -!- ais523 has joined. 21:58:50 -!- MigoMipo has quit (Remote host closed the connection). 22:00:07 -!- poiuy_qwert has joined. 22:03:31 -!- Slereah has quit (Ping timeout: 272 seconds). 22:05:07 -!- poiuy_qwert has quit (Ping timeout: 250 seconds). 22:05:30 pikhq, what happened? 22:09:20 -!- Slereah has joined. 22:12:09 -!- ais523 has quit. 22:12:25 -!- ais523 has joined. 22:21:06 It's SOFUCKINGCOLD 22:22:10 pikhq, how cold? 22:22:39 e lucevan le stelle! 22:22:47 ed olezzava la terra 22:23:32 Phantom_Hoover: Earlier today, it was about -28°C (-19°F). Now, it's about -22°C (-9°F). 22:23:54 I'm British. I don't understand Fahrenheit at all, so you don't need to cite it. 22:23:59 And that is effing cold. 22:24:14 We locked up at about -5. 22:24:22 I'm American. Offering Celsius was a courtesy. 22:24:49 WHY WOULD YOU USE A SYSTEM WHICH IS FIXED AT SUCH STUPID POINTS 22:25:19 NOÖNE EVEN KNOWS WHAT 100°F ACTUALLY WAS 22:25:40 I want a system where water boils at 256 degrees 22:25:50 and absolute 0 is 0 22:26:06 furthermore, the standard notation for it should be in hex 22:26:23 *absolute 0 is 0.0000037489894 22:26:27 :trollface: 22:26:34 ff.1e is almost boiling 22:27:03 oh, and furthermore, it should be nonlinear 22:27:13 so I want water to freeze at 128 degrees 22:27:14 Phantom_Hoover: 100 F was meant to be body temperature 22:27:21 Oh, look, it'll be *above freezing* by Friday. 22:27:21 and 0F was meant to be the freezing point of saturated salt water 22:27:29 ais523: wow, a really smart, constant base to go by 22:27:31 they're two temperatures which would have been easy to determine with the equipment at the time 22:27:40 although 100F turned out to be not too reliable 22:27:52 (0F is easier to measure than 0C, because saturating water is easier than purifying it) 22:34:36 * Phantom_Hoover → sleep 22:35:12 "In some countries, both systems are fairly prominent[weasel words], if not used equally.[citation needed]" 22:35:19 Oh, my, WEASEL WORDS. 22:35:55 "fairly" isn't very accurate 22:38:45 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 22:44:44 -!- ais523 has quit (Remote host closed the connection). 22:47:50 -!- Mathnerd314 has quit (Ping timeout: 276 seconds). 22:53:22 -!- BeholdMyGlory has joined. 22:54:47 -!- Behold has quit (Ping timeout: 245 seconds). 23:12:55 -!- oerjan has joined. 23:15:41 A lot of people here are, they've just been quiet lately. 23:16:02 well i'm usually too lazy to read all of it unless it's short 23:16:11 :D 23:16:44 actually that's not laziness, even i have to do _some_ prioritization 23:17:09 Can I learn ATS without learning SML first? 23:17:28 really? 23:17:55 It's the middle of the day for like 2 billion people 23:17:58 It's just, I saw something comparing the syntax of ATS with the syntax of SML 23:18:11 afaik we don't have any indians or chinese here, though 23:18:54 hm wait that was during european day wasn't it 23:18:59 Hah. I like ATS's infixl/infixr better than Haskell's 23:19:16 Sgeo: what's the difference? 23:19:26 We can also use the following syntax to declare that iadd, fadd, padd and uadd are left-associative infix operators with a precedence value equal to that of the operator +: 23:19:26 infixl (+) iadd fadd padd uadd 23:19:42 According to my timestamps, that was said at 12:48 Finnish time, so it would mean midday CET. 23:20:21 fizzie: WELL WHY WOULD YOU EXPECT ANYONE TO BE ON THE CHANNEL _THEN_? 23:21:09 dinner --> 23:22:56 @pl \n -> fix (\me m -> if m+1 == n then m else me (m+1)) 0 23:22:57 flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==) 23:23:03 > (flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)) 3 23:23:04 Not in scope: `if'' 23:23:41 -!- pumpkin has quit (Quit: Computer has gone to sleep.). 23:23:47 @let 23:23:48 Defined. 23:23:53 @let if' x y z = if x then y else z 23:23:53 Defined. 23:23:54 > (flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)) 3 23:23:56 2 23:23:58 > (flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)) 0 23:24:02 mueval-core: Time limit exceeded 23:24:29 @pl \n -> fix (\me m -> if m+1 == n then 0 else 1+(me (m+1))) 0 23:24:30 flip fix 0 . (. (((1 +) .) . (. (1 +)))) . ap . flip flip 0 . (if' .) . (. (1 +)) . (==) 23:24:34 > (\n -> fix (\me m -> if m+1 == n then 0 else 1+(me (m+1))) 0) 3 23:24:35 2 23:24:42 hm 23:26:06 -!- FireFly has quit (Quit: swatted to death). 23:32:55 > let pred 1 = 0; pred (n+1) = 1 + pred n in pred 10 23:32:56 : Parse error in pattern 23:33:01 Is there anything special about pure nonterrminating functions in ATS, or is it only pure terminating that are special? 23:33:10 > let pred 1 = 0; pred n | n > 0 = 1 + pred (n-1) in pred 10 23:33:11 9 23:33:13 > let pred 1 = 0; pred n | n > 0 = 1 + pred (n-1) in pred 0 23:33:14 *Exception: :3:4-46: Non-exhaustive patterns in function pred 23:33:20 @let data X 23:33:20 EmptyDataDecls is not enabled 23:33:29 @let data Nat = Z | S Nat 23:33:29 Invalid declaration 23:33:36 oerjan: wat. 23:35:00 Dear ATS website: Fuck you 23:35:00 http://www.ats-lang.org/TUTORIAL/contents/types-with-effects.dats 23:35:14 Oh, right. SourceForge. 23:36:03 elliott: lambdabot does not support data declarations. 23:36:16 oerjan: but EmptyDataDecls is not enabled 23:36:16 :D 23:37:09 well it probably uses a generic parser first before checking what's actually _in_ the result. i suspect. 23:37:21 @env 23:37:21 Maybe you meant: v wn 23:37:23 @djinn-env 23:37:23 data () = () 23:37:23 data Either a b = Left a | Right b 23:37:23 data Maybe a = Nothing | Just a 23:37:23 data Bool = False | True 23:37:24 data Void 23:37:26 type Not x = x -> Void 23:37:28 class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b 23:37:30 class Eq a where (==) :: a -> a -> Bool 23:37:31 data Twice a = Two a a 23:37:32 > (\x -> undefined) :: Not a 23:37:33 type Classical x = Not (Not x) 23:37:35 Not in scope: type constructor or class `Not' 23:37:37 type NotNot x = Not (Not x) 23:37:45 :< 23:37:49 are nats like that in any library> 23:37:50 *library? 23:37:54 @hoogle Nat 23:37:54 Text.Parsec.Token natural :: GenTokenParser s u m -> ParsecT s u m Integer 23:37:54 Text.ParserCombinators.Parsec.Token natural :: GenTokenParser s u m -> ParsecT s u m Integer 23:37:54 Text.Parsec.Token naturalOrFloat :: GenTokenParser s u m -> ParsecT s u m (Either Integer Double) 23:40:14 oh right djinn does not support recursive types 23:41:22 hm what's the same as Nat again? not "Maybe ()" 23:41:28 quick oerjan how can i construct nat 23:41:30 [()] i guess 23:41:32 but that's ugly 23:42:27 :k Fix 23:42:28 Not in scope: type constructor or class `Fix' 23:43:00 My local cable provider, Nova (which is shit) is being swallowed up by Comcast, the answer to the question "how could you possibly do worse than Nova?" 23:43:44 > let pred (():[]) = []; pred (():():n) = () : pred n in pred [(),(),(),(),()] 23:43:45 [(),()] 23:43:52 > let pred (():[]) = []; pred (():():n) = () : () : pred n in pred [(),(),(),(),()] 23:43:53 [(),(),(),()] 23:44:00 @pl let pred (():[]) = []; pred (():():n) = () : () : pred n in pred 23:44:00 (line 1, column 14): 23:44:00 unexpected "[" 23:44:00 expecting "()", natural, identifier, "_" or "(" 23:44:04 ??? 23:44:17 @pl let pred [()] = []; pred (():():n) = () : () : pred n in pred 23:44:17 (line 1, column 10): 23:44:17 unexpected "[" 23:44:17 expecting pattern or "=" 23:44:21 oerjan ha;lp 23:44:35 well i hear comcast is the only major isp in the us which is actually preparing for ipv6 transition... 23:44:41 @pl fix (\me x -> case x of [()] -> []; () : () : n -> () : () : me n) 23:44:42 (line 1, column 30): 23:44:42 unexpected ">" 23:44:42 expecting variable, "(", operator or ")" 23:44:44 HALP 23:45:23 @pl fix (\me x -> case x of (:) () [] -> []; (:) () ((:) () n) -> (:) () ((:) () (me n)) 23:45:24 (line 1, column 31): 23:45:24 unexpected " " 23:45:24 expecting variable, "(", operator or ")" 23:45:25 @pl fix (\me x -> case x of (:) () [] -> []; (:) () ((:) () n) -> (:) () ((:) () (me n))) 23:45:26 (line 1, column 31): 23:45:26 unexpected " " 23:45:26 expecting variable, "(", operator or ")" 23:45:26 you are abusing @pl in wais it was obviously not meant to be used; you deserve no halp 23:45:30 *ways 23:45:31 oerjan: ;_; 23:45:37 WHAT DID I DO WRONG 23:45:56 case is not @pl'able 23:46:06 oerjan: is there an uncase? :) 23:46:37 @pl let f x = if x == [()] then [] else () : () : f (tail (tail x)) in f 23:46:37 (line 1, column 39): 23:46:37 unexpected " " 23:46:37 expecting variable, "(", operator, ";" or "in" 23:46:39 oh come on 23:46:41 @pl \(x:l) -> l 23:46:41 tail 23:46:47 ok it manages _that_ 23:47:06 also @pl has a fugly parser, i think 23:47:14 @pl let f x = if x == Cons POOP Nil then Nil else Cons POOP (Cons POOP (f (tail (tail x))) in f 23:47:14 (line 1, column 88): 23:47:14 unexpected reserved word "in" 23:47:14 expecting variable, "(", operator or ")" 23:47:23 ...what?! 23:47:33 @pl let f x = if x == Cons POOP Nil then Nil else Cons POOP (Cons POOP (f (tail (tail x)))) in f 23:47:33 fix (ap (flip if' Nil . (Cons POOP Nil ==)) . ((Cons POOP . Cons POOP) .) . (. (tail . tail))) 23:47:36 FINALLY 23:47:54 fix (ap (flip if' [] . ([()] ==)) . (((:) () . (:) ()) .) . (. (tail . tail))) 23:47:56 that's kinda ugly 23:47:57 oerjan: deugly that 23:50:33 elliott: "tail" 23:50:51 oerjan: ...:D 23:50:53 oerjan: VERY GOOD POINT 23:51:05 oerjan: the point is that it works in a language where you can't decrement 23:52:27 also, "init" may be closer to the spirit of it 23:53:18 elliott: oh. also it's buggy. 23:53:26 it will fail on even length lists 23:53:32 oerjan: *you're* buggy. 23:54:01 oerjan: but well. :p 23:54:07 oerjan: i was inspired by your talking with olsner actually. 23:55:39 * oerjan may have already forgotten that 23:58:11 oerjan: base-e/base-pi cat language 23:58:14 ages ago 23:58:15 months 23:59:10 huh 23:59:32 oerjan: because you mentioned increment and decrement being the only fast operations 23:59:40 but in Nock, decrement is O(n) 23:59:45 because itw orks like my recursive function 23:59:45 *it works