←2010-01-08 2010-01-09 2010-01-10→ ↑2010 ↑all
00:00:02 <ehird> (Note: mmm-mode is common across Emacs and XEmacs, SO DON'T GO RUNNING TO THE FSF :P)
00:00:28 <ehird> I should just write my own editor. With multiple major modes. And breakout.
00:00:32 <ehird> In fact, forget the editor.
00:00:33 -!- ais523 has quit (Remote closed the connection).
00:00:45 <ehird> Breakout: inside the blocks, breakout.
00:00:54 <ehird> Multiple major modes + Breakout = best game/editor/OS ever??
00:01:09 <ehird> (yes)
00:02:16 <ehird> (pikhq: You wouldn't happen to have any idea of how to whip mmm-mode into submission?)
00:06:38 -!- coppro has joined.
00:07:21 <ehird> Bah. It's ridiculous that none of the modern editors were designed with modes being an atomic, composable thing.
00:07:26 <ehird> Were these things even *designed*???
00:07:28 -!- jpc has quit (Read error: 104 (Connection reset by peer)).
00:07:33 -!- jpc1 has joined.
00:09:57 <pikhq> I strongly suspect that all editors were evolved.
00:10:16 <pikhq> Except Notepad. That's just stagnant.
00:10:34 <ehird> At least notepad is totally consistent.
00:10:51 <pikhq> True.
00:11:05 <ehird> I guess I'm just going to have to write my own editor. *sigh*
00:11:57 <Sgeo> Doesn't Notepad have some sort of unicode issues?
00:12:04 <ehird> Not in Vista onwards.
00:12:13 <Sgeo> Oh
00:12:48 <ehird> Notepad is basically perfect, except for the unnecessary .LOG feature.
00:14:19 <ehird> Editor wishlist: File's modes are a tree; the topmost mode is managed by the editor.
00:14:27 <Sgeo> I've said this before, but someone should make an esolang whose source files start with .LOG
00:14:49 <ehird> Modes are self-contained: they can be applied to any buffer, with any settings (for instance, base indent N for code embedded in HTML),
00:15:09 <ehird> and things like every instance of a mode in the same buffer being the "same instance" are possible
00:15:13 <ehird> for e.g. completion, etc
00:15:16 <ehird> (or even interactive evaluation)
00:15:32 <ehird> also, buffers are abstract and, hopefully, composable
00:15:41 <ehird> you can define a buffer that is the rot13 of a file, for instance
00:15:50 <ehird> and modifying and saving it rot13s the contents and puts it in the file
00:16:46 <ehird> now someone pledge to switch to my editor if it's any good so i have some sort of motivation.
00:18:02 -!- Sgeo has left (?).
00:18:05 -!- Sgeo has joined.
00:18:23 <Sgeo> I definately want to try it
00:18:27 <ehird> *definitely
00:18:34 <ehird> do you still use windows
00:18:41 <Sgeo> Yes
00:18:44 <ehird> bugger
00:18:55 <ehird> well you'll have to switch to something that runs X unless I change my mind :P
00:19:20 <Sgeo> You can't use GTK+ or Qt or wxWindows or something along those lines?
00:19:32 <coppro> ehird: pledged
00:19:42 <ehird> coppro: why thank you.
00:19:44 <coppro> Xming = awesome
00:19:45 <coppro> just get that
00:19:57 <pikhq> Windows runs X. Just not as well as anything else ever.
00:20:02 <ehird> yeah I was considering telling him to just get an X server
00:20:07 <ehird> pikhq: what, even ubuntu
00:20:23 * ehird installs xming himself
00:20:25 <pikhq> ehird: Have you ever used X on Windows?
00:20:32 <ehird> Cygwin X is shit
00:20:35 <ehird> xming isn't, from what i hear
00:20:43 <coppro> Xming is good
00:20:48 <pikhq> Granted, part of the issues are because Cygwin isn't all that great... But still.
00:20:59 <ehird> Xming is totally Windows, no cygwin
00:21:03 * Sgeo sees a screenshot
00:21:13 <Sgeo> ...Ubuntu on Windows?
00:21:19 <ehird> yes, with coLinux.
00:21:19 <coppro> no, X on windows
00:21:22 <pikhq> ehird: X11 using programs are either Cygwin or not on Windows, though.
00:21:27 <ehird> (a driver that runs a linux kernel)
00:21:31 <coppro> oh, yeah
00:21:36 <ehird> hmm
00:21:38 <Sgeo> coppro, yes, I know, but the screenshot on the wiki page
00:21:45 <ehird> coppro: pikhq's right, you know; I do want to depend on posix
00:21:52 <ehird> I mean, not fork() or anything
00:22:00 <ehird> probably mmap() though....
00:22:02 <ehird> *though...
00:22:02 <coppro> ehird: language?
00:22:07 <ehird> but I refuse to depend on Cygwin
00:22:08 <Sgeo> Hm, I'm going to have to try coLinux
00:22:16 <ehird> coppro: oh, I assumed C; good point, there's no reason to assume C
00:22:27 <ehird> hmm... perhaps Scheme
00:23:16 <ehird> although I'd have to write my own impl for the $whatever_toolkit bindings and the like
00:23:24 <ehird> (scheme implementation state is... rather dismal)
00:23:47 <ehird> you have to donate to xming to get the latest version that's kinda lame
00:23:59 <ehird> vs
00:24:49 <ehird> I'll probably just depend on Tk or something (with default config on X11 that makes it not be shit)
00:25:06 <ehird> I believe newer Tks can do Xft and the like; pikhq will know.
00:25:14 <ehird> and Tk is native on Windows
00:25:18 <pikhq> Yeah.
00:25:21 <ehird> OS X I don't really care about because I won't be using it soon
00:25:29 <Sgeo> Wait, it's possible to have non-shitty Tk?
00:25:32 <ehird> Sgeo: yes
00:25:34 <pikhq> And Tk is nativish on OS X.
00:25:36 <pikhq> Sgeo: Yes.
00:25:41 <ehird> ok, Tk 8.5+ includes the new theming engine and outline fonts
00:25:52 <ehird> Sgeo: http://tktable.sourceforge.net/tile/
00:25:53 <pikhq> It's slightly shitty on UNIX still, but it at least isn't complete suck now.
00:25:54 <ehird> Pick a theme, any theme.
00:26:12 <ehird> http://tktable.sourceforge.net/tile/screenshots/unix.html
00:26:23 <pikhq> And it's still got one of the nicer APIs...
00:26:24 <Sgeo> oooo
00:26:25 <ehird> Note the reasonableness of Default, Revitalized and Clam.
00:27:10 <Sgeo> No vistanative or sevennative ?
00:27:19 <ehird> winnative uses native Windows widgets.
00:27:23 <ehird> Sgeo: you know IDLE? Python?
00:27:25 <ehird> That's Tk.
00:27:44 <Sgeo> ehird, yes, and that's why I held my believe that Tk was shit
00:27:52 <Sgeo> Maybe I'm misremembering IDLE's look
00:27:57 <ehird> have you ever used IDLE on Windowsw?
00:27:57 <pikhq> Sgeo: xpnative uses the XP themed widgets API.
00:27:59 <ehird> *Windows
00:28:01 <ehird> it is 100% native
00:28:08 <ehird> pikhq: winnative uses actual widgeets though
00:28:13 <pikhq> The same API is used for Vista and 7.
00:28:17 <ehird> Maybe I could write the editor in Tcl. pikhq: Tcl has lambda right?
00:28:23 <ehird> or rather, closures
00:28:25 <zzo38> http://zzo38computer.cjb.net/img_10/healthbaseisreallystupi.png
00:28:35 <Sgeo> Well, I don't think I've used IDLE on Windows in a very long time
00:28:36 <Sgeo> Hold on
00:28:43 <pikhq> Kinda-sorta-maybe.
00:28:50 <ehird> pikhq: Elaborate.
00:29:20 <coppro> ehird: donate and mirror imo
00:29:43 <ehird> coppro: It isn't open source.
00:29:50 <ehird> The old binaries are public domain but the donate ones aren't.
00:29:54 <coppro> oh
00:29:57 <ehird> Unless you're actually instructing me to violate copyright law.
00:29:59 <pikhq> I'm going to guess that this is what you'd actually *want*: http://www.tcl.tk/cgi-bin/tct/tip/187
00:30:19 <ehird> But that isn't accepted.
00:30:27 <ehird> What can I do in practice?
00:30:33 <ehird> Also, does Tcl let you use dashes-in-names?
00:30:42 <ehird> (Is that the default naming convention?)
00:30:43 <coppro> ehird: I've had no trouble with the PD release
00:30:56 <pikhq> Whereas this is what you actually get: http://www.tcl.tk/cgi-bin/tct/tip/194.html
00:30:56 <coppro> but I'll be fair in saying I haven't used it a ton
00:31:02 <ehird> coppro: It's from 2007. Donate release is from 2010.
00:31:04 <pikhq> ehird: Tcl allows you to use dashes-in-names.
00:31:07 <ehird> Kinda crappy.
00:31:13 <ehird> pikhq: Is it the naming convention?
00:31:16 <pikhq> The typical naming convention is underscores, however.
00:31:16 <coppro> old != bad
00:31:30 <ehird> coppro: Yes, but it's a whole major version behind. That's just crappy behaviour on tnhe part of the author.
00:31:32 <pikhq> (don't see it much, though)
00:31:45 <coppro> ehird: He probably bumped the major when he closed it off
00:32:07 <coppro> people wouldn't donate for when they can get
00:33:07 <ehird> pikhq: what do you mean, don't see it much?
00:33:46 <pikhq> ehird: ... There's like 20 names in underscores in the n section of my manpages...
00:33:53 <ehird> Ah.
00:33:58 <ehird> So most names are scruncheduplikethis?
00:34:35 <ehird> It's just that, say, run-extended-command is much nicer than run_extended_command or runextcmd.
00:34:40 <pikhq> No, you've just got things like the string proc.
00:34:46 <ehird> Ugh, yeah.
00:34:47 <ehird> Ugly.
00:35:04 <pikhq> "string is", "string range", etc.
00:35:24 <ehird> I could do Scheme+Tk...
00:36:00 <ehird> (STklos)
00:36:10 <ehird> Wait.
00:36:15 <ehird> STklos changed to Gtk. Ugh.
00:36:57 <ehird> I swear my editor will have a _nice_ user interface.
00:37:21 <ehird> Keyboard-oriented but point-'n-clickable and no RSI.
00:38:36 <ehird> Definitely no modal dialogs, except maybe if you run I-want-a-crazy-WIMP-file-selector.
00:39:00 <ehird> ("dialog" with no title bar will appear in the bottom of the window, probably.)
00:39:07 <ehird> Like a souped-up minibuffer.
00:39:10 <ehird> I'm going for today. Bye.
00:39:30 -!- ehird has quit.
01:01:17 <zzo38> I think this has 3 instructions, not 2 instructions http://esoteric.voxelperfect.net/wiki/Ultimate_bf_instruction_minimalization%21
01:01:57 <zzo38> Because, no operation is one of the instructions, too (see the information about "(" command)
01:04:47 <SimonRC> zzzzzzzzz
01:07:59 <zzo38> yyyyyyyyy
01:23:22 -!- oerjan has quit ("Good night").
01:23:33 -!- zzo38 has quit ("Good day").
01:38:15 -!- oklopol has joined.
01:38:29 <Sgeo> Is OpenSVN dead?
01:42:25 <oklopol> your MOM is dead
01:56:57 -!- oklofok has quit (Read error: 110 (Connection timed out)).
02:00:37 -!- Cerise has quit (farmer.freenode.net irc.freenode.net).
02:01:09 -!- Cerise has joined.
02:14:43 -!- BeholdMyGlory has quit (Remote closed the connection).
02:18:51 <augur> ehird, i was thinking in the graphics language, we'd need a function that takes some shapes and constructs and arbitrary composite shape out of (copies of) them
02:20:30 <augur> e.g. group { ... } where everything in ... is a subpart of the group object; so their positions are bound to the group objects, their sizes, etc.
02:20:47 <augur> so that if you scale the group object, the subobjects scale, if you rotate it, they as a whole rotate, etc etc.
02:20:54 -!- FireFly has quit ("Leaving").
02:21:09 <augur> ping me with an opinion when you get back
02:21:16 <Sgeo> augur, what, are you making a competitor to SL?
02:21:23 <augur> sgeo: whats SL
02:21:39 <Sgeo> Second Life
02:21:44 <augur> no.
02:22:52 <augur> were trying to design the latex-of-images, so to speak
02:23:57 <Pthing> svg?
02:40:30 <uorygl> Hmm, I want to make some aperiodic tiles.
02:41:44 <oklopol> we have a course about tiling, but not in this semester :'(
02:42:26 <oklopol> i hear it's rather hard to do that
02:42:39 <uorygl> I think I can make some aperiodic tiles for a half-plane.
02:43:21 <oklopol> how then?
02:43:29 <uorygl> Give me a moment.
02:43:50 <oklopol> do you use wang tiles?
02:44:05 <uorygl> Yeah.
02:44:33 <oklopol> i guess it's a w.l.o.g system
02:44:40 <oklopol> *.
02:44:46 <uorygl> A without loss of generality system?
02:44:48 <oklopol> yes
02:45:18 <oklopol> that you can simulate any set of tiles using wang tiles... but that's actually not at all true
02:45:56 <uorygl> Surely for every set of nice tiles, there's a Turing machine that halts if and only if it has a periodic tiling.
02:46:20 <oklopol> yes, obviously
02:46:36 <uorygl> Put the tiles together in every possible way; halt when you make something whose edges have the right symmetry.
02:46:44 <oklopol> just enumerate all possible ways to piece those tiles together, and for each check whether it fits its own boundary
02:46:56 <oklopol> ...i think ;)
02:48:08 <oklopol> i haven't actually thought much about tiling, just seen the proof of tm < tiling with a seed tile, once
02:48:51 <oklopol> where seed tile is a tile you have to use, then you can force the initial turing machine block to be on the plane
02:49:02 <oklopol> but you already knew that
02:51:02 <uorygl> Did I?
02:51:32 <oklopol> i usually assume people know the things i know through the same media i know them
02:51:57 <oklopol> i don't mean physical medium, more like context
02:52:38 <oklopol> in any case, the original use of aperiodic tilings was to show tiling is undecidable even without a seed tile
02:52:51 <oklopol> (the guy who proved it with a seed tile actually postulated the opposite)
02:54:32 <oklopol> so did you have something for half-plane?
02:54:53 <oklopol> i would probably need paper and an afternoon
02:57:32 <uorygl> http://pastebin.ca/1743607
02:58:16 <oklopol> wait
02:58:25 <oklopol> why is there a row of e on the bottom?
02:58:36 <uorygl> Because the bottom matches with the edge of the half-plane.
02:58:41 <oklopol> i mean the problem is trivial if you have seed tile :P
02:58:42 <oklopol> *s
02:59:15 <oklopol> i assumed you just require it to fill half the plane sensibly, and the rest can fail
02:59:59 <oklopol> but i'll read it still, maybe
03:01:23 <uorygl> Am I allowed to congratulate myself on my insight even if the problem is trivial?
03:02:33 <oklopol> certainly, especially as i consider it trivial only because i know how a turing machine is embedded given a seed tile, and i don't even see how to do it given a seed *row* :)
03:02:48 <uorygl> Wonderful!
03:04:12 <oklopol> okay i think they are aperiodic, but can't really see why
03:04:41 <oklopol> i mean i can't find a counter-example, what does it do?
03:04:47 <uorygl> You know how Sturmian words are aperiodic and can be collapsed?
03:05:36 <oklopol> very vaguely
03:05:43 <oklopol> are they err
03:06:03 <uorygl> Take the infinite Fibonacci word: ABBABABBABBAB...
03:06:05 <oklopol> err i'll just google, i'm thing of lind... something
03:06:27 <uorygl> The letter A only occurs in the string AB. Replace AB with A, and you get ABAABABA...
03:06:35 <uorygl> Then the letter B only occurs in the string AB, and so on.
03:06:49 <uorygl> Therefore, this is a Sturmian word.
03:07:17 <oklopol> what's an infinite fibonacci word?
03:07:46 <uorygl> It's a thing that you get by repeatedly applying the replacement {A -> B, B -> AB}, or an equivalent one.
03:07:58 <oklopol> right
03:09:52 <uorygl> My tiling, going from the bottom up, repeatedly applies the replacement {AB -> B, B -> A}, thereby forcing the bottom row to be an infinite Fibonacci word.
03:10:49 <uorygl> Though it uses the color O to represent nulls, which it ignores from then on.
03:11:11 <oklopol> ah
03:13:44 <oklopol> i'm quite convinced that works
03:13:47 <uorygl> It's easy enough to make the tiles allow any Sturmian word, except I don't know how to force alpha to be irrational.
03:14:43 <uorygl> The resulting set of tiles will contain 22 instead of 7.
03:15:43 <uorygl> Now to ponder how to tile the entire plane.
03:17:49 <oklopol> okay, a turing machine can be pretty easily embedded given a seed row
03:17:56 <uorygl> Lessee. These tiles cannot tile the entire plane as long as there is are at least two tiles, horizontally separated, each containing an A or B; each one would generate more of itself below itself until they got crowded out.
03:18:47 <oklopol> those tiles certainly can fill the whole plane
03:18:55 <oklopol> in fact just one of them can
03:20:14 <uorygl> Hence the "as long as . . ." part.
03:21:20 <oklopol> maybe i didn't actually read what you said, sorta half-asleep
03:21:43 <oklopol> just looking for errors in what you say i guess, easy way out
04:19:38 -!- coppro has quit (Read error: 60 (Operation timed out)).
05:08:11 -!- oklofok has joined.
05:13:30 -!- oklopol has quit (Read error: 110 (Connection timed out)).
05:16:24 -!- Pthing has quit (Remote closed the connection).
05:30:46 -!- soupdragon has joined.
05:39:40 -!- jpc1 has quit ("I will do freaking anything for a new router.").
05:40:15 -!- jpc has joined.
06:07:22 -!- jpc has quit (Read error: 110 (Connection timed out)).
06:09:31 -!- zzo38 has joined.
06:10:40 <zzo38> I made a beer program in Icoruma (a markup language for RPG rules). Why? is, just because I can, that's why. http://pbox.ca/11dhp
06:12:21 <zzo38> To write a brainfuck interpreter, would be more difficult, because Icoruma lacks two things, input facilities and infinite loops (although you could still do infinite self-recursion)
06:39:16 -!- jpc has joined.
06:40:50 <zzo38> +
06:44:03 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)).
06:44:08 -!- lifthrasiir has joined.
06:50:29 -!- jpc has quit (Read error: 54 (Connection reset by peer)).
06:50:29 -!- jpc has joined.
06:53:52 <soupdragon> hey zzo I didn't get around to trying to compile your forth yet :(
06:55:50 <zzo38> OK
06:57:23 -!- zzo38 has quit ("I am still in the process of writing the adventure standard library but now I have to sleep OK thanks bye").
07:06:41 -!- coppro has joined.
07:14:23 -!- whtspc has joined.
07:16:06 -!- whtspc has left (?).
07:45:03 -!- coppro has quit (Remote closed the connection).
07:45:50 -!- coppro has joined.
07:57:18 -!- Sgeo has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:12:06 -!- pikhq_ has joined.
08:26:36 -!- pikhq has quit (Read error: 110 (Connection timed out)).
08:30:55 -!- coppro has quit ("I am leaving. You are about to explode.").
09:41:24 -!- lament has joined.
09:54:35 -!- lament has quit.
10:06:30 -!- jpc has quit (Read error: 60 (Operation timed out)).
10:16:34 -!- oerjan has joined.
10:33:17 -!- Slereah_ has joined.
10:49:07 -!- Slereah has quit (Read error: 110 (Connection timed out)).
11:07:51 -!- oerjan has quit ("leaving").
11:34:01 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)).
11:40:25 -!- rodgort has quit (Client Quit).
11:40:35 -!- rodgort has joined.
11:45:48 -!- kar8nga has joined.
11:48:41 -!- MizardX has joined.
11:50:12 -!- FireFly has joined.
12:35:20 -!- Sgeo has joined.
12:42:34 <soupdragon> okay I think I figured out an algorithm
12:50:54 <soupdragon> where is my reward?
12:51:21 <AnMaster> soupdragon, algo for what?
12:51:28 <soupdragon> parsing
12:51:41 <AnMaster> soupdragon, parsing what language?
12:52:02 <soupdragon> I figure if you just parse every length 1 subseqence, then every length 2 subseqence, ... up to the lenght of your input
12:52:06 <soupdragon> that should work fine..
12:52:31 <AnMaster> soupdragon, parsing what language? C? English? infix math notation? Haskell?
12:52:48 <FireFly> soupdragon, link to your IRP programmer projecteuler account?
12:52:58 <soupdragon> http://projecteuler.net/index.php?section=profile&profile=InternetRelayProgrammer
12:53:04 <FireFly> Ah
12:53:11 <soupdragon> :D
12:53:15 <soupdragon> 3 done!
12:53:23 <FireFly> Btw, congrats on beating #2
12:53:25 <FireFly> Yeah
12:53:42 <AnMaster> <soupdragon> http://projecteuler.net/index.php?section=profile&profile=InternetRelayProgrammer <-- redirects to front page?
12:53:49 <FireFly> not here
12:54:01 <soupdragon> AnMaster, im not parsing a specific language but a class of languages
12:54:26 <soupdragon> how it work is every word is given a category, and a parse is such that the categories all fit together properly
12:54:33 <AnMaster> soupdragon, what class?
12:54:42 <AnMaster> which*
12:55:56 <soupdragon> my idea for the algorithm is that you take as input, all the pases of the subseqences
12:56:09 <soupdragon> then making a parse for the full thing just means connecting those up
12:56:26 <AnMaster> soupdragon, *which class*
12:58:01 <soupdragon> it is used for english language btw
12:58:24 <soupdragon> that's an example: Frank < ((gave > (a > flower)) > (to > Mary))
12:58:53 <soupdragon> that's a parse of Frank gave a flower to Mary, and the semantics are GIVE(FLOWER,MARY,FRANK)
13:06:56 -!- lifthrasiir has joined.
13:09:30 <oklofok> oh lol, i thought "congrats on beating #2" meant soupdragon was now #2 on the overall player ranking.
13:11:36 <soupdragon> haha I wish
13:20:09 <oklofok> i never got very far, all the problems started looking the same after, well, whatever amount i did
13:20:24 <oklofok> (also there was the fact they were hard, but let's not mention that.)
13:47:36 <FireFly> ;P
13:54:33 -!- ehird has joined.
13:55:13 -!- BeholdMyGlory has joined.
13:57:07 <Deewiant> AnMaster: You have to be logged in to be able to view the profile
14:01:00 <Sgeo> ehird, if you're somehow reading logs of #xkcd, don't read what I said. I sort of hinted at a somewhat important FS spoiler
14:01:09 <ehird> Quick, name an editor: Alter or Amend
14:01:09 <ehird> If you're the lowercase type, you could pick from one of these: alter or amend
14:01:20 <ehird> Sgeo: I am, in fact, stalking you, so thanks for the info?
14:01:41 -!- ais523 has joined.
14:03:24 <AnMaster> Deewiant, ah
14:03:48 <oklofok> ehird: amend is very fuzzy and touchable.
14:04:00 <ehird> Totally.
14:04:32 <oklofok> alter sounds like it wants to change the world with its old ideas
14:05:08 <AnMaster> oklofok, alter's old ideas, or the old ideas of the world?
14:05:26 <oklofok> alter's
14:05:29 <AnMaster> ah
14:06:00 <AnMaster> ehird, what sort of editor would it be? Didn't you say you wanted to write a text editor recently?
14:06:29 <ehird> Yes, and I decided I would and expanded a bit on my ULTIMATE VISION yesterday.
14:06:37 <AnMaster> oh?
14:06:58 <ehird> Driven by my frustration at how hard it is to do multiple major modes in Emacs, while trying to make a Frink Server Pages mode.
14:07:14 <AnMaster> ah
14:07:24 <ehird> tl;dr blurb: Buffers are abstract and possibly composable; modes are atomic, not regexp hacks operating on a buffer, and composable;
14:07:33 <ehird> fully extendable like emacs;
14:07:39 <ehird> less RSI than emacs;
14:07:50 <AnMaster> ehird, sounds nice. What language would it use instead of elisp?
14:07:55 <ehird> and simultaneously command/keyboard based while still being comfortably point-and-clickable while appropriate
14:07:58 <ehird> the end
14:08:50 <AnMaster> very nice.
14:08:55 <AnMaster> hm
14:08:55 <oklofok> we gonna see some changes around here
14:09:04 <ehird> AnMaster: Undecided. I'm probably going to use Tk for the GUI toolkit (don't worry, it doesn't have to be ugly! See http://tktable.sourceforge.net/tile/screenshots/unix.html; default, revitalized and clam are nice.), so I might use Tcl, but probably not since Tcl doesn't do lambdas well and stuff.
14:09:05 -!- Sgeo_ has joined.
14:09:08 <ehird> I might use Scheme.
14:09:15 <ehird> So, undecided, basically.
14:09:47 <AnMaster> hm
14:09:51 <AnMaster> ehird, alter > amend
14:09:59 <AnMaster> bbl
14:10:09 <ehird> So 1:1.
14:14:43 <AnMaster> back
14:15:13 <AnMaster> well, amend sounds like it can not completely restructure things. Just amend, like amendments to the US constitution
14:15:26 <AnMaster> alter sounds much more powerful and capable
14:16:12 <ais523> what's this debate about?
14:16:20 <AnMaster> to radically restructure things, if that is required. As well as just making small alterations should that be your goal
14:16:26 <AnMaster> ais523, naming of ehird's editor
14:16:37 <AnMaster> <ehird> Quick, name an editor: Alter or Amend
14:16:37 <AnMaster> <ehird> If you're the lowercase type, you could pick from one of these: alter or amend
14:16:37 <AnMaster> * ais523 (n=ais523@unaffiliated/ais523) has joined #esoteric
14:16:40 <ais523> pick whatever backronyms better
14:16:48 <ehird> I don't do backronyms.
14:16:58 <ais523> well, someone else will if it becomes popular
14:17:05 <ais523> and you want the backronym to be a good one rather than a terrible one
14:17:27 <ais523> personally I'd go for "alter" because it sounds more like "editor", and I think name-feel is important
14:17:28 <AnMaster> ais523, well that is easy, alter stands for alter
14:17:44 <ehird> People backronymmed "vi"?
14:17:53 <ehird> People backronymmed "Notepad"?
14:18:07 <ehird> I'm pretty sure Emacs is a unique recipient, and it was an acronym to start with.
14:18:22 <ehird> Also, it's technically not just an editor, as I'm fairly sure it would make a good mail interface too. (BUT NO TETRIS!)
14:18:48 <ais523> if it's not powerful enough to implement tetris, it fails as an editor
14:18:58 <ais523> otoh, feel free to not include tetris as part of the standard distribution
14:19:00 <AnMaster> ehird, notepad = note or text editor plus a diagram. Oh sorry, did it have to make sense too?
14:19:00 <ehird> It's certainly powerful enough.
14:19:07 <ehird> I'll just kill you if you do it.
14:19:24 <AnMaster> ehird, isn't vim = Vi IMproved?
14:19:28 <AnMaster> or something like that
14:19:51 <ais523> maybe it's called VI because it's the world's sixth best editor
14:20:04 <oklofok> :D
14:20:27 <ehird> NOTEPAD: Not Only a Text Editor: Putrid Alchemic Death!
14:20:46 <AnMaster> ais523, that high ranking? I doubt it. lets see... better ones: emacs, nano, joe, pico, kate, gedit
14:20:53 <AnMaster> so it would be the seventh at most
14:21:13 <ehird> Come on, even I won't argue that nano is better than vi.
14:21:23 <ehird> Only a zealot or an idiot who really likes nano would do that.
14:21:26 <ais523> I don't think I can either, I was trying to come up with a plausible argument and failed
14:21:29 <ehird> I presume you're not the latter.
14:21:33 <ais523> the best I can manage is "nano is better for beginners"
14:21:45 <ehird> ais523: AnMaster's argument is undoubtedly "vi is the worst thing EVARRRRRRRRRRRR and I hate it"
14:21:45 <ais523> which I don't consider to be an important property of an editor
14:22:06 <ehird> And gedit? No... not really.
14:22:23 <AnMaster> ehird, well, vi probably isn't. worse. But personally I found vi more confusing than nano
14:22:24 <ais523> gedit's "good enough", I use it sometimes, but I don't think it's better than vi
14:22:26 <ehird> Kate, well, I disagree, but we're getting into actual personal opinion here.
14:22:37 <ais523> also, kate > gedit, I really should install kate on here
14:22:45 <AnMaster> bbl
14:22:46 <ehird> Joe, joe isn't bad. So sure, if you have idiosyncratic tastes.
14:22:51 <oklofok> "Good Enough eDIT"
14:22:54 <soupdragon> I want cake
14:22:57 * ehird scares AnMaster: Tuomov uses joe, you know
14:22:58 <oklofok> who doesn't
14:23:10 * ais523 sudo aptitude install kate
14:23:10 <ehird> oh, and he listed pico as well as nano
14:23:14 <ehird> how disingenuous
14:23:17 <ais523> I noticed
14:23:21 <Sgeo_> I was working on a Python project, and was asked what editor I use. "Kate". "You get a girl to type in your programs for you? Lucky!"
14:23:33 <ehird> in conclusion, the defensible subset of his list is {emacs, joe, kate}
14:23:45 <oklofok> yotto
14:24:00 <ehird> Sgeo_: was that a "joke" and if so was it yours or did this actually happen
14:24:24 <Sgeo_> It was a joke, it actually happened, although perhaps phrased differently, I don't remember.
14:24:43 <Sgeo_> It was 2005 or 2006, so
14:24:49 <oklofok> a few times i've gotten a girl to read my books to me.
14:24:58 <oklofok> it's great except it doesn't work
14:25:07 <soupdragon> yeah I was gonna say, how does that work
14:25:18 <oklofok> because i need to constantly explain notation, and need to take pauses to think about proofs
14:25:24 <oklofok> works great for fiction tho
14:25:37 <ehird> what we need is 2D natural language
14:25:37 <soupdragon> yeah
14:25:38 <oklofok> mind doen't drift when the stream is constant
14:27:17 <oklofok> also with math and cs there's the slight problem the girl might get bored if she doesn't understand a single word
14:27:45 <soupdragon> yeah girls don't understand things like math and computing
14:27:53 <ehird> or LIFIE
14:27:55 <ehird> *LIFE
14:27:59 <ehird> OR BREATHING
14:28:01 <ais523> soupdragon: some do
14:28:09 <ehird> i think soupdragon was being sarcastic
14:28:09 <ehird> maybe.
14:28:27 * Sgeo_ wishes there were more girls in his programming classes
14:28:44 <oklofok> oh shit, i was supposed to meet this dude today and teach him game theory
14:28:53 <ehird> hmm... I can't develop my editor in OS X because Tk is yuck on OS X
14:28:54 <soupdragon> prisoners dilemma
14:29:00 <oklofok> (16:30 now)
14:29:04 <ehird> also, because the tcl/tk os x comes with is old
14:29:08 <ehird> and i'm too lazy to install a new one
14:29:10 <soupdragon> will he show up?
14:29:19 <ehird> doing it in a vm would be a bit of a bitch though
14:29:20 <oklofok> i don't really let people here
14:29:28 <ehird> so i have to install a non-os x OS on a second partition
14:29:38 <oklofok> if he's still up for it, maybe uni, oh wait, it's saturday
14:29:45 <Sgeo_> ehird, you really want to create an editor that will be ugly on OS X?
14:29:46 <ais523> ooh, I've just had a ridiculous thought
14:29:49 <ais523> an inside-out VM
14:29:57 <ais523> as in, you open a second OS inside your first one
14:30:02 <oklofok> xD
14:30:10 <ais523> then the VM sort of 'flips' and leaves you with your original OS running inside the new one
14:30:11 <ehird> ais523: that's the same thing as a vm :p
14:30:14 <oklofok> Ok, around 2 o'clock then. Where do we meet?
14:30:15 <ehird> ah.
14:30:20 <oklofok> seems we also set a time
14:30:22 <ehird> Sgeo_: Well, _anything_ that isn't Cocoa is ugly on OS X.
14:30:27 <oklofok> one fucking thing to do all week
14:30:27 <ehird> Or Carbon I guess if used carefully.
14:30:33 <ehird> I won't be using OS X soon anyway.
14:31:23 <oklofok> soupdragon: even if the girl was a mathematician, it's possible she wouldn't understand a single word, starting from a random chapter, with a random topic
14:31:43 <oklofok> although i'm not arguing girls usually have different interests
14:32:22 <SimonRC> ais523: don't VMs usually have a different sort of hardware on the inside to the outside?:
14:32:23 <Sgeo_> Any ideas on what I should start reading online so conversation in here stops going over my head?
14:32:36 <ais523> SimonRC: yes, but I don't think that's a fundamental limitation
14:32:39 <ehird> what subset of conversation
14:32:42 <ais523> just it's done that way because that way's easier
14:32:43 <ehird> we talk about everything
14:32:49 <SimonRC> ais523: ok
14:32:51 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
14:32:55 <oklofok> Sgeo_: the interesting stuff or the OS stuff
14:32:59 <AnMaster> * ehird scares AnMaster: Tuomov uses joe, you know <-- name sounds familiar, can't place it.
14:33:04 <Sgeo_> lol
14:33:05 <ehird> oklofok: we don't do much os stuff anymore :|
14:33:07 <ehird> AnMaster: Ion.
14:33:20 <ehird> ais523: the cool thing about your inside-out vm would clearly be the switching animation
14:33:23 <AnMaster> <ehird> oh, and he listed pico as well as nano <-- if you didn't realise it, it was half a joke.
14:33:27 <AnMaster> ehird, ouch
14:33:34 <oklofok> ehird: i label pretty much anything as OS stuff that contains individual program names :D
14:33:41 <ehird> I'm imagining the VM inside growing to be as big as the screen, and the other OS shifting into the window area
14:33:49 <ehird> while the window chrome fades appropriately
14:33:50 <ehird> xD
14:33:53 <ehird> oklofok: lulz
14:33:59 <ais523> ehird: OK, that /would/ be a great animation
14:34:01 <AnMaster> ehird, anyway, I would place emacs, kate, joe and nano above vi, but vim above nano
14:34:03 <AnMaster> so it would be:
14:34:10 <AnMaster> emacs, kate, joe, vim, nano, vi
14:34:37 <AnMaster> ehird, I find it hard to imagine even you could place nano below vi
14:34:37 <oklofok> ehird: i should probably call it something else, maybe "conversations containing individual program names".
14:34:42 <SimonRC> I wonder if some sort of hypervisor would be needed
14:34:49 <ehird> eh, tuomov isn't all bad. Yes, ion's license is really stupid, and he's a total asshole... but I read his blog a bit a while back, and he has a lot of good ideas
14:35:01 * oklofok is afraid he got a random uni acquaintance mad!
14:35:20 <AnMaster> ehird, possibly also gedit should be above vi, it isn't too bad.
14:35:21 <ais523> SimonRC: I assumed you'd have one anyway, because virtualisation's really slow without it, and I can't imagine how the operation of turning a VM inside-out would work otherwise
14:35:30 <AnMaster> ais523, would you agree with that list?
14:35:40 <Sgeo_> Well, off to watch a movie on YouTube
14:35:42 <ais523> AnMaster: I've never used joe
14:35:43 <oklofok> also soupdragon: not far from the truth, prisoner's dilemma was in the last exam
14:35:52 <soupdragon> :D
14:35:57 <ais523> and I don't think kate > vim is uncontroversial (and emacs v vim is definitely controversial)
14:36:00 <oklofok> sorry about random buffer emptying.
14:36:00 <AnMaster> ais523, only used it a bit, not much. The editors I actually use often are emacs, kate and nano
14:36:35 <Gregor> Nothing is better than vim.
14:36:40 <Gregor> vim rules all.
14:36:42 <Gregor> Muahahahaha
14:36:53 * Sgeo_ has become addicted to using Chrome's Task manager to kill everything and close all tabs except one
14:36:54 <ehird> kate + joe > vim is highly controversial
14:37:02 <ehird> very few people would agree with that
14:37:19 <ehird> nano > vi too, although saying vi instead of vim means more people would agree
14:37:22 <ehird> but still controversial
14:37:42 <ais523> nano and vi have similar capabilities, I think
14:37:54 <AnMaster> ehird, well, depends on what aspect you are rating. Customisability: then vim is probably directly after emacs. Ease of use: then my rating probably isn't too far off
14:37:55 <ais523> vi's harder to learn but a bit faster to use once you have
14:38:02 <ehird> ais523: nano doesn't have vi's composable commands
14:38:04 <ehird> nor :!
14:38:09 <ehird> afaik
14:38:13 <SimonRC> or ex mode
14:38:14 <ehird> so it's not even remotely as powerful as vi
14:38:17 <AnMaster> brb
14:38:21 <ais523> ehird: I said capable, not powerful
14:38:23 <Sgeo_> How is it that I always get interested in stuff for stupid reasons?
14:38:26 <ais523> I agree that vi's a lot more powerful
14:38:26 <ehird> LOL
14:38:34 <ehird> AnMaster thinks emacs is easier to use than kate or joe or nano?
14:38:35 <Sgeo_> My reason for learning Python in the first place is rather idiotic
14:38:41 <oklofok> what would it be
14:38:49 <ehird> on crack on crack on crack, crack crack crack crack crack crack, onnnnnn crack
14:38:54 <ehird> just call it the AnMaster song
14:39:01 <Sgeo_> The fact that the interpreter is free
14:39:13 <oklofok> us who are afraid of programs can have a side conversation about liking stuff
14:39:24 <ais523> ehird: one fun test is to find someone who doesn't know how to use editors at all, and see how long it takes them to exit editors they haven't seen before
14:39:26 <SimonRC> that's not a reason
14:39:28 <oklofok> oh well aren't they for most languages?
14:39:37 <SimonRC> : aye
14:39:46 <soupdragon> what less-mainsteam spoken/human languages do you do?
14:39:54 <Sgeo_> oklofok, I didn't know that
14:40:01 <ais523> you can get emacs, vi[m], and nano any way round on that test, depending on the details
14:40:01 <soupdragon> everyone
14:40:12 <Sgeo_> I seriously thought I had to pay some company or other to use C or C++
14:40:34 <oklofok> soupdragon: finnish
14:40:45 <oklofok> it's a dead language on the north coast of the world
14:40:46 <ais523> Sgeo_: that used to be the case, maybe 10 or so years ago
14:40:49 <ehird> a finn speaks finnish? gosh amazing
14:40:49 <ais523> not any more though
14:40:51 <soupdragon> ok
14:40:54 <ehird> ais523: err... gcc?
14:40:58 <oklofok> *used
14:41:00 <ehird> late 1980s
14:41:03 <Sgeo_> I may have been reading about C and C++ 10 years or more ago
14:41:04 <ais523> ehird: was it available for Windows 10 years ago?
14:41:11 <Sgeo_> In books
14:41:12 <ehird> hmm
14:41:16 <ehird> well djgpp when was that
14:41:20 <Sgeo_> Hm, I also read about Perl, so
14:41:23 <ais523> hmm, good point
14:41:27 <ehird> 1989
14:41:36 <ehird> maybe first usable 1990-1991
14:41:44 <ehird> so more like 20 years
14:41:45 <Sgeo_> Also, I remember talking to some waitress being so excited that the Java SDK was free
14:42:02 <ehird> Waitresses excited about the Java SDK being free.
14:42:02 <ehird> O-kay.
14:42:06 <Sgeo_> ehird, no, I was
14:42:11 <oklofok> :P
14:42:13 <ehird> Oh.
14:42:18 <ehird> You're crazy. :P
14:42:22 <oklofok> that's just as weird
14:42:23 <soupdragon> hi
14:42:28 <ehird> Perhaps weirder.
14:42:30 <oklofok> yeah
14:42:33 <oklofok> hi soupdragon
14:42:37 <ehird> I can almost imagine a waitress-by-day, master-hax0r-by-night.
14:42:43 <ehird> Sgeo_: how old were you
14:42:45 <ehird> like 12?
14:42:58 <oklofok> when ehird was 12, he was already programming for nasa
14:43:04 <Sgeo_> ehird, I don't remember. Probably around that age, or younger?
14:43:05 <ais523> seems it was 1996 before DJGPP could completely self-bootstrap
14:43:09 <ehird> oklofok: DON'T TELL THEM
14:43:13 <ehird> ais523: self-bootstrapping isn't important
14:43:17 <oklofok> oh was that confidential
14:43:19 <ais523> ehird: I know
14:43:23 <ehird> oklofok: ULTRA CONFIDENTIAL
14:43:23 <ais523> I'm just amused at the timelag
14:43:36 <oklofok> EVERYONE TYPE /CLEAR PLS
14:43:37 <soupdragon> hmmmmm
14:43:40 <SimonRC> this conversation isn't im[proving my mood
14:43:50 <ehird> "I thought of this episode yesterday while playing around with my laptop’s webcam and a Python shell. Finally I wrote a little fun script that does almost the same: Just register it as a hg hook and it takes a picture of you exactly at the unique moment when merging fails and it sends it directly and without any further questions to Twitpic and Twitter:"
14:43:56 <ehird> http://andialbrecht.wordpress.com/2009/05/09/when-merging-fails/
14:44:00 <soupdragon> hi SimonRC
14:44:14 <ehird> SimonRC: what, are you upset that I programmed for nasa*?
14:44:15 <ehird> *lie
14:44:22 <Sgeo_> ehird, re[ae]ddit
14:44:23 <ais523> ehird: that seems like a rather weird thing to do
14:44:38 <SimonRC> soupdragon: you took 10 mis to spot me?
14:44:39 <ais523> I mean, the merge-fail thing
14:44:42 <soupdragon> what is the term for non-computer programming/informal language?
14:44:47 <ehird> ais523: click the link for the reason
14:44:51 <ehird> soupdragon: natural language
14:44:57 <soupdragon> but they are not all natural
14:45:02 <soupdragon> like the ones people make up for films
14:45:13 <ehird> constructed language
14:45:13 <ehird> /conlang
14:45:17 <SimonRC> there is no good name
14:45:19 <Sgeo_> Or Loxian?
14:45:28 <Sgeo_> <3 Enya
14:45:30 <SimonRC> but what is the union of conangs and natlangs?
14:45:31 <soupdragon> hmmmmm
14:45:51 <ais523> ehird: I still don't get it even after reading the page
14:45:57 <soupdragon> hey im going out see you
14:46:02 <ais523> the page didn't really say anything useful other than the quote
14:46:07 -!- soupdragon has quit ("Leaving").
14:46:20 <ehird> ais523: merge failing = terrible emotional anguish
14:46:24 <ehird> terrible emotional anguish = funny
14:46:30 <SimonRC> ehird: I'm just vaguely annoyed at people being more capable than I was at their age. It happens all the time on this channel
14:46:32 <ais523> no, merge failing = merge failing
14:46:35 <ehird> schadenfreude = funny
14:46:39 <ais523> I don't see why it's particularly anguishing
14:46:40 <ehird> ais523: for you perhaps
14:46:43 * oklofok read "i'm going out to see you"
14:46:45 <ehird> because you have to merge manually
14:46:53 <ehird> SimonRC: just get a time machine
14:47:09 <ais523> ehird: but that only happens if either there's a conflict, or the merge is trivial but something the VCS didn't think of
14:47:11 <Sgeo_> SimonRC, same here
14:47:21 <oklofok> SimonRC: when i was 12, i was just as stupid as now
14:47:21 <Sgeo_> Or are more capable than I currently am now
14:47:31 <ais523> in the first case you need to talk with the person who made the other version, and sort it out with them, the second case is easy
14:47:40 <ais523> incidentally, one of my projects that hasn't got off the ground is my own VCS
14:47:40 <oklofok> plus i didn't know any math
14:47:47 <ehird> i remember when i was... 10? i was jealous of an 11 year old who could code c because i couldn't :p
14:47:49 <Sgeo_> Although I take some comfort in the fact that when I try to tell people that, they don't believe me
14:47:52 <oklofok> not knowing any math makes you worthless
14:47:58 <ehird> ...as if c was some immensely difficult thing or whatever
14:48:02 <ais523> ehird: could you code C at age 11?
14:48:20 <ehird> ais523: i don't know when i learned c. maybe 11 yeah
14:48:22 <ehird> or very early 12
14:48:40 <oklofok> i learned c++ at 10 from a book, first tried coding in it when i was like 13 or 14
14:48:48 <ehird> i don't recall learning it, I wrote hello world and 99 bottles of beer, wrote some stupid unworking interpreters some time later, and then suddenly the next time I grokked it completely
14:48:49 <oklofok> or maybe it was 11
14:48:54 <ehird> and...now I'm pretty good at c
14:49:01 <oklofok> all i know is it took months
14:49:18 <oklofok> and i think i didn't really understand most of the last 200 or so pages
14:49:27 <oklofok> just had to read all of it
14:49:42 <ais523> heh, I learnt Prolog something like 7 years before I got my hands on a Prolog interp
14:49:53 <oklofok> how did it go?
14:50:02 <Sgeo_> If you consider reading from a book enough to learn a language, then I learned C++, Perl, COBOL, and probably some others
14:50:05 <ais523> pretty well, actually
14:50:11 <ais523> I sort-of understood how it worked, just couldn't try anything out
14:50:13 <Sgeo_> I've never actually written a line of Perl or COBOL in my life
14:50:14 <oklofok> i was pretty much fluent right away, in the c subset that is
14:50:16 <ehird> hmm
14:50:19 <ais523> and when I installed gprolog much later, I could write in it
14:50:32 <Sgeo_> There. I wrote a line of COBOL
14:50:36 <ais523> luckily Prolog syntax is trivial, otherwise it would be easy to mess it up
14:50:47 * ehird ponders whether to install windows or linux on the separate partition; Windows plays nicer with Frink, I believe, and is easier to set up to be bearable for me, but Linux lets me use tk more "natively"
14:50:53 <ais523> Sgeo_: also, half the stuff you write is probably valid Perl by chance, assuming appropriate imports
14:51:05 <ehird> prolly linux, debian or something so i don't have to get packages myself
14:51:06 <Sgeo_> lol
14:51:20 <ehird> all of the stuff
14:51:26 <ehird> if preceded by a single use statement
14:51:40 <ais523> ehird: I'm assuming no source filters, they make it too easy
14:51:46 <Sgeo_> Ok, this is the second time in two days I've experienced deja vu
14:51:50 <ehird> then you're wrong
14:51:59 <ehird> I get deja vu all the time
14:52:11 <oklofok> Sgeo_: it's a sign of alzheimer's
14:52:12 <ais523> ehird: was that "then you're wrong" directed at me?
14:52:16 <ehird> ais523: yes :P
14:52:27 <ehird> In fact, often I'm sure that I've had the same deja vu more than once before.
14:52:34 <ais523> you can make anything a valid Perl program with "use ACME::JAPH;" at the top
14:52:35 <ehird> I think this is because the deja vu implants such fake memories in my brain.
14:52:42 <ehird> rather than me actually having recurring deja vu
14:52:45 <ais523> but I wasn't counting that
14:52:51 <ehird> Same when I think I've had a dream before
14:52:55 <ehird> (or had a prequel to a dream I just had before)
14:52:59 <Sgeo_> This time, the statement about deja vu wasn't part of the deja vu
14:53:05 <Sgeo_> Often, it is
14:53:43 <ais523> ehird: my dreams seem to be more consistent with each other than they are with real life
14:55:18 <ehird> my dreams are great.
14:55:33 <ehird> they're like really well made movies
14:55:57 <augur> ehird
14:55:58 <augur> opinion?
14:56:03 <ehird> i was sad waking up from a dream recently even though I was tense as hell in it because the story was so good :)
14:56:34 <SimonRC> Admittedly at the time I was some of yours ages I did not have aaccess to the technology you have. My parents have never been great upgrades of computing hardware.
14:56:34 <augur> also, anyone have a CS4 serial number? :|
14:56:47 <ehird> http://torrent-site.getityourself/
14:57:10 <ehird> SimonRC: as i said. time machine
14:57:31 <SimonRC> in a different way
14:58:02 <ehird> wat
14:58:13 <augur> ehird :P
14:59:21 <AnMaster> <ehird> AnMaster thinks emacs is easier to use than kate or joe or nano? <-- "isn't too far off". kate and nano I would place above emacs at least in ease of use. Maybe joe too.
14:59:30 <AnMaster> bbl again
14:59:35 <ehird> isn't too far off, that was like a half of your list
15:01:46 <Sgeo_> Time for movie watching
15:02:26 <augur> ehird, whats your opinion on groups?
15:02:46 <ehird> /shrugggggggggggg
15:02:57 <SimonRC> many are dead, but some are still vibrant communities
15:03:01 <augur> well you seemed pretty opinionated the other day :|
15:03:15 -!- pikhq_ has changed nick to pikhq.
15:03:21 <SimonRC> did I successfully pick the wrong meaning of "groups"?
15:03:39 <augur> yes
15:03:46 <pikhq> AnMaster: Depends on your notions of "usability".
15:04:00 <pikhq> Usable by an expert on the program, or usable by someone who knows nothing about it?
15:04:06 <pikhq> It makes a difference.
15:04:14 -!- Sgeo_ has quit ("Leaving").
15:04:20 <ehird> he said "easy to use"
15:04:27 <ehird> which is definitely the latter
15:04:47 <pikhq> Oh, okay then.
15:05:03 <pikhq> Yeah, nano, kate, and joe are all much easier to use.
15:05:06 <oklofok> there's a group theory course in both the psychology and the math dep
15:05:20 <pikhq> Since they don't assume you're putting in time to learn them.
15:05:32 <AnMaster> pikhq, true
15:06:26 <ehird> anyone know if there's a website that lets you set up like a little poll thing without bullshit or ads or whatever, i wanna make one for alter/amend :P
15:06:32 <AnMaster> oh forgot one that ranks above vi: ed
15:06:32 <AnMaster> ;P
15:07:01 <ais523> vi > ed in terms of ease of use, almost certainly
15:07:08 <ais523> because you can use it much like ed, just ignoring the visual stuff
15:07:33 <pikhq> Or you can use it visually, which is at least not a complete mindfuck for a new user.
15:07:59 <AnMaster> ais523, ed has much less clutter in the user interface to distract new users.
15:08:29 <SimonRC> ehird: ah, I have seen a polling website like that somewhere...
15:08:34 <ehird> I think I found a nice one
15:09:53 <ehird> hmm
15:10:02 <ehird> I wonder if lowercase vs title case would sway people's opinions
15:10:10 <ehird> alter
15:10:10 <ehird> amend
15:10:10 <ehird> ---
15:10:11 <ehird> Alter
15:10:11 <ehird> Amend
15:10:20 <ehird> most_pleasing(X) == most_pleasing(Y)?
15:11:20 <SimonRC> well the one I had seen is SurveyMonkey
15:11:43 <SimonRC> and what are these words for?
15:13:31 <ehird> The name of my editor.
15:14:31 <ehird> http://www.doodle.com/rhriqxe2rb226it2
15:14:42 <AnMaster> ehird, I prefer alter to Alter. But both are better than amend/Amend
15:14:44 <ehird> oklofok: ais523: pikhq: you are contractually obligated to vote
15:14:50 <ehird> AnMaster: you too
15:15:16 <AnMaster> ehird, at least it should be "alter" that you type in the terminal in any case.
15:15:23 <ais523> ehird: I disagree with your contractual obligations
15:15:35 <ais523> there are several reasons I don't have a binding contract on me to do that
15:15:40 <ehird> ais523: is it because you refuse to use web browsers or something
15:15:42 <ais523> and if I have a voidable contract on me to do that, I hereby void it
15:15:45 <AnMaster> and what ais523 said.
15:15:46 <ehird> or are you just nitpicking and will vote anyway :)
15:15:47 <ais523> ehird: no, legal reasons
15:15:50 <SimonRC> how about a word that isn't already used for something?
15:15:59 <ehird> SimonRC: I'll add an other option
15:16:33 <AnMaster> ehird, unable to vote. Page requires javascript
15:16:37 <ehird> http://www.doodle.com/rhriqxe2rb226it2
15:17:04 <SimonRC> hmm, I dunno which is easier to type
15:17:23 <ehird> both are pretty easy
15:18:17 <ehird> both are left-hand-heavy on QWERTY, but really, neither are problematic
15:18:25 <SimonRC> I avoided theone with COBOL connotations
15:18:46 <AnMaster> ehird, at least it doesn't seems to have registered my vote. Page didn't reload or anything
15:19:05 <AnMaster> ehird, however, put me down for "alter" in lower case
15:19:12 <SimonRC> why is upgrading xterm reducing its size by 205kB?
15:19:15 <ehird> I made a poll so I didn't have to tally the votes myself.
15:19:20 <ehird> Just enable JS for three seconds...
15:19:21 <SimonRC> that is somewhat add
15:19:23 <SimonRC> *odd
15:19:45 <ehird> COBOL connotations, what a problem :P
15:19:51 <ehird> wouldn't that be ALTER
15:19:59 <AnMaster> ehird, I'm not running X atm
15:20:06 <SimonRC> cobol isn't case-sensitive IIRC
15:20:24 <SimonRC> well use a text-mode browser that does javascript?
15:20:37 <ais523> ehird: OK, I voted
15:20:39 <ais523> in w3m
15:20:42 <ehird> SimonRC: AnMaster is just a malcontent, he'll come up with objection after objection most likely
15:20:48 <AnMaster> hm okay w3m might do it
15:20:49 <ais523> AnMaster: there's a link to a JS-free version, I used that
15:20:53 <SimonRC> * shrug
15:20:59 <ehird> there is?
15:21:14 <ais523> ehird: it's probably removed if you have JS available
15:21:22 <ais523> by the KS itself
15:21:24 <ais523> *JS
15:21:30 <ehird> thought so
15:21:39 <AnMaster> also voted with w3m
15:21:43 <AnMaster> not sure it worked
15:21:50 <ehird> anyway it beats all the other poll sites which are straight out of the 90s and filled with ads
15:22:06 <ehird> or would you have _preferred_ I used Angelfire Polls or something :-P
15:22:23 <ehird> AnMaster: it did not.
15:22:25 <ehird> click the non-js link.
15:22:46 <AnMaster> ehird, I did click the non-js one
15:22:58 <ehird> did you put a name in? maybe it's requiring that
15:23:29 <AnMaster> ehird, I did put a name in
15:23:37 <AnMaster> also now some of them are grayed out
15:23:39 <AnMaster> how strange
15:24:14 <AnMaster> I'm unable to select anything but "other" now
15:24:18 <ehird> yeah i think you're meant to be able to like... change your vote or something, this thing is really designed for multiple choice polls I think
15:24:18 <AnMaster> the other options are grayed out
15:24:21 <ehird> lemme see if Ii set the settings wrong
15:24:44 <ehird> Limit number of OKs per participant (row) to 1
15:24:44 <ehird> Limit number of OKs per option (column) Limit: 1
15:24:59 <ehird> oh, i see
15:25:13 <ehird> the latter one means "people can only select every option unless nobody else has"
15:25:15 <ehird> due to limit: 1
15:25:16 <ehird> fix'd
15:25:28 <ehird> you can even change your vote now and shizz if you like that kind of thing
15:25:58 * ehird makes a mental note: make poll site that isn't total bullshit
15:27:03 <ehird> and stop AnMaster from voting because he'll just reject the thisguyhasalreadyvotedsodon'tlethimvoteagain cookie :P
15:27:32 <AnMaster> ehird, I just did rm ~/.w3m/cookie afterwards
15:27:45 <ehird> this is why we can't have nice things.
15:28:44 <AnMaster> ehird, nice what?
15:29:28 <AnMaster> just things in general, or some specific things?
15:29:42 <oklofok> mostly those that cost too much
15:30:50 <AnMaster> oklofok, according to the old or the new classification system?
15:31:58 <AnMaster> bbl
15:32:42 <ehird> oklofok: you haven't voted :|
15:32:58 <oklofok> wait what vote i haven't been reading
15:33:01 <ehird> http://www.doodle.com/rhriqxe2rb226it2
15:33:43 <oklofok> WHY NOT TETRIS I LIKE TETRIS
15:33:52 * SimonRC goes for breakfast
15:33:55 * oklofok goes out to have a life
15:34:36 <ehird> oklofok: VOTE BASTARD
15:34:36 <ehird> :|
15:34:55 <SimonRC> "BASTARD" is not an option in this poll.
15:34:58 * SimonRC goes for breakfast
15:35:24 -!- lieuwe has joined.
15:35:29 <AnMaster> oh no, now SimonRC gone for breakfast twice without going back in between
15:35:31 <AnMaster> ;P
15:35:41 <AnMaster> so he must come back twice afterwards
15:35:47 <oklofok> err
15:35:49 <oklofok> i already voted
15:36:37 <ehird> no
15:36:38 <ehird> you didn't
15:36:41 <ehird> you have to click save
15:36:44 <lieuwe> hi, i was thinking about writing an implementation for a high level esolang, but none of the articles on the wiki are descripive enough...
15:36:46 <ehird> also put in a name if you didn't i guess
15:36:53 <ehird> lieuwe: define high level :)
15:36:57 <ehird> most esolangs are low level
15:37:28 <lieuwe> ehird: a language which understands the concepts of functions and expressions ;-p
15:37:35 <ehird> underload!
15:37:37 <ehird> ais523: plug underload.
15:37:55 <ais523> well, Underload's rather low-level
15:38:02 <ehird> it understands the concept of a function.
15:38:06 <ehird> i.e. it has functions
15:38:16 <ehird> and it has expressions. which are the functions.
15:38:18 <ais523> but Underload (and more so Underlambda) treat everything as functions from stacks of functions to stacks of functions
15:38:18 <Deewiant> Esolangs tend to be rather low-level
15:38:35 <ehird> ais523: *functions from stacks of functions from stacks of ...
15:38:45 <ais523> yes, it's infinitely recursive
15:38:53 <ais523> you define "function" = "function from stack of functions to stack of functions"
15:39:05 <ais523> and the recursion bottoms out eventually because some of the stacks are going to be empty
15:39:14 <ehird> type UL = Stack UL -> Stack UL
15:39:18 <ehird> IF ONLY THAT TYPED
15:39:23 <ehird> (it does with newtype around it)
15:40:16 <ais523> hmm, I'm vaguely interested to see an Underload implementation in pure Haskell now
15:40:22 <lieuwe> ehird: not quite what i need :-p might be time to create my own esolang...
15:40:25 <ehird> way ahead of you, writing it now
15:40:36 <ais523> although, it could be a little tricky because Underload is strict and Haskell is lazy
15:40:38 <ehird> lieuwe: sure, we welcome every esolang
15:40:40 <ehird> unless it's crap
15:40:47 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
15:40:51 <ehird> so statistically we have ~0.1% probability of welcoming an esolang
15:40:58 <ais523> heh
15:40:58 <lieuwe> ehird: :-P
15:41:08 <ais523> statistically, though, the vast majority of bad esolangs are trivial BF variants
15:41:19 <lieuwe> ais523: sad, but true
15:41:23 <ehird> ais523: i'm gonna implement underload without S first, because S just makes things uglier
15:41:32 <ais523> agreed
15:41:36 -!- pikhq has joined.
15:41:43 <ais523> you could implement Underlambda, S means something different there
15:41:53 <ehird> lolo
15:41:54 <ehird> *lol
15:42:03 <oklofok> i clicked save
15:42:04 <oklofok> oh name
15:42:06 <ehird> pikhq: http://www.doodle.com/rhriqxe2rb226it2 :|
15:42:07 <ais523> it means "output this function", but doesn't specify the format (the only restriction is that you have to be able to read the function back in again later)
15:42:40 <lieuwe> ehird: i was thinking about something with too much brackets(even worse than lisp one-liners...)
15:43:06 <ehird> lieuwe: just do "pure" (original mccarthy) lisp with s-expressions and no (quote x) shorthand as 'x
15:43:10 <ehird> :P
15:43:15 <augur> wee
15:43:17 <ehird> ais523: hmm... I've just realised that maybe implementing it in a Windows VM with WinHugs and an XEmacs without a Haskell mode is not the best idea
15:43:22 <ehird> oh well!
15:43:24 <ais523> Underload does have quite a lot of parens too
15:43:25 <augur> i have a primitive javascript prolog interpreter
15:43:26 <augur> :D
15:43:37 * ehird secretly opens Emacs in OS X instead
15:43:39 <ais523> ehird: get haskell-mode, then
15:43:48 <ehird> way too much work when I could just open the host emacs
15:44:01 <ehird> and get inferior haskell mode for free
15:44:17 <ehird> although winhugs is surprisingly nice
15:45:04 <ais523> beh, that's the #2 problem with Windows: it's such a pain to install anything
15:45:09 <ehird> it has a haskell module manager thingy, lets you browser typeclasses, their superclasses, members and instances, lets you browse defined names (functions or values) and their types, and search them...
15:45:21 <ais523> it's taken around 2 months so far to install the Xilinx development environment on this Windows computer, for instance
15:45:32 <ehird> ...and types plus their constructors and typeclass instances
15:45:36 <ehird> ais523: oh, it's not hard
15:45:42 <lieuwe> ehird: nah, not nearly good enough, i was thingking about using every possible type off bracket for different things ()<>{}[]\/ etc.
15:45:49 <ehird> installing xemacs was just clicking next a bunch of times; haskell-mode would just be putting stuff in C:\home\.xemacs
15:45:51 <ehird> lieuwe: heh go ahead
15:46:06 <ehird> lieuwe: most of us find that syntax is the least interesting avenue for esolangs, but there are some it works for
15:46:07 <ehird> e.g. smith
15:46:38 <ais523> hmm, smith is more concept than syntax
15:46:46 <lieuwe> ehird: hmm, ah, well, i'll just mess about with this for a while...
15:46:50 <ais523> INTERCAL plays with syntax quite a bit, although that's the least interesting part of the language
15:46:55 <ehird> it's a good start though
15:47:08 <ehird> making a non-syntax esolang is _hard_
15:47:32 <ais523> and I think Forte's aided by its syntax, although again the syntax isn't the point there
15:48:49 <ehird> ais523: lol, I didn't even realise how ugly S would be, I just thought it'd be adding IO or making it ([UL],String)
15:48:57 <ehird> having to have the string versions of the functions never even crossed my mind
15:49:13 <ais523> S is truly ugly, that's why Underlambda doesn't have Underload's S
15:50:06 <ehird> ulChar 'a' = (\(x:xs) -> (\ys -> x:ys):xs)
15:50:38 <ehird> ais523: and S slowed the development of the efficient underload compiler, due to the interpretation of ^ as "include text"
15:50:40 <ehird> or "eval"
15:50:48 <ais523> ehird: yes
15:50:59 <ais523> although, derlo is pretty fast, despite being an interp
15:51:00 <ehird> ulChar '^' = (\(x:xs) -> x xs)
15:51:00 <ehird> pretty
15:51:20 <ehird> would be fun if you could write that as (:) -> ( ) or something
15:51:39 <ais523> or maybe (:) -> ($)
15:51:42 <ais523> to avoid whitespace issues
15:51:56 <ais523> ;query lambdabot
15:52:12 <ehird> fail :P
15:52:24 <ais523> [15:51] <ais523> @pl (\(x:xs) -> x xs)
15:52:25 <ehird> ais523: or rather to avoid () being () issues
15:52:25 <ais523> [15:51] <lambdabot> ap head tail
15:52:30 <ehird> yes
15:52:39 <ais523> that's a rather pretty version of it
15:52:50 <ehird> ap is monadic iirc but for functions i believe it's
15:52:56 <ehird> ap f g x = (f x) (g x)
15:53:00 <ehird> i.e. branching of a sort
15:53:11 <ais523> more like the s combinator
15:53:12 <ehird> ap = apply, maybe
15:53:17 <ais523> in fact, that's exactly the s combinator, isn't it?
15:53:17 <ehird> not really
15:53:19 <ehird> no
15:53:21 <pikhq> ap = S.
15:53:23 <ehird> oh
15:53:24 <ehird> hmm
15:53:25 <ehird> right yes
15:53:26 <ehird> i'm dumb
15:53:33 <ais523> ```sxyz = ``xz`yz
15:53:52 <pikhq> Of course, that it *is* the S combinator on the functions is just coincidence. :P
15:54:26 <ehird> ugh, I can't do:
15:54:30 <ehird> ulChar '*' = \(x:y:xs) -> (x.y):xs
15:54:36 <ehird> because x and y are wrapped in a newtype
15:54:42 <ehird> haskell should allow recursive types :(
15:54:44 <ehird> who cares about type safety
15:56:43 <Deewiant> \(UL x:UL y:xs) -> (x.y) : xs
15:56:51 <ehird> yes, yes
15:56:55 <ehird> or newtype UL = UL { app :: [UL] -> [UL] }
15:57:16 -!- soupdragon has joined.
15:57:33 <Deewiant> Or use (.) from Control.Category and define an instance Category UL
16:00:08 <ehird> also, you got it wrong
16:00:19 <ehird> \(UL x:UL y:xs) -> UL (x.y) : xs
16:00:36 <Deewiant> Quite right
16:00:44 <Deewiant> I recommend the custom (.) TBH :-P
16:00:59 <ehird> I wish this were Caleskell and (.) = fmap
16:01:00 <soupdragon> whats UL
16:01:03 <ehird> underload
16:01:07 <ehird> Hey, maybe I could just define (.) = fmap
16:01:10 <Deewiant> You can set (.) = fmap easily
16:01:46 <ehird> Wonder if Applicative has anything useful or whatever
16:02:06 -!- kar8nga has quit (Remote closed the connection).
16:02:17 <ehird> Deewiant: Oh, that won't work though
16:02:26 <ehird> Because the first argument is a function
16:02:28 <ehird> Control.Category it is
16:02:59 <soupdragon> http://www.pasteit4me.com/99004
16:03:03 <pikhq> Deewiant: Caleskell makes (.)=fmap.
16:03:13 <ehird> he knows
16:03:15 <ehird> Ooh, id and (.) form a monoid.
16:03:15 <pikhq> Erm. So ehird said.
16:03:41 <soupdragon> you are a monoid
16:03:56 <ehird> wait, I can use newtype deriving can't I
16:04:07 <Deewiant> You can use whatever you like; the world is open to you
16:04:14 <ehird> ^___^
16:04:26 <ehird> Cannot derive well-kinded instance of form `Category (UL ...)'
16:04:26 <ehird> Class `Category' expects an argument of kind `* -> * -> *'
16:04:29 <ehird> And here we find our problem.
16:04:42 <ehird> newtype UL = UL ([UL] -> [UL]) deriving (Category)
16:04:52 <Deewiant> Oh, true, it wants a different kind
16:05:00 <ehird> Maybe I'll just define my own (.) typeclass.
16:05:01 <Deewiant> Doesn't really matter though
16:05:13 <ehird> Deewiant: Yes it does, it means I can't do it without an ugly type alias
16:05:36 <Deewiant> One ugly type alias versus hundreds of ugly (UL f) -> UL (f x) !
16:05:43 <ehird> Fiiiine.
16:05:46 <Deewiant> :-P
16:06:00 <ehird> Ugh, I wish Haskell allowed recursive types.
16:06:03 <ehird> It is limiting my expression!
16:06:33 <ehird> Deewiant: Ooh, but I can't do that.
16:06:38 <ehird> type UL = UL' [UL] [UL]
16:06:45 <ehird> fgsfds
16:06:58 <soupdragon> data UL = UL [UL] [UL]
16:07:01 <Deewiant> Haha, good point.
16:07:02 <ehird> And if I add a new newtype, I need to define Category on it manually.
16:07:07 <soupdragon> zero = UL [] []
16:07:08 <ehird> ...which I can't do because of kinds.
16:07:38 <ehird> Deewiant: I'm just going to define a separate operator for UL-(.)
16:07:48 <Deewiant> Not your own type class?
16:08:03 <ehird> If I make it (class Composable a) then I can't do the traditional (.) on functions.
16:08:29 <Deewiant> Hmmh, this is a bit annoying.
16:08:48 <ehird> Haskell's typeclass system is kinda crap.
16:09:08 <soupdragon> yes
16:09:13 <Deewiant> I wouldn't say that :-P
16:09:15 <ehird> Sweet, (..) isn't a valid identifier?
16:09:20 <ehird> Because of ranges.
16:09:28 <ehird> I should just say fuck it and use OCaml.
16:09:33 <ehird> It allows recursive types. :P
16:09:57 <ehird> Have you noticed that all the good operator names are taken
16:10:05 <Deewiant> No
16:10:11 <soupdragon> have you noticed that import qualified Prelude
16:10:20 <ehird> soupdragon: i'd rather not
16:10:25 <soupdragon> that's insane
16:10:39 <ehird> Maybe I'll be patriotic and use (£)
16:10:50 <pikhq> ehird: Have you noticed that Japanese punctuation is mostly unused as operators?
16:11:02 <ehird> pikhq: Ooh, what's that Japanese dot thing?
16:11:11 <ehird> That they use instead of . because they like big, fat, chunky hollow things.
16:11:17 <soupdragon> o
16:11:38 <ehird> Wonder if (∘) is an identifier
16:11:38 <pikhq> The... Period? :P
16:11:46 <ehird> pikhq: nooo it's fatter.
16:12:04 <ehird> Anyway, ASCII only :P
16:12:13 <ehird> I may just end up calling it o
16:12:14 <pikhq> According to Unicode, (。) is a "ideographic full stop".
16:12:57 <pikhq> It's a full stop.
16:13:16 <pikhq> Or, if you prefer, a kuten.
16:14:09 <ehird> ais523: are there "invalid" UL programs, do you think?
16:14:14 <ehird> or is (/) matching not strictly required
16:14:22 <ais523> the matching is required
16:14:26 <ehird> i.e. ) without ( is like any other unhandled character, an error
16:14:32 <ehird> but only when run
16:14:36 <ais523> it's a compile-time error
16:14:40 <ehird> alright
16:14:45 <ais523> although you can handle it at runtime instead if you prefer
16:14:49 <ehird> kay
16:14:55 <pikhq> ehird: You could also use Japanese quote marks.
16:15:01 <pikhq> 「 」 『 』
16:15:04 <pikhq> :)
16:15:05 <ehird> ais523: but something like "x" is a runtime error, right?
16:15:10 <ais523> yes, in Underload
16:15:27 <ehird> Irritating Haskell semantics:
16:15:27 <ais523> in Underlambda, it's compile-time unless you defined it in advance, or it's inside a string literal
16:15:29 <soupdragon> I love those
16:15:29 <soupdragon> 「 」 『 』
16:15:37 <ehird> (error "foo") is not the same as (\() -> error "foo")
16:15:44 <ehird> Fucking impurity
16:15:50 -!- Pthing has joined.
16:15:58 <ais523> is error monadic?
16:16:01 <ehird> no
16:16:03 <ehird> error :: String -> a
16:16:06 <ais523> ouch
16:16:14 <ehird> it's what e.g. (1 `div` 0) gives
16:16:22 <ais523> even Perl6 does better
16:16:24 <ais523> it has lazy errors
16:16:57 <ehird> "You did not provide any name." voted for alter
16:17:00 <ehird> who's that; pikhq?
16:17:10 <pikhq> Not I.
16:17:42 <ais523> ehird: can you work it out by elimination?
16:17:47 * ais523 wonders if it's AnMaster voting twice
16:18:01 <pikhq> ehird: Well, of course error "foo" != \()->error "foo".
16:18:05 <ehird> AnMaster is a malcontent, he tries very hard to stray from outright malicious
16:18:09 <ehird> so I doubt it
16:18:14 <soupdragon> that's me I voted
16:18:14 <ehird> although it is the same vote
16:18:16 <pikhq> That's _|_ != \()->_|_ right there.
16:18:30 <ehird> pikhq: yes, and _|_ is shit :(
16:18:41 <pikhq> ehird: So, you want a total language.
16:18:49 <ehird> no, because totality implies sub turing completeness :P
16:18:51 <soupdragon> total awesome language
16:18:56 <soupdragon> ehird no it doesn't
16:18:57 <ehird> maybe have partiality be a monad
16:19:03 <pikhq> And totality implies no _|_.
16:19:06 <ehird> soupdragon: total language + partiality monad != total
16:19:11 <pikhq> And no _|_ implies totality.
16:19:16 <ehird> == non-total but with the total bits marked
16:19:19 <ehird> kinda like haskell+io tbh
16:19:42 <soupdragon> ehird: you can model lambda calculus, turing machines with semantics, mu-operators
16:19:42 <ehird> what's the partiality monad again, data Partial a = Now a | Later (Partial a)?
16:19:56 <ehird> soupdragon: well the "total fp" paper says it is sub-tc
16:20:00 <AnMaster> * ais523 wonders if it's AnMaster voting twice <-- no, why?
16:20:03 <soupdragon> codata Computation a = Now a | Delay (Computation a)
16:20:19 <ais523> AnMaster: well, it had to be someone
16:20:24 <ehird> soupdragon: s/codata/data/ if you want to model it in haskell right
16:20:31 <soupdragon> screw haskell
16:20:35 <AnMaster> ais523, someone voted twice?
16:20:37 <ehird> that is not an answer
16:20:44 <ehird> AnMaster: because you said you removed the cookie
16:22:23 <AnMaster> ehird, well yes, I always do.
16:23:00 <AnMaster> but I wouldn't vote twice, that is against my morals
16:23:52 <ehird> ais523: hmm... a UL program ins1ins2 is identical to (ins1)(ins2)*
16:24:08 <ais523> not quite
16:24:10 <ehird> so I think I'll structure my parser as String -> [UL] and then fold compose them
16:24:18 <ais523> (ins1ins2) = (ins1)(ins2)*
16:24:23 <ais523> ins1ins2 = (ins1)(ins2)*^
16:24:24 <ehird> ais523: hmm... a UL program ins1ins2 is identical to (ins1)(ins2)*^
16:24:27 <ehird> whatever
16:24:28 <ehird> you get the idea :P
16:24:29 <ais523> yep
16:26:18 <ehird> ugh, lambdabot can't pattern match on tuples?
16:26:33 <ehird> `@pl let (x,xs') = f xs in x : f xs'` fails
16:26:38 <soupdragon> pl can't
16:27:13 <ehird> well right
16:27:16 <Deewiant> Use fst/snd
16:27:42 <ehird> [16:27] ehird: @pl let blah = f xs in fst blah : f (snd blah)
16:27:43 <ehird> [16:27] lambdabot: fst (f xs) : f (snd (f xs))
16:27:48 <ehird> Thanks, lambdabot.
16:27:49 <Deewiant> :-)
16:28:08 <ehird> [16:27] ehird: @pl \blah -> fst blah : f (snd blah)
16:28:09 <ehird> [16:27] lambdabot: liftM2 (:) fst (f . snd)
16:28:11 <ehird> Now we're getting somewhere
16:28:17 <ehird> liftM2 has a more general name right
16:28:17 <Deewiant> I guess what you want is liftM2... yeah, that.
16:28:58 <ehird> ulSplit' ('(':xs) = let (x,xs') = ulSplit' xs in x : ulSplit' xs'
16:28:58 <ehird> ulSplit' ('(':xs) = liftM2 (:) fst (ulSplit' . snd) $ ulSplit' xs
16:29:04 <ehird> The latter is, shall we say, uncompelling
16:29:40 <ehird> ais523: hmm... would you accept an implementation that, if you give it an unmatched ), discards it and the rest of the program, as conforming?
16:30:00 <ais523> yes, because an unmatched ) is undefined behaviour
16:30:06 <ais523> although I think an error message would be more useful
16:30:48 <ehird> ais523: yes, but I'm going for implementation simplicity and purity here
16:32:33 <AnMaster> ais523, aren't you supposed to be able to escape those (but no one implements that). or something like that
16:32:40 <ehird> No.
16:32:54 <ehird> Other characters are reserved, but nobody implements the reservation.
16:33:00 <ehird> They cannot be used in a valid Underload program.
16:33:00 <ais523> yes, in theory you can use " as an escape character in Underload, but that's sufficiently unimplemented that it doesn't count as part of the lange
16:33:01 <AnMaster> ah that was it
16:33:05 <ais523> *lang
16:33:08 <ehird> ais523: not in theory, it's not part of the spec
16:33:09 <AnMaster> ais523, right
16:33:21 <ais523> ehird: yes, but nobody obeys the spec
16:33:24 <ais523> not even me
16:33:26 <lieuwe> w00t, tokenizer done, man, that was easy :-p
16:33:29 <ais523> I kind-of like it that way, though, it's very eso
16:34:49 <ehird> what I mean is
16:34:55 <ehird> in theory no you cannot use " as an escape char
16:34:59 <ehird> it isn't in the specc
16:35:01 <ehird> it's just reserved
16:35:02 <ehird> *spec
16:35:18 <ais523> I thought the spec said you could use " as an escape char
16:35:27 <ais523> but given that it's on a wiki, maybe someone edited it to match reality
16:35:54 <ehird> http://esolangs.org/files/underload/underload.html
16:35:56 <ehird> you can escape []<>
16:35:58 <ehird> but not ()
16:36:01 <ehird> god only knows why
16:36:53 <ehird> ooh
16:37:00 <ehird> ais523: my implementation will support infinite-length programs
16:37:08 <ehird> Deewiant: which is the one that works with infinite lists, foldl or foldr
16:37:10 <ehird> foldr right?
16:37:44 <ais523> ehird: I know why too, it's an implementation details of my first underload interp that somehow made it into the spec
16:37:49 <Deewiant> Yes, foldr
16:37:56 <AnMaster> <ehird> you can escape []<> <-- but do those even mean anything in the language?
16:37:56 <ehird> ais523: slight issue with my impl, there's no way to inspect the output
16:38:00 <ehird> AnMaster: no
16:38:05 <AnMaster> ehird, :D
16:38:06 <ehird> AnMaster: they are reserved, you cannot use them without escaping
16:38:09 <ais523> just you aren't allowed to use them
16:38:16 <ehird> ais523: you'd better have a test suite whose output only depends on the length of the resulting stack
16:38:18 <AnMaster> ais523, can you escape a literal " though
16:38:20 <ehird> otherwise i can't test this thing :)
16:38:23 <ehird> AnMaster: no
16:38:27 <AnMaster> ehird, how fun
16:39:46 <AnMaster> ehird, why can't you allow output?
16:40:16 <ehird> because I'm representing underload functions as haskell functions
16:40:43 <ehird> A UL program is a function from a list of UL programs to a list of UL programs.
16:41:37 <ehird> *Main> length $ ulRun "(:)(:)*^"
16:41:37 <ehird> *** Exception: /Users/ehird/Code/scraps/2010-01/underload.hs:(18,8)-(25,31): Non-exhaustive patterns in function ulSplit'
16:41:37 <ehird> That may look like an error message... but it's actually a bug in my parser.
16:41:38 <AnMaster> ehird, why not make it a function to a tuple of output and ul pgoram
16:41:53 <ehird> AnMaster: that isn't sufficient
16:41:55 <AnMaster> program*
16:41:58 <ehird> I'd need a function (function → string)
16:42:10 <ehird> and that string must be the original UL source code
16:42:16 <AnMaster> hm okay
16:42:19 <ehird> I'd have to pass around the string anywhere, which removes all the purity
16:42:24 <AnMaster> hah
16:43:20 <ehird> soupdragon: so the partiality monad, can it be used just like the identity monad in haskell
16:43:31 <ehird> val <- partialFunc x
16:43:35 <ehird> ...
16:43:38 <ehird> return (someComputation val)
16:45:01 <ehird> *Main> length $ ulRun "(:)(:)*^"
16:45:02 <ehird> *** Exception: /Users/ehird/Code/scraps/2010-01/underload.hs:13:25-45: Non-exhaustive patterns in lambda
16:45:04 <ehird> ais523: it's alive!!!
16:45:12 <ehird> gimme some test program and the length of the tape it should result in :P
16:45:37 <ehird> *Main> length $ ulRun "(poop)(:)(:)*^"
16:45:38 <ehird> *** Exception: Invalid instruction: p
16:45:38 <ehird> wait, what
16:45:59 <ehird> *Main> length $ ulRun "(poop):"
16:45:59 <ehird> *** Exception: Invalid instruction: p
16:46:04 <ehird> okay some quoting issues here.
16:46:20 <ehird> oh
16:46:25 <ehird> would help if i actually put the quoting stuff in
16:46:27 <ehird> :)))))))
16:47:17 -!- Asztal has joined.
16:47:49 <soupdragon> ehird that's correct but it has super powers too
16:48:20 <soupdragon> ehird here is an example http://moonpatio.com:8080/fastcgi/hpaste.fcgi/view?id=562
16:48:55 <ehird> and (Now True) y = y
16:48:55 <ehird> and (Now False) _ = Now False
16:48:55 <ehird> and x (Now True) = x
16:48:55 <ehird> and _ (Now False) = Now False
16:48:56 <ehird> and (Delay x) (Delay y) = Delay (and x y)
16:48:56 <ehird> there should be like a wrapper function
16:49:11 <ehird> toPartial1 :: (a -> b) -> Partial a -> Partial b
16:49:39 <ehird> soupdragon: okay so what's interesting about that snippet
16:49:46 <ehird> bear in mind i'm in retard mode (my only mode)
16:50:16 <soupdragon> ehird it uses lazy-lazy evaluation, if you write this in direct haskell style it would diverge on many more cases
16:50:34 <soupdragon> so what it shows is that the partiality monad can give you even more lazyness than lazy evaluation
16:51:05 <ehird> hmm it'd be cool if sequencing was an evaluation
16:51:07 <ehird> that is >> = seq
16:51:10 <ehird> *was a monad
16:51:22 <ehird> >>= = $! or w/e it's called
16:52:37 <ehird> ais523: taking a break from underload to write that i'm afraid
16:52:46 <ais523> I don't mind
16:53:20 <ehird> hey even optional sequencing
16:53:28 <ehird> data Sequence a = Strict a | Lazy a
16:54:08 <ehird> hmm
16:54:12 <ehird> so should return be strict or lazy, I wonder
16:54:13 <ehird> I think lazy
16:54:33 <ehird> because you might use it at the end of your mega sequence function or w/e
16:55:44 <ehird> hmm
16:55:46 <ehird> instance Functor Sequence where
16:55:46 <ehird> fmap f (Strict a) = strictorlazy (f $! a)
16:55:46 <ehird> fmap f (Lazy a) = lazy (f a)
16:55:53 <soupdragon> interesting
16:55:54 <ehird> soupdragon: any ohpinyuns on strictorlazy there?
16:55:57 <ehird> i think strict
16:56:02 <ehird> strictness should propagate
16:56:06 <ehird> but then, if you do
16:56:10 <ehird> do foo <- astrict; return foo
16:56:11 <soupdragon> im not sure if it works
16:56:13 <ehird> that turns it into a lazy
16:56:15 <ehird> since return = lazy
16:56:23 <ehird> so maybe strictness should fade quickly
16:56:32 <ehird> no, wait
16:56:34 <ehird> it should definitely be strict
16:56:43 <ehird> otherwise your "strict" application isn't, which is ridiculous
16:57:02 <ehird> got functor, monad, let's give it an applicative instance
16:57:24 <ehird> ooh
16:57:25 <ehird> (<*>) :: f (a -> b) -> f a -> f b
16:57:38 <ehird> maybe the strict or laziness of the function should determine the strictness or laziness of the result
16:57:39 <ehird> yeah! i like that
16:57:44 <ehird> unless it doesn't make sense
16:57:49 <ehird> no wait, it does
16:57:52 <ehird> lazy = avoid evaluating this
16:57:55 <ehird> so avoid evaluating any applications of this
16:58:55 <ehird> although shouldn't (Strict f <*> Lazy x) be Lazy (f $! x)
16:59:03 <ehird> soupdragon: opinyons? Applicative sure is tricky :P
16:59:50 <soupdragon> well im not sure this even works
16:59:56 <soupdragon> it's not completely clear what 'strict' means
17:00:02 <ehird> yeah
17:00:04 <soupdragon> and I assume lazy is just the identity
17:00:05 <ehird> ok let's define
17:00:17 <ehird> yeah the lazy portion of the monad is identity monad
17:00:21 <ehird> *is the identity monad
17:00:23 <soupdragon> you might elaborate a bit by defining this in ocaml (or similar, strict language) simultaneously
17:00:31 <ehird> strict = evaluate this before doing anything else
17:00:44 <ehird> lazy = use haskell semantics
17:00:44 <soupdragon> and see what sort of intesection you get
17:00:51 <ehird> soupdragon: i'll try that after doing it in haskell since i know haskell better
17:01:06 <ehird> ofc "evaluate this before doing anything else" doesn't help if the thing is a function and you're applying it
17:01:07 <ehird> aha
17:01:07 <ehird> yes it does
17:01:10 <ehird> if you make the result lazy
17:01:17 <ehird> then you can ignore the result of the application and do-anything-else
17:01:21 <ehird> without having the function evaluated
17:01:54 <pikhq> ehird: Y'want an applicative instance and have a monad instance? pure=return;(<*>)=ap
17:02:04 <ehird> pikhq: shaddap
17:02:08 <ehird> :P
17:02:15 <ehird> Monad should be Applicative f => Monad f, clearly
17:02:29 <ehird> hmm
17:02:43 <pikhq> And Applicative should be Functor f => Applicative f.
17:02:44 <ehird> Lazy f <*> Strict x = lazy (f $! x)
17:02:44 <ehird> or
17:02:44 <ehird> Lazy f <*> Strict x = strict (f $! x)
17:02:50 <ehird> pikhq: it is
17:02:55 <soupdragon> ehird I just mean any strict language like ML or scheme or whatever
17:03:00 <pikhq> Oh, right.
17:03:02 <ehird> soupdragon: yeah i know
17:03:05 <soupdragon> ok
17:03:09 <pikhq> Applicative makes sense, just not monad.
17:03:17 * ehird makes it lazy (f $! x) because he already has a definition resulting in strict (f $! x)
17:03:19 <ehird> can always change it
17:03:33 <ehird> although that violates "evaluate this before anything else"
17:03:33 <ehird> hmm
17:03:37 <ehird> maybe i should change the definition
17:03:52 <ehird> Strict: If you ever use this, evaluate it before doing so.
17:04:12 <ehird> The Functor instance should satisfy
17:04:12 <ehird> fmap f x = pure f <*> x
17:04:17 <ehird> so pure = lazy
17:04:25 <ehird> so Lazy f <*> x
17:06:48 <ehird> is (<*) x `seq` y `seq` x or y `seq` x
17:06:53 <ehird> i guess the former
17:07:16 <ehird> eh
17:07:20 * ehird omits *> and <*
17:07:24 <ehird> let the compiler infer them
17:08:38 <ehird> *Main> runSequence (do x <- strict [1..]; return 3)
17:08:39 <ehird> 3
17:08:41 <ehird> Well, that's certainly wrong.
17:09:09 <ehird> *Main> (const 3) $! [1..]
17:09:10 <ehird> 3
17:09:11 <ehird> ?!
17:09:47 <ehird> oh ofc
17:09:53 <ehird> i mean deepSeq
17:10:04 <ehird> soupdragon: do you think it's more useful with deepseq or as is
17:10:13 <ehird> i think it should be deepseq personally
17:10:55 <soupdragon> deepseq ;p
17:11:17 <ehird> what does that mean :P
17:12:50 <ehird> soupdragon: so I'd like to officially call SequenceT (Partial a) the Haskell monad :P
17:13:00 <soupdragon> I can't stop you
17:13:04 <ehird> or can you
17:13:05 <Deewiant> f $!!!!!!!!! x = rnf x `seq` f x
17:13:16 <soupdragon> I like that
17:13:22 <ehird> how does rnf differ from deepseq
17:14:00 <Deewiant> What is deepseq
17:15:49 <ehird> typeclass
17:15:51 <ehird> deeply evaluates
17:15:55 <ehird> like for [...] it's map seq
17:15:57 <ehird> well
17:15:58 <ehird> fold seq
17:15:58 <Deewiant> Where is it
17:16:07 <ehird> has it, it's also in Pugs
17:16:11 <ehird> where's rnf
17:16:22 * pikhq has been reading up on the Cont monad...
17:16:23 <Deewiant> Control.Parallel.Strategies in parallel
17:16:27 <ehird> ah, x `deepSeq` y == rnf x `seq` y
17:16:34 <Deewiant> Unsurprising :-P
17:16:38 <pikhq> Hmm. Makes continuations seem clever, rather than obscure magic.
17:17:01 <ehird> ugh
17:17:09 <ehird> that restricts my monad to Control.Parallel.Strategies.NFData
17:17:18 <ehird> i wish there was like haskell but strict so i could implement this :)
17:18:20 <pikhq> Throw a bunch of #s everywhere? :P
17:18:34 <pikhq> Oh, and ! and seq.
17:18:54 <pikhq> ... And wonder why people reading your code hate you so damned much.
17:20:18 <ehird> pikhq: not sufficient, I need deepSeq
17:20:22 <ehird> without a typeclass
17:24:26 <SimonRC> there is a language around somewhere that aims to be a strict Haskell
17:25:02 <soupdragon> HAQUELLE
17:26:45 <ehird> i have an ocaml compiler
17:26:46 <ehird> ocaml it is
17:27:15 <ehird> dammit, no ocaml-mode
17:27:16 <ehird> oh well
17:28:02 <ehird> let's see how much ocaml i remember
17:32:55 <SimonRC> I can't find it though
17:35:15 -!- Sgeo has joined.
17:35:30 <ehird> ais523: you know ocaml right
17:36:57 <ehird> http://www.reddit.com/r/AskReddit/comments/anexq/hey_reddit_what_awesome_graffiti_have_you_found/c0igyyg
17:39:15 <Asztal> SimonRC: is it http://www.haskell.org/haskellwiki/DDC ?
17:39:39 <ais523> ehird: vaguely, although I haven't written it for a while
17:40:06 <ehird> type 'a sequence = Strict of 'a | Lazy of (() -> 'a)
17:40:07 <ehird> why is this a syntax error?
17:40:12 <ehird> in the Lazy of part
17:42:46 <ais523> ehird: I take it that's fictional
17:43:06 <ehird> ais523: perhaps reading the epilogue and the alternate ending will remove any doubts you have
17:43:14 <ehird> Yes indeed: this person is quantum!
17:43:17 <ais523> ehird: yes
17:43:19 <ehird> He experiences every branch of the many worlds.
17:45:44 <ais523> so, in other words, it was all, in fact, offtopic
17:46:31 <ehird> are you actually complaining about someone posting a really good piece of fiction :) the only point of threads like that is for entertainment, truth is more or less irrelevant especially if it's that well-written
17:46:52 <ehird> flossdaily is well-known for spinning yarns anyway so it doesn't really "fool" anyone
17:47:08 <ais523> <MysteryStain> Flossdaily, you successfully managed to completely derail the entire point of this thread. I applaud you for that.
17:47:11 <ais523> I'm not actually complaining
17:47:16 <ais523> I'm just amused
17:47:25 <ais523> MysteryStain's comment sums up my attitude
17:47:48 <ehird> then the answer is yes :P
17:48:15 <ais523> heh, are we asking and answering questions recursively?
17:48:29 <ais523> two simultaneous conversations with someone is one thing, but this...
17:48:59 <ehird> i can barely talk to normal people because I can't argue recursively with them :(
17:49:25 <ehird> maybe i should start calling them "linears" :D
17:49:35 <ais523> <ehird> i can barely talk to normal people because I can't argue recursively with them :(
17:49:37 <ais523> that needs sigging
17:49:42 <ais523> (and I agree with the sentiment)
17:49:56 <ehird> i'm not even joking, I think about everything with nesting
17:50:03 <ehird> I don't even know how to argue linearly
17:50:07 <ais523> I know you aren't joking
17:50:19 <ehird> i know you know i aren't joking.
17:50:25 <ais523> sometimes I end up in queue-arguments rather than stack-arguments
17:50:33 <ais523> which are equally confusing for someone not used to that sort of thing
17:50:44 <ais523> normally caused by answering logs rather than conversing in realtime
17:52:03 * ais523 waits for AnMaster to come in with a nonsequitur
17:53:03 <ehird> recently i was arguing with someone and they said "~p => q, bad(q), therefore good(p)" and I said "even assuming bad(q), ~prevents(q,p) => unconnected(p,q), ~prevents(q,p), therefore your argument is invalid"
17:53:06 <ehird> they didn't get it
17:53:32 <soupdragon> we were talking about that in #agda the other
17:53:32 <soupdragon> day
17:53:41 <soupdragon> and when I say talking.. I mean trying really hard to make puns about it
17:54:03 <ehird> talking about what
17:54:08 <ehird> people sucking at recursion?
17:54:10 <soupdragon> that logical fallacy
17:54:39 <ehird> well, "~p => q, bad(q), therefore good(p)" is valid, but it can be rebutted with ~(~p => q)
17:54:49 <ehird> (assuming p has no other consequences)
17:54:56 <ehird> hmm
17:55:01 <ehird> if recursion is self-calling, clearly cursion is calling
17:55:07 <ehird> people suck at cursion.
17:55:39 -!- kar8nga has joined.
17:56:03 <ehird> anyone know why i can't do
17:56:04 <ehird> type 'a sequence = Strict of 'a | Lazy of (() -> 'a)
17:56:04 <ehird> in ocaml?
17:58:36 <ais523> what error are you getting?
17:59:00 <ehird> File "sequence.ml", line 1, characters 44-45:
17:59:00 <ehird> Error: Syntax error
17:59:12 <ehird> error is at Lazy of |(|...
17:59:25 <ais523> try an extra pair of parens around everything past the =
17:59:29 <SimonRC> Asztal: yeah, DDC
17:59:35 <ais523> O'Caml is rather finicky about precedence, I normally end up putting parens everywhere
17:59:53 <ehird> that won't work, it's a type declaration, no?
18:00:06 <ehird> yep, that breaks it even moreer
18:00:07 <ehird> *more
18:00:28 <soupdragon> more parens!!
18:00:35 <ais523> what about fewer parens, then?
18:00:41 <ais523> just Lazy of () -> 'a
18:00:46 <soupdragon> ehird http://caml.inria.fr/pub/docs/manual-ocaml/libref/Lazy.html
18:00:50 <ehird> ais523: same error
18:01:01 <ais523> soupdragon: that's not what he's trying to do
18:01:08 <SimonRC> in my search for that language, I found this: http://lambda-the-ultimate.org/node/1546 <-- oh dear
18:01:09 <soupdragon> ?
18:01:09 <ehird> soupdragon: that isn't the same as () -> 'a afaik
18:01:16 <soupdragon> it's better!
18:01:27 <lieuwe> ehird: almost done with the basics off my lang :-)
18:01:31 <ehird> "Why do languages even touch execution which is a technique used to get around current hardware limitations? What will happen when processors can execute seemingly infinite instructions at the exact same time?"
18:01:33 <ehird> crackpot detected
18:01:42 <ehird> soupdragon: but it's not what i'm trying to model.
18:01:54 <soupdragon> I don't know what you mean
18:02:02 <soupdragon> I'm just saying, read this
18:02:09 <ehird> Why? I do not want to use it.
18:02:23 <soupdragon> oh well
18:02:27 <ehird> Even if I do, that does not help my syntax problem.
18:04:09 <ehird> maybe i need to give () -> 'a a name
18:05:10 <ais523> ehird: here's an example from the O'Caml book I have: "type 'a listf = | Val of 'a | Fun of ('a -> 'a) * 'a listf"
18:05:13 <ais523> the leading | is redundant
18:05:28 <ehird> what's that weird * 'a listf'
18:05:49 <ais523> ehird: it means that a Fun is a tuple
18:05:54 <ehird> right
18:05:55 <ais523> of a funtion from 'a to 'a, and an 'a listf
18:05:56 <ehird> oh right
18:05:57 <ehird> 'a listf
18:05:58 <ais523> *function
18:06:08 <ehird> OH
18:06:10 <ehird> (()
18:06:11 <ehird> (unit
18:06:14 <ehird> I am so fucking dumb
18:06:20 <soupdragon> http://caml.inria.fr/pub/docs/manual-ocaml/libref/Lazy.html
18:07:14 <ehird> yeah i just relooked at that and it is what i want
18:07:21 <ehird> how do you use a module without opening it in ocaml i forget
18:07:34 <ehird> oh just use it
18:07:37 <soupdragon> http://caml.inria.fr/pub/docs/manual-ocaml/manual004.html :P
18:07:56 <soupdragon> I can never remember any of the module stuff
18:07:59 <ehird> ehh, I wish I could use the lazy keyword directly
18:08:05 <ehird> instead of Lazy (lazy poop)
18:09:20 <ais523> ouch windows 7
18:09:31 <ais523> why does this thing insist on grouping, say, two folder windows?
18:09:38 <ais523> it makes it almost impossible to switch between them quickly with the mouse
18:11:57 <ais523> even worse, it starts fading windows in and out while you're trying to choose which to select
18:12:08 <ais523> which is fine if you're going slowly, but massively annoying if you already know which you want
18:16:48 <soupdragon> im actually still realizing just how brilliant that Metamorphosis of Prime Intellect is
18:17:04 <SimonRC> soupdragon: huh?
18:17:15 <soupdragon> hi SimonRC
18:17:17 <SimonRC> MPI?
18:17:28 <soupdragon> you don't know it?
18:17:32 <SimonRC> soupdragon: once again I must speak several times before you notice me :-)
18:17:41 <SimonRC> I meant, what is MPI?
18:17:44 <ais523> soupdragon: is your nick a Clangers reference?
18:17:50 <soupdragon> ais523 yes!
18:19:25 <ehird> SimonRC: The Metamorphosis of Prime Intellect is a novel.
18:19:33 <ehird> http://www.kuro5hin.org/prime-intellect/
18:19:43 <ehird> ("This online novel contains strong language and extreme depictions of acts of sex and violence. Readers who are sensitive to such things should exercise discretion.", etc.)
18:19:49 <ehird> Speaking of which I really must get around to reading it sometime.
18:20:26 <soupdragon> I think that I must have read it a long time ago
18:20:39 <soupdragon> but probably not all the way through
18:20:40 <soupdragon> im not sure
18:20:59 <ehird> ais523: Windows 7 is application based
18:21:04 <ehird> it's not "grouping two folders"
18:21:08 <ehird> the task bar is filled with application icons
18:21:12 <ais523> ehird: I know how it works
18:21:20 <ais523> that doesn't prevent it being inconvenient, though
18:21:29 <ehird> click Explorer. click the relevant window
18:21:31 <ehird> that was hard
18:21:35 <ais523> yes, but it's two clicks
18:21:39 * Sgeo likes how the things in the task bar can have status bars
18:21:43 <ais523> and the thing you have to click on doesn't appear until after the first one
18:21:49 <ais523> which makes it impossible to plan where you're going before you do
18:21:50 <Sgeo> I was Remote Assisting a friend who has Win7
18:21:55 <ais523> it's not hard, but it /is/ slow
18:22:06 <ehird> Sgeo: yes, browsers use that to show progress of a download, it's nice
18:22:23 <ehird> ais523: WFM. also, with browsers it shows all tabs, not windows
18:22:24 <ehird> which is nice
18:22:33 <ehird> soupdragon: I can't use http://caml.inria.fr/pub/docs/manual-ocaml/libref/Lazy.html, it doesn't let a lazy computation depend on itself
18:22:41 <ehird> "Raise Undefined if the forcing of x tries to force x itself recursively."
18:22:48 <ais523> ehird: not with Firefox, at least
18:22:50 <Sgeo> ...All tabs? That would be pain for me
18:22:50 <soupdragon> hmm
18:22:58 <soupdragon> hmmm
18:22:59 <ehird> ais523: IE does it, I think Chrome too
18:23:04 <ehird> Firefox sucks at platform-nativity
18:23:06 * Sgeo often has a LOT of tabs in one window
18:23:09 <ehird> use Chrome, it's the best windows browser
18:23:17 <soupdragon> didn't Okasaki use lazyness like this to do infinite streams
18:23:19 <ais523> ehird: can't install software here
18:23:19 <soupdragon> I don't understand
18:23:26 <soupdragon> maybe I am just imagining that
18:23:31 <ehird> ais523: tell them to install chrome, then :P
18:23:39 <Sgeo> Chrome++
18:23:39 <ehird> soupdragon: it's generalised laziness
18:23:40 <ehird> well
18:23:41 <ais523> why? IE and Firefox are both good enough
18:23:44 <ehird> it's generalised lazy/strictness
18:24:04 <ehird> ais523: IE 8 is alright
18:24:11 <ehird> but firefox makes you select a window, *then* a tab
18:24:13 <ehird> which is, indeed, inefficient
18:24:16 <ehird> but not Windows' fault
18:24:27 <ais523> ehird: but you're doing that anyway
18:24:31 <ehird> soupdragon: it's just the evaluation order monad :-)
18:24:33 <ehird> ais523: no you're not
18:24:36 <ais523> you're selecting the firefox icon on the task bar, then the individual firefox tab
18:24:36 <ehird> you click IE, then the tab
18:24:40 <ehird> vs
18:24:46 <ehird> you click Firefox, then the window, then the tab
18:24:52 <soupdragon> okay
18:24:54 <ais523> except I only use one Firefox window at a time
18:25:03 <ehird> ais523: well, don't.
18:25:14 <ehird> :p
18:25:20 <ais523> the only reason to open multiple windows of the same browser, apart from showing two things side-by-side or ontop of each other which is rare, is to organise tabs
18:25:35 <ais523> and if Win7 is just going to lump all the tabs together anyway, why the hell are you opening multiple browser windows?
18:26:06 <ais523> in other words, Firefox is giving you the choice here, IE is forcing you to effectively use just a single window
18:26:19 <ehird> how do you define an infix op in ocaml?
18:26:34 <ais523> not sure, never tried
18:26:49 -!- jpc has joined.
18:27:29 <ehird> ( op )
18:27:33 <Asztal> Ctrl-Click the taskbar icon to cycle through windows in that group.
18:28:08 <ais523> Asztal: that's suboptimal because it's worse than alt-tab in nearly every respect
18:28:16 <ais523> control-clicking implies I'm using the keyboard
18:28:27 <ais523> in which case I wouldn't want to use the mouse, because using the keyboard /and/ the mouse is incredibly slowing
18:28:29 <ehird> Asztal: don't bother, ais523 has been anti-win7 every time he's mentioned it, even though the task bar is superior to the os x dock
18:28:40 <ehird> ais523: no it's not
18:28:42 <ais523> ehird: I mostly like it, just the taskbar gets in my way a lot
18:28:44 <ehird> always keep one hand on the keyboard, duh
18:28:55 <ais523> ehird: I have both hands on my laptop keyboard atm
18:29:04 <ais523> moving both hands over to the desktop is substantially slower than moving just one
18:29:09 <ehird> wow
18:29:13 <ais523> and that just one I want to put on the mouse, because I'm using it for web browsing
18:29:17 <ehird> you're criticising a UI because you use a laptop as well as a desktop
18:29:25 <ehird> and it doesn't account for the movement time
18:29:25 <ais523> yes, I am
18:29:31 <ehird> talk about looking for a complaint
18:29:52 <ais523> ehird: a UI that assumes I'm focusing all my attention on that UI is suboptimal design
18:30:09 <ais523> quite often I want to use one or both of my hands for something else, e.g. typing on another computer
18:31:32 <ais523> besides, the UI is slower even when you are focusing all your attention on that computer
18:31:46 <ais523> a UI that assumes one hand on the keyboard, one on the mouse, /consistently/ (like Blender) is fine
18:31:53 <ais523> one that makes you move around a lot isn't, though
18:32:00 <ehird> i'm sure there is some hack to make it use the old taskbar
18:32:32 <Asztal> There is one case in which giving each tab its own thumbnail is slower, which is when you want to pick a window, not a tab (so that you can open a new tab, for example). I find that more common than wanting to open a particular tab.
18:32:39 <ais523> what I'd really like is something where multiple windows of the same app unbunch, with a text legend to say which is which
18:32:48 <ais523> but otherwise the same as it is
18:33:00 <ais523> but that would be inconsistent UI, and so no sane UI maker would do it, despite being useful
18:33:15 <ais523> Asztal: agreed, if that case wasn't useful to you you wouldn't have multiple windows in the first place, as it's the only reason to use them
18:34:42 <Asztal> I should really try this "never combine" option for the taskbar, see how that works out. It seems to have been improved since the RC.
18:35:01 -!- oerjan has joined.
18:35:46 <ais523> ooh, there is a "never combine" option, thanks
18:36:01 <ais523> that fixes the issues I was having with it nicelyt
18:36:03 <ais523> *nicely
18:36:08 <ais523> in fact, it does just what I described
18:37:57 <Asztal> Ah, I just noticed there is a text legend if there's room.
18:39:58 <ehird> soupdragon: i'm trying to do an infinite stream now actually
18:40:47 <ehird> ...actually, no point
18:40:53 <ehird> it'd just be the regular stream impl
18:40:58 <ehird> let's try...
18:41:06 <ehird> hm
18:42:15 * ehird gets "int sequence sequence" back from the type checker
18:42:17 <ehird> well that's not right
18:42:50 <ehird> trying to implement `foo = do _ <- lazy foo; strict 42`
18:42:52 <ehird> i.e.
18:43:00 <ehird> lazy foo >>= (\_ -> strict 42)
18:43:30 <lieuwe> ehird: wtf are you guys talking 'bout :-p
18:43:47 <ehird> lieuwe: a monad for lazy or strict evaluation, duh.
18:43:49 <ehird> ;)
18:44:07 <lieuwe> ehird: a what for what or what what?
18:44:08 <ehird> if you don't know functional programming it won't make any sense to you
18:44:10 <ehird> that's ok :P
18:44:39 <Sgeo> Chrome is so fast, especially when all its children are crashed
18:44:43 <ehird> fffff i really need my >>= itself to be lazy
18:45:00 <lieuwe> Sgeo: :-p
18:45:01 <pikhq> ehird: Learn you some lambda.
18:45:06 -!- bsmntbombdood has quit (Read error: 60 (Operation timed out)).
18:45:09 <ehird> oh wait
18:45:10 <ehird> | Lazy x -> f (x ())
18:45:12 <ehird> god i'm dumb
18:45:16 <ehird> Lazy == Strict
18:45:39 <ehird> so... i need all my values to be unit->'a
18:45:42 <ehird> but some pre-forced
18:46:15 <pikhq> ehird: Erm. Not you.
18:46:18 <pikhq> lieuwe: You. Learn you some lambda.
18:46:23 <oerjan> ehird: note that lazy = return, by the monad laws, iirc
18:46:35 <ehird> oerjan: yeah i had that in my haskell version
18:46:41 <oerjan> because return x >>= f = f x
18:46:44 <ehird> but i'm doing it in ocaml first because it's clearer what is strict and what is lazy
18:46:48 <ehird> and also because rnf requires a typeclass
18:46:54 <ehird> and for the same reason Set is not a monad Sequence cannot be
18:46:57 -!- bsmntbombdood has joined.
18:47:00 <ehird> (typeclass restriction on its argument)
18:47:04 <lieuwe> pikhq: eh, why?
18:47:14 <ehird> lieuwe: because functional programming is the best.
18:47:14 <oerjan> oh wait not really return, just id, since you pass it something monadic
18:47:24 <ehird> oerjan: no, you don't
18:47:35 <ehird> data Sequence a = Strict a | Lazy a
18:47:47 <oerjan> you have foo = do ..., so foo must me monadic...
18:47:49 <ehird> i guess Strict !a could work
18:47:52 <oerjan> and then lazy foo
18:47:57 <ehird> oerjan: right it was nested monadic or whatever
18:48:01 <ehird> i'm trying to fix it shush :P
18:48:07 <ehird> how's this for a gnarly type sig
18:48:09 <ehird> val ( >>= ) : 'a sequence -> ('a -> 'b sequence) -> 'b sequence = <fun>
18:48:12 <ehird> erm
18:48:13 <ehird> wrong one
18:48:18 <ehird> val ( >>= ) : 'a sequence -> ((unit -> 'a) -> 'b sequence) -> 'b sequence = <fun>
18:48:53 <ehird> # foo ();;
18:48:53 <ehird> - : int sequence = Strict 42
18:48:53 <ehird> woot
18:48:58 <ehird> let rec foo () =
18:48:59 <ehird> Lazy (fun () -> foo ()) >>= (fun _ ->
18:48:59 <ehird> Strict 42)
18:49:13 <ehird> oh wait I can rewrite (fun () -> foo ()) as foo
18:49:14 <ehird> excellent
18:49:22 <ehird> let rec foo () = Lazy foo >>= (fun _ -> Strict 42)
18:49:31 <ehird> I guess it should be "sequenced" not "sequence"
18:50:21 <ehird> that () arg is just because ocaml doesn't like you doing that otherwise :P
18:50:36 <oerjan> rnf is for deep normalization though, not just top constructor (which doesn't require a type class in haskell)
18:51:01 <ehird> oerjan: yes, but it behaved rubbishly like that
18:51:08 <ehird> do x <- strict [1..]; return 42
18:51:18 <ehird> kinda poopy if that is == return 42
18:51:32 <oerjan> mhm
18:52:20 <ehird> let rec ones () : (int list) sequence =
18:52:21 <ehird> Lazy ones >>= (fun me ->
18:52:27 <ehird> so me : unit -> int list
18:52:40 <ehird> Lazy (fun () -> 1 :: (me ())))
18:52:53 <ehird> Error: This expression has type int list sequence
18:52:53 <ehird> but an expression was expected of type int list
18:52:53 <ehird> wut??
18:53:45 <ehird> let rec ones () : (int list) sequenced =
18:53:45 <ehird> Lazy ones >>= (fun me ->
18:53:45 <ehird> Lazy (fun () -> 1 :: (me ())))
18:53:46 * ehird can't see anything wrong with that
18:54:10 <ehird> it's just `ones = do me <- lazy ones; lazy (1 : me)`
18:54:18 <ehird> more or less
18:54:53 <oerjan> 1 :: me is int list, right
18:55:09 <ehird> 1 :: me () is int list
18:55:23 <ehird> so Lazy (fun () -> 1 :: me ()) is (int list) sequenced
18:55:45 <ehird> so (fun me -> Lazy (fun () -> 1 :: me ())) is (unit -> int list) -> (int list) sequenced
18:56:02 <ehird> which is what the right operand to >>= should be.
18:56:17 <ehird> and therefore the result of >>=, assuming the left hand is typed properly,
18:56:21 <ehird> is (int list) sequenced
18:56:33 <ehird> therefore ones () is of type (int list) sequenced, therefore the left hand side, Lazy ones, is typed correctly
18:56:37 <ehird> QED
18:56:40 <ehird> now why does ocaml disagree?
18:56:48 <oerjan> um the right operand to >>= should have an arbitrary first argument, surely?
18:57:25 <oerjan> (>>=) :: Monad m => m a -> (a -> m b) -> m b
18:57:36 <ehird> val ( >>= ) : 'a sequenced -> ((unit -> 'a) -> 'b sequenced) -> 'b sequenced =
18:57:37 <ehird> <fun>
18:57:44 <ehird> type 'a sequenced =
18:57:45 <ehird> | Strict of 'a
18:57:45 <ehird> | Lazy of (unit -> 'a)
18:57:45 <ehird> let ( >>= ) (x : 'a sequenced) (f : (unit -> 'a) -> 'b sequenced) : 'b sequenced =
18:57:46 <ehird> match x with
18:57:46 <ehird> | Strict x -> f (fun () -> x)
18:57:47 <ehird> | Lazy x -> f x
18:57:50 <ehird> we need to preserve laziness, you see
18:58:53 -!- Slereah has joined.
18:58:55 <oerjan> oh well
18:59:06 * ehird discovers he can make ones not a function
18:59:07 <ehird> let rec ones : int list sequenced =
18:59:07 <ehird> Lazy (fun () -> ones) >>= (fun me ->
18:59:08 <ehird> Lazy (fun () -> 1 :: me ()))
18:59:11 <ehird> oerjan: "oh well" meaning?
19:00:42 -!- lieuwe has quit ("Page closed").
19:00:48 <ehird> hmm does ocaml have undefined
19:00:53 <oerjan> nothing. it wasn't me. you cannot prove it. nobody saw me. oh wait, you did.
19:01:26 <oerjan> how could it? it's a bottom.
19:01:38 <soupdragon> hi oerjan
19:01:42 <ehird> yes and?
19:01:50 <ehird> i just want something that types for any type and barfs on execution
19:01:56 <ehird> haskell subverts the type system with this, why can't ocaml
19:02:00 <oerjan> ehird: error?
19:02:01 <ehird> i can use unsafe.coerce or something iirc in ocaml
19:02:04 <ehird> internals or something
19:02:14 <ehird> oerjan: error is not defined :/
19:02:15 <oerjan> or raise something
19:02:24 <soupdragon> let everything = everything
19:02:26 <soupdragon> ??
19:02:40 <ehird> yeah raise will work
19:02:45 <soupdragon> let rec**
19:02:48 <ehird> # let rec everything = everything;;
19:02:48 <ehird> Error: This kind of expression is not allowed as right-hand side of `let rec'
19:02:51 <soupdragon> hmm maybe it's disallowed :(
19:02:57 <soupdragon> oh well you could use rectypes for a Y combinator
19:03:03 <soupdragon> make omega
19:03:05 <ehird> exception Barf
19:03:06 <ehird> let barf = raise Barf
19:03:12 <soupdragon> you can do without Y actually
19:03:34 <ehird> wait
19:03:36 <ehird> that needs to be barf ()
19:04:03 <soupdragon> augur !!!!!!!
19:04:10 <soupdragon> I figured out how to parse CCG
19:04:13 <augur> O_O
19:04:15 <augur> oh?
19:04:19 <soupdragon> it took me a long time but I worked it out
19:04:53 <soupdragon> I might code it tommowor
19:05:08 <augur> what i'd end up doing is a left-to-right parser
19:05:21 <augur> which tries to build a left-corner parse
19:05:21 <ehird> oerjan: aha
19:05:28 <ehird> the problem is that since ones : int list sequence
19:05:33 <ehird> Lazy ones : int list sequenced sequenced
19:05:33 <augur> and when it cant, it tries compose, or lift, etc etc
19:05:49 <ehird> so, /me is confused
19:05:49 <augur> and it backtracks when it cant do anything, to try alternatives
19:06:49 <soupdragon> augur, oh yeah something a bit irritating was none of the papers on parsing it has T, just B_n
19:07:19 <augur> what
19:07:27 <augur> oh, compose
19:07:33 <augur> not lift
19:07:35 <augur> meh.
19:07:37 <soupdragon> there's a few papers about parsing these but they're kinda confusing
19:07:47 <soupdragon> like.. I couldn't follow any of them
19:08:12 <augur> i should try to write a parser too
19:08:12 <augur> :o
19:08:24 <soupdragon> augur in your prolog
19:08:26 <soupdragon> ;)
19:08:28 <soupdragon> :)
19:08:31 <augur> nah
19:10:19 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
19:10:44 <soupdragon> augur what language do yu use
19:11:01 <ehird> augur is a ruby guy.
19:12:01 <augur> for the prolog interp?
19:12:15 <augur> its in JS. theres no web-based Prolog interp so ive decided to make one
19:12:39 <ehird> http://ioctl.org/logic/prolog1
19:12:43 <ehird> http://yieldprolog.sourceforge.net/
19:12:48 <ehird> I beg to differ.
19:12:51 <soupdragon> for the parser
19:12:54 <augur> :|
19:13:00 <augur> how'd you find these?
19:13:03 <ehird> Google.
19:13:06 <ehird> "javascript prolog"
19:13:09 <augur> :|
19:13:24 <ehird> It lets you find pages on the web by typing in keywords found in those pages or pages that link to them.
19:13:40 <ehird> It even ranks them by how relevant it thinks they are to your keywords, using a fancy algorithm based on pages that link to it.
19:13:43 <augur> well thats ok. that wasnt the only reason i was making this.
19:13:44 <ehird> You should try it sometime.
19:16:48 <augur> Yield Prolog looks quite nice, infact
19:18:25 <ehird> soupdragon: in total languages there's no runPartial :: Partial a -> a, so i guess it's sorta like how the haskell runtime does runIO :: IO a -> a right?
19:18:39 <soupdragon> yes
19:19:50 <ehird> what about bottom, can you do this in a total language + Partial:
19:19:57 <ehird> bottom :: Partial a
19:19:57 <ehird> bottom = do
19:19:57 <ehird> foo <- bottom
19:19:58 <ehird> return foo
19:20:02 <soupdragon> haha
19:20:10 <ehird> i'll take that as a no
19:21:11 <ehird> how do you implement _|_ then
19:21:28 <soupdragon> bottom = Delay bottom
19:21:40 <soupdragon> it's a properly guarded corecursion
19:21:47 <ehird> Delay = Later for me
19:21:51 <ehird> (because I like Now/Later as a name pair)
19:22:03 <ehird> anyway, yeah, should have thought of that...
19:22:11 <augur> Now/Later heh
19:22:18 * SimonRC goes for a bit
19:22:24 <ehird> soupdragon: so when do I have to explicitly say Delay
19:22:26 <augur> what language are you asking about, ehird
19:22:29 <ehird> as opposed to it being identical to the identity monad
19:23:04 <ehird> *Main> runPartial $ factorial 33
19:23:05 <ehird> *** Exception: stack overflow
19:23:07 <ehird> shweet
19:23:16 <soupdragon> hahaha
19:23:17 <ehird> (yeah ok factorial isn't partial shut up)
19:23:23 <augur> ehird :(
19:23:28 <soupdragon> runPartial _ = error "stack overflow"
19:23:37 <augur> you suck ehird. you suck so much.
19:23:39 <augur> T_T
19:24:06 <oerjan> augur: from you that's a compliment, right?
19:24:17 <augur> well no, not in this case
19:24:24 <ehird> i was going to make some sort of a comment or another about being straight but decided not to open that can of worms
19:24:32 <ehird> not with augur
19:24:34 <soupdragon> what can of worms
19:24:34 <ehird> that is never a good idea
19:24:42 <oerjan> oh WELL
19:24:51 <augur> ehird, its ok
19:24:54 <ehird> soupdragon: invoking his "make a bunch of gay innuendo" procedure
19:24:55 <augur> we know you're a queer anyway
19:25:04 <augur> innuendo?
19:25:05 <ehird> ("I'll invoke your procedure if you know what I mean")
19:25:12 <augur> x3
19:25:28 <oerjan> what the heck is that smiley
19:25:36 <soupdragon> X3
19:25:41 <ehird> a cross-eyed cat
19:25:52 <augur> not cross eyed
19:26:07 <ehird> soupdragon: data PartialList a = Nil | Cons a (Partial (PartialList a))
19:26:07 <ehird> or
19:26:12 <ehird> soupdragon: data PartialList a = Nil | Cons (Partial a) (Partial (PartialList a))
19:26:14 <ehird> presumably the former
19:26:17 -!- coppro has joined.
19:26:20 <augur> its the squinted-eyes you get when you laugh too hard
19:26:30 <soupdragon> ehird data List list a = Nil | Cons a (list a)
19:26:41 <ehird> coppro: http://www.doodle.com/rhriqxe2rb226it2 you are contractually obligated to vote due to pledging. kthx :P
19:26:53 <ehird> soupdragon: how fancy
19:26:53 <soupdragon> hm
19:26:56 <soupdragon> ehird data List list a = Nil | Cons a (list list a)
19:27:01 <soupdragon> one of them...
19:27:06 <ehird> soupdragon: no that's ridiculous
19:27:11 <ehird> if you do List Poop a
19:27:13 <soupdragon> there's some kind of methodical way to do it
19:27:14 <ehird> you get
19:27:18 <oerjan> soupdragon: no way list list a types
19:27:20 <ehird> Cons a (Poop Poop a)
19:27:28 <soupdragon> I kind of get it
19:27:29 <ehird> so that's basically list... for one iteration
19:27:34 <soupdragon> the thing can't self apply
19:28:02 <ehird> ah, PartialList a should only ever be used as Partial (PartialList a)
19:28:08 <ehird> otherwise, pHead :: PartialList a -> a
19:28:13 <ehird> and that's just not very partial is it now
19:28:14 <soupdragon> I wonder if it should be a list or list a
19:29:36 <ehird> pTail :: PartitalList a -> Partial (PartialList a)
19:29:36 <ehird> ↑ this desugars to
19:29:45 <ehird> pTail :: Partial (PartialList' a) -> Partial (Partial (PartialList' a))
19:29:47 <soupdragon> List a list = Nil | Cons a list List a (List a)
19:29:47 <ehird> TOO MANY PARTIALS
19:29:53 <soupdragon> yerh
19:30:14 <ehird> *PartialList
19:30:18 <ehird> not PartitalList :P
19:30:48 <ehird> pTail :: PartialList a -> Partial (PartialList a)
19:30:49 <ehird> pTail lst = do
19:30:49 <ehird> Cons _ xs <- lst
19:30:49 <ehird> xs
19:30:52 <ehird> weirdest function I ever did see
19:31:00 <oerjan> data List wrapper a = Nil | Cons (wrapper a) (wrapper (List wrapper a))
19:31:09 <soupdragon> woah
19:31:33 <oerjan> type PartialList = List Partial
19:31:48 <coppro> ehird: done
19:32:12 <oerjan> or perhaps = Partial (List Partial)
19:32:18 <ehird> coppro: you are a good person and deserve much praise
19:32:28 <coppro> yay!
19:32:31 <ehird> oerjan: http://www.doodle.com/rhriqxe2rb226it2 Voting is NOT OPTIONAL
19:32:43 <coppro> coppro, you're awesome
19:32:45 <oerjan> no but visiting is, right?
19:32:54 <ehird> oerjan: NO
19:32:59 <oerjan> darn
19:33:14 <ehird> ehird: tell coppro: "coppro: ehird says you're awesome"
19:33:18 <ehird> coppro: ehird says you're awesome
19:33:24 <ehird> *tell coppro: "ehird
19:33:29 <coppro> :P
19:34:29 * soupdragon spills worms all over everyone
19:35:21 <ehird> O_O
19:37:02 -!- soupdragon has quit ("Leaving").
19:37:53 <oerjan> ehird: either that poll is broken in IE, or it requires registration. in any case, i consider myself excused.
19:38:31 <coppro> probably the former
19:38:32 <ehird> oerjan: you forgot to enter a name
19:38:36 <ehird> coppro: he uses IE 8
19:38:39 <coppro> oh
19:38:42 <ehird> IE 8 is quite solid, and what corporation wouldn't support it?
19:38:47 <coppro> probably what ehird said then
19:38:56 <coppro> yeah, 8 is good
19:38:57 <ehird> oerjan: (it's to the left of the choices)
19:38:59 <coppro> not great
19:39:02 <coppro> but good
19:39:07 <ehird> coppro: apart from the UI above the page
19:39:15 <coppro> true
19:39:17 <ehird> they fucked up with the whole removing the menus thing
19:39:39 <oerjan> ehird: what _choices_?
19:39:50 <ehird> oerjan: the checkboxes
19:40:00 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
19:40:03 <oerjan> wait, alter and amend are your suggested editor names?
19:40:09 <ehird> yes...
19:40:13 <ehird> something wrong with that? :D
19:40:33 <oerjan> ic i thought they were some kind of polling options...
19:40:38 -!- lament has joined.
19:42:45 <ehird> oerjan: you are now contractually obligated to specify other
19:43:14 <oerjan> i cannot, there is nowhere to write it. MWAHAHA
19:43:27 <ehird> that's not my fault :(
19:44:21 <oerjan> but i think my not being able to recognize that the other options _were_ editor names was a good enough reason to specify Other...
19:44:55 <ehird> would you prefer EhirdsEd or something insane like that :P
19:44:57 <ehird> *inane
19:45:03 <ehird> freudian slip...
19:45:41 <oerjan> as for slip, what about "writhe"
19:46:15 * ehird attempts to decode that sentence
19:46:45 <oerjan> i mean, i suggest "writhe", as an insane typo of write
19:47:14 <oerjan> also in the spirit of lewis carroll, iirc
19:47:47 <oerjan> The Mock Turtle went on. .We had the best of educations . . . Reeling and Writhing, of course, to begin with, and then the different branches of Arithmetic.Ambition, Distraction, Uglification, and Derision..
19:48:19 <oerjan> that would have been better with proper punctuation, naturally
19:49:17 <ehird> writhe is too unpleasant, clearly :P
19:50:02 <oerjan> oh WELL
19:51:44 * ehird slaps oerjan
19:52:57 <uorygl> I have invented a method for never losing anything.
19:53:17 <uorygl> Suppose you have 100 items, and you are afraid of losing even one of them. This means you have 100 opportunities to lose something.
19:53:18 <oerjan> uorygl: the game
19:53:42 <uorygl> Consider these 100 items to be 100 one-item piles. Put two of these piles together; now you have 99 piles, meaning 99 opportunities to lose something.
19:54:11 <uorygl> Put two piles together again; then you'll have only 98 opportunities to lose something. Simply repeat until you have 0 opportunities to lose something, and you will never lose anything again.
19:54:21 <oerjan> it's the Haystack solution. oh wait...
19:54:36 <oerjan> i sense an induction base problem
19:54:50 <ehird> uorygl: impossible
19:54:52 <ehird> you can only get to 1
19:54:57 <ehird> combining the last two piles into 1
19:55:01 <ehird> → 1 chance of losing everything
19:55:36 <uorygl> Ah, but there is a flaw in your reasoning!
19:55:42 <uorygl> Simply consider yourself to be one of the items!
19:55:59 <oerjan> ehird: but that would go against the well-known advice of egg-sperts!
19:56:04 <ehird> item = thing-that-can-be-lost, correct?
19:56:11 <ehird> I can't lose myself, so I am not an item.
19:56:12 -!- coppro has quit (Read error: 104 (Connection reset by peer)).
19:56:12 <uorygl> If you carry all your stuff with you all the time, you will never lose anything.
19:56:44 <ehird> are we ignoring environmental factors here?
19:56:44 <uorygl> That's kind of a strange definition of an item.
19:56:48 <ehird> e.g. stuff dropping out of pockets
19:56:51 <oerjan> uorygl: your method appears foolproof.
19:57:03 <uorygl> Zip your pockets.
19:57:03 <ehird> uorygl: your method was to stop you ever losing anythhing
19:57:05 <ehird> *anything
19:57:10 <ehird> and involved putting everything together
19:57:31 <ehird> so if you say "put everything together" in response to "how can i stop these pesky things being lost", clearly everything that is a thing can be lost
19:57:38 <ehird> otherwise your response should have said "put every losable thing together"
19:57:43 -!- coppro has joined.
19:57:46 <ehird> therefore, since I cannot lose myself, I am not a thing.
19:57:46 <ehird> QED
19:58:08 <uorygl> Also, consider building all your stuff into a tower so tall it can be seen from anywhere in the world.
19:58:15 * oerjan approves: http://blog.makezine.com/archive/2010/01/toy_train_used_to_calibrate_fusion.html
19:58:39 <oerjan> (yeah it's from reddit. so what, it's awesome)
20:00:01 -!- Slereah_ has joined.
20:00:48 <uorygl> Or sell all of your stuff and buy a backpack full of iPhones.
20:01:23 * oerjan realizes that was blogspam based on http://www.nytimes.com/2009/12/29/science/29train.html?_r=4&ref=science
20:04:49 -!- Slereah has quit (Read error: 60 (Operation timed out)).
20:05:32 <ehird> grr, new york times wants me to login
20:05:47 <oerjan> MWAHAHA i got past without this time
20:06:04 <uorygl> I think I created a New York Times account.
20:06:05 <oerjan> incidentally i never login when it wants me to
20:06:19 <uorygl> You know, this is what BugMeNot was made for.
20:08:15 -!- MigoMipo has joined.
20:09:06 -!- MizardX- has joined.
20:23:27 -!- zzo38 has joined.
20:24:26 <zzo38> How can I make a program to read fax document, with a barcode and with filling in like scantron forms
20:25:02 -!- MizardX has quit (Connection timed out).
20:25:32 -!- MizardX- has changed nick to MizardX.
20:26:49 -!- coppro has quit ("I am leaving. You are about to explode.").
20:27:25 -!- coppro has joined.
20:31:20 -!- zzo38 has quit (Remote closed the connection).
20:56:38 -!- snowscape has joined.
21:06:26 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
21:11:14 -!- MigoMipo has quit (Read error: 110 (Connection timed out)).
21:58:33 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
22:02:02 -!- pikhq has joined.
22:02:14 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
22:07:04 -!- pikhq has joined.
22:15:31 -!- coppro has quit (Remote closed the connection).
22:17:06 -!- coppro has joined.
22:21:06 -!- MigoMipo has joined.
22:21:35 -!- MigoMipo has quit (Remote closed the connection).
22:44:24 -!- lament has quit.
22:58:48 -!- Azstal has joined.
23:01:17 -!- MigoMipo has joined.
23:04:22 -!- Aszstal has joined.
23:09:06 -!- Asztal has quit (Read error: 110 (Connection timed out)).
23:09:16 -!- Aszstal has changed nick to Asztal.
23:16:24 -!- Azstal has quit (Read error: 110 (Connection timed out)).
23:17:12 -!- ehird has quit.
23:21:10 -!- snowscape has quit (Remote closed the connection).
23:29:49 -!- ehird has joined.
23:29:51 <ehird> Hello!
23:29:54 <ehird> Guess what OS I am using.
23:29:57 <ehird> coppro cannot guess.
23:30:33 <oklofok> EhirdOS?
23:30:33 <oerjan> OpenVMS
23:31:17 <Ilari> Plan9 from Bell Labs? :-)
23:31:21 <ehird> oklofok: I. Wish.
23:31:23 <pikhq> Windows?
23:31:27 <ehird> oerjan: I really, really anti-wish.
23:31:32 <oerjan> :D
23:31:36 <ehird> Ilari: Good luck getting it running on this hardware, though I love the thing.
23:31:40 <ehird> pikhq: Nope.
23:32:07 <ehird> pikhq: Nice try.
23:32:08 <pikhq> Imma go with Linux.
23:32:18 <pikhq> Konqueror.
23:32:20 <pikhq> 4.3.
23:32:51 <ehird> Aww, darn you.
23:32:58 <ehird> Fucking web chat exposin' mah browser.
23:33:05 <pikhq> Hahah.
23:33:41 <oerjan> linux? how vanilla.
23:34:47 <ehird> Quite.
23:37:41 <oklofok> well guess what os *i'm* on!
23:38:03 <Pthing> losethos
23:38:28 <coppro> Windows
23:38:30 <augur> Pthing: regarding svg: not quite.
23:38:40 <oklofok> cheater
23:38:52 <coppro> [16:37:59]===CTCP version reply “mIRC v6.31 Khaled Mardam-Bey” from oklofok
23:39:21 <ehird> oklofok: oklOS
23:39:27 <ehird> I'm still relying on you to write that someday
23:39:39 <oklofok> coppro: it's cheating even if you admit it is.
23:40:30 <oklofok> ehird: might be long till i next program anything.
23:41:09 <ehird> oklofok: i'll totally pay you to do it*
23:41:11 <ehird> *lie
23:41:26 * oklofok i tired of explaining stuff to simpletons
23:41:28 <oklofok> *is
23:42:28 <oerjan> explanation: oklofok is a mathematician now. he is only allowed to prove the programs exist, not to write them.
23:42:57 <oklofok> yup
23:43:34 <coppro> can he prove them correct but not test them?
23:43:35 <oerjan> however, if you input his proof to Coq, you can extract the program for there.
23:43:43 <oerjan> *from
23:44:16 <ehird> oerjan: if it's not in oklo style, it's not an oklo program.
23:44:27 <oerjan> true that
23:46:48 <oklofok> also great news, i did manage to meet the game theory dude
23:46:58 <oklofok> so i did not get a mortal enemy.
23:48:35 * oklofok considers doing something
←2010-01-08 2010-01-09 2010-01-10→ ↑2010 ↑all