00:10:07 <elliott> TODO: make the display of branches somehow a table.
00:10:59 <Phantom__Hoover> So, who wants to see the stupidity I make up when scrambling to finish an essay at 12 o'clock?
00:13:32 -!- TLUL|afk has changed nick to TLUL.
00:16:45 <Phantom__Hoover> Advice welcome, since I suspect I'll have to hand this in for some exam or other.
00:22:42 -!- hagb4rd|afk has joined.
00:27:58 <oerjan> hagb4rd|afk: HOW CAN YOU JOIN WHEN YOU'RE AFK, THIS NO SENSE MAKE
00:30:39 <elliott> Phantom__Hoover: I refuse to review anything other than the originale ssay.
00:31:09 <elliott> Phantom__Hoover: \author{Phantom Hoover}
00:31:29 <Phantom__Hoover> I made no alteration to the text other than to change \author from my real name to... NOT GOING TO BE THAT EASY
00:32:05 <elliott> oerjan: what were those two name possibilities again
00:32:13 <elliott> Phantom__Hoover: FWIW, OS X has only had Comic Sans as of very recently, and Unix machines rarely ship with it.
00:32:18 <elliott> So I don't get this "every computer" stuff.
00:32:27 <elliott> "other operating systems rapidly followed suit" -- no they did not
00:32:50 <elliott> oerjan: of the two possible names ph can be
00:36:31 <oerjan> You may lie as much as you wish, as long as your grammar and spelling is impeccable.
00:36:55 -!- Wamanuz has quit (Ping timeout: 255 seconds).
00:38:36 -!- cheater00 has joined.
00:39:43 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
00:40:19 -!- hagb4rd|afk has changed nick to hagb4rd.
00:41:26 -!- Phantom__Hoover has quit (Quit: Leaving).
00:41:28 <hagb4rd> sry oerjan.. i was afk before i quit
00:41:33 <elliott> Vorpal: http://www.minecraftforum.net/viewtopic.php?f=25&t=128995
00:41:39 -!- cheater- has quit (Ping timeout: 240 seconds).
00:42:28 <hagb4rd> but to answer your question: remote control :p
00:43:44 <elliott> Vorpal: yeah from screenshots this relaly makes everything smoother
00:44:05 <oerjan> hagb4rd: what a ridiculous concept!
00:44:52 <elliott> Vorpal: also http://www.minecraftforum.net/viewtopic.php?f=25&t=128043 arbitrary shader mod!
00:45:08 <elliott> Vorpal: http://img443.imageshack.us/f/screenshot20110108at101.png/ if better light is better light, what is this? perfect light?
00:45:09 <hagb4rd> lets call it 'the creative moment of superposition'
00:45:50 <elliott> [[Do not distribute anything I've made. This includes the client and the server software for the game. This also includes modified versions of anything I've made.]]
00:45:57 <elliott> you can't redistribute the minecraft server which is available for free download
00:48:48 <hagb4rd> maybe me/you leak on trust for the culture of white man
00:52:06 <hagb4rd> [pretty nice track: http://www.youtube.com/watch?v=egdOBB-Z16c&fmt=18]
00:53:44 <pikhq> http://www.youtube.com/watch?v=7jzsrnTFhyQ I think I prefer this.
00:55:08 <elliott> Aza's texture pack looks nice...
00:55:08 <hagb4rd> oh.. u mean my mistranslated thompson quote :>
00:57:34 * elliott tries to flesh out list semantics.
00:58:01 <elliott> A list has a current selection. The arrow keys move this selection up/down or left/right (same thing) the list of focusable children.
00:58:26 <elliott> The E key can be pressed to cause the current selection to be focused. Before this, the current selection stays as the list's widget.
00:59:06 <elliott> The current selection's border is blue; other selections' borders are light grey. I might have some extra border colour for "selected and focused", but this is not very relevant, since you could tell by seeing whether there are any highlighted borders inside it.
00:59:42 <elliott> The D key defocuses the current selection, and returns to the list, with it still selected.
00:59:45 <elliott> Focusing a number makes it become blue-bordered, say, and then typing overwrites that number.
00:59:57 <elliott> So e123d, when a number is selected, would turn it into 123.
01:00:49 <elliott> The + or = key (not sure which) adds a new element after the current one in a list and selects it (but does not focus it, I don't *think*.)
01:01:02 <elliott> I should probably have an "insert before" key so that you can insert at the top of a list.
01:01:13 <elliott> If I do, then probably = should be insert after, and + should be insert before, since + is shifted = for me.
01:01:34 <elliott> So in an argument list, +e123d adds 123 as an argument after the current one.
01:02:04 <elliott> (Perhaps I should make sure that all examples have the same number of arguments? That could be a pain (although maybe not), but it would be nice if it could do that somehow and... automatically add blank arguments to the others? Not sure.)
01:02:11 <elliott> Actually, it would be +ie123d.
01:02:28 <elliott> Since + would take the type in an argument list; either integer (i) or list (l).
01:03:06 <elliott> So +le+ie123d+ie456d+ie789d adds the list [123 456 789] after the current argument.
01:03:12 <elliott> Or perhaps e should be implicit after +.
01:03:23 <elliott> In that case, it would be: (oh, and I'm using + to mean = here, i.e. insert after)
01:03:41 <elliott> That's certainly nicer, but perhaps more confusing. I'll have to see.
01:03:54 <elliott> Backspace or something deletes the current selection.
01:04:11 <elliott> In a set, obviously, everything gets sorted, so no matter where you add an element, it'll move to the right place after you enter the name.
01:04:23 <elliott> On that note: in a bag, there's an extra type other than i and l, f for function.
01:04:43 <elliott> But <enter> is used in place of d when writing a string. (Perhaps <enter> should be a synonym for d everywhere.)
01:05:00 <elliott> So +fesucc<enter> or +fsucc<enter> (if e is implicit) adds succ to the current bag.
01:05:23 <elliott> Other things I should probably have: keys to jump to the branch list and bag of the current function, no matter where you are in it.
01:05:35 <elliott> Also, a command called / which has you type in a function name, press enter, and it jumps there.
01:06:02 <elliott> I think this could actually work!
01:06:14 <elliott> Also, s or Cmd+s or whatever saves. Obviously.
01:06:27 <elliott> Saving will have to exit the current item if it's an integer or string to make sure it gets updated properly...
01:06:41 <elliott> I should probably also store history here, but I'm not sure how. Maybe just copy the whole thing on every change and store it in memory, the ghetto way. :p
01:11:12 <elliott> Also also, the focus starts on the program object, which is just a set of functions (well, really a dictionary, but you don't see that).
01:11:36 <elliott> There, + just takes a name and creates a function. Perhaps it should actually do an implicit "ee", i.e. enter into the function, and enter into the name.
01:11:44 <elliott> Obviously it would remove it if you try and name a function an existing name or whatever.
01:13:20 <elliott> http://www.minecraftforum.net/viewtopic.php?f=31&t=11997 The Minecraft Society of Blowing People's Chests Up.
01:15:09 <elliott> http://www.reddit.com/r/Minecraft/comments/ez76j/living_underground_playing_minecraft_in_moleman/
01:15:15 <elliott> I really want to do this as a two-person SMP thing.
01:48:59 <elliott> ...so basically, I keep a list index (or object references for sets? Or for everything? I have no direct object duplicates... eh, TODO: figure this out.) in each list object.
01:49:08 <elliott> And make sure it all gets highlighted and have bindings to move around that list.
01:49:14 <elliott> Then I just have a binding to focus the current index/whatever.
01:49:28 <elliott> Each widget itself has a key to focus its parent, which accomplishes "going up" one, i.e. exiting (d).
01:50:09 <elliott> Obviously integers just have to snarf the keys 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 and - when they're focused and do the obvious (*10)+.
01:50:16 <elliott> Although - might require some trickery.
01:50:26 <elliott> Maybe I should keep it as a string until the whole integer's written.
01:54:13 -!- TLUL has quit (Read error: Connection reset by peer).
01:54:45 -!- TLUL has joined.
01:57:14 <elliott> [["We" don't make us Ninjas or Rockstars - we still have the notion of "Monks". You might think this is stupid - on a cultural level you're basically comparing living the boheme with celebacy - guess what speaks to
01:57:16 <elliott> this is the silliest article ever
01:58:56 <elliott> "Ah Perl, a ... weapon ... from an ... age." —reddit
02:02:41 <elliott> http://www.youtube.com/watch?v=D1sXuHnf_lo Deldo, teledildonics for Emacs. WJW.
02:03:58 <elliott> Oh god he's having sex with Steve Yegge via Emacs. What is this.
02:06:01 <elliott> bahahaha networked teledildonics
02:07:53 <elliott> He's proposing teledildonical eugenics to wipe out vi.
02:11:12 -!- luatre has quit (Remote host closed the connection).
02:11:15 -!- elliott has quit (Remote host closed the connection).
02:23:18 -!- TLUL has changed nick to TLUL|afk.
02:31:17 <variable> would a language that does a random walk among all its instructions (and otherwise TC) be considered TC because it will *eventually* perform whatever it is that you actually intended
02:36:12 <oerjan> well that sounds like it would be an infinitely long computation, wouldn't it? and defining what it means for infinite computation models to be TC is very subtle
02:37:05 <oerjan> the thing is that you need some kind of output translation algorithm to look through the actual random walk to say what the final result is
02:38:12 <oerjan> and the question is then, is it your random walk or the output translation that is doing most of the _real_ computation?
02:39:11 <oerjan> this is a problem for such things as rule 110 cellular automaton and that minimal turing machine which ais523 proved
02:42:33 <oerjan> both of which require an infinite setup which calculates forever
02:44:06 <variable> rule 110 cellular automation ?
02:44:51 <oerjan> also to be nitpicking, theoretically TC should always be about computing a result somehow, whether it is also performing "actions" is fairly irrelevant
02:46:23 <oerjan> for the other one see http://www.wolframscience.com/prizes/tm23/solved.html
02:46:24 <variable> oerjan, so my question should have been "since it will eventually compute whatever it is you intended"
02:46:36 <variable> ps - nitpicky is good for me - it helps me learn
02:46:50 <oerjan> variable: well you see you have to have some way to decide on _one_ result to get out of it
02:47:29 <oerjan> (warning, everything wolfram is embedded in an ocean of hype)
02:49:48 <oerjan> it might compute as many other things it wants, but at the end you have to have a way to choose, and if that way is itself too computationally complex it is too easy to cheat
02:50:24 <variable> oerjan, so what your saying is that the chooser itself becomes what becomes TC so the random walk doesn't matter
02:50:47 <oerjan> that can happen yes. although sometimes there is a combination.
02:52:33 <oerjan> for the rule 110 automaton you need infinite setup and extraction of result but each of those is essentially still a finite state automaton (i think)
02:53:21 <oerjan> so in some sense they're still "simple"
02:54:54 <oerjan> for the 2,3-turing machine case the setup is even more complicated, and there was a debate about whether it was simple enough
02:55:55 <oerjan> (i recall ais523 telling that the output extraction was still a very simple check)
03:51:37 -!- pikhq has quit (Ping timeout: 276 seconds).
03:52:04 -!- pikhq has joined.
04:04:58 <augur> i think ive started to understand how continuation based backtracking works
04:09:00 -!- TLUL|afk has changed nick to TLUL.
04:10:27 -!- hagb4rd has quit (Ping timeout: 240 seconds).
04:11:37 -!- azaq231 has joined.
04:11:39 -!- azaq231 has quit (Client Quit).
04:11:50 -!- azaq231 has joined.
04:12:04 -!- azaq231 has quit (Changing host).
04:12:04 -!- azaq231 has joined.
04:13:05 -!- azaq23 has quit (Ping timeout: 276 seconds).
04:15:38 <oklopol> here's my essay about comic sans: "Comic Sans is not monospaced, nuff said."
04:16:17 <oerjan> "Comic Sans is not monospaced", Nuff said.
04:16:56 * pikhq finds it funny how bad people are at driving in snow.
04:17:18 <pikhq> "Oh my god there's half an inch of snow! I CAN'T DRIVE!"
04:17:25 <pikhq> (for you non-Americans, that's 1 or 2 cm)
04:19:33 <pikhq> oerjan: Ballpark figures get ballpark conversions from me.
04:20:05 <oerjan> 1.270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
04:20:19 <pikhq> The 0s are irrelevant digits!
04:20:25 -!- poiuy_qwert has joined.
04:20:33 <oerjan> YOUR digits are irrelephant!
04:20:38 <pikhq> An inch is *defined as* precisely 25.4e-3 m!
04:20:56 <oklopol> that was sort of his point
04:21:55 <pikhq> I actually saw people *parked on the side of the road*.
04:22:21 <oklopol> what's the significance of that, said the foreigner?
04:22:40 <oklopol> do americans only use fancy big parking lotw
04:22:51 <pikhq> oklopol: Their thoughts were "Oh fuck it's too bad I'm going to wait this out".
04:23:02 <oklopol> oh like just a random road
04:23:09 <pikhq> oklopol: Meanwhile I'm driving by at ~45 mph (~70 kph).
04:23:19 <oklopol> i suppose that's sort of the definition of road
04:23:49 <oklopol> we rarely have half an inch of snow on the roads because people drive about as much as in the summer
04:24:11 <oklopol> well. probably much less, but you don't need that many cars to remove the snow.
04:24:32 <pikhq> It happens when it's snowing pretty well, and it's evening.
04:24:46 <oklopol> i don't actually own a car
04:26:13 <oklopol> should prolly go to uni and try to study a bit
04:29:14 <oklopol> oerjan: i think i now understand the green's stuff completely, the lemmas are just because you first prove that there is a kind of inverse element for each *pair* of identity elements in the same D class, for D = L \circle R (an eq relation), that is, for each x, eRx, fLx where e and f are idempotents, there is a unique fRyLe such that xy=e, yx=f
04:29:48 <oklopol> which is actually pretty easy, but you have to guess what y is, by building it from the elements used in the implementations of L and R relations
04:30:04 <oklopol> with the same meaning of implementation as i used yesterday
04:30:43 <oklopol> so xRy ~ xs = y, ys' = x would mean s and s' implement the relation, not sure that's a good term but anyhows
04:31:25 <oklopol> and the really complex looking lemma i listed yesterday is actually very simple when you think of it in terms of these diagrams representing D classes
04:32:31 <oklopol> D = R \circle L so have R classes as rows and L classes as columns, then what the lemma says, or on of the things, is that if left multiplication takes an element in an R class a to another R class b, then actually the whole class a is bijected onto b
04:33:18 -!- hagb4rd has joined.
04:33:49 <oklopol> and L classes are preserved when multiplying a's elements from the left (by that element we chose), since well obviously because there's another element whose multiplication from the left inverts the operation
04:34:10 <oklopol> it's not really very clear this way either, but trust me, it's clear when you draw a diagram and move your fingers along it!
04:35:41 <oklopol> anyhow so in short, H classes within one R class a are bijected onto H classes of the other R class b, if you multiply from the left by an element implementing the L relation between two elements x \in a, y \in b
04:36:31 <oerjan> i think i'll run away screaming now
04:37:22 <oklopol> the stuff in the inverse semigroups chapter is waaaaaaaay more complicated
04:38:13 <oklopol> i'd love to rant about it but
04:38:19 <oklopol> i should probably read it once more
04:38:26 <oklopol> and to do that, i should probably leave
04:38:59 <oklopol> inverse element of x is y such that xyx = x, yxy = y
04:39:08 <oklopol> inverse semigroup = all have unique inverses
04:39:30 <oerjan> in short my brain is not capable of this stuff today
04:39:47 <oklopol> the trace of a congruence is the restriction of it on the semilattice of idempotents (nontrivial that it's a semilattice, essentially needs the same proof we spend hours on back when)
04:40:13 <oerjan> as long as you don't mind speaking to yourself
04:40:17 <oklopol> now for each congruence on an inverse semigroup
04:40:26 <oklopol> well you might not be listening, but others might!
04:41:33 <oerjan> http://www.ninjapirate.com/newcomputer.html
04:41:36 <oklopol> let p be a congruence, we can define p_{min} = complicated shit; then we can prove, using a page of dense impossibl- to-understand algebration, that p_{min} is the smallest congruence with the same trace
04:41:57 <oklopol> and that's the greatest sexiness eva
04:42:45 <oklopol> such a uniqueness of minimul suchness is not the case for all regular semigroups
04:42:58 <oklopol> and in the case of groups, that is an empty definition
04:43:04 <oklopol> as is usually the case in semigroup theory
04:43:11 <oklopol> which is essentially the theory of idempotents afaiu
04:43:36 <oklopol> okay rant over, you don't have to feel bad about me wasting my time anymore
04:53:22 -!- pikhq has quit (Ping timeout: 250 seconds).
04:56:38 <oklopol> i'll continue after the exam, try to get your brain up and running with puzzles and shit while i'm gone k?!
04:59:26 <oklopol> i should actually try to clean up this place, i moved about a week ago, and i still haven't moved a single object
04:59:32 <oklopol> well, maybe like 5 objects
04:59:52 <oklopol> so it's possible i won't be here all day
05:00:02 <oklopol> apparently it's super hard
05:00:08 -!- Wamanuz has joined.
05:00:25 <oklopol> according to the guy who deduced how clue works from ski
05:01:25 <oklopol> but i'm sure i'll manage with 5 hours of sleep
05:07:53 <Sgeo> My new favorite game is Super PSTW
05:08:10 <oerjan> we'll have to update shutup then
05:08:31 * oerjan has no idea what Super PSTW is anyhow
05:08:38 <Sgeo> http://www.newgrounds.com/portal/view/495903
05:11:27 -!- pikhq has joined.
05:14:38 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
05:18:04 -!- pikhq has quit (Ping timeout: 250 seconds).
06:01:00 <oerjan> _definitely_ time to update shutup
06:01:50 <Sgeo> oerjan, it will need to be provided with an AI capable of determining when I'm expressing an interest in something new.
06:05:12 <Sgeo> Well, this sounds like a lot of redundant typing that Haskell eliminates via the IO monad
06:05:20 -!- Wamanuz has quit (Ping timeout: 264 seconds).
06:05:47 <Sgeo> [Mercury IO predicates manually take in and give back the state of the world]
06:06:22 <Sgeo> Naming all these intermediate states quickly becomes tedious, so Mercury
06:06:22 <Sgeo> provides us with syntactic sugar in the form of state variables"
06:10:29 <Sgeo> I'll look at it in more detail tomorrow
06:10:37 <Sgeo> Just got confused by a line that looks backwards
06:14:02 -!- FireFly has joined.
06:27:10 -!- oerjan has quit (Quit: leaving).
06:32:08 -!- TLUL has changed nick to TLUL|rlybusy.
06:33:14 -!- Wamanuz has joined.
06:51:42 -!- oerjan has joined.
07:01:29 -!- Zuu has quit (Read error: Connection reset by peer).
07:01:40 -!- Zuu has joined.
07:05:10 -!- zzo38 has joined.
07:07:25 <zzo38> Quick! Everyone count to zero!
07:07:32 -!- zzo38 has changed nick to Quick_Everyone_c.
07:07:34 -!- Quick_Everyone_c has quit (Client Quit).
07:08:11 <oerjan> at last a request we can fill
07:12:30 <quintopia> i didn't do it though. this isn't #irp
07:13:32 <oerjan> watch me count to zero again:
07:14:32 -!- Wamanuz has quit (Ping timeout: 240 seconds).
07:14:51 <quintopia> he didn't say to start counting at 1
07:14:59 <quintopia> most computer scientists start at zero
07:15:03 <oerjan> that's the default duh
07:15:05 <quintopia> and that requires counting at least zero
07:15:37 <oerjan> ...you show me an average computer scientist who starts at zero when counting actual items
07:16:14 <quintopia> he didn't ask anyone to count actual items
07:16:32 <quintopia> stop making up arbitrary situations where you're right and i'm not :P
07:19:07 <Sgeo> oerjan, me, out of habit, on occasion
07:19:25 <Sgeo> *counting chairs to remember where I sit* 0, 1, 2,
07:19:41 <oerjan> supergeeks don't count
07:21:01 <quintopia> i have an annoying bug or something that is pissing me off. my microSD card unmounts always and only when i copy files to it
07:21:06 * oerjan reads up on the no true computer scientist fallacy
07:21:14 <quintopia> creating files on it is fine, copying files from it is fine.
07:21:38 <quintopia> i want to punt it but then i'd lose it...it's too small
07:24:57 <quintopia> still fails and unmounts but takes longer in doing it
07:25:24 <oerjan> what about touch followed by cat >> ?
07:26:35 <oerjan> does the size of the file copied matter?
07:26:48 <quintopia> well, i tried a pretty small one and it failed
07:28:54 <fizzie> How about a slow-speed write with something like perl -e 'open IN, "<:raw", "/input/file"; open OUT, ">:raw", "/output/file"; while (read IN, $data, 512) { print OUT $data; sleep 1; }' -- that's half a kilobyte per second.
07:29:55 <quintopia> apparently half a kilobyte is too big
07:30:08 <oerjan> is that the block size?
07:30:12 <quintopia> i just tried to echo 10 lines of t's into a file and it failed
07:30:34 <oerjan> what happens if you echo >> 10 times?
07:32:23 <quintopia> it appears to fail as soon as the file reaches a certain (extremely small size)
07:33:21 <oerjan> i'm just wondering if it's absolute file size or just amount written in one go
07:34:10 <quintopia> apparently if i wait long enough between appending 80 or so bytes at a time i can make big files
07:34:38 * quintopia tries the perl script with a 80 byte rate
07:34:40 <oerjan> oh so it's not enought to close in between, you have to wait?
07:35:03 <quintopia> echoing really quick in a row still breaks it
07:35:20 <fizzie> You could try echo + sync + echo + sync; though that sort of thing is probably going to wear out the card quicker.
07:35:31 <fizzie> They have to always erase a full block when writing, after all.
07:36:08 <quintopia> odds are it's an issue with the card reader
07:40:15 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
07:40:49 -!- Phantom_Hoover has joined.
07:41:34 * quintopia is now writing a file at 40 bytes/sec >_>
07:42:57 <oerjan> now if this slow speed means it syncs so that it does that erase a full block everything thing...
07:47:55 <fizzie> Phantom_Hoover: MINDLINK. I had committed-and-pushed a (very preliminary probably broken) //save command (which saves the so-far received block data, sans signs, furnaces and chests, into a hopefully Minecraft-compatible world-dir) about an hour before you had that feature request.
07:48:40 <Phantom_Hoover> fizzie, HOW DARE YOU STEAL MY THOUGHTS BEFORE I EVEN THINK THEM
07:48:52 <fizzie> If it's any consolation, it probably doesn't work.
07:49:46 * oerjan wonders if he is witnessing the birth of a meme
07:50:15 <fizzie> I've only tried the resulting world with pynemap, and, well, http://zem.fi/~fis/pynemap.png -- there's a bit of it that's missing.
07:50:40 <fizzie> Also the lighting values are likely to be very worng.
07:51:06 <fizzie> And the heightmap I know is mirrored over the x=z line.
07:51:34 <fizzie> (The heightmap is used as a speedup for computing the final light values from block-light and skylight, or some-such.)
07:53:07 <oerjan> Phantom_Hoover: http://www.reddit.com/r/fffffffuuuuuuuuuuuu/comments/eybba/dark_captcha_magic/
07:53:16 <Phantom_Hoover> fizzie, it's good enough for my plot to blow up Mt. Vorpal locally.
07:53:31 -!- azaq231 has left (?).
07:53:51 <oerjan> and of course http://www.reddit.com/r/Inglip/
07:53:52 <fizzie> Phantom_Hoover: You shouldn't say stuff like that before actually verifying whether it works in the actual game at all.
07:54:27 <oerjan> Phantom_Hoover: possibly
07:54:39 <oerjan> hm i guess that means it may have troubles competing
07:55:22 <Phantom_Hoover> Zalgo does have something of a monopoly on the field of memetic Lovecraftian horrors.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:01 <oerjan> this Inglip seems a teeny bit reluctant though
08:02:26 -!- FireFly has quit (Quit: swatted to death).
08:05:30 <fizzie> Phantom_Hoover: It is possible you may fall into your death.
08:06:08 <fizzie> I'd have tried it myself, but I always get queasy when there are glitches in 3D-y games.
08:06:40 <fizzie> Oh no! Wait, what? Where's the "not" in that sentence?
08:06:41 <Phantom_Hoover> I spawned on Mt. Vorpal, and I saw the skyway in the distance.
08:08:02 <fizzie> The experience must've been so horrible, it robbed him of the power of speech. How tragic!
08:08:12 <Phantom_Hoover> Heh, it even captured the front half of nailor's cabin.
08:11:04 <Phantom_Hoover> At this point I just want to load hMod locally and give myself a load of TNT.
08:11:35 <fizzie> You can server-command-'give' yourself 64 blocks of TNT even without any hMods.
08:12:01 <fizzie> The //save-enabled mcmap build will use 2.5 times as much memory as the normal version, which is a bit of a shame. I should possibly do the whole "persist far-away chunks to file" thing the usual client does; then there wouldn't be a separate //save, it'd be intemagrated.
08:13:02 <olsner> use mmap:ed memory for everything? :>
08:14:25 <fizzie> olsner: Just plain old data-structure dumps won't be combattible with the official client on-disk formats, unfortunately.
08:14:58 <olsner> well, yeah... unless your memory format is compatible
08:17:06 <fizzie> The NBT thing it uses is a bit uncomfortable to work with.
08:17:10 <fizzie> Oh, and it needs to be gzipped.
08:21:22 <olsner> oh, screw that then :) but you can always build converters from your format to official-client format
08:41:46 -!- wth has joined.
08:46:20 -!- wth has left (?).
08:57:48 <Phantom_Hoover> Huh. Dynamite disappears after a short time, and doesn't do anything when punched.
09:12:31 -!- wth has joined.
09:13:13 -!- wth has quit (Remote host closed the connection).
09:13:35 -!- wth has joined.
09:14:30 -!- wth has quit (Remote host closed the connection).
09:18:18 -!- GreaseMonkey has quit (Quit: ilua).
09:23:35 <fizzie> I just hope you don't get confused, accidentally connect to the real server, and then explode the *beep* out of it.
09:28:26 <Phantom_Hoover> fizzie, I don't have 5 stacks of dynamite on the real server.
09:28:59 <Phantom_Hoover> Also, the amount of TNT I used on your house seems to have broken the world...
09:31:22 <fizzie> So this is how the world ends.
09:49:27 -!- quintopi1 has joined.
09:50:10 -!- quintopi1 has quit (Client Quit).
10:43:23 -!- copumpkin has quit (Ping timeout: 240 seconds).
10:43:59 -!- copumpkin has joined.
10:44:01 -!- copumpkin has quit (Changing host).
10:44:01 -!- copumpkin has joined.
10:50:05 <Vorpal> fizzie, oh it saves now? excellent.
10:50:48 <fizzie> It seems to sorta-work for some purposes, but it's all reasonably experimental still.
10:51:26 <Vorpal> fizzie, how does one enable this saving?
10:52:38 <fizzie> There's just a command to dump the currently-in-memory world into a directory. "//save" (which uses "world" in current dir), or "//save dir" if you want to specify where it goes.
10:53:06 <Vorpal> fizzie, also how comes that part of the --help output is localised to Swedish?
10:54:26 <Vorpal> fizzie, hm is it able to dump a larger area than that which the server lets you see at a single point in time?
10:55:21 <fizzie> It dumps whatever you have seen during the "session".
10:56:45 <fizzie> I'll probably make it also load an existing dump and in general auto-persist the world on disk at some point, in order to reduce memory use for long-running game sessions where you wander around far and wide.
10:57:07 <fizzie> (Plus that way you'll have the map from the previous session as "background"; should probably shade it or something to indicate it may be out-of-date, though.)
10:57:33 <Vorpal> fizzie, might be a good idea to be able to turn off this tracking in case you don't want that memory overhead. Like when I play on my local test server.
10:58:18 <fizzie> There is currently no way for it to forget any chunks, but there probably should.
10:58:51 <Vorpal> fizzie, any way to tell when it finished saving?
10:58:58 <Vorpal> oh wait, there it comes
10:59:12 <fizzie> Yes, it's suspiciously slow.
10:59:44 <Vorpal> Phantom_Hoover, well it is your local copy. As long as it doesn't happen on the actual server. *shrug*
11:00:14 * oerjan has a feeling Vorpal wasn't supposed to have noticed that :D
11:00:24 <Vorpal> Phantom_Hoover, I did read scrollback :P
11:01:14 <Phantom_Hoover> Vorpal, I used an insane amount of TNT on fizzie's place and it corrupted the world data after crashing the server.
11:01:39 <Vorpal> Phantom_Hoover, did you find fizzie's hidden chest by any chance?
11:01:59 <Vorpal> Phantom_Hoover, another question: do signs and such things work? Chests?
11:02:07 <Vorpal> or do you get empty signs and chests?
11:02:35 <Phantom_Hoover> (Although I still looked inside them on the actual server.)
11:03:26 <Vorpal> Phantom_Hoover, I don't care what you do with your local copy as long as you don't steal anything on the actual server and don't mess it up there either.
11:04:15 <Vorpal> Phantom_Hoover, notice I have never messed up your place so far, so I assume you won't mess up mine. :)
11:04:53 <Vorpal> Phantom_Hoover, not on the actual server I presume?
11:05:00 <fizzie> Chests will be empty, and signs will be gone completely.
11:05:10 <fizzie> Also furnaces should disappear.
11:05:18 <fizzie> (For some values of "should".)
11:05:25 <fizzie> Possibly just their contents.
11:05:28 <Vorpal> maybe we need an extension like realms or similar. I hope we don't
11:05:40 <fizzie> Okay, then it's just their contents.
11:05:55 <Vorpal> fizzie, what about crops?
11:06:01 <fizzie> Those should be there.
11:06:14 <Vorpal> fizzie, but isn't the growth stored as aux data?
11:06:44 <fizzie> You can compile-time disable that, though it will also disable //save.
11:09:25 <fizzie> What will not be stored in the //save dump are Entities (mobs, items, paintings, vehicles, primed TNT and currently falling sand) and TileEntities (furnace and chest contents, signs, mob spawner details).
11:09:43 <Vorpal> fizzie, wait, paintings are entities!?
11:09:51 <Vorpal> that explains why they don't work on SMP
11:12:35 <Vorpal> Phantom_Hoover, what happened?
11:12:42 <Phantom_Hoover> It's a jumbled mess of saved chunks and generated ones.
11:13:00 <Vorpal> fizzie, btw: any progress on the surface-and-heightmap corruption bug?
11:13:11 <Vorpal> Phantom_Hoover, huh, did you save before everything loaded?
11:13:33 <fizzie> Vorpal: Not really. I stared at it, but didn't figure it out.
11:13:46 <fizzie> Yes, it's probably best to wait that the situation is "stable".
11:14:21 <fizzie> The hashmap walk will probably fail in the middle of the save (silently, to boot) if it's modified (read: chunk-update for a so far unseen chunk) during the save.
11:15:45 <fizzie> Except that saving and updates are done by the same thread, so that shouldn't happen.
11:15:45 <Vorpal> fizzie, that must happen a lot since the save takes like 20-30 seconds?
11:16:55 <Vorpal> have fun in your local copy
11:17:50 <Vorpal> Phantom_Hoover, remember that you only need 5000 TNT going off at once to blow up one obsidian!
11:18:48 <Vorpal> Phantom_Hoover, to make sure they go off at once I suggest redstone wiring. Be sure to time them right when it comes to inverters (so every TNT have the same number of inverters on the path to it)
11:19:19 <Vorpal> however I'm not sure what this will do to the server
11:19:31 <Vorpal> fizzie, is door position saved btw?
11:19:54 <Vorpal> Phantom_Hoover, well, where is your local spawn then?
11:20:10 <Vorpal> Phantom_Hoover, presumably the area around that spawn is protected
11:20:20 <Phantom_Hoover> That doesn't really explain it; some other chunks are unprotected.
11:20:43 <Vorpal> Phantom_Hoover, do you have admin rights on your local hmod server?
11:20:59 <Phantom_Hoover> No, but again, that doesn't explain *why* they have the protection.
11:21:14 <Phantom_Hoover> And I got another world-destroying NullPointerException.
11:21:18 <Vorpal> Phantom_Hoover, any weird plugins?
11:21:32 <Vorpal> Phantom_Hoover, I assume you made a copy before starting the local server?
11:21:36 <Vorpal> if not do that for the next time
11:21:39 <fizzie> Phantom_Hoover: The world spawn position may be set to something rather weird.
11:22:22 <fizzie> Well, it's supposed to be set to wherever you appeared first when connecting.
11:23:01 <fizzie> (I just took the first PLAYER_MOVE packet sent by the server.)
11:23:55 <fizzie> I should probably take the last seen SPAWN_POSITION packet. (Currently I don't look at those at all.)
11:24:19 <fizzie> Though then it'd be the regular spawn, which might easily be outside the //save'd region.
11:24:28 <fizzie> Possibly I could just use player position at //save time.
11:24:42 <fizzie> Phantom_Hoover: In the house or in the bunker?
11:24:57 <fizzie> Then it's empty on the real server too.
11:25:05 <Phantom_Hoover> Well, I detonated a TNT charge in it and I found a chest.
11:25:08 <Vorpal> based on checking with the interactive map viewer minutor (rather good, and very quick and responsive) the dump I made worked fine
11:26:07 <Vorpal> Phantom_Hoover, the TNT room will hold up just fine. And in case of nuclear war I have always planned to block the door up with obsidian. (since steel door won't last for long against TNT)
11:26:44 <Vorpal> fizzie, does the server send the random seed to the client or?
11:26:52 <Phantom_Hoover> Well, I just got into the bunker without even bothering with the doors.
11:27:21 <Vorpal> Phantom_Hoover, fizzie's bunker you mean?
11:27:43 <fizzie> Yes, it's like single block of stone and one layer of dirt.
11:27:47 <fizzie> And yes, the random seed is sent.
11:28:10 <Vorpal> btw it seems you can get bedrock holes again in recent versions
11:28:27 <Vorpal> you know those underground lakes? And lava lakes at non-standard altitudes?
11:28:43 <fizzie> Yes, I've heard you can get a lake over bedrock.
11:28:47 <Vorpal> they can result in holes in the bedrock when they end up at a suitable altitude for that
11:29:07 <fizzie> Re the random seed, you'll of course get post-halloween map-generation even on blocks that would be pre-halloween on our server, if they don't end up in the //save-dump.
11:30:16 <fizzie> I didn't have mcmap when I started with the bunker, which sort-of explains why it's so near the surface. Didn't bother thinking about where I were inside the mountain.
11:30:35 <fizzie> That's also the reason the storage room is L-shaped; I was making it a long I-shaped one, but I hit the mountain wall.
11:32:55 <Vorpal> fizzie, an idea for mcmap which would be cool but is not really high priority: ability to load an image and overlay it on terrain with, say, 25% alpha or such. Perfect when you are doing mega-engineering. Currently I did this with cartographer + gimp but cartographer takes ages.
11:33:40 <Vorpal> it is also useful to check that you did indeed get it right between the point of planning it and it being finished. So you can check the dimensions halfway
11:34:41 <Vorpal> (still the map corruption bug is more important than that idea)
11:36:45 <fizzie> Mhm, well, sure; that could be done.
11:37:24 <fizzie> Phantom_Hoover: Well done. Though blabbing on-channel is a bit impolite!
11:37:40 <fizzie> Now someone will steal all my treasureres.
11:37:46 <Vorpal> fizzie, let me tell you that it would be a sanity saver when working on a 200x200 sized structure. :P And so would fixing the corruption bug when working on the upper parts of said structure
11:38:22 <Vorpal> fizzie, really it was quite easy to find it already with mcmap
11:38:51 <Vorpal> fizzie, I had a hunch it was around there since some time when I had mcmap in mode 2 when visiting you and noticed a 1x2 black thing in the wall
11:46:52 <Phantom_Hoover> Well, for the hell of it, I'm going to send down a 5x5 raft of TNT.
11:53:27 -!- TLUL|rlybusy has quit (Quit: *disappears in a puff of orange smoke*).
11:54:56 <Vorpal> hm is the area around spawn never unloaded on servers?
11:55:17 <Vorpal> if so that is the perfect place to place some redstone stuff that should run all the time
11:57:15 <fizzie> "NOTE: This event is not suitable for undergraduate students". I wonder what sort of DIRTY PORNOGRAPHY they're going to show in this three-hour MathWorks-given "Programming Techniques to Speed up MATLAB/Parallel Computing with MATLAB/Symbolic Computing with MATLAB" seminar.
11:58:47 <Vorpal> fizzie, you have a rather strange mind. Personally it seems perfectly innocent to me. Just meaning "this is too technical for that group" or such
11:59:37 <fizzie> There's no chance whatsover that a three-hour PR session is going to be "too technical" for undergraduates; there must be another reason.
12:00:27 <fizzie> They're not going to come here just out of a desire to be helpful.
12:00:38 <Vorpal> fizzie, are you going to go there?
12:01:04 <fizzie> I don't know. It's three hours I'd never get back; and ineiros attended the previous one and I think it was a bit "meh", IIRC.
12:01:40 <fizzie> On the other hand, there's a half-hour "Break", which might include free cookies.
12:02:49 <fizzie> On the third hand, I didn't know people were actually doing symbolic stuff with MATLAB; that smells a bit desperate to me.
12:03:52 <fizzie> Apparently they've (MathWorks, that is) bought a symbolic algebra company and "integrated" their product as a MATLAB Toolbox now. (Well, now == 2008 in this case.)
12:03:58 <fizzie> (Cf. http://en.wikipedia.org/wiki/MuPAD)
12:07:53 <ineiros> fizzie: They had some useful advice.
12:08:30 <ineiros> fizzie: Though you could get 85% of the information in 15 minutes by reading the slides they provided.
12:08:54 <fizzie> Gawds, I hate the parcel-tracking of the Finnish post office; it has a textfield which auto-empties itself whenever it gains focus. So if you have, say, a parcel ID code in another browser tab in a non-pasteable form, you have to either remember the whole 17-digit number, or transcribe it elsewhere first for pasting. (Because if you write down only part of it, it'll get erased when you switch back to the tab.)
12:12:36 <fizzie> At least it's just the front-page quick-link textfield that does it; the actual tracking-page field doesn't.
12:17:53 <Vorpal> fizzie, in a non-pastable form?
12:18:59 <Vorpal> fizzie, like an image?
12:19:29 <fizzie> Yes. For some unfathomable reason, the "delivered via the web-e-post-system" hey-we-have-your-parcel notes are scan-like images of the ones they deliver on paper.
12:20:16 <fizzie> I guess they're not really scans, since evince does manage to extract text from the "open as PDF" version.
12:20:37 <fizzie> But the thing shown in the web-system is a bona-fide image.
12:21:27 <fizzie> I guess they are "imagey" because they want the bar code to appear properly, and there are form fields for signatures and whatever on it.
12:21:49 <fizzie> Also, the PDF variants have the dubious distinction of being unprintable from Evince.
12:26:07 <Vorpal> fizzie, evince respects copy protection?
12:26:23 <fizzie> No, it just prints them... well, I'll take a photo.
12:26:44 <Vorpal> fizzie, does it work in other pdf viewers, such as okular?
12:26:56 <fizzie> It works with acroread.
12:27:13 <Vorpal> I had problems printing pdf on some computers but not on other ones
12:27:21 <fizzie> It also shows up just fine on-screen in Evince, it's just the printout that turns out like http://users.ics.tkk.fi/htkallas/20110110_001.jpg (the red blocks are my own redactions).
12:27:39 <Vorpal> mostly from my desktop running arch, and it seems to have been related to a cups upgrade.
12:27:45 <Vorpal> (it seems to work again now)
12:28:15 <Vorpal> fizzie, ah different type of garbling
12:28:17 <fizzie> The barcode in the Evince print is correct, so theoretically speaking it might be that I could use that printout to claim the parcel; I've never bothered to try, though.
12:28:30 <Vorpal> fizzie, also I see some was *red*acted ;P
12:28:56 <fizzie> That was just my name and address, and I'm not exactly sure why I bothered, since it's not especially difficult to find out.
12:29:21 <fizzie> Well, also the sender company's name.
12:31:06 <Vorpal> fizzie, hm. Must have been some dirty MathWorks thing then ;P
12:32:04 <fizzie> You caught me: it was a package full of toolboxes. (Well no, not really.)
12:41:41 -!- cheater- has joined.
12:42:52 -!- cheater00 has quit (Ping timeout: 240 seconds).
13:03:39 -!- cheater- has quit (Ping timeout: 240 seconds).
13:04:53 -!- cheater- has joined.
13:09:21 <Vorpal> Phantom_Hoover, speaking of movecraft and chests: worldedit managed to move a chest with the //move command just fine. So probably isn't too hard
13:19:28 <fizzie> I have a feeling that in these server-side inventory times, chest contents are only sent on-demand, so //save can't dump chest contents unless the player actually looks inside.
13:23:12 <Vorpal> fizzie, btw if it helps: the map corruption bug doesn't happen only when placing blocks up high through the client. If you use worldedit to set a block at similar altitudes it also happens. So presumably related to chunk update rather than sending "place block here" kind of message
13:24:46 <fizzie> I've been dumping the chunk-update/set-block/multi-set-block messages, but haven't figured it out yet. I think next thing I'll try (later, though) is to dump only those packets that actually cause map-visible changes. The server keeps sending all kinds of inconsequential block-set packets quite often.
13:24:58 <fizzie> Like setting empty blocks to air, or grass to grass, or leaves to leaves.
13:26:10 <fizzie> Was it so that the topo-map also got corrupted?
13:27:05 <Vorpal> fizzie, haven't seen mode 2 or 3 get corrupted though
13:27:35 <Vorpal> fizzie, so maybe it is not a bug in how you handle the messages but in how you update the surface map?
13:28:12 <Vorpal> fizzie, tried valgrind? Otherwise I'll do it if you tell me how to make a debug build of mcmap
13:29:30 <fizzie> At least a short "okay, it got corrupted" test got no valgrind errors. But of course most of the memory around there is allocated as largeish blocks, and valgrind can't really notice if I just mess up indexing or something.
13:30:11 <Vorpal> fizzie, valgrind in memcheck mode won't tell if you enter another valid object
13:30:28 <Vorpal> fizzie, exp-ptrcheck or ptrcheck-exp or whatever it was called
13:30:32 <Vorpal> for the --tool parameter
13:30:41 <Vorpal> (note: probably even slower than the default memcheck)
13:30:50 <Vorpal> that tracks pointers jumping between objects
13:31:55 <fizzie> The current surface-map update logic is approximately: if placing a block with type T and Y >= current topmost non-air block: set surface on that point to T and height to Y. Then if T was air: rescan from Y down to 0 to find the highest non-air block. Set surface map to that block, and height to that height.
13:32:19 <Vorpal> fizzie, also something I noticed is that the orientation of the player marker seems to lag behind when you rotate the view while in a boat
13:32:53 <fizzie> Mhm, yes, I don't think I track the "entity-look" packets at all.
13:33:09 <Vorpal> fizzie, well it does change, it just lags behind a bit
13:34:59 <Vorpal> fizzie, hm what happens if you try to teleport with mcmap while in a boat?
13:35:35 <fizzie> I don't really know how it sends looking-around while in a vehicle. For location once you've "attached" to a vehicle, it will send only (0, -999, 0) or some-such as the location; for the view direction it might be more complicated, since there's both the current boat-direction as well as the player view direction.
13:35:52 <fizzie> Perhaps an "illegal move" and a blocked teleport.
13:36:00 <Vorpal> fizzie, -999, how strange
13:36:08 <fizzie> Yes, it was some sort of a nonsense value.
13:36:53 <Vorpal> fizzie, that kind of "explains" that "placing block in the 999 bug z plane"-bug I read about recently though. For some very weird values of explains.
13:37:25 <fizzie> I don't know what sort of packets the client sends when you're "driving" a boat, either.
13:38:15 <fizzie> The usual entity-move packets are all marked as server-to-client only.
13:39:03 <Vorpal> fizzie, in mcmap or in protocol docs?
13:39:16 <fizzie> In protocol docs, though of course those aren't any more official.
13:41:55 -!- oerjan has quit (Quit: Good night).
13:51:05 <Vorpal> fizzie, yeah exploring with mcmap made the system swap trash now
13:51:42 <Vorpal> fizzie, how did you say you disabled this at compile time?
13:52:01 <fizzie> Comment out the FEAT_IFORGETTHENAME #define in config.h and rebuild.
13:52:13 <fizzie> FULLCHUNK or some-such.
13:52:43 <Vorpal> yeah there is only one there, not too hard to find
13:53:09 <fizzie> The forthcoming "unload far-away chunks on disk" code will probably make it easy to also provide a (runtime) mode where it just forgets faraway blocks. They're always re-sent by the server for the client, anyway.
13:54:20 <fizzie> (Though the hash-map based chunk storage isn't the best one for a "which chunks are outside this box?" query.)
14:06:17 <Vorpal> fizzie, hm is it just me or were the pre-halloween seas much larger than the ones you get nowdays?
14:06:42 <fizzie> I haven't really looked at any large-scale maps.
14:08:51 <fizzie> Heh, there's a (custom) minecraft terrain generator that comes with a FUSE filesystem module; you can mount it into a "world" directory and that way get on-the-fly terrain generator inside an unmodified client. That's quite a clever (if weird) trick.
14:09:31 <fizzie> http://www.nuke24.net/projects/TMCMG/
14:09:38 <fizzie> I don't know about the quality of terrain it generates.
14:10:46 -!- FireFly has joined.
14:12:33 <Vorpal> fizzie, well the current terrain generator in beta have some issues with desert biome edges. Looks like blocks that contain both sand and grass ends up with wrong rotation. So that the edge blocks are rotated away from the desert.
14:12:40 <Vorpal> at least it looks like that on a map
14:13:00 <fizzie> Yes, I've wondered about the edges on the map too.
14:21:42 <Vorpal> Phantom_Hoover, that site needs example screenshots from minecraft of the results of using it
14:22:20 <Vorpal> Phantom_Hoover, hard to tell how awesome it is
14:23:11 <Vorpal> fizzie, uh, fuse is on the todo list? https://github.com/TOGoS/TMCMG/raw/master/doc/todo.txt
14:23:25 <fizzie> It also exists already.
14:23:41 <fizzie> https://github.com/TOGoS/TMCMG/raw/master/README "Using with GeneratorFS"
14:24:38 <oklopol> fizzie: coordinates by any chance?
14:25:18 <fizzie> oklopol: No coordinates for you! (That is, I don't really know what's causing the crash in the Windows version.)
14:25:34 <fizzie> How does it fail for you, anyway? For me it just seems to go into a 100% CPU-wastage loop and hang up.
14:25:47 <Vorpal> oklopol, didn't it work when you used it last time and other people spoke?
14:33:00 <oklopol> fizzie: timeout in mc, and the program just disconnects and crashes after a while afaiu
14:33:07 <oklopol> but i could check at some point
14:33:16 <oklopol> Vorpal: it worked for a while
14:33:32 <oklopol> so the bug can't just be that when people talk, it crashes
14:33:39 <oklopol> that's kinda important, maybe, fizzie
14:35:10 <fizzie> Yes, it's a bit of a show-stopper, admittedly.
14:35:11 <oklopol> "<fizzie> http://www.nuke24.net/projects/TMCMG/" "<fizzie> I don't know about the quality of terrain it generates." <<< it's a programming language, it generates what you ask
14:35:17 <oklopol> but basically what you can do is
14:35:50 <oklopol> you have the perlin function, which is a pseudorandom function that gives you random constant size bumps, you can scale it, and gets big bumps and small bumps on top.
14:36:27 <oklopol> and things like cutoffs for different kinds of terrains are easy to do as well, although it's one of the horriblest languages out there
14:36:33 <oklopol> made a couple levels for friends
14:36:50 <oklopol> or one level for them, and a couple for myself, rather
14:37:07 <oklopol> fizzie: i meant, knowing that may be important
14:38:03 <oklopol> maybe the most retarded thing is that you actually have the 3d perlin function
14:38:15 <Vorpal> <Phantom_Hoover> Great, fuse requires root access. <-- hm... so it does. But I thought only for the initial mount, and for the unmount. Not in between?
14:38:26 <oklopol> but you can't actually say things like insert the 3d coordinates to perlin, and if it goes over cutoff, put diamond here
14:38:38 <oklopol> so you have to reimplement the whole 3d perlin idea by using 2d perlin
14:38:44 <oklopol> or at least, i couldn't find a better way
14:39:16 <fizzie> Oh. Right, right. I'd try a debugger to see where it's hung up, but I don't quite know how to debug a wine-running executable. I'm sure it's somehow possible, though.
14:40:18 <oklopol> also the "fractal" command is quite a letdown in tmcmg
14:40:47 <oklopol> it just means you constant amount of levels of smaller and smaller grained bumps
14:40:59 <oklopol> *you add together a constant
14:41:59 <oklopol> unless i misunderstood it, i never actually tried it because if i understood it correctly, it's pretty useless
14:42:51 <Vorpal> oklopol, how comes you know so much about TMCMG?
14:44:27 <oklopol> i know pretty much everything about it because i read the documentation so i could make a level with it
14:44:36 <oklopol> the docs are like one page
14:44:51 <Vorpal> oklopol, did it work well in the end?
14:44:52 <oklopol> you can call the perlin function, and do basic math on the result.
14:45:19 <oklopol> well i just wanted a world mostly full of sand, so yeah i succeeded well enough :D
14:46:23 <oklopol> there were also some oases
14:46:44 <oklopol> so i made a cutoff that added water and dirt
14:46:53 <oklopol> the perlin function idea makes randomness very nice to handle
14:47:48 <oklopol> because like water and dirt can just look for the same cutoff, and add themselves on different levels below sand level
14:48:06 <Vorpal> hm nice worldedit has a //smooth command that you can use to patch up heightmap edges in the scenery. Mostly for the halloween ones. It seems to work decently when the difference in height is 0-20, but doesn't work very well if more than that. At least not when you only select like 10 blocks on each side of the border. (Tried it on artificial border since my local testing server doesn't have any pre-hal
14:49:10 <Vorpal> oklopol, so for a given x,y,z perlin always return the same value?
14:49:40 <Vorpal> oklopol, any way to add a fourth parameter if you want to randomise different things for the same coord.
14:49:49 <oklopol> you can just add 10000 to the y coordinate to get another perlin function
14:50:18 <oklopol> because you'll actually be using the 3d perlin function to get *heights* of ground at different x, z spots
14:50:57 <oklopol> i don't know if that y+100000 thing was the author's idea originally, to me it seems kinda retarded that you can't just say "put sand where 3d perlin spikes"
14:51:18 <oklopol> you have to have put sand from 1 to perlin height
14:51:30 <oklopol> i mean, in certain cases the former is much better
14:51:34 <oklopol> like in the case of resources
14:51:43 <Vorpal> so what PRNG algorithm is this perlin?
14:51:55 <oklopol> it's a well-known algorithm i first heard about when i read that documentation
14:52:05 <oklopol> of course, he doesn't say anything about the grain size
14:52:28 <fizzie> It's a well-known algorithm I first heard about when I was looking at landscape generation ages ago.
14:52:35 <oklopol> so you have to trial and error that out, unless you know what the standard size is in perlin implementations (he surely didn't write the prng himself)
14:52:46 <fizzie> But it does appear in things like procedural textures quite often.
14:53:19 <oklopol> take a random map of 0 and 1, and add smooth transitions? :P
14:53:24 <Vorpal> oklopol, you could check the source to find out what the grain size is
14:53:35 <fizzie> "The implementation [of simplex noise] used by TMCMG seems to have lower average amplitude than perlin noise, so you may want to multiply the output more to get a similar effect." -- yes, I don't think either one was written by the author here.
14:53:36 <Phantom_Hoover> If it added the wreckage of a spaceship to your spawn point.
14:53:51 <Vorpal> Phantom_Hoover, being less laggy is like 1000 times more important atm
14:53:54 <oklopol> Vorpal: it's not necessarily easy to see there
14:54:12 <Vorpal> Phantom_Hoover, better cpu maybe
14:54:19 <oklopol> fizzie: was that from the tbtmbmtmbtmb page?
14:54:44 <fizzie> oklopol: From it's readme, yes.
14:55:14 <Vorpal> Phantom_Hoover, SMP works fine but in SSP it stutters a lot. And no it isn't low FPS as such, but seemingly random delays a few times every second. Between the FPS seems decent
14:55:48 <oklopol> that comment is a bit ridiculous, since you'll have to adjust your intuition on what perlin looks like to fit the mc scale anyway
14:56:14 <oklopol> unless he means the hills are actually different shape or something, in which case multiplication doesn't help
14:57:27 <Vorpal> fizzie, that is for simplex. He is just comparing perlin to simplex?
14:57:48 <fizzie> Yes. But it sounds like both implementations come mostly-cribbed from some external source.
14:58:21 -!- MigoMipo has joined.
14:58:23 <oklopol> you can tell by the programming language that he either doesn't have a very firm grip on what he's doing, or the project was a really really quick hack
14:58:29 <Vorpal> the idea of that program is good but the implementation seems poor. I guess it is a perfect fit for minecraft then
14:59:19 <oklopol> the language is just silly, or, well, tell me if you like the way argument passing is handled, in my opinion it was really annoying to use
15:00:20 <Vorpal> wikipedia on perlin noise: "The function has a pseudo-random appearance, yet all of its visual details are the same size (see image)." <-- the image doesn't explain what it means here. Exactly what is a "visual detail" and how do you measure it.
15:01:03 <oklopol> i doubt there's a definition that makes it more clear than that
15:01:19 <Vorpal> oklopol, do you mean the width of the white parts such?
15:01:38 -!- Wamanuz has joined.
15:01:40 <Vorpal> which is approximately the same it seems.
15:02:01 <oklopol> it's not white noise, it's a desert
15:02:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:02:23 <Vorpal> oklopol, uh does "desert" have some technical meaning in this context?
15:02:36 <oklopol> just a desert. not really the best possible way to put it.
15:02:58 <oklopol> deserts have waves, not bumps
15:05:01 <Vorpal> oklopol, deserts can have that but there are different types. Stony ones for example.
15:07:41 <Phantom_Hoover> Vorpal, surely it's clear what visual details means here.
15:07:54 <Vorpal> Phantom_Hoover, but is it rigorous?
15:08:14 <Phantom_Hoover> Vorpal, you could formulate it in terms of self-similarity.
15:08:42 <Vorpal> Phantom_Hoover, hm. That might work yes
15:13:04 <oklopol> i would formulate it based on some sort of second order differential, how fast, on average, the slope is changing
15:13:15 <oklopol> dunno what you mean by self-similarity
15:13:35 -!- BeholdMyGlory has joined.
15:14:23 <oklopol> slope change + average i suppose
15:14:46 <oklopol> well, dunno if that works, it's a characteristic but maybe not really sufficient
15:15:27 <Vorpal> oklopol, I assumed he meant to define it by the fractal nature of it somehow-
15:16:07 <Vorpal> oklopol, hm maybe not.
15:16:11 <Vorpal> your way sounds better
15:16:13 <oklopol> isn't that exactly what it doesn't have
15:16:22 -!- Mathnerd314 has joined.
15:16:34 <oklopol> because if you look at it from further away, it will look *different*, bumps are smaller
15:17:06 <Vorpal> oklopol, so define it by the lack of fractal nature?
15:18:18 <Phantom_Hoover> <oklopol> it has fractal nature? ← that's my point, there's no fractalness.
15:18:20 <oklopol> it's just "fractal nature" and fractals in general make my "meaningless bullshit" sensor tick, sort like turing completeness, heard one meaning less too many
15:18:37 <Phantom_Hoover> You can't make it look the same by scaling up or down.
15:19:27 <Vorpal> Phantom_Hoover, but since it is PRNG won't it eventually cycle? Given a large enough region.
15:19:52 <oklopol> first of all a prng doesn't have to cycle even if it's just a function from integers
15:20:45 <oklopol> at least not in a sense that would mean grains appear again
15:21:47 <Vorpal> oklopol, however I guess it might when expanding to a larger region being generated at the same zoom level.
15:22:06 <oklopol> what is true is that if you hold a constant size slot of bits B, compute some random value, and recompute the contents of B to get a new seed, then certainly the random values will cycle
15:22:21 <oklopol> Vorpal: might, doesn't have to tho
15:23:04 <oklopol> it could increase state as it moves further, and do more complicated computation
15:23:42 <oklopol> if nth bit can be computed in O(1) after computing the n-1 first ones, then it'll eventually cycle, i think
15:23:54 <oklopol> but not sure if that's amortized
15:24:08 <oklopol> really i'm so tired i might be spouting complete bullshit here.
15:24:30 <oklopol> *not sure that's true if the O(1) is amortized
15:24:46 <oklopol> it's not even true if it's not amortized, actually
15:24:55 <oklopol> for instance you could have it print 01001000100001 etc
15:25:01 <cheater-> oklopol: http://www.secretmaryo.org/index.php?page=game_downloads
15:25:23 <oklopol> that constant sequence is not very random, but at least my theorem is not true
15:25:42 <oklopol> so yeah, spouting bullshit here, you may just as well ignore me till tomorrow
15:25:57 -!- copumpkin has joined.
15:26:31 <cheater-> no i mean the "ignore until tomorrow"
15:26:47 <oklopol> why did you give it to *me*?
15:26:55 <cheater-> oklopol: you were in the blasting radius
15:27:00 <oklopol> cheater-: i was just kidding too, i'm very often wrong
15:27:09 <cheater-> oklopol: not true! you're always right.
15:28:01 <oklopol> i wanna talk to him about semigrops
15:28:15 <oklopol> oh right, i told him i would, so he's probably in a bunker somewhere
15:31:28 <Phantom_Hoover> Have all of the things to say about semigroups not already been said?
15:33:17 <oklopol> iirc at least one of the branches of the current theory is about a very special case of inverse semigroups, which are exactly semigroups of partial injective functions
15:34:08 <oklopol> should know what that special case was
15:34:23 <oklopol> but anyway it's a reeeeeally beautiful theory
15:34:30 <oklopol> inverse semigroups are much sexier than groups
15:34:48 <oklopol> (they are a superset of groups tho)
15:35:09 <Vorpal> oklopol, out of curiosity, what exactly is a semigroup?
15:35:24 <oklopol> set is closed under the op
15:35:37 <Vorpal> oklopol, isn't that what a group is? (set + operation)?
15:35:50 <oklopol> associativity means (a*b)*c = a*(b*c)
15:36:01 <Vorpal> I know what associativity is in general yes.
15:36:30 <oklopol> Vorpal: groups always have inverses, and they always have an identity element
15:36:46 <oklopol> and a semigroup with identity but not necessarily inverses is a monoid
15:37:17 <Vorpal> oklopol, "not necessarily" as in "some members of the set might have inverses"?
15:37:58 <oklopol> and monoids are semigroups
15:39:22 <oklopol> it's a weird name, i didn't like it at first, but now it's just a name to me
15:40:24 <oklopol> Vorpal: regular semigroups on the other hand have inverses (with a different definition), but not necessarily an identity element
15:40:30 <Vorpal> oklopol, would the set of all nxn matrices for a given constant n and the operation matrix multiplication be a semi-group?
15:40:41 <oklopol> (in fact if they have an identity, they are just groups)
15:40:47 <Vorpal> (or monid even I guess)
15:41:18 <Vorpal> oklopol, well obviously not a group indeed. Not all elements have inverses
15:41:25 <Vorpal> oklopol, *that* bit is trivial :P
15:41:28 <oklopol> Phantom_Hoover: no monoid is 2/3 isn't it?
15:41:54 <oklopol> Vorpal: what is not trivial then? the fact that matrix multiplication is associative is pretty obvious if you think of them as linear transformations
15:42:17 <Vorpal> oklopol, well, I was just wondering if there was some other snag.
15:42:22 <oklopol> Phantom_Hoover: x's inverse is a y such that x = xyx
15:43:04 <oklopol> or maybe it's not strictly obvious that it's associative even if you think about them as linear transformations, but anyhow everyone knows that!
15:43:20 <Vorpal> oklopol, hm x = xyx doesn't imply y = yxy in such a case I guess?
15:43:39 <oklopol> Phantom_Hoover: inverse semigroups are when you assume a *unique* x^-1 such that x and x^-1 are each other's inverses
15:44:15 <oklopol> Vorpal: it doesn't, necessarily, although you can prove that in a regular semigroup, all elements x have a pair y such that x = xyx, y = yxy
15:44:51 <Vorpal> oklopol, what property guarantees that?
15:44:55 <oklopol> in fact, if x = xyx, then x = xyx = x.yxy.x, and yxy.x.yxy = yxy, so yxy is such a pair
15:45:04 <oklopol> Vorpal: my proof guarantees it
15:45:22 <oklopol> i can clarify if you're not used to following that kind of stuff
15:45:38 <oklopol> well maybe that's easy to read
15:45:39 <Vorpal> oklopol, what is the . there in that notation
15:46:03 -!- elliott has joined.
15:46:26 <Vorpal> oklopol, you need to drop associativity for that to no longer work I guess
15:46:48 <oklopol> yeah associativity is very crucial, because it allows rewriting strings context-freely
15:46:57 <oklopol> i mean context sensitively
15:47:16 <oklopol> you can rewrite something, and then use parts of it in another rewrite
15:48:18 <oklopol> in xyx = x.yxy.x, i rewrite the x.y.x to x.y.xyx, but then i split the result in a different way to obtain x.yxy.x
15:48:34 <Vorpal> oklopol, I never disputed this
15:48:41 <oklopol> not a very good example because i don't actually use that new decomposition for anything, but that was all i had
15:48:57 <oklopol> Vorpal: just trying to make it clear what i mean
15:49:14 <oklopol> because IT WAS SOOOOOOO COMPLEX
15:49:42 <Vorpal> oklopol, not really no
15:49:52 <Vorpal> oklopol, it was clear once you said what you meant by . :P
15:50:33 <oklopol> oh, when i said why associativity is crucial, i wasn't talking about that example, but proving things for semigroups in general
15:52:02 <oklopol> so a semilattice is a semigroup such that all its elements are idempotent x^2 = x, and its elements commute, xy = yx; let S be an inverse semigroup, let us prove its idempotents form a semilattice under the semigroup operation
15:52:09 <oklopol> let e, f be two idempotents
15:52:17 <oklopol> consider the unique inverse x of ef
15:52:32 -!- copumpkin has quit (Ping timeout: 246 seconds).
15:52:43 <oklopol> ef = efxef = ef.xe.ef = ef.fe.ef by the fact e and f are idempotent
15:52:44 <Vorpal> oklopol, err can't say I'm very familiar with lattices
15:52:57 <elliott> 21:00:25 <oklopol> according to the guy who deduced how clue works from ski
15:53:10 <oklopol> also xe.ef.xe = x.ef.xe = xe because x is the inverse of ef
15:54:00 <oklopol> now, xx = xe.fx = x because x is ef's inverse => x is an idempotent
15:54:19 <oklopol> but if x is an idempotent, then x^3 = x, and so x is its own unique inverse, which must mean x = ef!
15:54:30 <oklopol> therefore, the product of two idempotents is idempotent
15:54:36 <oklopol> now, let's prove commutativity
15:55:00 <Vorpal> oklopol, so what is a lattice then? (And isn't that word used for different things in different areas of mathematics)
15:55:05 <oklopol> ef and fe are idempotent by what we already proved, ef.fe.ef = ef.ef = ef by the fact e and f are idempotents
15:55:18 <oklopol> so ef and fe are each other's unique inverses
15:55:25 <oklopol> but again, they are also their own inverses => ef = fe
15:55:48 <oklopol> elliott: not completely, he knew the basic idea.
15:55:52 <elliott> Vorpal: wtf happened to your throne room
15:56:00 <Vorpal> elliott, something happened to it?
15:56:06 <oklopol> Vorpal: you don't have to be familiar with lattices, since i was talking about semilattices :D
15:56:52 <oklopol> a lattice is something more complicated, if you remember what boolean algebras were (the abstract axiom-based definition), lattices are boolean algebras with a few less axioms.
15:56:57 <Vorpal> elliott, I'll check soon. Minecraft.net seems down. But then I suspect PH. He talked about doing it in a local copy saved with mcmap (it has that feature now) but if he did it on the server then fuck him.
15:57:18 <oklopol> basically, there isn't necessarily a "0" or "1", and there is no complementation
15:57:27 <oklopol> just union and intersection
15:58:08 <oklopol> (that have to satisfy a series of axioms, they don't actually have to be unions or intersections on a set though, just arbitrary binary ops that satisfy the axioms)
15:58:43 <Vorpal> elliott, not blown up?
15:58:54 <oklopol> anyhow that's one of my favorite proofs, why aren't you more excited :(
15:59:30 <Vorpal> Phantom_Hoover, oh elliott?
15:59:43 <elliott> I just wanted to see if you'd freak
16:00:13 <Vorpal> elliott, hardly more than you would if told that the cube was blown up (once done). You would probably also go online to check :P
16:01:10 <elliott> Vorpal: No, I'd go online and immediately destroy Mount Vorpal, most likely.
16:01:16 <oklopol> also everyone knows elliott is a crazy mythomaniac
16:01:17 <elliott> NOTE TO PEOPLE WHO WANT TO BLOW UP THE CUBE: probably a bad idea.
16:01:41 <elliott> oklopol: so anyway i designed cled in the logs
16:01:47 <Vorpal> elliott, why on earth. It could have been nailor.
16:01:57 <oklopol> too UNINTERESTING; didn't read
16:02:12 <Vorpal> elliott, and I wouldn't blow it up. I'm not like you.
16:02:30 <elliott> Vorpal: It's more like an incentive for everyone because they'd have to listen to you scream if it happened
16:02:33 <elliott> Phantom_Hoover: So how fucked up is the lighting?
16:02:33 <oklopol> nailor's door was locked :(
16:03:26 <Phantom_Hoover> <elliott> Vorpal: No, I'd go online and immediately destroy Mount Vorpal, most likely. ← did that on the local copy.
16:03:40 <Phantom_Hoover> I ended up corrupting the world file due to Notch-quality engineering.
16:04:50 <elliott> 02:56:45 <fizzie> I'll probably make it also load an existing dump and in general auto-persist the world on disk at some point, in order to reduce memory use for long-running game sessions where you wander around far and wide.
16:04:52 -!- copumpkin has joined.
16:05:00 <elliott> fizzie: Do it the sane way; just use mmap and let the OS handle it for you.
16:05:22 <Vorpal> elliott, you realise that isn't sane when there is a shitload of small files?
16:05:31 <Vorpal> as opposed to a number of large ones
16:05:42 <elliott> Vorpal: Umm, he should store them in one file and then convert for //save, duh.
16:05:48 <elliott> No reason to be as stupidly-architectured as the client.
16:05:51 <Vorpal> elliott, many files are smaller than the page size. Besides they are gzip compressed.
16:06:01 <Phantom_Hoover> And mcmap's internal data structures are different to MC's internal ones.
16:06:07 <Vorpal> elliott, still, do you suggest storing them uncompressed?
16:06:15 <Vorpal> elliott, that would be huge.
16:06:22 <elliott> It's just for what you've seen in the current session...
16:07:03 <Vorpal> yes it sounds like it would be able to load dumps when starting?
16:07:27 <Vorpal> meaning they would be between sessions
16:08:35 <Sgeo> elliott, to get something like Slate working on Windows, would I compile using Cygwin, or MinGW?
16:08:42 * Sgeo barely knows the difference
16:08:58 <elliott> fizzie: mcmap -c on OS X gives me unloaded chunks all around my current location.
16:09:16 <elliott> Sgeo: or just use linux, it's unlikely to work on win.
16:10:25 <elliott> fizzie: Dude, is it totally broken for everyone else?
16:14:40 -!- Sgeo_ has joined.
16:16:11 <elliott> Vorpal: to build debug mcmap, make debug=1
16:17:16 -!- Sgeo has quit (Ping timeout: 240 seconds).
16:17:22 <Vorpal> elliott, I guess the symlink at ./mcmap will no longer work?
16:17:39 <elliott> I refuse to answer that yourself since you can figure it out in 3 seconds.
16:17:47 <Sgeo_> elliott, do you know Mercury?
16:17:48 <elliott> Also, separating normal and debug builds is a good thing.
16:17:51 <elliott> Actually, you don't need to clean.
16:17:55 <elliott> make debug=1 will put it in _debug.
16:18:01 <elliott> So you can keep your current build.
16:18:01 <Vorpal> elliott, yes it is a good idea to separate them
16:32:56 -!- Wamanuz has quit (Ping timeout: 264 seconds).
16:54:21 <oklopol> Phantom_Hoover: if you still come back, wanna tell me if i'm on your map?
16:54:50 <oklopol> i didn't go *that* far, and i was thinking settling down
16:55:58 <oklopol> you're blowing it up locally or what?
16:56:31 <oklopol> just checking, not a good time building a home if you're abandoning the world or something
16:57:24 <elliott> also oklopol building a house? weird
16:58:40 -!- poiuy_qwert has joined.
17:00:11 -!- Vorpal has quit (Ping timeout: 272 seconds).
17:00:13 <cheater-> oklopol: so, i heard i was trying to disprove clue works at all
17:00:47 <cheater-> oklopol: i sometimes do things without knowing. i'm sorry if you felt bad about my sleepwalking argumentative self
17:01:13 <oklopol> i didn't feel bad about anything
17:01:16 * elliott compiles a few clue programs
17:01:24 <elliott> shit, you're right, it actually just spews out python errors :D
17:01:34 <elliott> $ python repl.py qsort.clue
17:02:05 -!- Vorpal has joined.
17:08:25 <elliott> oklopol: omg cled is actually working :D
17:09:04 <elliott> oklopol: http://i.imgur.com/M27fK.png
17:09:12 <elliott> oklopol: this is a graphical representation of {. 0 1 -> 1 . 0 5 -> 5 }
17:09:23 <elliott> i can even move about and ascend and descend the tree and everything
17:09:45 <elliott> Sgeo_: that was removed a while ago
17:09:59 <elliott> also i can press cmd+s and it prints the tree
17:10:31 <oklopol> i don't get why i had the comma, i never have those in my languages
17:11:19 <elliott> oklopol: dude http://i.imgur.com/M27fK.png
17:11:24 <elliott> LOOK AT THE BEAUTIFUL UGLY?
17:12:10 -!- cheater00 has joined.
17:12:40 <elliott> oklopol: in fact it's very similar to aardappel, since in aardappel you name func params with example values :P
17:12:43 <elliott> clue just does it PROPERLY
17:13:53 -!- cheater- has quit (Ping timeout: 240 seconds).
17:15:42 <Sgeo_> I saw ---> as a solid arrow and was wondering how it would be typed in a real program
17:16:40 <elliott> Sgeo_: With cled, -> IS a solid arrow! http://i.imgur.com/M27fK.png
17:17:06 * Sgeo_ is talking about Mercury
17:18:44 <oklopol> yeah, was just thinking that
17:19:13 <elliott> oklopol: was just thinking what
17:19:28 <oklopol> aardappel has a property clue has, and you're making an editor that looks like a non-ugly version of the aardappel editod
17:19:57 <elliott> oklopol: i wouldn't exactly call that screenshot non-ugly, but at least it doesn't have stupid pictures everywhere :)
17:20:02 <oklopol> Phantom_Hoover: i have forgotten all context
17:20:03 <elliott> also you can't really edit aardappel with the keyboard
17:20:06 <elliott> whereas all of this is keyboard-based
17:20:17 <oklopol> want you to help me, that i do yes, if you log in, check if i'm on your map
17:20:26 <elliott> oklopol: in fact I think that editing with this will take quite a bit fewer keystrokes than editing wtih a file
17:21:40 <elliott> oklopol: i gotta say something though
17:21:49 <elliott> oklopol: why can't you have zero-arg functions in clue
17:22:11 <Sgeo_> \" (had the database
17:22:11 <Sgeo_> community known about maybe types they never would have invented NULLs
17:22:11 <Sgeo_> and wrecked the relational model. . . "
17:22:19 <oklopol> i just didn't want zero arg functions
17:22:36 <fizzie> Meh: GLib-GIO:ERROR:gsocket.c:2347:remove_condition_watch: assertion failed: (g_list_find (socket->priv->requested_conditions, condition) != NULL)
17:22:43 <elliott> oklopol: you can't define _ in clue, that's not very elegant :)
17:22:45 <oklopol> because they are completely useless, and {. -> 3 } looks wrong
17:22:58 <elliott> oklopol: so useless that you defined one as a primitive
17:23:16 <oklopol> yeah that used to be useful
17:23:20 <elliott> oklopol: ok well... why can't you return multiple values
17:23:25 <elliott> that would be more symmetrical
17:23:25 <oklopol> and it will be again, when i add higher-order funcs
17:23:35 <oklopol> you should definitely be able to return multiple values
17:23:48 <oklopol> that's even more important than multiparam
17:24:00 <oklopol> multiparam is more dangerous
17:24:09 <elliott> oklopol: what would f(multiple value returner(x)) do
17:24:25 <oklopol> in clue, you don't have to think about that
17:24:48 <elliott> presumably None or whatever
17:24:51 <elliott> and the code gen would arrange for like
17:24:57 <elliott> multiple value returner@2(x)
17:25:13 <elliott> oklopol: now what i'd really like to be possible
17:25:23 <elliott> oklopol: you wanna know why?
17:25:31 <elliott> oklopol: as it is, currently, in cled, the program is not always a valid ast
17:25:42 <elliott> oklopol: when you create an example, it creates two Hole objects (or, well, it will when i code that)
17:25:48 <elliott> these can't be serialised to value clue
17:25:54 <elliott> they're just so that you can enter them, specify what type they are
17:26:05 <elliott> if you could have N inputs and N outputs, it could just have two empty input and output lists
17:26:09 <elliott> and you'd add them at your leisure
17:26:19 <elliott> and the tree would always be a valid clue tree
17:27:23 -!- poiuy_qwert has quit (Read error: Connection reset by peer).
17:27:47 <oklopol> zero inputs and outputs would work just fine if "side-effects" are ever added, which i might just do at some point, not the binary output stream approach tho
17:28:06 <elliott> oklopol: ew no side-effects, that's so lame
17:28:16 <elliott> oklopol: but uh, basically a function with zero outputs would never be called I think
17:28:18 <elliott> as part of a generated program
17:28:30 <elliott> because you can only call a function as (func@(result number)(params))
17:28:34 <elliott> and since result numbers start at 0
17:28:38 <elliott> there's no valid number for a zero-output function
17:28:43 <elliott> but the point is, it'd make cled more elegant :)
17:28:52 <elliott> since having the tree in an invalid state is just lame
17:29:02 <elliott> it could have you specify the inputs and outputs before it let you do anything else, but that feels annoyingly restricting
17:29:04 <oklopol> it could be called, it's output just wouldn't be numbered
17:29:13 <oklopol> with the current implementation, no, it wouldn't be called
17:30:02 <elliott> oklopol: well the way i see it is the simplest way to impl it would be to turn every func call from
17:30:17 <cheater00> oklopol: ok, if you didn't feel bad, but elliott has given me shit already, maybe i should start talking shit about clue, just to cash in my debt ;p
17:30:24 <elliott> that way you can't have f(multiple args(foo)), it's always f(multiple args@0(foo)) or @1 etc
17:30:36 <elliott> so since 0 is first result, for a zero input function, there is no valid @ number
17:31:30 <oklopol> ENOUGHEONUGENOUGHEOUGNEOUGHE
17:32:39 <oklopol> no i thought that was a good ending
17:32:49 <elliott> oklopol: so uh got any suggestions for cled that don't involve holes
17:32:56 <elliott> it could be that if you + to add an example
17:33:03 <oklopol> i just play minecraft and be a happy!
17:33:16 <elliott> oklopol: so um is clue abandoned :p
17:33:36 <variable> Perl is a general purpose language. It's also known to be the only widespread use obfuscated language.
17:33:46 <cheater00> oklopol: so do u vant to normalize clue?
17:34:06 -!- poiuy_qwert has joined.
17:34:08 <cheater00> oklopol: i think clue could actually lift off really well, there's nothing else that does what clue does
17:34:19 <elliott> that's funny, this channel has only been witness to "perl is esolang" sentiments about 1000000 times :D
17:34:24 <oklopol> cheater00: it could totally become mainstream!
17:34:40 <cheater00> and with the current extreme TDD approach and python lifting off it could make me famous
17:34:40 <oklopol> but i'm not working on it today, no
17:34:52 <cheater00> but the idea is to come up with a spec
17:35:03 <fizzie> Gnar, I don't get why the Win build fails; it is as if it just decides to close the connection.
17:35:06 <elliott> i think some random anon added it and nobody bothered to remove it.
17:35:17 <variable> elliott, it should be kept - tis true
17:35:22 <fizzie> oklopol: I don't suppose you see any sort of "GLib-GIO" error message on your end when it goes?
17:35:47 <elliott> but esoteric shouldn't be applied to every language just because people think it's weird.
17:35:48 <oklopol> fizzie: doesn't ring a bell
17:36:05 <elliott> lol @ cheater00 thinking clue is practical
17:36:07 <fizzie> I get one, but I don't know, it might be just a side-effect of the connection disconnectering.
17:36:19 <oklopol> hey clue is TOTALLY practical
17:36:59 -!- copumpkin has quit (Ping timeout: 276 seconds).
17:37:09 -!- copumpkin has joined.
17:37:13 <elliott> oklopol: you have to swear now to always use cled for everything
17:37:14 <cheater00> oklopol: i believe it could become a practical language
17:37:19 <elliott> cheater00: it really couldn't :)
17:37:20 <cheater00> and/or framework for existing languages
17:37:27 <elliott> it seems like it could, before you figure out how it actually works.
17:37:47 <oklopol> for certain values of practical
17:37:52 <variable> elliott, what should I call my random chance language ?
17:37:59 <cheater00> oklopol: i feel it's a fairly new paradigm
17:38:20 <cheater00> oklopol: i think in fact what you got right now - the language in itself - is just very basic
17:38:28 <elliott> also, it's a new paradigm because it's amazingly stupid ... in that puttign it into practice is nearly impossible
17:38:40 <cheater00> elliott: it's how retarded people pronounce troll.
17:39:14 <cheater00> oklopol: i think you could have multiple very languages very distant from eachother, derived from clue, just using different inference methods
17:39:36 <cheater00> oklopol: because those inference methods are actually what defines clue
17:39:48 <cheater00> oklopol: hence i was talking about defining your own inference methods
17:40:36 <cheater00> oklopol: i think clue is a bit near to the automatic prover territory, isn't it?
17:41:38 <elliott> cheater00: also example-based programming isn't really a HUGE NEW IDEA
17:41:50 <elliott> "omg different inference engines"
17:41:59 <elliott> "chuck out all of the current work on clue and keep the obvious core idea!"
17:42:04 <elliott> which is stupid because the work was the hard part
17:42:50 <elliott> cheater00: um what i'm saying is perfectly true
17:44:07 <cheater00> oklopol: that's where the business always is.
17:44:51 <cheater00> i'm gonna go make some breakfast and watch the ballet dancers next door
17:45:44 -!- pumpkin has joined.
17:46:44 -!- copumpkin has quit (Ping timeout: 264 seconds).
17:56:08 <oklopol> to do what, send me pictures of ballet dancers?
17:56:45 <oklopol> but if someone was encouraging me to be oklopol (elliott), i would be really pleased
17:57:17 <elliott> Phantom_Hoover: be oklopol
17:58:40 <Vorpal> elliott, Processing... ... ... Error 49123: Mutant produced. Details: Now Vorpol.
17:58:56 <elliott> Is that like Vorpal but intelligent?
17:59:07 <cheater00> i wouldn't want to be someone who has "toilet" as part of their name
17:59:08 <Vorpal> elliott, it is like the most extreme sides of me and oklopol
17:59:39 <elliott> So incredibly stupid and irritating and awesome and intelligent?
17:59:41 <elliott> oklopol: What have you done
17:59:52 <Vorpal> elliott, it was you who did it
18:01:26 <cheater00> oklopol: http://dict.leo.org/ende?lp=ende&lang=de&searchLoc=0&cmpType=relaxed§Hdr=on&spellToler=&search=klo
18:03:10 <elliott> oklopol has "lo" in his name
18:03:32 <elliott> and obviously i'm input and output
18:03:43 <elliott> Vorpal is clearly everyone's PAL
18:03:50 <oklopol> really i could just go back to playing locally, you guys are never here
18:03:54 <elliott> wow this is like reading tea leaves but better
18:04:01 <elliott> oklopol: i was on but then you DIDN'T LET ME VISIT
18:04:10 <Vorpal> elliott, in fact I'm into VORs since I'm into flightsims :P
18:04:12 <oklopol> well obviously i don't want to see any of you
18:04:32 <elliott> cheater00: no, you're che guevara
18:04:33 <Vorpal> elliott, it's a type of omnidirectional navigational beacon.
18:05:09 <Vorpal> elliott, and you move impure IO (ellIOtt)
18:05:22 <elliott> 18:03 elliott: and obviously i'm input and output
18:05:28 <Vorpal> elliott, oh missed that
18:05:29 <cheater00> Phantom_Hoover: you're j. edgar hoover
18:05:30 <elliott> Phantom_Hoover: You're an ant named Tom.
18:05:46 <Vorpal> elliott, which is over something
18:06:22 <elliott> cheater00: I think you're gender-neutral
18:06:24 <Vorpal> that explains the channel
18:06:56 <elliott> He or she is off-topic, Eric.
18:07:01 <elliott> the only remaining question is
18:07:02 <Vorpal> cheater00, no, he is a news agency
18:07:10 <Vorpal> cheater00, (TT is a Swedish news agency)
18:07:28 <Vorpal> elliott, I said it was OT in it yes
18:07:35 <elliott> but i decoded the whole thing
18:07:39 <elliott> #esoteric -> E's OT, Eric.
18:07:43 <elliott> He or she's off-topic, Eric.
18:07:49 <cheater00> this channel is about Eric the Esot
18:09:08 <cheater00> which makes no sense because there's nothing named OPO
18:14:42 -!- sshc has quit (Ping timeout: 240 seconds).
18:15:17 -!- elliott has quit (Remote host closed the connection).
18:18:02 -!- elliott has joined.
18:19:08 <Vorpal> <elliott> #esoteric -> E's OT, Eric. <-- hm
18:19:27 <Vorpal> <elliott> WHAT IST BROKE <-- your connection was broke before
18:19:37 <Vorpal> + elliott has quit (Remote host closed the connection)
18:19:53 <Vorpal> elliott, the TCP connection was broken.
18:19:56 <drakhan> elliott, as for my person - I`m new here
18:20:30 <elliott> are you on one of those horrible keyboard layouts where you can't put an apostrophe in properly
18:20:52 <Vorpal> elliott, well /whois says .pl, you could check that
18:22:05 <elliott> It's your preference to use backticks instead of apostrophes?
18:22:23 <oklopol> even diamonds feel worthless when your items are all made of it for free :(
18:22:42 <elliott> I'm just curious, since it makes lines harder to read.
18:23:37 <elliott> "Somewhat typical of PHP’s API, there are actually thirteen different built-in array sorting functions."
18:26:20 -!- j-invariant has joined.
18:28:13 <quintopia> PHP's design philosophy is "you should never have to write any real algorithms. any algorithm that actually does something difficult should be built in."
18:28:33 <elliott> quintopia: "Except that, we'll actually implement it badly."
18:28:39 <elliott> Apparently usort() used to be — wait for it — BUBBLESORT.
18:28:56 <quintopia> friend of mine wrote bot in php and i said "it should have a rot13 function" and he determined that the best method to implement it ... would be to make a call to rot13() >_>
18:29:13 <elliott> Apparently they left their CS classes in the three seconds between "This is bubblesort" and "NEVER USE BUBBLESORT."
18:29:26 <j-invariant> Maybe one should have to aquire a liscence to write algorithms
18:29:48 <elliott> j-invariant: european computer mechanics license
18:29:53 <elliott> (there's a european computer driving license)
18:30:00 <elliott> (it is a hilariously easy Microsoft Office thing)
18:30:05 <j-invariant> of course if you have a full proof that you algorithm works you can use a provisional algorithm liscence to have it uploaded into a sandbox
18:30:35 <quintopia> but it can never be actually used unless it is also experimentally determined to be efficient in practice
18:30:40 <elliott> Phantom_Hoover: the horrible one
18:31:01 <elliott> quintopia: bitch, you can work that out without testing it
18:31:07 <elliott> if your theory doesn't match practice your theory wasn't good enough
18:31:10 <quintopia> Phantom_Hoover: the one with the near-guaranteed quadratic runtime in number-of-comparisons
18:31:24 <elliott> Phantom_Hoover: http://en.wikipedia.org/wiki/Bubble_sort#Implementation
18:32:19 <oklopol> "<quintopia> PHP's design philosophy is "you should never have to write any real algorithms. any algorithm that actually does something difficult should be built in."" <<< somehow i doubt it actually has any useful algorithms in it
18:32:20 <quintopia> elliott: sure, but sometimes it's easier to test it on all the possible hardware platforms than prove for each instruction set (and the respective latencies) that the constants in the runtime are low
18:32:35 <elliott> quintopia: instructions are irrelevant, mostly
18:32:36 <fizzie> oklopol: http://zem.fi/~fis/mcmap-win-fba7271.zip and then just doubleklick the .exe.
18:32:44 <elliott> you don't get "oh this c code is really slow on sparc but really fast on x86"
18:32:57 <elliott> just takes one level of abstraction to even those out
18:33:03 <oklopol> i mean say if i want to turn an NFA into a DFA
18:33:39 <oklopol> that's basically the only thing you'll ever need
18:33:39 <elliott> oklopol: nfatodfa($nfa) OR nfa_convert('Dfa',$nfa,2) (the 2 is to disable the old version of the function)
18:33:43 <quintopia> elliott: it's mainly an issue when involving floating point stuff, memory/disk access, and other I/O
18:34:04 <elliott> or automatonConvt($nfa, getconv('NFA'), getconv('DFA'), $output)
18:34:49 <elliott> oh man how did i break this
18:35:02 <elliott> Phantom_Hoover: qsort is not really something that should be used.
18:35:17 <elliott> Phantom_Hoover: worst-case performance
18:35:20 <oklopol> and what about that algorithm that solves the two-pair case of pcp?
18:35:29 <elliott> --> if you sort arbitrary user-inputted data
18:35:45 <elliott> Phantom_Hoover: e.g. merge sort is much better
18:35:53 <elliott> oklopol: do merge sort in clue :P
18:36:02 <quintopia> is there an in-place sort with the performance guarantee of merge sort?
18:36:05 <oklopol> i was thinking i'd, but then i not'd.
18:36:21 <oklopol> quintopia: i think there's an in-place merge sort
18:36:40 <oklopol> but that's kinda hairy, if i recall correctly
18:37:06 <oklopol> also you can do quicksort without recursion, i think
18:37:18 <quintopia> but you don't get any better worst case performance
18:37:22 <elliott> just use http://en.wikipedia.org/wiki/Timsort
18:37:23 <oklopol> heap sort is very fast, and can be done in-place
18:37:38 <oklopol> quintopia; merge sort is worst case n log n
18:37:38 <elliott> i don't think it's in-place but
18:37:42 <oklopol> quintopia: do what in-place?
18:37:46 <elliott> mergesort or if you're feeling fancy, http://en.wikipedia.org/wiki/Timsort
18:38:33 <fizzie> quintopia: You can do merge-sort in-place and some variants have even been described by Finnish guys: http://www.diku.dk/hjemmesider/ansatte/jyrki/Paper/mergesort_NJC.ps
18:38:34 <oklopol> oh well you use an array, and 1 (2 3) (4 5 6 7) (8 9 10 11 12 13 14 15) ... where those are the levels of the tree
18:38:44 <elliott> fizzie: Finnish guys, what would we do without them.
18:38:53 <oklopol> you can then multiply index by 2 and either add 1 or 0 to get to children, and divide by 2 to get to daddy
18:39:24 <elliott> is this in a cruel world where all list mothers run away
18:40:13 <oklopol> fizzie: lol no wonder a prof at our uni mentioned it
18:40:24 <elliott> it's actually funny how broken this is...
18:40:28 <oklopol> jukka teuhola is a prof at our uni
18:40:33 <elliott> well more like, depressing
18:40:39 <oklopol> katajainen hangs there too
18:40:50 <fizzie> oklopol: Yeah, we hear about Kohonen maps all the time at WaveU.
18:41:02 <elliott> fizzie: oh god don't call it that
18:41:14 <elliott> so wait how old is fizzie now, 47?
18:41:38 <fizzie> (Also WSOM 2011 deadline is Jan 14th, submit your full papers now!)
18:41:47 <oklopol> oh it's even PRACTICAL in-place mergesort :D
18:42:06 <elliott> oklopol: i want to see the previous paper, Impractical In-Place Mergesort
18:42:20 <elliott> oklopol: "average O(2^n), but hey, it's in-place mergesort!"
18:42:29 <cheater00> oklopol: can you write fib with clue?
18:42:35 <fizzie> And the earliest draft, "completely useless out-of-place mergesort".
18:42:53 <elliott> cheater00: http://www.vjn.fi/pb/p6379491136.txt
18:43:03 <elliott> j-invariant: yes, with more pain than anyone should have to endure :D
18:43:48 <oklopol> j-invariant: has been done, so yeah
18:44:15 <oklopol> for instance parsing is nicest to do with mutual rec
18:44:37 <j-invariant> is there a clever way to do it though? by reflecting the way clue works
18:44:39 <elliott> that's totally the main reason
18:44:45 <elliott> j-invariant: nope, not even remotely
18:44:50 <elliott> you can't harness it at runtime at all
18:45:09 <j-invariant> but maybe there could be a slightly modified form of clue
18:45:17 <j-invariant> which allows for a nontrivial self interpreter
18:45:28 <elliott> well it's not really an interp
18:45:32 <elliott> clue is pretty inherently a compiler
18:46:18 <oklopol> clue could even be thought of as a metalanguage
18:46:38 <oklopol> (but hopefully people don't)
18:47:50 <j-invariant> Are there some detailed pages on Clue with source code?
18:48:31 <oklopol> there's the esolang page, that's it
18:48:32 <quintopia> isn't the probability of getting O(n^2) runtime for a random-pivot quicksort unbelievably low?
18:48:46 <elliott> quintopia: yes, but the point is that you can't trust your users.
18:48:55 <elliott> it's easy to craft such inputs
18:49:05 <elliott> quintopia: also, why bother? merge sort is just as easy
18:49:21 <quintopia> i'm just trying to understand the theory man
18:49:24 <oklopol> merging is almost the same thing as pivoting
18:49:26 <quintopia> i'm not the guy in charge of this shit
18:49:40 <oklopol> just the other one unzips, the other one zips
18:49:41 <quintopia> where can i find these carefully crafted inputs?
18:50:04 <oklopol> quintopia: no he means if you run qs on user-given input on your server, then ppl can give crafted inputs that make slow it up
18:50:31 <oklopol> you can craft such inputs if you know how pivoting is done
18:50:35 <elliott> this shit is well-known btw
18:50:36 <quintopia> oklopol: yes, but i don't see how any adversary could slow a random-pivot quicksort
18:50:44 <quintopia> it seems like random pivoting is unbeatable
18:51:06 <elliott> sure, if you use a crypto rng
18:51:06 <oklopol> i don't know if it *is* though
18:51:12 <elliott> merge sort is nicer anyway
18:51:35 <elliott> also quicksort is unstable
18:51:58 <elliott> quintopia: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.5903
18:52:35 <elliott> anyway the theoretical worst-case performance is reason enough :)
18:52:59 <quintopia> i was already convinced. you were preaching to the choir
18:53:15 <quintopia> i'm just curious about the theory of DoSing qs
18:53:57 <cheater00> oklopol: you need an easier character to type than > for the "goes to" symbol in clue
18:54:33 <elliott> > is trivial to type, if it isn't your layout sucks
18:54:34 <lambdabot> <no location info>: parse error on input `type'
18:54:43 <elliott> stop bothering us with your petty concerns :|
18:54:51 <oklopol> cheater00: i have to agree with elliott, that is even less interesting than elliott's additions! :P
18:55:08 <elliott> oklopol: i totally removed branchers, man
18:55:10 <cheater00> oklopol: the most important reason for me to use python over php is that it doesn't use braces :D
18:55:12 <elliott> and implemented your default thing
18:55:22 <cheater00> oklopol: being able to type in code without shift is veddy important
18:55:22 <oklopol> elliott: everyone ignored them already :D
18:55:35 <elliott> oklopol: i did #x into x, that's like
18:55:45 <cheater00> oklopol: can you do map/reduce with clue?
18:56:00 <elliott> because it has no first-class functions
18:56:02 -!- sshc has joined.
18:56:19 <cheater00> what about map/reduce with a hardcoded reduction
18:56:47 -!- luatre has joined.
18:57:33 <elliott> :: sum ~ {. [] -> 0 } sum ~ {:. [1 2 3] -> 6 : [2 3] -> 5 :. [4 5 6] -> 15 : [5 6] -> 11 } sum ~ add; cdr; 0
18:57:33 <luatre> DepthLimitException: depth limit exceeded (sum) :(
18:57:35 <oklopol> they would be easy to add though
18:57:51 <j-invariant> oklopol: wow! I was hoping they would be some tremendously difficult addition
18:57:54 <Sgeo_> http://www.google.com/search?rlz=1C1TSND_enUS401US401&sourceid=chrome&ie=UTF-8&q=-lang.org#sclient=psy&hl=en&rlz=1C1TSND_enUS401US401&source=hp&q=lang.org&aq=f&aqi=g-s1g-c1g-ms2g-o1&aql=&oq=&gs_rfai=&pbx=1&fp=ca05a7bb65e82229
18:57:57 <Sgeo_> There goes my life
18:58:26 <Sgeo_> I'm going to die from lack of food and sleep due to reading about programming languages for the rest of my short life. Bye all.
18:58:30 <oklopol> essentially you'd have to give an apply function to glue, and have syntax for functions in examples
18:58:38 <elliott> Sgeo_: ah so you won't talk about them?
18:58:49 <elliott> j-invariant: doesn't matter to sgeo
18:59:11 <j-invariant> Sgeo_: anyway are you going to structure this, like study a new one at the start of each fortnight?
18:59:16 <elliott> Sgeo_: lol http://www.thorn-lang.org/ is high on that list, which Gregor did something with :P
18:59:19 <elliott> at least i've seen it before
18:59:21 <elliott> and he's listed on the page
18:59:29 <Sgeo_> j-invariant, just keep reading
18:59:30 <elliott> to read them all and not eat or sleep and then die
18:59:49 <j-invariant> Sgeo_: well maybe you are just fundamentally different than me, but if I did that I would not really get much out of it
19:00:13 <oklopol> elliott: you don't have car
19:00:19 <Sgeo_> j-invariant, if by "get something out of it" you mean "be capable of writing a line of code in that language" than yes, well
19:00:23 <elliott> oklopol: you need pattern matching :P
19:00:27 <oklopol> car and cdr should be a single command
19:00:35 <elliott> oklopol: returning a list, good idea!
19:00:43 <elliott> :: sum ~ {. [] -> 0 } sum ~ {:. [1 2 3] -> 6 : [2 3] -> 5 :. [4 5 6] -> 15 : [5 6] -> 11 } sum ~ add; car; cdr; 0
19:00:43 <luatre> TypeError: unsupported operand type(s) for -: 'float' and '_socketobject' :(
19:00:50 <oklopol> not exactly what i meant, but why not
19:01:07 -!- luatre has quit (Remote host closed the connection).
19:01:12 -!- luatre has joined.
19:01:13 <elliott> :: sum ~ {. [] -> 0 } sum ~ {:. [1 2 3] -> 6 : [2 3] -> 5 :. [4 5 6] -> 15 : [5 6] -> 11 } sum ~ add; car; cdr; 0
19:01:14 <luatre> Compiled in 0.0132999420166 seconds
19:01:14 <luatre> sum: (a) => [a] | [] => 0 | _ => add(@(cdr(a)) car(a))
19:01:28 <Gregor> elliott: þorn.org is the preferable address :P
19:01:37 <elliott> Phantom_Hoover: No :-P Not compared to Epigram 2!
19:01:43 <elliott> oklopol: why does the recursion become the first argument, that's kinda WEIRD
19:01:56 <elliott> Phantom_Hoover: BECAUSE IT'S NOT EPIGRAM 2
19:02:18 -!- sshc has quit (Read error: Connection reset by peer).
19:02:24 -!- sshc has joined.
19:03:01 <elliott> :: factorial loop ~ {. 0 6 -> 6 . 0 24 -> 24 } factorial loop ~ {:. 3 1 -> 6 : 2 3 -> 6 :. 1 6 -> 6 : 0 6 -> 6 } factorial loop ~ multiply; pred
19:03:01 <luatre> Compiled in 0.00318908691406 seconds
19:03:01 <luatre> factorial loop: (a, b) => [a] | 0 => b | _ => @(pred(a) multiply(a b))
19:03:36 <j-invariant> Phantom_Hoover: Everything that went into epigram 1 is spelled out in Conors research papers: Read those instead.. and once you've donen that you can read the new ones about the theory of Epigram 2
19:03:42 <elliott> :. factorial loop(0 factorial loop(1 factorial loop(2 factorial loop(0 3))))
19:03:52 <j-invariant> Phantom_Hoover: Once you've done all that.. maybe Epigram 2 will be useable!
19:03:53 <Sgeo_> Timber just caught my eye
19:03:54 <elliott> :. factorial loop(0 factorial loop(1 factorial loop(2 factorial loop(3 factorial loop(0 4)))))
19:04:14 <Phantom_Hoover> Hmm. Does MapReduce = map . reduce with optimisations?
19:04:18 <elliott> :. factorial loop(0 factorial loop(1 factorial loop(2 factorial loop(3 factorial loop(4 0)))))
19:04:34 <Sgeo_> Mobl.... sounds... intersting yet scary
19:04:40 <elliott> factorial loop(recurse this)
19:04:49 * Sgeo_ would NOT like to see Mobl take over the world
19:05:39 <Sgeo_> http://www.mobl-lang.org/
19:05:45 <elliott> :. factorial loop(factorial loop(factorial loop(0 1) 2) 3)
19:05:51 <elliott> :. factorial loop(factorial loop(factorial loop(factorial loop(0 1) 2) 3) 4)
19:06:03 <elliott> :. factorial loop(factorial loop(0 1) 2)
19:06:26 <elliott> :: what ~ {. [] -> 0 } what ~ { [0 1 2 3 4] -> 2880 : [0 1 2 3] -> 6 :. [0 1 2 3] -> 5 : [0 1 2] -> 2 } what ~ factorial loop; 0; car; cdr
19:06:26 <luatre> Compiled in 0.00108098983765 seconds
19:06:26 <luatre> what: (a) => [a] | _ => 0
19:06:47 <elliott> :: what ~ {. [] -> 0 } what ~ {:. [0 1 2 3 4] -> 2880 : [0 1 2 3] -> 6 :. [0 1 2 3] -> 5 : [0 1 2] -> 2 } what ~ factorial loop; 0; car; cdr
19:06:47 <luatre> RuntimeError: maximum recursion depth exceeded while calling a Python object :(
19:06:48 <Phantom_Hoover> How many times will people reinvent the same language?
19:06:52 -!- luatre has quit (Remote host closed the connection).
19:06:58 -!- luatre has joined.
19:07:01 <elliott> :: factorial loop ~ {. 0 6 -> 6 . 0 24 -> 24 } factorial loop ~ {:. 3 1 -> 6 : 2 3 -> 6 :. 1 6 -> 6 : 0 6 -> 6 } factorial loop ~ multiply; pred
19:07:01 <luatre> Compiled in 0.00199413299561 seconds
19:07:01 <luatre> factorial loop: (a, b) => [a] | 0 => b | _ => @(pred(a) multiply(a b))
19:07:05 <elliott> :: what ~ {. [] -> 0 } what ~ {:. [0 1 2 3 4] -> 2880 : [0 1 2 3] -> 6 :. [0 1 2 3] -> 5 : [0 1 2] -> 2 } what ~ factorial loop; 0; car; cdr
19:07:05 <luatre> RuntimeError: maximum recursion depth exceeded while calling a Python object :(
19:07:27 <elliott> :: what ~ {. [] -> 0 } what ~ {:. [0 1 2 3 4] -> 2880 : [0 1 2 3] -> 6 :. [0 1 2 3] -> 6 : [0 1 2] -> 2 } what ~ factorial loop; 0; car; cdr
19:07:27 <luatre> RuntimeError: maximum recursion depth exceeded while calling a Python object :(
19:07:38 <elliott> :: what ~ {. [] -> 0 } what ~ {:. [0 1 2 3] -> 6 : [0 1 2] -> 2 } what ~ factorial loop; 0; car; cdr
19:07:38 <luatre> RuntimeError: maximum recursion depth exceeded in __instancecheck__ :(
19:08:35 <elliott> :. factorial loop(factorial loop(0 1) 2)
19:08:53 <elliott> :: what ~ {. [] -> 0 } what ~ {:. [0 1 2] -> 2 : [0 1] -> 1 } what ~ factorial loop; 0; car; cdr
19:08:54 <luatre> RuntimeError: maximum recursion depth exceeded while calling a Python object :(
19:08:59 -!- luatre has quit (Remote host closed the connection).
19:09:04 -!- luatre has joined.
19:09:07 <elliott> :: factorial loop ~ {. 0 6 -> 6 . 0 24 -> 24 } factorial loop ~ {:. 3 1 -> 6 : 2 3 -> 6 :. 1 6 -> 6 : 0 6 -> 6 } factorial loop ~ multiply; pred
19:09:08 <luatre> Compiled in 0.00293016433716 seconds
19:09:08 <luatre> factorial loop: (a, b) => [a] | 0 => b | _ => @(pred(a) multiply(a b))
19:09:19 <elliott> :: what ~ {. [] -> 0 } what ~ {:. [0 1 2] -> 2 : [0 1] -> 1 } what ~ factorial loop; 0; car; cdr
19:09:20 <luatre> RuntimeError: maximum recursion depth exceeded while calling a Python object :(
19:10:02 <Sgeo_> "Like many programmers with a pulse, I am compelled to create my own programming language."
19:10:06 <Sgeo_> http://jolt-lang.org/
19:10:08 <oklopol> do you want me to tell you what's wrong?
19:10:17 <elliott> oklopol: it stack overflows for no apparent reason
19:10:59 -!- pikhq has joined.
19:11:16 -!- pikhq has quit (Remote host closed the connection).
19:11:56 <oklopol> i don't see anything wrong
19:12:43 <oklopol> so what gave an error exactly?
19:13:17 <oklopol> the examples for what make no sense, so there's really no telling what the code will do
19:13:40 <oklopol> except you get a runtime error during compilation
19:13:54 <oklopol> factorial loop is called with parameters what make it infloop
19:14:01 <oklopol> and you don't catch exceptions anymore
19:14:14 <oklopol> (incidentally, this is why i caught theem)
19:14:33 <elliott> oklopol: i'll catch stack overflow exceptions then?
19:15:01 <Sgeo_> "Mersenne Twister based pseudorandom number generator." is not a language feature.
19:15:07 <Sgeo_> In conclusion, fuck you.
19:15:12 <Sgeo_> http://www.pika-lang.org/features/
19:16:20 <Gregor> Sgeo_: Technically that depends :P
19:16:39 <Gregor> Sgeo_: If it has a random-based object system ... :P
19:17:22 <Gregor> j-invariant: Language features are features of the LANGUAGE, not libraries provided.
19:17:37 <Sgeo_> Well, the features page doesn't say _language_ features
19:17:46 <Sgeo_> It also doesn't list every single library
19:17:50 <j-invariant> the different between language and library is fuzzy
19:18:00 <Gregor> Well, in that case, j-invariant: That's an extremely boring feature :P
19:18:41 <Sgeo_> We have a library that lets you retrieve content via HTTP!
19:18:55 -!- pikhq has joined.
19:19:25 <Gregor> Why you should use my language: Ships with binding to libcurl.
19:19:27 <Sgeo_> The rest of Pika is boring
19:19:39 <Gregor> Sgeo_: Everything except for the random number generator? ;)
19:20:35 <Sgeo_> Well, it's in contrast to those languages who ship with stdlibs who use the xkcd RNG
19:21:38 <Sgeo_> It's. A. Language. For. Code. That. Runs. On. salesforce.com.
19:21:59 <Sgeo_> Enterprise Language 101
19:22:06 <elliott> you know, every time you talk to us about languages
19:22:10 <elliott> it's time you could spend googling more
19:22:14 <Sgeo_> elliott, you don't mean http://wiki.developerforce.com/index.php/Apex_Code:_The_World's_First_On-Demand_Programming_Language do you?
19:22:18 <Sgeo_> That's what Google came up with
19:22:53 <elliott> i mean Apex, the expressive, functional imperative language from Cat's Eye Technologies
19:23:22 <Gregor> 'Like all aspects of salesforce.com’s application and platform technologies, Apex Code is “on demand,” running entirely on Force.com without requiring any local servers or software' <-- this ... is what they mean? LAAAAAAAAAAAAAAAAAAWL
19:24:55 <Sgeo_> Yeah, it's the first language that HAS to be run on the cloud
19:26:22 <Sgeo_> elliott, I can't find Apex on cpressey's site
19:26:36 <elliott> it's too secret. or too vapourware.
19:26:45 <elliott> also mostly formulated by me.
19:27:59 -!- cheater00 has quit (Read error: Connection reset by peer).
19:29:59 -!- Wamanuz has joined.
19:32:11 <j-invariant> Phantom_Hoover: how come you are interested in it anyway?
19:32:33 <pikhq> Gregor: APPLIED PHLEBOTINUM IS BETTER THAN LOGIC
19:32:38 <j-invariant> The consensus is: " Let’s briefly look at some non-solutions to the software problem. First, we can’t just prove everything to be correct. This is way too expensive and most real systems lack formal specifications."
19:32:46 <j-invariant> " At present, it is not even clear that the correct behavior of large systems can be formalized at all, though hopefully this will be possible someday (exercise for the reader: formalize Asimov’s Three Laws in HOL, Coq, or a similar language)."
19:32:53 <elliott> why is this broken, what manner of witchery is this
19:33:29 <elliott> WHAT MANNER OF WITCHERY IS THIS!!!!!!
19:33:37 <j-invariant> elliott: it is exceptional to find people that seriously think proofs are sensible
19:33:43 <elliott> wtfwtfwtfwtfwtfwtfwtwfwtwffwtwftwfwwffwtwfwtfffffff
19:34:00 <elliott> j-invariant: you can find them interesting without finding them useful :) i.e. computer-based systems
19:34:02 <pikhq> j-invariant: Clearly math education should be mandatory.
19:34:17 <elliott> i'm not entirely sure that Coq/Epigram/etc. are useful for proving theorems. for writing verified software, of course.
19:34:22 <elliott> but regardless, they are interesting.
19:34:42 <elliott> i like how tk eats up all exceptoins
19:35:10 <elliott> oh dear, that is a problem
19:36:34 <elliott> oklopol: can you give your executive opinion on a part of cled
19:36:59 <elliott> hmm it's kinda broken when you tab away... todo, fix
19:37:41 <pikhq> j-invariant: That's no more math education than the alphabet is literature education.
19:39:07 <pikhq> Quite likely. Is it possible without a mathematician becoming supreme ruler of the Department of Education (or your local national equivalent)? Probably not.
19:39:36 <pikhq> Because almost everyone is convinced that we already teach math, and quite well...
19:41:52 <Phantom_Hoover> Were you homeschooled for your entire life until you moved out into a cave in the wilderness?
19:42:44 <j-invariant> Phantom_Hoover: anyway I am curious how&why did you get interesetd in epigram
19:44:28 <coppro> combinatorics is interesting
19:45:36 <pikhq> Man. I just now realised that IPv4 depletion is literally happening *this month*...
19:46:14 <pikhq> Well. It *could* happen early February.
19:47:15 <pikhq> I'd suggest not being in the stock market, though.
19:47:26 <pikhq> Or strategically selling short.
19:47:53 <Phantom_Hoover> But P(civilisation collapses | the stock market fluctuates) is rather high, no?
19:48:26 <elliott> it won't have that big a deal
19:48:29 <elliott> NATs are not very hard to set up really
19:48:37 <elliott> and remember that most hosting companies and the like
19:48:42 <elliott> already have way more IPs than they use
19:48:51 <pikhq> elliott: Telecoms are boned.
19:48:55 <elliott> so it's not like people are gonna see "lol no you can't have a server we have no ip to give it"
19:49:03 <elliott> everyone already has IPs to spare
19:49:05 <elliott> so it won't be a _huge_ deal
19:49:29 <pikhq> Except that adoption of IPv6 will be really expensive at this point, and it will be mandatory pretty soon.
19:49:50 <pikhq> Mostly for the telecoms.
19:55:44 <pikhq> After depletion, RIPE and AfriNIC will only allocate IPv4 to entities with IPv6 allocations.
20:10:10 <j-invariant> was there something derisive about measuring code in KLOCs?
20:22:00 <j-invariant> elliott: http://www.reddit.com/r/compsci/comments/ez93s/the_future_of_software_system_correctness/c1c7740?context=3
20:23:04 <elliott> j-invariant: i think they're right though ... _for now_
20:23:27 <elliott> j-invariant: I have a feeling that with the progress, probably a... loss of precision will be had
20:23:43 <elliott> j-invariant: i.e., it turns out that if you prove a kernel, like, "only 80%" correct, it takes only 30% of the work
20:24:01 <elliott> "After depending typing, the only type of bugs left are those that are not provable, like if prime numbers ever end and such." lol wat
20:24:21 <j-invariant> elliott: well generally you would only prove the very very awkward difficult parts: So 80% correct would be 99% as hard
20:24:41 <elliott> j-invariant: Perhaps! ...but then perhaps not, you see people writing unit tests for every damn thing
20:24:54 <elliott> j-invariant: Anyway, consider, the very very awkward difficult parts tend to consist of multiple subproblems
20:25:02 <elliott> j-invariant: so if you prove most of those but not all
20:25:08 <elliott> j-invariant: or if you prove that all of them apply in, like, 80% of cases
20:25:35 <elliott> j-invariant: like, I can imagine some proof system that lets you state some property on, like, floats, and as long as it can experimentally verify it for a few thousand random values, and also pathological ones like denormalised numbers
20:25:39 <elliott> then it lets it be accepted as a theorem
20:25:47 <elliott> but for proving software, potentially very useful
20:27:49 <elliott> j-invariant: I mean, say you have a big, formal proof
20:27:54 <elliott> j-invariant: that relies on some twiddly property of floating point numbers
20:28:03 <elliott> j-invariant: if you can prove that, using that theorem
20:28:14 <elliott> and then have that hypothesis about floating points "experimentally" demonstrated
20:28:28 <elliott> that's a whole lot better than just testing the component
20:33:04 <elliott> j-invariant: lol ololol ololo olol ololololo lololoo
20:33:06 <elliott> j-invariant: "Does computer science completely miss the point of a computer -- namely, that it is a creative tool?"
20:33:19 <elliott> One could argue that computer science is like a "pen science" where scientists find ways to write as quickly as possible with a pen and to fill up a page with as much text as possible.
20:33:19 <elliott> That would of course completely miss the point of a pen.
20:33:19 <elliott> One could say something similar about computer science with its focus on time and space efficiency of computations.
20:33:21 <elliott> The computer -- like a pen -- is a creative tool and the focus should be on the invention of new kinds of software applications -- not on making existing ones more efficient.
20:33:22 <elliott> Universities should have a creative field of study -- distinct from computer science -- for novel uses of computers.
20:34:02 <elliott> how did that get on /r/compsci
20:34:26 <elliott> j-invariant: i like how they think computer science is just about like
20:35:02 <elliott> reddit.com/r/subredditname
20:39:16 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:39:21 <elliott> oklopol you'll love this program
20:44:49 * Sgeo_ accidentally mentally dropped the why
20:45:09 <elliott> j-invariant: it's on the front page
20:45:37 <elliott> so you're not looking quite hard enough :D
20:45:41 <elliott> http://www.reddit.com/r/compsci/comments/ez4op/does_computer_science_completely_miss_the_point/
20:46:24 <j-invariant> what thehell? that's not on my front page at all
20:47:01 -!- Phantom_Hoover has joined.
20:47:37 <j-invariant> elliott: looks like the poster actually agrees with that stuff http://www.reddit.com/r/compsci/comments/ez4op/does_computer_science_completely_miss_the_point/c1c2upo
20:47:43 <elliott> j-invariant: i have a feeling the poster asked the question
20:47:45 <j-invariant> elliott: P.S. did you not notice this is voted zero :|
20:47:47 <quintopia> i just realized i haven't used ftp in so long that i don't have a proper ftp client installed. any recommendations?
20:48:36 -!- sebbu2 has joined.
20:48:39 <quintopia> yeah, but it requires me to remember the command names. i want drag and drop for instant gratification
20:51:20 -!- sebbu has quit (Ping timeout: 272 seconds).
20:54:33 <elliott> IRONY: http://i.imgur.com/DkbPs.png
20:54:51 <elliott> (after someone got into his account in the thread an xss was discovered in stackoverflow)
20:56:24 <Sgeo_> It's ok, he never uses StackOverflow anyway
20:59:33 <elliott> i wish i could delete jeff atwood's face
21:00:36 <elliott> j-invariant: have you written any clue programs yet?
21:00:51 <j-invariant> no I am waiting for the wiki page: please write it!
21:01:21 <elliott> j-invariant: http://esolangs.org/wiki/Clue_%28oklopol%29
21:01:30 <elliott> j-invariant: it is not very complete... e.g. bags can also contain objects
21:02:18 <elliott> j-invariant: uh, "good luck"
21:02:27 <elliott> j-invariant: clue.py is 717 lines
21:02:55 <j-invariant> obviously the problem is that you're using python
21:03:17 <elliott> j-invariant: writing clue programs is great fun though, you struggle through and go wtf, but the moment the compiler spits out the right function
21:03:22 <elliott> it feels like it was so easy
21:03:25 <elliott> and your code is so simple
21:04:26 <elliott> ::: http://pb.vjn.fi/p9634238413.txt
21:04:27 <luatre> Compiling, just a minute...
21:04:27 <luatre> DepthLimitException: depth limit exceeded (:..: factorial stack-hogging factorial) :(
21:04:38 <elliott> comments don't actually work
21:05:12 <elliott> j-invariant: difficultly...
21:05:19 <elliott> j-invariant: it's basically advanced brute force :)
21:05:23 <j-invariant> it's not just breath first generate all programs?
21:05:39 <elliott> there's a reason there's more than one {} branch in each function
21:05:47 <elliott> i.e., there's a reason you do that
21:05:49 <elliott> there's a reason the bag exists
21:05:53 <elliott> and there's a reason :. : exist to denote recursion
21:06:52 <elliott> j-invariant: yeah there is basically no way you could do recursive functions (only flow control other than branching really) with a stupid search like that
21:06:58 <elliott> the search is stupid, not the idea, that is
21:07:56 -!- luatre has quit (Remote host closed the connection).
21:08:01 -!- luatre has joined.
21:08:02 <elliott> ::: http://pb.vjn.fi/p9634238413.txt
21:08:03 <luatre> Compiling, just a minute...
21:08:03 <luatre> DepthLimitException: depth limit exceeded (:..: factorial stack-hogging factorial) :(
21:08:14 -!- luatre has quit (Remote host closed the connection).
21:08:19 -!- luatre has joined.
21:08:21 <elliott> ::: http://pb.vjn.fi/p9634238413.txt
21:08:22 <luatre> Compiling, just a minute...
21:08:22 <luatre> DepthLimitException: depth limit exceeded (:..: factorial stack-hogging factorial) :(
21:08:26 <elliott> don't use it i'm busy fixing it :>
21:10:52 <elliott> how many ways can you represent 6, if . is +1 and : is +2
21:10:59 <elliott> and those are the only symbols you can use
21:12:04 <luatre> ValueError: unknown url type: is 6 :(
21:12:33 <luatre> URLError: <urlopen error unknown url type: .> :(
21:12:50 <j-invariant> ::.. <-- can't be bothered drawing all these but there are 4!/2!2! of them
21:12:51 <luatre> ValueError: unknown url type: <-- can't be bothered drawing all these but there are 4!/2!2! of them :(
21:13:01 <luatre> Compiling, just a minute...
21:13:02 <luatre> Compiled in 3.00407409668e-05 seconds
21:13:27 <elliott> Elliott-Hirds-MacBook-Air:~ ehird$ curl http://lemonparty.com
21:13:28 <elliott> <script>top.window.location.href="http://www.livejasmin.com/listpage.php?psid=loupizz&pstour=t10&psprogram=REVS";</script>
21:13:32 <elliott> hardly surprising it was fast then
21:14:21 <elliott> j-invariant: ok, i'm not gonna write out all 2906 then :D
21:15:19 <coppro> 4!/2!2! is obviouly 24
21:15:33 <coppro> and 5!/1!4! is obviously 24*120
21:19:05 <j-invariant> it makes no sense to use abcd/efgh as abcdfgh/e
21:19:33 <elliott> same reason you see \frac{1}{x} ... in equations
21:19:36 <j-invariant> yes but in that case you can use (abcd/e)fgh
21:19:42 -!- GreaseMonkey has joined.
21:21:39 <Phantom_Hoover> <elliott> same reason you see \frac{1}{x} ... in equations ← as opposed to...?
21:23:21 <elliott> Phantom_Hoover: \frac{...}{x}
21:23:29 <j-invariant> elliott: words letters = map (flip replicateM letters) [1..]
21:24:14 <elliott> j-invariant: was that...responding to my #haskell question in here?
21:24:43 <Phantom_Hoover> @pl words letters = map (flip replicateM letters) [1..]
21:24:43 <lambdabot> words = flip map [1..] . flip replicateM
21:25:07 <elliott> j-invariant: that produces a list of lists, you mean concatMap surely
21:25:24 <fizzie> Re the "how many times", it's actually fib times: http://oeis.org/A000045 "F(n)=number of compositions of n-1 with no part greater than 2. Example: F(4)=3 because we have 3 = 1+1+1=1+2=2+1."
21:25:52 <j-invariant> elliott: oh flip replicateM letters =<< [1..] then
21:26:22 <elliott> Prelude Control.Monad> takeWhile (\x -> s x < 7) (words ":.")
21:26:22 <elliott> [":",".","::",":.",".:","..",":::","::.",":.:",":..",".::",".:.","..:","..."]
21:26:28 <elliott> Prelude Control.Monad> let s('.':xs)=1+s xs;s(':':xs)=2+s xs;s []=0
21:27:48 <elliott> j-invariant: is it just not ordered like that?
21:28:09 <elliott> j-invariant: yay i got all 13
21:28:10 <elliott> [":::","::..",":.:.",":..:",".::.",".:.:","..::",":....",".:...","..:..","...:.","....:","......"]
21:28:39 <Phantom_Hoover> <fizzie> Re the "how many times", it's actually fib times: http://oeis.org/A000045 "F(n)=number of compositions of n-1 with no part greater than 2. Example: F(4)=3 because we have 3 = 1+1+1=1+2=2+1." ← COINCIDENCE?
21:29:18 <fizzie> Phantom_Hoover: And of course it's fib, since for all the F(n) ways to write n, there are F(n-1) those that start with '.' and F(n-2) those that start with ':'.
21:29:52 <fizzie> Admittedly the example is a bit silly.
21:30:03 <elliott> fizzie: how many times what
21:30:17 <elliott> oh how many ways to write?
21:30:18 -!- luatre has quit (Remote host closed the connection).
21:30:20 <fizzie> elliott: Should've been that, yes.
21:30:23 -!- luatre has joined.
21:30:32 <elliott> ::: http://www.vjn.fi/pb/p9634238413.txt
21:30:33 <luatre> Compiling, just a minute...
21:30:33 <luatre> Compiled in 0.000127077102661 seconds
21:30:38 <elliott> ...that's definitely not right
21:30:49 -!- Phantom__Hoover has joined.
21:30:49 -!- Phantom__Hoover has quit (Changing host).
21:30:49 -!- Phantom__Hoover has joined.
21:31:04 <elliott> Phantom_Hoover: What's with that x- suffix.
21:31:48 <elliott> 21:28 EvanR-work: set of finite strings from a countable alphabet is countable?
21:31:48 <elliott> 21:28 Cale: EvanR-work: yes
21:31:48 <elliott> 21:28 EvanR-work: interesting
21:31:53 <elliott> j-invariant: WHAT A REVELATION
21:32:19 <elliott> well that's continued fractions :)
21:32:21 <j-invariant> elliott: which is not at all what he /said/ :P
21:32:38 <j-invariant> elliott: everyone in #haskell is going "oh I misread it"
21:32:46 <elliott> 21:29 cdsmithus: EvanR-work: It's pretty easy to see. Just enumerate all the 0-length strings (finitely many), then all the 1-length, then the 2-length, and so on. Every finite string has some length, and will be reached eventually
21:32:49 <elliott> finitely many 0-length strings
21:34:17 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:36:10 <elliott> ::: did i break this ~ {. 0 -> 1} did i break this ~ 1
21:36:11 <luatre> ValueError: unknown url type: did i break this ~ {. 0 -> 1} did i break this ~ 1 :(
21:36:14 <elliott> :: did i break this ~ {. 0 -> 1} did i break this ~ 1
21:36:14 <luatre> Compiled in 0.00750088691711 seconds
21:37:25 -!- luatre has quit (Remote host closed the connection).
21:37:30 -!- luatre has joined.
21:37:34 <elliott> ::: http://www.vjn.fi/pb/p9634238413.txt
21:37:34 <luatre> Compiling, just a minute...
21:37:35 <luatre> Compiled in 0.080559015274 seconds
21:37:35 <luatre> factorial: (a) => [a] | _ => factorial loop(a 1)
21:37:35 <luatre> stack-hogging factorial: (a) => [a] | 0 => multiply(pred(0) pred(0)) | _ => multiply(a @(pred(a)))
21:37:35 <luatre> factorial loop: (a, b) => [a] | 0 => b | _ => @(pred(a) multiply(a b))
21:37:35 <luatre> fibonacci: (a) => [a] | _ => fast fibonacci loop(a 0 1)
21:37:36 <luatre> fast fibonacci loop: (a, b, c) => [a] | 0 => b | _ => @(pred(a) c add(b c))
21:37:36 <luatre> slow fibonacci: (a) => [a] | 0 => 0 | 1 => 1 | _ => add(@(pred(a)) @(pred(pred(a))))
21:38:57 <elliott> j-invariant: so my program's structure is quite flawed, what about you
21:39:01 <elliott> any flawed programs lately?
21:42:15 <j-invariant> everything I have written in the past ... forever
21:42:24 -!- oerjan has joined.
21:43:18 <elliott> j-invariant: have you ever written GUI PROGRAMS
21:43:34 <elliott> j-invariant: haha what did you write
21:43:40 -!- pumpkin has changed nick to copumpkin.
21:44:58 <elliott> it's the best gui program ever in fact
21:45:20 <elliott> j-invariant: how didn't it look ok? :p
21:46:31 <elliott> j-invariant: that doesn't look bad
21:46:50 <elliott> I'd add a bit more spacing after the rendered equation, and possibly make that whole upper pane white-backgrounded if i could
21:46:56 <elliott> j-invariant: what did you write it with?
21:47:07 <Phantom__Hoover> elliott, http://www.reddit.com/r/Minecraft/comments/ezre7/did_notch_give_details_why_they_switched_from_git/
21:47:09 <elliott> j-invariant: anyway it's not as ugly as cled http://i.imgur.com/M27fK.png :D
21:47:21 <elliott> Phantom__Hoover: "From my own experience with both I find Subversion to be easier to understand." lol
21:47:29 <elliott> j-invariant: really? it's hideous :D
21:47:41 <j-invariant> elliott: I want to make a GUI for interactive program derivation
21:47:46 <elliott> Phantom__Hoover: It's centralised. Its aim is to be "CVS done right" which is impossible. So yes.
21:47:50 <elliott> j-invariant: that would be amazing
21:48:12 <j-invariant> like that paste I showed you: except you do it all in place
21:48:25 <j-invariant> hey that would be really cute I should actually make it
21:48:38 <elliott> j-invariant: btw cled isn't really meant to look like that... ideally instead of those awful borders, it'd have like, those outwards poking ones... so that it looks like things deeper in the tree stick out further, you know?
21:48:46 <elliott> j-invariant: and then what would happen is, descent would be shown by element background
21:49:56 <elliott> j-invariant: it'd be a lot nicer because right now borders kinda drown out everything
21:50:40 <j-invariant> Phantom__Hoover: here is a derivation of init in terms of foldr http://pastebin.com/raw.php?i=VBavHxpt
21:50:58 <j-invariant> hm actually there is no nice way to make a GUI for this
21:51:20 <elliott> j-invariant: btw, isn't your cons just (:) there...
21:51:53 <elliott> the cons name is kinda confusing though :p
21:52:40 <j-invariant> elliott: I don't think there is a good way to make a GUI for program derivation
21:52:57 <j-invariant> there are too many different ways to structure things
21:53:07 <Phantom__Hoover> What else is on voxelperfect.net other than esolang stuff?
21:54:37 <j-invariant> Phantom__Hoover: oh you should learn about foldr
21:55:06 <Phantom__Hoover> Well, I *know* what foldr is, but I thought it had a function involved...
21:55:09 <elliott> saying why it's wrong >> telling to run :)
21:55:19 <elliott> copumpkin: cons is defined in the where clause
21:55:35 <elliott> init = foldr cons [] where
21:55:35 <elliott> cons x (y:ys) = x : y : ys
21:56:08 <copumpkin> I wrote @let cons x [] = []; cons x (y:ys) = x : y : ys
21:58:52 <copumpkin> > let cons x [] = [x]; cons x (y:ys) = x : y : ys in foldr cons [] [1..10]
21:59:21 <elliott> j-invariant: you should write a clue program ... with cled!
21:59:32 <elliott> copumpkin: that's not the intention, though
21:59:47 <copumpkin> elliott: I know! I'm just saying, it shows where it's going wrong
21:59:54 <elliott> j-invariant: I have no idea how http://i.imgur.com/M27fK.png could be used to debug anything
22:00:03 <elliott> j-invariant: it's actually an editor
22:00:18 <elliott> j-invariant: what you see in that screenshot is the clue branch
22:00:43 <elliott> you can descend and ascend through that tree, basically, move about, and edit individual atoms
22:00:49 <elliott> plus add/remove to the lists, etc.
22:00:55 <elliott> the lists in a display sense, not in clue-code-sense
22:01:47 <elliott> hmm i shouldn't link to such scary screenshots when #haskellers are around
22:01:54 <elliott> i have a feeling they have some modicum of taste
22:02:00 <elliott> copumpkin: can you confirm/deny?
22:02:21 <elliott> that #haskellers have some modicum of taste
22:02:32 <elliott> and thus linking to things like http://i.imgur.com/M27fK.png when they're around is likely to scare them off
22:02:56 <copumpkin> but keep in mind that I have no taste
22:03:05 <copumpkin> so my idea of worse may actually be better
22:03:11 <elliott> i should implement that background-based system, like now
22:03:17 <elliott> and it'd stop scaring off helpless children
22:04:57 <j-invariant> http://www.reddit.com/r/compsci/comments/ez93s/the_future_of_software_system_correctness/c1c7ks6
22:05:30 <j-invariant> when will people learn this is just not relevant?
22:06:47 <elliott> godel is often relevant! but usually not in the cases when people think it is
22:08:00 <Gregor> "GODELGODELGODEL" is the sound of a mathematician turkey.
22:12:30 <oerjan> the incompleteness from outer space
22:15:08 <elliott> that is... not nice... actually it's koay
22:17:18 <elliott> http://twitter.com/notch/status/24558373093515264 Reeds are now sugar canes. I am not even kidding.
22:17:18 <elliott> http://www.minecraftwiki.net/wiki/Sugar_Cane
22:17:31 <elliott> fizzie: Vorpal: Gawp at the ...ness.
22:19:19 <j-invariant> I found some reeds but I could not find them again :(
22:20:24 <elliott> j-invariant: have you joined the server yet :p
22:21:35 <elliott> j-invariant: I can't tell you, that would be wrong; you'll have to look at a four days old log or something where we discuss mcmap!
22:21:46 <elliott> That is a guess of course. Naturally.
22:21:56 <j-invariant> I dno't want to join if I'm not supposed to
22:22:16 <elliott> get oklopol to tell you, he has oklopolic immunity
22:23:55 <fizzie> Our administratafator has been a bit gone for the evening; my guess is some sort of debauchery.
22:24:39 <elliott> fizzie: You're the right-hand man, go tell j-invariant the address.
22:25:31 <oerjan> elliott: and from those sugar canes you will be able to produce high-fructose corn syrup >:)
22:25:38 <fizzie> Oh, but I couldn't possibly, that'd be insubordination.
22:26:00 <Phantom__Hoover> <fizzie> Our administratafator has been a bit gone for the evening; my guess is some sort of debauchery. ← MATLAB debauchery?
22:26:21 <elliott> fizzie: So is there a scenester named SUGAR CANE who isn't in your pants either?
22:26:39 <oerjan> also whiskey and creme brulee
22:26:39 <elliott> Or just leave it as a protest :P
22:26:50 <fizzie> Well, maybe I'll just be all RETRO-reed.
22:26:52 <elliott> Oh man, whiskey in Minecraft would be amazing.
22:27:05 <fizzie> "I was into reeds before they were sugar canes."
22:27:10 <elliott> It'll, like, restore 70% of your health, but if you drink too much your vision starts going blurry and stuff.
22:27:17 <oerjan> fizzie: you had reeds on vinyl?
22:27:37 <elliott> i had reeds before they sold out
22:27:48 <fizzie> "Reeds on Vinyl", sounds like a band.
22:28:14 <oerjan> "Sounds like a band" sounds like a band.
22:28:20 <elliott> fizzie: with the amount of things the internet has called good band names, we'd need like 1,000 times more bands than have ever existed to be created.
22:28:58 <Gregor> "'Sounds like a band' sounds like a band" sounds like a band
22:29:33 <elliott> My band will be called #1#="\"#1#\" sounds like a band".
22:29:50 <elliott> First album will naturally be called Main Page.
22:33:39 * oerjan recalls there was a norwegian race horse named "Sugar Cane Hannover"
22:34:21 <elliott> the people who name horses are like people who name cats fun things, except on crack
22:34:31 <elliott> like, you start naming cats silly things
22:34:34 <elliott> but then when you get a job
22:34:53 <oerjan> famous enough to have a no.wikipedia page
22:34:57 <elliott> what is it with horse names, anyway?
22:35:11 <oerjan> born in sweden actually
22:35:52 <Gregor> "Followed by the horse formerly known as Horse."
22:36:15 <Sgeo_> I found that more hilarious than it was
22:36:24 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:36:25 <elliott> if horse racing actually involved like
22:36:39 <elliott> But oh! Here comes My Other Car Is A Cdr!
22:37:16 * Sgeo_ hits elliott with an element and a list
22:37:42 <elliott> Name a horse after the Unicode snowman.
22:37:58 <Sgeo_> elliott, you think I'm capable of thinking of some stupid not-that-funny thing to say about car and cdr?
22:38:02 <elliott> Phantom__Hoover: It's... Joss Whedon-y, isn't it? Said as someone who hasn't seen it.
22:38:23 <FireFly> From the little I've seen, yes
22:38:25 <FireFly> assuming you mean the show
22:38:28 <elliott> Phantom__Hoover: I get the feeling there's more western there than scifi.
22:38:32 <elliott> "Space western", as they say.
22:38:34 <Sgeo_> I know people like Firefly
22:38:46 <elliott> Gregor: Name a horse the GLAGOLITIC CAPITAL LETTER SPIDERY HA.
22:38:49 <elliott> Gregor: Pronounced like that.
22:38:51 <Sgeo_> And that it was cancelled
22:39:03 <elliott> I THINK THEY MADE A MOVIE OUT OF IT
22:39:19 <elliott> randall munroe likes it, which is always a bad sign
22:39:41 <Sgeo_> elliott, Randall Munroe likes breathing.
22:39:52 <elliott> Sgeo_: Breathing is kind of a pain.
22:40:01 <elliott> Phantom__Hoover: Sure, but he also liked Python.
22:40:12 <oerjan> elliott: not breathing even more so
22:40:32 * Sgeo_ cries as his lingua fraca gets spit upon
22:40:51 <elliott> Python is a terrible language.
22:41:12 <elliott> Phantom__Hoover: Funny. I don't want them to.
22:41:39 <Gregor> elliott: Dude, I'm going to change MY name to GLAGOLITIC CAPITAL LETTER SPIDERY HA
22:41:43 <Phantom__Hoover> elliott, yes, but it filled a gap in the market, so it was inevitable.
22:42:03 <elliott> Phantom__Hoover: No, but ... intelligent people who like Python are odd.
22:42:12 <elliott> Phantom__Hoover: And they, strangely, exist.
22:42:30 <elliott> oklopol likes Python for, like, totally different reasons to everyone else.
22:43:20 <elliott> Phantom__Hoover: Well, not "clean code and comprehensive standard libraries" :-)
22:43:37 <Sgeo_> elliott, do you think I'm an idiot?
22:43:39 <elliott> oerjan: don't be harsh, english isn't Sgeo_'s lingua fraca
22:43:50 <elliott> Sgeo_: Not really, but I have the feeling you like Python for the wrong reasons.
22:43:53 <elliott> Phantom__Hoover: WHO KNOWS
22:44:06 <oerjan> elliott: hey i wasn't intending to start a fracas
22:45:27 <Sgeo_> There's a language called HaXe
22:45:45 <Sgeo_> As far as I can tell, the only reason people like it is its "portability"
22:45:54 -!- pikhq has quit (Remote host closed the connection).
22:46:30 <elliott> I need to start drinking more coffee.
22:47:38 -!- Phantom__Hoover has quit (Quit: Leaving).
22:48:44 <Sgeo_> Fancy's supposed to be able to target a bunch of stuff eventually
22:48:52 <elliott> hey j-invariant design my program
22:49:13 -!- pikhq has joined.
22:49:19 <Sgeo_> Now that I look at http://www.fancy-lang.org/features/ again, it looks boring
22:49:33 <Sgeo_> Except for the BDD thingy, which puts Scala's thing in mind
22:50:12 <elliott> example-driven development is the only acceptable policy.
22:50:45 * Sgeo_ still wants to know if it's TC
22:50:46 -!- pikhq has quit (Remote host closed the connection).
22:51:20 <oerjan> elliott: ideally the language _specification_ should be example-driven, no?
22:51:41 <Sgeo_> Huh. That's awesome.
22:51:45 <elliott> oerjan: oh yes definitely, but unfortunately there's no other example-driven processors
22:51:55 <elliott> Sgeo_: you can basically write simple imperative loops that use each other
22:52:01 <elliott> and there's also an ski interpreter
22:52:11 <elliott> most people would consider SKI enough
22:52:17 <elliott> but, you might not consider that so if, e.g.,
22:52:20 <oerjan> elliott: i guess it's hard when you don't have any examples
22:52:21 <elliott> you can't express every turing machine as a unique program
22:52:38 <elliott> you can basically write code imperatively
22:56:26 <Sgeo_> I know of it. And that Python comes with libraries for it
22:56:44 <j-invariant> 22:55 < qfr> How am I supposed to develop software in Haskell if I can't even prepare my projects in UML?! It seems like an impossible task.
22:58:42 <elliott> j-invariant: oh god, he is
22:59:05 <j-invariant> this is amazing, like meeting a Mormon or something
22:59:34 <elliott> j-invariant: except for the ones who are telling him UML can work ... lol
23:00:16 <Sgeo_> WTF does UML have to do with Haskell?
23:00:28 <Sgeo_> Is UML some sort of imperative thingy? I thought it was flowchartiness
23:00:34 <Sgeo_> Which I guess is imperative
23:02:30 <j-invariant> elliott: http://www.reddit.com/r/compsci/comments/ez93s/the_future_of_software_system_correctness/c1c7sdo
23:03:15 <j-invariant> elliott: stupid guy, first comes out with this irrelevant halting problem crap then starts being all arrogant
23:04:54 <j-invariant> yeah cool you just learned something new and interesting, NOT EVERYTHING IS A NAIL
23:05:26 <j-invariant> Why don't we get people that just learned thermodynamics and join every fucking energy discussion with "YYEAH BUT YOU CANT CREATE INFINITE FREE ENERGY SO WHY BOTHER WITH WINDMILLS?"
23:05:39 <elliott> `addquote <j-invariant> 22:55 < qfr> How am I supposed to develop software in Haskell if I can't even prepare my projects in UML?! It seems like an impossible task. <j-invariant> HAHA [...] <j-invariant> this is amazing, like meeting a Mormon or something
23:06:06 <elliott> j-invariant: because you don't have Thermo Engineering
23:06:08 <elliott> j-invariant: or Thermo Monkeys
23:06:52 <HackEgo> 264) <j-invariant> 22:55 < qfr> How am I supposed to develop software in Haskell if I can't even prepare my projects in UML?! It seems like an impossible task. <j-invariant> HAHA [...] <j-invariant> this is amazing, like meeting a Mormon or something
23:08:01 <copumpkin> I love the guy responding to me with a condescending tone
23:08:21 <elliott> http://www.reddit.com/r/compsci/comments/ez93s/the_future_of_software_system_correctness/c1c7s0t
23:08:46 <elliott> copumpkin: i'm glad to see you've found the secret purpose of #esoteric, other than #minecraft
23:08:50 -!- pikhq has joined.
23:08:51 <elliott> which is #behind-people's-backs
23:09:00 <oerjan> copumpkin: you're godofpumpkins i guess?
23:09:06 <j-invariant> That just means we can't exactly decide when something halts or not <---- nobody cares
23:10:02 <elliott> copumpkin: oerjan is FAMOUS, he basically wrote half of the haskell 98 report*
23:10:06 <elliott> *complete and utter hogwash
23:10:07 <j-invariant> http://www.reddit.com/r/compsci/comments/ez93s/the_future_of_software_system_correctness/c1c7ks6
23:10:14 <j-invariant> it upsets me that this comment has score 2
23:10:16 <elliott> oerjan: point copumpkin to that typo you fixed or whatever!!
23:10:32 <copumpkin> j-invariant: keep saying that in here and I'm sure it will be :)
23:10:46 * copumpkin posts to twitter that it should be -30
23:10:48 <elliott> now to go make stupid comments
23:10:56 <copumpkin> (I have a lot of dumb followers who do my bidding)
23:10:57 <j-invariant> well only actually downvote it if you agree with me: That his comment is totally irrelevant
23:11:04 <oerjan> elliott: there were several and i don't have them memorized
23:11:08 <elliott> j-invariant: MORONS DON'T UNDERSTAND QUALIFIERS
23:11:33 <oerjan> dammit now my z key is acting up
23:11:35 <j-invariant> I think tachi-kaze has probably smoked a load of dope
23:11:42 <elliott> holy shit comex has a lot of twitter followers now
23:11:43 <j-invariant> nothing he says has anny connection to reality
23:11:47 <elliott> i remember when he had like
23:11:57 <elliott> damn dude, getting all famous and hsit
23:11:58 <comex> whoa, copumpkin is in this channel
23:12:13 <elliott> j-invariant: this Agora player!
23:12:19 <copumpkin> no, actually I saw people mention it in #haskell(-blah?)
23:12:20 <elliott> that's what he's known for
23:12:41 <elliott> but my statement will be correct again soon enough
23:12:45 <elliott> comex: I'm gonna go around tleling people
23:12:48 <elliott> I knew comex before he was famous
23:12:50 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
23:13:01 <comex> but you never knew me before I was an Agora player
23:13:02 <elliott> j-invariant: he did the new jailbreakme.com iPhone crack
23:13:07 <comex> your statements contradict ;)
23:13:15 <comex> also that's not very new anymore
23:13:22 <elliott> but it's what propelled you to INTERWEBS INFAMY
23:13:29 <elliott> comex: i say new because, i remember using the old jailbreakme
23:13:32 <elliott> on the day i bought my iphone
23:13:35 <oerjan> <copumpkin> (I have a lot of dumb followers who do my bidding) <-- you do know that voting conspiracies are a bannable offense on reddit, right?
23:13:40 <copumpkin> elliott: I helped make that one :P
23:13:46 <elliott> oerjan: he can just say "omg this is so stupid"
23:13:51 <comex> but they're not in Agora
23:13:55 <copumpkin> oerjan: well luckily I don't do such conspiracies
23:13:57 <elliott> copumpkin: naw, Haskell can't do anything practical like that
23:14:06 <copumpkin> elliott: lol, that was pre-haskell :P
23:14:13 <copumpkin> then I saw the light and lost interest in iphonez
23:14:40 <copumpkin> not as superstarish as comex, sadly
23:14:54 <comex> let's play ircnomic
23:15:11 <elliott> comex: heh, #ircnomic still redirects to ##nomic
23:15:21 <elliott> grumble wooble grumble grumble cough
23:16:31 <elliott> gah, how can i remove the redirect...
23:16:46 <Sgeo_> I thought comex was famous for iPhone-related reasons before jailbreakme
23:16:47 -!- elliott has changed nick to ehird.
23:18:24 <ehird> HOW DO YOU REMOVE A CHANNEL REDIRECT
23:18:27 <ehird> the forces of wooble are acting against me
23:20:42 <j-invariant> ehird: this fucking qfr is just an idiot trill
23:20:48 <ehird> comex: #ircnomic now open for business
23:20:54 <ehird> don't crowd around now
23:21:43 <Sgeo_> j-invariant, I thought it was centuries before we learned the Trills' secrets
23:22:04 -!- Sgeo_ has changed nick to Sgeo.
23:22:31 <ehird> comex: do you have a copy of the last ircnomic ruleset :D
23:23:06 <ehird> comex: well... get one?
23:23:29 <ehird> copumpkin: so have you started playing minecraft yet >:D
23:23:33 <j-invariant> I just want to progrma something really simple what is the issuse
23:23:37 <ehird> j-invariant: program what
23:23:48 <j-invariant> ehird: just some really simple algorithms on polynomials
23:23:54 <ehird> j-invariant: do it then :D
23:24:07 <j-invariant> I tried scheme, haskell and Coq they all fail
23:24:09 <ehird> j-invariant: haskell? istr you did some stuff with it
23:24:13 <ehird> and polynomialalalallal
23:24:19 <ehird> copumpkin: agda is not a language for human consumption
23:24:26 <ehird> copumpkin: it's only a matter of time before you're yelling expletives at Notch every day, btw
23:24:27 <copumpkin> I consume and produce it all the time
23:24:35 <ehird> copumpkin: you're a pumpkin
23:24:38 <j-invariant> ehird: yeah I tried to write the same program in all languages, none of them are any good
23:24:48 <ehird> copumpkin: and maybe you do, but you certainly don't produce nontrivial proofs in it >:)
23:24:52 <ehird> because that's impossible!
23:24:56 <ehird> j-invariant: what was not good about it?
23:25:00 <ehird> about haskell i mean
23:25:09 <ehird> copumpkin: COQQQQQ
23:25:17 <j-invariant> ehird: consider modular arithmetic data type
23:25:28 <j-invariant> ehird: you need to implement type level numbers to do it
23:25:32 <copumpkin> I wrote that in two different ways in agda
23:25:38 <ehird> j-invariant: use she :)
23:25:43 <ehird> the best language!
23:25:57 <ehird> j-invariant: then you only have to implement nats ;P
23:26:03 <j-invariant> ehird: but I don't do modular arithmetic but polynomials
23:26:11 <ehird> Sgeo: she's a thing.
23:26:17 <copumpkin> Sgeo: she's a preprocessor for haskell
23:26:18 <j-invariant> I mean the type level "thing" is not a natural but a polynomial
23:26:22 <copumpkin> that I've started using for her other features, too
23:26:38 <j-invariant> can't do this in a reasonable way in haskuell
23:26:38 <ehird> j-invariant: just define a polynomial normally
23:26:43 <ehird> and she will define the type-level version
23:26:45 <ehird> what's wrong with that
23:26:48 -!- azaq23 has joined.
23:26:51 <ehird> Sgeo: She's a SHE.
23:27:00 <ehird> j-invariant: does for me :-D
23:27:12 <ehird> but who needs strong kinding
23:27:14 <copumpkin> so if j-invariant wants to actually do something to the polynomial
23:27:23 <j-invariant> ehird: idk I just can't get stuff working it sucksf
23:27:31 <copumpkin> why do you need a polynomial at the type level anyway?
23:27:36 <j-invariant> I can't program in haskell it's like "woah what if everything is wrong?"
23:27:45 <copumpkin> agda's getting a better compiler or two soon too
23:28:26 <ehird> the answer to everything
23:28:45 <j-invariant> Everything sucks: When epigram2 comes out I will find out something that sucks about it after a week
23:28:50 <ehird> j-invariant: please say "i'm going to write my own language"
23:29:03 <copumpkin> yeah, with observational type theory
23:29:10 <ehird> j-invariant: YAAAAAAAY
23:29:25 <ehird> copumpkin: yeah who needs all that
23:29:27 <ehird> j-invariant: MEEEEEEE
23:29:33 <copumpkin> j-invariant: don't forget substructural types (all sorts of them)
23:29:33 <ehird> j-invariant: i suggest it have quotient types!</easywayout>
23:29:57 <ehird> copumpkin: but how do you avoid the extensional axiom of choice?
23:30:00 <copumpkin> j-invariant: definitely separate forall and pi
23:30:16 <copumpkin> I choose to not care about the AoC
23:30:26 <ehird> copumpkin: YOU CAN'T WELL-ORDER THE REALS DAMMIT
23:30:34 <ehird> </opinions taken from russell oconnor's blog>
23:30:46 <ehird> j-invariant: nuh uh!
23:30:48 <copumpkin> there's loads of blog posts telling you how to count the reals out there
23:31:05 <ehird> lol @ pi in the middle
23:31:06 <j-invariant> hm what would well ordered mean in type theory?
23:31:17 <ehird> http://r6.ca/blog/20050604T143800Z.html
23:31:23 <ehird> clearly you can't have quotient types
23:31:44 <ehird> if you can prove that you can well-order the reals in type theory + quotient types
23:31:49 <ehird> ... then what fucking program does that spit out?!
23:31:49 <luatre> ValueError: substring not found :(
23:34:20 <j-invariant> can we implement quotients in a type theory inside agda?
23:34:49 <Sgeo> I think Euphoria is supposed to be an "easy" language
23:35:10 <copumpkin> j-invariant: we can with setoid-like things
23:35:18 <Sgeo> http://openeuphoria.org/wiki/view.wc?page=SampleCode
23:35:22 * Sgeo assassinates someone
23:35:33 <copumpkin> I dunno, check the OTT implementation in agda?
23:35:47 -!- SimonRC has quit (Ping timeout: 255 seconds).
23:36:28 <j-invariant> should I (1) sleep (2) write notes about this language that will probably never actually exist
23:36:44 <Sgeo> You should do 1, but you will do 2
23:37:04 <ehird> j-invariant: latter
23:37:23 <ehird> j-invariant: i wanna help :D
23:37:56 <copumpkin> j-invariant: you can follow conor's blog posts for the basic syntax and implementation
23:38:07 <ehird> j-invariant knows enough about Epigram i think :P
23:38:14 <ehird> oh man this python program is so ugly...
23:38:20 <ehird> if I was writing it in cled it'd be easy to navigate
23:38:34 <copumpkin> I mean, it's tricky to design a good AST that maintains invariants you want (especially the j- sort)
23:38:41 <copumpkin> and conor had a nice design on his blog
23:39:21 <Sgeo> ehird, all self-hosting things start out that way, I think
23:40:07 <Sgeo> Also, Clue should be written entirely in Clue. That makes no sense, but do it anyway
23:40:55 <ehird> j-invariant: more chatting about your language!
23:41:02 <j-invariant> ehird: I don't really know category theory
23:41:11 <ehird> j-invariant: don't base it on categories then
23:41:20 <j-invariant> ehird: but they are the solution to all problems?
23:41:21 <ehird> WHAT AN INTRUIGING IDEA
23:41:27 <ehird> j-invariant: or ARE they!!!!!!!!
23:41:45 <ehird> j-invariant: try and solve 80% of problems then :P
23:42:00 <ehird> self.fill_widget(self)
23:42:00 <ehird> TypeError: fill_widget() takes exactly 1 argument (2 given)
23:42:30 <ehird> i love how tk just ignores errors, it's so cute
23:43:38 -!- rom9com has joined.
23:44:06 <ehird> what the fuck ... oh
23:44:08 -!- jesus_muppet has joined.
23:45:09 <ehird> copumpkin: gimme a unicode character that looks like a hole, or a box, or a cross or something
23:45:43 -!- calamari has joined.
23:45:45 <ehird> copumpkin: what is that :D
23:47:21 <ehird> wow it works ... kinda
23:47:31 <ehird> in a not really working way
23:51:16 <ehird> j-invariant: what is
23:51:55 <j-invariant> don't have the tools to make the tools etc.
23:52:42 <ehird> j-invariant: you have the latter surely
23:52:48 <ehird> haskell is good for implementing languages :P
23:54:22 <ehird> j-invariant: there's nothing to get
23:54:26 <j-invariant> I don't know how those guys can do anything with it
23:54:35 <Sgeo> http://qntm.org/tesla DARNIT
23:55:01 <ehird> j-invariant: by testing code rather than proving it correct
23:55:14 -!- oerjan has quit (Quit: leaving).
23:58:25 <Sgeo> I think I'll try learning OCaml again
23:58:35 <Sgeo> Erm, reading about
23:59:19 <ehird> j-invariant: so tell me about your lang :P