←2013-02-01 2013-02-02 2013-02-03→ ↑2013 ↑all
00:03:51 <kmc> http://upload.wikimedia.org/wikipedia/commons/8/8a/Birgus_latro_%28Bora-Bora%29.jpg
00:05:03 <Bike> ooh, it's like a beefier spider crab
00:07:34 <kmc> coconut crab
00:07:35 <kmc> huge
00:08:06 -!- asiekierka has quit (Excess Flood).
00:08:18 <Bike> http://en.wikipedia.org/wiki/File:Japanese_spider_crab.jpg A Good Species
00:11:18 <Phantom_Hoover> uh what about http://en.wikipedia.org/wiki/File:Giant_isopod.jpg
00:12:02 <Bike> good isopods
00:12:14 -!- asiekierka has joined.
00:12:39 <Phantom_Hoover> isopods are the best
00:13:09 <oerjan> invertible pods
00:13:21 <Phantom_Hoover> especially slaters
00:13:31 <Phantom_Hoover> don't have lungs, but they're not going to let that stop them
00:13:46 -!- Arc_Koen has left.
00:14:38 -!- epicmonkey has quit (Ping timeout: 255 seconds).
00:18:31 <ion> isopodism
00:19:29 <Phantom_Hoover> sacculina is just weird
00:25:07 <kmc> Hulu wants me to watch Coronation Street. "Don't miss all the drama rife with Britishisms" it says
00:26:11 <Phantom_Hoover> you should watch it!
00:26:45 <oerjan> @hoogle lexeme
00:26:45 <lambdabot> Text.Read.Lex data Lexeme
00:26:45 <lambdabot> Text.Read data Lexeme
00:26:45 <lambdabot> Text.Parsec.Token lexeme :: GenTokenParser s u m -> forall a. ParsecT s u m a -> ParsecT s u m a
00:27:29 -!- ogrom has quit (Quit: Left).
00:28:49 <elliott> yes kmc
00:28:51 <elliott> watch coronation street
00:35:17 <kmc> why
00:35:41 <elliott> um
00:35:44 <elliott> watch first ask questions later
00:42:33 <kmc> i don't know what a british soap opera is like
00:42:36 <Vorpal> hm, this is interesting http://valerieaurora.org/review/hash.html (looked around the site where synthesis HTML is hosted)
00:42:40 <kmc> american soap operas are... dumb
00:42:46 <Vorpal> elliott, you might be interested in that
00:43:01 <Vorpal> elliott, it discusses using hash as a unique key, like git does
00:43:19 <Vorpal> pretty sure the paper predates git though
00:46:15 <ais523> using a hash as a unique key is pretty obvious, really
00:46:18 <ais523> it's how hash tables work
00:46:57 <Vorpal> ais523, except you then compare the value in the bucket to make sure it actually is the key you wanted
00:47:05 <ais523> yes
00:47:08 <Vorpal> ais523, with git or venti you don't
00:47:12 <ais523> if you had an infinitely large hash table this wouldn't be a problem
00:47:15 <Vorpal> you trust the sha1 is unique
00:47:25 <Vorpal> if it isn't. Well shit
00:47:26 <ais523> such as a filesystem
00:47:51 <Vorpal> ais523, the sha1 is not unique though, due to the pidgeon hole principle.
00:48:50 <ais523> yeah, but it's unique in the sense of "if there's a collision, the collision itself will be more valuable than whatever it is you're working on"
00:49:00 <Vorpal> ais523, hah
00:49:25 <kmc> also in the sense of 'random bit flip error in hardware is vastly more likely'
00:49:30 <kmc> but the paper says maybe not?
00:49:30 <Vorpal> ais523, but that is not the point. I do think http://valerieaurora.org/review/hash.html makes some interesting points.
00:49:33 <kmc> but i didn't read it
00:49:40 <kmc> what are the interesting points
00:50:32 <Vorpal> kmc, yes that is true, but that is over a random data. The paper points out that most data stored in a file system is not random, and thus those calculations can not necessarily be used straight away.
00:52:21 <Vorpal> kmc, for example, consider shb1(x) = { if x > 0 : sha1(x); if x = 0 : sha(1) }. That is has almost the same properties as sha1() here, almost the same risk of collision given two random inputs, but would be vastly less useful than sha1 for actual practical non-random data
00:53:34 <kmc> mm
00:53:39 <kmc> because it collides 0 and 1
00:53:45 <Vorpal> kmc, of course, sha1 doesn't do anything as stupid as that, but the point is that "chance of two random inputs colliding" does not necessarily equal "chance of two file system blocks/commits colliding"
00:54:01 <Vorpal> because the latter is highly non-random
00:54:04 <kmc> sure
00:54:17 <kmc> i mean, i have md5 collisions on my disk :)
00:54:25 <kmc> but everyone agrees this means md5 is broken
00:54:31 <Vorpal> kmc, ah that nicely brings us to another point
00:55:26 <Vorpal> kmc, sha1 is cryptographically secure (or was at the point of writing that paper anyway, in 2003). md5 was suspected of being insecure, but wasn't yet really broken
00:56:31 <Vorpal> kmc, who knows if it will be trivial to find collisions for sha1 is 10 years time? You might still have your git repo around then. While for crypo applications, it doesn't matter if a key created today isn't secure any more then. It is probably no longer in use by then anyway
00:57:06 <kmc> yeah, it's very bad that Git doesn't have any hash upgrade path
00:57:37 <Vorpal> and even if it had, what would you do if someone snuck in a collision before you had time to fix it. You would be pretty much screwed
00:58:15 <Vorpal> kmc, the same applies to venti, hg (I assume?, I don't know if hg is as stupid as git here) and so on
00:58:22 <kmc> if you are relying on git for cryptographic assurances, yes
00:59:00 <Vorpal> kmc, if you are relying on git for just being able to identify commits uniquely
00:59:00 <kmc> obviously in many projects using git, if someone can 'sneak in' malicious commits then you are in trouble anyway
00:59:16 <kmc> Vorpal: if you are relying on git for being able to identify commits uniquely in an adversarial model
00:59:24 <Vorpal> well yeah
00:59:56 <kmc> this doesn't mean git is 'stupid'
01:00:00 <Bike> is there an adversarial model of revision control
01:00:01 <elliott> kmc: have yo uwatched coronation street yet
01:00:09 <kmc> it means git fails to deliver a particular security guarantee that VCSes often don't deliver
01:00:25 <Vorpal> kmc, what about rsync?
01:00:25 <kmc> it fails in proportion to how much SHA-1 fails
01:00:45 <kmc> people do talk about git as if it has this guarantee, and it sort of does, as long as SHA-1 is okay
01:00:47 <Vorpal> kmc, can you know your two sets of files are actually the same?
01:01:10 <kmc> but yeah, I would not rely on a Git hash to take the place of code signing against a determined attacker who may have broken a world cryptographic hash standard
01:01:13 <kmc> big fuckin deal
01:01:21 <kmc> calling Git "stupid" because of that is ridiculous hyperbole
01:01:36 <Vorpal> kmc, in the long run, it will most likely become, if not trivial, at least achievable, to generate SHA-1. The technological development is pretty rapid.
01:01:42 <kmc> yes
01:01:50 <elliott> git is stupid for unrelated reasons
01:01:53 <kmc> and then we should upgrade to a new version of Git that uses a better hash
01:01:56 <Vorpal> elliott, well yes, as well
01:02:17 <Vorpal> kmc, what about deduplicating file systems like venti though
01:02:18 <kmc> if I sign my code with RSA then in the long run someone will break RSA too
01:02:20 <kmc> what's your point
01:03:39 <Bike> can we take this long term and assert that privacy as a concept will only even exist in like one and a half centuries max, and afterwards we'll all be flinging unsigned poo at each other
01:04:23 <Vorpal> kmc, my point is that file systems and version control systems, especially file systems, are in for the long run. In crypto applications you are usually not
01:05:09 <Vorpal> Bike, you believe civilisation will collapse that soon?
01:05:24 <Bike> "yes"
01:05:28 <Vorpal> fair enough
01:06:03 <Bike> i guess i could read that three np worlds paper again and then pretend to have a thought-out opinion
01:06:24 <Vorpal> Bike, oh?
01:07:44 <Bike> Impagliazzo's
01:08:02 <Bike> http://cseweb.ucsd.edu/users/russell/average.ps
01:10:17 <kmc> Vorpal: not sure re: crypto applications not being for the long run
01:10:34 <kmc> if da police image my hard drive, I might care that they can decrypt it 15 years later
01:10:44 <kmc> likewise with any incriminating emails I may have sent
01:10:54 <kmc> SSH sessions that may have been recorded
01:10:55 <kmc> etc
01:11:01 <Vorpal> kmc, well okay it depends, but the most common applications of message signing and such where you use hashes are not relevant 15 years later
01:11:12 <kmc> i don't agree
01:11:38 <oerjan> Bike: no no, we will all merge into a highly technological group mind etc.; admittedly still no privacy.
01:11:41 <Vorpal> kmc, and a symmetric block cipher such as AES do not involve hashes generally
01:11:46 <Bike> I wonder if a statute of limitations extension argument from crypto will ever be made.
01:11:51 <Bike> oerjan: you're blowing my mind man.
01:11:51 <kmc> if anything I think the VCS is in a better position
01:12:12 <kmc> if you think nobody has broken SHA-1 yet, but they will soon, you can re-hash all your Git objects with SHA-3 and then refuse to deal with SHA-1 going forward
01:12:34 <kmc> whereas you can't go back in time and make the police's image of your encrypted hard drive no longer valid
01:13:27 <Vorpal> kmc, true, but that is not a hash. That is a different situation. And I meant hashes in cryptography in this context
01:13:27 <kmc> and i don't know what your point is re: AES not involving hashes
01:13:32 <kmc> hashes aren't the only things that can be broken
01:13:38 <kmc> ok
01:13:49 <Vorpal> kmc, quite so. But the discussion was about hashesh
01:13:51 <Vorpal> hashes*
01:16:22 <Vorpal> kmc, my point was that, for the most part, in crypographic contexts, it isn't interesting if, for example, the SHA-1 checksum for the SSL cert is broken 10 years down the line.
01:17:58 <Vorpal> hashes in cryptography is generally for signing stuff, so you can verify it. Apart from using it for document signing, I don't see much of an use many years down the line
01:20:17 <kmc> and nobody is going to care in 15 years if a given document is authentic?
01:20:17 <Vorpal> good night
01:20:28 <Vorpal> kmc, I said, apart from document signing
01:20:31 <kmc> oh
01:20:35 <Vorpal> yes I do realise that is a problem
01:21:43 -!- carado has quit (Ping timeout: 246 seconds).
01:21:45 <Vorpal> kmc, but for the grand majority of the applications, it is not such a major issue.
01:21:54 <Vorpal> and now I need to sleep, pretty late over here
01:24:42 <kmc> 'night
01:26:16 -!- monqy has joined.
01:27:49 <zzo38> I can understand how (CoYoneda IORef) makes a read-only reference. You can see what it makes when you use IORef with other Kan extensions
01:31:12 <shachaf> zzo38: What does it make?
01:36:21 <zzo38> I try to think of it.
01:53:53 -!- sirdancealot7 has quit (Ping timeout: 256 seconds).
02:02:51 <zzo38> Do you know what I think is the benefit of chiromancy (palmistry)?
02:06:35 <Bike> Picking up chicks?
02:06:56 <zzo38> No!
02:09:42 <TwilightSpockle> Picking up pigeons?
02:10:08 <Bike> Ooh, can I change my guess?
02:10:30 <zzo38> Yes, you can change your guess.
02:10:46 <zzo38> Picking up pigeons is also incorrect.
02:11:45 <Bike> Aww.
02:11:50 <Bike> Ok, I give up, what is the benefit?
02:12:14 <zzo38> To name all the lines on your hand and shape of your hand.
02:12:31 <zzo38> (Even if they don't have anything to do with what they are named after)
02:12:45 <Bike> I guess it could be kind of useful for external anatomy...
02:23:19 <kmc> Speicherzugriffsfehler
02:23:38 <kmc> Ошибка сегментирования
02:31:49 <kmc> Szegmentálási hiba
02:34:27 <Bike> I'd probably still be programming lots of C if that was the error
02:34:41 <kmc> which one
02:34:53 <kmc> i'd probably still be programming lots of C
02:35:04 <kmc> if by "programming" you mean "smoking" and by "C" you mean "crack"
02:35:51 <Bike> honestly all of them
02:35:59 <Bike> polish is my wife in the celestial plane
02:36:08 <kmc> that's hungarian
02:36:15 <Bike> FUCK
02:36:25 <kmc> polish is:
02:36:25 <kmc> Naruszenie ochrony pamięci
02:36:34 <Bike> Ok that's good too.
02:36:46 <Bike> What the hell is "naruszenie"? None of these things look very cognate.
02:36:58 <kmc> surprising that hu has the en cognate in this case
02:38:11 <kmc> means "violation" apparently
02:38:42 <Bike> nice
02:39:06 <oerjan> somehow i have a feeling of seeing that word before
02:39:11 <kmc> (naruszenie does i mean)
02:39:16 <oerjan> maybe i was violated by a pole once
02:40:02 <Bike> Why do I see "sz" and guess polish. that's like, the hungarian giveaway
02:40:25 <oerjan> because it's _also_ the polish giveaway.
02:40:46 <TwilightSpockle> `addquote <oerjan> maybe i was violated by a pole once
02:40:51 <HackEgo> 949) <oerjan> maybe i was violated by a pole once
02:41:00 <Bike> oh i thought the polish giveaway was things like "zenie"
02:41:06 <oerjan> the á's are more specific to hungarian i think
02:41:10 <Bike> (wow do i have a shallow view of languages or what)
02:41:18 <TwilightSpockle> I thought the Polish giveaway was rz.
02:41:23 <kmc> the best hungarian giveaway is ő or ű ;P
02:41:43 <kmc> polish is just english with about 5 extra consonants in each word
02:41:44 <oerjan> Bike: polish and hungarian both use s and sz. in opposite ways. hth.
02:41:45 <kmc> let's be realistic
02:41:59 <Bike> can we just have every language use its own orthography
02:42:29 <oerjan> Bike: although perhaps the best way to put it: hungarian uses the sz for something that's obviously a foreign borrowed "s"
02:42:41 <Bike> what really
02:42:43 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:42:45 <Bike> it's not only in loanwords is it
02:42:48 <Bike> have i been so wrong
02:42:49 <oerjan> no
02:42:56 <kmc> no translation in sq_AL.UTF-8 :(
02:43:02 <Bike> is my whole life a lie
02:43:03 <oerjan> but that's how you can see Szegmentálási is hungarian
02:43:12 <Bike> kmc: scots? actually no i have no idea
02:43:31 <Bike> is there a locale for klingon
02:43:31 <kmc> albanian aka shqipe
02:43:49 <Bike> wow i know nothing about albanian. is it IE at least?
02:43:53 <Bike> yes it is.
02:44:00 <kmc> is it internet explorer?
02:44:00 <TwilightSpockle> They speak a whole other language in Albany? *takes a bow*
02:44:22 <Bike> oh wow it's an isolate within IE
02:44:32 <Bike> mountains have some fuckin crazy languages huh
02:45:00 <oerjan> Száz is pretty native
02:45:18 <oerjan> although "Originally borrowed from an Indo-Iranian language"
02:46:34 <kmc> also most of the country lost their savings in ponzi schemes in 1997
02:46:45 <kmc> resulting in the overthrow of the government
02:46:55 <Bike> which, albania?
02:46:57 <kmc> yes
02:47:26 <Bike> the thing i mostly know about albania is the bunkers
02:47:32 <Bike> and also that "hoxha" is a pretty great name
02:48:24 <Bike> "an average of 24 bunkers for every square kilometre of the country"
02:48:41 <kmc> albanian sex bunkers
02:49:29 <Bike> i've heard they are pretty popular for losing your virginity in
02:49:51 <kmc> the other thing about albania is that every car is a 90s mercedes which is probably stolen
02:50:25 <Bike> these are some good things
02:51:22 <kmc> "Visit Albania, your car is already here!"
02:52:00 <kmc> i guess this same joke is made about Poland and Montenegro
02:52:06 <oerjan> that fits in with the common claim that albanian has more highways than norway
02:53:16 <ais523> oerjan: that's a common claim?
02:53:26 <ais523> I guess it's more likely to be made if you live in albania or norway
02:53:55 <oerjan> you don't say
02:54:13 <oerjan> or maybe it's that albania is building more.
02:54:45 <oerjan> well it's a common claim whenever we complain about norwegian infrastructure investments
02:55:08 <kmc> albania also has more derelict concrete pyramids than norway
02:55:12 <ais523> yeah, but why albania?
02:56:59 <oerjan> because they're the poorest country in europe and are _still_ beating us
02:58:27 <kmc> i think moldova is poorer
02:59:16 <oerjan> hm supposedly they'll soon at twice as much as norway
02:59:31 <oerjan> *have twice
02:59:57 <ais523> norway has more hostile terrain for road-building than albania, I'd imagine
03:01:53 <oerjan> that _may_ be true, but the main issue is probably crippling norwegian bureaucracy for infrastructure projects
03:02:36 <oerjan> it takes decades to decide to build something
03:03:16 <Bike> hearing about european politics makes me think american politics should be more interesting. european politics and reading giger's suggestion to build a system of subways in the shape of a pentagram topped by pyramid arcologies
03:05:15 <oerjan> and what _is_ built is frequently decided by minor interests getting political favors
03:05:29 <kmc> Bike: and cthulu lives inside it?
03:06:10 <Bike> kmc: no, but poor people are set to work moving sludge around and it mutates them
03:06:12 <oerjan> like, any politician coming from a remote location needs to get a road built there
03:06:27 <Bike> he wrote this whole multi-page explanation and illustrated it, and then sent it off to the swiss prime minister
03:06:55 <oerjan> and a bridge/tunnel, if it is an island.
03:06:57 <Bike> or whatever switzerland has
03:07:42 * oerjan needs to get his monologues more world domination related
03:07:54 <Bike> "federal chancellor". dull.
03:08:06 <Bike> fckin democracies.
03:08:38 <oerjan> i learned recently that switzerland doesn't have a general, except in emergencies
03:09:07 <oerjan> and parliament has to declare it
03:10:10 -!- copumpkin has quit (Remote host closed the connection).
03:10:30 -!- copumpkin has joined.
03:10:57 <oerjan> Bike: hey remember, hitler started as chancellor.
03:11:31 <Bike> yes and weimar germany was pretty boring as a democracy
03:12:41 <kmc> it had a lot of electoral violence
03:12:43 <kmc> that's un-boring
03:13:32 -!- TwilightSpockle has changed nick to Applejacques.
03:13:37 <kmc> i think Westminster system is pretty interesting
03:13:48 <kmc> given how the executive branch has an axe hanging over their heads at all times
03:13:59 <kmc> maybe this is colored by me having just watched all of The Thick of It
03:14:02 <Bike> isn't it traditionally a sword
03:14:07 <kmc> maybe
03:36:03 <zzo38> I thought Hitler started as a Catholic.
03:36:29 <Bike> catholicism is more of a parafederation, wouldn't you say
03:37:51 <zzo38> I don't know what a "parafederation" is.
03:39:44 <copumpkin> hitler was literally worse than hitler
03:39:47 <kmc> more of an orthofederation or a metafederation
03:42:04 <Bike> I don't know much about Catholic organization but it seems somewhat federalist (dioceses, etc.) but it's spread throughout nations instead of beig its own. Maybe Orthodoxy would be better for that though.
03:49:46 -!- evincar has joined.
04:02:04 -!- Nisstyre-laptop has joined.
04:06:02 <zzo38> With a program compiled with GCC, can you check for resources on Windows, and extra ELF sections or whatever on Linux, and similar things on other operating systems?
04:06:36 <Bike> like readelf?
04:07:51 -!- oerjan has quit (Quit: leaving).
04:08:18 <zzo38> I also want to load the resource or whatever as a read-only SQLite database if it exists. The program can still work, and start up differently, with the lack of that resource, though.
04:10:54 <kmc> zzo38: with Linux / glibc you can use dlopen(NULL) to get a handle to already loaded stuff, which can be passed to dlsym()
04:11:34 <kmc> so you could just ensure that your extra ELF section is loadable and has a symbol pointing at it
04:12:22 <zzo38> Is it possible to add a ELF section to the program which is already compiled?
04:12:43 <zzo38> I know that you can with Windows resources.
04:13:59 -!- monqy has quit (Quit: hello).
04:14:02 <kmc> you can also use dl_iterate_phdr() to iterate over all loaded ELF objects, and do whatever other parsing you like
04:14:04 <zzo38> And, do you know if it is possible to open such sections as read-only SQLite database?
04:14:40 <kmc> zzo38: you can add sections with objcopy --add-section
04:15:04 <kmc> and as for SQLite you would have to see if the SQLite library supports opening an arbitrary piece of memory as a database
04:15:56 <Bike> huh, so can you like, use objcopy to turn an elf into a mach-o?
04:16:26 <kmc> theoretically
04:17:01 <Bike> what formats practically?
04:17:05 <kmc> i don't know
04:17:12 <kmc> whatever BFD can do without shitting itself
04:19:55 <kmc> the objcopy 'binary' format is particularly useful
04:19:56 <kmc> http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967
04:22:14 <Bike> nice.
04:24:35 <zzo38> Maybe there is a VFS to load memory as SQLite database, or if it isn't, it could be written
04:30:24 <kmc> btw the argument for -B on x86_64 is i386:x86-64
04:30:34 <kmc> i always forget, because it makes no sense
04:35:20 -!- Bike has quit (Quit: Reconnecting).
04:35:41 -!- Bike has joined.
04:38:16 <kmc> had to source dive BFD again to discover it
04:38:21 <kmc> the things i do for this club
05:25:38 <Sgeo> Is it harmful to send resume and cover letter to positions that I'm not likely to get?
05:26:13 <Sgeo> A number of hours ago, applied for a "Mid-Senior level" position. Scala stuff although knowing Scala was not a requirement, just being willing to learn it
05:26:35 <elliott> oh boy, scala
05:27:06 -!- FreeFull has quit (Ping timeout: 245 seconds).
05:27:24 <Sgeo> On cover letter mentioned how it seemed to have interesting features like implicit conversions
05:28:03 <kmc> why would that be harmful
05:28:38 <Bike> The HR people could escape from their caves, tearing him limb from limb on the mere suspicion of him not being a Ruby nina.
05:28:41 <Bike> ninja.
05:28:44 <elliott> ruby nina
05:29:32 <Sgeo> At least this one is in a reasonable locatio
05:29:34 <Sgeo> location
05:29:58 <Sgeo> Although Transcriptic is probably more helpful to society
05:30:10 <Sgeo> They still haven't gotten back to me :(
05:31:40 <Bike> helpful to society?
05:33:46 -!- FreeFull has joined.
05:33:53 <Sgeo> Transcriptic is some sort of lab that does... stuff with samples that scientists send in. Allow for monitoring of ... whatever it is they do, etc.
05:34:12 <Bike> Sounds like you're on the ball!
05:35:16 <Bike> Oh, they make plasmids. That is pretty cool.
05:36:16 <Bike> Bioinformatics is cool. Apparently plos has a semi-book on it.
05:37:22 <Bike> http://www.ploscollections.org/article/browse/issue/info%3Adoi%2F10.1371%2Fissue.pcol.v03.i11
05:37:26 <Bike> I think I kind of hate plos's urls.
05:37:45 <Sgeo> This is easy to understand http://pandodaily.com/2012/12/13/transcriptics-wild-seed-round-the-internet-was-just-trying-to-throw-money-at-us/
05:37:52 <Sgeo> I feel like a derp for forgetting about the robotic aspect
05:38:33 <Sgeo> o.O I actually talked to the founder of the company
05:38:35 <Sgeo> I feel small now
05:39:10 <Bike> Well, it's a startup, right? The founder probably isn't, like, a demigod.
05:42:17 <Sgeo> The founder of a startup talked to me, and probably thinks I'm an asshole for sending horrible Tcl code
05:42:49 <Bike> Yeah, my main criterion for "this dude's an asshole" is reading their shitty Tcl.
05:42:50 <Sgeo> On the phone I should have said something like that wasn't my best work, suggested something else, in an actually functional language, but I didn't :(
05:45:42 <elliott> Bike: pretty sure startup founders are all demigods
05:45:49 <elliott> why do you think kmc is so frazzled
05:46:04 <Bike> Intermittent lightning strikes? That would make sense...
05:49:16 <kmc> i'm not a founder
05:49:21 <kmc> just employee numero uno
05:51:13 <elliott> kmc: of course not
05:51:41 <elliott> are you saying slaves to demigods are not frazzled???
05:52:02 <kmc> :3
06:00:08 -!- RodgerTheGreat has quit (Quit: RodgerTheGreat).
06:57:01 <zzo38> void*open(const char*format,const unsigned char*blob,unsigned int size,SDL_AudioSpec*spec); void close(void*handle); void reset(void*handle,Uint8 track); void frame(void*handle,Uint8*stream,int len); void poke(void*handle,Uint16 address,Uint8 data);
06:57:41 <zzo38> Is there the libraries for playing the music that can be used with such a format (even if not directly, such that one can be written easily)?
06:59:09 <zzo38> Oops, I forgot the volume void frame(void*handle,Uint8*stream,int len,Uint32 volume);
07:00:23 <Sgeo> Oh hey HPMOR has a chapter called "Interlude with the Confessor"
07:00:32 <Sgeo> Going to be interesting when I get to it probably
07:01:01 <Bike> Is that a book about how to be a pastor?
07:01:29 <Sgeo> Harry Potter and the Methods of Rationality
07:01:52 <Sgeo> Three Worlds Collide also had an "Interlude with the Confessor"
07:03:32 <Bike> haha yudkowsky
07:05:43 <Sgeo> What's wrong with Yudkowsky?
07:09:43 <Bike> You know I'm honestly not sure how to answer that. Does the usual "CS nerds claiming to have a futurological insight historians don't based on unmarked graphs with curves on them" thing suffice?
07:11:29 <Sgeo> Don't entirely know if I agree with any conclusion that something might happen in our lifetimes, but I don't know if he really draws that conclusion, and, at any rate, it is something I hope for, even if I don't know how likely it is
07:12:41 <Bike> You don't think the guy who founded the singularity institute really draws that conclusion.
07:13:30 <Sgeo> Working to make something happen does not imply a belief that it will happen within our lifetimes
07:13:39 <Sgeo> Just that we should try to make it happen
07:14:44 <Bike> Yeah I'm sure he's working hard on that.
07:14:50 <Bike> There's also this whole everything. http://lesswrong.com/lw/qa/the_dilemma_science_or_bayes/
07:18:04 -!- epicmonkey has joined.
07:41:59 <zzo38> I have added the feature in Internet Quiz Engine for the total that a variable is out of to itself be variable.
07:45:09 <zzo38> Do any music engines have a poke function?
07:45:16 <Bike> Poke?
07:46:15 <zzo38> I mean for example, if it is playing .NSF then it would be able to write the RAM and memory-mapped registers of the VM.
07:47:01 <zzo38> (Depending on the format, the poke command might mean something different, or it might not do anything.)
07:50:26 <zzo38> This might be used to speed up the music at some point during the game, or to mute a channel temporarily, or to play sound effects which are included in the music file, or for other things.
07:51:17 <Bike> Well there are plenty of systems that allow you to mess with things at playback time.
07:52:16 <zzo38> The functions I mentioned above would be a part of a C structure, and their implementation depends on the format, so depending on what things they have, the poke function would be implemented to use those things.
07:52:37 <zzo38> However I have not seen the NSF player which does what I have said.
07:52:47 <zzo38> Do you know if there is such things?
07:52:49 <Bike> I don't think music people doing live DJing usually do it in C.
07:53:24 <zzo38> But I don't mean live DJing; I mean music that might be used in a computer game.
07:54:13 <Bike> PureData has a C(++?) API that can be used to do whatever you want at runtime. I think Spore used it.
07:55:49 <zzo38> I have used PureData, although I find Csound is much better. Still, neither of those is the kinds of things I am looking for.
07:56:23 <Bike> I don't know of any music systems that just run everything flatly in a separate virtual machine, is the problem
07:57:50 <Bike> Even that one guy's demoscene VM does visual and audio in the same machine.
07:59:28 -!- ais523 has quit.
08:00:11 <zzo38> That isn't wnat I mean either. I mean such as, a .MOD player, a .IT player, a .NSF player, whatever, which may be made wrappers using the function declarations above, and then loaded using a C code.
08:02:27 <Bike> I haven't a clue, then, other than that seems pretty specific.
08:03:20 <zzo38> I may write the wrappers myself if the C libraries exists for such things, for which such wrapper functions can be written to do.
08:21:35 -!- asiekierka has quit (Excess Flood).
08:29:45 -!- asiekierka has joined.
08:31:47 -!- Bike has quit (Quit: warning).
08:32:01 -!- evincar has left.
09:05:18 -!- glogbackup has joined.
10:13:30 -!- Jafet has joined.
10:18:32 -!- oonbotti has quit (Ping timeout: 252 seconds).
10:21:40 <Sgeo> I should learn to read time zones
10:22:02 <Sgeo> Thought Facebook Hacker Cup Round 1 was 10am my time, it's 10AM PST so 1PM my time
10:22:06 <Sgeo> Yay I get more sleep
10:22:55 <shachaf> I should express times in PDT during the winter/PST during the summer.
10:23:05 <shachaf> Teach people to pay attention.
10:36:58 -!- DHeadshot has joined.
10:38:17 -!- Nisstyre-laptop has quit (Quit: Leaving).
10:41:37 <Sgeo> help rather than sleeping I picked up my Nook again and am continuing the reread of HPMOR
10:42:14 <shachaf> Instead of reading that, read something good.
10:42:21 <Sgeo> Is HPMOR not good?
10:42:27 <shachaf> I don't know.
10:42:51 <shachaf> Have you considered reading _Three Men in a Boat_?
10:43:11 <shachaf> are books monoids :D
10:43:30 <shachaf> Sgeo: How's Ada going?
10:43:32 <Jafet> Some books are not easy.
10:43:51 <Sgeo> I still want to understand Ada concurrency
10:43:58 <Sgeo> I still have not taken a real look at it
10:44:29 <shachaf> They have the task thing, right?
10:44:32 <shachaf> How does it work exactly?
10:45:54 <Sgeo> Like I said, I haven't taken a real look at it yet
10:46:05 <shachaf> Fake looks are OK?
10:48:31 <Sgeo> I love reading. It is so easy.
10:48:57 <shachaf> Sgeo: dont you think thats a bit worn out by now..............................................................
10:50:59 <Sgeo> I searched scrollup to try to prove recent use, but couldn't
10:51:06 <ion> I love this joke. It is so easy.
10:51:29 -!- carado has joined.
10:51:43 <Sgeo> help carado please slap Sgeo and ion
10:52:08 <ion> I love slapping.
10:52:26 <shachaf> @slap Sgeo
10:52:26 * lambdabot smacks Sgeo about with a large trout
10:52:28 <shachaf> @slap ion
10:52:28 * lambdabot secretly deletes ion's source code
10:52:32 <shachaf> oh no
10:52:36 <shachaf> fortunately ion is a quine
10:52:45 <shachaf> hion
10:52:49 <ion> haf
10:52:58 <shachaf> ^rot13 haf
10:52:58 <fungot> uns
10:53:01 <shachaf> ^rot13 half
10:53:01 <fungot> unys
10:53:22 <carado> what ?
10:53:25 <shachaf> hi carado
10:53:29 <shachaf> `wehlcohme carado
10:53:30 <carado> hello
10:53:34 <HackEgo> cahrahdo: Wehlcohme to the ihntehrnahtiohnahl huhb fohr ehsohtehrihc prohgrahmmihng lahnguahge dehsihgn ahnd dehployhmehnt! Fohr mohre ihnfohrmahtiohn, chehck ouht ouhr wihki: http://ehsohlahngs.ohrg/wihki/Maihn_Pahge. (Fohr the ohthehr kihnd ohf ehsohtehrihca, try #ehsohtehrihc ohn ihrc.dahl.neht.)
10:56:46 <carado> thahts quhite thhe whelchome
10:57:41 <ion> http://9to5mac.com/2013/02/01/dont-type-this-phrase-on-your-mac-unless-you-like-crashing-it-file/
11:17:18 -!- zzo38 has quit (Remote host closed the connection).
11:18:10 -!- oonbotti has joined.
11:30:03 -!- Phantom_Hoover has joined.
11:36:50 <Sgeo> - Knowledge of the following technologies: Nginx, thin, AWS
11:36:57 <Sgeo> thin is a technology.
11:48:24 <Vorpal> hm interesting, ethernet PAUSE frames on my network
11:48:31 <ion> `run f=bin/hyphenate.fi;echo 'H4sIAOD8DFEAA0WPQU7DMBBF9z2FCRFtEakbVpWqSkisWbGssnDDNDFNMmkcNzWa4+QMvoAvxpgNiy/7vfka2Y8P8qQ7aeoF3KEUPQyNyN4/RfZhx/NOZP0EYtm69IbT4TrIowKN1oU5+ELqPQ9K7P4Gp/LrXNXfl6bt+utgxtt0/4mVfKp1A8LIVdwR68/rVTwirmWaZ+mrrP5rCkghKUcqzBxPoAiQgAmYtCKNpJk0EypCIHSELJCFVWSBrCPLwrJwihyQQ3KW+NkUZsUBDnIsxZ9Q8Cw9S8/Ss/Rhlq17MwfTN3pMkpf0aZ+a47bYJFmy4VteSKiWi1/gJQHkPgEAAA=='|base64 -d|zcat>$f;chmod 755
11:48:33 <ion> $f; cat $f
11:48:36 <HackEgo> chmod: missing operand after `755' \ Try `chmod --help' for more information.
11:48:42 <Vorpal> probably related to copying 8 GB of music over NFS from a computer with gbit ethernet to one with 100mbit
11:48:45 <ion> `run chmod 755 bin/hyphenate.fi; cat bin/hyphenate.fi
11:48:49 <HackEgo> ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/ae|ao|ay|aä|aö|ea|eo|eä|eö|ia|io|iä|iö|oa|oe|oy|oä|oö|ua|ue|uy|uä|uö|ya|ye|yo|yu|yä|äa|äe|äo|äu|äö|öa|öe|öo|öu|öä/my@s=split"",$&;$s[0]."-".$s[1]/eg'
11:48:57 <ion> `run welcome kakka | hyphenate.fi
11:49:00 <HackEgo> kak-ka: Wel-co-me to the in-ter-na-ti-o-nal hub for e-so-te-ric prog-ram-ming lan-gu-a-ge de-sign and dep-lo-y-ment! For mo-re in-for-ma-ti-on, check out our wi-ki: http://e-so-langs.org/wi-ki/Main_Pa-ge. (For the ot-her kind of e-so-te-ri-ca, try #e-so-te-ric on irc.dal.net.)
11:49:57 <Vorpal> and at the same time I was also syncing 2 GB or so of data between two computers with gbit connections (one of the computers was involved in both transfers though...)
11:55:07 <ion> `run welcome shachaf | dahl | hyphenate.fi
11:55:09 <HackEgo> bash: dahl: command not found
11:55:17 <ion> `run welcome shachaf | h | hyphenate.fi
11:55:19 <HackEgo> shahc-hahf: Wehl-coh-me to the ihn-tehr-nah-ti-oh-nahl huhb fohr eh-soh-teh-rihc prohg-rahm-mihng lahn-gu-ah-ge deh-sihgn ahnd dehp-lo-yh-mehnt! Fohr moh-re ihn-fohr-mah-ti-ohn, chehck ouht ouhr wih-ki: http://eh-soh-lahngs.ohrg/wih-ki/Maihn_Pah-ge. (Fohr the oht-hehr kihnd ohf eh-soh-teh-rih-ca, try #eh-soh-teh-rihc ohn ihrc.dahl.neht.)
11:55:30 <shachaf> `run welcome shachaf | hyphenate.fi | h
11:55:32 <HackEgo> shahc-hahf: Wehl-co-me to the ihn-tehr-na-ti-o-nahl huhb fohr e-so-te-rihc prohg-rahm-mihng lahn-gu-a-ge de-sihgn ahnd dehp-lo-y-mehnt! Fohr mo-re ihn-fohr-ma-ti-ohn, chehck ouht ouhr wi-ki: http://e-so-lahngs.ohrg/wi-ki/Maihn_Pa-ge. (Fohr the oht-hehr kihnd ohf e-so-te-ri-ca, try #e-so-te-rihc ohn ihrc.dahl.neht.)
12:00:36 <ion> `run sed -i -re 's,/eg,/egi,' bin/hyphenate.fi && cat bin/hyphenate.fi
12:00:39 <HackEgo> ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/ae|ao|ay|aä|aö|ea|eo|eä|eö|ia|io|iä|iö|oa|oe|oy|oä|oö|ua|ue|uy|uä|uö|ya|ye|yo|yu|yä|äa|äe|äo|äu|äö|öa|öe|öo|öu|öä/my@s=split"",$&;$s[0]."-".$s[1]/egi'
12:01:36 <elliott> `run welcome hello | hyphenate.fi | hyphenate.fi | hyphenate.fi
12:01:39 <HackEgo> hel-lo: Wel-co-me to the in-ter-na-ti-o-nal hub for e-so-te-ric prog-ram-ming lan-gu-a-ge de-sign and dep-lo-y-ment! For mo-re in-for-ma-ti-on, check out our wi-ki: http://e-so-langs.org/wi-ki/Main_Pa-ge. (For the ot-her kind of e-so-te-ri-ca, try #e-so-te-ric on irc.dal.net.)
12:01:44 <elliott> ion: I want a refund
12:01:58 <ion> elliott: I’m sorry it works correctly.
12:03:19 <shachaf> `run ln -s hyphenate.fi bin/hyfinate
12:03:22 <HackEgo> No output.
12:06:33 <ion> `run welcome | rot13 | hyfinate | rot13
12:06:39 <HackEgo> No output.
12:06:49 <shachaf> help
12:06:52 <shachaf> Oh.
12:07:17 <shachaf> `run welcome | tr a-zA-Z n-za-mN-ZA-M | hyfinate | tr a-zA-Z n-za-mN-ZA-M
12:07:20 <HackEgo> Welcome to the int-er-nati-on-al h-ub for esoteric pro-gramm-ing l-anguage design and deploym-ent! For more inf-ormati-on, check out our wiki: http://esol-angs.org/wiki/Main_Page. (For the oth-er kind of esoterica, try #esoteric on irc.dal.net.)
12:07:49 <shachaf> `cat bin/rot13
12:07:50 <HackEgo> echo "$@" | tr a-zA-Z n-za-mN-ZA-M
12:10:59 <ion> `run f() { tr a-zA-Z b-zaB-ZA | hyphenate.fi; }; welcome|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f
12:11:18 <shachaf> ion what have you done
12:11:21 <HackEgo> We-lc-o-m-e to t-he in-te-r-n-a-ti-on-al h-ub f-or e-s-o-t-er-ic p-ro-gr-a-mm-i-ng l-an-g-u-a-g-e de-s-i-gn an-d d-ep-lo-y-m-en-t! F-or m-o-re in-f-o-rm-a-ti-on, ch-e-ck o-ut o-ur w-i-k-i: h-tt-p://e-s-o-la-ng-s.o-rg/w-i-k-i/M-ain_Pa-g-e. (F-or t-he ot-h-er k-in-d of e-s-o-t-er-ic-a, t-ry #e-s-o-t-er-ic on i-rc.d-al.n-et.)
12:13:11 <ion> shachaf: Procrastinated on IRC mainly.
12:13:24 <shachaf> don't do it ion
12:14:25 <nortti> `which hyphenate.fi
12:14:27 <HackEgo> ​/hackenv/bin/hyphenate.fi
12:18:06 <carado> nice bot youve got.
12:18:49 <ion> it would be a shame if anything were to happen to it
12:20:06 <carado> surely, its things-happening-to-it-proof
12:20:33 <ion> Yeah, we bought bot insurance from two very nice Italian gentlemen.
12:34:03 <Sgeo> Is it just me or is Scala one of the more commonly used functional languages in industry?
12:34:37 <ion> I think you are one of the more commonly functional languages in industry indeed.
12:38:39 <shachaf> `hyfinate beaky
12:39:10 <HackEgo> No output.
12:39:27 <Sgeo> ?!??!
12:39:27 <lambdabot> Unknown command, try @list
12:39:43 <Sgeo> I like it better already :D
12:40:23 <Sgeo> Wait, not if it's Haskell style "Oh, code that uses it has to be in monadic style"
12:41:53 <elliott> are you depriving #yfl of these insights......
12:42:13 <elliott> oh
12:42:14 <elliott> you didnt'
12:42:21 <shachaf> imo elliott makes a good point
12:42:37 <ion> What’s #yfl?
12:42:45 <elliott> dont ask
12:42:55 <ion> What’s #yfl?
12:43:19 <shachaf> dont ask
12:43:41 <ion> sudo what’s #yfl?
12:45:40 <Jafet> `run sudo -l
12:45:42 <HackEgo> bash: sudo: command not found
12:48:08 <Jafet> `run quote | hyphenate.fi
12:48:10 <HackEgo> 834) <o-er-jan> `wel-co-me Raw-lie * zzo38 has joi-ned #e-so-te-ric <Raw-lie> thank y-ou <zzo38> Y-ou're wel-co-me.
12:51:09 <shachaf> Sgeo: edwardk uses Scala and he keeps complaining about it.
12:51:19 <shachaf> Sgeo: You should go back to Ada.
12:51:28 <Sgeo> What are his complaints?
12:51:38 <shachaf> I don't remember.
12:51:54 <shachaf> I bet you could find it on his Twitterthing.
12:54:20 <Sgeo> Seems one of the complaints, at least from this log I found, has to do with complexity of types?
12:54:24 <Sgeo> https://gist.github.com/3190574
12:54:41 <ion> `run sed -i -re 's,/ae\|.*\|öä/,/a[eoyäö]|e[aoäö]|i[aoäö]|o[aeyäö]|u[aeyäö]|y[aeouä]|ä[aeouö]|ö[aeouä]/,' bin/hyphenate.fi && cat bin/hyphenate.fi
12:54:44 <HackEgo> ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/a[eoyäö]|e[aoäö]|i[aoäö]|o[aeyäö]|u[aeyäö]|y[aeouä]|ä[aeouö]|ö[aeouä]/my@s=split"",$&;$s[0]."-".$s[1]/egi'
12:56:01 <ion> `run echo Ääliö, älä läiky. öykkäri komea hioa lauantai aion | hyphenate.fi
12:56:03 <HackEgo> ​Ää-li-ö, ä-lä läi-ky. öyk-kä-ri ko-me-a hi-o-a lau-an-tai ai-on
12:58:51 <shachaf> Sgeo: Are Ada tasks preëmptice or coöperative or what?
12:58:56 <shachaf> s/c/v/
12:59:05 <shachaf> Are they like threads?
12:59:09 <shachaf> Or are they like coroutines?
12:59:12 <shachaf> Or are they like something else?
12:59:53 <Sgeo> From a quick googling, seems like it depends on the compiler (for preemptive vs. cooperative)
13:01:53 <shachaf> How does preëmption work?
13:03:23 <Sgeo> I should probably try to get some sleep
13:03:47 <shachaf> Nah, you should learn Ada.
13:11:47 -!- copumpkin has quit (Ping timeout: 252 seconds).
13:12:18 -!- copumpkin has joined.
13:30:28 -!- oonbotti has quit (Ping timeout: 248 seconds).
14:00:07 -!- oerjan has joined.
14:04:14 -!- ogrom has joined.
14:12:50 -!- md_5 has quit (Ping timeout: 256 seconds).
14:14:17 <oerjan> <Bike> You know I'm honestly not sure how to answer that. Does the usual "CS nerds claiming to have a futurological insight historians don't based on unmarked graphs with curves on them" thing suffice?
14:14:35 <shachaf> oerjan: do you know about subtyping.................................
14:14:44 <oerjan> i thought that was kurzweil et al's shtick, not so much yudkowsky
14:15:05 <elliott> bike isn't even here oerjan..............
14:15:20 <shachaf> @ask Bike good morning
14:15:20 <lambdabot> Consider it noted.
14:15:21 -!- md_5 has joined.
14:15:35 <oerjan> and that his was "when (and it _will_ be when) we invent superhuman intelligent ai, if we don't get it _precisely_ right, we are all fucked.
14:15:40 <oerjan> "
14:16:13 <oerjan> shachaf: not that much
14:16:30 <oerjan> elliott: i know i just wanted to quibble
14:17:12 -!- oonbotti has joined.
14:17:54 <elliott> oerjan: if a quibble falls in the forest and nobody is around to hear it...
14:18:43 <oerjan> bah i need Bike like a fish needs...
14:18:53 <Phantom_Hoover> water?
14:19:05 * oerjan swats Phantom_Hoover -----###
14:19:09 <shachaf> water? but she made perfect sense!
14:19:17 <Vorpal> shachaf, "she"?
14:19:20 <oerjan> Phantom_Hoover is female now?
14:19:37 <Phantom_Hoover> maybe
14:19:37 <oerjan> ...
14:19:50 <shachaf> I don't know?
14:19:52 * oerjan swats shachaf -----###
14:20:31 <shachaf> Whew.
14:21:00 * oerjan recovers from his near-whoosh experience
14:24:10 <shachaf> Vorpal may not be so fortunate.
14:24:25 * impomatic wonders why JavaScript regular expressions don't support look behind (?<
14:24:37 <oerjan> shachaf: he was traumatized by them years ago
14:25:04 <Vorpal> shachaf, I'm naturally immune to them
14:25:13 <oerjan> shachaf: and is now in denial
14:25:30 <Vorpal> "shachaf uses whoosh on Vorpal" "It is not effective"
14:26:03 <oerjan> immune like a burnt down house is immune to fire
14:26:28 * shachaf uses MonadicFold on Vorpal
14:26:46 <Vorpal> ouch, that was super effective
14:26:50 <shachaf> oerjan: elliott is not a fan of my monologues on subtyping.
14:26:59 <oerjan> monads are all about effects duh
14:27:36 <oerjan> shachaf: he probably thinks they are too invariant
15:20:21 -!- copumpkin has quit (Ping timeout: 276 seconds).
15:21:20 -!- copumpkin has joined.
15:25:23 -!- sebbu has quit (Ping timeout: 248 seconds).
15:33:32 -!- RodgerTheGreat has joined.
15:47:43 -!- sebbu has joined.
15:47:43 -!- sebbu has quit (Changing host).
15:47:43 -!- sebbu has joined.
15:57:17 -!- Taneb has joined.
15:58:11 <oerjan> O_o
15:58:24 <RodgerTheGreat> what's the matter
15:59:01 <oerjan> there's a Taneb in the premises
15:59:12 <Taneb> It happens occasionally
15:59:22 <RodgerTheGreat> wow
16:00:33 <oerjan> *on
16:01:07 <RodgerTheGreat> so what's up guys
16:03:25 <Phantom_Hoover> hey Taneb did you fix that problem you had
16:03:37 <Taneb> oerjan did
16:03:47 <Phantom_Hoover> good for him
16:03:53 * oerjan wonders if Phantom_Hoover is talking about the same problem
16:04:05 <Phantom_Hoover> i simply assumed Taneb had a problem
16:04:07 <Phantom_Hoover> he normally does
16:04:19 <Taneb> Yes, it's a problem I have
16:04:21 <oerjan> ah. in that case i guess i did.
16:04:30 <shachaf> oerjan: What's cosubtyping?
16:04:44 <oerjan> shachaf: well it's mplicated
16:04:53 <Phantom_Hoover> some sort of fusion of cosplay and type theory?
16:04:58 <shachaf> oerjan: We think "a" is a cosubtype of "(a,b)"
16:05:08 <oerjan> wat
16:05:11 <shachaf> Or maybe the other way around.
16:05:31 <shachaf> oerjan: Well, in a sense "a" is a subtype of "Either a b", right?
16:05:42 <elliott> `addquote <shachaf> oerjan: What's cosubtyping <Phantom_Hoover> some sort of fusion of cosplay and type theory?
16:05:46 <HackEgo> 950) <shachaf> oerjan: What's cosubtyping <Phantom_Hoover> some sort of fusion of cosplay and type theory?
16:05:46 <elliott> oops
16:05:48 <elliott> `revert
16:05:51 <elliott> `addquote <shachaf> oerjan: What's cosubtyping? <Phantom_Hoover> some sort of fusion of cosplay and type theory?
16:05:51 <HackEgo> Done.
16:05:55 <HackEgo> 950) <shachaf> oerjan: What's cosubtyping? <Phantom_Hoover> some sort of fusion of cosplay and type theory?
16:06:01 <oerjan> right. set theoretically there's an injection, so presumably you'd want something with a surjection for the co-
16:06:10 <oerjan> and \(a,b) -> a fits
16:06:29 <shachaf> Hmm.
16:06:31 <oerjan> (or monic/epic in CT language)
16:06:46 <shachaf> What does it mean for something to be a cosubtype?
16:06:58 <oerjan> and of course Either a b is the direct sum of a and b, while (a,b) is the direct product
16:07:12 <oerjan> s/sum/coproduct/, possibly
16:07:46 <shachaf> Right.
16:07:53 <shachaf> A subtype gives you a prism, more or less.
16:08:09 <shachaf> So a cosubtype should give you a lens.
16:08:16 <oerjan> well there you go then.
16:08:31 <shachaf> But what does it mean?
16:08:51 <shachaf> If A <: B, you have |A| <= |B|, right?
16:09:35 <oerjan> well (a,b) can delegate to a, can't it. maybe there's something OO in there.
16:09:45 <shachaf> Delegate?
16:09:54 <oerjan> or is a field...
16:09:58 <shachaf> Sure.
16:10:08 <shachaf> Every cosubtype acts like a field in some sense, I think.
16:10:19 <shachaf> Just like every subtype acts like a summand
16:11:15 <oerjan> and both give Functors, no?
16:11:47 <oerjan> or hm
16:12:03 <elliott> shachaf: I think the problem is you're going "aha, subtypes are [prisms] but cosubtypes are [lenses]!"
16:12:10 <elliott> Which doesn't teach you anything about (co)subtyping.
16:12:18 <shachaf> elliott: That's my point.
16:12:18 <elliott> It just teaches you about lenses or prisms under a different name.
16:12:28 <shachaf> I'm trying to figure out a different way of looking at cosubtypes.
16:12:45 <elliott> shachaf: I think T and _|_ are worth thinking about there?
16:12:55 <shachaf> Probably
16:12:58 <elliott> And "f a"/"f b" given "a <op> b"
16:13:07 <elliott> Since you could deduce subtyping based on co/contavariance for subtyping of a,b there.
16:13:45 <shachaf> So for all x, ⊥ <: x, and x <: ⊤
16:14:25 <shachaf> In lens terms you have a Prism x _|_ and a Prism T x
16:14:27 <oerjan> if a is a subtype of b then (a,c) is a subtype of (b,c), Either a c is a subtype of Either b c, and (b -> c) is a subtype of (a -> c). what are the similar rules for cosubtypes?
16:14:38 <shachaf> But you also have a Lens _|_ x and a Lens x T
16:15:13 <shachaf> What's our symbol for cosubtyping?
16:15:20 <shachaf> I'll just use ;>
16:15:46 <shachaf> If you have A ;> B and B ;> C, then you have A ;> C
16:16:37 <shachaf> If you have A ;> B then (A,X) ;> (B,X)? Is that valid?
16:16:50 <shachaf> elliott: That's alongside l id, isn't it?
16:16:56 <shachaf> For lenses.
16:17:41 <elliott> I guess?
16:17:43 <elliott> Sure, yes.
16:17:49 <shachaf> So that's valid.
16:17:56 <shachaf> Do we have alongside for Either?
16:18:22 <elliott> Maybe?
16:18:26 <shachaf> No, Either.
16:18:50 <shachaf> If you have A ;> B then do you have Either A C ;> Either B C?
16:18:52 <shachaf> I don't think so.
16:19:22 <shachaf> elliott: Hah, that operation looks a lot like Choice.
16:19:30 <elliott> Sure.
16:19:33 <elliott> Because Prism = Choice etc.
16:19:36 <shachaf> Right.
16:19:50 <elliott> Lens' a b -> Lens' (Either a c) (Either b c)?
16:19:55 <shachaf> I don't think you can do that.
16:20:00 <elliott> It'd be a traversal.
16:20:05 <elliott> Wait.
16:20:07 <elliott> No, I think you can do that?
16:20:32 <elliott> Extract the "b" out of the "a" for viewing, and leave "c"s untouched.
16:20:43 <elliott> Then when you put a Left back in, put it back into the original "a".
16:20:50 <shachaf> What if you have a Right?
16:20:55 <elliott> If you put back a different branch, then change the branch entirely?
16:20:59 <elliott> Does that follow the laws?
16:21:06 <elliott> Oh, never mind.
16:21:06 <shachaf> You can't change the branch.
16:21:08 <shachaf> You don't have an a
16:21:38 <elliott> shachaf: What about Lens' (EIther a c) (Either b c) -> Lens' a b?
16:21:42 <elliott> It's, like, contravariant.
16:22:06 <shachaf> What about functions?
16:22:19 <elliott> I gave you a function rule already!
16:22:28 <elliott> a ;> b => (a -> r) <: (b -> r)
16:22:35 <shachaf> oerjan says that if A <: B, then (B -> C) <: (a -> C)
16:22:42 <shachaf> Do we have that prism?
16:22:56 <elliott> Yes
16:23:13 <elliott> It's in lens.
16:23:21 <shachaf> What's it called?
16:23:26 <elliott> It's in .Prism
16:23:36 <elliott> Or .Lens
16:23:45 <shachaf> Oh, we have
16:23:45 <shachaf> inside :: ALens s t a b -> Lens (e -> s) (e -> t) (e -> a) (e -> b)
16:23:47 <elliott> outside :: APrism s t a b -> Lens (t -> r) (s -> r) (b -> r) (a -> r)
16:23:49 <elliott> Right
16:24:19 <shachaf> So you get a subtype either way.
16:24:25 <shachaf> Er, a supertype?
16:24:34 <shachaf> Wait, this thing turns either a lens or a prism into a lens.
16:24:41 <shachaf> Your rule turns a lens into a pris.
16:24:48 * elliott is confused.
16:24:56 <shachaf> 08:22 <elliott> a ;> b => (a -> r) <: (b -> r)
16:25:05 <shachaf> That's like a function that turns a lens into a prism.
16:25:09 <elliott> 16:22:35 <shachaf> oerjan says that if A <: B, then (B -> C) <: (a -> C)
16:25:23 <shachaf> ?
16:25:25 <elliott> Contravariant f => Prism' a b -> Prism' (f b) (f a)
16:25:58 * elliott is too tired.
16:26:16 <shachaf> You can't do that, can you?
16:26:45 <shachaf> You need f b -> Either (f b) (f a)
16:26:49 <shachaf> Which is like costrength.
16:27:04 <elliott> (b -> r) -> Either (b -> r) (a -> r)?
16:27:08 <elliott> That makes no sense.
16:27:09 <elliott> Is oerjan lying?
16:27:28 <elliott> I think shachaf is lying?
16:27:35 <shachaf> Might be.
16:27:35 <elliott> Do you need that?
16:27:44 <shachaf> Need what?
16:27:51 <oerjan> ...i just showed some ordinary variance rules for ordinary subtyping...
16:27:55 <shachaf> You said 08:25 <elliott> Contravariant f => Prism' a b -> Prism' (f b) (f a)
16:28:06 <shachaf> I'm not sure where that comes from.
16:29:04 <shachaf> 08:14 <oerjan> if a is a subtype of b then (a,c) is a subtype of (b,c), Either a c is a subtype of Either b c, and (b -> c) is a subtype of (a -> c). what are the similar rules for cosubtypes?
16:29:47 <shachaf> Prism b a -> Prism (Either b c) (Either a c)
16:30:14 <shachaf> elliott: Oh, that's just composition.
16:30:20 <shachaf> (_Left . p)
16:31:10 <elliott> oerjan: I CAN'T TRUST ANYONE
16:31:26 <shachaf> Prism b a -> Prism (a -> c) (b -> c)
16:31:30 <shachaf> Is that true?
16:31:58 <oerjan> elliott: i should point out i have not recently made claims about either prisms (which i basically don't really know) or lenses.
16:32:03 <shachaf> One half is (a -> b) -> (b -> c) -> a -> c
16:32:08 -!- ogrom has quit (Quit: Left).
16:32:12 <shachaf> oerjan: We're extrapolating here!
16:32:38 <shachaf> (b -> Maybe a) -> (a -> c) -> Maybe (b -> c)
16:32:41 <shachaf> @djinn (b -> Maybe a) -> (a -> c) -> Maybe (b -> c)
16:32:42 <lambdabot> f _ _ = Nothing
16:32:44 <shachaf> thank's
16:32:53 <shachaf> Anyway that's obviously impossible.
16:33:27 <shachaf> oerjan: Do you know anything about subtyping with < instead of <=?
16:33:34 <oerjan> perhaps there's something going on similar to the distinction between summand and submodule in module categories. in which case maybe i should mention the definition of summand. although there's no distinction in the category Set, maybe there is one in Hask.
16:33:37 <elliott> oerjan: I should point out I'm really tired and not serious about any of this.
16:33:45 <oerjan> elliott: O KAY
16:34:07 <shachaf> I think we might get farther if we use <
16:34:22 <elliott> so you ban a -> a.
16:34:33 <shachaf> Right, it's irreflexive.
16:34:36 <oerjan> if i could just _remember_ the definition of summand.
16:35:08 -!- epicmonkey has quit (Ping timeout: 245 seconds).
16:35:27 <shachaf> Hmm.
16:35:38 <oerjan> maybe it requires kernels, in which case it can probably not be transfered to non-abelian categories
16:35:56 <elliott> just use Linux
16:36:30 <shachaf> So what does <: mean? It doesn't mean <=, right?
16:36:42 <shachaf> a <= b ----> c^b <= c^a -- doesn't seem right
16:36:51 <oerjan> oh wait duh in module categories product = coproduct. bah.
16:38:40 <shachaf> Let's say Foo = {A,B}, Bar = {A,B,C}
16:38:41 <oerjan> and that's why they have summands. hm i guess a module summand is something which is in some sense _both_ a subobject and a cosubobject.
16:38:51 <shachaf> So Foo <: Bar
16:38:52 <oerjan> in a compatible way.
16:39:09 <shachaf> (Bar -> X) <: (Foo -> X)?
16:40:35 <oerjan> so to go back to my basic idea, what's the relation of a -> c to (a,b) -> c, if any.
16:40:48 <oerjan> oh hm
16:41:11 <oerjan> (a,b) -> c is of course isomorphic to b -> (a -> c)
16:41:20 <shachaf> I think my intuition with cardinality can't be right.
16:41:27 <oerjan> although that's specific to products
16:41:48 <oerjan> shachaf: cardinality is not subtyping hth
16:41:50 <shachaf> oerjan: I think all cosubtypes would be product-like.
16:41:59 <shachaf> oerjan: Sure, but I thought A <: B ----> |A| <= |B|
16:42:03 <shachaf> I guess that's not true.
16:42:38 <oerjan> shachaf: it's not true for subtypes either, i think
16:42:54 <oerjan> or wait, <: is subtype
16:42:57 <shachaf> Right..
16:43:40 <oerjan> well i think you must have <=, but it can be == even if not identical types
16:44:03 <shachaf> Wait, you must have <=?
16:44:14 <oerjan> or wait hm
16:44:22 <shachaf> Foo <: Bar ----> (Bar -> X) <: (Foo -> X), right?
16:44:33 <oerjan> oh ... now i see.
16:44:52 <oerjan> no, you must not.
16:45:08 <shachaf> So it's something more subtle than <= of the cardinality. :-(
16:45:15 <shachaf> What is it?
16:45:25 <oerjan> simply, even if Foo is a direct _subset_ of Bar, (Bar -> X) is not a direct subset of (Foo -> X).
16:45:39 <oerjan> it's just something which can be _used_ as a (Foo -> X).
16:45:48 <shachaf> Sure.
16:45:54 <shachaf> Can you write a prism for it?
16:46:23 <oerjan> but two different (Bar -> X) can correspond to the same (Foo -> X), so subtyping is not an injection, and therefore need not increase cardinality.
16:47:31 <shachaf> Prism s t a b = (b -> t, s -> Either t a)
16:47:41 <shachaf> Prism' s a = (a -> s, s -> Maybe a)
16:47:53 <oerjan> ic
16:48:06 <oerjan> i think the s -> Maybe a is going to hit the halting problem.
16:48:10 <shachaf> Yes.
16:48:27 <shachaf> elliott: I knew it wouldn't work!
16:55:50 <shachaf> oerjan: Update: I mixed everything up.
16:56:03 <shachaf> Foo = {A,B}, Bar = {A,B,C}
16:56:08 <shachaf> Bar <: Foo, not the other way around.
16:56:21 <oerjan> oh wait hm it won't hit the halting problem if you have a prism to start with
16:56:39 <oerjan> :k Prism'
16:56:41 <lambdabot> Top level:
16:56:41 <lambdabot> Type synonym Prism' should have 2 arguments, but has been given none
16:56:41 <lambdabot> In a type in a GHCi command: Prism'
16:56:55 <oerjan> sheesh
16:57:04 <oerjan> VERY USEFUL GHC
16:57:10 <shachaf> It's a type synonym.
16:57:43 <shachaf> But it would just be * -> * -> *
16:58:21 <oerjan> :k Prism' Int Bool
16:58:23 <lambdabot> *
16:59:08 <oerjan> something tells me your definitions above are not the ones actually used
16:59:13 <oerjan> in lens
16:59:43 <shachaf> type Prism s t a b = (Choice p, Applicative f) => p a (f b) -> p s (f t)
16:59:50 <shachaf> CLOSE ENOUGH
17:05:58 <oerjan> tr :: Prism Bar Foo -> Prism (Foo -> X) (Bar -> X); tr (f2b,b2Mf) = (\b2x -> b2x . f2b, \f2x -> Just $ \b -> ...nah we can only get another Maybe in here, and no way to pull it outside the $
17:06:21 <shachaf> Right.
17:06:24 <shachaf> You need a sort of costrength.
17:06:26 <shachaf> Or something.
17:06:41 <oerjan> ok later ->
17:06:45 -!- oerjan has quit (Quit: leaving).
17:08:04 <Phantom_Hoover> are there any good co- jokes left i wonder
17:19:05 -!- Bike has joined.
17:39:45 <tswett> The energy stored in a spring is proportional to the square of its loading force, right?
17:43:37 -!- Bike has quit (Quit: Lost terminal).
17:44:22 -!- Bike has joined.
17:44:42 -!- ogrom has joined.
17:54:10 <Phantom_Hoover> tswett, ye...s
17:54:31 <Phantom_Hoover> yes
18:02:01 -!- DHeadshot has quit (Remote host closed the connection).
18:31:20 <Sgeo> So: Try to do this Facebook thing when I'm too tired to think properly, or write a blog post that could in theory make an impression on employers
18:34:33 <kmc> or sleep
18:34:47 <kmc> write a sleep deprived nonsensical blog post that could in theory make an impression on employers
18:34:52 <kmc> also what is facebook thing
18:37:45 <Bike> i'm imagining an employer hiring whoever first helps them with farmville
18:37:46 <lambdabot> Bike: You have 1 new message. '/msg lambdabot @messages' to read it.
18:38:59 <Bike> @ask shachaf evening
18:38:59 <lambdabot> Consider it noted.
18:39:24 <shachaf> @tell Bike thank'se
18:39:24 <lambdabot> Consider it noted.
18:39:32 <shachaf> @clear-messages
18:39:32 <lambdabot> Messages cleared.
18:39:49 <Bike> @clear-messages
18:39:49 <lambdabot> Messages cleared.
18:40:54 <ogrom> @clear-messages
18:40:55 <lambdabot> Messages cleared.
18:45:10 <Sgeo> kmc, Facebook Hacker Cup
18:46:20 <shachaf> is this more of an esr hacker cup or a pg hacker cup tho
18:46:26 <shachaf> important distinction
18:48:47 <Bike> fuck that guy
18:58:42 -!- monqy has joined.
19:05:03 <Phantom_Hoover> Bike, which one?
19:08:26 <kmc> fb brogrammer cup
19:10:54 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds).
19:12:01 -!- Nisstyre-laptop has joined.
19:17:33 <Bike> esr, haven't you heard about the new pbuh
19:17:38 <Bike> oh he left.
19:21:45 -!- hublao has joined.
19:22:26 <hublao> Hello,I was looking at brainfuck language and I've minor confusion about ']' instruction
19:23:37 <hublao> Correct me if I am wrong: If ']' is encountered, jump to the matching '[' and check if the value at that array is 0.If it is 0, jump to the instruction after ']' else go to next instruction after '['.
19:25:13 <Sgeo> There are a few equivalent ways to describe what [ and ] do. But you need to incorporate some sort of check into the action that happens when you encounter [
19:25:32 <Sgeo> If you hit [ and the current cell is 0, it does need to skip past the matching ] somehow
19:27:18 <hublao> yeah true
19:27:33 <hublao> But what I said is also true , right Sgeo ?
19:28:27 <Sgeo> Looks good, I think
19:28:28 <Vorpal> the fuck just happened. I switched from a the xfce terminal emulator to xchat, and a bit of the terminal ended up overlaying the bottom fifth of the window. Stretched. Like you had stretched a texture over there.
19:28:38 <Vorpal> so bizarre
19:28:48 <Sgeo> Except I'd be more inclined to leave the checking for 0 bit as part of what happens due to [
19:28:52 -!- Phantom_Hoover has joined.
19:29:18 <Vorpal> I guess I'll blame the closed source AMD graphics drivers
19:31:17 <Vorpal> hublao, you could describe [ ... ] as while(*dataPtr) { ... } pretty much (in C)
19:31:44 <hublao> True Sgeo but someone might not decrement the location associated with '[', hence I asked.
19:31:58 <Vorpal> iirc that is what my compiler would generate when it couldn't figure out any way to optimize the loop
19:32:07 <hublao> Vorpal, true.I am trying to write a sinple interpreter for it but I am finding a way to implement nested [ ]
19:32:16 <Sgeo> hublao, locations in source code don't correspond to locations on tape
19:32:28 <Vorpal> hublao, you could do that by recursion surely
19:32:38 <Vorpal> hublao, I assume you parse it into a tree structure?
19:33:02 <hublao> not really Vorpal. Since I am new to it, I've used a stack and simple switch statement
19:33:17 <Vorpal> like (instr,data,ptrNext), and with a "down"-link to the content of the loop
19:33:32 <Bike> hublao: [] works with the current tape pointer, it's not saved. >+>+>+[-<] works
19:33:35 <hublao> wait a sec, I'll show you with what I've come up with
19:34:03 <Vorpal> hublao, well I only ever wrote compilers for brainfuck iirc, but what I did was simply parse it into a linked list, with a pointer to another linked list of the content of the loop
19:34:32 <kmc> brainfuck may be one of the few languages where it's easier to write a compiler (to C, say) than an interpreter
19:34:33 <Vorpal> then you could run it by simple recursion
19:34:41 <Vorpal> (parsing is already really easy with recursion)
19:34:50 <Vorpal> bbl, need to leave for half an hour or so, will be back later.
19:35:02 <Bike> well it's not like having [] in interpretation search for their match is all that hard
19:37:03 <hublao> http://pastie.org/private/hhomcydflvr4fnkd3th4mq
19:37:15 <hublao> Would like to have suggestions about how I should go next
19:39:33 <Bike> well you can search ahead in the [ case easily
19:40:33 <hublao> um I don't get it Bike . Search ahead what? another [ ?
19:40:34 <Bike> int depth = 1; while (depth) { if buf[i] == '[' ++depth; else if buf[i] == ']' --depth; ++i; } or so
19:40:40 <Bike> search for where to jump to
19:41:46 <hublao> But there are only 2 possible places to jump right ? If value is 0,jump to instruction after ']' which i=pop(&stack)+1 does
19:42:04 <hublao> else , I just have to go to next instruction , which is i++
19:42:19 <Bike> I thought the stack kept track of where [ is, not ].
19:42:31 <Bike> I'm looking at the "// have to add stuff here" bit.
19:42:54 <hublao> oh sorry, my bad
19:43:01 <hublao> I keep track of only [ Bike
19:43:17 <Bike> Right, so when you get to a [ to skip you have to look ahead.
19:44:00 <hublao> ah gotcha!
19:44:13 <hublao> and you might encounter another '[' so you've to save that too?
19:44:35 <Bike> Well, if you have [...[...]...] you have to skip to the second ] and not the first.
19:44:46 <hublao> yep
19:50:37 <hublao> Bike, do you think it'd be easier/better if I use 2 stacks to save [ and ] location info ?
19:52:47 <Bike> precomputing where everything jumps to would be fastest, i guess
20:01:07 <hublao> But stack wouldn't be appropriate data structure if I precompute the location Bike
20:02:17 <Bike> no, it wouldn't be.
20:11:40 <Vorpal> back
20:12:48 <Vorpal> hublao, I wouldn't run directly on a text string myself, rather I would parse and apply some basic optimisation (i.e. turn +++ into "add 3", or >> into "move 2 right")
20:12:59 <Vorpal> and then run the linked list that resulted
20:13:34 <hublao> I am making pretty basic version at the moment Vorpal . Will keep your suggestions in mind!
20:13:37 <Vorpal> hublao, this also easily allows skipping a loop that is never entered
20:13:52 <Vorpal> just do not follow the pointer to the loop-list
20:13:59 <Vorpal> but go to the instruction after the loop
20:14:41 -!- zzo38 has joined.
20:15:22 <hublao> Um.Now I am kinda confused.Did you look at my code Vorpal ?
20:15:32 <Vorpal> hublao, not yet
20:15:33 <Bike> hm, looks like my dumb one just searched for the [] every time, and then i skipped straight from that to a compiler
20:15:39 <Vorpal> hublao, I just suggested a general way
20:15:44 <Vorpal> then of course you can apply more advanced optimisations, such as observing that [-] is a "set to 0", thus you now know the value of that cell and can turn any further use of that cell in the current balanced block (that is, a section of code with no loops that move the pointer between the start and the end)
20:15:45 <hublao> okay
20:15:58 <Vorpal> that is, a loop like [>+<] is balanced, but [>+>] is not
20:16:04 <Bike> hm itrekkie isn't here, that's right
20:16:08 <hublao> Vorpal, all that will possibly in v2.0 ;p let me get a basic one working yet!
20:16:14 <Vorpal> the latter really harms optimising, since you lose track of where you are
20:16:23 <Bike> dude in ##asm's been learning the ins and outs of x86 from brainfuck of all things
20:16:26 <Vorpal> hublao, my main interest in brainfuck is optimising :)
20:16:57 <hublao> nice Vorpal ! But since this is my first attempt , my main interest is making a simple interpreter ;p
20:18:05 <pikhq> Making a very naive interpreter will give you fairly slow results. But, then, who cares. It's not like Brainfuck needs to be fast.
20:18:30 <hublao> hmm pikhq .Once I get naive one working , I can improve upon it.
20:18:35 <Vorpal> hublao, fair enough
20:19:18 <Vorpal> hublao, anyway writing a simple recursive parser for brainfuck that puts it into a linked list, then writing a recursive execution function working on that list is probably the easiest way to run it IMO
20:19:42 <Vorpal> and it makes it easy to apply optimisation further down the line
20:20:04 -!- oerjan has joined.
20:20:17 <Phantom_Hoover> note to self: actually rewrite the wiki brainfuck spec one day
20:20:26 <Vorpal> Phantom_Hoover, oh? What is wrong with it?
20:20:41 <Phantom_Hoover> no concept of syntax
20:20:42 <hublao> that sounds kinda complicated to me atm Vorpal .
20:20:51 <Vorpal> hm okay
20:20:57 <Vorpal> hublao, which bit of it?
20:21:09 <hublao> Vorpal, whole recursion thing
20:21:17 <Vorpal> uh
20:21:25 <Vorpal> hublao, what bit of recursion is an issue?
20:21:25 <hublao> I am focussing on fixing the code I've written atm
20:23:18 <Vorpal> hublao, when you find a [ you do something like currentNode.type = LOOP; currentNode->codeInLoop = myParser(myFILE, currentLoopDepth+1); You use the loop depth variable to detect if a [ is missing a matching ] or vice verse.
20:23:53 <hublao> hmm , I kinda get it
20:23:57 <Vorpal> hublao, then when you detect a ] you check that the loop depth is not 0 (in that case you have more ] than [) and return the code linked list you generated so far
20:24:34 <Vorpal> hublao, and when you get end-of-file you check that your loop depth *is* 0 (otherwise you have more [ than ]) and return your linked list
20:24:48 <hublao> I see
20:26:31 <Vorpal> hublao, as a result you have a linked list with structs along the lines of struct codeNode { InstructionType type; codeNode* next; codeNode* codeInLoop; } (the last member being a null pointer for non-loops)
20:27:25 <Vorpal> hublao, of course from there you can easily extend it, like adding a "count" field, for add/subtract so that you can merge +++ into "add 3" as I mentioned above. And so on.
20:28:33 <Vorpal> hublao, this representation is easy to do basic optimisation on (you might want something different if you go for really advanced stuff), easy to generate code from, if you want to compile. And easy to interpret.
20:30:12 <Vorpal> hublao, when you find a loop, you just do something like: switch (curNode->type) { ... case LOOP: while (*dataPtr) { interpret(curNode->codeInLoop); } break; ... }
20:30:52 <Vorpal> and after the switch statement you have curNode = curNode->next; at the end of the outer loop
20:31:51 <hublao> Okay Vorpal .Thanks for all the info.Also check PM.
20:36:01 -!- ogrom has quit (Quit: Left).
21:11:23 * Sgeo decides to make a rough outline of what his blog post will be
21:12:15 <Phantom_Hoover> a rectangle?
21:31:09 -!- DHeadshot has joined.
21:46:40 <kmc> rectangle? damn near killtangle!
21:47:31 -!- azaq23 has joined.
21:47:39 -!- azaq23 has quit (Max SendQ exceeded).
21:47:45 -!- hublao has quit (Quit: Leaving).
21:50:34 <Phantom_Hoover> `quote metaturing
21:50:36 <HackEgo> No output.
21:50:40 <Phantom_Hoover> :O
21:51:16 -!- Arc_Koen has joined.
21:51:43 <oerjan> `run echo "This wisdom entry was crushed by a falling anvil." >wisdom/metaturing
21:52:04 <Phantom_Hoover> was that in wisdom then?
21:52:05 <HackEgo> No output.
21:52:17 <Phantom_Hoover> `? metaturing
21:52:19 <HackEgo> This wisdom entry was crushed by a falling anvil.
21:54:01 <oerjan> it does not appear to have previously existed.
21:54:13 <oerjan> assuming i understand http://codu.org/projects/hackbot/fshg/index.cgi/file/23c726e07478/wisdom/metaturing
21:54:56 <Phantom_Hoover> wtf
21:55:03 <Phantom_Hoover> did it get deleted in a quote purge then
21:55:32 -!- impomatic has quit (Ping timeout: 248 seconds).
21:56:37 <Applejacques> `run hg export 0:tip | grep -i metaturing
21:57:08 <HackEgo> No output.
21:57:16 <Applejacques> Well.
21:57:18 <Applejacques> That didn't work.
21:57:41 <Applejacques> `run hg export 0:tip | head
21:57:44 <HackEgo> ​# HG changeset patch \ # User HackBot \ # Date 1329421352 0 \ # Node ID e037173e0012bed0fece931395ef4a22f213632a \ # Parent 0000000000000000000000000000000000000000 \ Initial import. \ \ diff -r 000000000000 -r e037173e0012 .hg_archival.txt \ --- /dev/nullThu Jan 01 00:00:00 1970 +0000 \ +++ b/.hg_archival.txtThu Feb 16 19:42:32 2012 +0000
21:57:53 <Applejacques> No idea why that didn't work.
22:00:17 <oerjan> Applejacques: Gregor has occasionally wiped the repository history
22:00:41 <oerjan> as you might conceivably know
22:01:04 * oerjan should learn to recognize these weird nicks some day
22:01:45 <oerjan> and also to suspect foul when Gregor doesn't tab complete.
22:05:15 <Applejacques> lul
22:05:32 <Applejacques> I haven't wiped the history since transactions came in.
22:05:35 <Applejacques> Not necessary any more.
22:05:38 <oerjan> OKAY
22:05:38 <Applejacques> `run du -h .hg/
22:05:41 <HackEgo> 7.0M.hg/store/data/bin \ 2.1M.hg/store/data/lib \ 37M.hg/store/data/paste \ 12M.hg/store/data/share/_word_data \ 20K.hg/store/data/share/lua/5.2/luarocks/build \ 28K.hg/store/data/share/lua/5.2/luarocks/fetch \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/unix \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/win32 \ 36K.hg/store/data/share/l
22:05:45 <Applejacques> >_>
22:05:49 <Applejacques> `run du -hc .hg/
22:05:51 <HackEgo> 7.0M.hg/store/data/bin \ 2.1M.hg/store/data/lib \ 37M.hg/store/data/paste \ 12M.hg/store/data/share/_word_data \ 20K.hg/store/data/share/lua/5.2/luarocks/build \ 28K.hg/store/data/share/lua/5.2/luarocks/fetch \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/unix \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/win32 \ 36K.hg/store/data/share/l
22:05:54 <Applejacques> >_<
22:05:56 <Applejacques> `run du -hs .hg/
22:05:59 <HackEgo> 147M.hg/
22:07:21 <oerjan> `run ls -ld .hg
22:07:24 <HackEgo> drwxr-xr-x 3 5000 5000 4096 Feb 2 21:52 .hg
22:07:53 <oerjan> should that really be writable from the sandbox?
22:08:00 <oerjan> or is it just a copy
22:08:16 <oerjan> (and if so, isn't it expensive to make a copy each time)
22:09:38 <oerjan> or wait hm
22:09:44 <oerjan> `run whoami
22:09:49 <HackEgo> whoami: cannot find name for user ID 5000
22:09:58 <oerjan> yeah it is the same user
22:10:36 <oerjan> Applejacques: couldn't someone mess up the repository by modifying .hg ?
22:10:44 <oerjan> `ls -l .hg
22:10:45 <HackEgo> ​/bin/ls: invalid option -- ' ' \ Try `/bin/ls --help' for more information. \ /bin/ls: invalid option -- ' ' \ Try `/bin/ls --help' for more information.
22:10:49 <oerjan> `run ls -l .hg
22:10:50 <HackEgo> total 308 \ -rw-r--r-- 1 5000 5000 57 Feb 16 2012 00changelog.i \ -rw-r--r-- 1 5000 5000 8 Feb 2 21:52 branch \ -rw-r--r-- 1 5000 5000 95 Feb 2 21:51 branchheads.cache \ -rw-r--r-- 1 5000 5000 134592 Feb 2 21:52 dirstate \ -rw-r--r-- 1 5000 5000 84 Feb 2 21:52 last-message.txt \ -rw-r--r-- 1 5000 5000 23 Feb 16 2012 requi
22:11:38 <oerjan> hm oh
22:12:16 <Applejacques> `run touch .hg/HURRHURR
22:12:18 <HackEgo> touch: cannot touch `.hg/HURRHURR': Read-only file system
22:12:24 <oerjan> EEK
22:12:30 <oerjan> OKAY THEN
22:22:38 -!- DHeadshot has quit (Read error: Connection reset by peer).
22:22:59 -!- DHeadshot has joined.
22:32:50 <oerjan> `fetch http://zzo38computer.org/esoteric/Arc_Koen/fueue.c
22:32:53 <HackEgo> 2013-02-02 22:32:52 URL:http://zzo38computer.org/esoteric/Arc_Koen/fueue.c [16242/16242] -> "fueue.c" [1]
22:33:01 <oerjan> `gcc fueue.c
22:33:15 <Arc_Koen> sorry I did not ask for zzo38 to update it
22:33:20 <Arc_Koen> yet
22:33:25 <oerjan> hm...
22:33:25 <HackEgo> No output.
22:33:26 <Arc_Koen> hey zzo38 are you busy at the moment?
22:33:37 <zzo38> Arc_Koen: I can update it if you have the thing to update.
22:33:43 <Arc_Koen> cool
22:35:26 <Arc_Koen> hmm I was looking for your emaila ddress but then I received a text message from an unknown number with not very nice things included
22:35:42 <zzo38> I don't have email
22:35:51 <Arc_Koen> well I don't have gopher!
22:36:20 <zzo38> You don't need to use gopher you can use the IRC to send it to me.
22:36:33 <oerjan> `run mv a.out bin/fueue
22:36:37 <HackEgo> No output.
22:37:06 <oerjan> `fueue 72 101 108 108 111 44 32 119 111 114 108 100 33 10 H
22:37:10 <HackEgo> Hello, world!
22:37:52 <oerjan> `fueue 48 ~!~)): [[48 [)):] [~!~)):] ~~) !][49 [~!~)):] [)):] )~]]
22:37:53 <HackEgo> 01101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101100110100110010110100101100110100101101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010
22:38:43 <oerjan> `ls interp
22:38:46 <HackEgo> ​/bin/ls: cannot access interp: No such file or directory \ /bin/ls: cannot access interp: No such file or directory
22:38:50 <oerjan> `ls
22:38:51 <HackEgo> ​= 0 \ bin \ canary \ dbg.out \ egobot.tar.xz \ etc \ factor \ factor-linux-x86-64-0.95.tar.gz \ foo \ foo.err \ foo.out \ fueue.c \ ibin \ interps \ karma \ lib \ paste \ quines \ quotes \ quotese \ run~ \ share \ test \ u \ wisdom \ zalgo.hs
22:38:54 <oerjan> `ls interps
22:38:57 <HackEgo> 1l \ 2l \ adjust \ axo \ befunge \ bfjoust \ bf_txtgen \ boof \ build.sh \ cfunge \ c-intercal \ clc-intercal \ dimensifuck \ egobch \ egobf \ fukyorbrane \ gcccomp \ gforth_quit \ ghc \ glass \ glypho \ kipple \ lambda \ lazyk \ linguine \ Makefile \ malbolge \ pbrain \ qbf \ rail \ rhotor \ sadol \ sceql \ trigger \ udage01 \ underload \ unlambda
22:39:13 <Arc_Koen> zzo38: did I just send you a file named fueue.c?
22:39:32 <Arc_Koen> via dcc
22:39:33 <zzo38> I have to receive it
22:40:04 -!- asiekierka has quit (Excess Flood).
22:40:45 <zzo38> OK, I have done
22:41:15 -!- asiekierka has joined.
22:41:40 <zzo38> Arc_Koen: The DCC SEND message was received twice somehow, but I managed to download it using netcat anyways without the problem
22:44:01 <Arc_Koen> yeah from my side it definitely looks like it'snot working properly
22:44:32 <Arc_Koen> aaaand here's fueue.ml
22:45:00 <Arc_Koen> so you don't have email? you're probably the first person I meet who doesn't
22:45:36 <Arc_Koen> (well, for some values of "meet" and not counting kids)
22:54:49 <oerjan> `fetch http://zzo38computer.org/esoteric/Arc_Koen/fueue.c
22:54:53 <HackEgo> 2013-02-02 22:54:51 URL:http://zzo38computer.org/esoteric/Arc_Koen/fueue.c [16311/16311] -> "fueue.c.1" [1]
22:55:10 <zzo38> OK, now I have fueue.ml
22:55:25 <Arc_Koen> thank you a lot
22:55:41 <oerjan> `run mv fueue.c.1 fueue.c
22:55:45 <Arc_Koen> I should probably go to bed now, I'm in the middle of a go tournament
22:55:49 <HackEgo> No output.
22:55:54 <Arc_Koen> today I had to play against the strongest player
22:55:59 <oerjan> `run sed -i s/1000/10000/ fueue.c #Whistles innocently
22:56:03 <HackEgo> No output.
22:56:11 <Arc_Koen> I think normally he'd give me three or four stones
22:56:22 <oerjan> `run gcc -o bin/fueue fueue.c
22:56:29 <HackEgo> No output.
22:57:28 <oerjan> `run echo "72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH"
22:57:30 <HackEgo> 72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH
22:57:38 <oerjan> sheesh.
22:58:06 <oerjan> `ls
22:58:13 <HackEgo> ​= 0 \ bin \ canary \ dbg.out \ egobot.tar.xz \ etc \ factor \ factor-linux-x86-64-0.95.tar.gz \ foo \ foo.err \ foo.out \ fueue.c \ ibin \ interps \ karma \ lib \ paste \ quines \ quotes \ quotese \ run~ \ share \ test \ u \ wisdom \ zalgo.hs
22:59:38 <oerjan> `printf 72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH
22:59:39 <HackEgo> 72 \ 101 \ 108 \ 108 \ 111 \ 44 \ 32 \ 119 \ 111 \ 114 \ 108 \ 100 \ 33 \ 10 \ H
22:59:59 <oerjan> `run fueue $(printf "72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH")
23:00:01 <HackEgo> Error: fueue received too many arguments. The Hello world program \ Hello, world!
23:00:06 <oerjan> hmph
23:00:33 <oerjan> `run fueue "$(printf '72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH')"
23:00:35 <HackEgo> Hello, world!
23:02:51 -!- impomatic has joined.
23:35:33 -!- Arc_Koen has left.
23:37:21 -!- asiekierka has quit (Excess Flood).
23:40:16 -!- asiekierka has joined.
23:46:16 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
23:53:03 <Sgeo> `list
23:53:05 <HackEgo> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
23:53:50 <nortti> oh wow. Taneb is under 50% of that list
23:58:18 -!- sirdancealot7 has joined.
←2013-02-01 2013-02-02 2013-02-03→ ↑2013 ↑all