←2011-01-31 2011-02-01 2011-02-02→ ↑2011 ↑all
00:00:18 <nddrylliog> also, quintopia, what do you like?
00:00:50 <nddrylliog> (also, I can't find a reason to distinguish between = and == in such a language..)
00:01:35 <quintopia> nddrylliog: anything that is done while naked with a member of the opposite sex, also naked
00:01:41 <quintopia> (seriously, like about what?)
00:02:20 <nddrylliog> quintopia, about languages
00:02:37 <Lymia> Let's write a programming language based on Wang tiles.
00:02:40 <quintopia> oh. I only like Makefiles
00:02:50 <quintopia> i program everything in Makefile
00:04:00 <nddrylliog> that would be a huge turn-off
00:04:29 <elliott> Lymia: no.
00:04:35 <quintopia> why? you never have to try to remember how to call your program
00:04:37 <Lymia> Why not?
00:04:39 <quintopia> it's always just "make"
00:04:45 <elliott> :D
00:04:47 <elliott> Lymia: because
00:05:27 <Lymia> Let's make a programming language based on complex numbers.
00:05:36 <nddrylliog> make: *** No rule to make target `love'. Stop.
00:05:41 <elliott> Lymia: no
00:05:45 <quintopia> how about a language called Bugger Overflow? You guys still haven't suggested a good language for that name.
00:05:46 <nddrylliog> tssk, no Daft Punk references. Shameful.
00:05:47 <Lymia> Why not? :(
00:06:00 <Lymia> quintopia, the only way to control program flow is to intentionally overflow buffers.
00:06:16 <quintopia> umm
00:06:26 <quintopia> how is it structured that that's the only way
00:07:13 <quintopia> even in C, the real damage is done upon returning from called function...
00:07:22 <quintopia> which is another form of control flow...
00:07:32 <Lymia> Figure it out.
00:07:39 <quintopia> O KAY
00:07:59 -!- elliott has set topic: argaarognaroijrigjieajgioajorjg.
00:08:02 <elliott> it's staying like that
00:08:03 <elliott> forever
00:08:31 -!- quintopia has set topic: alright, forever's up.
00:08:55 <nddrylliog> 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 <nddrylliog> best language evar
00:09:19 <elliott> nddrylliog: "e.address.next" this is don't even i mean what is this you're
00:09:21 <elliott> it should be +1 surely
00:09:23 <elliott> you're just the and it
00:09:39 <elliott> i really think having the address stuff in there is gonna make the logic fall down a bit :)
00:09:41 <nddrylliog> elliott, nope, + 1 iz no good
00:09:45 <olsner> elliott: *you're* just the and it
00:09:52 <elliott> _especially_ if you define addresses to be finite and every object to have a unique address.
00:10:21 <elliott> map.c:501: error: incompatible types when assigning to type ‘Uint32’ from type ‘RGB’
00:10:22 <elliott> god what a fuck
00:10:29 <elliott> so inconsiderate?
00:10:31 <elliott> erm
00:10:31 <nddrylliog> elliott, + 1 doesn't mean much for adresses..
00:10:31 <elliott> wow
00:10:34 <elliott> i was going to write duck :D
00:10:39 <elliott> nddrylliog: sure it does, it means the address after that.
00:10:53 <elliott> well ok you want +sizeof(blah), but er, you could do it like C and have +1 mean that
00:10:53 <nddrylliog> elliott, well so does anAddress.next - and it's a convention, for list-like data structures as well
00:10:57 <elliott> i mean you need that anyway
00:10:57 <nddrylliog> yeah
00:10:58 <nddrylliog> but no
00:11:00 <nddrylliog> but yeah
00:11:01 <elliott> i mean you need that anyway
00:11:02 <nddrylliog> but it'll be confusing
00:11:04 <elliott> because address.next does that
00:11:07 <nddrylliog> yup
00:11:12 <elliott> so address.next changes meaning depending on what you're addressing with it, which is just
00:11:13 <elliott> your language is just
00:11:17 <nddrylliog> well
00:11:17 <elliott> you need to think this through some more :P
00:11:35 <nddrylliog> 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 <nddrylliog> really.
00:11:47 <nddrylliog> 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 <nddrylliog> (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 <elliott> nddrylliog: PRECISELY
00:15:33 <elliott> although oerjan is also available.
00:15:40 <elliott> <nddrylliog> 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 <elliott> but address.next means one thing
00:15:44 <elliott> in your case
00:15:47 <elliott> x == address.next
00:15:47 <elliott> and
00:15:49 <elliott> y == address.next
00:15:53 <elliott> the .nexts there are evaluated differently
00:15:57 <elliott> and that's just hugely fucked up.
00:16:03 <elliott> UNLESS
00:16:09 <elliott> you parameterise the address type on the type it's addressing
00:16:10 <elliott> i.e.
00:16:10 <elliott> instead of
00:16:17 <elliott> "foo.address has type Address"
00:16:18 <elliott> you have
00:16:23 <elliott> "foo.address has type Address(foo's type)"
00:16:28 <elliott> then .next could depend on that.
00:16:36 <elliott> you would need conversions of course.
00:16:43 <nddrylliog> well yeah obviously
00:16:47 <nddrylliog> that's what I meant.
00:17:06 <elliott> 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 <nddrylliog> when i think address I think C, and.. C pointer types are somehow "parameterized"
00:17:28 <nddrylliog> re: functions: exactly!
00:18:28 -!- Behold has quit (Remote host closed the connection).
00:18:46 <elliott> sure they are parameterised. (T *) has overloaded + :)
00:20:29 <nddrylliog> C? overloaded? surely you just.
00:20:31 <nddrylliog> *jest
00:21:28 <kfr> Sorry elliott, I was asleep
00:21:39 <elliott> Unforgivable.
00:21:49 <kfr> So you hate my esolang
00:21:58 <elliott> Did I say that?
00:21:59 <elliott> :p
00:22:00 <kfr> As for the AMD64/IA-32 PE/ELF stuff
00:22:02 <kfr> WHY NOT?
00:22:07 <elliott> 'CUZ WINDOWS SUCKS
00:22:19 <nddrylliog> kfr, what's your esolang?
00:22:50 <kfr> http://siyobik.info/misc/esolang/prime.html
00:22:55 <kfr> It was just a quick joke idea
00:23:05 <kfr> But writing a self hosting compiler would be massively awesome
00:23:10 <kfr> Especially a portable one
00:23:56 <kfr> It would probably be easier for a simpler language though
00:24:14 <kfr> I wouldn't have to deal with stuff like optimising tail recursion etc
00:24:53 <nddrylliog> self-hosting? without IO? tough job
00:25:12 <kfr> It prints the return value of the main "program" function to stdout at the end
00:25:15 <nddrylliog> also, without strings :D
00:25:21 <nddrylliog> hmm.
00:25:29 <elliott> eh, pixley does it
00:25:29 <nddrylliog> what would it compile to?
00:25:32 <kfr> So there is just one form of implicit output
00:25:41 <kfr> nddrylliog: An AMD64 PE, for example.
00:25:58 <kfr> No external dependencies other than kernel32.dll
00:25:59 <elliott> nddrylliog: he wants to compile it to multiple executable formats because I don't know.
00:26:08 <kfr> On Linux you could even do it without any shared libraries
00:26:10 <elliott> Perhaps because he uses Windows and would like to convince himself that that's not a bad thing.
00:26:27 <kfr> I use a variety of operating systems
00:26:49 <nddrylliog> ah right.
00:26:52 <kfr> 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 <elliott> Generating PE vs. generating ELF is not really all that much work. It's just header.s
00:27:09 <elliott> *headers.
00:27:32 -!- macrohauler has joined.
00:27:36 -!- macrohauler has left (?).
00:27:44 <elliott> nddrylliog: http://catseye.tc/projects/pixley/src/pixley.pix "Self-hosting" Pixley, although admittedly it is an interpreter, not a compiler.
00:27:56 <nddrylliog> elliott, yup, I googled that a minute ago
00:28:55 <kfr> How is it self hosting then?
00:29:12 <elliott> well with a Pixley specialiser, you can turn it into a compiler. :)
00:29:49 <nddrylliog> specialiser?
00:30:03 <elliott> nddrylliog: read this: http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html
00:30:18 <Sgeo> I have no clue whether I should go with Git or Mercurial
00:30:23 <Sgeo> For single-person projects
00:30:29 <elliott> Sgeo: scapegoat
00:30:34 <Sgeo> I'm under the impression that Mercurial's easier
00:30:37 <elliott> Sgeo: more seriously: darcs.
00:30:50 <elliott> but scapegoat, once scapegoat exists!
00:31:00 <Sgeo> That's the one that's notable only due to it being Haskell?
00:31:04 <elliott> what?
00:31:09 <Sgeo> >.>
00:31:13 <elliott> darcs is notable due to having the only decent UI of any version control system.
00:31:23 <elliott> and also the only "major" one that treats patches in any even vaguely-sane way
00:31:31 <elliott> as opposed to just treating commits as copies of the whole repository.
00:32:08 <Sgeo> Does TortoiseDarcs exist?
00:32:10 * Sgeo googles
00:32:23 <elliott> Tortoise* are all terrible.
00:32:33 <elliott> 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 <elliott> lot of brain damage today!
00:32:53 <kfr> 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 <kfr> darcs is notable for having been written in Haskell
00:38:04 <kfr> 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 <elliott> erm.
00:38:16 <elliott> when was the last time you used darcs?
00:38:21 <kfr> Three days ago
00:38:26 <elliott> i don't think darcs 2 does that
00:38:34 <elliott> anyway, darcs isn't notable because it's written in haskell, i don't give a shit about that
00:38:35 <kfr> Whenever I have to pull stuff from HackageDB it takes 10-20 min :[
00:38:41 <elliott> kfr: works for me
00:38:51 <kfr> Yes, it works, but it's really slow
00:38:57 <elliott> works fast for me
00:38:59 * nddrylliog 's head is spinning.
00:39:01 <nddrylliog> too.. many.. projections
00:39:04 <elliott> 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 <kfr> elliott: Oh, lots of Haskell people do
00:39:17 <elliott> 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 <elliott> kfr: well. whatever.
00:39:28 <nddrylliog> elliott, I've already decided that - but I have no idea how to
00:39:33 <elliott> nddrylliog: :)
00:39:39 <elliott> nddrylliog: writing good specialisers is "current reserach"
00:39:40 <kfr> elliott: Lots of Haskell people will use software written in Haskell over superior software which does the same
00:39:56 <elliott> nddrylliog: iirc there was a team that got a specialiser behaving non-trivially when applied to itself. one team. :p
00:40:14 <elliott> 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 <kfr> Yeah, I'm in #haskell, too
00:42:23 <elliott> i'm aware :p
00:42:25 <Sgeo> kfr, which is better, TortoiseHg or TortoiseGit
00:42:32 <Sgeo> I have nothing else to make a decision on
00:42:52 <Sgeo> Isn't there something about git being easier to make throwaway branches with?
00:43:44 <elliott> ok Sgeo is officially infuriating enough.
00:44:24 <kfr> 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 <elliott> modifying history is evil.
00:44:43 <elliott> (it's necessary in git, but only because git is badly-designed)
00:44:48 <nddrylliog> modifying History is evil.
00:44:54 <nddrylliog> history, not so much.
00:44:56 <kfr> To remove accidentally committed sensitive files, etc
00:44:58 <Sgeo> Modifying history is _necessary_ in Git?
00:45:01 <kfr> It saved my ass so many times
00:45:04 <kfr> Sgeo: No
00:45:12 <elliott> kfr: that's easy to do without changing history if you really have to
00:45:23 <elliott> the thing is, in git, people modify history *for aesthetic reasons*
00:45:32 <elliott> in fact, every "git pull" that causes a merge does a rebase!
00:45:34 <elliott> 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 <elliott> *insanity
00:45:49 -!- pikhq has quit (Ping timeout: 240 seconds).
00:45:57 -!- pikhq has joined.
00:46:13 <kfr> git is also the fastest DVCS I've used and there are convenient sites for open source projects like github
00:46:21 <Sgeo> So, one of my friends got published in a textbook
00:46:22 <kfr> Google Code with hg works, too, but it's not as fancy
00:46:30 <elliott> kfr: Umm, bitbucket?
00:46:34 <kfr> Don't know it
00:46:36 <elliott> Come on, it's like a feature-for-feature clone of GitHub.
00:46:39 <nddrylliog> github beats bitbucket anytime.
00:46:41 <elliott> It's pretty damn popular too.
00:46:50 <nddrylliog> they'll always be several steps behind...
00:46:56 <elliott> nddrylliog: Sure, but saying "github exists and google code sucks at hg" is a really biased portrayal.
00:47:14 <nddrylliog> elliott, well yeah. for what it's worth, google code doesn't even really exists
00:47:15 <Sgeo> I wonder how much that xkcd strip promoted github...
00:47:21 <elliott> Google Code is pretty bad.
00:47:26 <elliott> especially since the latest redesign.
00:47:27 <kfr> Sgeo: Which one? :o
00:47:39 <Sgeo> bitbucket has free private hosting, right?
00:47:47 <nddrylliog> <3 http://lesbians.github.com/
00:47:57 <nddrylliog> kfr, that one ^
00:48:00 <Sgeo> http://xkcd.com/624/
00:48:18 <kfr> Odd one
00:48:25 <elliott> it's a pretty crap one.
00:48:35 <kfr> Dont' really find it funny, shrug
00:48:37 <nddrylliog> is there such as a thing as an odd xkcd comic?
00:48:38 <elliott> its number is >600 and <8xx (for some xx i forget)
00:48:41 <elliott> so that it sucks immensely is obvious
00:48:53 <elliott> I think Mercurial would be dead if not for the 6-or-so high-profile projects using it.
00:49:10 <kfr> Anyways, overall my preference for VCS currently is: git > hg > bzr > darcs > any centralised one
00:49:19 <kfr> git really sucks in two regards though
00:49:21 <Sgeo> I've only ever used SVN before
00:49:26 <kfr> 1. like half of it is written in bash
00:49:31 <elliott> no it isn't
00:49:33 <elliott> git is all C now
00:49:36 <elliott> or at least 90%
00:49:43 <elliott> (this is also why windows users stopped whining)
00:49:45 <kfr> 2. it doesn't have a proper API
00:49:55 <elliott> You forgot to rank arch and svk. :)
00:49:56 <kfr> Unlike, say, hg
00:50:00 -!- variable has joined.
00:50:02 <elliott> And Codeville!
00:50:02 <kfr> Haven't used those
00:50:09 <elliott> They're...rather obscure.
00:50:11 <kfr> I'\ve only used cvs, svn and some commercial ones
00:50:17 <elliott> Arch was the first Free(TM) distributed VCS, though.
00:50:24 <elliott> And also the first one that anyone really paid any attention to at all.
00:50:24 <nddrylliog> and RCS!
00:50:25 <kfr> Out of the ones I didn't mention
00:50:35 <elliott> RCS? pah, i use SCCS
00:51:07 <nddrylliog> elliott, ahh shoot. That's the one I was looking for
00:51:16 <Sgeo> 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 <kfr> elliott: Do you know how many binaries and bash scripts MSysGit comes with right now?
00:52:00 <kfr> 127.
00:52:07 <nddrylliog> Sgeo, huh, sorry but I almost always use git for my single-person projects. Branches are goodness.
00:52:14 <nddrylliog> kfr, right - but it's msys.
00:52:18 <elliott> kfr: why did you include binaries?
00:52:18 <kfr> It requires a full BusyBox port
00:52:23 <elliott> those are irrelevant
00:52:26 <elliott> we are talking about shell scripts
00:52:36 <Sgeo> elliott, are branches better in git than hg, as nddrylliog suggests?
00:52:38 <kfr> Err that's very relevant, relying on BusyBox for a VCS implies mental poverty
00:52:43 <elliott> mental poverty?
00:52:49 <elliott> no, it implies someone who isn't going to bend over backwards for Windows.
00:53:00 <elliott> you think Linus Torvalds gives a shit...?
00:53:05 <nddrylliog> kfr, msysgit is *so much more* than just git.
00:53:17 <nddrylliog> kfr, ergo it's not fair.
00:53:20 <kfr> nddrylliog: Why else would they be in there if they weren't required?
00:53:30 <elliott> because windows users like software bloat?
00:53:35 <elliott> you're edging very close to being a troll tbh
00:53:36 <kfr> Oh I'm sorry, apparently it uses /bin/sh
00:53:57 <nddrylliog> 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 <hagb4rd> im an open source fan, but must admit that the winpowershell really has an edge over any unix bash
00:54:07 <nddrylliog> kfr, and bash, and *vim*, yeah.
00:54:11 <elliott> powershell is useless
00:54:15 <elliott> well
00:54:19 <kfr> elliott yeah it is
00:54:19 <elliott> its internal architecture is nice
00:54:22 <elliott> but actually getting anything done in it?
00:54:25 <elliott> doesn't happen.
00:54:31 <nddrylliog> talking about trolls.. :D
00:54:41 <hagb4rd> y am i not surprised bout your opinion elliott
00:54:43 <kfr> Alright I apologise, I thought git actually required all of these
00:55:00 <elliott> me? have opinions?
00:55:03 <elliott> ha!
00:55:07 <kfr> But back when I had some problems with a port of git I ended up having to fix a sh script
00:55:17 <elliott> "back when" = yes, it used to be written half in sh
00:55:19 <elliott> it isn't now :P
00:55:21 <hagb4rd> ok..lets call it prejudices ;)
00:55:29 <elliott> let's call it OBJECTIVE TRUTH
00:55:30 <hagb4rd> or ideals
00:55:32 <kfr> It wasn't that long ago
00:55:35 <kfr> Only 2 years perhaps
00:55:45 <hagb4rd> openvirtues *g
00:56:03 <Sgeo> TortoiseGit or Git Extensions?
00:56:07 <elliott> 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 <elliott> well, 6, but it only started becoming anything like modern git a year or two later
00:56:25 <elliott> (man, has it been that long?)
00:56:33 <kfr> Sgeo waht's "Git Extensions"?
00:56:47 <Sgeo> http://code.google.com/p/gitextensions/
00:56:54 <Sgeo> Although its tagline seems a bit hubristic
00:56:59 <nddrylliog> "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 <kfr> Anyways, Microsoft still haven't realised that the problem wasn't that the shell is inferior
00:57:19 <elliott> yes it was
00:57:21 <kfr> The problem is that the default terminal is utterly useless
00:57:21 <elliott> largely :)
00:57:27 <elliott> cmd.exe is shit too
00:57:31 <nddrylliog> THAT.
00:57:35 <elliott> you can't even do a for loop without shooting yourself
00:57:35 <kfr> Yeah that's the csrss.dll interface
00:57:40 <elliott> or uh
00:57:41 <elliott> quote things
00:57:42 <elliott> or anything
00:57:44 <hagb4rd> whats the problem about THIS kfr
00:57:47 <nddrylliog> also, msys used to ship with rxvt, which they've now given up for cmd.exe... anyone, explain?
00:57:51 <elliott> and it has no `` or $()
00:57:52 <hagb4rd> you can download ps for free
00:57:52 <kfr> hagb4rd: About what?
00:57:57 <elliott> and uh
00:58:01 <elliott> hagb4rd: dude powershell uses cmd.exe
00:58:07 <hagb4rd> so?
00:58:12 <elliott> cmd.exe sucks
00:58:15 <elliott> that powershell sucks is unrelated, but
00:58:18 <nddrylliog> try resizing \o/
00:58:18 <myndzi> |
00:58:18 <myndzi> /`\
00:58:22 <kfr> elliott: They have another GUI for it
00:58:27 <hagb4rd> quad erat demostrandum?
00:58:28 <Sgeo> elliott, is Git's branching a bad reason to go with Git?
00:58:31 <kfr> But it is even more useless tham the csrss one
00:58:36 <elliott> kfr: yeah i seem to recall it being terrible
00:58:46 <kfr> http://siyobik.info/paracletus/\
00:58:47 <kfr> http://siyobik.info/paracletus/
00:58:53 <kfr> Check this for some screenshots/examples
00:59:01 <kfr> Of why the csrss GUI sucks
00:59:19 <kfr> My favourite is http://siyobik.info/paracletus/image/cmd-unicode.png
00:59:24 <elliott> 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 <elliott> 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 <elliott> i really wanted to use mintty with interix
00:59:31 <elliott> but it wanted the cygwin dll
00:59:41 <elliott> and when i gave it a copy, it then repeated every line after i entered it :(
00:59:49 <elliott> so i used putty to ssh locally :P
01:00:23 -!- pikhq has quit (Ping timeout: 240 seconds).
01:00:25 <kfr> Yeah I use PuTTy a lot
01:00:31 -!- pikhq has joined.
01:00:36 <elliott> i like the part where you seem to not understand the difference between a terminal and a shell+coreutils >_>
01:00:41 <elliott> at least from your mockup screenshots
01:00:44 <kfr> Unluckily I still haven't managed to integrate the host file system into my Linux VMs flawlessly
01:01:03 <elliott> kfr: try Gentoo Prefix.
01:01:05 <kfr> vmhgfs and vboxsf suffer from some issues
01:01:06 <elliott> it runs on Interix
01:01:12 <elliott> very nice, and free too
01:01:16 <elliott> it's like Cygwin, except far, far better
01:01:23 <kfr> Curiously they suffer from identical issues
01:01:26 <elliott> and ostensibly Microsoft-supported
01:01:38 <elliott> and ofc it runs on regular NTFS
01:01:48 <kfr> Which leads me to believe that this might be some deeper issue which only few people are aware of
01:02:13 <kfr> 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 <nddrylliog> why is *everything* such a problem on top of NTFS
01:02:33 <kfr> s/in caching/caching/
01:03:07 <nddrylliog> 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 <kfr> How does Steam rely on a bug?
01:04:00 <elliott> nddrylliog: i don't rely on steam in wine :P
01:04:15 -!- poiuy_qwert has joined.
01:04:25 <nddrylliog> they make uses bug. Yeah.English.
01:04:54 <elliott> wat
01:04:55 <kfr> I parsed it as "use of an FS bug" :p
01:05:04 <nddrylliog> for reference, http://developer.valvesoftware.com/wiki/Steam_under_Linux#Wine.2C_Steam_.26_ntfs-3g
01:05:15 <hagb4rd> mentioning msproducts always leads to this neverending enervating war of opinions
01:05:19 <nddrylliog> kfr, yeah, we clearly have a precedence problem.
01:05:24 -!- poiuy_qwert has quit (Client Quit).
01:05:27 <Sgeo> Git Extensions wants me to install MSysGit and not just regular Git
01:05:39 <olsner> msysgit is regular git, if you're on windows
01:05:47 <nddrylliog> I love the "Don't minimize Steam!" on the valvesoftware linux wiki page
01:05:55 <kfr> nddrylliog lol :/
01:06:20 <Sgeo> How difficult/easy will it be for me to figure out Git Extensions without looking at any documentation?
01:06:28 <olsner> what is git extensions?
01:06:42 <kfr> I am annoyed by how people frequently intentionally avoid portability whereas it's nearly free nowadays for a lot of stuff :/
01:06:55 <Sgeo> http://code.google.com/p/gitextensions/
01:06:56 <olsner> portability isn't free :)
01:07:09 <nddrylliog> kfr, YES. Like how there's no Left 4 Dead 2 client for linux.
01:07:19 <nddrylliog> Sgeo, also it's a bit ironic that GitExtensions is hosted on Google code...
01:07:39 <olsner> 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 <elliott> did Sgeo just imply that he can't/won't read documentation?
01:07:47 <kfr> Ah, haven't seen that one before, interesting
01:07:54 <Sgeo> won't. Not can't.
01:08:03 <nddrylliog> Sgeo, prove that you can!
01:08:33 <elliott> 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 <olsner> elliott: I think he also implied that he won't watch documentation either
01:08:46 <kfr> 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 <kfr> But that's not really about that GUI, I bet it's easy to use
01:09:03 <olsner> (i.e. the "video tutorials" they talk about)
01:09:07 <elliott> 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 <Sgeo> elliott, I'm capable of reading documentation if I have questions. I'm just hoping not to have questions
01:09:12 <elliott> so i won't.
01:09:28 <olsner> elliott: probably
01:09:41 <kfr> i.e. the difference between committing and pushing in a DVCS vs. committing in a CVCS
01:10:04 <Sgeo> Is there really that big a difference for single person projects?
01:10:12 <kfr> Yeah
01:10:28 <Sgeo> Oh, right
01:10:34 <kfr> It's a totally different approach to version control
01:10:38 <Sgeo> I read the HgInit tutorial a long while ago
01:10:46 <olsner> it's not big I think, but the distinction is always there
01:10:50 <elliott> not if you're the only one committing :p
01:11:48 <olsner> hmm, right, it matters if you set up a remote repository somewhere or if you're only committing locally
01:11:54 <kfr> 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 <kfr> And some people who use SVN a lot actually use lots of hacks to make it more like a DVCS
01:12:34 <elliott> kfr: like svk!
01:12:44 <nddrylliog> so, give me simple problems to solve / data structures to implement so I can think some more about my language.
01:12:46 <elliott> kfr: (svk is a DVCS built on top of svn. I'm not joking.)
01:12:56 <kfr> To create local non-networked repositories which just use the file system, for example
01:13:00 <elliott> nddrylliog: OCTREES
01:13:07 <kfr> And to be able to push their state to online repositories :p
01:13:25 <kfr> nddrylliog: IOCP/epoll/kqueue HTTP server
01:14:14 * Sgeo goes to watch the videos
01:14:26 <elliott> kfr: that...
01:14:28 <elliott> is not a data structure.
01:14:37 <kfr> It involves some data structures!
01:14:39 <elliott> or a "problem" in any real sense. in fact that's just an incredibly boring task in IO engineering.
01:14:46 <nddrylliog> elliott, +1
01:14:47 <elliott> IOCP? oh, some Windows bullshit.
01:14:48 <kfr> Pff.
01:14:59 <kfr> elliott: Don't hate on portability
01:15:06 <elliott> that's not portable to QNX.
01:15:17 <nddrylliog> well to be fair, octrees are quite boring as well..
01:15:21 <elliott> or, oh, lisp machines.
01:15:26 <elliott> nddrylliog: yeah, but they're a data structure :P
01:15:35 <kfr> elliott feel free to add more support!
01:15:41 <elliott> kfr: if you really think "IOCP/epoll/kqueue HTTP server" when you think "interesting programming problem to solve", my condolences
01:16:08 <kfr> :|
01:16:18 <nddrylliog> |:
01:16:49 <hagb4rd> :|
01:16:49 <kfr> My first Haskell project was an SCGI server/web dev framework lol
01:17:04 <kfr> nddrylliog may I interest you in a self hosting compiler? That certainly features some data structures
01:17:09 <nddrylliog> elliott, the problem is, I'm not sure how to define that a node has 8 children.
01:17:10 <elliott> i think we're found the most boring person on earth people!
01:17:23 <nddrylliog> kfr, that's an idea - but I have no idea how to write a compiler for it in the first place :)
01:17:23 <elliott> nddrylliog: that's because your "element" stuff makes no sense. :)
01:17:35 <nddrylliog> elliott, well find a better alternative then!
01:17:42 <elliott> nddrylliog: do it like Coq :p
01:17:57 <nddrylliog> elliott, by jumping backwards on a single toe?
01:17:58 <kfr> elliott: And it forces you to consider FFI stuff at least, heh
01:18:02 <elliott> nddrylliog: yes.
01:18:08 <nddrylliog> elliott, thanks but no thanks
01:18:11 <elliott> nddrylliog: you really should learn coq though :)
01:18:24 <kfr> But what can I say, I've always been very interested in highly scalable networking stuff
01:18:25 <nddrylliog> elliott, yeah, probably. But I'm hesitant. Does it hurt at first, like anal?
01:18:27 <kfr> Both clients and servers
01:18:36 <nddrylliog> kfr, what do you think of Io?
01:18:41 <kfr> Never heard of it
01:18:56 <nddrylliog> kfr, seriously? http://iolanguage.com/
01:19:07 <elliott> <nddrylliog> elliott, yeah, probably. But I'm hesitant. Does it hurt at first, like anal?
01:19:09 <elliott> it never stops hurting.
01:19:15 <nddrylliog> elliott, awwww.
01:19:46 <nddrylliog> I wonder what fraction of the e-mails exchanged contain passwords or other kinds of authentication tokens.
01:20:34 <kfr> At first I always started interpeters for dynamically typed languages
01:20:50 <kfr> But now I've developed a grudge against dynamically typed stuff
01:21:39 <kfr> 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 <kfr> And most of those could have been solved by simple compile time checks in a statically typed language
01:23:09 <elliott> i only code in ursala, true story
01:23:15 <elliott> can i just say
01:23:17 <elliott> that i hate everyone's guts
01:23:19 <elliott> carry on
01:23:36 <kfr> Are you sure it isn't Ursula?
01:23:45 <kfr> Diminutive of bear or something like that
01:24:21 <kfr> I think I saw somebody mention "Ursula" in here
01:24:28 <kfr> So I thought they might be related
01:24:41 <kfr> "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 <kfr> Maybe unrelated after all
01:25:10 <elliott> ursala is the most fun crazy
01:25:59 -!- oerjan has joined.
01:32:28 * Sgeo oohs at git stash
01:34:22 <nddrylliog> git stash is golden
01:34:41 <Sgeo> "A consequence of Gits distributed nature is that history can be edited easily."
01:34:49 <Sgeo> http://www-cs-students.stanford.edu/~blynn/gitmagic/ch05.html
01:40:16 <Sgeo> I should probably read a git tutorial, rather than looking for a tutorial based on this GUI
01:46:52 <variable> https://s-hphotos-snc3.fbcdn.net/hs317.snc3/28506_1437566584016_1378554866_31120765_1714195_n.jpg -> science joke
01:47:30 <variable> Sgeo, I'm not a fan of the ease of editing history - but meh
01:49:50 <kfr> <Sgeo> "A consequence of Git’s distributed nature is that history can be edited easily."
01:49:56 <kfr> lol that has nothing to do with the distribution
01:50:13 <kfr> hg, bzr, darcs are all opposed to modifying the history
01:50:33 <kfr> Whereas in git there's even a "shell scripted filtering language" to modify it programmatically
01:50:35 <elliott> darcs isn't _too_ opposed
01:50:36 <elliott> "darcs obliterate"
01:50:57 <kfr> :o not familiar with it
01:51:03 <elliott> kfr: it obliterates a patch :)
01:51:03 <kfr> Also, I must admit that I never use git stash
01:51:07 <elliott> ONLY to be used when you miscommit
01:51:11 <elliott> in scapegoat, modifying history is almost impossible. well. you can undo the last N commits. but that's about it
01:51:44 <kfr> In fact I even frequently commit and push non-compiling code in some projects of mine :|
01:52:16 <elliott> mcmap's testing philosophy is to not.
01:52:20 <Sgeo> Does hg have an equiv to stash?
01:52:22 <kfr> 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 <kfr> But as all Haskell users know, "if it compiles, it works"
01:53:32 -!- Lymia has joined.
01:54:00 <elliott> we do it with C... surprisingly it actually usually works
01:54:13 <kfr> Very funny
01:54:23 <elliott> i'm not joking :)
01:54:34 <nddrylliog> in C++, usually it's "if it compiles, it segfaults"
01:54:50 <kfr> C is the opposite of compile time correctness
01:55:03 <kfr> C++ is somewhat less faulty but still very prone to errors
01:55:16 <Sgeo> Is cherry pick a Git thing or a Git Extensions thing?
01:55:27 <nddrylliog> Sgeo, git
01:55:33 <Sgeo> Awesome
01:55:35 <nddrylliog> Sgeo, thank God for that :)
01:55:37 <elliott> C++ programs that compile may fail less, but they're less maintainable than C programs. :p
01:55:50 <elliott> cherry pick is a _darcs_ thing
01:55:53 <kfr> Nah it's considerably easier
01:55:57 <elliott> git's implementation is still inferior after all these years
01:55:59 <kfr> I thought "cherry picking" was a general term
01:56:00 <pikhq> C++ doesn't even have decidable compilation.
01:56:03 <kfr> Not even bound to VCS
01:56:11 <elliott> it is, but darcs invented the VCS meaning
01:56:22 <Sgeo> elliott, inferior how
01:59:35 <Sgeo> Why does rebase exist? It seems like its only function is to prettify history
01:59:38 * Sgeo barfs
02:02:00 <elliott> oerjan: hm haskell question
02:02:48 <elliott> wait never mind. :)
02:02:49 <oerjan> O KAY
02:02:51 <oerjan> DAMN
02:03:08 <elliott> 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 <elliott> where x' == f x
02:03:14 <elliott> except not only would that require Eq
02:03:18 <elliott> but the first step would compare to undefined
02:03:22 <elliott> since fix takes no base value
02:03:35 <oerjan> you don't say
02:03:42 <elliott> oerjan: JUST BECAUSE I'M SLOW
02:03:55 <oerjan> :t iterate
02:04:03 <oerjan> eek no lambdabot
02:04:05 <elliott> i should actually write a program in ursala sometime :P
02:04:07 <elliott> oerjan: omg :(
02:04:09 <elliott> ask Cale what we did wrong
02:04:21 <elliott> oerjan: let's do it together, quick, to #haskell!
02:04:37 <oerjan> actually there's no lambdabot _anywhere_, so no need to panic on behalf of #esoteric
02:04:54 <elliott> phew.
02:05:10 <Sgeo> 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 <Sgeo> ?
02:05:21 -!- elliott has joined.
02:05:26 <elliott> did you like my /quit message
02:05:28 <elliott> i think i might start doing more of those
02:05:34 -!- elliott has quit (Client Quit).
02:06:21 <kfr> lol
02:07:24 <oerjan> i did funny quit messages back when it was on vinyl
02:10:34 <Lymia> !fyb litterer http://lymia.x10.bz/evil.fyb
02:10:53 <EgoBot> Score for Lymia_litterer: 92.0
02:10:57 <quintopia> nice
02:11:01 <Lymia> Brute force.
02:11:01 <Lymia> :v
02:11:28 <quintopia> where is the scoreboard folder again?
02:12:24 <Lymia> http://codu.org/eso/fyb
02:12:39 <Lymia> The @@ pesudo op is so overpowered.
02:12:39 <Lymia> :
02:12:40 <Lymia> :v*
02:13:08 <Lymia> It's effect is to basicly set the instruction pointer to the current code pointer.
02:15:05 <Lymia> That program is basicly the FYB version of a CoreWars core clear.
02:18:00 <kfr> What are those crazy programming languages where the correctness of the code is part of defining the algorithm?
02:18:22 <kfr> I think I recall some three letter initialism one where quicksort is like 150+ lines
02:18:32 <kfr> It may be related to formal proof systems
02:20:11 <kfr> I should probably look into Agda/Coq and such at some point, too
02:20:15 <kfr> Learn about dependent typs
02:20:17 <kfr> types*
02:20:32 <nddrylliog> hahahaha :)
02:20:35 <nddrylliog> speak of the devil.
02:21:00 <nddrylliog> kfr, I was discussing that with elliott a few minutes ago.
02:22:38 <quintopia> contracts are supposed to do that
02:23:45 <quintopia> Lymia: why doesn't litterer beat evil?
02:23:50 <Lymia> Dunno.
02:24:21 <Lymia> I'm not sure why evil beat so many things in the first place.
02:24:37 <Lymia> That big block of code is to get rid of every ! instruction in logicex-2
02:25:18 <Lymia> It's actual attack is literally nothing more than a quick scanner.
02:25:58 <Lymia> Hell, there's an ':' missing in it.
02:27:12 <quintopia> when you defect, it puts the data pointer at your own code pointer? and the defecting again puts it where?
02:30:04 <Lymia> When you defect, the data pointer is set to the code pointer.
02:30:21 <Lymia> If you defect twice, the effect is that the data pointer is set to the address of the second defect.
02:30:28 <Lymia> But stays in the same player's code.
02:30:48 <quintopia> huh
02:31:03 <quintopia> so it's like a free jump thing?
02:34:10 <Lymia> It's a much faster way than >>>>>>>>> to get to the middle of somebody's program.
02:39:09 <Sgeo> I'm taking a statistics course
02:39:35 <quintopia> 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 <kfr> What's a vampire pit?
02:40:00 <Sgeo> I don't see why it's sqrt(sum([x-mean]^2)/n) and not sum(|[x-mean]|)/n
02:40:09 <Sgeo> I see that they get different answers
02:40:17 <Sgeo> But why the first is used instead of the second?
02:40:42 <kfr> Hmm
02:41:10 <kfr> It might show different behaviour in cases of single unusually deviant values
02:41:15 <hagb4rd> do you think it's a good idea to avoid duplicate images by comparing the mc5hash strings of their binary data?
02:41:17 <quintopia> 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 <kfr> I imagine it's something like that
02:41:25 <quintopia> uh
02:41:27 <quintopia> dumb
02:41:37 <quintopia> +[:[];]
02:41:43 <kfr> quintopia what language is that?
02:42:00 <quintopia> kfr: FYB
02:42:00 <nddrylliog> kfr, http://codu.org/eso/fyb
02:42:12 -!- SimonRC has quit (Ping timeout: 265 seconds).
02:42:13 <hagb4rd> <hagb4rd>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 <kfr> Why do so many people in here obsess about that?
02:42:27 <nddrylliog> kfr, not sure, but it looks like fun
02:42:34 <quintopia> sgeo: because that is the definition of the L2-norm
02:42:41 <nddrylliog> hagb4rd, ask the tineye guys :)
02:42:55 <hagb4rd> is this a chan?
02:43:03 <nddrylliog> hagb4rd, nope, a website
02:43:08 <nddrylliog> http://www.tineye.com/
02:43:16 <Sgeo> quintopia, why?
02:43:22 <hagb4rd> hm, i thought you guys are the mathexperts here
02:43:25 <hagb4rd> :>
02:43:26 <kfr> Ah, I started using tineye a while ago
02:43:49 <kfr> hagb4rd: Mathematicians usually don't know crap about hashing and such
02:43:50 -!- SimonRC has joined.
02:44:07 <Lymia> !fyb litterer-2 http://lymia.x10.bz/evil.fyb
02:44:10 <EgoBot> Score for Lymia_litterer-2: 100.0
02:44:13 <Lymia> =D
02:44:35 <quintopia> oh, wait.
02:44:38 <quintopia> : only triggers once
02:44:41 <quintopia> duhhh
02:45:05 <Lymia> quintopia, every thread runs once every tick.
02:45:10 <Lymia> It's not like corewars in that respect.
02:45:26 <quintopia> Lymia: how did you beat your previous tries?
02:45:41 <Lymia> quintopia, pad it until it works.
02:45:43 <Lymia> ;V
02:46:38 <hagb4rd> i just need to avoid duplicate images.. tha hash-solution is not implicitly required, alternative ways are welcome! :>
02:46:55 <quintopia> sgeo: yeah, i can't figure out why they don't use the average distance from mean instead.
02:47:19 <quintopia> instead it's sqrt(variance)
02:47:37 <quintopia> maybe just cuz it's easier to work with
02:47:53 <quintopia> Sgeo:
02:47:54 <nddrylliog> huh
02:47:57 <quintopia> oh ya, that's it
02:48:04 <Sgeo> hm?
02:48:05 <nddrylliog> also because sqrt(x^2) is abs(x)
02:48:05 <nddrylliog> ..
02:48:05 <quintopia> it's because it's algebraically easier to work with
02:48:10 <quintopia> quote the wikipedia: It is algebraically simpler though practically less robust than the average absolute deviation.
02:48:31 <Sgeo> Huh.
02:48:34 <nddrylliog> ah right sorry I didn't read correctly the second definition.
02:50:27 <variable> quintopia,
02:50:46 <variable> http://www.johndcook.com/blog/2010/11/29/where-to-wait-for-an-elevator/ -> explains that in somewhat easy terms
02:50:56 <variable> if I understood correctly what you are looking to understand
02:51:36 <variable> hagb4rd, there are special algorithms that deal with dup. images / music
02:51:47 <hagb4rd> yea.. tell me more
02:51:47 <variable> they are cross format as well - sometimes
02:52:23 <hagb4rd> can you give me an example? or a name?
02:52:32 <hagb4rd> sth to look for?
02:52:51 <Lymia> Gregor, you may want to take a look at the FYB scoreboard.
02:52:52 <Lymia> ;)
02:53:15 <variable> hagb4rd, yeah - hang on a sec
02:53:25 * variable was reading a paper recently - let me find it
02:53:41 <hagb4rd> take your time droog
02:53:58 <hagb4rd> and thanks ;)
02:54:00 <kfr> I am actually somewhat interested in program vs. program stuff but in more complicated environments really, like real time strategy stuff
02:54:02 <variable> droo ?
02:54:10 <kfr> Corewars and such are too dry for my taste
02:54:11 <hagb4rd> nadsat variable
02:54:17 <hagb4rd> clockwork orange?
02:54:42 <hagb4rd> i will build a nadsat compiler someday :P
02:55:37 <kfr> I recently read A Clockwork Orange
02:55:38 <hagb4rd> http://en.wikipedia.org/wiki/Nadsat
02:56:36 <variable> 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 <hagb4rd> ok.. i will look for it.. thank you var :)
03:00:32 <quintopia> kfr: good book. it's just like to movie too :)
03:12:47 <nddrylliog> ndd@naku:~/Dev/fe2/source$ ./parser
03:12:48 <nddrylliog> ((a | ((a % 2) = 0) ) => (a # multiplesOfTwo))
03:13:19 <nddrylliog> 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 <oerjan> ^ul (^^^)((0)(!(1)(!(2)(!(3)(_)))))~*^
05:11:08 <oerjan> ^ul (^^^)((0)(!(1)(!(2)(!(3)(_)))))~*^!S
05:11:09 <fungot> 3
05:11:19 <oerjan> ^ul (^^^^)((0)(!(1)(!(2)(!(3)(_)))))~*^!S
05:11:19 <fungot> ...bad insn!
05:11:32 <oerjan> ^ul ()((0)(!(1)(!(2)(!(3)(_)))))~*^!S
05:11:32 <fungot> 0
05:11:36 <kfr> oerjan what language is taht?
05:11:42 <oerjan> underload
05:14:02 <oerjan> concatenative turing tarpit
05:17:28 <kfr> Sounds toxic
05:18:45 * Sgeo pours a little bf into kfr's drink
05:18:58 <oerjan> http://esolangs.org/wiki/Underload
05:19:40 <oerjan> ^ul (:aSS):aSS
05:19:40 <fungot> (:aSS):aSS
05:26:04 <kfr> I can't come up with anything creative
05:26:19 <kfr> Graph based programming languages are an old hat I bet
05:26:37 <oerjan> well we have Eodermdrome
05:26:52 <oerjan> and i recall there was another but i'm not sure if it's on the wiki
05:27:31 <oerjan> something based on kolmogorov machines iirc
05:29:19 <kfr> Haha that sounds exotic
05:29:58 <kfr> Or programming languages which are essentially based on replacing strings hmm
05:30:06 <kfr> Haha grammars hmm
05:30:09 <oerjan> well kolmogorov was russian
05:30:17 <kfr> I'm not talking about the name :p
05:30:21 <kfr> I've just never heard of it before
05:30:48 <oerjan> 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 <oerjan> i didn't make any of the languages but i made several of the programs
05:32:37 <Lymia> !fyb crasher ::;;
05:33:18 <oerjan> oh also thue
05:33:38 <Lymia> I think I broke it.
05:33:40 <oerjan> (i didn't do anything in that but it's perhaps the oldest string-replacing esolang)
05:33:59 <oerjan> !echo hi
05:34:01 <EgoBot> hi
05:34:18 <oerjan> Lymia: EgoBot sometimes times out, especially the first time it's used in a while
05:34:30 <oerjan> same with HackEgo
05:34:32 <Lymia> !fyb nothing +[]
05:34:39 <Lymia> Really?
05:34:44 <oerjan> (they're both Gregor's bots)
05:35:11 <oerjan> well i wouldn't exactly _exclude_ bugs, either...
05:35:21 <pikhq> Okay, it's definitely "really fucking cold" out now.
05:35:25 <oerjan> !haskell print "hi"
05:35:27 <kfr> I remember, we had to implement division in a string replacement language
05:35:32 <EgoBot> "hi"
05:35:32 <kfr> At university
05:35:34 <kfr> It really sucked :[
05:35:40 <pikhq> Tomorrow, we are expecting a high of -5 °F (-20 °C).
05:35:46 <Lymia> kfr, Eh?
05:35:47 <oerjan> kfr: heh
05:36:30 <Lymia> ((:::::)+):* -> $1
05:36:34 <oerjan> kfr: i made /// print numbers once i think, that requires dividing by 10 at least
05:36:34 <Lymia> ::::: -> :
05:36:53 <Lymia> Still, doing it as part of a larger program sounds nasty.
05:37:50 <oerjan> Gregor seems to have been idle since yesterday
05:38:45 <kfr> Writing a self hosting compiler in that would be very challenging
05:40:07 <kfr> (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 <kfr> Actually I'm more interested in research languages, I think, not just bizarre/minimalist stuff
05:42:58 <pikhq> Eh, 'sokay. I think I last esolanged over a year ago.
05:44:11 <kfr> 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 <oerjan> GET OUTTA HERE
05:46:53 <kfr> I figured the Haskeller would frown upon that :/
05:47:04 <oerjan> i'm the haskeller now?
05:47:08 <kfr> Yes.
05:47:36 <kfr> "The best programming languages have no compilers" - #haskell
05:47:56 <Sgeo> My favorite language is DWIM
05:48:01 <oerjan> ...that's rather strange to connect with haskell...
05:52:24 <EgoBot> Score for Lymia_nothing: 0.9
05:52:24 <EgoBot> Score for Lymia_crasher: 0.9
05:52:44 <oerjan> SOMEONE IS SLOW TODAY
05:52:57 <kfr> Sgeo: DWIM = ?
05:53:05 <Sgeo> Do What I Mean
05:53:23 <Sgeo> [Note: If someone used that abbreviation for something else, I don't know about it]
06:18:18 <kfr> 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 <kfr> That must be a nightmare
06:24:54 <Sgeo> Doesn't ATS supposedly do that? Or am I utterly clueless?
06:25:23 <kfr> http://en.wikipedia.org/wiki/ATS_%28programming_language%29 :o
06:26:06 <kfr> That's interesting
06:26:06 <kfr> http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php
06:26:11 <kfr> I remember it from these games
06:26:22 <kfr> It actually ranked third, after C++
06:26:26 <kfr> Very impressive
06:26:33 <kfr> And I had never even heard of it before
06:30:52 <pikhq> kfr: By now about half of us are Haskellers, I think.
06:31:21 <kfr> Yeah I'm slowly turning into a Haskelling language fascist, too
06:31:28 <kfr> My mate warned me about that
06:32:08 <Sgeo> ATS tutorial gives me a headache
06:32:13 <kfr> Haha
06:32:19 <Sgeo> Maybe I should look for an easier tutorial
06:32:29 <kfr> I have no idea what unboxed and boxed allocation are
06:33:45 <Sgeo> elliott is going to kill me.
06:35:10 -!- azaq23 has quit (Quit: Leaving.).
06:35:16 <oerjan> boxed = use a pointer to the representation, unboxed = embed the representation directly. approximately.
06:36:08 <oerjan> in haskell boxed also implies the possibility of a lazy thunk to be evaluated
06:36:40 <kfr> Ah, I see
06:37:27 <pikhq> Unboxed is essentially only there for optimisation purposes.
06:39:34 <copumpkin> yeah, and they treat it that way
06:39:37 <oerjan> 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 <copumpkin> you never specify whether it's unboxed _within_ the language
06:39:47 <copumpkin> you specify whether it's strict or not
06:40:07 <copumpkin> the fact that that can be unboxed if it's monomorphic and matches some simple is another issue
06:40:10 <copumpkin> simple rules
06:40:35 <copumpkin> (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 <kfr> Maybe I've been looking at this the wrong way
06:48:19 <kfr> Maybe it's not the core features of a language that make it attractive
06:48:41 <kfr> 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 <Ilari> Uh, oh... "APNIC expects normal allocations to continue for a further three to six months."
06:50:14 <kfr> Perhaps the notion of writing code in a regular plain text editor is archaic
06:52:48 -!- asiekierka has joined.
06:56:09 <pikhq> Ilari: Well, yes.
06:56:58 <Ilari> Six months from now is turn of July to August...
06:57:53 <Ilari> Current depletion estimate for APNIC is end of September...
07:00:13 <Ilari> 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 <kfr> Aren't the big IP block holders just going to gradually sell of theirs?
07:00:57 <kfr> And the people will buy it
07:02:41 <pikhq> kfr: Ooooh, that'll buy us another few months!
07:02:43 <pikhq> "Yay".
07:03:05 <kfr> pikhq there are at least 4-15 of /8s of which only fractions are really used afaik?
07:03:14 <kfr> Owned by universities in the US
07:03:17 <kfr> And AT&T and such?
07:03:36 <kfr> Some of them already started giving up some of the space
07:03:38 <pikhq> kfr: We chew through 2 of them a month.
07:03:43 <kfr> 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 <kfr> So people can run Linux 0days using cutting edge technology
07:04:55 <kfr> :[
07:06:56 -!- poiuy_qwert has quit (Ping timeout: 265 seconds).
07:08:14 -!- poiuy_qwert has joined.
07:09:32 <Ilari> Okay, I expect IANA IPv4 pool to finally hit zero on the day after tomorrow.
07:20:43 <pikhq> Ilari: Do those models account for APNIC holding onto a single /8 for essentially emergency use?
07:21:01 <fizzie> 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 <Ilari> 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 <Ilari> It is currently at 5x/8 all reserved (one /8 going to each RIR...)
08:09:13 <Ilari> (IANA IPv4 pool that is).
08:26:48 <Ilari> Heh... Now there are notices about "Significant Announcement" regarding IPv4 (3rd February, 1430Z)... Can it get any more obvious?
08:44:21 <fizzie> Maybe they'll do a surprise announcement and say that they're inverting all the bits in allocated network addresses?
08:44:40 <fizzie> 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 <Ilari> Selling off has two bad sides: 1) Expensive, 2) DFZ routing table gets hit by a fragmentation grenade...
09:37:02 <kfr> Ilari: DFZ = ?
09:37:11 <Ilari> Default-Free Zone
09:37:45 <fizzie> (1) is only a bad side if you're the one doing the buying, not the selling.
09:37:48 <Ilari> That is, no default route.
09:38:30 <kfr> They're going to sell them for like $500-1000 per IPv4 in the end
09:38:36 <kfr> *per address
09:40:27 <Ilari> That would make a /16 cost somewhere between $30M to $70M... That's a lot.
09:40:32 <fizzie> Sell them on the black market, under the table. "Psst, hey, you there; wanna buy some good-quality uncut IPv4 subnets?"
09:41:04 <fizzie> "Don't buy your stuff from him; his /20s are actually non-contiguous /24s."
09:41:52 <Ilari> Well, buying form black market is risky. And I think most RIRs have policies allowing transfers...
09:43:12 <Ilari> At least ARIN definitely does.
09:43:45 <fizzie> "What a ripoff, the guy sold me a /16 from the 10.0.0.0/8 block!"
09:44:21 <Ilari> Well, this IPv4 exhaustion thing is going to be gigantic clusterfuck (to put it mildly)...
09:44:25 <kfr> fizzie: Hahaha
09:44:32 <kfr> 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 <oerjan> ^ul (:a~*):a~*^^^SS
10:01:50 <fungot> (:a~*):a~* ...out of stack!
10:02:13 <oerjan> ^ul (:a~*):^^^^SS
10:02:13 <fungot> (:a~*):a~* ...out of stack!
10:05:08 <oerjan> ^ul (:a~*):^((~)~a*):*^SS
10:05:08 <fungot> ~(~((:a~*):a~*)) ...out of stack!
10:10:29 -!- oerjan has quit (Quit: leaving).
10:17:48 -!- evincar has joined.
10:18:09 <evincar> Hello all.
10:31:32 -!- impomatic has joined.
10:31:36 <impomatic> Hi :-)
10:31:39 <impomatic> Has anyone got access to issues of BYTE magazine 1978? :-)
10:32:09 <evincar> impomatic: Well, I haven't, and nobody else seems to be around at this hour.
10:32:38 <kfr> Why wouldn't they be :o
10:33:06 <kfr> It's the middle of the day for like 2 billion people
10:34:55 <evincar> kfr: Nobody greeted me. I was complaining. :P
10:35:05 <kfr> Greetings are so archaic
10:35:13 <kfr> Usually I intentionally ignore them online
10:35:41 <evincar> Eh, consider it a ping to see if anyone who knows me is active.
10:36:18 <fizzie> 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 <fizzie> 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 <fizzie> 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 <impomatic> Fizzie: a reference to Core War 6 years before A. K. Dewdney "invented" it :-)
10:41:56 <impomatic> 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 <fizzie> 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 <impomatic> 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 <ais523> quintopia: ooh, I like ETAS, I'll have to look at it in more detail when I'm less busy
11:03:24 <ais523> ah, the IPv4 allocation happened
11:03:29 <evincar> ais523: I've got another bigger-than-I-can-chew idea in the works since I last showed up here.
11:04:14 <ais523> hmm, what is it?
11:05:29 <evincar> A model of computation based on time, which generalises very well to highly parallel and (hopefully) quantum hardware.
11:07:05 <evincar> I haven't formalised it, but it's theoretically sound and possible to implement.
11:07:22 <evincar> Though once again I'm having difficulty figuring out how to actually do so.
11:09:00 <ais523> it sounds like that may end up giving you as much trouble as Feather gives me
11:09:32 <evincar> 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 <evincar> Refresh my memory about Feather.
11:10:10 <ais523> gah, don't make me!
11:10:19 <evincar> Elevator pitch, come on.
11:10:24 <ais523> I think there's a page on Esolang now that we can refer people to (http://esolangs.org/wiki/Feather)
11:10:47 <evincar> How...helpful.
11:11:01 <ais523> but basically, it's an esolang based around the command "retroactively change the value a variable had when it was created"
11:11:19 <evincar> Sounds interesting.
11:11:24 -!- BeholdMyGlory has quit (Remote host closed the connection).
11:11:30 <ais523> 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 <evincar> That's sort of how my idea works...though not exactly.
11:11:51 <ais523> nobody really understands Feather, not even me
11:11:58 <ais523> so it's not surprising that other people's ideas are never quite the same
11:12:14 <evincar> 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 <evincar> Events occur, and effects may result, and generate further events, ad whateverum.
11:13:02 <evincar> Effects are evaluated lazily, so nothing happens until something depends on it.
11:13:22 <evincar> Which keeps the language purely functional, and lets you start jumping around and forking the timeline however you please.
11:13:25 <ais523> ouch, that's confusing...
11:13:35 <ais523> but sounds like a perfect basis for an esolang
11:13:37 <evincar> It makes backtracking and parallel algorithms sexier than you can possibly imagine.
11:13:45 <evincar> It's actually quite useful...
11:14:08 <ais523> yep, it sounds it
11:14:13 <evincar> ...not to say that an esolang can't be useful, of course.
11:14:24 <ais523> they're better when they are, but that tends not to happen very often
11:14:37 <evincar> But there are some other really beautiful things about it.
11:14:41 <kfr> What's the significance of the lemons in the Esolangs logo?
11:14:54 <ais523> 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 <ais523> kfr: they're actually limes, and I think it's just an image Graue grabbed at random
11:15:45 <evincar> 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 <evincar> 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 <ais523> 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 <Ilari> There is all sorts of fun with complexity classes. Such as R being impossible to construct explicitly...
11:17:18 <ais523> 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 <evincar> Well, you can simulate an imperative style in this, it's just less efficient.
11:17:23 <ais523> indeed
11:17:33 <ais523> but I meant, sort of, meta-functional vs. meta-imperative
11:17:34 <evincar> Just say "effect: x is now 0".
11:17:43 <evincar> Right.
11:17:47 <ais523> it's hard to explain, because all the terminology required for time travel doesn't yet exist in English
11:17:51 <ais523> or probably any other language
11:18:32 <Ilari> Yeah, languages tend to have terminology for what's useful and not much terminology for things that are not useful...
11:18:54 <evincar> Ilari: indeed.
11:20:16 <evincar> 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 <Ilari> 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 <evincar> 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 <evincar> Ah, to live in simpler times. :/
11:22:16 <evincar> ais523: Funny story, though, you know how I figured all of this out?
11:22:29 <ais523> no, I'd have to guess and I'm quite bad at guessing
11:22:59 <evincar> Drank some sake and watched Primer.
11:23:08 <evincar> Suddenly it all made sense. :P
11:24:02 <evincar> 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 <impomatic> fizzie: the best I can find is a tiny extract on Google books http://bit.ly/eQTjVv :-(
11:24:27 <Ilari> And useless things don't tend to have words at all... Like diabetes or heart disease for hunter-gatherer populations...
11:26:11 <evincar> 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 <evincar> The need for a single-word term only arises if it's prevalent, though.
11:26:44 <Ilari> 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 <Ilari> 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 <fizzie> impomatic: Found it.
11:30:29 <evincar> Oh, absolutely. We have the luxury of heart disease because we live in post-industrial luxury.
11:30:31 <fizzie> impomatic: It's not much more than that, really; it's a one-paragraph mention.
11:30:47 <evincar> 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 <fizzie> In the July 1978 issue (vol 3, num 7).
11:31:01 <evincar> Or fisher.
11:31:31 <fizzie> Pretty lucky that our library had it: the 1978 folder is inexplicably missing the Feb, Mar and Apr issues.
11:31:43 <fizzie> I'll photograph the article in question.
11:31:44 <Ilari> And lifespan doesn't explain the difference in heart disesase. Oh, and early agriculturalist populations were the unhealthiest populations ever seen...
11:31:49 <evincar> 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 <fizzie> 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 <evincar> 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 <evincar> 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 <Ilari> Knowledgeable archiologist can tell apart remains of argriculturalists and hunter-gatherers with one look at the skull...
11:36:30 <evincar> 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 <Ilari> 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 <evincar> Now, do I take a nap before class and risk missing it, or stay awake, not accomplishing a whole lot?
11:41:30 <Ilari> 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 <Ilari> Additionally, agriculture with grains really fscks up the environment...
11:43:20 <evincar> 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 <evincar> Yeah, early farming techniques sucked as well, because some knowledge was simply not available.
11:44:59 <evincar> Alright, I'm going to risk not making it to class by getting into bed. :P
11:45:17 <evincar> 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 <fizzie> 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 <impomatic> Grrrr.... clicking links in Chatzilla always causes a crash :-(
12:02:47 <impomatic> Thanks Fizzie, that's exactly what I'm after. :-)
12:03:41 <fizzie> 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 <impomatic> Did you notice which issue it's in?
12:06:06 <fizzie> <fizzie> In the July 1978 issue (vol 3, num 7).
12:07:03 <impomatic> 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 <ais523> (it's an INTERCAL addition without using the stdlib, I noticed a way to save another character)
12:48:54 <Phantom_Hoover> ais523, your gender is not ambiguous here.
12:49:11 <ais523> 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 <ais523> hmm, apparently someone returned 45/8
12:53:51 <ais523> but to ARIN, not IANA
12:53:54 <ais523> so IANA is still out
12:55:53 <fizzie> "Interop Show Network"
12:56:32 <fizzie> Yeah, it might not make sense to have a /8 specifically for their trade shows.
12:57:36 <fizzie> 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 <Ilari> 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 <fizzie> They're going to announce what they're going to have for lunch next week.
13:00:25 <Ilari> ... Such as announcing full IANA depletion.
13:00:35 <ais523> yep, it's bound to be full IANA depletion
13:00:48 <ais523> 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 <Ilari> 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 <fizzie> 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 <fizzie> "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 <fizzie> 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 <Ilari> IIRC, ARIN policies do change...
13:09:13 -!- Lymia__ has quit (Ping timeout: 240 seconds).
13:10:54 <fizzie> "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 <fizzie> Well, they do that immediately, I guess.
13:11:23 <fizzie> ("Examples of such needs include: IPv4 addresses for key dual stack DNS servers, and NAT-PT or NAT464 translators.")
13:15:17 <fizzie> Here's a humorous-in-retrospect RIPE position statement from October 2007:
13:15:21 <fizzie> "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 <fizzie> Yeah, that might have been a good idea.
13:16:12 <ais523> 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 <fizzie> Yes. Though there were quite some requirements for qualifying to get addresses from that block.
13:19:24 <fizzie> (And you can only get something between /24 .. /28 out of that.)
13:20:31 <fizzie> 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 <Phantom_Hoover> God, Headshoots is even funnier than Boatmurdered.
13:21:53 <ais523> Boatmurdered has a better name, though
13:22:33 <ais523> also, I found Headshoots quite hard to follow
13:22:46 <ais523> although I agree, it's hilarious
13:23:11 <Phantom_Hoover> I love the Room Outside Of Space.
13:25:46 <ais523> hmm, apparently Java is also crashed by Double.parseDouble("2.2250738585072012e-308")
13:26:15 <ais523> for a related reason
13:26:19 -!- asiekierka has joined.
13:26:20 <ais523> (the bug was first reported in PHP)
13:27:21 <Phantom_Hoover> (Headshoots is also way more awe-inspiring than Boatmurdered.)
13:27:24 <fizzie> ais523: Yes, and the compiler will hang if you try to compile "double d = 2.2250738585072012e-308;" and print it out.
13:27:32 <ais523> fizzie: indeed
13:27:47 <ais523> (the number in question is DBL_MIN with one digit changed, IIRC)
13:28:08 <fizzie> I guess the compiler-hanging problem has less denial-of-servicey implications, but still.
13:28:22 <ais523> ah, PHP's hang happens with the last digit as 1, rather than 2
13:28:37 <fizzie> It's the same bug "the other way around", they say.
13:28:46 <fizzie> "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 <kfr> ais523 lol yeah we just went over this in #haskell
13:29:07 <ais523> DBL_MIN apparently ends with a 4
13:29:20 <ais523> so it's definitely an edge case, but who'd have thought of testing it?
13:31:41 <ais523> OpenOffice.org Calc seems to be OK with similar numbers (haven't updated to LibreOffice yet)
13:31:43 <ais523> I wonder about Excel?
13:38:41 <Phantom_Hoover> LibreOffice?
13:40:31 -!- ais523_ has joined.
13:42:13 <ais523_> <myrryr> 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 <Gregor> How's IPv4?
13:57:35 <fizzie> Gregor: Feeling exhausted, I believe.
13:57:45 <fizzie> (Maybe not quite.)
13:58:27 <fizzie> 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 <fizzie> (They've invited journalists and everything.)
13:58:47 <fizzie> (Perhaps there will even be cake.)
14:06:51 <ais523_> yep, the final allocation has been triggered
14:06:59 <ais523_> but hasn't happened yet, so that they can have a press conference about it when they do
14:07:21 <ais523_> 45/8 was returned to ARIN, IIRC, which gives them an extra block to work with
14:07:27 <ais523_> 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 <Ilari> 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 <fizzie> Is that thing in bytes or numbers of routes?
14:23:37 <fizzie> $ cat /proc/sys/net/ipv4/route/max_size
14:23:37 <fizzie> 1048576
14:23:51 <fizzie> My table is smaller. :v
14:24:05 <fizzie> s#v#/#
14:25:18 <Ilari> Maximum number of routes...
14:25:35 <Ilari> You presumably have less RAM...
14:28:34 <Ilari> 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 <Ilari> Remember it doesn't take a lot of major sites switching to radically slash the IPv4 traffic.
14:30:29 <Ilari> (assuming IPv6 is available)
14:30:49 <fizzie> There's 2G of RAM on that particular box.
14:31:02 -!- Lymia__ has joined.
14:31:40 <Ilari> This box has 8GB...
14:32:32 <fizzie> Looks like a linear dependency. :p
14:34:23 -!- Lymia_ has quit (Ping timeout: 240 seconds).
14:35:51 <Ilari> 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 <fizzie> Ilari: My phone says 327y8 routes for 256M of memory.
14:39:03 <fizzie> That's 8 KiB per route too.
14:39:10 <ais523_> what's DFZ?
14:39:16 <Ilari> Default-Free Zone.
14:39:39 <ais523_> oh, an area where you need an explicit route for every prefix?
14:39:49 <ais523_> ouch
14:40:48 <Ilari> Yes.
14:42:53 <Ilari> Using PC as router might be slow, but it could handle insane number of routes at once...
14:44:52 <ais523_> the really expensive routers that the backbone use are pure custom-built hardware that can do the routing in parallel
14:45:08 <ais523_> 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 <fizzie> 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 <fizzie> Still, there's interrupt overhead from a separate NIC and so on.
14:54:50 <fizzie> 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 <Ilari> Ah yeah, paging... x64 got rid of (most of) segmentation but still supports paging...
15:06:06 <fizzie> http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=752162&tag=1 is I think what I read.
15:06:33 <fizzie> It's an old paper, from '99.
15:08:36 <fizzie> Pentium II and Linux 2.0.30, how quaint now. :p
15:09:55 <fizzie> But it has 133 subsequent citations, I think there was some interesting stuff there too.
15:10:39 <fizzie> 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 <Phantom_Hoover> The ending of Headshoots is quite possibly the most awesomely bizarre thing ever.
15:32:55 <ais523_> it ended?
15:32:59 <ais523_> you'll have to remind me of what happened
15:33:00 <Phantom_Hoover> 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 <ais523_> 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 <elliott> hmm, ais523_ plays DF?
15:34:01 <ais523_> elliott: no
15:34:01 <elliott> or just knows about it?
15:34:11 <ais523_> but I tend to percolate a lot of info about that sort of thing
15:34:15 <Phantom_Hoover> ais523_, yeah, that wasn't even halfway through.
15:34:28 <elliott> ais523_: I can explain Minecraft perfectly to you, then:
15:34:38 <Phantom_Hoover> By the end HolisticDetective and Nemo could have each taken on Cthulhu and won hands-down.
15:35:06 <ais523_> 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 <elliott> 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 <elliott> ha
15:35:19 <elliott> semi-snap
15:35:27 <ais523_> I've percolated quite a lot of Minecraft, too
15:35:31 <Phantom_Hoover> 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 <ais523_> elliott: meanwhile, I'm laughing at Java having almost the same bug as PHP
15:36:20 <elliott> ais523_: the floating point stuff?
15:36:20 <ais523_> and showing all my students, who all had the same reaction more or less
15:36:23 <ais523_> elliott: yes
15:36:24 <Phantom_Hoover> http://lparchive.org/Dwarf-Fortress-Headshoots/Update%2079/ is an analysis of their stats, which are apparently all off the scale.
15:36:31 <elliott> ais523_: let's be fair, that's a very subtle bug
15:36:38 <ais523_> PHP crashes if you change the last digit of DBL_MIN from 4 to 1
15:36:41 <elliott> ais523_: it was quite arguably /gcc's/ bug
15:36:43 <ais523_> Java crashes if you change it from 4 to 2
15:36:45 <elliott> oh
15:36:49 <elliott> ais523_: I meant the recent one
15:36:53 <elliott> where parsing a float could hang PHP
15:36:57 <ais523_> elliott: I do mean that one
15:36:59 <ais523_> it's a double, not a float
15:37:00 <elliott> ah
15:37:20 <ais523_> DBL_MIN is 2.2250738585072014e-308; PHP hangs on 2.2250738585072011e-308, Java hangs on 2.2250738585072012e-308
15:37:29 <elliott> 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 <ais523_> and people are finding other applications that are crashed by similar numberlike strings
15:37:34 <elliott> and volatile variables
15:37:40 <elliott> and probably gcc's fault
15:37:52 <Phantom_Hoover> I mean, I think Headshoots might be the closest thing to victory you can get in DF.
15:38:00 <ais523_> 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 <ais523_> I'd forgive them were it not for that
15:38:18 <elliott> ais523_: yes, but /it's not meant to/
15:38:23 <elliott> ais523_: it was a gcc "optimisation"
15:38:27 <elliott> ais523_: normally, the code executed in SSE
15:38:31 <ais523_> it's not even gcc's fault
15:38:33 <elliott> ais523_: but gcc decided to be Smart and moved one to x87
15:38:43 <elliott> ais523_: optimisations changing behaviour == lol
15:39:17 <ais523_> elliott: err, no? optimising changing undefined behaviour == expected
15:39:38 <ais523_> luckily C99 defined it, which gives gcc scope for working out what should actually happen
15:39:46 <elliott> ais523_: well, then it's the code's fault
15:39:52 <ais523_> the issue with C89 is that gcc can't really fix the bug because the intended semantics are completely unclear
15:39:52 <elliott> and the PHP devs didn't write it
15:40:33 <ais523_> elliott: I'd agree, except for the code saying which archs it works on, with x87 not being one of them
15:40:49 <kfr> PHP is the most impressive esolang I've seen so far
15:41:02 <elliott> ais523_: except it /didn't/ run on x87 for the mostpart
15:43:52 <Phantom_Hoover> kfr, clearly you haven't seen M4.
15:44:02 <kfr> What's that?
15:44:17 <Phantom_Hoover> Google it.
15:44:22 <Phantom_Hoover> YOUR MIND WILL BE BLOWN
15:44:33 <Phantom_Hoover> i.e. CPP for the terminally insane.
15:45:15 <kfr> http://en.wikipedia.org/wiki/M4_%28computer_language%29
15:45:58 <Phantom_Hoover> You should eschew CPP for it.
15:47:18 <elliott> 02:32:53 <kfr> What are those crazy programming languages where the correctness of the code is part of defining the algorithm?
15:47:19 <elliott> 02:33:15 <kfr> I think I recall some three letter initialism one where quicksort is like 150+ lines
15:47:19 <elliott> 02:33:26 <kfr> It may be related to formal proof systems
15:47:19 <elliott> 02:35:04 <kfr> I should probably look into Agda/Coq and such at some point, too
15:47:19 <elliott> 02:35:09 <kfr> Learn about dependent typs
15:47:20 <elliott> 02:35:10 <kfr> types*
15:47:34 <elliott> (1) "Crazy"; well, computer proof systems, but more generally, languages with dependent types.
15:47:40 <elliott> (2) ATS, and _quicksort_ isn't 150 lines.
15:47:57 <elliott> _Quicksort that returns a proof that the array is sorted_ is something like that (_with_ whitespace and big comment block).
15:48:03 <elliott> The latter being something you can't even do in most languages.
15:48:15 <kfr> Wow, you're an avid log reader
15:48:29 <elliott> A lot of people here are, they've just been quiet lately.
15:48:35 * elliott waves to ais523_ and oerjan
15:48:41 <Phantom_Hoover> kfr, yesyesyes, we know you think that logs are The Man trying to keep you down.
15:48:46 <elliott> (3) Yes. (4) Agda is quite similar to ATS, sort of, at the core, but less applied. Coq is interesting.
15:49:35 <Phantom_Hoover> (Agda is an experiment in dependent typing under the delusion that it is a proof assistant.)
15:50:37 <kfr> o_O
15:50:39 <elliott> Phantom_Hoover: It isn't under that delusion.
15:50:46 <elliott> Idiots are under that delusion.
15:51:17 <Phantom_Hoover> Idiots a.k.a. most of its user base.
15:51:35 <elliott> Phantom_Hoover: Not really.
15:51:43 <elliott> Very few people use Agda.
15:51:50 <elliott> Those who do are pretty damn smart.
15:51:50 <Phantom_Hoover> A large part?
15:53:38 <kfr> Damn, Agda users are even more elitist than the Haskell ones?
15:53:42 <kfr> Now I need to switch...
15:53:44 <kfr> Curses.
15:53:51 <elliott> Phantom_Hoover: Name an idiot that uses Agda.
15:53:55 <elliott> kfr: I don't use Agda.
15:54:08 <kfr> elliott: Well I could do it
15:54:11 <Phantom_Hoover> Haskell users are elitist now?
15:54:17 <kfr> Phantom_Hoover yes
15:54:32 <elliott> 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 <elliott> Phantom_Hoover has turned my off-hand remark into the Church of Anti-Agda. :p
15:55:03 <Phantom_Hoover> elliott, it is called a theorem prover in many, many places.
15:55:16 <elliott> Phantom_Hoover: Links. I very much doubt those calling it so use it.
15:55:23 <Phantom_Hoover> See: the WP article.
15:55:42 <elliott> I can link you to ten crap Wikipedia articles. :p
15:55:49 <elliott> (Related to computing.)
15:56:30 <kfr> "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 <kfr> 2007
15:56:32 <kfr> WP = ?
15:56:47 <elliott> Wikipedia.
15:59:10 <elliott> Phantom_Hoover: http://twitter.com/pigworker/status/25356492341252096 Oh noes an Agda user, teaching no less! Probably an idiot!
15:59:39 <kfr> Of course he's an idiot
15:59:43 <kfr> He uses Twitter
15:59:46 <Phantom_Hoover> That's Conor Whatthehellishislastname.
15:59:51 <elliott> kfr: /facepalm
15:59:55 <Phantom_Hoover> OH WAIT
15:59:56 <kfr> elliott indeed
16:00:00 <Phantom_Hoover> IT SAYS ON THE PAGE
16:00:06 <elliott> Phantom_Hoover: OH WOW
16:00:08 <elliott> WHAT TECHNOLOGY
16:00:09 <kfr> Having a Twitter account -> /facepalm
16:00:29 <elliott> kfr: Please enjoy your /ignore responsibly.
16:00:37 <elliott> 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 <elliott> Also:
16:00:54 <Phantom_Hoover> kfr, well, you probably think he's an idiot because he is an IVORY TOWER ELITIST.
16:01:02 <elliott> <TacticalGrace> @edwinbrady @larrytheliquid I was cautious about using Unicode in Agda at first, but I'm completely sold on it now.
16:01:05 <elliott> <pigworker> @TacticalGrace The editor I use replaces all unicode symbols by blanks. I recommend it.
16:01:11 <elliott> <TacticalGrace> @pigworker That makes for some nice reading of the standard library :P
16:01:16 <elliott> <pigworker> @TacticalGrace It reminds me of Zaphod Beeblebrox's peril-sensitive sunglasses.
16:01:33 <Phantom_Hoover> XD
16:03:47 <kfr> Aww, Unicode hater
16:06:53 <Mathnerd314> well... unicode itself isn't so bad. it's just that nobody uses it.
16:07:26 <elliott> ...what.
16:07:30 <elliott> Everybody uses Unicode.
16:07:39 <kfr> Uhm I use Unicode on a daily basis
16:07:57 <Phantom_Hoover> kfr, the hate is not for Unicode per se, but for Agda's attitude towards it.
16:08:06 <elliott> There's no hate there.
16:08:08 <elliott> Sheesh.
16:08:09 <Ilari> IPv6 fun: If you get stale SLAAC addresses, there doesn't seem to be any (obvious) good way to clear them...
16:08:13 <kfr> 你是个白痴>->
16:08:16 <elliott> Phantom_Hoover: You are waaay to ideological about this :P
16:08:23 <ais523_> [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 <Phantom_Hoover> elliott, I am rephrasing what kfr said.
16:08:32 <elliott> Phantom_Hoover: O.
16:08:33 <elliott> *Oh.
16:08:38 <Ilari> Doing ip -6 addr del on them would be obvious way, but that doesn't work.
16:08:48 <kfr> Phantom_Hoover that is not what I meant though :|
16:08:51 <kfr> Whatever
16:10:00 <ais523_> did esolangs invent the idea of using Unicode for commands all over the place?
16:10:10 <kfr> Doubt it
16:10:10 <ais523_> (the idea originally came from APL, but Unicode wasn't around at the time so it couldn't have used it)
16:10:25 <kfr> Haha yeah APL somewhat inspired me there
16:10:44 <kfr> I already thought of it before I had ever even heard of APL though
16:10:53 <kfr> I thought nobody had done it before
16:10:57 <kfr> then somebody showed APL to me
16:11:05 -!- BeholdMyGlory has joined.
16:11:17 <ais523_> elliott: I'm not convinced the Java floating point crash is x87-related at all
16:11:24 <elliott> possibly not
16:11:33 <ais523_> especially as it seems to happen on 64-bit processors too, unlike the PHP crash
16:12:01 <kfr> Well, that part of the ISA is the same on AMD64, no?
16:12:12 <ais523_> 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 <kfr> LOL.
16:12:45 <ais523_> (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 <kfr> That PHP overlord originally claimed it was a bug in gcc, right?
16:13:07 <elliott> ais523_: are you /sure/ they've warned their boss? I'd be pretty scared to...
16:13:16 <ais523_> elliott: no
16:13:20 <elliott> Management doesn't exactly have a stunning track record of being understanding of those who discover vulnerabilities.
16:13:45 <ais523_> 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 <ais523_> and management would be very unlikely to blame that on me unless they were in to shooting the messenger
16:14:17 <ais523_> perhaps you'd have to be careful in how you phrased your report to them
16:14:18 <elliott> ais523_: that seems terribly _optimistic_ to me
16:14:45 <ais523_> > read "2.2250738585072012e-308" :: Double
16:14:46 <lambdabot> 2.2250738585072014e-308
16:15:01 <kfr> Haha yeah we already did that in #haskell earlier today
16:15:10 <ais523_> > read "2.2250738585072011e-308" :: Double
16:15:11 <lambdabot> 2.225073858507201e-308
16:15:17 <elliott> 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 <ais523_> really, you'd need to try all possible last digits
16:15:29 <kfr> > text $ (\x -> x++' ':show x) "> text $ (\\x -> x++' ':show x)"
16:15:30 <lambdabot> > text $ (\x -> x++' ':show x) "> text $ (\\x -> x++' ':show x)"
16:15:41 <elliott> don't be silly; Haskell is perfect
16:15:43 <elliott> it can't have bugs!
16:15:53 <ais523_> elliott: actually working for a company, you probably have more leeway, especially if your job is to find bugs
16:16:17 <ais523_> companies tend to be more understanding when their own employees do it then when some random person emails them
16:16:20 <elliott> ais523_: oh, if your job is to find bugs, sure
16:16:24 <elliott> but if you're just some random undering...
16:16:27 <elliott> *underling
16:16:31 <elliott> I guess I'm cynical :)
16:16:48 <ais523_> 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 <ais523_> s/create bugs/write code/
16:17:38 <ais523_> incidentally, use of show, repr, or similar constructs that languages have for escaping strings makes writing quines much easier
16:17:39 <elliott> true
16:17:46 <elliott> I prefer "create bugs"
16:18:39 <ais523_> :t text
16:18:40 <lambdabot> String -> Doc
16:18:48 <ais523_> Doc?
16:18:59 <ais523_> normally :t gives a good idea of what a function does, but not in this case
16:19:24 <elliott> @hoogle Doc
16:19:25 <lambdabot> Text.PrettyPrint.HughesPJ data Doc
16:19:25 <lambdabot> Language.Haskell.TH.PprLib type Doc = PprM Doc
16:19:25 <lambdabot> System.Directory getUserDocumentsDirectory :: IO FilePath
16:19:29 <elliott> ais523_: I think Doc is from prettyprinting
16:19:32 <ais523_> oh, it presumably makes lambdabot not quote its output
16:19:38 <elliott> no, it's more general than that
16:19:44 <elliott> that's just the Show instance of Doc that is doing that, I think
16:19:47 <elliott> > rparen
16:19:48 <lambdabot> )
16:19:49 <ais523_> elliott: yes, I mean that's what it's being used for in this situation
16:19:52 <elliott> > int 3
16:19:53 <lambdabot> 3
16:19:57 <ais523_> > "abc"
16:19:57 <elliott> > brackets (text "af")
16:19:58 <lambdabot> "abc"
16:19:58 <lambdabot> [af]
16:20:04 <elliott> > text "a" <> text "b"
16:20:05 <lambdabot> ab
16:20:07 <elliott> > text "a" <+> text "b"
16:20:08 <lambdabot> Ambiguous occurrence `<+>'
16:20:08 <lambdabot> It could refer to either `Control.Arrow.<+>', i...
16:20:13 <elliott> > text "a" $$ text "b"
16:20:13 <lambdabot> a
16:20:13 <lambdabot> b
16:20:16 <elliott> etc.
16:20:18 <elliott> ooh
16:20:23 <elliott> > text "a" $$ text "b" $$ text "c"
16:20:24 <lambdabot> a
16:20:24 <lambdabot> b
16:20:24 <lambdabot> c
16:20:30 <ais523_> of course its purpose isn't just to make lambdabot unescape
16:20:34 <elliott> > fix (text "a" $$)
16:20:35 <ais523_> but that's why it's involved in the lambdabot quine
16:20:38 <lambdabot> mueval-core: Time limit exceeded
16:20:41 <elliott> :(
16:20:44 <elliott> :t iterate
16:20:45 <lambdabot> forall a. (a -> a) -> a -> [a]
16:20:52 <ais523_> elliott: stop creating botloops
16:20:56 <ais523_> especially within a single bot
16:21:03 <elliott> ais523_: botloops are a channel tradition TYVM
16:21:04 <elliott> > (iterate (text "a" $$) (text "a")) !! 10
16:21:04 <lambdabot> a
16:21:05 <lambdabot> a
16:21:05 <lambdabot> a
16:21:05 <lambdabot> a
16:21:05 <lambdabot> a
16:21:06 <lambdabot> [6 @more lines]
16:21:09 <elliott> aww
16:21:10 <elliott> @more
16:21:10 <lambdabot> a
16:21:10 <lambdabot> a
16:21:12 <lambdabot> a
16:21:13 <kfr> lol
16:21:14 <lambdabot> a
16:21:16 <lambdabot> a
16:21:18 <elliott> it's too smart :)
16:21:20 <lambdabot> a
16:21:29 <ais523_> that was 11
16:21:37 <elliott> yes
16:21:39 <elliott> because the first is "a"
16:21:43 <elliott> and then it becomes "a\na"
16:21:43 <kfr> I hate how it adds a space in the beginning.
16:21:43 <elliott> etc.
16:22:40 <ais523_> <elliott> ais523_: botloops are a channel tradition TYVM <--- I know, that's why I know enough to avoid them
16:22:53 <ais523_> in fact, I fear it was me who started the tradition
16:23:21 <elliott> ais523_: I actually botlooped lambdabot and egobot recently
16:23:41 <ais523_> fizzie: has fungot been told to ignore lambdabot?
16:23:41 <fungot> ais523_: but there isn't afaik. i learnt from reading the wikipedia article
16:23:50 <elliott> ^ignore
16:23:52 <ais523_> oh, no need, it got the list from Wikipedia
16:23:56 <elliott> :D
16:23:57 <elliott> LIST OF BOTS
16:24:28 <kfr> What are botloops? Making bots give input to each other? PRIVMSG recursion?
16:24:51 <elliott> 11.01.20:12:51:36 <elliott> ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);"; printf(s,34,s,34);//
16:24:51 <elliott> 11.01.20:12:51:36 <lambdabot> !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 <elliott> 11.01.20:12:51:38 <EgoBot> ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);"; printf(s,34,s,34);
16:24:51 <elliott> 11.01.20:12:51:38 <lambdabot> !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 <elliott> 11.01.20:12:51:51 <elliott> ?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 <ais523_> kfr: it's when you get two bots to each output something that's valid input to the other
16:25:24 <kfr> Heh
16:25:30 <elliott> sorry
16:25:31 <kfr> I was thinking about that earlier today
16:25:32 <elliott> 11.01.20:12:51:51 <elliott> ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);//
16:25:32 <elliott> 11.01.20:12:51:51 <lambdabot> !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 <elliott> 11.01.20:12:51:53 <EgoBot> ?so !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);//
16:25:33 <elliott> 11.01.20:12:51:53 <lambdabot> !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 <elliott> there
16:25:38 <elliott> that's how i did it
16:25:41 <elliott> "?so" turned out to just be
16:25:44 <elliott> @source x
16:25:44 <lambdabot> x not available
16:25:45 <zzo38> m4 doesn't seem to be good for preprocessing C codes.
16:25:46 <elliott> @src x
16:25:47 <lambdabot> Source not found. The more you drive -- the dumber you get.
16:25:48 <ais523_> because they're bots, they don't realise they've been tricked, and keep sending messages back and forth indefinitely
16:26:06 <ais523_> normally, until one of them gets kicked
16:26:08 <elliott> zzo38: it was designed for processing Ratfor codes and Ratfor is very much like C
16:26:12 <zzo38> (Although they did try by making it send #line directives to the output)
16:26:13 <ais523_> or Freenode gets impatient
16:26:20 <elliott> made by the K in awk
16:26:38 <ais523_> elliott: that's a different K from the K in K&R?
16:26:43 <elliott> nope!
16:26:43 <elliott> :p
16:27:34 <kfr> What would you say is the most impressive esolang which is still being used to actually solve problems?
16:27:45 <kfr> i.e. it is actually practical
16:28:10 <ais523_> the only esolang that I've ever seen used for practical tasks is Befunge-98
16:28:26 <ais523_> 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 <ais523_> hi fungot, btw
16:28:30 <fungot> ais523_: i just did the fnord fnord in scheme code? how can you use ' set_functions' anywhere in there?
16:29:24 <ais523_> some esolangs are very good at specific contrived tasks
16:29:45 <ais523_> like INTERCAL for bit-twiddling, or Brainfuck for certain types of text processing
16:30:01 <ais523_> 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 <ais523_> ^bf >,[>,]<[.<]!Hello, world!
16:30:27 <fungot> !dlrow ,olleH
16:30:47 <elliott> ^source
16:30:47 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
16:30:50 <ais523_> you're unlikely to find a shorter file-reverse in pretty much any other language
16:31:08 <elliott> ais523_: in golfscript i think it would be one character
16:31:09 <elliott> just "reverse"
16:31:31 <ais523_> yep, the "pretty much" was explicitly with GolfScript and floGscript in mind
16:31:48 <ais523_> and my as-yet-unnamed anagolf-based language
16:32:19 <elliott> hmm, i can't actually find reverse on http://www.golfscript.com/golfscript/quickref.html
16:33:33 <ais523_> "reverse lines" is apparently 7 bytes in GolfScript, 2 in FlogScript
16:34:27 <ais523_> reversing the elements of a list is actually just 3 bytes in Underlambda: '*t
16:35:16 <ais523_> (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 <ais523_> err, wait, you'd need to escape the list first
16:35:53 <ais523_> 'ae'*t
16:36:04 <ais523_> (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 <evincar> I return, with a vengeance.
16:47:40 <elliott> AAAAAAH
16:47:45 <evincar> Ohai.
16:48:08 <elliott> ^ul ()(S)((a)^(b)^(c)^)^
16:48:09 <fungot> ...bad insn!
16:48:10 <evincar> I'm working on something you'd like, then hate, then be indifferent toward, then hate, then like again.
16:48:13 <elliott> ...:(
16:48:14 <elliott> wut
16:48:24 <elliott> evincar: are you INSINUATING something about me
16:48:36 <evincar> elliott: I see what you did there.
16:48:47 <evincar> I hope you do. :P
16:48:47 <elliott> ... i don't
16:48:51 <elliott> :D
16:48:57 <evincar> You'll oscillate.
16:49:01 <ais523> elliott: what's that UL program meant to do?
16:49:03 <evincar> Sinusoidally, perhaps.
16:49:04 <elliott> evincar: oh wow
16:49:07 <ais523> it looks like a pretty obvious crash to me
16:49:07 <elliott> xD
16:49:18 <elliott> ais523: the a^b^c^ bit is meant to be a list represented as its folding instruction
16:49:19 <elliott> ohhh
16:49:21 <elliott> it should be ~^
16:49:27 <elliott> actually
16:49:28 <elliott> it should be
16:49:29 <elliott> given
16:49:31 <ais523> yep, and there should be some colons in there too
16:49:39 <elliott> PREVIOUS F
16:49:40 <elliott> it should be
16:49:42 <elliott> PREVIOUS CURRENT F
16:49:43 <elliott> and then ^
16:49:54 <elliott> ^ul ()(S)((a)~^(b)~^(c)~^)^
16:49:55 <fungot> a ...bad insn!
16:50:02 <ais523> also, isn't that map not fold?
16:50:04 <elliott> grr
16:50:05 <elliott> i need a dip
16:50:09 <elliott> ais523: no, the function is meant to take two arguments
16:50:15 <elliott> ais523: it starts with zero f on the stack
16:50:16 <elliott> then it becomes
16:50:21 <elliott> zero first-elem f
16:50:22 <ais523> heh, the two are basically the same in Underload
16:50:23 <elliott> then
16:50:27 <elliott> f(zero first-elem) f
16:50:28 <elliott> then
16:50:30 <elliott> f(zero first-elem) second-elem f
16:50:39 <elliott> f(f(zero first-elem) second-elem) f
16:50:43 <elliott> and then at the end it should pop the function
16:50:48 <ais523> Underlambda t works by dumping the whole list on the stack, then repeatedly running the operation you give
16:50:49 <elliott> but this seems like it'll be a bitch to do....
16:50:51 <elliott> *do...
16:50:53 <kfr> <elliott> i need a dip <- were you actually talking about orally consumed tobacco there?
16:50:58 <ais523> a number of times equal to the list length minus one
16:51:02 <ais523> kfr: no, a combinator
16:51:08 <kfr> Right
16:51:17 <ais523> elliott: Underload dip is a~*^
16:51:25 <elliott> i know
16:51:34 <elliott> ok so we want
16:51:45 <elliott> (push first elem) dip dup (^) dip
16:51:47 <ais523> kfr: it runs a program without the top stack element, then adds the element back again afterwards
16:51:49 <elliott> can that be simplified
16:51:49 <elliott> ?
16:51:51 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
16:52:01 <elliott> ((a))a~*^:(^)a~*^
16:52:02 <kfr> I was about to ask if Haskell has it
16:52:05 <elliott> that can surely be simplified
16:52:14 <kfr> But I guess that's that
16:52:27 <ais523> kfr: it doesn't really make much sense with Haskell's evaluation model, it's more a concatenative than functional combinator
16:52:51 <elliott> evincar: but yes stay you are cool
16:52:59 <ais523> but on lists rather than stacks, you could write it as "dip f h:t = h:(f t)"
16:53:09 <elliott> lists are stacks
16:53:13 <ais523> @pl let dip f (h:t) = h:(f t)
16:53:13 <lambdabot> (line 1, column 26):
16:53:13 <elliott> as far as the concatenative model is concerned
16:53:13 <lambdabot> unexpected end of input
16:53:13 <lambdabot> expecting variable, "(", operator, ":", "++", "<+>", ";" or "in"
16:53:20 <elliott> stacks are essentially linked lists
16:53:22 <ais523> elliott: well, yes
16:53:27 <elliott> @pl \f (h:t) -> h:(ft )
16:53:27 <lambdabot> const ((: ft) . head)
16:53:28 <elliott> @pl \f (h:t) -> h:(f t)
16:53:28 <lambdabot> (`ap` tail) . (. head) . flip ((.) . (:))
16:53:32 <elliott> gross
16:53:34 <ais523> oh, it has to be a function not a statement
16:53:40 <elliott> haskell has no statements
16:53:45 <elliott> what you said there is only valid in a do block
16:53:50 <ais523> err, yes, that's what I meant by statement
16:53:53 <evincar> elliott: It's noon here and I've been awake since 11pm yesterday. So forgive me if I suddenly fall asleep.
16:53:53 <elliott> right
16:54:01 <elliott> evincar: THAT WOULD BE GIVING UP
16:54:06 <ais523> and that's the ugliest pointfree form I've seen ever
16:54:20 <kfr> lol
16:54:41 <ais523> Underload's inherently point-free, and a~*^ is pretty simple
16:54:42 <evincar> It's almost pornographic.
16:54:53 <ais523> but sometimes it gets ugly for other things
16:54:55 <zzo38> One way avoiding bot-loops would be to make their output as NOTICE messages instead of PRIVMSG
16:55:03 <ais523> (OTOH, dip is much more important in Underload than Haskell)
16:55:06 <kfr> @pl \a b c d e f g -> g f a c e d b
16:55:07 <lambdabot> flip . ((flip . ((flip . ((flip . (flip .)) .)) .) . flip . ((flip . (flip .)) .) . flip . (flip .)) .) . flip . (flip .) . flip (flip . flip id)
16:55:11 <ais523> zzo38: indeed, and that's what technically they should do
16:55:20 <ais523> and probably would, were it not for mIRC
16:55:27 <zzo38> ^ul (<CTCP>TIME<CTCP>)S
16:55:28 <kfr> Flipping burgers
16:55:34 <kfr> freenode is my favourite mIRC server.
16:55:47 <elliott> ais523: notices are ugly
16:55:49 <elliott> in almost any client
16:55:51 <elliott> and annoying too
16:55:57 <evincar> 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 <zzo38> elliott: I don't think so.
16:56:00 <elliott> anyway, botloops are _fun_
16:56:02 <ais523> zzo38: technically, fungot - and everyone else - misparsed that, CTCPs are supposed to be allowed in the middle of a line
16:56:03 <fungot> ais523: ptys work perfectly well
16:56:12 <elliott> * Received a CTCP TIME from fungot (to #esoteric)
16:56:13 <fungot> elliott: ( define ( fnord liste symbol?) ( else ' even)) x sort ( filter xs ( x)
16:56:14 <elliott> :>
16:56:16 <elliott> worked for me
16:56:26 <ais523> hmm, clients should probably just show notices as -fungot- rather than <fungot>, with maybe a color change, and leave them identical
16:56:27 <fungot> ais523: wait a minute, i need to do that
16:56:30 <ais523> I think that's what clog does
16:56:37 <elliott> -- is ugly :P
16:56:44 <elliott> ^ul (<CTCP>ACTION asdf<CTCP>)S
16:56:45 * fungot asdf
16:56:45 <evincar> (I take that back. According to Google, no one has ever said those five words in sequence before.)
16:56:49 <ais523> -ugly? doing it on every line is famously scary-
16:56:52 <elliott> ^ul (x<CTCP>ACTION asdf<CTCP>y)S
16:56:53 <fungot> x<CTCP>ACTION asdf<CTCP>y
16:56:57 <elliott> ^ul (x<CTCP>PING<CTCP>y)S
16:56:58 <fungot> x<CTCP>PING<CTCP>y
16:57:02 <elliott> * Ping reply from zzo38: ? second(s)
16:57:11 <elliott> zzo38 wins the "only client that obeys the RFC" prize
16:57:13 <elliott> why am i not surprised?
16:57:26 <ais523> I thought zzo38 still did IRC over telnet/netcat?
16:57:37 <ais523> I obey that part of the RFC too, when I'm IRC'ing by hand
16:57:39 <zzo38> ais523: No, I wrote my own IRC client.
16:57:49 <elliott> ais523: he wrote his own client in PHP
16:58:00 <ais523> elliott: I'm not surprised that it obeys the standard either
16:58:05 <elliott> ais523: that consists of an IRC-protocol syntax highlighter, and a way to type "PRIVMSG #foo :" quickly
16:58:26 <elliott> *completely* unrelatedly, all over the globe, stereotypes continue to be obeyed
16:58:28 <ais523> haha, that was unexpected, but not surprising either
16:58:28 <zzo38> (Command-line PHP, as it turns out. If I ever rewrite it, it will use C (Enhanced CWEB) instead probably)
16:58:52 <elliott> link us to PHIRC again zzo38?
16:59:00 <zzo38> 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 <elliott> <ais523> haha, that was unexpected, but not surprising either
16:59:10 <elliott> what was?
16:59:16 <ais523> the way zzo38's client works
16:59:18 <elliott> zzo38: oh right, you can script it right?
16:59:20 <elliott> with a Forth dialect?
17:00:50 <zzo38> 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 <zzo38> It also has macros which can be assigned to function keys.
17:01:26 <elliott> can you link again?
17:01:51 <zzo38> http://zzo38computer.cjb.net/prog/PHIRC/
17:02:31 <elliott> Can you offer the source code in a Free archive format such as tar?
17:02:35 <ais523> 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 <zzo38> elliott: OK I can do that. Just a minute.
17:02:52 <elliott> I use gNewSense, so I cannot use any file format that is not openly standardised with a Free Software implementation.
17:03:11 <elliott> ais523: heh
17:03:13 <ais523> elliott: but .zip is an open standard with several free software implementations, IIRC
17:03:38 <elliott> ais523: No, ZIP files are not an open standard.
17:03:48 <elliott> Oh, it is.
17:03:53 <elliott> ais523: Well, the original implementation has to be Free!
17:04:28 <kfr> I want a desktop made out of completely open source hardware!
17:04:42 <ais523> elliott: it seems muddled
17:04:48 <zzo38> OK I made a .tar.gz now available
17:04:56 <kfr> 7zip o/
17:04:57 <evincar> 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 <ais523> PKWare released the original specification to the public domain (although not their original implementation), also the file extension .zip
17:05:17 <ais523> I didn't even realise you /could/ release a file extension to the public domain
17:05:24 <ais523> (as in, that such an operation was meaningful)
17:05:28 <elliott> evincar: hmm, I didn't see that in the logs
17:05:43 <elliott> oh, seems so
17:05:44 <evincar> elliott: It'll be fun to hear you yell at me about it. :P
17:05:46 <zzo38> 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 <kfr> zzo38: I know somebody on freenode who makes large feature size ASICs at home haha
17:06:28 <kfr> I've also looked into VHDL/Verilog + FPGAs etc
17:06:39 <kfr> But FPGAs would obviously not be free either
17:06:58 <elliott> YOU SUCK AND YOUR LANGUAGE SUCKS
17:06:59 <ais523> kfr: seriously, someone making ASICs at home?
17:07:07 <ais523> what do they make them out of?
17:07:07 <zzo38> 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 <kfr> ais523: Oh, many freelancers do that commercially
17:07:21 <kfr> I know somebody in Japan who does it commercially
17:07:24 <ais523> I'm surprised that they can get sufficiently pure silicon
17:07:26 <zzo38> Open standards is more important I think.
17:07:41 <kfr> There are some machines which can do it with larger feature sizes, I think?
17:07:58 <kfr> Let me sanity check in ##electronics
17:08:02 <kfr> At least he told me he did
17:08:05 <ais523> 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 <zzo38> How are ASICs build?
17:08:18 <elliott> I make ASICs out of paperclips.
17:08:40 <kfr> zzo38: Well, the mainstream x86 ones are made in extremely expensive fabs in Taiwan
17:08:48 <kfr> Which cost 50-75 billion USD each
17:09:00 <kfr> And they need to make a new one for every new feature size
17:09:17 <kfr> Anyways, it's based on photolithography
17:09:29 <ais523> 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 <ais523> with various masks used to prevent the gas getting to parts of the chip you don't want it to affect
17:10:05 <ais523> 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 <kfr> You basically change physical properties of a wafer by combining light exposure with extremely fine masks or something like that
17:10:12 <elliott> sounds like great fun!
17:10:15 <kfr> Gas? Oh boy
17:10:18 <kfr> I must be totally outdated
17:10:52 <ais523> 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 <ais523> kfr: the light doesn't change silicon directly, you use it to let the mask into a particular shape
17:11:39 <ais523> much the same way you make PCBs, except massively more precise
17:11:57 <ais523> then the mask regulates chemical reactions which are what makes the n-type and p-type layers
17:12:18 <zzo38> Is there a open specification binary format for ASIC layers?
17:12:19 <ais523> originally people used silicon dioxide as an insulator, and aluminium on the surface as a conductor
17:12:48 <kfr> zzo38: This stuff is all super vendor specific as far as I know
17:13:01 <ais523> 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 <ais523> 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 <zzo38> 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 <ais523> 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 <ais523> but it's basically as general as XML
17:14:02 <ais523> and what it actually /means/ is up to the individual vendors
17:14:06 <ais523> thus, it effectively isn't open
17:14:39 <zzo38> (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 <ais523> zzo38: even with a secure loading mode, it would still work pretty well, as long as it still allowed reflashing
17:14:56 <ais523> so long as it was possible to turn the mode in question off by wiping the chip
17:15:42 <zzo38> 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 <ais523> (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 <fizzie> ^ignore
17:16:09 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot)!
17:16:15 <fizzie> No, there's no lambdabot on the list.
17:16:20 <ais523> there probably should be
17:16:22 <ais523> or someone will try
17:16:29 <elliott> we already did
17:16:31 <elliott> but it was boringly easy
17:16:33 <elliott> since you can ^def
17:16:34 <ais523> also, I remember optbot
17:16:39 <elliott> so i wouldn't bother
17:16:39 <ais523> well, almost
17:16:47 <elliott> ais523: i was going to bring optbot back
17:16:48 <elliott> but then didn't
17:16:48 <ais523> didn't it just spout random lines from the logs?
17:16:50 <elliott> maybe i will
17:16:51 <fizzie> ^ignore ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)!
17:16:51 <fungot> OK.
17:16:55 <elliott> ais523: yes, but more importantly,
17:16:57 <elliott> it set the topic
17:16:58 <fizzie> I don't think Sparkbot actually exists.
17:17:00 <elliott> every 6 hours on the dot
17:17:04 <fizzie> My logs didn't really find anything about it.
17:17:05 <elliott> ais523: to a random log quote
17:17:09 <elliott> and it was great
17:17:46 <kfr> ais523: Yeah I know somebody who worked with encrypted Flash stuff for his FPGA
17:18:07 <ais523> still, there are some cases of people extracting the "source" even from ASICs
17:18:12 <kfr> Designed to make reverse engineering difficult
17:18:16 <ais523> someone cut open a 6502 and scanned it with an electron microscope
17:18:23 <kfr> ais523: Do you know azonenberg? He does that
17:18:25 <ais523> in order to make a bug-compatible emulator
17:18:27 <kfr> Acid and microscopes
17:18:28 <ais523> kfr: no, I don't
17:18:35 <kfr> He's a regular on ##re
17:18:43 <kfr> And many other related channels
17:18:50 -!- cal153 has quit (Ping timeout: 240 seconds).
17:19:00 <fizzie> Being a "regular" on a regular expression -related channel would be so punny.
17:19:33 <elliott> fizzie: hurf durf
17:19:36 <kfr> http://siliconpr0n.wikispaces.com/Tutorial+on+epoxy+decapsulation
17:20:20 <kfr> fizzie: The channel is primarily about cracking commercial software and reverse engineering smart cards and jailbreaking new embedded systems and such
17:20:22 <ais523> "epoxy decapsulation" sounds like a sort of execution method
17:20:44 <fizzie> I gathered as much from the context.
17:20:47 <kfr> That's his page
17:21:38 <kfr> ais523 http://siliconpr0n.wikispaces.com/Tutorial+on+using+micropositioners
17:22:17 <kfr> The funniest part about this is that he never had any formal training in EE
17:22:23 <kfr> And he's a CS undergrad or something
17:22:39 <kfr> But his primary interest is hardware really
17:23:39 <ais523> kfr: I'm the other way round, my first degree was in electronic engineering
17:23:45 <ais523> but I'm doing my PhD in computer science
17:24:12 <ais523> (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 <ais523> (and you can do them both at much the same time, one at university, one in your free time)
17:25:25 <elliott> epoxy decapsulation :D
17:26:24 <ais523> 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 <fizzie> Ready the Epoxy Decapsulation Squad, we have a runaway.
17:31:04 -!- asiekierka has quit (Remote host closed the connection).
17:36:42 <Phantom_Hoover> Square Root of Minus Garfield is rapidly hurtling towards the Garfield fo
17:37:00 <Phantom_Hoover> *Garfield <foo>inus Garfieldocalypse.
17:39:01 <ais523> hmm, yesterday's (i.e. the current) Lightning Made of Owls is very deep
17:40:14 <elliott> ais523: walls aren't that deep!
17:40:57 <ais523> incidentally, I think there's actually a fifth wall that it's possible to break as well
17:40:57 <elliott> segfaults -- i love segfaults!
17:41:03 -!- cal153 has joined.
17:41:08 <elliott> oh, that's what it's referring to?
17:41:09 <elliott> heh
17:41:16 <ais523> elliott: not directly, I don't think
17:41:22 <ais523> only by saying it's a meta-meta-joke
17:41:32 <elliott> http://www.mezzacotta.net/owls/?comic=328 same person
17:41:36 <ais523> indeed
17:41:49 <ais523> 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 <elliott> http://www.mezzacotta.net/owls/?comic=326
17:42:05 <ais523> breaking the fifth wall is when they start exploiting effects of the media their fictional universe is in
17:42:11 <elliott> 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 <elliott> so, where's the fifth wall? perpendicular to the other four?
17:42:30 <elliott> (Onion joke)
17:42:35 <ais523> 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 <elliott> haha
17:43:02 <ais523> 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 <elliott> no, you have to do that kind of thing in the original
17:43:36 <ais523> on a TV program, breaking the fifth wall would be if the characters started doing subpixel antialiasing
17:43:40 <elliott> haha
17:43:50 <ais523> exploiting the way the viewers' TV screens were likely to work
17:44:19 <elliott> hmm, now what's wrong with this ...
17:44:34 <kfr> "Java says one file per class, I say one file per function"
17:45:06 <ais523> 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 <ais523> it's just anywhere in between that you have the issue
17:48:17 <ais523> (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 <fizzie> That doesn't really work if you need to have multiple public classes due to some sort of an interface.
17:50:00 <fizzie> I guess it normally works.
17:50:36 <fizzie> If someone gives you an object of a non-public class, I suppose you can do reflection on it freely?
17:50:52 <fizzie> If it's just the class declaration you can't access.
17:52:09 <fizzie> It is still "one file per class" if you're speaking of .class files, though.
17:54:26 <ais523> I think you can reflect a non-public class, but I'm not sure
17:54:45 <ais523> 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 <zzo38> fizzie: I think you can put all the .class files together in a .jar file?
17:55:13 <elliott> 11:27:23 <evincar> 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 <elliott> 11:27:45 <evincar> Events occur, and effects may result, and generate further events, ad whateverum.
17:55:13 <elliott> 11:28:12 <evincar> Effects are evaluated lazily, so nothing happens until something depends on it.
17:55:13 <elliott> 11:28:31 <evincar> Which keeps the language purely functional, and lets you start jumping around and forking the timeline however you please.
17:55:15 <zzo38> (A .jar file has the same format as a .zip file)
17:55:21 <elliott> that's like FRP if you took away the part where it's sane
17:55:39 <elliott> 11:29:51 <kfr> What's the significance of the lemons in the Esolangs logo?
17:55:39 <elliott> /facepalm
17:55:55 <ais523> there's a thread about the limes in the Esolangs logo
17:56:03 <elliott> 11:32:23 <Ilari> There is all sorts of fun with complexity classes. Such as R being impossible to construct explicitly...
17:56:03 <elliott> WELL I DID IT
17:56:05 <ais523> but it was mostly people concluding that they didn't know either, and probably there wasn't one
17:56:29 <elliott> and even implemented it
17:56:30 <elliott> *it!
17:56:30 <elliott> :p
17:56:32 <kfr> elliott: Well what does it stand for? :[
17:57:28 <zzo38> 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 <kfr> Ew, then I'd have to write decompression stuff
17:59:29 <elliott> 11:32:57 <ais523> it's hard to explain, because all the terminology required for time travel doesn't yet exist in English
17:59:29 <elliott> 11:33:00 <ais523> or probably any other language
17:59:30 <elliott> wioll haven been
17:59:47 <ais523> elliott: I think that was just a joke
17:59:57 <elliott> ais523: you think what was just a joke?
18:00:12 <ais523> the time travel verbs thing in HHGTTG
18:00:19 <elliott> Showing results for "will have been". Search instead for "wioll haven been"
18:00:19 <elliott> why the fuck do you think I quoted it, Google?
18:00:21 <ais523> as in, Douglas Adams just invented some verblike forms
18:00:24 <elliott> because you fucked it up beforehand!
18:00:38 <ais523> rather than actually having the meanings plotted out
18:00:47 <ais523> elliott: I think you can use a leading + to prevent the did-you-mean triggering
18:02:03 <elliott> but quotes should do that!
18:03:14 <ais523> I'm always amused when people complain about Wikipedia's search feature
18:03:32 <quintopia> hello zzo38
18:03:35 <ais523> to me, it's better than most other searches, for exactly the same reasons other people complain about
18:03:39 <zzo38> Wikipedia's search feature seems to work better than Google, I think.
18:03:44 <elliott> ais523: well, I can never _find_ what I'm looking for with it
18:03:50 <ais523> I can
18:03:57 <ais523> but I suppose we're looking for different things
18:04:11 <ais523> 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 <ais523> and the names follow a consistent enough pattern that you can generally guess what the page will be
18:05:14 <zzo38> 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 <quintopia> elliott: you have to do +"sjkdfhskdjfh" to get exactly what you asked for :/
18:11:51 <ais523> quintopia: but elliott didn't ask for sjkdfhskdjfh
18:12:47 <quintopia> ais523: sjkdfhskdjfh is a new standard metasyntactic variable
18:14:25 <variable> "=\
18:14:47 <Gregor> I owe $1,600 in taxes to Indiana.
18:14:49 <Gregor> YAAAAAAAAAAAAAAAAAAAY
18:14:50 <elliott> dfijdfgsodgjoidjgsjfgsdlkfgjslkdjgfsdjkgf
18:14:57 <elliott> Gregor: I owe Gregor in taxes to $1,600.
18:16:49 <quintopia> 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 <ais523> 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 <ais523> to the extent that people don't notice them much, maybe that's the idea
18:18:31 <ais523> (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 <Gregor> 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 <ais523> hmm, it seems to be in everyone's interest for taxation to be automatic
18:19:35 <Gregor> 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 <elliott> don't US citizens living abroad have to pay taxes?
18:19:54 <Gregor> 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 <elliott> that's rather fucked up, I've always thought
18:20:03 <ais523> ah, so forms every year
18:20:04 <Gregor> elliott: Yup.
18:20:15 <elliott> lame
18:20:19 <ais523> elliott: although only if they pay less tax to their local government then they would in the US
18:20:23 <ais523> s/then/than/
18:20:25 <ais523> but it's still ridiculous
18:20:26 <elliott> ais523: ...what
18:20:28 <elliott> that doesn't even make sense!
18:20:41 <ais523> it sort-of half makes sense
18:20:55 <ais523> in that you aren't allowed to emigrate to avoid taxes, but are allowed to emigrate for other reasons
18:21:07 <ais523> but the justification breaks down at one level
18:21:11 <ais523> in that it makes no sense either
18:23:06 <elliott> heh
18:23:30 <ais523> I'm amused that you thought it made sense without the restriction, though
18:23:57 <ais523> 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 <ais523> 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 <Gregor> 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 <ais523> who, Washington or Oregon?
18:26:03 <elliott> <ais523> I'm amused that you thought it made sense without the restriction, though
18:26:04 <elliott> no i didn't
18:26:07 <elliott> well
18:26:09 <Gregor> ais523: Washington
18:26:15 <elliott> i thought it made sense in the "let's just be horrible and evil" way :)
18:26:34 <ais523> yep, I was wondering if you thought it made sense because it was arbitrarily evil
18:26:40 <ais523> and putting a restriction on that made it less os
18:26:41 <ais523> *so
18:26:46 <ais523> well, less evil, more arbitrary though
18:29:05 <fizzie> ais523: Does that exempt-from-UK-sales-tax thing work for EU citizens? (Because the similar thing in France doesn't.)
18:29:17 <ais523> fizzie: I don't know, but it wouldn't surprise me
18:29:54 <ais523> 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 <ais523> 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 <elliott> 13:03:46 • ais523 golfs his or her Slashdot signature
18:32:06 <elliott> 13:04:01 <ais523> (it's an INTERCAL addition without using the stdlib, I noticed a way to save another character)
18:32:09 <elliott> that "his or her"
18:32:10 <elliott> WJW
18:32:35 <ais523> 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 <ais523> in here, there's no such need, I can just say "they" or "eir" or "his or her" without thinking
18:32:58 <ais523> regardless of the sentence they're in
18:33:29 <elliott> 13:14:55 <Ilari> 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 <elliott> 13:15:32 <fizzie> They're going to announce what they're going to have for lunch next week.
18:33:31 <elliott> :D
18:33:32 <fizzie> 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 <elliott> "Do you have... anything else to announce?" "Nope!"
18:34:25 <fizzie> I still think it's going to be the bit-flip thing.
18:35:55 <ais523> what bit-flip thing?
18:36:46 <fizzie> 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 <ais523> ah
18:37:15 <ais523> 0/1 balance is actually an incredibly serious issue in electronic engineering on occasion
18:37:19 <ais523> although in the short term, not the long term
18:39:10 <elliott> 13:26:07 <fizzie> "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 <elliott> wut?
18:39:16 <elliott> 13:26:35 <fizzie> ("Examples of such needs include: IPv4 addresses for key dual stack DNS servers, and NAT-PT or NAT464 translators.")
18:39:16 <elliott> Ah.
18:41:30 <elliott> 14:38:52 <fizzie> $ cat /proc/sys/net/ipv4/route/max_size
18:41:30 <elliott> 14:38:52 <fizzie> 1048576
18:41:30 <elliott> 14:39:06 <fizzie> My table is smaller. :v
18:41:30 <elliott> 14:39:20 <fizzie> s#v#/#
18:41:30 <elliott> I preferred :v.
18:42:25 <kfr> [root@niflheim ~]# cat /proc/sys/net/ipv4/route/max_size
18:42:25 <kfr> 524288
18:42:28 <kfr> :[
18:43:08 <ais523> why do you have to be root to do that?
18:43:14 <ais523> or are you just root for the sake of it?
18:43:30 <ais523> it's 524288 for me too
18:43:30 <kfr> I was doing iptables stuff in that shell
18:43:33 <ais523> a much-unloved power of 2
18:43:57 <elliott> ais523: what suggests he's root there?
18:44:12 <ais523> elliott: the root@ and # in the shell prompt
18:44:17 <elliott> ais523: oh, not fizzie?
18:44:20 <ais523> no, kfr
18:44:27 <elliott> 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 <fizzie> As was seen after that, my phone had the smallest table of them all, just 32768.
18:46:30 <fizzie> 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 <fizzie> (Unless it is... the RoutaPhone.)
18:47:25 <elliott> I want a RoutaPhone.
18:47:30 -!- sebbu2 has joined.
18:49:15 <fizzie> fi:routa == en:frost.
18:49:46 <elliott> FROSTPHONE
18:50:19 -!- sebbu has quit (Ping timeout: 240 seconds).
18:50:54 <fizzie> "Does your iPhone keep exploding in the cold? Get the new FrostPhone! Guaranteed to survive down to ten kelvins."
18:51:05 <kfr> 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 <kfr> I dearly miss his words of wisdom
18:56:42 <elliott> fizzie: BTW, what *is* that strange tunnel system under your house in the old mine?
18:56:44 <elliott> Mine tunnels?
18:58:29 <fizzie> Hmm?
18:58:43 <fizzie> Is this the right channel? :p
18:58:59 <elliott> fizzie: Er.
18:58:59 <fizzie> If you mean the things spaced three blocks apart, those are mine tunnels.
18:59:02 <elliott> Right.
18:59:24 <fizzie> Also act as shortcuts, the wide-tunnel route has a detour there.
18:59:28 <fizzie> 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 <ais523> hi Lymia
19:02:01 <variable> http://blog.regehr.org/archives/370 -> of interest to people here
19:02:15 -!- Lymia__ has quit (Ping timeout: 240 seconds).
19:04:07 <ais523> 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 <variable> ais523, by using a trusted translator :-)
19:05:27 <ais523> I'm not sure if there are any that take mathematical papers as input
19:05:46 <ais523> doing it that way round is definitely easier than proving an existing program, though
19:05:51 <variable> 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 <ais523> I like that article's suggestion that verifiers should output machine-readable proofs of the program
19:07:10 <elliott> <ais523> 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 <elliott> <variable> ais523, by using a trusted translator :-)
19:07:11 <elliott> <ais523> I'm not sure if there are any that take mathematical papers as input
19:07:13 <elliott> ais523: do it in Coq :)
19:07:17 <elliott> then extract to Haskell
19:07:27 <elliott> <ais523> I like that article's suggestion that verifiers should output machine-readable proofs of the program
19:07:30 <elliott> see frama-c/why/etc
19:07:31 <elliott> *etc.
19:07:35 -!- Mathnerd314 has joined.
19:07:38 <elliott> they output to Coq
19:09:02 -!- Lymia has quit (Ping timeout: 240 seconds).
19:10:22 -!- impomatic has joined.
19:15:12 <Lymia_> 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 <ais523> Lymia: don't worry too much, there are lots of conversations I don't participate in too
19:16:04 <Lymia> I'm commenting on elliott's copy/paste more than anything.
19:16:12 <Lymia> Maybe I'm confused as to what s/he meant to do.
19:16:55 <variable> 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 <ais523> Lymia: elliott wanted to reply to me, and was trying to give enough context that I knew what the replies meant
19:17:32 <elliott> Lymia: it's called logreading :)
19:17:44 <ais523> it was replying to something that happened much earlier
19:17:49 <Ilari> Context free ones need nondeterministic PDA.
19:19:36 <variable> Ilari are there any language types which FSM can't accept but D-PDA can ?
19:19:53 <ais523> variable: sexps
19:20:26 <variable> ais523, reading them now
19:20:32 <Ilari> variable: For instance the classic a^n b^n language....
19:20:57 <variable> so it goes regular - sexp - cfa - * == FSM - D-PDA - U-PDA - TM
19:21:20 <ais523> oh, I was using sexps as a specific example, rather than a general class
19:21:30 <variable> ais523, is there some general class ?
19:21:38 <ais523> I'm not sure what the general name of languages matched by deterministic PDAs is
19:21:54 <variable> 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 <ais523> I think deterministic-PDA is the class matched by recursive regular expressions
19:23:31 <Ilari> Recursive regular expressions?
19:23:55 <ais523> Ilari: regular expressions, except you're allowed to define them recursively
19:24:09 <ais523> e.g. R = (aR*b)
19:24:24 -!- sftp has joined.
19:24:31 <variable> oh - I've had this idea for a long time - and was wondering if its true
19:24:45 <ais523> in fact, they don't even need the * operator as you can do that with recursion, just alternation
19:24:55 <Ilari> 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 <variable> anything that could be defined recursively could be implemented in a non-rescursive manner
19:25:41 <variable> Ilari -> CFG ?
19:25:54 <variable> Context free ?
19:25:59 <Ilari> AFAIK, any context-free language can be written that way.
19:26:09 <ais523> Ilari: really? that would surprise me
19:26:13 <ais523> although it isn't obviously false
19:26:38 <ais523> <variable> 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 <variable> ais523, yes - just a thought I've had.
19:27:02 <variable> curious - is there a proof for this?
19:27:21 <ais523> that regular expressions can't do recursion? yes, although I don't know it offhand
19:27:30 <variable> ais523, no - my idea
19:27:41 <ais523> or that you can do recursion in an imperative language? it's basically done by emulating a stack by hand
19:27:48 <variable> ais523, yes - exactly
19:28:04 <ais523> I think you can probably do it with continuations instead
19:28:09 <variable> continuations ?
19:28:47 <ais523> 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 <variable> like the series of steps that it took to get there rather than just the state ?
19:29:29 <ais523> hmm, not really, it's just the state
19:29:40 <ais523> but the idea is that you're making a choice when you create a continuation
19:29:49 <variable> any links I could read?
19:29:58 <ais523> 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 <ais523> and if the continuation is ever called, instead of doing that, returns the value it was called with
19:30:10 <ais523> let me find one
19:30:31 <ais523> http://www.madore.org/~david/computers/callcc.html
19:30:53 <variable> I'll read it in a bit - and come back here with Qs
19:30:57 * variable is busy for it
19:31:00 <variable> *for a bit
19:32:44 <ais523> 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 <ais523> 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 <ais523> I'm pretty sure he used call/cc for a similar demonstration
19:33:41 <ais523> I'm not sure if there was much /point/ in doing this, but it was nonetheless hilarious
19:33:50 <ais523> (especially as the person who wrote the proofs was in the room at the time)
19:35:58 <ais523> "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 <ais523> hmm, that's actually how I implemented continuations in C-INTERCAL, IIRC
19:36:32 <ais523> 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 <fizzie> There's also a community-scheme-wiki call/cc explanation article.
19:40:58 <fizzie> I'm not saying it's anygood.
19:41:21 <ais523> the article I linked is the one I learned call/cc from
19:41:30 <ais523> it's a weird concept at first, but it becomes really natural after a while
19:41:31 <fizzie> http://community.schemewiki.org/?call-with-current-continuation is the Wiki one.
19:41:48 <fizzie> It does the usual "start with exit continuations, build from there" thing I've seen elsewhere too.
19:42:17 <fizzie> http://community.schemewiki.org/?category-learning-scheme has links to three others, including one explanation for C programmers.
19:42:21 <elliott> fizzie: You so Schemer.
19:42:25 <elliott> Why isn't mcmap written in Scheme? :p
19:42:26 <fizzie> I don't vouch for the quality of any of these.
19:43:21 <ais523> well, Scheme is sort-of famous for continuations
19:43:33 <fizzie> "Here's the secret: it's setjmp/longjmp.
19:43:33 <fizzie> 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 <ais523> most languages don't really have them at all, Scheme has them in their standard library
19:43:51 <elliott> ais523: not in its stdlib
19:43:53 <elliott> ais523: in its language core
19:43:57 <ais523> oh, right
19:43:57 <elliott> it has no stdlib :P
19:44:04 <ais523> well, that is the stdlib then, effectively
19:44:40 <fizzie> R5RS has a concept of "library procedure" as opposed to "procedure".
19:44:43 <elliott> 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 <fizzie> The former have reference implementations in terms of the latter, I think.
19:44:54 <elliott> fizzie: Yes, but it's just "technically optional procedure", no?
19:44:58 <elliott> Ah.
19:45:16 <fizzie> But call/cc is a "procedure" not a "library procedure".
19:45:26 <fizzie> Well, sensibly.
19:46:03 <elliott> 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 <fizzie> "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 <ais523> what does dynamic-wind do?
19:46:21 <elliott> ais523: (dynamic-wind before f after) is the same as (f), except that:
19:46:21 <ais523> something that much more insane than call/cc sounds like something I should definitely learn about
19:46:27 <elliott> - before f is called, before is called
19:46:29 <elliott> - after f is called, after is called
19:46:34 <elliott> - whenever control flow enters f, before is called
19:46:37 <elliott> - whenever control flow exits f, after is called
19:46:46 <elliott> the latter two including by call-with-current-continuation
19:46:59 <elliott> ais523: this is benign without call/cc, but with it, it's a gigantic headache
19:47:00 <ais523> aha, I was wondering why that was insane, apart from the last bit
19:47:01 <fizzie> Since I have the page open already for the earlier quote, let's have that too.
19:47:04 <fizzie> " * The dynamic extent is entered when execution of the body of the called procedure begins.
19:47:04 <fizzie> * 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 <fizzie> * It is exited when the called procedure returns.
19:47:04 <fizzie> * 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 <elliott> ais523: http://sisc-scheme.org/r5rs_pitfall.php
19:47:32 <elliott> [[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 <elliott> Tail-recursive
19:47:33 <elliott> Resistant to call/cc interference
19:47:33 <elliott> O(1*n)
19:47:35 <elliott> 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 <ais523> so basically, it installs event handlers for call/cc-based gotos into and out of the functions
19:47:49 <elliott> (O(1*n) is a horrible abuse of notation, but it's obvious what it means here)
19:47:54 <elliott> ais523: that's such a... C way of thinking about it
19:48:13 <elliott> SISC, btw, takes the call/cc and tail-recursive route, and thus map iterates over the list twice
19:48:17 <ais523> elliott: indeed; slipping to a lower or higher level of abstraction often makes something easier to think about
19:48:20 <elliott> but then, SISC is rather anal about standards-compliance
19:48:21 <fizzie> So I can make a system tail-recursive simply by "saying so"?-)
19:48:22 <elliott> even by Scheme standards
19:48:26 <elliott> fizzie: YEP!
19:48:39 <elliott> Looks like Scheme48's map isn't tail-recursive. :p
19:49:21 <elliott> hmm, SISC isn't in Ubuntu?
19:49:33 <elliott> oh, it is in Natty
19:49:40 <elliott> I'll steal the .deb >:)
19:50:16 <fizzie> At least dynamic-unwind forbids you from jumping into the before/after handlers by means of continuations captured while inside.
19:50:19 <ais523> is map supposed to be resistant to call/cc interference?
19:50:25 <ais523> fizzie: boring
19:50:38 <elliott> <ais523> is map supposed to be resistant to call/cc interference?
19:50:40 <ais523> surely the correct semantics in such a case is to call the handler recursively?
19:50:41 <elliott> every function is, pretty much
19:50:57 <elliott> you should be able to call-with-current-continuation from anywhere, and call a continuation to anywhere
19:51:01 <elliott> and have it work
19:51:05 <ais523> 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 <elliott> ais523: indeed
19:51:29 <ais523> ouch
19:51:31 <elliott> at least, that's my understanding of the situation
19:51:58 <ais523> now I'm trying to figure out why going through the list twice would help
19:52:19 -!- Behold has joined.
19:53:13 <elliott> ais523: you reverse it at the end
19:53:19 <ais523> oh
19:53:21 <elliott> "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 <ais523> perhaps if you had both cons and anticons that consed in the other direction?
19:53:48 <elliott> 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 <ais523> although that'd make pretty much every algo /but/ map insane
19:53:50 <elliott> ais523: that wouldn't work
19:53:59 <elliott> ais523: Scheme's lists aren't linked like that
19:54:03 <elliott> they're just singly linked
19:54:06 <elliott> because they're based on pairs
19:54:12 <ais523> no, I mean still based on pairs
19:54:14 <fizzie> Well, anticons cells would be backwards lists, presumably.
19:54:17 <elliott> well, right
19:54:22 -!- BeholdMyGlory has quit (Ping timeout: 276 seconds).
19:54:25 <elliott> update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-r4rs (scheme-r4rs) in auto mode.
19:54:25 <elliott> update-alternatives: using /usr/share/sisc/srfi-22.sh to provide /usr/bin/scheme-r5rs (scheme-r5rs) in auto mode.
19:54:25 <elliott> 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 <elliott> 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 <elliott> 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 <ais523> just cons is (head . tail) and uncons is (all-but-last . last)
19:54:30 <elliott> 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 <elliott> scheme-ieee-1178-1900
19:54:37 <elliott> ridiculousy
19:54:40 <elliott> *ridiculous
19:54:52 <ais523> hmm, that's anticons, not uncons
19:54:58 <ais523> uncons makes a list into a pair, presumably
19:55:09 <fizzie> Unicons is (horse . horn).
19:55:20 <ais523> hmm, interesting mental exercise: figure out in which languages Prolog's =.. is sane, and in which it's insane
19:55:28 <elliott> heh, SISC actually has a .deb for it on its website
19:55:36 <ais523> semantics of =.. are best described by example: [func, a, b] =.. func(a,b)
19:55:38 <elliott> what does =.. do again?
19:55:39 <elliott> ah
19:55:43 <ais523> and ofc as it's Prolog, it works both ways round
19:55:46 <elliott> ais523: homoiconic languages
19:55:53 <ais523> yep, definitely sane in those
19:56:08 <ais523> it works fine in Lisps, too, =.. is just eval
19:56:32 <ais523> C I'm having trouble with
19:56:47 <ais523> I think it fails there, specifically due to the length of the list not being known in advance
19:56:56 <ais523> although you can do it for any known tuple just fine
19:57:07 <elliott> aargh, distributing source code as a .jar
19:57:13 <elliott> that's worse than Hitler
19:57:16 <elliott> Hitler didn't even do that
19:57:42 <ais523> elliott: what if I distribute binary inside the same .jar?
19:57:54 <elliott> ais523: aargh
19:57:54 <ais523> it seems like a really easy way to meet the GPL's distribute-source requirement
19:58:04 <ais523> it's how I ship jettyplay, a binary+source jar
19:58:06 <fizzie> 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 <ais523> fizzie: my Java course uses source-in-.zip
19:58:39 <olsner> is the default build system ant?
19:59:04 <Deewiant> fizzie: Do you actually look at the sources?
19:59:05 <fizzie> olsner: Yes, I may have meant "default build file" there though.
19:59:13 <olsner> poor souls
19:59:35 <ais523> find | xargs javac is still my default build system
19:59:45 <fizzie> 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 <ais523> 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 <fizzie> (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 <fizzie> Deewiant: Ho-hum, well, really cursorily if at all, unless I have some sort of a reason.
20:00:23 <elliott> <ais523> find | xargs javac is still my default build system
20:00:23 <olsner> if ant must be involved, that is certainly the best way to do it :)
20:00:29 <elliott> doesn't javac MyProgram.java work?
20:00:33 <elliott> and compile dependencies?
20:00:42 <ais523> hmm, I'm not sure
20:00:55 <ais523> I thought it only compiled dependencies if the .class files were entirely absent
20:01:43 <fizzie> 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 <ais523> 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 <fizzie> 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 <elliott> `addquote <fizzie> 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 <fizzie> Well, you never know.
20:02:32 <Deewiant> Now.
20:02:38 <HackEgo> 284) <fizzie> 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 <ais523> Deewiant: that's a pretty ambiguous answer to a question that general
20:02:54 <fizzie> Deewiant: Well, Friday's my annual "here's how you do the programming project" lecture.
20:02:55 <ais523> although not as bad as "yes"
20:03:02 <fizzie> (I should probably update last year's slides.)
20:03:07 <ais523> so fizzie's going to be lecturing to Deewiant?
20:03:14 <Deewiant> Only if I'm going to be there.
20:03:18 <fizzie> Right.
20:03:25 <ais523> Deewiant: surely you are, if there's a chance to meet fizzie?
20:03:36 <fizzie> He's seen me before, and the sight is not an impressive one.
20:03:41 <elliott> ais523: they go to the same university, and they don't seem particularly EXCITED to meet
20:03:51 <ais523> 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 <Deewiant> I was at fizzie's master's thesis presentation, but I don't think I've talked to him.
20:03:54 <elliott> Although maybe it's just SO EXCITING that they CAN'T PUT IT INTO WORDS.
20:03:57 <elliott> ais523: haha
20:03:59 <elliott> ais523: I'll get to work on that
20:04:03 <Deewiant> I've seen him around the building every now and then.
20:04:10 <elliott> ais523: do you think I could just go up and ask them to let me deliver a lecture?
20:04:13 <ais523> (other way round is rather more plausible, ofc)
20:04:21 <fizzie> Deewiant: I've probably seen you too, but I still don't exactly recognize you.
20:04:28 <elliott> ais523: Psht, don't be so sure of yourself!
20:04:37 <ais523> 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 <ais523> until they realised I wasn't bluffing and told me to go and sit down again
20:04:51 <elliott> :D
20:04:54 <elliott> that is amazing
20:05:13 <ais523> I don't think I took it very /well/, but I still think it's hilarious
20:05:32 <fizzie> 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 <Deewiant> Nope.
20:05:52 <elliott> You Finns, so lonesome.
20:05:58 <elliott> hmm, what's the adjective form of "loner"?
20:06:11 <fizzie> 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 <fizzie> I was tempted to ask "if it's so nice, how come you don't want to do those by yourself?"
20:06:57 <ais523> elliott: it is indeed "lonesome"
20:07:04 <ais523> or "lonely", if you prefer
20:07:08 <elliott> ais523: doesn't really work, though
20:07:12 <ais523> although that probably has a slightly different meaning
20:07:14 <elliott> hmm, what, a license block at the _end_ of a file? :)
20:07:48 <elliott> ais523: would you like to take the Pixley Challenge?
20:08:08 <ais523> probably not, but I lack sufficient information to make sure
20:08:08 <Lymia> Do you people know eachother?
20:08:34 <ais523> only via #esoteric
20:08:34 <elliott> Lymia: yes
20:08:38 <fizzie> Yes, we've been on the same IRC channel.
20:08:39 <elliott> (we may be using a different definition of "know")
20:08:47 <ais523> but you get to know someone quite well after talking to them for over a year
20:08:48 <elliott> this is a pretty close community :P
20:08:50 <ais523> even if you never meet in person
20:08:53 <Lymia> Know-in-real-life-know.
20:08:54 <Lymia> =p
20:09:21 <fizzie> The Finnish contigent has some real-life knowingship going on too, I guess. But not much.
20:09:32 <elliott> ais523: The Pixley Challenge is one I invented, despite the name.
20:10:17 <ais523> I'm not actually sure what Pixley is
20:10:33 <elliott> 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 <elliott> ais523: Pixley is Chris Pressey's very-stripped-down Scheme subset: http://catseye.tc/projects/pixley/doc/website_pixley.html
20:10:53 <elliott> The self-interpreter is:
20:10:54 <elliott> http://catseye.tc/projects/pixley/src/pixley.pix
20:10:59 <elliott> (and this also functions as a Scheme interpreter of the language.)
20:11:10 <elliott> He implemented (at least most of) it in C and it was rpetty short.
20:11:11 <elliott> *pretty
20:11:15 <elliott> But that self-interpreter is very small, of course.
20:11:15 <ais523> I take it the Underload self-interp doesn't count?
20:11:33 <elliott> ais523: that counts as cheating :)
20:11:34 <ais523> hmm, the question of which non-TC-langs can self-interp without cheating is also pretty interesting
20:11:48 <elliott> And that Pixley interpreter I wrote isn't metacircular in an important way
20:11:52 <elliott> it implements car/cdr/etc. itself
20:11:53 <Lymia> elliott, sounds fun.
20:11:54 <elliott> rather than relying on the host system
20:11:58 <elliott> which, I think, should count as a requirement
20:12:10 <elliott> (it represents lists as Pixley/Scheme lists and functions as Pixley/Scheme functions, though, which is metacircular and also fine)
20:12:15 <ais523> elliott: well, in a sense, Feather's all about being metacircular wrt everything
20:12:19 <elliott> (but relying on your host to implement the actual primitives is cheating)
20:12:27 <elliott> ais523: well, the idea is to invent a new language to do it :)
20:12:36 <elliott> Choosing a subset of another language, like Pixley, is of course allowed.
20:12:41 <elliott> Lymia: it is; it's quite difficult, though
20:12:58 <elliott> 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 <elliott> and it'd be very hard to make it allow recursion
20:13:03 <elliott> so I gave up
20:13:12 <elliott> (the interpreter itself was recursive)
20:13:32 <ais523> elliott: remember your lang dei?
20:13:48 <elliott> ais523: underload sans ()?
20:13:49 <elliott> yes, i do
20:13:50 <ais523> I think I'd start with something similar to that, and then add some reasonably rich I/O primitives
20:14:03 <elliott> ais523: dei needs an actual unputchar to do IO
20:14:07 <elliott> well, sanely
20:14:08 <ais523> also, change the commands to numbers
20:14:36 <ais523> I'm assuming the I/O's allowed to be metacircular?
20:14:46 <elliott> ais523: yes, of course... but I'd recommend not having IO at all
20:14:55 <ais523> how else would I read in the input program without cheating?
20:14:56 <elliott> ais523: it's perfectly OK if your interpreter takes the program as an argument
20:15:01 <elliott> like http://catseye.tc/projects/pixley/src/pixley.pix does
20:15:06 <elliott> in fact, depending on your language, it's OK to take it pre-parsed
20:15:13 <ais523> ah, well the problem is how to represent the argument
20:15:22 <elliott> 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 <elliott> so the Pixley interpreter takes an object, too
20:15:29 <fizzie> 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 <elliott> fizzie: this IRC channel too, please!
20:15:40 <ais523> into #esoteric-blah too?
20:15:49 <elliott> naw, plain #esoteric, this channel's activity has been declining rapidly
20:15:52 <elliott> thanks to Minecraft
20:15:55 <ais523> elliott: I love the way I had the same idea but automatically picked the spam channel
20:16:01 <elliott> :)
20:16:08 <Deewiant> fizzie: Just use Triton
20:16:32 <elliott> fizzie: can *I* enter?!?!?!
20:17:06 <Deewiant> Presumably yes
20:17:33 <elliott> i thought it was finn-only
20:17:51 <Deewiant> I'm sure there are non-Finns taking the course
20:18:10 <ais523> 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 <ais523> and have the rules online without being behind a password wall
20:18:33 <fizzie> Deewiant: It feels so frivolous. And my existing scripts won't work with slurm. :/
20:18:36 <ais523> then submit entries yourself despite not being on the course (email to the person in charge of the course would do)
20:18:50 <elliott> Deewiant: i'm not taking the course :P
20:19:04 <elliott> fizzie: What the fuck are you talking about.
20:19:08 <elliott> <Deewiant> fizzie: Just use Triton <fizzie> Deewiant: It feels so frivolous. And my existing scripts won't work with slurm. :/
20:19:12 <fizzie> You can always just flunk out after the competition.
20:19:24 <fizzie> elliott: Triton's one of our clusters, running on the SLURM job manager thing.
20:19:39 <elliott> <oerjan>O KAY</oerjan>
20:19:53 <Deewiant> fizzie: Remind me where you ran them previously; just around the CS building?
20:20:00 <fizzie> 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 <Deewiant> 1400 CPU-hours is nothing
20:20:21 <elliott> :D
20:20:28 <elliott> fizzie is so afraid of things.
20:20:29 <ais523> what about running them all on one GPU?
20:20:29 <Deewiant> That's like two bug fixes for me
20:20:35 <ais523> (</my boss>)
20:20:48 <fizzie> Triton itself doesn't have more than ~1400 cores, that's like taking over the whole thing for an hour.
20:20:55 <elliott> <fizzie> I'm not sure if I should kick these 20 viagra spammer bots from #esoteric, I'm scared of power.
20:21:06 <elliott> <fizzie> Are you _sure_ I can run "ls" on the university servers? They might crash or something.
20:21:08 <fizzie> 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 <Deewiant> fizzie: Right, so your scripts don't work anyway. :-P
20:21:24 <ais523> elliott: well, I was very confused yesterday when I tried to run ls and found it didn't work
20:21:32 <ais523> then I tried to cd to my home dir, and found I didn't have permission
20:21:36 <elliott> ais523: THAT'S LIKE A NIGHTMARE
20:21:45 <elliott> ais523: did you fix it with only shell builtins? please say yse
20:21:48 <elliott> *yes
20:21:48 <ais523> then I found that I didn't have permission to open any programs either, also the taskbar crashed
20:21:53 <elliott> hmm, shells should come with gcc built-in, just in case
20:21:57 <Deewiant> 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 <ais523> actually I didn't fix it at all, it magically fixed itself after a while
20:21:58 <fizzie> 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 <ais523> elliott: *pcc?
20:22:15 <ais523> it's much lighter-weight, and you hardly need optimisation in that situation
20:22:17 <elliott> ais523: no, gcc! what if the only way to chmod you know of is gcc-specific?
20:22:23 <elliott> ais523: also, might as well go all the way, tcc
20:22:27 <ais523> but even a C compiler wouldn't help if you couldn't write the output files anyway
20:22:32 <elliott> tcc is actually reasonably embeddable...
20:22:41 <elliott> ais523: pipe to an fd?
20:22:46 <elliott> i guess executing an fd might be hard
20:22:48 <ais523> hmm, that might work
20:22:53 <fizzie> 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 <ais523> but I didn't have r, w, or x to anything on the system, nor did anyone else
20:23:07 <ais523> and I was trying to mark code at the time
20:23:14 <ais523> I don't think it was an /actual/ chmod -R 000
20:23:18 <elliott> #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 <elliott> including /tmp
20:23:21 <ais523> but it was something that had similar effects
20:23:24 <elliott> and can't mount any filesystems iether
20:23:25 <Deewiant> fizzie: You'd have to go via the frontend, I think.
20:23:26 <elliott> *either
20:23:46 <elliott> fizzie: just run it on my laptop, i don't mind!
20:23:57 <elliott> it'll only take five yeras
20:23:58 <elliott> *years
20:24:29 <Deewiant> elliott: Assuming Linux, does something like /lib/ld-linux* <(cat) count
20:24:34 <fizzie> 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 <elliott> Deewiant: yep
20:24:45 <elliott> Deewiant: except no
20:24:49 <elliott> because that's not +x
20:24:58 <elliott> and nor, I doubt, is <(cat)
20:25:06 <Deewiant> /lib/ld-linux* is +x
20:25:09 <Deewiant> <(cat) might not be
20:25:13 <elliott> (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 <elliott> <Deewiant> /lib/ld-linux* is +x
20:25:18 <elliott> no, it's not
20:25:26 <elliott> you don't have read, write, or execute permissions
20:25:51 <Deewiant> You didn't say that.
20:26:12 <elliott> well, poo. :p
20:27:05 <fizzie> Can you write over /proc/self/mem in general? The proc man page seems to suggest it's read-only.
20:27:18 <Deewiant> fizzie: Researchers' workstations are the typical ad-hoc cluster, I suppose.
20:28:10 <fizzie> 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 <Ilari> /proc/<pid>/mem is not writable for any process.
20:28:29 <elliott> fizzie: just write a worm that travels across the university network and uses everybody's machine for small amounts of computation
20:28:33 <elliott> it's like a gigantic cluster that's all yours
20:29:48 <Ilari> IIRC, unless compiled with special option, the write code for /proc/<pid>/mem files always returns an error.
20:30:24 <fizzie> 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 <elliott> fizzie: Was it mooz who was commenting on Slaves to Armok: God of Blood, Chapter I all those years back?
20:56:50 <elliott> Was it actually any good? :p
20:57:15 <fizzie> It was mooz; and I think that depends on "good".
20:57:27 <fizzie> Certainly it wasn't "good" as in "good game", but it was... an experience, I gather.
20:57:33 <elliott> http://4.bp.blogspot.com/_qrfMkVoq9DA/TEXhav_6RQI/AAAAAAAAABs/tdUY1rlzbp0/s1600/armokky.jpg ;; is this a screenshot?
20:57:45 <fizzie> It looks familiar, yes.
20:57:46 <elliott> From the looks of it it might not be worth playing even if you're a Dwarf Fortress fan. :p
20:57:51 <ais523> 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 <elliott> ais523: where on earth can you go from dwarf fortress?
20:58:15 <elliott> ais523: it's not so much a dead end, as an infinite corridor
20:58:18 -!- Tritonio has joined.
20:58:19 <ais523> make III as much better than II as II is better from I!
20:58:31 <elliott> 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 <elliott> he just couldn't take the question
20:59:02 -!- ais523 has joined.
20:59:02 <fizzie> It was too much.
20:59:03 <ais523> well, it would likely be a completely different genre
20:59:06 <elliott> * ais523 has quit (Read error: Connection reset by peer)
20:59:06 <elliott> <elliott> he just couldn't take the question
20:59:06 <elliott> <fizzie> It was too much.
20:59:34 <ais523> let's see... it would be a simulator of the entire universe that used the actual laws of physics
20:59:39 <ais523> (note: powerful computer needed)
21:00:00 <elliott> ais523: powerful? understatement :P
21:00:02 <ais523> and would let you simulate alternate historical paths of the actual universe
21:00:05 <elliott> and possibly not even possible
21:00:08 <elliott> if you mean quantuuum
21:00:17 <ais523> elliott: I'm trying to make a comment on Dwarf Fortress' astonishing CPU usage
21:00:20 <ais523> and how to scale that up further
21:00:28 <ais523> and would contain dwarves, of course
21:00:29 <elliott> ais523: make it four-dimensional
21:00:35 <elliott> why? Chapter I didn't
21:00:50 <elliott> ais523: hmm, the world should be 4D, displayed as 1D
21:00:54 <elliott> since DF is 3D as 2D
21:00:58 <ais523> elliott: each chapter so far has added more dwarves
21:01:03 <elliott> haha
21:01:09 <fizzie> 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 <elliott> in fact, the entire game's interface should be perfectly possible to work from an actual teletype typewriter
21:01:25 <elliott> without colour, or more than printable ASCII
21:01:31 <elliott> with linear, line-based input
21:01:40 <elliott> (ofc, you'd need it to be hooked up to a supercomputer still)
21:01:43 <ais523> isn't that just a text adventure?
21:01:58 <elliott> ais523: no, as I said, the 1D, wrapped output would show you part of a four-dimensional universe
21:02:11 <elliott> fizzie: heh
21:02:59 <elliott> 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 <ais523> indeed
21:03:14 <ais523> actually, I think you'd be a politician
21:03:19 <ais523> trying to get the dwarves to vote for you
21:03:24 <elliott> 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 <elliott> ais523: that's far too concrete
21:03:36 <ais523> and they'd be staging epic RPG-ish wars in order to get the right to vote for oyu
21:03:37 <elliott> ais523: you should just be able to, say, put water into the atmosphere
21:03:37 <ais523> *you
21:03:38 <elliott> to try and cause rain
21:03:41 <elliott> which will upset the dwarves
21:03:43 <ais523> no, that's too direct too
21:03:46 <elliott> causing them to try and go away from the rain
21:03:47 <elliott> which is far underground
21:03:49 <elliott> and thus they'll mine
21:03:54 <elliott> <ais523> and they'd be staging epic RPG-ish wars in order to get the right to vote for oyu
21:03:56 <elliott> ooh, even better:
21:04:01 <elliott> you're a politician in an _entirely unrelated land_
21:04:06 <ais523> yep, I like that one
21:04:15 <elliott> 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 <elliott> meaning you can do things like cause wars,
21:04:24 <elliott> which affect the weather because of the weapons used,
21:04:30 <elliott> which makes the dwarves decide to do things based on their AI
21:04:32 <ais523> yep
21:04:32 <elliott> :D
21:04:34 <elliott> this is the best game ever
21:04:47 <ais523> and there's no real win condition /or/ lose condition
21:04:48 <elliott> who wants to implement it?
21:05:00 <elliott> ais523: indeed, if all the dwarves die, you can keep going if you want
21:05:02 <ais523> but getting anything you wanted to happen at all is a good enough accomplishment to start off
21:05:02 <elliott> just, it'll be rather pointless
21:05:12 <ais523> you can wait for more dwarves to evolve
21:05:30 <ais523> either that, or just fill half the world's population with dwarves
21:05:40 <ais523> and let the player decide which small subset of dwarves to focus on
21:05:46 <ais523> (not in the game interface, just in their head0
21:05:47 <ais523> *)
21:06:02 <elliott> this is the best :D
21:06:11 <elliott> ais523: better: have all species be procedurally generated
21:06:25 <elliott> 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 <ais523> got it!
21:06:40 <elliott> this means that the simplest world generation would take about 6 months on a normal computer
21:06:45 <elliott> ais523: who has, me?
21:06:48 <ais523> yep
21:07:16 <elliott> ais523: also, the world should be simulated for about a million years, not the piddly hundred-or-so DF does
21:07:41 <ais523> alternatively, simulate it for arbitrarily many years backwards, lazily
21:07:53 <ais523> the theory is, that after a certain point, history won't have any observable direct effects on the world
21:07:58 <ais523> so you just generate more as they become relevant
21:08:00 <elliott> ais523: that's not in the DF spirit!
21:08:04 <elliott> world generation should be insanely precise!
21:08:07 <elliott> and INTENSIVE
21:08:13 <ais523> ah, perhaps
21:08:22 <elliott> hmm, and the names of the chapters have been increasing steadily
21:08:28 <elliott> therefore, chapter III needs to be called something like
21:09:03 <elliott> Slaves to Armok: God of Blood, Chapter III: Some Name, Part I: Some Other Name
21:09:10 <elliott> (I'm not sure what comes after Part; Paragraph?)
21:09:26 <ais523> part's actually more major than chapter
21:09:28 <ais523> section is less major
21:09:33 <ais523> then subsection, subsubsection
21:09:34 <elliott> ah, indeed
21:09:39 <fizzie> You seem to go by the LaTeX terminology. :p
21:09:41 <ais523> (/latex)
21:09:54 <fizzie> And paragraph does come after subsubsection; then subparagraph.
21:09:59 <ais523> 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 <ais523> mostly hilarious due to the timing
21:10:12 <ais523> and then had to go and fix
21:10:26 <ais523> so #unnethack is wondering why I said () for no apparent reason
21:10:33 <elliott> are they actually wondering?
21:10:39 <ais523> well, not out loud
21:10:42 <ais523> but possibly privately
21:10:45 <fizzie> While /latex did not turn this channel into LaTeX mode?
21:10:52 <ais523> fizzie: that would be \latex
21:10:53 <elliott> ais523: indeed, in #unnethack-behind-ais523s-back
21:11:06 <ais523> elliott: that's not what I meant!
21:11:19 <elliott> wow, that channel actually exists, and ais523 is banned from it!
21:11:26 <ais523> (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 <elliott> ais523: i'm not kidding, try and join it
21:11:41 <ais523> elliott: you just created it, most likely
21:11:52 <elliott> psht, so suspicious
21:11:57 <ais523> [Notice] -ChanServ- Channel #unnethack-behind-ais523s-back is not registered.
21:12:11 <elliott> ais523: would _you_ register a channel like that?
21:12:41 <ais523> obviously not, then it wouldn't be behind my back
21:13:55 <elliott> ais523: I really want to play Chapter III now...
21:14:16 <fizzie> 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 '<h1>[word] is a real word!</h1>' > tmp.html && firefox file:///home/fis/tmp.html
21:14:18 <elliott> it'd be awesome if the vast majority of the computation was simulating all the _non-Dwarf_ civilisations, incredibly realistically
21:14:22 <fizzie> Perhaps I should have hidden the location bar.
21:14:25 <elliott> because those are the ones you have to control
21:15:33 <ais523> unfortunately, almost by definition, you wouldn't be able to run it if it were implemented, nor would anyone else
21:15:57 <fizzie> "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 <elliott> ais523: well, I wasn't thinking of it as quantum-physicsy any more
21:16:07 <ais523> even so
21:16:16 <ais523> millions of years of history would take a while
21:16:24 <ais523> as would simulating effects that indirect
21:16:31 <ais523> this should so let you play as a butterfly :)
21:16:44 <ais523> fizzie: it says that on Windows too
21:16:57 <Lymia> fizzie, no suggestion of 'killall -9 firefox'?
21:17:01 <ais523> normally, waiting a couple of minutes works, although oddly that isn't listed as one of the solutions
21:17:11 <fizzie> ais523: Well, yes, therefore logically the market shares should be equal. QED.
21:17:19 <elliott> ais523: well, DF can simulate 100 years in about a minute on my machine
21:17:24 <Lymia> ais523, I'm guessing it's syncing it's configuration, etc to disk.
21:17:29 <elliott> admittedly, of a medium-sized map
21:17:41 <ais523> Lymia: yep, it'll be something like that
21:17:44 <elliott> ais523: so 1000 years should take about 15 minutes, say
21:17:49 -!- BeholdMyGlory has joined.
21:17:58 <Lymia> elliott, and I do believe this is pre-optimization.
21:17:59 <Phantom_Hoover> elliott, have you *looked* at DF's history?
21:18:03 <Phantom_Hoover> It's not all that complex.
21:18:12 <Lymia> Fun fact: DF is compiled with symbol information.
21:18:14 <ais523> Phantom_Hoover: it would be in StA III!
21:18:16 <elliott> ais523: so, 1000 * 15 minutes = 10 and a half days
21:18:20 <Phantom_Hoover> StA?
21:18:25 <Lymia> In theory you could recover the source to an decent degree.
21:18:26 <Lymia> =D
21:18:27 <ais523> Slaves to Armok
21:18:28 <elliott> Phantom_Hoover: Slaves to Armok: God of Blood, Chapter
21:18:31 <elliott> to expand what ais523 meant by it there
21:18:34 <elliott> Lymia: not really
21:18:36 <elliott> disassembling C is non-trviail
21:18:48 <ais523> Lymia: does it have line number info too?
21:18:51 <cheater-> hex rays
21:18:52 <ais523> that'd help break the statements apart
21:18:53 <Lymia> ais523, dunno.
21:18:55 <elliott> 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 <ais523> Lymia: easy way to check is to open it in a debugger and try to set a breakpoint by line number
21:19:18 <Lymia> Good idea.
21:19:19 <Lymia> =p
21:19:22 <Lymia> Would gdb do?
21:19:27 <ais523> yep
21:19:40 <elliott> ais523: http://en.wikipedia.org/wiki/Wikipedia:Millionth_topic_pool#Video_games
21:19:42 <elliott> ais523: "Dwarf Fortress by Bay 12 Games - will be out by then. Grue 12:56, 25 Mar 2005 (UTC)"
21:19:47 <elliott> (DF was developed from 2002 to 2006 before being released)
21:20:07 -!- Behold has quit (Ping timeout: 276 seconds).
21:20:16 <ais523> heh, [[Confirmed release date of Duke Nukem Forever]] is also on that list
21:20:17 <ais523> and it has one now
21:20:25 <Lymia> Reading symbols from C:\Users\hiedanoakyu\games\df_31_12_win/dwarfort.exe...(no
21:20:26 <Lymia> debugging symbols found)...done.
21:20:26 <Lymia> Eh?
21:20:28 <ais523> I forget the exact date, but it's a specific day of mid-2011
21:20:37 <ais523> Lymia: how confusing
21:20:46 <ais523> maybe it has debug symbols, but not in a format gdb understands
21:20:50 <ais523> or perhaps it means something esle
21:20:51 <ais523> *else
21:20:56 <Lymia> I recall seeing function names in it's binary at least.
21:20:58 <elliott> [[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 <elliott> ress to an extent. --Aquillion (talk) 06:04, 20 August 2009 (UTC)]]
21:21:10 <Lymia> And they're names that should be unique to DF.
21:21:11 <elliott> Lymia: you'd have a lot better chance on Linux...
21:21:26 <Lymia> elliott, ?
21:21:29 <fizzie> Function names could be just __func__ strings used for error messages.
21:21:35 <elliott> try it on the linux DF binary instead.
21:21:38 <Lymia> Ah.
21:21:45 <Lymia> Good idea.
21:21:46 <Lymia> =p
21:21:46 <elliott> I might, actually
21:22:02 <elliott> Reading symbols from /home/elliott/df_linux/libs/Dwarf_Fortress...(no debugging symbols found)...done.
21:22:03 <elliott> oh well
21:22:24 <ais523> so we'd have to guess what format the symbols are in
21:22:30 <elliott> I imagine fizzie is right.
21:22:35 <ais523> hmm, perhaps they aren't debug symbols, but asserts?
21:22:39 <ais523> oh, fizzie said that already
21:22:41 <elliott> [[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 <elliott> LAME
21:22:55 <elliott> I should propose a move to [[Slaves to Armok: God of Blood, Chapter II: Dwarf Fortress]]
21:23:38 <ais523> now I'm seeing how many of those exist as a non-stub, non-redirect
21:23:56 <elliott> wow, DF's fluid simulation is a CA
21:24:00 <ais523> [[Snakes on a Train]] is the first one on the list
21:24:07 <elliott> ais523: how many of what?
21:24:10 <elliott> ah
21:24:15 <ais523> and [[The Last Dangerous Visions]] the second
21:24:22 <ais523> millionth topic pool
21:24:41 <ais523> also, a couple which were serious articles that hadn't been written, like [[Ringworm]]
21:25:01 <Phantom_Hoover> What *was* the millionth article?
21:25:06 <elliott> JORDANHILL RAILWAY STATION
21:25:14 <ais523> heh, [[Military history of Oceania]]
21:25:18 <elliott> THE ONLY RAILWAY STATION THAT MATTERS
21:25:24 <elliott> http://en.wikipedia.org/wiki/Jordanhill_railway_station
21:25:28 <ais523> now an entirely serious article
21:25:33 <elliott> that article is so ridiculously huge
21:25:40 <elliott> GOD BLESS JORDANHILL
21:26:06 <ais523> 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 <ais523> coming up with [[St. Mary's School]], which is indeed now a bluelink
21:26:27 <elliott> haha
21:26:44 <fizzie> 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 <elliott> 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 <elliott> hort-lived.
21:27:01 <fizzie> So it's a bit arguable if that can even be called debugging data.
21:27:12 <ais523> also amusing: [[Tantalum telluride]], mostly amusing because it was User:TantalumTelluride who suggested it
21:27:20 <ais523> commenting that it's interesting as to whether it would be kept
21:27:23 <elliott> number of arms you have left, amazing
21:27:26 <ais523> it seems it was created, and is still blue
21:27:40 <elliott> 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 <ais523> and User:TantalumTelluride has never edited it, presumably due to conflict of interest
21:28:02 <fizzie> 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 <elliott> [[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 <elliott> 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 <elliott> [["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 <elliott> "Well… I'm not sure."
21:28:56 <elliott> "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 <elliott> "But there are so many political groups out there. What does the Liberal Crime Squad stand for?"
21:28:57 <elliott> "Everything! We stand for everything that is good and pure in America! This is what you must know…"
21:28:57 <ais523> 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 <elliott> http://lcs.wikidot.com/liberalism]]
21:29:08 -!- Tritonio has quit (Quit: Leaving).
21:30:18 <Phantom_Hoover> elliott, oh, *wonderful*.
21:30:19 <fizzie> 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 <elliott> 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 <elliott> (It's another Bay 12 game.)
21:30:58 <Phantom_Hoover> Reality: oppose
21:31:14 <Phantom_Hoover> Anti-American Hate Groups: support (for their free speech)
21:31:23 <elliott> <elliott> 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 <elliott> <elliott> (It's another Bay 12 game.)
21:31:26 <Phantom_Hoover> I can't see a tongue-in-cheek liberal writing that.
21:31:39 <ais523> 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 <ais523> who are also socialists
21:32:13 <elliott> Phantom_Hoover: I can
21:32:20 <elliott> in that it's a parody of the kind of things American conservatives actually say
21:32:24 <Phantom_Hoover> ais523, naw, the really scary thing is that Obama would be right-wing by Tory standards.
21:32:38 <elliott> i.e., if I was parodying Bill O'Reilly or Glenn Beck or someone, I would definitely write "Reality: OPPOSE".
21:32:41 <Phantom_Hoover> elliott, well, that's getting into meta-parody, which is rather sh
21:32:45 <Phantom_Hoover> *shaky
21:32:46 <elliott> It's rather sh indeed.
21:32:51 <ais523> I think he still manages to be left-wing by BNP standards, though, so at least there's /some/ overlap
21:33:06 <elliott> http://www.bay12games.com/lcs/, anyway
21:35:00 * Lymia gives elliott a random hug
21:35:07 <elliott> O KAY
21:47:10 -!- Behold has joined.
21:47:45 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
21:48:02 <pikhq_> 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 <elliott> 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 <Phantom_Hoover> pikhq, what happened?
22:09:20 -!- Slereah has joined.
22:12:09 -!- ais523 has quit.
22:12:25 -!- ais523 has joined.
22:21:06 <pikhq> It's SOFUCKINGCOLD
22:22:10 <Phantom_Hoover> pikhq, how cold?
22:22:39 <pumpkin> e lucevan le stelle!
22:22:47 <pumpkin> ed olezzava la terra
22:23:32 <pikhq> Phantom_Hoover: Earlier today, it was about -28°C (-19°F). Now, it's about -22°C (-9°F).
22:23:54 <Phantom_Hoover> I'm British. I don't understand Fahrenheit at all, so you don't need to cite it.
22:23:59 <Phantom_Hoover> And that is effing cold.
22:24:14 <Phantom_Hoover> We locked up at about -5.
22:24:22 <pikhq> I'm American. Offering Celsius was a courtesy.
22:24:49 <Phantom_Hoover> WHY WOULD YOU USE A SYSTEM WHICH IS FIXED AT SUCH STUPID POINTS
22:25:19 <Phantom_Hoover> NOÖNE EVEN KNOWS WHAT 100°F ACTUALLY WAS
22:25:40 <pumpkin> I want a system where water boils at 256 degrees
22:25:50 <pumpkin> and absolute 0 is 0
22:26:06 <pumpkin> furthermore, the standard notation for it should be in hex
22:26:23 <elliott> *absolute 0 is 0.0000037489894
22:26:27 <elliott> :trollface:
22:26:34 <pumpkin> ff.1e is almost boiling
22:27:03 <pumpkin> oh, and furthermore, it should be nonlinear
22:27:13 <pumpkin> so I want water to freeze at 128 degrees
22:27:14 <ais523> Phantom_Hoover: 100 F was meant to be body temperature
22:27:21 <pikhq> Oh, look, it'll be *above freezing* by Friday.
22:27:21 <ais523> and 0F was meant to be the freezing point of saturated salt water
22:27:29 <pumpkin> ais523: wow, a really smart, constant base to go by
22:27:31 <ais523> they're two temperatures which would have been easy to determine with the equipment at the time
22:27:40 <ais523> although 100F turned out to be not too reliable
22:27:52 <ais523> (0F is easier to measure than 0C, because saturating water is easier than purifying it)
22:34:36 * Phantom_Hoover → sleep
22:35:12 <fizzie> "In some countries, both systems are fairly prominent[weasel words], if not used equally.[citation needed]"
22:35:19 <fizzie> Oh, my, WEASEL WORDS.
22:35:55 <ais523> "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 <oerjan> <elliott> A lot of people here are, they've just been quiet lately.
23:16:02 <oerjan> well i'm usually too lazy to read all of it unless it's short
23:16:11 <elliott> :D
23:16:44 <oerjan> actually that's not laziness, even i have to do _some_ prioritization
23:17:09 <Sgeo> Can I learn ATS without learning SML first?
23:17:28 <elliott> really?
23:17:55 <oerjan> <kfr> It's the middle of the day for like 2 billion people
23:17:58 <Sgeo> It's just, I saw something comparing the syntax of ATS with the syntax of SML
23:18:11 <oerjan> afaik we don't have any indians or chinese here, though
23:18:54 <oerjan> hm wait that was during european day wasn't it
23:18:59 <Sgeo> Hah. I like ATS's infixl/infixr better than Haskell's
23:19:16 <oerjan> Sgeo: what's the difference?
23:19:26 <Sgeo> 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 <Sgeo> infixl (+) iadd fadd padd uadd
23:19:42 <fizzie> According to my timestamps, that was said at 12:48 Finnish time, so it would mean midday CET.
23:20:21 <oerjan> fizzie: WELL WHY WOULD YOU EXPECT ANYONE TO BE ON THE CHANNEL _THEN_?
23:21:09 <oerjan> dinner -->
23:22:56 <elliott> @pl \n -> fix (\me m -> if m+1 == n then m else me (m+1)) 0
23:22:57 <lambdabot> flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)
23:23:03 <elliott> > (flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)) 3
23:23:04 <lambdabot> Not in scope: `if''
23:23:41 -!- pumpkin has quit (Quit: Computer has gone to sleep.).
23:23:47 <elliott> @let
23:23:48 <lambdabot> Defined.
23:23:53 <elliott> @let if' x y z = if x then y else z
23:23:53 <lambdabot> Defined.
23:23:54 <elliott> > (flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)) 3
23:23:56 <lambdabot> 2
23:23:58 <elliott> > (flip fix 0 . (. (. (1 +))) . ap . join . (if' .) . (. (1 +)) . (==)) 0
23:24:02 <lambdabot> mueval-core: Time limit exceeded
23:24:29 <elliott> @pl \n -> fix (\me m -> if m+1 == n then 0 else 1+(me (m+1))) 0
23:24:30 <lambdabot> flip fix 0 . (. (((1 +) .) . (. (1 +)))) . ap . flip flip 0 . (if' .) . (. (1 +)) . (==)
23:24:34 <elliott> > (\n -> fix (\me m -> if m+1 == n then 0 else 1+(me (m+1))) 0) 3
23:24:35 <lambdabot> 2
23:24:42 <elliott> hm
23:26:06 -!- FireFly has quit (Quit: swatted to death).
23:32:55 <elliott> > let pred 1 = 0; pred (n+1) = 1 + pred n in pred 10
23:32:56 <lambdabot> <no location info>: Parse error in pattern
23:33:01 <Sgeo> Is there anything special about pure nonterrminating functions in ATS, or is it only pure terminating that are special?
23:33:10 <elliott> > let pred 1 = 0; pred n | n > 0 = 1 + pred (n-1) in pred 10
23:33:11 <lambdabot> 9
23:33:13 <elliott> > let pred 1 = 0; pred n | n > 0 = 1 + pred (n-1) in pred 0
23:33:14 <lambdabot> *Exception: <interactive>:3:4-46: Non-exhaustive patterns in function pred
23:33:20 <elliott> @let data X
23:33:20 <lambdabot> EmptyDataDecls is not enabled
23:33:29 <elliott> @let data Nat = Z | S Nat
23:33:29 <lambdabot> Invalid declaration
23:33:36 <elliott> oerjan: wat.
23:35:00 <Sgeo> Dear ATS website: Fuck you
23:35:00 <Sgeo> http://www.ats-lang.org/TUTORIAL/contents/types-with-effects.dats
23:35:14 <Sgeo> Oh, right. SourceForge.
23:36:03 <oerjan> elliott: lambdabot does not support data declarations.
23:36:16 <elliott> oerjan: but <lambdabot> EmptyDataDecls is not enabled
23:36:16 <elliott> :D
23:37:09 <oerjan> well it probably uses a generic parser first before checking what's actually _in_ the result. i suspect.
23:37:21 <elliott> @env
23:37:21 <lambdabot> Maybe you meant: v wn
23:37:23 <elliott> @djinn-env
23:37:23 <lambdabot> data () = ()
23:37:23 <lambdabot> data Either a b = Left a | Right b
23:37:23 <lambdabot> data Maybe a = Nothing | Just a
23:37:23 <lambdabot> data Bool = False | True
23:37:24 <lambdabot> data Void
23:37:26 <lambdabot> type Not x = x -> Void
23:37:28 <lambdabot> class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b
23:37:30 <lambdabot> class Eq a where (==) :: a -> a -> Bool
23:37:31 <lambdabot> data Twice a = Two a a
23:37:32 <elliott> > (\x -> undefined) :: Not a
23:37:33 <lambdabot> type Classical x = Not (Not x)
23:37:35 <lambdabot> Not in scope: type constructor or class `Not'
23:37:37 <lambdabot> type NotNot x = Not (Not x)
23:37:45 <elliott> :<
23:37:49 <elliott> are nats like that in any library>
23:37:50 <elliott> *library?
23:37:54 <elliott> @hoogle Nat
23:37:54 <lambdabot> Text.Parsec.Token natural :: GenTokenParser s u m -> ParsecT s u m Integer
23:37:54 <lambdabot> Text.ParserCombinators.Parsec.Token natural :: GenTokenParser s u m -> ParsecT s u m Integer
23:37:54 <lambdabot> Text.Parsec.Token naturalOrFloat :: GenTokenParser s u m -> ParsecT s u m (Either Integer Double)
23:40:14 <oerjan> oh right djinn does not support recursive types
23:41:22 <elliott> hm what's the same as Nat again? not "Maybe ()"
23:41:28 <elliott> quick oerjan how can i construct nat
23:41:30 <elliott> [()] i guess
23:41:32 <elliott> but that's ugly
23:42:27 <oerjan> :k Fix
23:42:28 <lambdabot> Not in scope: type constructor or class `Fix'
23:43:00 <Gregor> 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 <elliott> > let pred (():[]) = []; pred (():():n) = () : pred n in pred [(),(),(),(),()]
23:43:45 <lambdabot> [(),()]
23:43:52 <elliott> > let pred (():[]) = []; pred (():():n) = () : () : pred n in pred [(),(),(),(),()]
23:43:53 <lambdabot> [(),(),(),()]
23:44:00 <elliott> @pl let pred (():[]) = []; pred (():():n) = () : () : pred n in pred
23:44:00 <lambdabot> (line 1, column 14):
23:44:00 <lambdabot> unexpected "["
23:44:00 <lambdabot> expecting "()", natural, identifier, "_" or "("
23:44:04 <elliott> ???
23:44:17 <elliott> @pl let pred [()] = []; pred (():():n) = () : () : pred n in pred
23:44:17 <lambdabot> (line 1, column 10):
23:44:17 <lambdabot> unexpected "["
23:44:17 <lambdabot> expecting pattern or "="
23:44:21 <elliott> oerjan ha;lp
23:44:35 <oerjan> well i hear comcast is the only major isp in the us which is actually preparing for ipv6 transition...
23:44:41 <elliott> @pl fix (\me x -> case x of [()] -> []; () : () : n -> () : () : me n)
23:44:42 <lambdabot> (line 1, column 30):
23:44:42 <lambdabot> unexpected ">"
23:44:42 <lambdabot> expecting variable, "(", operator or ")"
23:44:44 <elliott> HALP
23:45:23 <elliott> @pl fix (\me x -> case x of (:) () [] -> []; (:) () ((:) () n) -> (:) () ((:) () (me n))
23:45:24 <lambdabot> (line 1, column 31):
23:45:24 <lambdabot> unexpected " "
23:45:24 <lambdabot> expecting variable, "(", operator or ")"
23:45:25 <elliott> @pl fix (\me x -> case x of (:) () [] -> []; (:) () ((:) () n) -> (:) () ((:) () (me n)))
23:45:26 <lambdabot> (line 1, column 31):
23:45:26 <lambdabot> unexpected " "
23:45:26 <lambdabot> expecting variable, "(", operator or ")"
23:45:26 <oerjan> you are abusing @pl in wais it was obviously not meant to be used; you deserve no halp
23:45:30 <oerjan> *ways
23:45:31 <elliott> oerjan: ;_;
23:45:37 <elliott> WHAT DID I DO WRONG
23:45:56 <oerjan> case is not @pl'able
23:46:06 <elliott> oerjan: is there an uncase? :)
23:46:37 <elliott> @pl let f x = if x == [()] then [] else () : () : f (tail (tail x)) in f
23:46:37 <lambdabot> (line 1, column 39):
23:46:37 <lambdabot> unexpected " "
23:46:37 <lambdabot> expecting variable, "(", operator, ";" or "in"
23:46:39 <elliott> oh come on
23:46:41 <oerjan> @pl \(x:l) -> l
23:46:41 <lambdabot> tail
23:46:47 <oerjan> ok it manages _that_
23:47:06 <oerjan> also @pl has a fugly parser, i think
23:47:14 <elliott> @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 <lambdabot> (line 1, column 88):
23:47:14 <lambdabot> unexpected reserved word "in"
23:47:14 <lambdabot> expecting variable, "(", operator or ")"
23:47:23 <elliott> ...what?!
23:47:33 <elliott> @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 <lambdabot> fix (ap (flip if' Nil . (Cons POOP Nil ==)) . ((Cons POOP . Cons POOP) .) . (. (tail . tail)))
23:47:36 <elliott> FINALLY
23:47:54 <elliott> fix (ap (flip if' [] . ([()] ==)) . (((:) () . (:) ()) .) . (. (tail . tail)))
23:47:56 <elliott> that's kinda ugly
23:47:57 <elliott> oerjan: deugly that
23:50:33 <oerjan> elliott: "tail"
23:50:51 <elliott> oerjan: ...:D
23:50:53 <elliott> oerjan: VERY GOOD POINT
23:51:05 <elliott> oerjan: the point is that it works in a language where you can't decrement
23:52:27 <oerjan> also, "init" may be closer to the spirit of it
23:53:18 <oerjan> elliott: oh. also it's buggy.
23:53:26 <oerjan> it will fail on even length lists
23:53:32 <elliott> oerjan: *you're* buggy.
23:54:01 <elliott> oerjan: but well. :p
23:54:07 <elliott> oerjan: i was inspired by your talking with olsner actually.
23:55:39 * oerjan may have already forgotten that
23:58:11 <elliott> oerjan: base-e/base-pi cat language
23:58:14 <elliott> ages ago
23:58:15 <elliott> months
23:59:10 <oerjan> huh
23:59:32 <elliott> oerjan: because you mentioned increment and decrement being the only fast operations
23:59:40 <elliott> but in Nock, decrement is O(n)
23:59:45 <elliott> because itw orks like my recursive function
23:59:45 <elliott> *it works
←2011-01-31 2011-02-01 2011-02-02→ ↑2011 ↑all