←2012-08-15 2012-08-16 2012-08-17→ ↑2012 ↑all
00:01:12 <Phantom__Hoover> I did work experience in RBS once, muha...ha?
00:01:34 <elliott> Sgeo: the ? was implicitly asking about it
00:02:46 <Sgeo> elliott, back in high school, over the summer I would work for the school district doing things like putting RAM into the computers or vacuuming the insides of computers
00:03:01 <Sgeo> Mostly meanial computer stuff
00:03:14 <elliott> ok
00:17:40 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:17:53 -!- Nisstyre has joined.
00:36:36 -!- copumpkin has joined.
00:50:05 -!- DHeadshot has joined.
00:52:10 -!- DHeadshot has quit (Read error: Connection reset by peer).
00:52:19 -!- DHeadshot has joined.
01:27:18 <zzo38> I have recorded this session of Dungeons&Dragons game now.
01:28:21 -!- derdon_ has joined.
01:30:25 <Sgeo> elliott, Phantom__Hoover monqy new album
01:31:23 -!- derdon has quit (Ping timeout: 245 seconds).
01:41:28 -!- NihilistDandy has quit.
01:46:04 -!- Phantom__Hoover has quit (Ping timeout: 260 seconds).
01:48:42 -!- Phantom_Hoover has joined.
01:49:13 <quintopia> Sgeo: is there anything worth getting in the humble android bundle?
01:49:33 <Sgeo> quintopia, I don't know about the other games, but Uplink is good
01:50:26 <Phantom_Hoover> Hey cool, I can get an internet connection in my Linux partition again.
01:51:01 <quintopia> Sgeo: i dont have a tablet
01:51:41 <Sgeo> quintopia, is the PC version available if you buy the bundle?
01:51:53 <quintopia> ayes
01:52:18 <quintopia> will it run in 1gig of RAM?
01:52:31 <Phantom_Hoover> It's from 2000, so probably.
01:54:04 <quintopia> ok
02:00:41 <zzo38> Why are all commands of Ragaraja are undefined?
02:02:41 <quintopia> because ragaraja says what he wants and you better do it or else
02:02:51 <quintopia> he doesnt have to predefine his commands
02:02:58 <quintopia> his commands are his wishes
02:05:22 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:05:27 -!- DH____ has joined.
02:14:30 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:17:58 <elliott> hey guys
02:18:00 <elliott> does http://esolangs.org/wiki/Special:RecentChanges work
02:19:15 <quintopia> it appears to?
02:20:38 <elliott> good
02:26:24 -!- DH____ has quit (Read error: Connection reset by peer).
02:26:29 -!- DHeadshot has joined.
02:28:46 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:41:00 -!- david_werecat has quit (Ping timeout: 244 seconds).
03:24:57 -!- copumpkin has changed nick to pumpkin.
03:26:07 -!- heroux_ has joined.
03:26:26 -!- pumpkin has changed nick to copumpkin.
03:27:48 -!- variable has quit (Ping timeout: 268 seconds).
03:27:48 -!- heroux has quit (Ping timeout: 268 seconds).
03:28:06 -!- variable has joined.
03:28:07 -!- variable has quit (Changing host).
03:28:07 -!- variable has joined.
03:28:13 -!- yiyus_ has joined.
03:29:01 -!- yiyus has quit (*.net *.split).
04:16:57 -!- MoALTz has joined.
04:26:57 -!- itidus21 has joined.
04:28:36 -!- jlaire_ has changed nick to jlaire.
04:42:57 -!- ais523 has joined.
04:43:45 <ais523> lambdabot: messages?
04:44:03 <elliott> ais523: it's @messages? :)
04:44:07 -!- MoALTz has quit (Ping timeout: 272 seconds).
04:45:20 <shachaf> lambdabot: @messages? :)
04:45:20 <lambdabot> Sorry, no messages today.
04:45:29 <shachaf> lambdabot: @botpoison :'(
04:45:29 <lambdabot> Unknown command, try @list
04:52:01 <ais523> elliott: it'd tell me if I had messages if I said anything at all
04:52:06 <ais523> @messages
04:52:07 <lambdabot> You don't have any new messages.
04:52:11 <ais523> see, that was redundant :)
04:52:16 <elliott> ais523: that's not quite true
04:52:22 * elliott if you use ACTIONs, it won't bother you
04:52:29 <elliott> there's some other way I think but I forget what it is
04:52:30 <ais523> oh, I didn't know that
04:57:05 <shachaf> kmc: Did you know that in Python2, random.choice('aá') will randomly return one of ['a','\xc3','\xa1']?
04:58:15 <ion> How about u'aá'?
04:58:55 <shachaf> Oh, that works.
05:00:41 <shachaf> I guess that's just how Python strings are.
05:02:28 <ion> I guess 'foo' is like a ByteString, encoded with some arbitrary encoding, and u'foo' is like Text. Or something.
05:02:43 <zzo38> O, you have to indicate if you want byte strings or Unicode strings. I do not think it is a problem
05:03:45 <shachaf> Right. I just didn't know Python worked that way.
05:09:13 -!- oonbotti has quit (Quit: oonbotti).
05:10:55 -!- oonbotti has joined.
05:14:01 -!- oonbotti has quit (Client Quit).
05:15:56 <elliott> It's clearer in Python 3.
05:16:00 <elliott> str is renamed to bytes and so on.
05:16:56 <shachaf> And unicode is renamed to str?
05:17:15 <shachaf> elliott: Hey, computers are bad. Can I have a copy of @?
05:17:30 <elliott> No.
05:17:34 <elliott> And yes, I think so? Not sure.
05:17:37 <elliott> Maybe not.
05:17:43 <shachaf> :-(
05:18:17 -!- oonbotti has joined.
05:21:03 -!- derdon_ has quit (Remote host closed the connection).
06:18:05 -!- oerjan has joined.
06:46:24 -!- oerjan has quit (Quit: leaving).
06:47:48 <zzo38> One thing a continuation monad seem to do in Haskell is to build up a data structure, including backward. Does a continuation in a different programming language does something similar?
07:02:36 <Sgeo> zzo38, I'm not entirely sure, but I think the Continuation monad is delimited continuations
07:03:19 <shachaf> Sgeo: Cont in Haskell?
07:03:31 <Sgeo> So delimited continuations in other languages might be able to do similar. I should note that I'm not thinking this through at the moment, just remembering what I've seen things called
07:03:46 <shachaf> It depends on what primitives you provide.
07:04:15 <shachaf> You can write shift/reset for Cont, or you can write callCC (or others).
07:06:15 <zzo38> What does shift/reset mean?
07:06:37 <shachaf> https://en.wikipedia.org/wiki/Delimited_continuation
07:07:11 <zzo38> Other programming language continuation is usually callCC, in Haskell we can have callCC but also the monad operations (fmap/return/join/bind) and the operation of its type ((x->r)->r)
07:07:36 -!- aloril has quit (Ping timeout: 244 seconds).
07:09:09 * Sgeo wants to bring monads into every language he touches
07:09:21 <Sgeo> I don't know how plausible that would be for Prolog
07:09:49 <FreeFull> Assembly, now with monads
07:10:39 <zzo38> Before having a monad you need a category. It could be the category of the functions in that programming language, though, so if the functions can perform I/O operations it could be like Haskell's (Kleisli IO) category. And then you define fmap, return, join, having the proper laws on that category.
07:12:20 <zzo38> Possibly with JavaScript you could have, if M is the monad, then M itself is the return operation and then M.prototype.join and M.prototype.map for the others.
07:23:09 -!- aloril has joined.
07:23:09 -!- Phantom_Hoover has joined.
07:24:14 -!- nooga has joined.
07:30:54 -!- epicmonkey has joined.
07:35:32 -!- epicmonkey has quit (Ping timeout: 244 seconds).
07:57:26 -!- Nisstyre has quit (Read error: Connection reset by peer).
07:59:25 -!- Nisstyre has joined.
08:00:55 -!- glogbackup has quit (Ping timeout: 246 seconds).
08:05:07 <zzo38> OK I read about the delimited continuations.
08:06:01 <zzo38> Are they similar to their reset being (flip runCont id) and their shift being (cont)?
08:06:22 <shachaf> I don't think so.
08:07:09 <shachaf> zzo38: Did you see edwardk's puzzle with newtype Mu f = Mu (forall a. (f a -> a) -> a); data Nu f = forall a. Nu a (a -> f a); newtype Fix f = Fix (f (Fix f))
08:08:27 <zzo38> No, I did not see.
08:08:49 <shachaf> I think the puzzle is just to write conversion functions.
08:29:43 -!- ais523 has quit (Read error: Connection reset by peer).
08:29:51 -!- ais523 has joined.
08:31:45 -!- mig22 has joined.
08:39:33 -!- AnotherTest has joined.
08:47:33 -!- epicmonkey has joined.
08:54:03 -!- liljuska has joined.
09:03:45 -!- monqy has quit (Quit: hello).
09:09:00 -!- zzo38 has quit (Remote host closed the connection).
09:28:41 <kmc> http://writelatex.com
09:34:12 <kmc> do laptops charge slower when they're on?
09:35:03 <kmc> i always assumed so, but maybe the max charge rate of the battery is much less than the available power
09:39:27 -!- olsner has quit (Ping timeout: 240 seconds).
09:39:50 -!- olsner has joined.
09:39:53 -!- elliott has quit (Quit: Leaving).
09:40:19 -!- Nisstyre has quit (Ping timeout: 246 seconds).
09:43:02 -!- Nisstyre has joined.
09:46:00 <ais523> `run time | echo
09:46:11 <HackEgo> bash: -c: line 0: syntax error near unexpected token `|' \ bash: -c: line 0: `time | echo'
09:46:18 <shachaf> ais523: ?
09:46:23 <ais523> shachaf: try that command in csh some time
09:46:34 <shachaf> % time | echo
09:46:35 <shachaf> %
09:46:43 <ais523> bleh, did they fix it?
09:46:45 <ais523> well, mostly fix it
09:46:57 <ais523> it should still give an error message, due to being meaningless
09:47:14 <ais523> it used to give a really nonsensical error
09:47:49 <ais523> btw, is that actually csh, or tcsh pretending?
09:48:15 <shachaf> /bin/bsd-csh
09:48:29 <ais523> hmm
09:48:40 <ais523> I'll try it with Debian's/Ubuntu's, installing it now
09:48:54 <shachaf> This is Debian.
09:49:06 <shachaf> The package csh installs /bin/bsd-csh
09:49:19 <ais523> ah, right
09:50:10 <ais523> huh, it seems that "time | echo" actually spawns a process
09:50:14 <ais523> called "time |"
09:50:17 <ais523> try looking in jobs
09:50:30 <ais523> % time | echo
09:50:31 <ais523> % jobs
09:50:32 <ais523> [1] + Running time |
09:50:34 <ais523> % Reset tty pgrp from 11937 to 11927
09:50:37 <ais523> ooh, they didn't fix it, it's just intermittent
09:50:55 <ais523> (the "Reset tty pgrp" thing got printed after the prompt % , I didn't type it)
09:52:58 -!- mig22 has quit (Quit: mig22).
09:56:08 <ais523> (that's the message I was angling for, btw)
09:56:27 <ais523> btw, time | eventually dies with SIGPIPE, some considerable time after you ran it
10:06:07 -!- heroux_ has quit (Ping timeout: 240 seconds).
10:07:11 -!- AnotherTest has quit (Quit: Leaving.).
10:07:30 -!- AnotherTest has joined.
10:11:41 <shachaf> kmc: Do you know the source of 2c1;2c1;2c1;2c1; being typed on the command line when catting /dev/urandom?
10:18:26 <FreeFull> A low amount of entropy I imagine
10:18:58 <shachaf> Being typed. As in, my shell is getting it as input.
10:20:38 <FreeFull> Hmm
10:20:44 <FreeFull> Could be some escape code
10:22:37 -!- mig22 has joined.
10:38:32 -!- heroux has joined.
10:45:07 * ais523 is scared of Mauriceling's BF derivs
10:45:29 -!- david_werecat has joined.
10:45:33 <ais523> shachaf: it's probably an escape code that asks for information in response
10:45:41 <shachaf> ais523: Sure, but which one?
10:45:44 <ais523> not sure
10:46:09 <ais523> this reminds me of HTTP access log trojans
10:46:46 <ais523> the idea is to insert escape codes in your user agent, so that if someone cats their access log to a terminal, it sends data back into the terminal to run arbitrary commands
10:46:59 <ais523> although most modern terminals are immune nowadays
10:47:35 <ais523> same sort of concept as sending people to shock sites via XSS attacks on plain text files…
10:59:07 <FreeFull> Because the webserver doesn't tell the browser that it's plain text and not html?
11:01:16 -!- david_werecat has quit (Read error: Connection reset by peer).
11:06:53 -!- david_werecat has joined.
11:15:56 -!- mig22 has quit (Quit: mig22).
11:22:51 -!- david_werecat has quit (Ping timeout: 240 seconds).
11:23:12 -!- MoALTz has joined.
11:47:28 -!- epicmonkey has quit (Remote host closed the connection).
11:52:55 -!- epicmonkey has joined.
11:58:41 -!- liljuska has quit (Quit: Leaving.).
12:12:46 -!- aloril has quit (Read error: Operation timed out).
12:18:50 <nooga> ahh
12:18:53 <nooga> what a fine day
12:19:06 <nooga> found a bug in Boost libs
12:19:32 <nooga> win 13
12:29:41 <itidus21> another more meta way to do an attack would be to lie about something in a readme file
12:30:17 <itidus21> but i'm not sure what
12:31:07 <itidus21> maybe recommend an antiquated terminal in a readme file
12:31:15 -!- kinoSi has quit (Read error: Connection reset by peer).
12:31:26 -!- aloril has joined.
12:31:42 -!- kinoSi has joined.
12:31:48 <itidus21> <-- dumb. nevermind..
12:46:06 <AnotherTest> nooga: which lib
12:48:42 <nooga> filesystem
12:49:36 <AnotherTest> oh
12:49:39 <AnotherTest> what didn't work?
12:54:38 -!- boily has joined.
13:14:04 -!- aloril has quit (Ping timeout: 250 seconds).
13:15:37 -!- derdon has joined.
13:23:54 -!- ais523 has quit.
13:30:49 -!- aloril has joined.
13:35:17 <AnotherTest> nooga: I just had this issue with boost::lexical_cast; it seems to cast "9001" to 2329 ?
13:36:51 <jlaire> AnotherTest: o_O
13:37:58 <AnotherTest> I've probably done something wrong
13:38:09 <AnotherTest> the weird thing is
13:38:21 <AnotherTest> I added an output statement on the variable that I'm casting
13:38:25 <AnotherTest> and on the result
13:39:11 <jlaire> paste or it didn't happen!
13:42:25 -!- ogrom has joined.
13:50:11 <AnotherTest> jlaire: I would have to paste over 2000 lines of code that I'm not even supposed to paste :(
13:50:18 <AnotherTest> unless it always happens
13:50:33 <AnotherTest> I'll try whether it does
14:19:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:24:16 <AnotherTest> <excuse>I'm about to spam </exuse>
14:24:18 <AnotherTest> std::string port_s = address.substr(pos2 + 1);
14:24:18 <AnotherTest> std::cout << "Port string: " << port_s << std::endl;
14:24:18 <AnotherTest> int port = boost::lexical_cast<int>(port_s);
14:24:18 <AnotherTest> std::cout << "Port number: " << port << std::endl;
14:24:38 <AnotherTest> output:
14:24:39 <AnotherTest> Port string: 9001
14:24:40 <AnotherTest> Port number: 2329
14:25:30 <FreeFull> Is a lexical cast the correct way to convert a string to integer?
14:27:06 <AnotherTest> Yes
14:27:44 <AnotherTest> http://www.boost.org/doc/libs/1_50_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast
14:34:52 <boily> there's always the atoi() way of casting a string to an int: http://pastebin.com/5iDifJhC
14:37:09 <FreeFull> atoi() is the C way
14:41:07 -!- copumpkin has joined.
14:41:50 <boily> i'm only one very lazy programmer when it comes to C++.
15:16:33 <AnotherTest> I know about atoi
15:16:43 <AnotherTest> but I (and many others) dislike it
15:16:58 <AnotherTest> lexical_cast is much more generally
15:17:36 <AnotherTest> boily: your example works with lexical_cast equally well, but it's just this particular situation (I must be doing something wrong)
15:18:05 <AnotherTest> also isn't writing (void) as arguments a typical C thing to do
15:35:14 <AnotherTest> guess what
15:35:25 <AnotherTest> int port = std::atoi("9001"); still gives me the same
15:36:14 <FreeFull> Now that's weird
15:36:48 <AnotherTest> Yes it is
15:37:02 <AnotherTest> this works in any other file
15:37:08 <AnotherTest> just not in my current project
15:37:31 <AnotherTest> well in this file
15:38:33 <FreeFull> I compiled a test case and I get 9001
15:38:49 <AnotherTest> My tests cases give me 9001 too
15:39:47 <AnotherTest> I don't understand it
15:40:25 <AnotherTest> how can std::cout << boost::lexical_cast<int>("9001") << std::endl; or std::cout << std::atoi("9001") << std::endl; ever output 2329
15:40:39 <AnotherTest> I put that literally in my code
15:41:51 <AnotherTest> 8001 = 1f41
15:41:53 <AnotherTest> oh wait
15:41:59 <AnotherTest> hexadecimal?
15:42:05 <FreeFull> Oh
15:42:08 <AnotherTest> so
15:42:16 <FreeFull> cout is in hexadecimal mode
15:42:19 <AnotherTest> yes
15:42:23 <AnotherTest> that must be it
15:42:25 <AnotherTest> and I know why
15:42:40 <AnotherTest> somewhere else I was outputting hexadecimal numbers
15:42:41 <AnotherTest> :S
15:42:49 <AnotherTest> stupid error -> time waste
15:43:01 <AnotherTest> forgot to turn that flag of :(
15:43:14 <FreeFull> =P
15:43:37 <FreeFull> This is what happens when your output routines have hidden state
15:44:12 <AnotherTest> indeed :'(
15:44:31 <AnotherTest> rage against std::ostream!
15:45:40 <AnotherTest> I actually solved the actual bug in the code there a long time a go
15:45:57 <AnotherTest> but the output was just still wrong :/
16:13:00 -!- epicmonkey has quit (Ping timeout: 246 seconds).
16:19:02 -!- ogrom has quit (Ping timeout: 268 seconds).
16:20:43 -!- ogrom has joined.
16:33:23 -!- ogrom has quit (Quit: Left).
16:38:12 -!- ogrom has joined.
17:24:51 -!- epicmonkey has joined.
17:29:10 -!- zzo38 has joined.
17:43:08 -!- aloril has quit (Ping timeout: 244 seconds).
17:44:19 <kmc> shachaf: i don't know
17:44:39 <kmc> did you figure it out?
17:45:15 <shachaf> Not that one.
17:45:20 <kmc> butts
17:45:25 <shachaf> I figured out another one.
17:45:30 <kmc> oh yeah?
17:45:34 <shachaf> c62;9;
17:45:34 <olsner> what have you been trying to figure out?
17:45:46 <shachaf> That's just from an escape sequence.
17:45:50 <shachaf> Something like \e[c
17:45:58 <shachaf> kmc: There was a bigger mystery, though.
17:46:15 <shachaf> Remember how cat /dev/urandom used to turn your terminal to line-drawing mode?
17:46:33 <shachaf> It hasn't happened in a while, has it? At least it hasn't for me.
17:46:45 <shachaf> We were trying to figure it out, and there were various theories.
17:47:09 <shachaf> A surprising observation was that catting /dev/urandom for a bit, followed by printf '\e(0', wouldn't turn box-mode on.
17:47:23 <shachaf> So somehow there's an escape sequence that disables it or something.
17:47:33 <olsner> or maybe a terminal bug
17:47:38 <shachaf> Possible.
17:48:05 <olsner> someone in here should know all the vt100 codes by heart and be able to tell you directly if there's a sequence to disable box-mode and what it is
17:48:35 <shachaf> olsner: There were mysterioius happenings, though.
17:48:43 <shachaf> Which I don't remember, partly because it's 10:48 and I still haven't slept.
17:49:20 <kmc> you can look through /usr/share/doc/xterm/ctlseqs.txt.gz
17:49:59 <FreeFull> You can always reset your terminal
17:51:45 <kmc> what would we learn from that?
17:52:05 <olsner> is it literally always possible to reset the terminal, or is it possible to end up in a state where the terminal is unrecoverable?
17:52:16 <kmc> there is a code which explicitly means "reset terminal"
17:52:29 <kmc> i'm not sure if it's usable even inside like "i'm sending you a new window title now" mode
17:53:16 <olsner> I wonder how secure terminal emulators tend to be
17:53:33 <olsner> e.g. if you use them to connect to evil servers
17:54:13 <shachaf> Speaking of which, why does `reset` take a really long time to run?
17:54:26 <shachaf> kmc: Sometimes `reset` isn't enough.
17:54:44 <shachaf> I mean, sometimes you get into a state where the terminal is messed up even after typing reset into your shell.
17:55:06 <olsner> http://www.thinkgeek.com/product/e95e/ seems related
17:55:23 <kmc> shachaf: you do?
17:55:44 <kmc> shachaf: did you know that in the Linux VT (but not in any X terminal emulator i've found) you can enter line drawing mode with the single byte 0E?
17:56:20 <shachaf> kmc: Oh, wow, that explains why it's so much easier to get into it in the TTY!
17:56:31 <kmc> shachaf: run reset inside script and then look at the typescript
17:56:35 <kmc> i did this but forgot the results
17:56:44 <kmc> i know it sets all the tabstops
17:56:51 <kmc> i think it may have a hardcoded delay between sending control codes
17:57:08 <shachaf> kmc: Hmm, but \e(0 doesn't work.
17:57:09 -!- aloril has joined.
17:58:45 <kmc> fun
17:59:26 <shachaf> kmc: Did you see edwardk's puzzles with Mu and Nu?
17:59:44 <kmc> no
17:59:46 <olsner> what is it that happens when binary data results in crud getting passed back as input? usually it looks something like semicolon-separated hex values
18:00:01 <kmc> there are some codes to ask for terminal status
18:00:03 <kmc> look through /usr/share/doc/xterm/ctlseqs.txt.gz
18:00:05 <shachaf> newtype Mu f = Mu (forall a. (f a -> a) -> a)
18:00:08 <kmc> (on debian)
18:00:16 <shachaf> data Nu f = forall a. Nu a (a -> f a)
18:00:22 <shachaf> newtype Fix f = Fix (f (Fix f))
18:00:27 <shachaf> I think.
18:00:40 <shachaf> The idea was to write functions to convert these back and forth.
18:01:37 <olsner> ctlseqs.txt is 1540 lines here, that's almost exactly 64 screens of text
18:01:52 -!- monqy has joined.
18:03:23 <kmc> shachaf: ah, i understand now
18:03:43 <shachaf> Understand what?
18:03:48 <kmc> \x0e (ascii SO) means "shift to the G1 character set" (and \x0f = SI means switch to G0)
18:04:03 <shachaf> What's G1?
18:04:03 <kmc> \e(0 sets the G0 character set to be line drawing characters
18:04:13 <kmc> G0 and G1 are variables which can be assigned to different character sets
18:04:25 <shachaf> Ah.
18:04:29 <kmc> in the Linux VT, G0 = US ASCII and G1 = line drawing, by default
18:04:32 <kmc> in xterm they are both ASCII
18:04:43 <shachaf> Makes sense.
18:04:53 <shachaf> cata is Fix f -> Mu f
18:04:56 <kmc> so if you do \x0e in xterm, then \e(0 has no effect
18:05:07 <kmc> but now \e)0 (set G1 = line drawing) will have a visible effect
18:06:01 <olsner> and if you set both G0 and G1 to line drawing, \x0e and \x0f will no longer have any effect?
18:06:07 <kmc> yeah
18:06:11 <kmc> (no visible effect)
18:07:03 <kmc> except maybe the vt doesn't allow reassigning G0
18:07:20 <olsner> so \e(0 might be disallowed?
18:07:25 <kmc> yeah
18:07:29 <kmc> beats me
18:07:42 <kmc> i fear that to be more knowledgable on this subject, i would have to read ISO 2022
18:07:53 <olsner> seems it would be better to just have a "choose character set" instruction, instead of all these states
18:08:08 <kmc> which would cost like CHF 40 and my soul
18:08:16 <kmc> olsner: i know, right?
18:08:32 <olsner> but! that would take three bytes per switch
18:09:04 <olsner> and if you're trying to do e.g. switch to japanese every other character on a 3 baud modem, that might be significant
18:10:49 <kmc> shachaf: you can printf '\e(C' in xterm for the 7-bit finnish experience
18:12:04 <shachaf> kmc: I've had enough of the Finnish experience trying to type on Finnish-layouted keyboards. :-(
18:12:10 -!- Taneb has joined.
18:12:11 <shachaf> I've also had enough of the French experience.
18:12:17 <shachaf> AZERTY is the devil.
18:12:45 <Taneb> Heh, that brings back memories
18:15:21 <kmc> shachaf: if you do printf '\e)0\e~' within LC_ALL=C xterm
18:15:32 <kmc> then you can get line-drawing characters using bytes within the range 80 - FF
18:16:15 <kmc> turns out you can set which of G0, G1, etc. is used by each half of the byte space independently
18:16:24 -!- Taneb has changed nick to atriq.
18:16:24 <shachaf> Makes sense.
18:16:29 <kmc> not really
18:16:36 <kmc> well
18:16:55 <olsner> so that sets up upper-half characters to use G1, after setting G1 to line-drawing?
18:16:55 <kmc> nothing in computer engineering makes sense except in the light of evolution
18:16:59 <kmc> yes
18:17:12 <kmc> http://en.wikipedia.org/wiki/ISO/IEC_2022
18:17:19 <atriq> @ping
18:17:20 <lambdabot> pong
18:17:24 <atriq> Reassuring
18:18:33 <olsner> sometimes when you say ping something says pong, it's amazing
18:19:02 <FreeFull> ^ping
18:19:15 <olsner> if someone built an esoterm, how would its control characters look?
18:19:31 <atriq> !ping
18:19:36 <EgoBot> Pong!
18:19:48 <atriq> `ping
18:19:55 <HackEgo> pong
18:20:01 <nortti> olsner: it would be a brainfuck program outputting the normal ansi control code
18:20:18 <Lumpio-> I'd rather make control characters be words in a popular language so they're easy to remember
18:20:21 <Lumpio-> Say, Chinese
18:20:27 <Lumpio-> You could probably condense all of them down to a single character.
18:20:44 <olsner> some of the early terminals had e.g. 8080 cpus, you could start with something like that connected to a frame buffer and just send it the whole instruction stream
18:21:25 <olsner> it wouldn't even need an instruction pointer or a stored program
18:23:06 <zzo38> In Linux console you could use shift-out/shift-in to use line drawing. You could also use the program I have written to allow the entire CP437 to be used on Linux including shift-out/shift-in.
18:27:29 <zzo38> Therefore I think you should just use the Linux console codes.
18:27:41 <zzo38> (Regardless of if it is CP437 or not)
18:31:30 <atriq> @ping
18:31:31 <lambdabot> pong
18:31:41 <atriq> Is everything down for everyone else again
18:34:22 <shachaf> kmc: Are you still in .fi?
18:34:22 <atriq> Oh, everything's back up
18:36:35 <atriq> That's good
19:14:50 <zzo38> If Good Friday is a statutory holiday, and if you want to have separation of church and state, then the laws should include the way to caluclate Easter isn't it?
19:15:08 <zzo38> Since otherwise you don't have the separation of church and state.
19:15:18 <atriq> Hmm, I suppose
19:19:36 -!- ogrom has quit (Quit: Left).
19:19:44 <atriq> Hmm
19:19:50 <atriq> Hmmmmmmmmm
19:20:26 <atriq> bfThing :: [BFChar] -> RWS [Word8] [Word8] Tape ()
19:33:54 <atriq> data BFChar = L | R | P | M | S | E; data Tape = Tape {lhs :: [Word8], rhs :: [Word8]}
19:34:22 <atriq> -- writing a brainfuck interpreter thingy using IRC as a text editor may be a bad idea
19:38:02 <atriq> -- I don't think I'll bother
19:38:24 -!- AnotherTest has quit (Quit: Leaving.).
19:42:37 -!- aloril has quit (Ping timeout: 240 seconds).
19:45:16 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
19:48:17 <zzo38> I am not sure that type for bfThing is correct anyways
19:49:37 <zzo38> But maybe it is
19:50:20 -!- oerjan has joined.
19:52:57 <atriq> You can use "local tail" to reduce the input?
19:53:22 <oerjan> :t local tail
19:53:23 <lambdabot> forall a (m :: * -> *) a1. (MonadReader [a] m) => m a1 -> m a1
19:53:25 <zzo38> Yes you can, I think so
19:54:18 <oerjan> :t local tail . ($)
19:54:21 <lambdabot> forall a a1. ([a] -> a1) -> [a] -> a1
19:54:36 <zzo38> But "local" does not belong to the Kleisli category (although that might not be important)
19:54:44 <oerjan> > local tail . head $ "test"
19:54:46 <lambdabot> Couldn't match expected type `m a'
19:54:46 <lambdabot> against inferred type `GHC.Types...
19:54:53 <oerjan> darn
19:54:56 <oerjan> og
19:55:00 <oerjan> *oh
19:55:08 <oerjan> > local tail head "test"
19:55:10 <lambdabot> 'e'
19:55:46 <ion> http://www.reddit.com/r/IAmA/comments/ybmmh/we_are_engineers_and_scientists_on_the_mars/c5u7qm7
19:57:53 <oerjan> ion: hey just apply for a job at nasa already :P
19:57:56 -!- aloril has joined.
19:58:24 <ion> “Do you have an opening for a photoshopper?”
19:59:12 <oerjan> i'd work on the presentation. or rather, i'd suggest you do.
20:00:05 <atriq> Hey, it's coming up to a year since I joined this channel
20:00:06 <oerjan> anyway, they probably fired the old one after budget cuts.
20:00:16 <oerjan> wat.
20:00:32 <oerjan> it seems shorter. but years always do.
20:00:33 <atriq> For the first time, not this time
20:00:42 <atriq> `pastlogs Taneb
20:00:45 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pastlogs: not found
20:00:54 <atriq> `pastlog Taneb
20:01:10 <atriq> Oh dear
20:01:13 <atriq> Bad idea
20:01:27 <HackEgo> No output.
20:01:33 <atriq> `help
20:01:35 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
20:01:41 <atriq> `ls /bin
20:01:44 <HackEgo> bash \ bunzip2 \ bzcat \ bzcmp \ bzdiff \ bzegrep \ bzexe \ bzfgrep \ bzgrep \ bzip2 \ bzip2recover \ bzless \ bzmore \ cat \ chgrp \ chmod \ chown \ cp \ cpio \ dash \ date \ dd \ df \ dir \ dmesg \ dnsdomainname \ domainname \ echo \ ed \ egrep \ false \ fgrep \ grep \ gunzip \ gzexe \ gzip \ hostname \ ip \ kill \ less \ lessecho \ lessfile \ lesskey \ lesspipe \ ln \ login \ ls \ lsmod \ mkdir \ mknod \ mktemp
20:02:33 <atriq> `ls
20:02:36 <HackEgo> bin \ canary \ foo \ karma \ lib \ paste \ quotes \ share \ wisdom
20:02:42 <atriq> `ls /paste
20:02:44 <HackEgo> ls: cannot access /paste: No such file or directory
20:02:50 <atriq> `file paste
20:02:53 <HackEgo> paste: directory
20:02:59 <atriq> :/
20:04:37 -!- Eladith has quit (Quit: leaving).
20:05:37 -!- yorick has quit (Ping timeout: 272 seconds).
20:07:26 -!- yorick has joined.
20:09:21 <atriq> Okay, I think I first appeared here on the 11th of July 2011
20:09:53 <atriq> <Taneb> Hello!
20:10:21 <atriq> Yeah
20:10:26 <atriq> So, over a year already
20:10:28 <atriq> Wow
20:10:49 <atriq> Nobody welcomed me that day
20:11:21 <ion> `WELCOME atriq
20:11:35 <atriq> `? Ngevd
20:11:38 <HackEgo> QeK{.[.
20:12:03 <atriq> `learn atriq is rot13 for something. Needs further investigation.
20:12:06 <HackEgo> I knew that.
20:12:38 <atriq> `? Ngevd
20:12:41 <HackEgo> ​!e..+.V.\T/>03N.&."t..d.{D_Mw'n,t;-xɼ..5\_Ҝ..|.w^..ѧj$.VG@dBJ9$.g.&%...q=`j \ i._.MB'3.cH....>CX...x@?.>K...=UgP#bfuy+0!lA..\.W(8=߾ `.wu
20:12:55 <atriq> `? Taneb
20:12:58 <HackEgo> Taneb is not elliott, no matter who you ask.
20:13:02 <atriq> `? Hexham
20:13:05 <HackEgo> Hexham is a European town. There are nine people in Hexham, and at least two of them are in this channel. Taneb looks after the ham.
20:13:37 -!- atriq has quit (Quit: AAAAH HEADACHE).
20:15:36 <zzo38> You can make a (Codensity ((->) x)) monad to be like a (State x) monad? And what do you make from (Codensity (State x)) monad?
20:17:35 -!- morel has joined.
20:21:41 <olsner> ion: are you a professional photoshopper
20:21:52 <zzo38> I figured out how to make double negative elimination by continuation monads.
20:21:54 <olsner> ... questionmark
20:22:29 <ion> olsner: Just an amateur gimper.
20:22:45 <zzo38> Do NASA need any professional photoshopper? Don't they have their own software?
20:23:06 <olsner> they need to apply some color filters to make mars images mars red
20:23:19 <olsner> ... so that people don't think they're fake
20:24:03 <zzo38> But I think they have their own software for that, isn't it?
20:24:52 <zzo38> And I think the purpose of that is to make the picture more clear, not because of thinking they are fake? Since the picture from the camera is imperfect.
20:24:53 <olsner> probably, but perhaps photoshop would be way better at it only they have no qualified personel to operate it
20:25:28 <zzo38> olsner: I don't think Photoshop would be better at it.
20:25:38 <olsner> me neither
20:25:51 <olsner> I'm just trying to figure out a way for ion to get a job at NASA
20:25:57 -!- Phantom_Hoover has joined.
20:26:37 <zzo38> I would use ImageMagick (I think ImageMagick even supports the formats used in astronomy) but don't know enough about the camera and that stuff to know what filters to use. Their own specific software might work better for this purpose, though.
20:26:49 <olsner> so that he can become known as "ion: the man who finnished NASA"
20:26:55 <morel> oh, oops. i thought this chan is about esoteric programming languages :D sorry
20:27:11 <zzo38> morel: It is but people say many other thing too
20:27:21 <morel> oic
20:28:12 <boily> `welcome morel
20:28:16 <HackEgo> morel: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
20:28:27 <morel> yay
20:28:40 <morel> that's #esoteric@irc.dal.net??
20:28:44 <morel> *what
20:29:00 <morel> is HackEgo written in brainfuck? :)
20:29:08 <oerjan> alas, no.
20:29:16 <olsner> not quite sure what the "other kind of esoterica" is, but ghosts and stuff I guess
20:29:20 <Phantom_Hoover> A neopagan channel.
20:29:20 <oerjan> fizzie: WHERE IS FUNGOT
20:29:21 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
20:29:46 <olsner> `quote poltergeist
20:29:50 <HackEgo> No output.
20:29:53 <morel> oh, neat. lambdabot is here, too <3
20:30:48 <oerjan> !bf bf_txtgen Egobot knows many esolangs.
20:30:49 <Phantom_Hoover> Yes, thanks to my brilliant diplomacy.
20:30:50 <EgoBot> No output.
20:30:53 <oerjan> oops
20:30:57 <oerjan> !bf_txtgen Egobot knows many esolangs.
20:31:00 <EgoBot> ​278 ++++++++++++++[>++>+++++>+++++++>++++++++<<<<-]>>-.>+++++.>-.<<+++++++++++++++++++++++++++++.+++++++++++++.+++++.<++++.>>++++.+++.>.<<+++.----.<.>>-.------------.>-.<<++++++.<.>>++++.<------.----.---.>----.>.<++++++.>+++++.<<<++++++++++++++.------------------------------------. [751]
20:31:08 <morel> @faq Can Haskell create a such a heavy-weight stone such that it can't even hold the stone itself?
20:31:09 <lambdabot> The answer is: Yes! Haskell can do that.
20:31:13 <oerjan> !bf ++++++++++++++[>++>+++++>+++++++>++++++++<<<<-]>>-.>+++++.>-.<<+++++++++++++++++++++++++++++.+++++++++++++.+++++.<++++.>>++++.+++.>.<<+++.----.<.>>-.------------.>-.<<++++++.<.>>++++.<------.----.---.>----.>.<++++++.>+++++.<<<++++++++++++++.------------------------------------.
20:31:14 <EgoBot> Egobot knows many esolangs.
20:31:51 <morel> cool
20:32:12 <morel> > "Egobot knows many esolangs." -- the haskell version
20:32:14 <lambdabot> "Egobot knows many esolangs."
20:32:21 <morel> :D
20:33:20 <zzo38> Ask ghost and stuff if you want, too, I suppose, but generally that is not the topic here. But a lot of stuff are ask that are not quite the topic here, anyways. But still you should read the wiki of esolang if you are able to do so.
20:34:08 <oerjan> `? zzo38
20:34:11 <HackEgo> zzo38 is not actually the next version of fungot, much as it may seem.
20:34:41 <boily> `? boily
20:34:44 <HackEgo> boily? ¯\(°_o)/¯
20:34:46 <olsner> `? oerjan
20:34:49 <HackEgo> Your evil overlord oerjan is a lazy expert in future computation.
20:35:05 <boily> HackEgo doesn't know about me :-/...
20:35:12 <olsner> `? olsner
20:35:16 <HackEgo> olsner? ¯\(°_o)/¯
20:35:21 <olsner> last time I checked it didn't know about me either
20:35:36 <zzo38> People make a link of a file on Wikipedia someone else thought resembles the portrait of me, but I think it is actually a drawing, even though some people don't agree.
20:35:38 <boily> oh well. I'm a known unknown in the set of unknowns.
20:35:46 <zzo38> olsner: Do *you* know about you?
20:36:06 <olsner> zzo38: not a lot, but I seem to exist at least
20:36:09 <oerjan> `run echo "boily may be French or something. We are not sure about the rest." >wisdom/boily
20:36:12 <HackEgo> No output.
20:37:28 <boily> `run echo "boily may be French or something. We are not sure about the rest." >wisdom/boily
20:37:31 <HackEgo> No output.
20:37:36 <olsner> `? boily
20:37:39 <HackEgo> boily may be French or something. We are not sure about the rest.
20:37:43 <boily> :D
20:38:17 <oerjan> `learn olsner seems to exist at least.
20:38:17 <boily> I like the vagueness of it.
20:38:21 <HackEgo> I knew that.
20:38:25 <olsner> `? olsner
20:38:29 <HackEgo> olsner seems to exist at least.
20:38:43 <olsner> somewhat underwhelmingly wise
20:39:10 <olsner> SORRY
20:39:10 <kmc> shachaf: no, i'm in .ie for the night and then back to .us tomorrow afternoon
20:41:55 <Sgeo> I want aerogel now
20:42:22 <Sgeo> Theromos with aerogel insulation would be neat >.>
20:42:34 <Sgeo> *Thermos
20:42:51 <kmc> how hard is it to sustain a comparably insulating partial vacuum?
20:47:13 <Sgeo> Aerogel may also be more fun to play with >.>
20:51:02 <Phantom_Hoover> kmc, uh, what's standard Thermos flask vacuum?
20:51:46 <kmc> no idea
20:51:53 <kmc> just seems like it should be cheaper than aerogel >_<
20:54:07 -!- MoALTz has quit (Ping timeout: 240 seconds).
20:54:09 <kmc> someone on the internet claims that thermal conductivity does not decrease much with decreased gas pressure o.O
20:54:35 <kmc> http://www.eng-tips.com/viewthread.cfm?qid=210603
20:56:14 <Sgeo> Hmm
20:56:15 <Sgeo> http://www.shivershield.com/
20:56:23 <Sgeo> Clothing made with aerogel for insulation
20:57:14 <Sgeo> ...it is very expensive.
20:59:39 <Phantom_Hoover> kmc, hmm, that does say that convection is the reason partial vacuums insulate.
21:00:14 <kmc> makes sense
21:02:03 * Sgeo wonders if clothing with vacuum insulation could ever make sense
21:02:17 <Phantom_Hoover> Uh.
21:02:33 <Phantom_Hoover> The concept of a flexible vacuum chamber is... impractical.
21:07:07 <Sgeo> http://www.youtube.com/watch?v=9zocS3sxi0Q
21:12:50 <morel> i just implemented the lambda-calculus with bruijn-indexes in haskell =)
21:20:34 -!- soundnfury has quit (Ping timeout: 256 seconds).
21:22:17 * kmc drops his pants
21:23:08 <oerjan> `sanetemp -310
21:23:11 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sanetemp: not found
21:23:13 <oerjan> ion: O KAY
21:23:16 <oerjan> wat
21:23:22 <oerjan> !sanetemp -310
21:23:23 <EgoBot> dc: stack empty \ 154.4
21:23:28 <oerjan> argh
21:23:51 <oerjan> `frink -310 F -> C
21:24:03 <HackEgo> Error
21:24:27 <oerjan> bloody frink and its weird way of doing temperature
21:24:36 <oerjan> `frink -310 Fahrenheit -> Celsius
21:24:37 <ion> `frink -310 F*volt -> C
21:24:49 <HackEgo> Warning: undefined symbol "Fahrenheit". \ Warning: undefined symbol "Fahrenheit". \ Error
21:24:53 * oerjan swats ion -----###
21:25:04 <HackEgo> ​-310
21:25:16 <oerjan> > (-310-32)*5/9 -- bah
21:25:18 <lambdabot> -190.0
21:25:28 -!- elliott has joined.
21:25:31 <elliott> coppro: You work on clang, right?
21:25:42 <coppro> elliott: ish
21:25:55 <oerjan> !sanetemp 310~
21:25:56 <EgoBot> dc: stack empty \ 154.4
21:26:03 <elliott> coppro: How's its C++11 support?
21:26:05 <oerjan> that isn't it either :(
21:26:08 <coppro> elliott: excellent
21:26:09 <elliott> Oh, http://clang.llvm.org/cxx_status.html.
21:26:22 <coppro> the attributes thing is a lie
21:26:24 <elliott> OK, that does look pretty good.
21:26:29 <coppro> the rest is right
21:26:31 <oerjan> !show sanetemp
21:26:31 <EgoBot> sh dc -e "1k?32-5*9/p"
21:26:38 <coppro> attributes are supported except for a few corner cases
21:26:48 <elliott> "Patches are needed to make libstdc++-4.4 and libstdc++-4.7 work with Clang in C++11 mode."
21:26:53 <elliott> This sounds bad. Do I need to care about this?
21:26:56 <elliott> Maybe I'll check what version I have.
21:27:06 <elliott> I have v6, apparently! Good.
21:27:09 <oerjan> how does one give a negative number in dc anyway
21:27:15 <elliott> Oh, wait, that's the soname.
21:27:45 <ion> oerjan: _
21:27:53 <oerjan> !sanetemp _310
21:27:54 <EgoBot> ​-190.0
21:28:15 <oerjan> yay! now i just have to actually remember that.
21:28:39 <coppro> elliott: get libc++ obv
21:28:52 <elliott> coppro: That's a little more work than I can be bothered with.
21:29:40 <coppro> elliott: the net result is clang is the best compiler ;)
21:32:01 -!- aloril has quit (Ping timeout: 244 seconds).
21:37:29 <elliott> coppro: help. http://sprunge.us/OMAB
21:39:00 <coppro> elliott: that's libstdc++ 4.7
21:39:15 <coppro> those errors aren't caused by that though
21:39:24 <coppro> (okay that's actually 4.7.1; I don't know if they fixed the bug)
21:39:36 <coppro> elliott: link against libstdc++
21:39:42 <coppro> elliott: did you use clang++
21:39:45 <elliott> oh
21:39:49 <elliott> i was using clang rather than clang++
21:39:50 <elliott> ha ha woops
21:40:00 <elliott> all i remembered is that clang was fancy and autodetected .cc file extensions
21:40:02 <elliott> are you meant to use clang++ instead
21:40:32 <coppro> clang will autodetect into C++ mode, but won't add corresponding flags like -lstdc++
21:40:39 <coppro> clang++ will
21:40:43 <coppro> possibly this is a bug
21:41:34 <elliott> coppro: consider it reported
21:41:35 <elliott> (to you)
21:41:54 <coppro> yeah
21:42:04 <coppro> elliott: are you compiling to a .o file?
21:42:09 <coppro> or directly to binary?
21:42:32 <elliott> clang build/abl-show.o build/abyss.o build/acr.o build/beam.o build/chardump.o build/cloud.o build/command.o build/console.o build/debug.o build/delay.o build/decks.o build/describe.o build/direct.o build/dungeon.o build/effects.o build/fight.o build/files.o build/globals.o build/hiscores.o build/initfile.o build/insult.o build/invent.o build/it_use2.o build/it_use3.o build/item_use.o build/itemname.o build/itemprop.o build/items.o build/lev-pand
21:42:32 <elliott> .o build/libutil.o build/macro.o build/maps.o build/menu.o build/message.o build/misc.o build/monplace.o build/mon-pick.o build/monstuff.o build/monspeak.o build/mon-util.o build/mstuff2.o build/mutation.o build/newgame.o build/ouch.o build/output.o build/overmap.o build/player.o build/randart.o build/religion.o build/skills2.o build/spells1.o build/spells2.o build/spells3.o build/spells4.o build/spl-book.o build/spl-cast.o build/spl-util.o build
21:42:33 <elliott> /stash.o build/stuff.o build/tags.o build/transfor.o build/travel.o build/view.o build/Kills.o build/mt19937ar.o -lncurses -o build/crawl-anc
21:42:36 <elliott> that's the exact command
21:42:40 <elliott> so yes, linking a binary
21:42:48 <elliott> from a bunch of C++ objects
21:42:49 <coppro> it can't autodetect source language of object files
21:42:51 <elliott> right
21:42:57 <elliott> I assumed not, but you said it might be a bug
21:43:01 <elliott> so I thought maybe there is some fanciness I was missing
21:43:07 <coppro> well clang foo.cpp should probably work right imo
21:43:37 <zzo38> Can we make a card game based on chess boxing?
21:43:49 <elliott> coppro: are you sure it can't detect whether an object file is C++?
21:43:50 <quintopia> zzo38: only you can
21:43:51 <elliott> hmm
21:44:07 <oerjan> i think zzo38 is precisely the right person for that
21:44:08 <coppro> elliott: not really. clang uses system ld iirc
21:44:15 -!- aloril has joined.
21:44:17 <coppro> elliott: ld perhaps could be inspecting for definitions of mangled names
21:44:32 <coppro> but any such thing would be heuristic
21:45:20 <zzo38> Someone who knew how to play Xiangqi once told me that she tried to learn chess but couldn't because it was complicated.
21:45:34 <kmc> you could just put something in the object file which says what the source language was
21:45:47 <kmc> it would not be hard in principle, but i don't know of any such thing
21:46:05 <kmc> object files already have all kinds of non-loadable informative sections
21:46:20 <coppro> kmc: but the clang driver would have to inspect it
21:46:25 <coppro> clang does not know how to read object files
21:46:41 <kmc> with gcc the object files can actually contain intermediate representation code
21:46:50 <kmc> for eventual link-time optimization and codegen
21:46:51 <kmc> coppro: yeah
21:46:56 <zzo38> I think clang even supports most of GNU89
21:47:06 <coppro> zzo38: it does
21:47:31 <kmc> "Cambridge police: Man huffs screen cleaner, resists arrest"
21:48:12 <kmc> so proud of my town
21:48:37 <coppro> kmc: which country?
21:48:47 <kmc> cambridge massachussetts USA
21:49:17 <coppro> I know all the cambridges that matter
21:49:23 <coppro> and there's no more than one per country
21:50:45 <kmc> also "Woman arrested for flashing breasts at passersby"
21:50:48 <kmc> just down the street
21:52:03 <kmc> Cambridge, Ontario has 126,000 people
21:52:27 <kmc> and is the home of a bunch of famous hockey players i've never heard of
21:53:08 <kmc> there's a town of Cambridge *and* a village of Cambridge in New York State
21:53:11 <kmc> they partially intersect
21:55:55 -!- david_werecat has joined.
21:56:23 <FreeFull> There are 3845 Cambridges in England
21:56:49 <FreeFull> They are all in the same place though
21:57:34 -!- Phantom_Hoover has left ("Leaving").
21:58:02 <kmc> amazing
22:05:14 <elliott> coppro: does nesting std::arrays do what i expect
22:05:20 <oerjan> <kmc> "Cambridge police: Man huffs screen cleaner, resists arrest" <-- sheesh, the poor guy obviously was just trying to clean his nose!
22:05:38 <coppro> elliott: think so
22:05:50 <elliott> yay
22:06:07 -!- sirdancealot7 has quit (Read error: Connection reset by peer).
22:08:59 <elliott> does anyone know anything about mingw
22:09:10 <FreeFull> I do
22:09:11 <FreeFull> Why
22:10:03 <elliott> is it up-to-date enough gcc-wise for c++11? is, uh, whatever C++ runtime library it uses? (just Windows'? I forget how it works.)
22:11:20 <FreeFull> Hmm, I don't know that, let me test
22:11:59 <elliott> specifically I'm worried things like std::array and so on won't work
22:12:08 <elliott> because Windows
22:12:11 <FreeFull> i486-mingw32-g++ (GCC) 4.7.0
22:12:17 <FreeFull> That should be up-to-date enough
22:12:22 <elliott> ok, so the gcc is definitely up-to-date enough
22:12:38 <FreeFull> My gcc is 4.7.1 though
22:12:43 <FreeFull> So mingw isn't the latest
22:12:44 <elliott> it still uses Windows runtime libraries though, right?
22:12:49 <elliott> i guess with C++ it's weird because so much is defined in header files
22:12:49 <FreeFull> But almost the latest
22:16:54 <zzo38> oerjan: Perhaps the police should tell him if that is not a good way to clean his nose.
22:18:39 <FreeFull> elliott: Windows headers only declare the Windows stuff, not the rest
22:19:31 <elliott> Right. But Windows still has a libc/libstdc++, doesn't it?
22:19:36 <elliott> Or maybe MinGW supplies that. Windows is confusing. :/
22:23:55 <Sgeo> Oh god why am I looking at Smalltalk I hate single-dispatch
22:23:58 <oerjan> zzo38: well they don't have to be so impolite about it!
22:24:07 <Sgeo> And I also hate cultures of monkey-patching
22:24:09 <zzo38> oerjan: Yes I agree
22:24:12 <Sgeo> So why am I looking at it
22:24:21 <zzo38> They shouldn't have to be so impolite about it
22:25:01 <kmc> 'Bradbury reportedly exhaled and then yelled, letting out “a thunderous laugh.” Officers identified themselves and told him he was under arrest, at which point, Bradbury reportedly said, “Ohh, shit,” and laughed again.'
22:25:38 <kmc> then he tried to punch the cops
22:25:45 * oerjan beckons Sgeo with some multiparameter type classes
22:26:10 <oerjan> they're functional _and_ dependable!
22:26:52 <kmc> c.c
22:27:04 <lexande> kmc: he was just looking for a free place to stay
22:27:09 <lexande> the rent is too damn high, etc
22:27:20 <kmc> it is
22:28:24 <Sgeo> oerjan, and the only language I know of with them is not generally considered a language with a dynamic environment and a nice debugger and IDE
22:29:01 <oerjan> Sgeo: you want a dynamic environment but _not_ monkey-patching? how inconsistent!
22:29:46 <Sgeo> Is Common Lisp not a good example?
22:29:49 <oerjan> i think common lisp has multiple dispatch + the rest though
22:30:02 <Sgeo> Dynamic, no monkey-patching that I know of
22:30:13 <oerjan> well you go right ahead
22:34:44 -!- boily has quit (Quit: Poulet!).
22:34:49 <Sgeo> I'm trying to remember why I recently preferred Tcl to Lisp
22:35:25 <oerjan> an evil circle, surely
22:36:00 <Sgeo> "More importantly, I can read code written by others and understand what they meant relatively easily. "
22:36:18 <Sgeo> Really? Seems like Lisp is a good language for deliberate obfuscation
22:36:30 <Sgeo> Or... I would think so
22:37:16 <Sgeo> I think one thing that scared me away was I wasn't sure how to do file stuff
22:38:03 <FreeFull> Lisp has a lot of ()s
22:38:15 <Sgeo> Common Lisp doesn't have coroutines. Tcl 8.6 will have coroutines.
22:38:28 <FreeFull> I prefer uncommon lisp
22:40:42 <Sgeo> If the parens is what's bothering me about Lisp, then that's sad, it shouldn't be
22:40:49 <Sgeo> I think the whole emacs thing does bother me though
22:42:31 <FreeFull> I do prefer vim
22:42:41 <Sgeo> http://www.wuwei.name/render-update-demo
22:42:49 <Sgeo> The factorial thing is too much fun
22:45:09 <FreeFull> Factorial in Haskell: factorial 1 = 1; factorial n = n * factorial (n - 1)
22:45:44 <FreeFull> At least I think this would work
22:45:47 <Sgeo> FreeFull, not TCO
22:46:06 <Sgeo> Also, breaks on factorial 0
22:46:25 <FreeFull> Well, then add a case for factorial 0 at the beginning
22:49:11 <Sgeo> I think also, I appreciate Tcl's "Look at the provided AST or whatever and manipulate stuff at runtime" vs CL's "Do it at macroexpansion time"
22:49:51 <Sgeo> In Tcl, there's a clear visual distinction between giving a command a variable's name and giving it some variable's value.
22:50:03 <Sgeo> In CL, a macro can do whatever it pleases.
22:50:06 <oerjan> > scanl1(*)[1..]
22:50:08 <lambdabot> [1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,8...
22:50:17 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:50:18 <Sgeo> Although admittedly, it means Tcl is less flexible.
22:50:25 <Sgeo> But I'm not sure if that's really that major a concern.
22:50:30 <elliott> Sgeo: but you can do that with cl functions tho
22:50:38 <elliott> (if x 'y), define if appropriately
22:50:46 <elliott> only problem is scoping but I think you can manage that with a wrapper macro
22:51:01 <kmc> <FreeFull> Lisp has a lot of ()s
22:51:02 <kmc> woah
22:51:05 <kmc> i hadn't noticed
22:51:10 <kmc> thanks for pointing this out
22:51:16 <Sgeo> elliott, but typically for metaprogramming stuff, people don't write functions, they write macros
22:59:20 -!- epicmonkey has quit (Ping timeout: 244 seconds).
23:00:21 -!- Phantom_Hoover has joined.
23:01:09 <Sgeo> ...this page just called macros "less powerful" than something
23:01:37 <kmc> people have a tendency to define the word "power" in whatever way suits their agenda
23:01:58 <Sgeo> http://web.cs.wpi.edu/~jshutt/kernel.html
23:02:13 <kmc> oh, right
23:02:21 <kmc> not what i was expecting
23:02:28 <kmc> yes, operatives are nicer than macros
23:02:48 <kmc> i don't know about "more powerful" exactly
23:03:03 <kmc> you can use operatives to build everything else, in a way that doesn't work for macros
23:03:20 <kmc> read shutt's phd thesis or read my blog post here: http://mainisusuallyafunction.blogspot.ie/2012/04/scheme-without-special-forms.html
23:03:34 <elliott> i love kernel
23:03:37 <elliott> except for its symbol prefices
23:03:39 <elliott> i don't love those much
23:03:54 <kmc> or you know use blogspot.com or blogspot.whatevercountryyouhappentobein
23:04:00 <kmc> it matters not a damn
23:04:04 <kmc> elliott: yeah i know right
23:04:09 <Sgeo> How is main usually a function?
23:04:17 <kmc> Sgeo: it's a gcc warning
23:04:30 <Sgeo> Oh. But in Haskell main is usually not a function.
23:04:38 <elliott> kmc: don't you know you only code in haskell
23:04:38 <elliott> forever
23:04:45 <elliott> blogspot.ie is a very cool blogspot domain I think
23:04:47 <kmc> Sgeo: indeed
23:04:48 <elliott> how many people even realise .ie exists
23:05:14 <kmc> Sgeo: so you can take it as a statement about how unusual haskell is
23:05:33 <kmc> Sgeo: but my blog is not about haskell, anyway. you'll find bits of code in lots of languages
23:05:41 <kmc> the one i just linked is scheme
23:06:34 * Sgeo is reading
23:06:43 <oerjan> <kmc> it matters not a damn <-- I WANT CANONICAL URLS DAMMIT
23:07:26 <kmc> i think i've featured haskell, python, c, c++, scheme, bash, and Autoconf
23:07:53 <kmc> as well as x86 assembly (possibly 16-, 32-, and 64-bit)
23:08:06 -!- copumpkin has joined.
23:09:04 <kmc> cannon nickel
23:09:14 <oerjan> so in haskell main isn't a function, python, scheme and bash don't _need_ main and i dunno about Autoconf :P
23:10:12 <kmc> const int main[] = { 14776, 3942977280, 247 };
23:10:22 <oerjan> I THINK THAT'S A _USUALLY NOT_, MATE
23:10:45 <kmc> -_-
23:10:49 <lexande> kmc: that is a bad idea right?
23:11:02 <elliott> lexande: no it's the best idea
23:11:07 <elliott> ideally do it in all your prorgams forever
23:11:09 <elliott> *programs
23:11:22 <kmc> ass butts
23:11:40 <oerjan> `? kmc
23:11:43 <HackEgo> kmc? ¯\(°_o)/¯
23:12:05 <oerjan> `learn kmc is nice but we don't get his occasional bouts of Tourette's.
23:12:09 <HackEgo> I knew that.
23:12:39 <elliott> that is a bad entry
23:12:43 <elliott> you should feel bad, oerjan :'(
23:12:56 <Sgeo> this is usually a pointer?
23:13:20 <oerjan> ok i guess it's not fun making fun of people with tourette's
23:13:24 <Sgeo> Wanted to say "that is usually a pointer" but that makes no sense
23:13:29 <oerjan> `rm wisdom/kmc
23:13:33 <HackEgo> No output.
23:14:35 <elliott> sweet, i have the ability to make oerjan feel bad on demand
23:15:03 <kmc> Sgeo: only in C++ but not in visual basic or cobol
23:15:05 <kmc> herp derp
23:15:05 * Sgeo ponders similarities between operatives and Tcl commands
23:15:24 <oerjan> I LEAVE http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10835 AS EVIDENCE, HOWEVER
23:16:18 * Sgeo reads "Revised -1 Report on the Kernel Programming Language"
23:16:34 <oerjan> prevised
23:18:36 <kmc> i don't actually have tourette's btw
23:18:42 <Sgeo> elliott, I assume the $ prefix is a convention to distinguish operatives from applicatives?
23:18:44 <oerjan> O KAY
23:18:48 <Sgeo> elliott, what alternatives are there?
23:19:01 <elliott> you don't need an alternative because applicatives are a subset of operatives
23:19:05 <elliott> in fact I don't know why Kernel separates them at all
23:19:13 <kmc> i have some obsessive-compulsive tendencies and some tourettes-like tendencies but i think neither is strong enough to be a diagnosable condition
23:19:22 <kmc> elliott: so that you can write 'apply' more cleanly
23:19:33 <elliott> kmc: i find the low-level tangly definition more satisfying
23:19:36 <kmc> anyway i did it differently in my thing
23:19:36 <elliott> it looks purer
23:19:37 <kmc> yeah
23:19:44 <kmc> it's purer because the interpreter has fewer cases
23:19:47 <Sgeo> Applicatives may be a subset of operatives but mistaking an operative for an applicative could be bad
23:19:56 <kmc> my interpreter has three cases: variable, operative, and anything else
23:20:11 <kmc> anything else = evaluates to itself
23:20:17 <Sgeo> Erm, a non-applicative operative for an applicative
23:20:22 <kmc> sorry, that should be variable, application, and anything else
23:20:33 <oerjan> <elliott> sweet, i have the ability to make oerjan feel bad on demand <-- everyone has that ability, elliott. what's unusual is getting me to _act_ on it.
23:20:34 <kmc> an operative itself evaluates to itself
23:20:43 <kmc> but a combination like (operative arg1 arg2...) does not
23:21:26 <kmc> elliott: anyway even if applicatives are operatives, you might still want that convention to distinguish that subset of operatives from the rest
23:21:36 <kmc> it's an important subset because you can apply functional / equational reasoning to them
23:22:40 <kmc> but i decided it was ugly for my little thing
23:22:48 <kmc> and plus i wanted the names to match scheme
23:23:04 <kmc> or else the magic trick doesn't work
23:23:19 <kmc> "but still, where did the lighter fluid come from?"
23:24:41 * Sgeo will re-read kmc's blog post more thoroughly after reading this pdf
23:26:41 <elliott> kmc: well when I want equational reasoning I don't use a language like this
23:28:09 <Sgeo> Does Kernel have continuations? And if so, delimited or undelimited?
23:28:41 <kmc> Sgeo: shutt writes about those on his blog: http://fexpr.blogspot.ie/
23:28:57 <kmc> this went way the hell over my head
23:29:49 <kmc> elliott: in principle the idea of a language like kernel is that you can start with a very small core and build it up using libraries into something you'd actually want to use
23:29:49 <Sgeo> I can recite (well, paraphrase) Oleg's claims about delimited vs undelimited continuations but without comprehension
23:30:02 <kmc> which would presumably include equational reasoning
23:30:08 <kmc> at least of the weak sort
23:30:22 <kmc> where you want like (f 2) = (f (+ 1 1))
23:30:40 <kmc> f(2) = f(1+1) for you LOLPARENTHESES people
23:30:52 <Sgeo> kmc, there's something to be said for building a community around X idea or not, which is distinct from whether a language supports X
23:31:02 <elliott> <kmc> elliott: in principle the idea of a language like kernel is that you can start with a very small core and build it up using libraries into something you'd actually want to use
23:31:07 <kmc> in Kernel this is not necessarily true, and it depends on the value bound to f at runtime
23:31:07 <elliott> i don't really do equational reasoning in any lisp-like
23:31:14 <kmc> elliott: i don't believe you
23:31:20 <kmc> unless you don't use these languages at all
23:31:21 <elliott> well the thing is that I don't really use Lisp-likes
23:31:25 <Sgeo> Well, not distinct, but... you can imagine a library for Lisp to do mostly immutable programming, but that doesn't mean there's a community of people using it
23:31:26 <kmc> well ok then
23:31:27 <elliott> because I can't do equational reasoning with them :P
23:31:53 <elliott> but yes I think unrestricted macros are a bad idea in general
23:31:56 <elliott> but they are cute, at least
23:32:00 <elliott> and they make a very small language
23:32:17 <kmc> are you talking about macros or operatives?
23:32:29 <kmc> it's probably true for both, but you said "macros" and we were just talking about operatives
23:32:48 <Sgeo> Are kernel variables objects?
23:33:08 <kmc> the variable itself? no
23:33:20 <Sgeo> ...
23:33:21 <kmc> like scheme, you have environments which map names to values
23:33:38 <kmc> a "variable" is just a single slot in this mapping
23:33:56 <Sgeo> And these maps are first-class, I guess?
23:34:12 <kmc> i don't remember how it is in kernel
23:34:28 <kmc> in my language they are, because the interpreter exposes the fact that an environment is just a list of alists
23:34:44 <kmc> well right they need to be at least minimally first-class in kernel
23:35:17 <kmc> because vau binds the dynamic environment to a name
23:35:33 <Sgeo> "This abstract behavior need not cause actual
23:35:33 <Sgeo> implementations to rapidly exhaust their storage space, because without violating
23:35:33 <Sgeo> the required abstract behavior, they can reclaim the storage occupied by an object
23:35:33 <Sgeo> if they can prove that the object cannot possibly matter to any future computation."
23:35:43 <kmc> basically the caller's environment is made into an implicit function parameter
23:35:47 <Sgeo> Things that Tcl cannot do.
23:35:49 <kmc> s/function/operative/
23:37:44 <kmc> Sgeo: it's impossible to implement Tcl with garbage collection?
23:38:27 <Sgeo> It's impossible to claim that a value will never be used again
23:38:37 <Sgeo> Although I think there is some internal garbage collection
23:39:15 <Sgeo> It's really only a problem when a value represents some external resource
23:39:22 <kmc> why is it impossible
23:39:38 <Sgeo> kmc, everything is a string. Easy to build a string at any point
23:39:57 <kmc> i think you are confusing variables and values again
23:40:18 <kmc> in most dynamic languages you can read or write a variable by its string name
23:40:19 <Sgeo> If there's extra data associated with that string beyond what's in the string itself, having the string again won't help reconstruct whatever
23:40:30 <kmc> but if an object in memory no longer has any name whatsoever
23:40:32 <kmc> then it is unreachable
23:40:35 <zzo38> Can you design a computer hardware?
23:40:58 <Sgeo> The way OO systems in Tcl usually work is having the "object" be a string that refers to, say, a namespace
23:41:10 <Sgeo> Can't prove that the string won't ever be reconstructed...
23:41:47 <kmc> when i said "object" above i was not trying to bring OO into it
23:42:05 <kmc> i'm just talking about an allocated thing
23:42:06 * Sgeo was trying to use an example of when it's an issue
23:42:30 <kmc> anyway it sounds like that string is just the name of the namespace
23:42:35 <kmc> and so, the namespace is not dead
23:42:49 <kmc> because it's referenced by some environment
23:42:59 <kmc> this sounds exactly like scheme or python or whatever other dynamic language you like
23:43:22 <kmc> if i write "foo.x = 3" in a Python program, i can later do getattr(foo, "x")
23:43:28 <kmc> that's fine
23:43:36 <kmc> the 3 doesn't get garbage collected because it's reachable from foo
23:44:32 <elliott> kmc: if foo is a global thing that you store all your data in tho
23:44:36 <zzo38> What programming language can be used to design the computer hardware by specifying the transistors?
23:44:37 <elliott> as in if foo is everyObjectInTheSystemByName
23:44:42 <elliott> then that means you can never GC any object
23:44:59 <elliott> (object as in member of everyObjectInTheSystemByName, not as in datum)
23:45:28 <kmc> zzo38: SPICE
23:45:55 <kmc> yes, you cannot garbage collect things which have names
23:46:16 <kmc> GC is mainly interesting if you have mutation
23:46:16 <Sgeo> kmc, in Tcl, there's no way to have mutable data structures that don't have names
23:46:55 <kmc> x = f(x)
23:47:04 <kmc> the old value of x can be forgotton because it is no longer reachable
23:47:09 <kmc> it has been overwritten with the new value of x
23:47:28 <Sgeo> (You can have immutable data structures with no names)
23:47:33 <zzo38> SPICE can try to emulate it but I mean to make it in a real computer hardware.
23:49:30 <zzo38> I think SPICE is for analog electronics anyways.
23:49:38 <zzo38> But what if you want a digital computer?
23:52:03 <kmc> digital electronics are really analog electronics
23:52:25 <kmc> this way you can have a precise physically based model of the gate delays in your computer
23:52:31 <kmc> of course it will be completely impractical to simulate
23:52:47 <kmc> but you asked for specifying transistors, not gates or other abstract HDL elements
23:55:14 <kmc> 6.004 uses an analog transistor simulator for early labs
23:55:18 <kmc> with a SPICE-like language
23:55:29 <kmc> and then in later labs you use the same language in a digital simulator
23:55:47 <kmc> where the primitives are things like "4-input NAND gate" or "2-way multiplexer"
23:56:22 <kmc> but it still models gate delay, using specified output strength and input impedence for each gate
23:56:50 <kmc> and you try to change the logic around so your processor can support a higher clock speed in the simulator
23:57:15 <kmc> like inserting buffers after gates which need to drive a lot of inputs
23:57:31 <kmc> and switching to inverting gates (nand, nor) rather than and/or
23:57:36 <kmc> because apparently those are faster in cmos
23:57:53 <kmc> and changing the topology of the adder
←2012-08-15 2012-08-16 2012-08-17→ ↑2012 ↑all