00:01:21 <elliott> Jafet: ha, your suggestion might actually be required to implement e.g. 99bob
00:02:08 -!- derdon has quit (Remote host closed the connection).
00:04:55 <Friendship> No loops are necessary to implement 99bob ;)
00:06:28 <elliott> Ohh, I don't need dynamic statement creation
00:06:46 <elliott> Except I'd need universally quantified don't-come-froms >_>
00:08:00 <oerjan> don't-come-froms in the type system
00:09:18 <Friendship> How does one describe a programming language capable of implementing 99bob through more interesting means than cat does :)
00:10:06 <Jafet> nbob in O(log n) strokes
00:10:19 <Jafet> If you're feeling particularly generous, o(n)
00:10:38 <Jafet> As usual, see Knuth for more information
00:11:42 <Friendship> At the very least, the number of bytes you have to write is O(n), so there will be an O(n) multiplier. You can't do better than O(n). And cat can do it in O(n).
00:11:55 <oerjan> Friendship: i think he's referring to program size
00:12:29 <Jafet> The program is extensionally equivalent to the output, anyway, so the output size is also o(n).
00:12:33 <Friendship> I think the intuition we want is that an nbob program can be written which is parameterized on n.
00:13:44 <elliott> 10 don't come from 20 and don't come from 199 and set n to 100
00:13:44 <elliott> 20 don't come from 10 and set n to n-1
00:13:44 <elliott> 30 don't come from 100+(n==0) and exit
00:13:44 <elliott> 101 don't come from 10 and don't print n
00:13:52 <elliott> But having (==) is totally cheating, so lemme rework this...
00:14:23 <Jafet> The fun thing is that your programs are mostly uncomposable.
00:14:31 <elliott> 10 don't come from 20 and don't come from 100 and set n to 100
00:14:31 <elliott> 20 don't come from 10 and set n to n-1
00:14:31 <elliott> 30 don't come from 100-n and exit
00:14:31 <elliott> 100 don't come from 10 and don't print n
00:14:35 <Jafet> Well, it is less fun when you write the programs.
00:14:43 <elliott> Tada, that's for (int i=99;i;i--) printf("%d\n",i)
00:15:25 <elliott> This is the best paradigm, you guys.
00:15:46 <elliott> Just create a line that nothing can come from, and that can't come from itself
00:15:52 <elliott> That will lead to execution.
00:16:02 <elliott> Or execution of the program's life :P
00:16:33 <Friendship> The best thing about the CAPTCHA is it tells me when I forget to log in X-D
00:16:51 <elliott> 10 don't come from 20 and don't come from 30 and don't come from 100 and set n to 100
00:16:51 <elliott> 20 don't come from 10 and don't come from 30 and set n to n-1
00:16:51 <elliott> 30 don't come from 10 and don't come from 20 and don't come from 30 and don't come from 100-n and exit
00:16:51 <elliott> 100 don't come from 10 and don't come from 30 and print n
00:16:57 <elliott> Friendship: The old wiki had a CAPTCHA too :P
00:17:18 <elliott> It was just a trivial sum.
00:17:37 <Friendship> Was it already visible before you tried to edit? Maybe I just never thought about it because it didn't really interrupt me.
00:18:04 <elliott> 10 don't come from 20 and don't come from 30 and don't come from 200 and set n to 100
00:18:04 <elliott> 20 don't come from 10 and don't come from 30 and set n to n-1
00:18:04 <elliott> 30 don't come from 10 and don't come from 20 and don't come from 30 and don't come from 200-n and exit
00:18:04 <elliott> 200 don't come from 10 and don't come from 30 and print n
00:18:14 <elliott> (100-n would be actual program lines sometimes >_>)
00:18:21 <elliott> Friendship: It showed up once you tried to edit for the first time.
00:18:26 <ais523> elliott: is this a mix of INTERCAL and Forte?
00:18:37 <elliott> It was based on the same "framework", just disabled for registrations and using a simpler CAPTCHA module.
00:18:40 <elliott> ais523: No Forte, numbers don't change :P
00:18:52 <elliott> ais523: But it's an INTERCALish-control-flow constraint-solving tarpit.
00:18:57 <Jafet> C-INTERCAL, to be precise.
00:19:09 <elliott> So no, every INTERCAL apart from the original.
00:19:14 <elliott> And COME FROM is undeniably INTERCALish :P
00:19:46 <elliott> ais523: Basically, all you have on every line is an arbitrary number of don't come froms and one optional "additional" command (set, print, input or exit).
00:20:06 <elliott> Control flow starts at line 10, and then goes wherever it's not banned.
00:22:41 -!- zzo38 has joined.
00:22:53 <elliott> Come on, this is great!!!!!!!!! ! !
00:27:12 -!- pikhq_ has joined.
00:29:19 -!- pikhq has quit (Ping timeout: 252 seconds).
00:35:28 <elliott> Friendship: I pronounce fancy L as "L".
00:35:41 <elliott> "Fancy L" is an ugly pronunciation.
00:35:57 <monqy> I pronounce fancy l as "ℒ"
00:36:38 <ion> I pronounce fancy L as ⅃
00:37:11 -!- pikhq has joined.
00:37:19 <ion> Quadruple L: 卐
00:39:20 -!- pikhq_ has quit (Ping timeout: 265 seconds).
00:48:45 <ais523> wow at some date observations on Reddit
00:49:11 <ais523> HTML and Linux were initially announced within a week of each other
00:50:21 <elliott> hmm, print and input should probably operate with ASCII, not digits
00:50:30 <elliott> but one statement per character would be...
00:50:46 <elliott> oh, I'll just have both print <constant string> and print <integer>
00:57:58 -!- ais523 has quit (Remote host closed the connection).
01:04:43 <zzo38> I have added a few more to Truth-machine
01:07:05 <elliott> zzo38: are you sure dc is an esolang? :P
01:07:20 -!- pikhq has quit (Ping timeout: 245 seconds).
01:09:38 <zzo38> But it can be implemented anyways just to show the use of a few other programming languages that are different from others common ones.
01:12:42 -!- cheater_ has quit (Ping timeout: 244 seconds).
01:13:13 <elliott> Deewiant: How painful is using Trifecta?
01:25:02 -!- cheater_ has joined.
01:33:54 -!- pikhq has joined.
01:38:01 <elliott> @hoogle (a -> Bool) -> [a] -> m a
01:38:01 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
01:38:01 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
01:38:01 <lambdabot> Data.List dropWhile :: (a -> Bool) -> [a] -> [a]
01:38:10 <elliott> @hoogle (a -> Bool) -> [a] -> m (Maybe a)
01:38:10 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
01:38:10 <lambdabot> Data.Foldable find :: Foldable t => (a -> Bool) -> t a -> Maybe a
01:38:10 <lambdabot> Data.List findIndex :: (a -> Bool) -> [a] -> Maybe Int
01:40:53 <lambdabot> System.IO localeEncoding :: TextEncoding
01:40:54 <lambdabot> GHC.IO.Encoding localeEncoding :: TextEncoding
01:40:54 <lambdabot> Data.Time.LocalTime module Data.Time.LocalTime
01:41:35 -!- pikhq_ has joined.
01:41:38 <shachaf> kmc: I solved <https://stripe.com/blog/capture-the-flag> today. It was fun. You recommended io.smashthestack.org once, right?
01:42:21 <kmc> i too solved it today
01:42:28 <kmc> looking forward to my free t-shirt
01:42:32 <kmc> io.sts is a lot of fun
01:42:57 <shachaf> I spent far too long trying to do it in ways that didn't work.
01:43:06 <kmc> of the stripe one?
01:43:10 <shachaf> Maybe it's not that I'm insidious so much as that I'm stubborn.
01:43:14 <shachaf> Yes, I haven't done other ones.
01:43:29 <kmc> if you enjoyed it you should play io :D
01:43:42 <shachaf> I also spent far too long trying to stuff use argv[0] instead of buf in level03
01:43:59 <shachaf> I got it working without ASLR.
01:44:02 -!- pikhq has quit (Ping timeout: 276 seconds).
01:44:03 <kmc> (how does this channel feel about spoilers?)
01:44:55 <shachaf> Hmm, I guess that was a spoiler.
01:45:02 <elliott> kmc: Well, I just /clear'd in case I want to try it later.
01:51:09 <kallisti> any opinions on Enlightenment?
01:55:22 <kallisti> any opinions on the Enlightenment desktop environment?
02:03:30 -!- pikhq has joined.
02:04:01 -!- pikhq_ has quit (Ping timeout: 260 seconds).
02:13:55 <kallisti> have any of you guys switched to Gnome 3 and found it usable?
02:23:13 <elliott> # of people in here who have tried gnome 3: at least 2
02:23:17 <elliott> # of people in here who have tried gnome 3 and disliked it: at least 2
02:26:11 <kallisti> I feel so stuck when it comes to desktop environments...
02:26:19 <kallisti> I just want a well-maintained GNOME 2 forever. :P
02:27:45 -!- [insertnickhere] has joined.
02:27:55 <kallisti> maybe one day GNOME will be like "okay guys we were wrong we're switching back to a traditional desktop environment!"
02:28:25 <elliott> kallisti: just use xfce or switch to something better
02:28:37 <kallisti> "something better" what would that be.
02:28:47 <monqy> what's a desktop environment
02:28:48 <kallisti> that's the one I'm looking for.
02:29:04 <lambdabot> Network.CGI liftIO :: MonadIO m => IO a -> m a
02:29:04 <lambdabot> Control.Monad.IO.Class liftIO :: MonadIO m => IO a -> m a
02:29:04 <lambdabot> Network.CGI liftIO :: MonadIO m => forall a. IO a -> m a
02:29:12 <elliott> kallisti: Something that isn't a DE.
02:30:05 <kallisti> I'd have to invest a lot of time to even figure out if I want to use it.
02:30:18 <elliott> That applies to every environment equally.
02:30:37 <kallisti> I suppose it would be easier to get accustomed to than something like gnome 3
02:30:52 <elliott> Not with xmonad-contrib, anyway.
02:31:05 <kallisti> you're running Arch now right?
02:31:38 <elliott> Yes, but I plan to migrate to Debian.
02:32:09 <elliott> Because Arch is annoying me and I use Debian on solidity anyway.
02:32:22 <kallisti> I've heard bad things about out-of-date packages, which is the main reason I want to try something like Arch.
02:33:09 <elliott> Debian stable is out-of-date. Debian testing is not.
02:33:27 <elliott> Debian unstable is even less out-of-date (by a few weeks, and it keeps going through the release freeze), but is unstable.
02:33:31 <kallisti> what's the version of GHC for testing?
02:33:41 <elliott> If so, then testing will be more up to date than what you have.
02:33:57 <elliott> http://packages.debian.org/testing/haskell/ghc6 7.0.4
02:34:04 <elliott> http://packages.debian.org/unstable/haskell/ghc6 has 7.4.1, so testing should get it sometime soonish.
02:34:17 <elliott> (within the next few weeks, or maybe a month or two at the worst)
02:34:41 <elliott> (7.2 was in [testing], but got removed.)
02:35:04 <elliott> Oh, it's just called "ghc" nowadays, not ghc6.
02:35:07 <elliott> Presumably because it's no longer version 6.
02:35:35 <kallisti> I was basically debating Debian vs. Arch
02:36:01 <elliott> http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/
02:36:07 <elliott> (http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso to be specific.)
02:36:21 <elliott> Use the graphical installer (not expert), use empty root password to get sudo.
02:36:28 <elliott> Remember to de-check "Desktop environment", or it'll install GNOME.
02:36:42 <kallisti> oh wait I have to decide on what WM/DE I want.
02:36:49 <elliott> You can do that after installation.
02:37:15 <kallisti> that requires me to actually make a swift decision.
02:39:36 <elliott> kallisti: If you do use xmonad, don't use Debian's.
02:39:42 <elliott> (This applies to Haskell packages in general.)
02:39:47 <elliott> It is OK to use Debian's cabal-install, however.
02:39:51 <kallisti> I'll try it out in VirtualBox. I've certainly procrastinated long enough.
02:40:22 <kallisti> you cabal install xmonad is fine?
02:40:37 <elliott> Yes, that's fine. (You'll want cabal install xmonad-contrib pretty soon after that for non-trivial configuration.)
02:40:45 <elliott> Note that occasionally the nightly installer can fail to install a working system, but that's rare and will fix itself in a day or two.
02:41:00 <elliott> (The testing installer image is actually the nightly testing build of the installer itself that just happens to install testing.)
02:41:14 <kallisti> is there such a thing as a command line web browser?
02:41:56 <elliott> Do you seriously not know the answer to that?
02:42:52 <kallisti> I haven't had a need for a command line web browser.
02:43:10 <elliott> sudo apt-get install (w3m|lynx)
02:43:17 <elliott> But come on, how do you not know about lynx?
02:43:32 <kallisti> what set of circumstances would lead me to know about lynx?
02:44:09 <Jafet> wget $1 --output-document=- | html2text | less
02:45:00 -!- aloril has quit (Ping timeout: 265 seconds).
02:47:27 <kallisti> it's the second version of Web
02:47:44 <elliott> kallisti: Come on, w3m can do images.
02:49:10 <kallisti> reading Wikipedia is actually pretty reasonable.
02:50:03 -!- [insertnickhere] has changed nick to PiRSquared.
02:50:37 <kallisti> hmmm # thingies don't work correctly...
02:50:40 <kallisti> I don't remember what they're called
02:53:43 <kallisti> elliott: I have 4 GBs of memory, is 500 MBs reasonable for a VirtualBox install of Debian?
02:53:59 <elliott> and 512 is reasonable, 1024 would be reasonable too
02:54:11 <elliott> check free -m (second line) to see how much you can give away
02:54:26 <kallisti> I'm using exactly half of my memory right now.
02:57:43 <Jafet> VirtualBox.exe Private Bytes 144,520 K Working Set 108,544 K
02:57:54 -!- aloril has joined.
03:03:09 <elliott> Jafet: WINDOWS USER DETECTED
03:04:46 <Jafet> mv /usr/bin/VirtualBox /usr/bin/VirtualBox.exe
03:05:37 -!- NihilistDandy has quit.
03:06:05 -!- oerjan has quit (Quit: Good night).
03:08:13 <kallisti> wow this installer is really swift...
03:08:52 <elliott> kallisti: Oh, and you don't want the automatic HD formatting stuff.
03:08:58 <elliott> It creates like 4 partitions.
03:09:08 <elliott> It'll offer to organise the HD partitions for you.
03:09:15 <elliott> Just choose the manual partitioner and create one big jfs partition or whatever.
03:09:34 <kallisti> why not have an encrypted home?
03:09:44 <Jafet> Why not have an encrypted /?
03:09:47 <kallisti> I mean, for this VM it matters not...
03:10:03 <elliott> kallisti: You can do that by doing that.
03:10:12 <elliott> It'll offer to do LVM stuff for you.
03:10:12 <Jafet> All that /home stuff only makes sense for multi-user systems.
03:10:16 <elliott> But, err, have you ever used LVM?
03:10:34 <elliott> I'd recommend not caring about encryption, then.
03:11:01 <kallisti> unless that's what Ubuntu does..
03:12:28 <kallisti> "All files in one partition" that doesn't sound like 4 partitions to me.
03:13:28 <elliott> Well, that might work. But it'll use the wrong filesystem.
03:14:11 <kallisti> (note: that's "for some value of elliott")
03:14:33 <kallisti> maybe I should say fsvoe-wrong
03:15:09 <elliott> kallisti: Well, ext3 is deprecated.
03:15:13 <elliott> ext4 is planned to be deprecated by design.
03:15:17 <elliott> btrfs is unstable and Oracle-controlled.
03:15:23 <elliott> It's almost certainly going to select ext4.
03:16:15 -!- aloril has quit (Ping timeout: 255 seconds).
03:16:56 <elliott> kallisti: So unless you *want* to store your data on something planned-obsolete for btrfs by design...
03:17:49 <kallisti> maybe I just don't give a shit for this install...
03:19:30 <elliott> The idea of a test install is that you do what you plan to do for real, but whatever.
03:19:34 <kallisti> what is the One True Elliott filesystem.
03:20:11 <kallisti> my main goal is to see how I like Debian with various interfaces on top.
03:20:19 <kallisti> the filesystem choice isn't really crucial to any of that.
03:20:36 <elliott> By the way, if you try Xfce, don't install xfce4-goodies. Just install the core xfce package.
03:21:21 <Friendship> Second by the way: Use XFCE. It's the only tolerable one ^^
03:22:50 <kallisti> I'm pretty sure I already know what to expect from XFCE, but I might try it if I don't like xmonad.
03:22:57 <kallisti> and then, there's always KDE...
03:22:59 -!- zzo38 has left.
03:23:02 -!- zzo38 has joined.
03:23:07 <elliott> KDE 4 is unmitigated shit.
03:23:28 <elliott> (You can also ask Friendship, pikhq and Vorpal, former users of KDE 3, if you want a second opinion on this.)
03:23:37 <elliott> At least I think pikhq used KDE 3.
03:24:13 <kallisti> it's for some reason taking a reaaaalllly long time to erase data on the virtual hard drive its installing itself on...
03:24:25 <elliott> There are no existing partitions.
03:24:49 <elliott> How did you set up the filesystems?
03:25:22 <kallisti> with the automatic settings, on the one sda device available to install on, using encrypted LVM
03:29:37 -!- aloril has joined.
03:47:09 -!- Nisstyre has quit (Quit: Leaving).
03:50:45 <Friendship> As much as ais wants me to keep this nick, I think I prefer "Gregor"
03:54:16 <shachaf> Wait, ddarius isn't the maintainer anymore.
04:06:33 -!- augur has joined.
04:11:57 -!- PiRSquared has quit (Quit: restarting client).
04:15:38 -!- pikhq_ has joined.
04:18:21 -!- pikhq has quit (Ping timeout: 240 seconds).
04:22:41 <elliott> Hmm, starting execution at line 10 is ugly.
04:22:50 <lambdabot> Data.IntMap findMin :: IntMap a -> (Key, a)
04:22:50 <lambdabot> Data.IntSet findMin :: IntSet -> Int
04:22:51 <lambdabot> Data.Map findMin :: Map k a -> (k, a)
04:22:52 <lambdabot> Data.IntMap minView :: IntMap a -> Maybe (a, IntMap a)
04:22:52 <lambdabot> Data.IntSet minView :: IntSet -> Maybe (Int, IntSet)
04:22:52 <lambdabot> Data.Map minView :: Map k a -> Maybe (a, Map k a)
04:23:17 <lambdabot> *Exception: Map.findMin: empty map has no minimal element
04:23:23 <elliott> shachaf: Look at that shit.
04:24:26 <shachaf> Well, ASCII partial question, get a partial ANSI
04:25:36 <elliott> type Exec = ReaderT Program (StateT Env (RandT StdGen IO))
04:28:27 <elliott> Do I have enough monads yet?
04:30:10 <shachaf> You should name your program ExecMonad
04:36:36 <kallisti> wait what distinguishes RandT from StateT
04:40:35 <elliott> *Main> System.Random.newStdGen >>= (Control.Monad.Random.runRandT (Control.Monad.State.runStateT (Control.Monad.Reader.runReaderT run test) M.empty) $)
04:42:08 -!- MoALTz has quit (Read error: Operation timed out).
04:42:26 <kallisti> well, according to the source, RandT is just a newtype of StateT
04:42:51 -!- MoALTz has joined.
04:44:28 <elliott> kallisti: What's the difference between anything and \mathbb{N}?
04:44:48 <kallisti> notice I didn't say anything about it being useless as a result.
04:45:12 <kallisti> I was curious as to what the implementation difference was, I found that the answer was "not very much", and commented on it.
04:48:11 <zzo38> Do you think you are going to lose if you have PROFESSOR OAK card?
04:49:08 <elliott> 10 don't come from 10 and don't come from 21+c and getchar c
04:49:08 <elliott> 20 don't come from 11+c and don't come from 20 and putchar c
04:49:28 <zzo38> Sometimes my opponent's resistance to my attacks is actually to my advantage
04:49:45 <zzo38> And it isn't really rare either
04:50:04 <elliott> Come on, guys, this is literally the perfect paradigm.
04:50:19 <elliott> Wait, it's slightly broken.
04:50:30 <elliott> 10 don't come from 10 and don't come from 21+c and getchar c
04:50:30 <elliott> 20 don't come from 11+(c%2) and don't come from 20 and putchar c
04:51:26 <elliott> % almost makes loops TOO EASY.
04:51:45 <zzo38> They don't have enough energy to attack, they won't get knocked out, they have not enough energy to retreat either, and they are also confused.
04:51:58 <elliott> I bet zzo38 likes my language. :(
04:52:29 <zzo38> How much do you want to bet?
04:52:54 <zzo38> I do not have that much money do you have a lot of money?
04:53:55 <elliott> Friendship: BTW, sorry for omitting the fact that ℒ is defined as P restricted to just the program L from [[ℒ]].
04:53:56 <zzo38> Can you bet against someone who does have a lots of money?
04:53:59 <elliott> Not quite sure how I managed that.
04:54:03 <shachaf> elliott might even have... An awful lot of money.
04:54:12 <shachaf> Which is enough for a big diamond, you know.
04:55:29 -!- MoALTz has quit (Read error: Operation timed out).
04:56:16 <elliott> shachaf: Do *you* like my language?
04:56:47 <shachaf> I think you should mind your language, young man.
04:57:05 <elliott> Do you ever say anything interesting?
04:57:18 <Friendship> elliott: *defined as L restricted to ust the program P
04:57:26 -!- MoALTz has joined.
04:57:28 * shachaf hasn't been reading the logs.
04:57:36 <shachaf> Wait, an esoteric language in #esoteric?
04:57:49 <elliott> 10 don't come from 10 and don't come from 20 and don't come from 30 and don't come from 200 and set n to 100
04:57:49 <elliott> 20 don't come from 30 and set n to n-1
04:57:49 <elliott> 30 don't come from 10 and don't come from 20 and don't come from 30 and don't come from 200-n and exit
04:57:50 <elliott> 200 don't come from 10 and don't come from 30 and print n
04:57:54 <shachaf> Go to, like, some other channel for that, man.
04:57:57 <elliott> This program prints 99, 98, ..., 0 and then stops. I think.
04:57:58 <shachaf> No, I don't like your language.
04:58:25 <shachaf> Needs more indirect comefrom.
04:59:10 <zzo38> My opponent is idiotic they keep playing bench pokemon cards but in fact their bench pokemon cards keep getting knocked out due to their resistance to my cards. But even if they didn't do that, they would still lose due to running out of cards in their draw pile because they have card "advantage"... ya, right... what kind of "advantage" is that???
05:00:01 <coppro_> zzo38: Are you confused about the notion of card advantage or quoting?
05:00:26 -!- coppro_ has changed nick to coppro.
05:00:28 <zzo38> coppro_: I am not confused. It is my opponent who is confused
05:00:35 <shachaf> elliott: Why doesn't 200 come from 200?
05:00:48 <zzo38> I told you already
05:00:52 <coppro> zzo38: card advantage is a significant advantage
05:00:57 <elliott> shachaf: Because it shouldn't jump straight from 200 to 200.
05:01:02 <elliott> It should go to 20 (to decrement) first.
05:01:17 <zzo38> coppro: Only if the cards can get them out of the bad situation in time.....
05:03:50 <elliott> coppro: What kind of "advantage" is that?
05:04:37 <coppro> zzo38: In specific moments it may not be the ideal play to go for more cards
05:04:44 <coppro> but in the long term, the player with more cards wins most TCGs
05:04:47 -!- MoALTz has quit (Read error: Operation timed out).
05:05:56 <coppro> and most games end before anyone gets decked
05:07:24 <zzo38> I usually win a quarter of the time due to opponent getting decked because my defense is strong enough (often my opponent's resistance to me and stuff like that is what is to my advantage, not theirs)
05:12:44 <zzo38> If you think that resistance is good thing to have then you are also confused
05:13:31 <kallisti> zzo38: you should use your Secret Strategy and use it to win pro games.
05:13:52 <zzo38> kallisti: It isn't secret I told you what it is.
05:14:04 <kallisti> you could capitalize off of that.
05:14:21 <zzo38> I suppose the pros must know too, isn't it?
05:15:35 <kallisti> coppro just threw some fancy strategy-related terminology and you demonstrated how it's meaningless. maybe the pros are just stuck in a broken vocabulary.
05:16:03 <coppro> I judge Magic tournaments
05:16:08 <elliott> It's OK: coppro is just confused.
05:16:23 <zzo38> coppro: OK; well, I was talking about Pokemon card it is a different game. Specifically, Pokemon card old-style.
05:16:32 <elliott> coppro: STICK TO YOUR OWN GAME.
05:16:32 <kallisti> I know in SC2 strategy it's very common that a strategy "just works" because it beats the common trend in that matchup.
05:16:49 <elliott> 10 don't come from 10 and don't come from 20 and don't come from 30 and don't come from 200 and set n to 100
05:16:49 <elliott> 20 don't come from 30 and set n to n-1
05:16:49 <elliott> 30 don't come from 10 and don't come from 20 and don't come from 30 and don't come from 200-n and exit
05:16:49 <elliott> 200 don't come from 10 and don't come from 30 and print n
05:16:49 <elliott> (10) [10, 20, 30, 200] n = 100
05:16:53 <elliott> (30) [10, 20, 30, 200-n] exit
05:16:57 <elliott> shachaf: The former is, like, the better syntax, right?
05:17:26 <kallisti> well, most of those strategies are reliable in their own right, but they're especially effective because they beat the common strategy of the month, or whatever.
05:17:33 <shachaf> I don't believe there could be a good syntax for this language.
05:17:51 <elliott> shachaf: You're just jealous because you haven't invented your own esolang.
05:18:13 <kallisti> elliott: that's definitely shorter, which is better for an esolang IMO.
05:19:08 <zzo38> kallisti: What does SC2 strategy mean?
05:19:21 <shachaf> The definition went something like s/blah/>/ s/bluh/</ and so on.
05:19:28 <shachaf> I did it just to annoy you, or someone in this channel.
05:19:36 <elliott> kallisti: Shorter is not better for esolangs. That's terrible.
05:19:48 <shachaf> elliott: Yes, OK, I'm just jealous.
05:19:49 <kallisti> elliott: s/shorter/more concise/ there is that better?
05:20:25 <kallisti> elliott: all of the english word bloat is just obfuscating the computational model blah blah
05:21:02 <kallisti> give me a reason I shouldn't moderately improve the semantics of Dupdog, and then name the result "Dupdog"
05:21:20 <elliott> Because you'd "improve" it by making it trivially TC and also you're dumb.
05:21:29 <kallisti> I plan to name that language something else.
05:22:07 <elliott> Call the result Dupdog++ or something.
05:22:37 <elliott> Hey shachaf, how should I handle EOF on numeric input?
05:22:50 <kallisti> implementation defined. problem solved.
05:23:04 <shachaf> elliott: Undefined behavior.
05:23:27 <shachaf> Implementation-defined behavior.
05:23:32 <shachaf> Wait, are we still talking about your language?
05:25:49 <shachaf> Define EOF to launch missiles.
05:26:42 <shachaf> Why does eliot hate me. :-(
05:26:47 <zzo38> Have you ever read about Washizu Mahjong? The reason Washizu lost is because he made up a rule that only he is allowed to decide whether to continue or to stop after every 2 hanchan. Akagi did multiply all money/blood lost by ten which is why Washizu was allowed to make up that rule. Both rules combined is what make such things happens
05:29:25 <kallisti> elliott: just have the program terminate if it attempts to read numeric input on EOF.
05:30:30 <elliott> That's horrible. That makes numeric input unusable. :(
05:31:09 <elliott> Because you can't handle EOF.
05:31:50 <elliott> That makes inputting -1 impossible.
05:32:26 <shachaf> <elliott> That makes inputting -2 impossible.
05:33:29 <kallisti> also what's the name of this language so I read about it.
05:33:59 <kallisti> just make an esoteric exception system
05:34:06 <kallisti> I recommend the one that I and, I think ais, came up with
05:34:18 <kallisti> that has a "lower" in addition to a "raise"
05:34:49 <zzo38> And what does the "lower" mean?
05:35:07 <kallisti> (throw/unthrow works as well, as far as naming)
05:35:27 <kallisti> lower would signal the exception down a stack level, or terminate the program if it's at the lowest point already.
05:35:37 <kallisti> raise is your typical exception throw, which travels upward.
05:35:57 <elliott> I think you have your directions reversed.
05:36:04 <elliott> But running code is always at the (top|bottom)most element of the stack.
05:36:07 <elliott> So I don't see how that would work.
05:36:20 <kallisti> well, that would have to not be the case.
05:36:40 <elliott> Oh, so unthrow would work in a catch block only?
05:36:54 <kallisti> yeah that's the simplest way I see it working..
05:37:05 <kallisti> there's possibly other ways to do it that I haven't considered, of course.
05:37:11 <elliott> CL's conditions can do that.
05:37:23 <elliott> i.e. you can raise a condition in the code that raised one, inside a handler thing.
05:38:26 <kallisti> also in terms of raise/lower mismatch. I'm sorry that I was once a heavy Python user.
05:39:38 <kallisti> but yeah esoteric exception system
05:40:33 <kallisti> otherwise a) terminate b) use some special value c) implementation defined
05:41:31 <elliott> (c) i'm writing the impl right now
05:41:48 <kallisti> then yeah, since those four options are the DOMAIN OF ALL POSSIBILITY
05:42:01 <kallisti> that means you have to make an esoteric exception system.
05:43:22 <elliott> I'm considering just removing numeric IO support.
05:43:47 <elliott> But since there's no way to abstract anything since every change affects the whole program, decimal conversion would be... "fun".
05:44:28 <elliott> Other than that, I'll probably go with (a).
05:52:50 <elliott> nexts :: Integer -> Program -> Exec [(Integer, Command)]
05:52:51 <elliott> nexts i = fmap (`appEndo` []) . execWriterT . mapM_ consider . M.toList
05:52:51 <elliott> consider (j, Line es c) = do
05:52:51 <elliott> ok <- lift $ noneEqual i es
05:52:51 <elliott> when ok . tell . Endo $ ((j, c) :)
05:52:55 <elliott> This would be elegant, were it not so slow.
05:55:07 -!- Tiktalik has changed nick to Captain_Obvious.
05:55:13 -!- Captain_Obvious has changed nick to Tiktalik.
06:12:04 <zzo38> What if you use indexed writer monad, in case you can use morphisms that are not endomorphisms?
06:27:30 <Sgeo> elliott, I assume you keep up with /r/haskell
06:27:38 <Sgeo> Note the separation of conduits from resourcet
06:39:29 <elliott> I do keep up with /r/haskell, yes.
06:39:54 <elliott> @hoogle m a -> k -> Map k a -> m a
06:39:54 <lambdabot> Data.Map findWithDefault :: Ord k => a -> k -> Map k a -> a
06:39:54 <lambdabot> Data.Graph.Inductive.Query.BFS lesp :: Graph gr => Node -> Node -> gr a b -> LPath b
06:39:54 <lambdabot> Data.Graph.Inductive.Query.BFS esp :: Graph gr => Node -> Node -> gr a b -> Path
07:37:10 <olsner> ah, I see some good ideas came about during the night... don't come from :)
07:37:45 <olsner> elliott: have you implemented that yet?
07:37:57 <elliott> olsner: i have a haskell implementation, yes, though one without a parser
07:42:03 <elliott> lineno don't come from X and don't come from Y and ... and (set VAR to EXPR | getint VAR | getchar VAR | putstr "literal string" | putint EXPR | putchar EXPR)
07:42:08 <elliott> except you can also leave out the command on the end
07:42:20 <elliott> and expr is const/var/negate/add/sub/mul/div/mod
07:42:28 <elliott> dunno whether it needs anything more for the turingosity
07:43:03 <olsner> sounds like it has too little state, unless the variables are arbitrary-precision
07:43:41 <elliott> though, yes, you might need "infinite lines" to do BF or such because of that
07:43:42 <lambdabot> 999999999999999999999999999999999999999
07:43:44 <elliott> however modulo is very helpful there
07:44:41 <elliott> olsner: so how much do you know about rsync :P
07:45:19 <elliott> excellent, how decent is the daemon stuff
07:45:31 <olsner> no idea, I've only used it over ssh
07:48:40 -!- pikhq has joined.
07:48:48 -!- pikhq_ has quit (Ping timeout: 252 seconds).
07:52:35 -!- fungot has joined.
07:53:17 <elliott> fizzie: Thanks; WHAT DO YOU KNOW ABOUT SRYNC
07:53:43 <fizzie> Isn't it some kinda band? Wait, no, that was 'N Sync.
07:54:32 <fizzie> I know it does deltas.
07:55:08 <elliott> Like, be more helpful, 'n shit.
07:55:16 <fizzie> (That's not even a Greek Δ, it was the mathematical-operator ∆.)
07:55:29 <fizzie> I'm not sure what you want to know about it.
07:57:29 <elliott> Like, the daemon, and shit.
07:59:58 <fizzie> 'vn't used it; I've just done the pass-over-ssh one. (Though I guess technically it runs the same code, it just spawns the remote side over ssh instead of having a DEMONIC.)
08:02:04 <fizzie> Oh, I see you interromagated others, like, just before. (Also haven't done any zsyncing.)
08:03:34 -!- ChanServ has set channel mode: +o fizzie.
08:03:36 -!- fizzie has kicked fizzie We don't tolerate unhelpful people around these parts..
08:03:36 -!- fizzie has joined.
08:04:05 <elliott> Have you considered that you may be feeding my narcissistic God complex?
08:04:47 <fizzie> I don't generally "consider".
08:05:03 <fizzie> Hmm. I didn't think it'd autojoin. I'm not supposed to have anything like that on. Though maybe it's the bouncer.
08:05:15 <fizzie> "autojoin_on_kick (default: true): If set to false bip will not attempt to re-join a channel from which you were kicked."
08:05:19 <fizzie> What sort of foolishness.
08:05:43 <fizzie> I know channels where you get autobanned for autojoining after an (auto)kick. (Okay, the last one is not typically auto.)
08:06:27 <elliott> It should be. Can you set up a bot to automatically kick people?
08:06:28 <ion> ಠ_ಠ What client defaults that to true?
08:06:51 <ion> Oh, bip. Missed it.
08:07:01 <ion> Note to self: avoid bip
08:07:19 <fizzie> It's not exactly a client, but still.
08:07:43 <elliott> It's a bouncbereoubrcaerboaercoaerc bonbon.
08:11:00 <zzo38> If I make document new programming language similar Haskell but half of things difference and other things too, then maybe it can be called "Ibtlfmm"? (O, it is like, "Iuckqlwviv Kjugobe", but completely difference except first letter? Also the letter they seem to just put together... but both of these thing have their ways of making the letters)
08:11:37 <ion> > map pred "Iuckqlwviv Kjugobe"
08:12:33 <zzo38> Both of these thing have their *different* ways of making the letters.
08:14:18 <zzo38> How many Scrabble variants have you played?
08:15:37 <zzo38> How many have you heard of, read about, and/or invented?
08:18:29 <shachaf> elliott: SCRABBLE EXCEPT ALL THE TILES ARE BLANK
08:18:39 <olsner> scrabble is called alfapet over here
08:18:46 <zzo38> I know about Ecology Scrabble, where if there is blank tile on the board, and you have a letter in your rack which can be used in its place, then you can switch it around (and it is still your turn).
08:19:07 <elliott> shachaf: Scrabble where you flip a coin but it's really really big.
08:19:22 <zzo38> I also know a variant where the game is timed using chess clocks. Each player is given 18 minutes per game.
08:19:41 <shachaf> I also know a variant where the game is timed using chess clocks. Each player is given 19 minutes per game.
08:20:22 <zzo38> Is it the same except the time limit?
08:20:58 <shachaf> I also know a variant where the game is timed using chess clocks. Each player is given 40000 minutes per game.
08:21:45 <itidus20> I also know a variant where the game is timed using chess clocks. Each player is given 30 minutes per game.
08:22:17 <elliott> I also know a variant where the game is timed using chess clocks. Each player is given G_64 minutes per game.
08:22:30 <shachaf> I also know a variant where the game is timed using chess clocks. Each player is given -1 minutes per game.
08:22:58 <zzo38> And there is double-bag Scrabble, in which you put all the consonants in one bag and vowels in another, and then when you pick up tiles from the bag you select at first, how many consonants do you want and how many vowels do you want.
08:23:35 <zzo38> Another idea would be double-deck, where there is twice as many of all tiles; possibly you can extend the board by adding an extra row/column at each edge.
08:25:26 <zzo38> The way I prefer to treat blanks is that the letter it corresponds to can change at any time as long as it is the same letter at the beginning of your turn as it is at the end of your turn, and the same letter horizontally as it is vertically.
08:27:10 <ion> Scrabble in 4D!
08:28:34 <ion> I wonder what they’ll call 3D movies when real 3D display technology becomes available, since they call stereo-2D “3D” now? “4D”?
08:29:15 <itidus20> conti-- contingent on it being scrabble
08:29:32 <fizzie> ion: Perhaps 3.5D. (See: 3.5G networks.)
08:29:51 <zzo38> The way I usually play is "challengeless"; you are allowed to view the dictionary at any time whether or not it is your turn, and if you challenge a word there is no penalty; if it is a correct word nothing happens and if it is incorrect the player takes back the tiles and can play again. It can be combined with timed games to make time penalties for such things
08:30:12 <fizzie> ion: There's already a "4D movie theatre" at the Linnanmäki amusement park. (It's got chairs that wiggle and some water-sprayers or whatevers.)
08:30:26 <zzo38> ion: I dislike calling those movies "3D"; I call it "stereovision" instead
08:30:31 <elliott> shachaf: Can you write my declarative debugger for me?
08:30:34 <ion> Three spatial dimensions and one wetness dimension
08:30:48 <fizzie> It doesn't do stereo-2D, though. :p
08:30:53 <itidus20> ................... getting ideas
08:31:05 <elliott> shachaf: Also, have you rsync?
08:31:06 <fizzie> (It's been there long before "3D" movies popularimatized.)
08:31:19 <shachaf> "I declare this program debugged"
08:31:19 <elliott> shachaf: Have you rsync daemon?
08:31:40 <shachaf> What's the rsync question?
08:31:44 <itidus20> scrabble using an alphabet in mathematical sense
08:32:13 <shachaf> Scrabble where the board gets random reärranged on every turn.
08:32:50 <itidus20> what about.. a befunge scrabble
08:33:11 <ion> Scrabble where the tiles have single digits and the words must be base-36 numbers which represent ASCII strings.
08:33:41 <elliott> I repeat: Scrabble where you flip a coin but it's really really big.
08:33:56 <ion> The that’s-what-she-said scrabble?
08:34:37 <shachaf> Scrabble where the only legal move is to describe a Scrabble variation.
08:34:54 <zzo38> itidus20: Yes I have thought of various things like that, not only brainfuck with matching [] but also where pipes must be connected, where numbers are used and you must subtract or multiply or compare them or something, and even an idea where the tiles have one meaning horizontally and another vertically
08:35:46 <itidus20> i think we can safely agree that continuous scrabble is only going to derail the conversation, and thus disregard.. lions tigers and bears
08:37:01 <ion> A scrabble board with a torus topology.
08:37:23 <itidus20> ack.. ive been here long enough that the tropes seem old
08:37:42 <ion> Scrabble in rot-13.
08:38:01 <shachaf> Scrabble where the only letter is Q.
08:38:04 <quintopia> ion: that one has the nice benefit that we already know what tile distribution to use
08:39:08 <zzo38> What about, a Scrabble game where the tiles are marked on both sides, with different letters on each side so that each tile has two purposes
08:39:28 <shachaf> Little known fact: The other side of every scrabble tile is blank.
08:40:07 <quintopia> shachaf: if you know the paddle move, you can win at scrabble every time
08:40:10 <zzo38> shachaf: I know that, but the other side is not usable in the game
08:40:14 <ion> Palindrome scrabble
08:40:50 <zzo38> Some people play by mixing tiles face down, others in a bag. Another way is to use the bag and gloves like Washizu Mahjong does.
08:40:51 <quintopia> (until your friends notice there are five blank tiles on the board...recommend getting them drunk first)
08:41:05 <zzo38> But that is cheating
08:41:25 <quintopia> zzo38: yes, zzo38. Cheating is a scrabble variant
08:41:40 <zzo38> (Unless you make a variant where it is allowed, of course; in which case you can play any tile blank and not earn points for it)
08:41:50 <quintopia> indeed, zzo38, i just used "zzo38" twice in that last post, zzo38
08:44:44 <itidus20> I also know a variant where the game is timed using chess clocks. Each player is given 20 minutes per game.
08:47:03 <zzo38> Is there a way to use TFM ligature/kern programs or combining with something, and will make it Turing complete?
08:58:47 <shachaf> There's also the variant where all the tiles are blank and each one is worth more points than all the others put together.
08:59:49 -!- NihilistDandy has joined.
09:00:21 <zzo38> Make up some esolang that forms a category, but that it is not Cartesian-closed, that the objects do not correspond to the types, and the morphisms do not correspond to functions
09:00:37 <zzo38> So it is a completely different kind of category than would be used in such as Haskell and so on.
09:13:30 <zzo38> "Catch-22 (logic): A situation where someone is in need of something that can only be had by not being in need of it." I have once made up a computer game like that, where at one point in the game you are offered two water energies, but they say they will only give it to you if you don't need it. (You do need it later in the game.) However, if you say you don't need it they do believe you anyways
09:14:27 <shachaf> That's not how Catch-22 works.
09:15:43 <zzo38> I know, it is not quite like that. I simply copied the description from Wikipedia and then mentioned something I made before, based on what the description reminded me of.
09:16:31 <quintopia> a real catch-22 is the newcomb paradox played by someone with a $1,001,000 debt
09:17:21 <zzo38> O, now I understand!
09:30:48 <zzo38> I have read article about "Chainstore paradox" in Wikipedia; what is the goal? If the goal of each player is to maximize his own score, it seem A should always select COOPERATIVE (since that gives A two points) and therefore everyone else should always select IN (since that gives them two points when A selects COOPERATIVE). I am a bit confused?
09:39:59 <zzo38> As far as I can tell they should not select OUT just because if AGGRESSIVE is selected once in order to deterence, it seem wrong since that prevents earning a score, just once, while it is each one an individual adding to the score you cannot affect the past
09:45:07 -!- NihilistDandy has quit.
09:56:16 -!- elliott has set topic: So good to be in the Morning....In America! | http://codu.org/logs/_esoteric/ | http://esolangs.org/wiki/ has moved servers!.
09:59:12 <zzo38> In here, is night time
09:59:25 <elliott> That's because you're not in True America.
10:01:14 <ion> “So good to be in the Morning....In America!” doesn’t necessarily imply it *is* morning in America.
10:01:45 <zzo38> No, the reason is because of timezone; whether or not you are in True America is irrelevant.
10:10:46 <monqy> in True America it is always morning
10:10:52 <monqy> this is how I can tell it is morning in True America
10:11:36 <zzo38> I have a map of where the sun rises.
10:15:52 <quintopia> i'll give you a hint everyone: anywhere outside the arctic circle, and most places within it
10:16:19 <zzo38> No, I mean for a given date and time
10:17:22 <elliott> quintopia: not in True America
10:17:26 <elliott> the sun never sets, so it never rises
10:17:41 <elliott> an eagle cries off in the desert, weeping for Freedom; he dwells in False America
10:18:18 <quintopia> elliott: you are a liar and a heretic
10:18:31 <quintopia> the sun is always rising in true america! because it is always morning!
10:19:11 <elliott> a moving sun would be imperfect
10:19:18 <elliott> it's So Good morning because it's always the best
10:19:36 <elliott> NOTE : this america ( C ) president of america
10:20:30 <quintopia> elliott: it is not the sun that moves. it is the hopes and dreams of True Americans that is truly rising!
10:21:51 <elliott> Foul! Cretin! Devil! They cannot rise because they are already at maximum levels of dreaming and hoping!
10:23:01 <monqy> they rise beyond the maximum
10:24:17 <elliott> http://esolangs.org/wiki/Basic_Input/Output_Commander i am not sure what to make of this
10:45:13 <itidus20> i kind of like the insane-ness of BIOC
10:46:20 <itidus20> write vga0:587:172 127 .. writes color 127 to pixel at (587,172)
10:47:55 <itidus20> and.. write con:0 65 66 67 68 .... writes ABCD to the console
10:49:51 <itidus20> if i can understand it, it probably isn't very esoteric
10:50:14 <quintopia> if it could somehow be granted permission to write to any memory location, it could be, in combination with a turing-complete cpu, a turing-complete language, yes?
10:50:16 <monqy> itidus20, the new standard for esoteric
10:50:51 <itidus20> i dont fully understand it though
10:51:44 <monqy> so is it more of an almost esoteric, or a just barely esoteric
10:52:17 <itidus20> like i dont see why vga0 is a word but con:0 is delimeted by the :
10:52:25 <itidus20> but that could just be the way it goes
10:53:05 <monqy> the magic, the mystery
10:53:14 <elliott> (diff | hist) . . N Home insurance; 10:46 . . (+6,544) . . Krishna1 (Talk | contribs | block) (Created page with "Home insurance, also commonly called hazard insurance or homeowner's insurance (often abbreviated in the real estate industry as HOI), is the type of [http://reslife.tamu.edu/...")
10:53:15 <elliott> (User creation log); 10:44 . . Krishna1 (Talk | contribs | block) New user account
10:53:32 <elliott> How did that get past the CAPTCHA?
10:53:38 <elliott> @tell ais523 A spambot just got past the CAPTCHA. help
10:53:49 <monqy> time to beef it up
10:54:12 <itidus20> lets not insult the spammers though...
10:54:31 <monqy> the new captcha is to write an essay about how spammers are dumb and totally suck
10:55:35 <zzo38> I can tell you how; they made a copy of the CAPTCHA for another service in real time
10:55:45 <quintopia> the new captcha is to create an esolang and write the first draft of the spec that you will post on the wiki
10:55:51 <elliott> I suspect they paid someone to fill it out.
10:56:06 <elliott> But, err, solving the CAPTCHA involves clicking a link and reading a paragraph of fairly technical English.
10:56:19 <itidus20> i hope they realize.. this means war
10:56:21 <elliott> quintopia: The existence of CAPTCHA-filling farms is well-known.
10:56:32 <elliott> I doubt any one spambot operator would bother to fill in Esolang's.
10:56:40 <elliott> Anyway, this is troubling.
10:57:00 <elliott> I was banking on the people being paid not being able to click links, read a paragraph of text, go back, and fill in an answer based on information from that link.
10:57:18 <elliott> I'll look into more "behind-the-scenes" techniques before changing the CAPTCHA itself.
10:57:24 <quintopia> does the paragraph change? does the answer change?
10:57:27 <monqy> I get paid to look at car commercials, not read all this paragraph.
10:58:11 <elliott> There are about 5 CAPTCHAs. They're all esoteric programming trivia.
10:58:18 <elliott> They link to articles on the wiki which contain the answers in the first paragraph.
10:58:26 <monqy> new esolang policy all articles are distorted beyond readability
10:58:30 <elliott> The chances of any CAPTCHA farming pawn knowing the answers without clicking the links is 0.
10:58:50 <quintopia> lets replace all esolang articles with spam
10:58:59 <quintopia> and then we can not care about spammer
10:59:01 <itidus20> ok i have an idea.. make the questions really long
10:59:42 <elliott> 124.123.139.13 - - [24/Feb/2012:10:46:56 +0000] "POST /w/index.php?title=Home_insurance&action=submit HTTP/1.1" 302 5 "http://esolangs.org/w/index.php?title=Home_insura
10:59:43 <elliott> nce&action=edit" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
10:59:54 <monqy> the new captcha is a turing test vs. itidus20, with itidus21 as the judge
11:00:37 <elliott> Wow, this thing is actually loading the JS and everything.
11:00:45 <zzo38> Maybe it wasn't a spambot; someone entered the spam manually.
11:00:46 <elliott> 124.123.139.13 - - [24/Feb/2012:10:44:59 +0000] "POST /w/index.php?title=Special:UserLogin&action=submitlogin&type=signup&returnto=Main+Page HTTP/1.1" 200 4871 "http://
11:00:46 <elliott> esolangs.org/w/index.php?title=Special:UserLogin&type=signup&returnto=Main+Page" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 2.0.5
11:00:46 <elliott> 0727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
11:00:51 <elliott> Fuck you so much, POSTer!!!
11:01:04 <elliott> zzo38: A lot of the spambots in the logs seem to have hostnamse with a bunch of ".NET CLR" in them.
11:01:17 <monqy> abuse a msie8 bug to make esolang unusable for the spam farme
11:01:30 <elliott> But it could be some automated thing where people are given an automated IE frame thing loaded to random wikis and have to create an account there.
11:01:36 <itidus20> well what matters is they don't know that at this wiki people literally discuss each spammer and collaborate on how to react
11:02:02 <monqy> in the battle against spam,
11:02:05 <monqy> it's the thought that counts
11:02:28 <elliott> http://reslife.tamu.edu/current/insurance/propertyInsurance.asp
11:02:33 <elliott> this is a link krishna spammed
11:02:58 <quintopia> how about the new CAPTCHA be...visit this channel and convince someone that you are worth giving the CAPTCHA answer to
11:03:26 -!- pikhq_ has joined.
11:03:44 <zzo38> One way, is use other protocols (other than HTTP and SMTP). Or else, use HTTP but use PUT rather than POST
11:03:46 <quintopia> and we don't say in the instructions how to find this channel
11:03:50 <elliott> quintopia: No, I hate that.
11:03:55 <elliott> That's effectively locking people out.
11:04:06 <elliott> Better to think smart than to think obstructive.
11:04:20 -!- pikhq has quit (Ping timeout: 276 seconds).
11:04:45 <quintopia> damn. we could meet so many people that way :P
11:05:10 <monqy> captcha where you write the answer but it's really really big
11:05:15 <itidus20> maybe krishna1 was a systemic anomaly
11:05:43 <elliott> who wants a lot of boring tedious work
11:05:55 <quintopia> itidus20: krishna2 will be a trend
11:06:24 <monqy> I nominate "not monqy" for tedious work
11:06:24 <quintopia> elliott: boring tedious work...like deleting spam accounts?
11:06:36 <monqy> could admin itidus20
11:06:55 <itidus20> but i don't blame you to be afraid
11:07:17 <elliott> quintopia: specifically, filtering spam accounts from non-spam accounts
11:07:19 <quintopia> the "smart" solution would be a bot that classfies wiki articles as spam/not-spam, and flags the spam articles for deletion/userbanning after hiding them
11:07:22 <elliott> http://esolangs.org/w/index.php?title=Special:ListUsers&limit=5000
11:07:41 <elliott> mind you I have some SQL queries that turn up a few hundred of them
11:07:48 <elliott> a few more queries should get even more
11:08:09 <quintopia> as IBM once said: machines should work, people should think
11:08:37 <elliott> maybe i'll just put them all on mechanical turk
11:08:44 <Jafet> If people don't want to think, should machines think for them?
11:09:07 <quintopia> Jafet: the only time people dont want to think is when the thinking is too much work :P
11:09:16 <elliott> quintopia: i was only half-kidding
11:09:33 <elliott> but i think they'd be too conservative
11:09:43 <elliott> "959 buy viagra" or whatever is obviously a spam username
11:10:01 <elliott> but they won't know that e.g. redlinked username = more likely to be a spammer, and integrating viewing deleted contributions and the like would be a huuuge pain
11:10:10 <elliott> so probably easier to use SQL queries to get the bulk of them + manual filtering for the rest
11:10:18 <quintopia> elliott: if you frame the question as "on a scale of 1-10, how likely is this user to be a spambot"
11:10:21 <elliott> we have 4,501 or so users and all but a few hundred at maximum are spammers
11:10:26 <quintopia> then you can set the threshold yourself after the fact
11:10:37 -!- Ngevd has joined.
11:10:39 <elliott> quintopia: the idea that humans can accurately rate things on a 1-10 scale seems nonsense to me.
11:10:52 <elliott> otoh the whole thing would take more time and effort than doing it locally :P
11:11:00 <elliott> do you want a boring, tedious but REALLY WORTHWHILE task?
11:11:08 <quintopia> elliott: it doesnt rely on accuracy if enough people do it. eventually you'll find the good threshold.
11:11:28 <monqy> new users must pass the trials of heart. everyone knows robots and spammers have no hearts, so this will stop them.
11:12:06 <quintopia> trials of heart: name the captain planet character with the power of heart
11:12:43 <monqy> have you passed the trials of heart yet
11:13:15 <itidus20> mati or matee .. i never really saw it spelled out
11:13:17 <elliott> Ngevd: a spambot passed the captcha
11:13:35 <elliott> Ngevd: http://esolangs.org/w/index.php?title=Special:ListUsers&limit=5000 please sort these usernames into three piles: definite spammers, possible spammers, not spammers
11:13:42 <elliott> you can only do the first thousand or so if you must
11:13:50 <elliott> also, any user with a bluelink i.e. existing user page is certainly not spammer
11:14:05 <elliott> any user with no contributions is suspicious (i can confirm by looking at deleted contributions)
11:14:28 <monqy> what about spammers whose userpages didn't get deleted or did they all get deleted
11:14:42 <quintopia> elliott: since most of those users registered while the site was at its old location, probably the spam users wont find the new site. thus, you could clear them all out by simply deleting EVERYONE who hasn't visited the site at its new location. after perhaps sending an email telling everyone that you're gonna do that
11:14:46 <elliott> monqy: There's no spam existing on the wiki.
11:14:49 <elliott> quintopia: "find the new site"?
11:14:55 <elliott> Yeah, it'll be incredibly difficult to go to the EXACT SAME DOMAIN AS BEFORE.
11:15:13 <elliott> They, like, go by geographic location of data centres.
11:15:19 <Ngevd> $username: probably spam
11:15:32 <quintopia> elliott: sorry. was operating on bad info.
11:15:37 <elliott> Anyway, that's a terrible idea, because (a) tracking "visited site at new location" is basically impossible with the logs we have;
11:15:56 <elliott> (b) 90% of the wiki's legit users will be inactive enough that they probably won't see such an email.
11:16:02 <elliott> (c) emails aren't even required
11:16:05 <quintopia> elliott: in any case, deleting all inactive accounts will not annoy too terribly many people :P
11:16:30 <Ngevd> 1079844050: possibly spam?
11:16:31 <elliott> quintopia: I really don't like user-hostile solutions like that.
11:16:43 <elliott> quintopia: The terrorists have won, etc.
11:16:56 <elliott> Ngevd: OK, I wasn't completely serious.
11:16:57 <quintopia> elliott: i'm being absurd because i don't see the point in deleting inactive spam accounts really
11:17:03 <Ngevd> 114 buy levitra: probably spam
11:17:14 <elliott> Ngevd: If you gotta do it, at least do it in a text file :P
11:17:17 <Ngevd> Actually, I'll stop
11:17:19 <elliott> But "buy levitra" is most cetainly spam.
11:17:22 <elliott> quintopia: They're not inactive.
11:17:29 <elliott> quintopia: They keep coming back and creating new pages.
11:17:42 <quintopia> elliott: if they are doing that then we can identify them based on their activity
11:18:06 <elliott> I already have some obvious SQL queries to try, but it's still just based on finding mass lists of users to delete.
11:18:09 <elliott> Also, they clog up the user list and such.
11:18:38 <itidus20> i think anything with integer space buy space text is a spammer
11:19:13 <elliott> Indeed, but there's few of them.
11:19:25 <zzo38> You could also try hiding the wiki from Google; see if that helps
11:19:30 <elliott> My queries have produced 200-600 users or so each.
11:19:47 <quintopia> what about captchas on [create page]? how likely is that to help without being annoying?
11:19:48 <elliott> zzo38: That could conceivably help, but it'd also remove 99% of traffic to the wiki and make sure nobody finds it ever.
11:19:57 <elliott> quintopia: There are CAPTCHAs for every single anonymous edit.
11:20:01 <elliott> And for user registration.
11:20:07 <quintopia> elliott: i meant for registered yeah
11:20:26 <elliott> I think that would be possible. But it would be annoying. What would be nice is if I could add e.g. three broken tries at the CAPTCHA and your account is blocked.
11:20:41 <elliott> But the time spent writing such an extension is, again, longer than the time it'd take to round up every existing spammer and delete them.
11:21:04 <quintopia> since you could improve all mediawikis everywhere that way :D
11:21:24 <elliott> I would not like to contribute to editor annoyance on MediaWikis.
11:21:39 <elliott> Anyway, the only MediaWikis really infested with spam are the ones ignored by their admins.
11:22:18 <quintopia> you could reduce editor annoyance by making it possible to become a Trusted User with admin intervention...
11:23:06 <elliott> I don't see why you're so attached to solutions that involve more user annoyance and more long-term effort than a one-time purge operation.
11:23:28 <quintopia> because i don't know that it is a one-time purge operation?
11:23:40 <elliott> What is that supposed to mean?
11:23:52 <elliott> The only way any new users can trickle in is by solving a CAPTCHA. You proposed a CAPTCHA on the create page function.
11:23:56 <quintopia> krishna1 could be an anomaly...or a sign of things to come
11:24:03 <elliott> So there is no benefit if the spammers can solve CAPTCHAs.
11:24:27 <elliott> Anyway, ominous language aside, spambots that can solve CAPTCHAs are not the issue I'm dealing with.
11:24:32 <quintopia> how fast do wiki spambots usually work?
11:24:39 <elliott> Spambots that can't solve CAPTCHAs but get through with existing accounts are the issue I'm dealing with right now.
11:24:55 <quintopia> how many articles do they post a second around the web
11:25:22 <zzo38> Perhaps you can somehow use time to discourage spams? Will changing the default skin to an uncommon one do anything?
11:25:25 <elliott> Google it or something if you want statistics.
11:25:49 <quintopia> zzo38: that was my thought, but i suspect that wiki spambots are slow, so not a good idea
11:26:06 <Ngevd> elliott: how many captchas are there?
11:26:14 <elliott> quintopia: There are certainly spambots per minute hitting the wiki.
11:26:31 <elliott> Ngevd: How many CAPTCHAs what? Pages with CAPTCHAs? CAPTCHA Q&A pairs?
11:26:33 <zzo38> I think hiding it from Google is a way to do so anyways. I set up the robots.txt to hide everything from Google, and then removed all internal (and external) links, and changed the root page to redirect to the root gopher menu instead, and then I told the gopherproxy owner to block access to my computer from there. Therefore, this help a lot.
11:26:37 <Ngevd> elliott, the latter
11:27:12 <elliott> zzo38: Yes, it helps a lot. It also ensures nobody visits your site.
11:27:37 <elliott> Ngevd: Five. But if people are manually clicking links and filling them out, adding new ones won't help.
11:28:31 <zzo38> elliott: Not true... a few people do. They can tell other people manually if they like to do so.
11:29:28 <zzo38> Can you block account creation and anonymous edits from Internet Explorer clients?
11:30:17 <elliott> Yes, which would exclude legitimate IE users.
11:30:24 <elliott> For instance, oerjan uses IE.
11:30:34 <zzo38> But oerjan already has an account.
11:30:39 <elliott> Sure, he already has an account, but it's an example that IE users can be valuable.
11:30:44 <elliott> He's unlikely to be the last helpful IE user.
11:32:30 <fizzie> Unlikely, but wouldn't it make one spiffy business card title? "oerjan oerjan\nthe last helpful IE user", centered.
11:32:46 <fizzie> (I'm not so sure about the names, so I improvised.)
11:33:15 <fizzie> Like the last of the mohicans.
11:33:54 <elliott> AKA oerjan "[fancy O]rjan Johansen" oerjan.
11:34:55 <fizzie> Ørjan "Fancy Ørjan" Johansen.
11:35:43 <fizzie> ∅rjan looks just silly.
11:36:19 <zzo38> No, the correct TeX symbol is {\O rjan Johansen}
11:37:28 <fizzie> œrjan, to keep in touch with the nickname.
11:37:53 <shachaf> 023C1 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE [⏁]
11:38:41 <fizzie> You've got an ☿rjan in your terminal? That's fancy-o.
11:39:26 <fizzie> King ♔rjan, like e's known to the populace.
11:40:27 <fizzie> And of course the famed activist, ☮rjan.
11:41:34 -!- Phantom_Hoover has joined.
11:42:33 <shachaf> Also known as "Contourjan"
11:42:53 <fizzie> Wow, the combining slashes are so not centered with the O.
11:43:42 <fizzie> Well, that's fancy. Though horrible in a terminal.
11:44:18 <fizzie> I suppose it should've been Ø⃠rjan, though.
11:45:34 <fungot> ( \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/)S
11:45:34 <myndzi> | | | `\o/´ | | | `\o/´ | | |
11:45:35 <myndzi> |\ |\ /| | |\ /´\ /| | /< /'\ /|
11:46:21 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
11:46:26 <fizzie> ⬠̸rjan, the Five-Sided. (Okay, that's enough for me.)
11:46:55 <fizzie> ^def test ul Can you just put any sort of text in to be show'd for an ul thing?
11:46:58 <fungot> Can you just put any sort of text in to be show'd for an ul thing?
11:47:00 <itidus20> only a true masochist could click on every name for > 1000 names and determine from it's contribution history if its a spam bot
11:47:03 <fizzie> Well, that's just silly.
11:47:22 <fizzie> ^def test bf I don't think the same thing works for bf at all.
11:49:00 <fizzie> Hmm, I wonder if it tape-cell-size modulo's the numbers already at that stage.
11:49:04 <fizzie> ^def test bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11:50:05 -!- derdon has joined.
11:50:21 -!- zzo38 has quit (Quit: NO DIAL TONE).
11:50:35 <fizzie> It doesn't understand that notation as input.
11:50:50 <Ngevd> I may have killed zzo38
11:51:14 <fizzie> Sounds unlikely. Unless you e.g. shot him while saying that, or something.
11:53:22 <itidus20> some of the spam names are obvious like AkylazgWUY and ScottTuckerPaydayLoansyyy ... but then theres names like Alexander88 and Alhirzel. and i see that most of the names fall into the painful reasonable doubt category
11:58:31 -!- ais523 has joined.
12:00:23 <lambdabot> elliott said 1h 6m 44s ago: A spambot just got past the CAPTCHA. help
12:00:37 <ais523> elliott: clearly the spammers are solving a few of the questions by hand
12:00:51 <ais523> adding more would help, as would checkusering and blocking the spambot that did it, as would abusefiltering its patter
12:01:29 <elliott> ais523: adding more I'd prefer to avoid; I already blocked the spambot but didn't checkuser yet
12:01:30 <ais523> if it happens again we'll be able to spot the pattern
12:01:46 <elliott> that and abusefilter would work, but I'd prefer to block more than one spambot in one go
12:02:01 <elliott> with less user-visible solutions; I'm looking at the available anti-spam extensions for MW
12:02:51 <elliott> ais523: I'm surprised whoever it was that filled it out managed to click the link, read the page, and understand it enough to fill in the CAPTCHA
12:03:17 <ais523> I'm more trying to see what sort of range it's in
12:03:25 <ais523> it seems to be a /18, which is rather uncomfortably large to block
12:04:20 <ais523> I don't think an IP block would work there anyway
12:04:45 <elliott> the pattern in the access logs used similar hostnames to other spambots
12:04:49 <elliott> with lots of .NET CLRs in them
12:04:54 <elliott> I suspect it's some kind of embedded IE browser
12:05:11 <elliott> that directs the CAPTCHA-farmer to a wiki and tells them to register or such
12:05:16 <elliott> because it followed slow, browser-like patterns
12:05:27 <elliott> as opposed to most spambots in the logs, which just blindly shoot off a few requests
12:05:46 <elliott> if that's correct, then there's basically nothing that can be done, if there's a human behind the wheel of a real browser who will follow links to fill in a CAPTCHA
12:05:52 <fizzie> Incidentally, did you see the fetch of the page with the CAPTCHA answer too?
12:06:00 <elliott> fizzie: oh, good point, I didn't check
12:06:43 <elliott> 124.123.139.13 - - [24/Feb/2012:10:43:50 +0000] "GET /wiki/IRP HTTP/1.1" 200 7685 "http://esolangs.org/w/index.php?title=Special:UserLogin&type=signup&returnto=Main+Pag
12:06:43 <elliott> e" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
12:06:50 <elliott> human-controlled, without a doubt
12:07:14 <elliott> that's also the easiest CAPTCHA to answer, since it's in the first few words of the article... but I'm not sure that's relevant
12:09:04 <fizzie> The 124.123.139.13 you mentioned is from a DHCP range for some Indian ISP, Beam Telecom. (In particular, from a /24 that's labeled "Mehdi Patnam Zone (DHCP)".) I don't know how CAPTCHA-answer farms operate, whether they bother to forward traffic through botnets or just have the "employed" person just use their 'net connection, since it doesn't really hurt them so much if some random people get IP-blocked.
12:10:55 <elliott> Googling for various hostnames of bad-behaving spider bots and the like suggests to me that the common solution to all this rubbish is to, like, block the entirety of India, Russia and Asia.
12:10:59 <elliott> I find that somewhat undesirable.
12:11:47 <ais523> http://sprunge.us/BLIW
12:12:36 <ais523> I'm surprised it got that far, actually
12:14:02 <ais523> looks like an actual type error
12:14:21 <elliott> ais523: did you ever decide whether underload is cbpv?
12:14:41 <ais523> elliott: no, I'm having that discussion at the moment, actually
12:15:48 <ais523> if I replace that cat with a free variable, it types ;)
12:16:16 <Ngevd> Nah, bruch is 10-12
12:18:27 <monqy> brunch is if I haven't eaten breakfast
12:18:48 <monqy> so really it ends up being from 13-15
12:18:50 <elliott> brunch is if ur not fuly human
12:18:55 <elliott> monqy: wow you get up early, monqy,
12:19:29 <monqy> i thought it was well-established I was subhuman, months ago
12:25:32 -!- ais523 has quit (Ping timeout: 244 seconds).
12:28:37 -!- Ngevd has changed nick to Taneb.
12:28:46 <Taneb> I feel better when I'm Taneb
12:48:24 -!- monqy has quit (Quit: hello).
12:56:47 -!- ais523 has joined.
12:57:25 <ais523> OK, so without forcing the type of that cat, it types, although it doesn't type /correctly/
12:58:58 <ais523> anyway, typed underload, it's impossible to do an infinite loop without adding an explicit fix combinator
12:59:06 <ais523> (dup // eval is a type error)
13:01:07 <elliott> ais523: I bet you can do it with rank-n types or something
13:01:12 <elliott> the problem is that dup forces the two copies to have the same type
13:01:23 <elliott> which fails the occurs check later on
13:09:27 -!- ais523 has quit (Ping timeout: 244 seconds).
13:28:16 -!- Taneb|Hovercraft has joined.
13:31:31 -!- Taneb has quit (Ping timeout: 245 seconds).
13:38:34 -!- pikhq has joined.
13:38:36 -!- pikhq_ has quit (Ping timeout: 252 seconds).
13:39:28 <oklopol> elliott: Friendship pong ^^
13:41:48 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
14:08:14 -!- ais523 has joined.
14:09:35 <ais523> anyway, the point is that in typed lambda calculus, you can't write an infinite loop
14:09:42 <ais523> unless you add a constant to the language whose purpose is to make loops possible
14:09:53 <ais523> and if dup // eval worked, then you could
14:10:56 <ais523> (the mockingbird combinator is the dirtiest of used-in-the-implementation-of-recursion combinators, it doesn't type in anything)
14:10:59 <ais523> (probably not even Anarchy)
14:11:25 <ais523> so, hmm, I wonder if Underlambda's continuation primitives work typed
14:12:24 <ais523> hmm, the very basic one is n, but n is really weird in its own right
14:12:32 <ais523> (n determines whether the stack is empty)
14:12:57 <ais523> it's backwardsly scoped, or something
14:13:32 <ais523> hmm, and C, I'm not even convinced it's expressible in a pure language
14:22:49 <ais523> elliott: in Haskell, is there any way to express a type A such that A = (A, Int)?
14:22:54 <ais523> without adding extra type constructors?
14:25:51 <elliott> ocaml can do it with -rectypes
14:26:12 <elliott> (so I don't see why type synonyms would be restricted)
14:26:18 <elliott> ais523: you may need special syntax for it, though
14:26:25 <elliott> try writing some recursively-typed stuff to find out the syntax
14:26:32 <ais523> I wonder if you can type Y in Anarchy
14:26:47 <elliott> ais523: -rectypes is sound I think
14:26:48 <ais523> I guess you probably could, because it's possible to write an infinite loop in it
14:26:59 <ais523> elliott: that's exactly the type system I've been looking for, I think
14:26:59 <elliott> Y doesn't type in Haskell and it has infinite loops
14:27:13 <ais523> i.e. a fixed-point constant
14:27:21 <elliott> it has no "let rec" construct :)
14:27:21 <ais523> oh, so does Anarchy, I'm being stupid
14:27:28 <elliott> but it has fix and recursive bindings, yes
14:27:33 <elliott> fix being defined in terms of the latter
14:27:48 <ais523> I can call the construct in general let rec, even if Haskell's impl of it isn't called that
14:27:50 <ais523> it's a good name for it
14:29:16 <ais523> - : '_a * ('_a * 'b -> '_c as 'b) -> '_c = <fun>
14:30:01 <ais523> hey, I've just realised that Anarchy trivially compiles into OCaml -rectypes! :)
14:30:30 <ais523> instead of using T (a, b), you use (T, a, b), where T is the only value of a type with one value
14:31:26 <ais523> this is actually mindblowing :)
14:32:35 <ais523> # q(dup // eval) // dup // eval ;;
14:32:47 <ais523> in retrospect, /that/ was inevitable :)
14:33:10 <ais523> ofc, (:^):^ really can map any stack to any other stack
14:33:11 <elliott> ais523: note that LC is trivially typeable with -rectypes
14:33:20 <elliott> so, you're giving up a lot by adopting it as your type system
14:33:28 <elliott> you may end up rejecting no programs at all
14:33:39 -!- Taneb has joined.
14:33:48 <ais523> the idea is to reject programs that have non-total pattern matches
14:34:50 <ais523> e.g. (+) "a" "b" would be rejected in Anarchy, because "a", being a list of chars, uses type constructor Cons, and (an assumed natural number +) only pattern-matches against Succ and Zero
14:34:56 <ais523> so the program wouldn't type
14:35:32 <ais523> hmm, I guess (+) 2 "a" /would/ type, the return value would be something that gave a string if decremented twice
14:36:33 <ais523> but (+) n "a", for an n calculated at runtime, could only be pattern-matched by things that expected a number, a string, or a successor of a string
14:36:42 <ais523> which is a kind-of silly combination
14:39:31 <ais523> elliott: put it this way: not all types are function types, so programs still get rejected
14:40:13 <lambdabot> Not in scope: data constructor `Cont'
14:41:53 <ais523> hmm, actually, I'll still need sum types
14:42:09 <ais523> so -rectypes isn't enough by itself
14:42:25 <ais523> (this is not the same as ADTs, as they have a fixed list of type constructors)
14:43:22 <ais523> I guess I can build them by hand using Either
14:48:32 <ais523> anyway, oerjan-swap doesn't give the right type with -rectypes either (it gives a general type where function = stack->stack, stack = stack*function, which can describe any Underload-minus-S program, not just swap in particular)
14:56:40 <ais523> actually, no, /actually/ got it
14:56:44 <ais523> say we have three tags, A, B, and C
14:57:24 <ais523> then a function which accepts type A(X) + B(Y) + C(Z) can have type (X -> Q, Y -> Q, Z -> Q) -> Q
14:58:38 <ais523> err, hmm, is that right?
15:00:53 -!- augur has quit (Remote host closed the connection).
15:02:23 -!- Taneb has quit (Quit: Goodbye).
15:03:41 <ais523> [[A(x)]] = (x -> q, j1 -> k1, j2 -> k2) -> q; [[A(x)->y]] = ((x -> y, j1 -> 0, j2 -> 0) -> y) -> y; [[B(x)]] = (j1 -> k1, x -> q, j2 -> k2) -> q; [[(A(x)+B(y))->z]] = ((x -> z, y -> z, j1 -> k1) -> z) -> z
15:04:20 <ais523> (where 0 is assumed to be a type with no values)
15:04:46 <ais523> that way, a function of type A(x)->y can't take an argument of type B(x), as that'd try to match y with 0
15:04:59 <ais523> and that's where the typing failure comes in
15:06:00 <ais523> and that's how you get a type error in Anarchy
15:09:50 <ais523> an actual implementation of, say, A(4), would be fun (f, g, h) -> f(4); of B(4) would be fun (f, g, h) -> g(4); of function | A(x) -> x would be fun a -> a (id, fail::0, fail::0); of function | A(x) -> x | B(x) -> x would be fun ab -> ab (id, id, fail::0)
15:10:10 <ais523> hmm, I wonder how you write a type with no values in OCaml
15:10:53 <elliott> ais523: does ocaml have newtypes?
15:10:59 <elliott> with rectypes, 'a as 'a might work
15:11:55 <ais523> I guess I could, alternatively, give it one constructor that I just didn't use for anything else
15:14:02 <elliott> that's gross, don't do that
15:14:15 <elliott> but does ocaml have newtypes? basically one-constructor one-field data types with no runtime overhead
15:14:20 <elliott> i.e. the type is erased at compile-time
15:14:35 <ais523> I've just been looking up the syntax
15:14:52 <ais523> and the only type definition keywords are "type" and "exception", both of which need at least one constructor
15:15:30 <ais523> wait no, that's the name of the type, misleadingly named
15:15:43 <elliott> ais523: what's wrong with just
15:15:46 <ais523> oh, it seems you can just write "type zero;;"
15:15:58 <ais523> and it creates a type with no constructors for you :)
15:15:59 <elliott> oh, wait, you could do it cyclically
15:16:33 <ais523> Error: The type abbreviation zero is cyclic
15:17:13 <ais523> # type zero = Zero of zero ;;
15:17:14 <ais523> type zero = Zero of zero
15:17:35 <ais523> that type has no values, due to being in a strict language
15:17:55 <elliott> out of curiosity, does 'a as 'a work?
15:18:10 <ais523> I couldn't figure out what you meant by that
15:18:21 <ais523> I tried a few permutations but they were all equivalent to things you obviously didn't mean
15:18:35 <ais523> e.g. type 'a zero = 'a as 'a;; is the same as type 'a zero = 'a;;
15:18:55 <ais523> and type zero = 'a as 'a gives an unbound type parameter message
15:19:05 <elliott> <ais523> - : '_a * ('_a * 'b -> '_c as 'b) -> '_c = <fun>
15:19:16 <elliott> so try and type something as ('a as 'a), and that should be the type A = A
15:19:19 <elliott> which should have no values
15:20:31 <ais523> I just get "unbound type parameter 'a" when I try that
15:20:48 <ais523> whereas # type zero = (('a * 'a) as 'a) ;; works
15:21:05 <ais523> so I guess it's just a scoping thing
15:21:17 <elliott> I guess it needs to be a non-type-variable on the lhs of as
15:21:39 <ais523> # type ursala = 'a list as 'a ;;
15:21:40 <ais523> type ursala = 'a list as 'a
15:23:14 <ais523> ooh, hmm, this Anarchising program transformation, I recognise seeing it before
15:23:21 <ais523> in an Underlambda header
15:23:48 <ais523> and Paul Levy proved it equivalent to a sum type on a whiteboard in front of me a few weeks ago
15:23:55 <ais523> so it should be safe to use
15:24:28 <elliott> ais523: Has Paul Levy kindly informed you that Underlambda is weird as heck yet?
15:24:42 <ais523> no, because I haven't managed to explain it to him yet
15:25:23 <elliott> ais523: Have you told him about Feather yet?
15:25:36 <ais523> typed underlambda seems neat, the type-checker can statically prove that the stack never underflows
15:25:47 <ais523> and no, I haven't managed to explain that to /anyone/ yet, including myself
15:28:28 <elliott> lots of stack-typed languages can do that
15:29:22 <elliott> Friendship: You run an rsync server thing. How does it, how good it, how easy it, how it
15:29:53 <Friendship> Since I have absolutely no memory of how I set it up, those questions are hard to answer ;)
15:30:54 <elliott> Friendship: Do you use rsync --daemon?
15:31:01 -!- augur has joined.
15:31:02 <Friendship> I installed rsyncd, then did what seems to be extremely minor twiddling of /etc/rsyncd.conf
15:31:02 <elliott> I'm trying to decide between rsync and zsync for the esowiki XML dumps.
15:31:29 <elliott> zsync has the advantage that I don't need to run another server, and people can still download the file through "normal" means (I think).
15:31:35 <elliott> rsync is probably a lot more common though.
15:32:22 <Friendship> Well, here's my /etc/rsyncd.conf (minus comments): http://sprunge.us/OEag
15:34:14 <Friendship> Oh look, somebody removed my parade o' death.
15:34:14 <elliott> Friendship: I was gonna ask whether your distro has zsync, but loldebian so yeah it does
15:35:21 <kmc> what's a good REPL for r5rs Scheme/
15:39:20 -!- kmc has left ("Leaving").
15:39:23 -!- kmc has joined.
15:39:34 <kmc> MIT Scheme seems to be i386-only
15:40:32 <kmc> i'm looking for good readline-like behavior, e.g. tab completion of identifiers
15:40:47 <elliott> I don't know of anything like that.
15:41:01 <kmc> Gambit's REPL (gsi) does that well
15:41:02 <elliott> MIT Scheme supports x86-64.
15:41:13 <Friendship> (The program that proves that readline's license is pointless)
15:41:15 <elliott> Friendship: which won't tab-complete identifiers
15:41:20 <kmc> rlwrap won't give me tab completion of what elliott said
15:41:26 <kmc> not without extra work
15:41:31 <kmc> but yeah, rlwrap might be good enough
15:41:42 <elliott> I suggest you take typing lessons or something, since nothing like that exists AFAIK :P
15:42:05 <Friendship> I want to be able to tab-complete my parentheses.
15:42:45 <kmc> elliott, gsi exists
15:42:48 <kmc> but it has other problems
15:58:06 <elliott> kmc: Use gsi to drive an R5RS-compliant interpreter underneath.
15:58:24 -!- pikhq_ has joined.
15:58:27 -!- pikhq has quit (Ping timeout: 248 seconds).
16:14:49 <kmc> actually the reason i want a scheme interpreter is to run a little interpreter i wrote
16:15:01 <kmc> for a fexpr / vau calculus thingy
16:15:40 <elliott> anyway SISC has very good R5RS compliance iirc
16:15:58 <kmc> i haven't used it
16:16:00 <elliott> and doesn't seem to suffer too much being JVM-based (in that it doesn't go for "java interop" at all)
16:16:07 <kmc> working my way through the 416 page PhD thesis
16:16:25 <elliott> but s48 is more popular and mit too I think (although perhaps less so)
16:16:41 <kmc> zombie 6.001 uses racket
16:16:45 <kmc> which causes no end of trouble
16:16:52 <kmc> because it only reluctantly sort of acts like a scheme implementation
16:17:07 <kmc> it used to use MIT Scheme but switched
16:17:10 <kmc> for reasons i do not recall
16:17:39 <kmc> MIT Scheme itself might work on x86-64, but the Debian packages are i386-only
16:18:35 <elliott> give scheme48 and sisc a try then :P ... i like several other implementations but they're not too r5rs-strict
16:19:02 <kmc> i don't really need strict compliance
16:19:07 <kmc> just annoyed by a few of racket's divergences
16:19:15 <kmc> like distinguishing mutable pairs from pairs
16:19:20 <elliott> right. then pretty much anything that isn't racket should suit you fine
16:19:25 <elliott> kmc: erm, that goes away if you turn on the R5RS language
16:19:31 <elliott> racket is a multi-language environment
16:19:35 <elliott> #lang r5rs at the top of a file
16:19:51 <elliott> i think that's still not strictly compliant. but it won't have a major divergence like that
16:23:23 -!- pikhq has joined.
16:23:37 -!- pikhq_ has quit (Ping timeout: 252 seconds).
16:25:04 <kmc> i don't wanna put garbage at the top of my file ;)
16:25:15 <elliott> there's a command-line thing for it, sheesh
16:25:30 <kmc> which in turn interferes with racket's readline mode
16:25:46 <elliott> well racket supports per-language modules
16:25:49 <kmc> i don't feel like shaving all these yaks
16:25:51 <elliott> figure out how to divide it properly or something :P
16:26:04 <elliott> fizzie is a schemester, ask his opinions
16:26:41 <elliott> http://sisc-scheme.org/r5rs_pitfall.php is a helpfully pedantic r5rs comparison :p
16:39:41 <ion> ^bf +.>+++++++[<++++++++++++>-]<+.-----------------.+++++++++++++.+.----------.++++++.-.>+++++++[<----------->-]<.
16:40:35 <elliott> ion: Don't make fungot said CTCPs. You know what happened the last time it did that.
16:40:35 <fungot> elliott: i was thinking
16:40:43 <elliott> If you don't, all the more reason!
16:41:27 <ion> What happened the last time it did that?
16:41:31 -!- Guest66243 has joined.
16:41:57 <ion> And why hasn’t it been fixed to send automatic messages as NOTICEs? :-P
16:42:19 <elliott> ion: Some shit who remains anonymous to this day whined to a staffer, fizzie was forced to take fungot down until he fixed it, and a staffer lurked in the channel for montsh.
16:42:20 <fungot> elliott: the lexically-scoped nature of the god object notation." if you want real efficiency, i'd download textgen.java.
16:42:47 <elliott> (OK, "anonymous" as in "everyone thinks it's the same person but won't say it publicly".)
16:42:55 <elliott> ion: Someone used it to send the sendkeylogger thing IIRC.
16:43:02 <elliott> Which of course did nothing, since nobody here has a broken router.
16:43:35 <elliott> Of course it's nonsense because anyone who could make the bot send it could just as easily send it themselves.
16:46:10 <ion> I take it fungot does at least handle newlines in bf output properly? :-)
16:46:10 <fungot> ion: that's a traditional chinese character meaning " education".)
16:48:39 <ion> ^bf ++++++++++.>+++++++[<++++++++++>-]<.++.---------.+++++++++++++.---------.++++++.------------.>+++++[<------->-]<----.>+++++++[<++++++++++>-]<+++.++++++.-.>+++++++[<----------->-]<-.>+++++[<+++++>-]<+.>+++++++[<+++++++>-]<++++.>+++++++[<----------->-]<--.>+++++++[<++++++++++>-]<++.-------.++++++++.
16:48:45 <ion> It does. :-)
16:49:59 <ais523> - : (('_a * '_b -> '_a) * ('_c -> zero) -> '_d) -> '_d = <fun>
16:50:02 <ais523> - : '_a -> '_a = <fun>
16:50:05 <ais523> - : (('_a * int -> '_a) * ('_b -> zero) -> '_a) -> '_a = <fun>
16:50:10 <ais523> do people agree with me that this can only possibly be a compiler bug?
16:50:52 <elliott> ocaml is probably unifying types as it goes
16:50:58 <elliott> trying to make pop more monomorphic or sth
16:51:24 <ais523> but, the whole point of it is to be polymorphic
16:51:36 <ais523> as in, I don't see how using a function can make it less polymorphic
16:52:33 -!- Guest66243 has changed nick to PiRSquared.
16:53:07 <ais523> - : '_a -> '_a = <fun>
16:53:10 <ais523> Error: Unbound constructor
16:53:30 <ais523> so, is /that/ a compiler error? the error message makes no sense any more
16:55:13 <elliott> ais523: well consider ML references
16:55:22 <elliott> but as soon as you fill a type in it's fixed
16:55:27 <elliott> that's what the '_a stuff means after all
16:55:43 <ais523> oh, is there a difference between '_a and 'a?
16:57:11 <ais523> I'd love it if there was a way to do types that didn't get instantly fixed
16:57:25 <ais523> that just stayed polymorphic if they could
16:58:11 <elliott> ais523: oh, maybe i'mt hinking 'a vs. ''a
16:58:20 <elliott> anyway, polymorphic references are a well known problem in ml community
16:58:29 <elliott> you must disallow putting in an int and taking out a string and such
16:58:31 <ais523> but this is pure functional, no mutable values anywhere
16:58:34 <elliott> so some "fixing" must be required
17:02:07 <ais523> I think with references it's fine; if a ref is both read and written, it fixes its type from both variances
17:02:47 <elliott> then you can use it as a ref int
17:02:51 <elliott> and you can use it as a ref string
17:02:55 <elliott> that's how polymorphism works
17:05:24 <ais523> no, because it depends on variances
17:09:13 -!- kallisti has quit (Ping timeout: 265 seconds).
17:11:09 -!- kallisti has joined.
17:13:39 <elliott> please /part the channel to punish yourself, thanks
17:14:18 <elliott> ais523: if (r :: forall a. IORef a), are you denying that (writeIORef r (42 :: Int)) and (readIORef r :: IO String) are both perfectly valid expressions?
17:15:52 <elliott> ais523: then, I accuse you of not understanding polymorphism
17:16:00 <elliott> for reference, writeIORef :: forall a. IORef a -> a -> IO ()
17:16:04 <elliott> readIORef :: forall a. IORef a -> IO a
17:16:08 <kallisti> I assume you're looking at each expression seperately
17:16:12 <kallisti> and not, say, combined with a >>
17:16:18 <elliott> ais523: i think you are mixing up your quantifiers
17:16:22 <elliott> probably because OCaml leaves them implicit
17:16:32 <elliott> those two programs are undeniably well-typed for an r of that type
17:17:03 <ais523> I think the types of writeIORef and readIORef that you've listed are wrong, or at least don't reflect what those functions actually do
17:17:39 <elliott> when you say, "it's fine" and contradict my statement with "no, because it depends on variances", you actually mean "it *should* be fine" and "ideally no, because it should depend on variances"
17:17:55 <elliott> well, I was rather clearly not talking in the context of some hypothetical system
17:17:56 <ais523> elliott: I think we're defining "references" differnetly
17:18:06 <ais523> I didn't realise you were referring to a particular broken system of references
17:18:06 <elliott> those types for {read,write}IORef are perfectly correct, and they match the corresponding types for ref in ML
17:18:14 <ais523> I think ref is broken in ML too
17:18:46 <kallisti> note however that: writeIORef r (42 :: Int) >> (readIORef r :: IO String)
17:18:48 <elliott> i can only assume you are being deliberately obtuse, since I was explaining why that behaviour is valid in an ML derivative, relating it to the solution to the polymorphic references problem
17:18:59 <elliott> which obviously applies to actual references that exist, not ones you imagine
17:19:04 <elliott> kallisti: yes it is, if r has the type I gave
17:19:12 <elliott> try it yourself, stub out r = undefined
17:19:14 <ais523> let's see… writeIORef should have type "forall a. IORef (a or more specific) -> a -> IO ()", readIORef should have type "forall a. IORef (a or more general) -> a -> IO ()"
17:20:39 <ais523> and that "forall a. IORef a" is a type that can't possibly have the semantics you'd want from a reference, unless it does unsafe casting or something, because it /would/ be able to store arbitrary types and convert them to arbitrary other types
17:21:11 <elliott> of course you don't want a reference witht ype (forall a. IORef a), that's the entire polymorphic references problem
17:21:35 <elliott> but I won't bother discussing this further since you're just going to end up rehashing the whole standard problem without actually reading up on it...
17:22:40 <ais523> elliott: well, I don't get what's wrong with this suggested solution
17:22:43 <kallisti> so uh, what happens semantically in that example.
17:22:50 <elliott> ais523: nobody said it was wrong
17:22:53 <elliott> it is, however, beyond irrelevant
17:22:55 <ais523> and going back to the original point, this all seems irrelevant to the polymorphic non-references problem I was describing earlier
17:23:09 <elliott> I was describing why your observed behaviour was not _unambiguously_ a compiler bug. that is all.
17:23:17 <elliott> types changing due to use is accepted in ML. whether it is what you are observing, I cannot say.
17:23:25 <elliott> kallisti: the evaluator hits r and an exception is thrown
17:23:34 <elliott> the program then terminates with "*** Exception: Prelude.undefined" or such
17:23:37 <ais523> it's not documented in the manual, but then the manual doesn't even explain type inference
17:23:57 <kallisti> I guess I've just never encountered a polymorphic reference.
17:24:00 <elliott> kallisti: this tends to happen when stubbing things out with undefined.
17:24:10 <kallisti> it seems almost like an unsafeCoerce.
17:24:25 <elliott> yes, you can implement unsafe coercion with a polymorphic reference.
17:24:46 <Friendship> So, graue joined for three hours to say ... nothing.
17:24:50 <elliott> say r :: forall a. IORef a, then cast :: a -> IO b; cast x = writeIORef r x >> readIORef r
17:25:09 <elliott> other things you can implement unsafe coercion with:
17:25:20 <elliott> - other features that are unsafe and thus provide unsafe coercion
17:25:34 <elliott> polymorphic references should not make you frown any more than these
17:25:44 <elliott> you may be assuming there is a way to get one without unsafe mechanisms
17:25:54 <elliott> by the way, I'm grumpy and tired, have a nice day
17:25:56 <ais523> elliott: btw, does IOT exist? I can't remember whether it does or not
17:26:00 <kallisti> no it just seems to destroy type safety...
17:26:13 <elliott> kallisti: yes. just like unsafeCoerce, unsafeCoerce#, other features that are unsafe and thus provide unsafe coercion
17:26:20 <kallisti> right, but there's no warning here.
17:26:23 <elliott> lots of things that are not possible in haskell 98 break type safety.
17:26:28 <ais523> why can't it be implemented the same way as ReaderT and WriterT?
17:26:31 <elliott> getting a polymorphic reference is one of these.
17:26:38 <elliott> you seem to be ignoring the point i am beating into your head.
17:26:45 <ion> unsafeThisIsAWarningCoerce
17:26:47 <elliott> it is impossible to get a polymorphic reference by design
17:27:03 <elliott> ReaderT and WriterT seem irrelevant
17:27:09 <ais523> elliott: I'd just expect the IO to end up outside the continuation, then
17:27:10 <elliott> IO isn't ReaderT and it isn't WriterT
17:27:17 <elliott> ais523: no, that's ContT IO
17:27:23 <elliott> IOT Cont would let you reverse IO
17:27:32 <elliott> anyway, IO is only State if you ensure linearity
17:27:35 <kallisti> or repeat IO computations multiple times.
17:27:37 <elliott> which is the whole thing IOT needs to break
17:27:43 <elliott> because the underlying monad can cause you to jump around
17:27:50 <elliott> and as you can't replace the real world, it all falls apart
17:27:58 <ais523> anyway, Paul Levy claimed today that StateT Cont and ContT State happened to be the same, was he wrong?
17:28:13 <ais523> (claiming that monad transformers didn't commute in general, but those two did)
17:28:22 <elliott> i think he's right, but i'm too tired to think about it
17:28:25 <ais523> but it'd seem to me that one would leave the state inside the continuations, and the other the state outside
17:28:35 <ais523> or perhaps he had a different definition of continuations
17:28:42 <kallisti> my favorite thing about [State s a] is State s [a]
17:28:45 <elliott> the other advances state blindly
17:28:49 <elliott> regardless of continuationing
17:28:53 <ais523> yep, that's what I thought
17:29:00 <ais523> so my guess is that his ContT doesn't affect state
17:29:12 <ais523> because it specifically aims only at a part of the language
17:30:13 <elliott> i don't think his definition of "monad transformer" can be very standard then
17:30:17 <elliott> if it's "looking" at parts of the underlying monad
17:30:24 <kallisti> hm, I think ReaderT Cont and ContT Reader would be the same though?
17:30:48 <ais523> elliott: it's more that his effects are impure, so they don't work quite the same way as Haskell monads
17:31:01 <elliott> kallisti: yes, ReaderT commutes with just about everything
17:31:15 <elliott> distribute is a more accurate word than commute methinks
17:31:28 <kallisti> is there any underlying property of ReaderT that makes so. something you could, say, generalize to other monads to show that they're also commutative?
17:31:34 <kallisti> or distributive or whatever may be the case.
17:32:53 <kallisti> sequence is basically the distributive law for the list monad, it would seem.
17:32:56 <elliott> most monads are functions underneath
17:33:04 <elliott> (a -> b -> c) ~ (b -> a -> c)
17:33:16 <elliott> i'm not convinced ReaderT and ListT distribute in the same way
17:33:27 <elliott> sequence is a distributive law, yes
17:33:29 <elliott> traversable generalises it
17:33:41 <elliott> Traversable t = t distributes over any Applicative
17:33:52 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
17:33:52 <lambdabot> Data.Foldable sequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f ()
17:34:03 <kmc> i'm still not entirely clear on why Kernel needs the wrap/unwrap primitives in addition to vau
17:34:14 <kmc> but, i seem to have shot myself in the foot by lacking them in my toy language
17:34:31 <elliott> kmc: to be able to evaluate anything
17:34:36 <elliott> kmc: you can also just have eval, I think
17:34:43 <elliott> but you can implement eval with wrap
17:34:44 <kallisti> oh nice I was wondering if sequence was generalized.
17:34:46 <elliott> I forget what unwrap is for though
17:35:02 <kmc> unwrap is used to implement apply
17:35:12 <kmc> i think my real problem is, i'm trying to use apply on operatives
17:35:20 <kmc> and the paper explicitly states that this is terrible and disgusting
17:35:34 <elliott> i feel kernel has some concepts it could unify and clean up
17:35:55 <elliott> i'm unconvinced the distinction between thingys (the normal functiony things) and fexprthingys is productive
17:36:05 <elliott> as opposed to just having fexprthingys that happen to evaluate their arguments in an orderly fashion
17:36:32 <kmc> applicatives vs. operatives
17:36:33 <kmc> that's my feeling as well
17:36:41 <kmc> but i haven't used this stuff very much
17:37:03 <kmc> my toy language lacks that distinction
17:38:01 <kallisti> so basically you look at the underlying structure of the type to determine if it distributes. showing that ListT is distributive is done recursively -- basically it's the code of sequence. :P woah it's like curry-howard, man.
17:41:19 -!- tzxn3 has joined.
17:42:00 <kallisti> I think real distributivity is a biconditional though. here we're talking about a single implication unless both of the monad transformers are "distributive"
17:42:50 <kallisti> there's [m a] -> m [a] but no m [a] -> [m a] forall Monad m => m
17:44:20 <kallisti> well, that's how I know distributivity. Perhaps in abstract algebra it's only required that one operator distributes over the other.
17:47:15 -!- oklopol has quit.
17:47:30 -!- Taneb has joined.
17:48:19 <kallisti> elliott: also pure is Applicative not Monad nyahahahaha blah blah.
17:48:52 <Taneb> Because it's shorter?
17:48:53 <kallisti> you seem to prefer it to return.
17:49:12 <kallisti> I usually use whichever requires the fewest class constraints.
17:49:35 <elliott> I use pure whenever using it as a unit (as opposed to as part of a larger monad computation) when the type is monomorphic.
17:49:42 <elliott> For instance I always use pure :: a -> [a] rather than return.
17:49:53 <elliott> which is the type it was used as above
17:50:00 <ais523> elliott: seems '_a really is different from 'a
17:50:01 <ais523> http://sprunge.us/aFRG
17:50:39 <ais523> so I suppose the question is, what technical limitation of OCaml causes it to type q and r differently?
17:50:46 <kallisti> see I would use pure if I were only using Applicative functions, and return if only using Monad functions... I guess I would pick pure if both were already in use and there was no way to simplify the code to use only one constraint.
17:51:16 <ais523> # let s x = c i i x ;;
17:51:17 <ais523> val s : (('a -> 'a) -> ('b -> 'b) -> 'c) -> 'c = <fun>
17:51:45 <ais523> oh, aha, eta-expansion causes it to work, it must not like polymorphic function values (as opposed to polymorphic function definitions)
17:54:39 <ais523> wow, this type is beautiful, if ultimately not what I wanted: http://sprunge.us/HGXN
17:56:25 <ais523> it's also not actually usable for swapping :)
17:56:29 <ais523> (q 4 // q 5 // oerjanswap doesn't type)
17:57:36 <elliott> ais523: what do you make of http://esolangs.org/wiki/Basic_Input/Output_Commander?
17:57:59 -!- Deewiant has quit (Quit: Solaris + USB disks = ffffffuuuuuuu).
17:58:12 <ais523> it's kind of risky to implement
17:58:22 <ais523> given that it has a command that's entirely capable of repartitioning the hard drive
17:58:47 <ais523> and it doesn't have any memory storage, or any control flow
17:59:04 <kallisti> wouldn't writing to RAM be memory storage?
17:59:04 <elliott> it's from the person who brought us [[mindscrew]]
17:59:08 <elliott> clearly a visionary we're working with here
17:59:08 -!- Taneb has quit (Ping timeout: 240 seconds).
17:59:14 <elliott> ais523: no, obviously the ip is a file thing
17:59:16 <ais523> presumably it's nonetheless TC as it can rewrite your OS to run the program for oyu
17:59:24 <ais523> and automatically order more storage from Amazon when it runs out
17:59:46 <ais523> given a suitable credit card
18:00:04 <kallisti> TC dependent on available lines of credit and liquid assets
18:01:45 <elliott> ais523: haha, I really hope AWS starts expanding before it reaches capacity and then never stops and entropy is halted
18:01:56 <elliott> just so your proof by Amazon ends up being inadvertently valid
18:02:43 <kallisti> has anyone managed to successfully use AWS?
18:02:53 <kallisti> it's quite a mess of services.
18:03:08 <kallisti> by "anyone" I mean people in this channel, of course.
18:03:13 <kallisti> the only relevant people in the universe.
18:04:15 <elliott> i'm sure someone in here has used EC2 before
18:04:22 <elliott> I gather that apart from S3 and EC2 they're mostly rubbish
18:05:11 <kallisti> I tried to use it once... and decided that it would be easier to just use a dedicated server.
18:06:41 <kmc> elliott, how much have you used Kernel, and what for?
18:07:06 <elliott> I don't "use" languages ;)
18:07:27 <elliott> but I read at *least* 25% of the paper!
18:07:35 <kallisti> I perform theoretical language abuse on a theoretically daily basis.
18:08:23 -!- Taneb has joined.
18:09:54 <Taneb> I swear my dreams are becoming increasingly rave + computer science oriented
18:10:44 <elliott> `addquote <Taneb> I swear my dreams are becoming increasingly rave + computer science oriented
18:10:47 <kallisti> my personal Heaven would be endless computer science raves where I have magical powers such as flight
18:10:52 <HackEgo> 809) <Taneb> I swear my dreams are becoming increasingly rave + computer science oriented
18:11:35 <Friendship> Today's Dinosaur Comics is pretty much awesome.
18:15:56 <HackEgo> 387) <Phantom_Hoover> Lymia, I don't know what that is but I want to hit you for it on principle.
18:15:57 <HackEgo> Failed to clone the environment!
18:15:57 <HackEgo> Failed to clone the environment!
18:16:00 <HackEgo> Failed to clone the environment!
18:16:02 <HackEgo> Failed to clone the environment!
18:16:28 <Taneb> We've hit quote limit
18:18:21 <HackEgo> 694) <ais523> Vorpal: I was paying too much attention to elliott and not enough to my HP
18:18:27 <HackEgo> Failed to clone the environment!
18:18:37 <kallisti> Headlines: FBI investigation of chat logs reports illegal #esoteric environmental cloning experiment fails catastrophically
18:21:03 <ais523> gah, the force-quit tool's malfunctioned and left a window covering my screen, how do I force-quit it?
18:21:09 <elliott> ais523: hey, what ad/script-blocking/anonymising FF extensions do you use? I'm becoming sufficiently annoyed by Google's context-sensitivity and YouTube ads to want to do something about it
18:21:26 <kallisti> I can tell you the ones I use in Chrome...
18:21:29 <ais523> oh, killall gnome-panel worked
18:21:36 <elliott> which is a sign that they must be doing something /really/ wrong, if it's so terrible they're overwhelming my immense apathy
18:21:39 <ais523> elliott: AdBlock Plus, NoScript, and RefControl
18:21:49 <ais523> combined with turning off Flash in Firefox, and using a different browser when I want it
18:21:54 <elliott> oh, and I want to block Analytics too, although I can't quite articulate why
18:21:57 <ais523> I use AdBlock Plus as a general annoyance-blocker
18:22:14 * elliott was considering http://disconnect.me/
18:22:16 <ais523> elliott: because they're taking information from you that is worth money, and if they're taking it without your consent you can't sell it to them later
18:22:22 -!- Deewiant has joined.
18:22:26 <elliott> which purports to disable google's bubbling and facebook's cross-site stuff and the like
18:22:36 <ais523> what does "bubbling" mean, exactly
18:22:44 <elliott> result personalisation, essentially
18:22:53 <elliott> ais523: well, it's not an ethical objection per se, those don't bother me enough to do something
18:23:04 <elliott> I think it's that Analytics tracks slightly more than I'm OK with
18:23:07 <ais523> for the same reason that kerio plays computer games in English despite setting everything else to Italian
18:23:08 <kallisti> for Chrome: Ghostery, No Track Plus, Adblock Plus
18:23:18 <kallisti> Ghostery is kind of like noscript but less annoying
18:23:19 <elliott> iirc it tracks which links you click, right?
18:23:33 * elliott isn't really interesting in blocking scripts in general
18:23:51 <ais523> elliott: I blacklist by default but am free with adding to my whitelist if I find a site whose scripts I want to use
18:23:51 <kallisti> also here's ABP lists related to privacy protection: http://adversity.uk.to/
18:24:02 <ais523> elliott: oh, I also set cookies to no third-party, prompt for first-party, in Firefox
18:24:04 <kallisti> elliott: Ghostery specifically targets a huge list of advertising company tracker script things.
18:24:06 <ais523> that's not an extension but a core setting
18:24:24 <elliott> kallisti: doesn't blocking ads take care of that?
18:24:25 <ais523> but it's pretty annoying, because if you reject one cookie from a site, Firefox then prompts you for all the others it tries to set, unless you choose "always reject"
18:24:30 <ais523> there should be a "deny for session" option or something like that
18:24:38 <elliott> ais523: first-party cookies I'm OK with too
18:24:56 <ais523> elliott: well, say, first-party cookies from Google I'm not OK with
18:24:59 <ais523> as they can be used to personalise results
18:25:01 <kallisti> elliott: I don't think so. Ghostery blocks scripts. I'm not sure if Adblock can block scripts...
18:25:03 <elliott> mostly I want to banish ads/tracking, and preferably disable "customisation" like Google's
18:25:17 <ais523> if I need to store a Google cookie, I'll use Chromium
18:25:33 <kallisti> elliott: http://lifehacker.com/5887140/everyones-trying-to-track-what-you-do-on-the-web-heres-how-to-stop-them
18:25:34 <elliott> "• Truly depersonalize searches on search engines like Google and Yahoo (by blocking identifying cookies not just changing the appearance of results pages), while staying logged into other services — e.g., so you can search anonymously on Google and access iGoogle at once."
18:26:22 <kallisti> has extensions listed for FF and Chrome
18:26:22 <elliott> kallisti: ABP handles YouTube video ads, right?
18:26:32 <elliott> those are really what's driving me up the wall sufficiently to do this :P
18:26:52 <kallisti> but yes ABP should be installed regardless
18:27:07 <kallisti> it's an essential web browsing tool. :P
18:27:23 <elliott> i'll probably go with just AdBlock, IIRC it's slightly better than ABP for Chrome
18:28:10 <kallisti> I also recommend http://adversity.uk.to/
18:28:11 <ais523> hmm, I wonder what would happen if I wrote an extension to accept cookies but randomly change their contents
18:29:07 <elliott> ais523: anyway, you clearly accept cookies from esolangs.org
18:29:08 <kallisti> also the priv3 extension looks interesting.
18:29:15 <elliott> I'm surprised you trust me more than <any thing> :P
18:29:25 <ais523> elliott: but I want the site to track me
18:29:37 <ais523> so that it can attach my user name to my edits and let me make admin actions
18:29:42 <elliott> I'm actually bubbling everybody's recent changes.
18:29:46 <elliott> Phantom_Hoover doesn't see any BF derivatives.
18:29:52 <elliott> ais523 only sees things needing cleaning up.
18:30:05 <ais523> heh, that gave me a good laugh
18:30:23 <kallisti> in which we learn that shachaf is actually blind
18:31:12 -!- zzo38 has joined.
18:31:31 <kallisti> elliott: which kernel should I install: linux-image-3.2.0-1-adm64, linux-image-amd64, or none.
18:31:42 <elliott> kallisti: Which one is the default?
18:31:47 <elliott> And why are you using the expert install?
18:31:51 <elliott> Pick whichever one is the default.
18:32:00 <elliott> Maybe they prompt for kernel on regular installs now. Silly.
18:32:47 <kallisti> I wonder what happens when I install none.
18:33:04 <kallisti> what exactly is Debian without a kernel?
18:33:38 <kallisti> unbootable, obviously. but... why would you do that?
18:34:11 <kallisti> are there other ways to install kernels into a "Debian without a kernel"?
18:34:29 <elliott> You could boot the kernel on something else and point it at the partition.
18:34:34 <elliott> And yes, there is Debian/kFreeBSD.
18:34:41 <elliott> Debian is also the official GNU HURD distribution.
18:35:13 <elliott> (Seriously: http://www.debian.org/ports/hurd/)
18:35:25 <kallisti> I... believed you the first time.
18:36:20 <kallisti> I think the hardware erasing section of the install was doing one of those "make multiple passes with random bytes" things.
18:37:00 <elliott> That was probably because you selected encryption.
18:37:11 <kallisti> otherwise it wouldn't be so paranoid.
18:37:41 <Friendship> elliott: To my knowledge, Debian is not "the official" GNU HURD distribution, it's merely "the only" GNU HURD distribution. GNU is still the official one, in spite of the fact that it hasn't had a release in a decade. Unless this policy has changed recently.
18:38:22 <elliott> Friendship: Hmm, yes, you're probably right. But it's what everybody uses, and what the LiveCDs are :P
18:38:28 <elliott> kallisti: Maintaining hundreds of software packages?
18:38:53 <elliott> GNU is not a centralised organisation, so they don't really "do" anything.
18:39:00 <elliott> I mean, beyond administration and advocacy and so on.
18:39:13 <elliott> Individual GNU projects range from incredibly active and ubiquitous to dead dead dead.
18:39:17 <kallisti> they have an office don't that? I'm wondering what they do on a daily basis.
18:39:48 <Friendship> It's awesome that the "official GNU snapshot" has a link to a 404, and isn't even hosted at gnu.org
18:40:14 <elliott> kallisti: Boring administration, I suspect.
18:40:23 <elliott> Are you sure GNU have an office?
18:40:30 <kallisti> that's probably what I'm thinking of.
18:40:50 <elliott> Well, the FSF handle lots of legal matters, do lots of promotional campaigns, advocacy, is rms' nanny...
18:41:20 <elliott> They maintain the licenses, have servers, etc.
18:42:08 <elliott> Friendship: Someone's gotta pay the guy's expenses :P
18:42:30 <kallisti> no I actually have no clue what that acronym is supposed to expand to.
18:42:54 <elliott> stallman you dimwitted dimwit
18:42:55 <shachaf> It expands to "rms m stallman"
18:43:09 <elliott> Friendship: Watch as we find out that kallisti does not know who Stallman is.
18:43:36 <elliott> rms = Richard Matthew Stallman. HTH HAND
18:43:47 <kallisti> WHY WOULD YOU EXPECT ME TO KNOW STALLMAN'S MIDDLE FUCKING INITIAL.
18:44:02 <elliott> Friendship: my little rms freedom is magic
18:44:26 <elliott> It's like esr, except rms is more tolerable.
18:44:32 <kallisti> ...sorry I wasn't born in the 70s hacker culture as you apparently were.
18:44:50 <elliott> Friendship: So, if you got op status, would you kick kallisti right now?
18:44:57 <elliott> (They count extra, since I'm God.)
18:45:10 -!- PiRSquared has changed nick to HalfTauRSquared.
18:45:38 <kallisti> "memorize Wikipedia" is still on my list of todos
18:46:18 <Friendship> I hate to say it, but willful ignorance isn't necessarily kick-worthy.
18:47:12 <kallisti> I would say that ignorance of some subjects is... necessary.
18:47:28 <elliott> Stand up for what's right here.
18:50:00 <kallisti> Friendship: so, if you don't know the name of every episode of Supernatural because the list freely available on the internet
18:50:13 <kallisti> or, a result of opportunity costs?
18:50:16 <Friendship> kallisti: This is #esoteric, not #shitty-tv-shows
18:50:28 <kallisti> esoteric free software advocates.
18:51:00 -!- Friendship has set topic: Home of esoteric free software advocates | So good to be in the Morning....In America! | http://codu.org/logs/_esoteric/ | http://esolangs.org/wiki/ has moved servers!.
18:52:11 <kallisti> just you wait until I get a chance to chastize your lack of knowledge of middle initials..
18:53:04 <Friendship> (Because I have established in the imaginary canon of #esoteric that my middle name is Friendship)
18:53:18 <kallisti> oh we weren't actually listing our actual initials actually.
18:54:12 <kallisti> short for kallisti "likes Perl" kallisti
18:55:01 <Taneb> Except without the e
18:55:31 <Friendship> I think ":o(" are much better initials.
18:56:13 <Taneb> (The "E" stands for Elliott. And I almost actually had that as my middle name)
18:56:24 -!- augur has quit (Remote host closed the connection).
18:59:09 <kallisti> League for Programming Freedom sounds like a superhero organization.
19:04:24 <Friendship> http://www.gnu.org/graphics/bwcartoon-m.jpg <-- it is
19:10:29 -!- kallisti_ has joined.
19:10:36 -!- kallisti has quit (Ping timeout: 244 seconds).
19:14:46 <zzo38> I found something else wrong with esolang wiki. If you select what you want from special pages dropdown list, it is 404 error.
19:17:02 <zzo38> I think you forgot to install the "redirect.php" file
19:17:21 -!- augur has joined.
19:22:23 <mRoman> http://codepad.org/mpf1KzFL <- truth-machine gone OOP
19:24:07 <elliott> zzo38: the manual says redirect.php is only for legacy stuff
19:24:20 <elliott> i did install it but didn't map it to the web server; I can if it's causing you problems
19:24:27 <elliott> what was the other thing wrong with the wiki?
19:24:59 <Taneb> zzo38: is the moon waxing or waning?
19:25:01 <quintopia> elliott: have you installed apache before
19:25:11 <elliott> esolangs.org is using nginx
19:25:17 <elliott> but i have used apache in the past
19:26:08 <elliott> (I meant, the other thing zzo38 found that's wrong)
19:26:55 <elliott> quintopia: why do you ask?
19:28:06 <zzo38> Taneb: I thjink waxing?
19:28:54 <zzo38> elliott: The thing about redirect.php (the special pages dropdown in the Nostalgia skin uses it) is the only thing I was saying is wrong
19:29:40 <zzo38> I can say a lot of other things are wrong but the things other than that are mostly just a matter of my opinion.
19:31:21 <zzo38> Taneb: Can't you look it up yourself the phase of the moon? Why did you ask me? Sure, I can figure it out too, but still
19:31:28 <quintopia> elliott: because i am considering installing it now on my vps and want an idea of what kind of task it is to install
19:31:52 <Taneb> zzo38, you just seemed the right person to ask
19:32:11 <Friendship> So long as mRoman is making it OO, I'll make it Smalltalk (but with no real OO ^^)
19:33:07 <elliott> quintopia: There is absolutely no reason to make a new Apache installation today.
19:33:15 <elliott> Especially not on a VPS which will have comparatively low memory.
19:33:54 <elliott> Apache is a memory hog and pretty slow to boot. Also, its configuration is really baroque.
19:34:11 <elliott> I mean, not that it can't be made performant.
19:34:18 <elliott> But it's definitely not optimised for the kind of environment you get on a VPS.
19:34:20 <kallisti_> elliott prefers more romantic configuration styles.
19:34:21 <quintopia> so nginx is easier to install and use?
19:34:25 <zzo38> Does nginx support CGI, or only FastCGI? Looking at documentation for nginx, it seem various things I use in Apache which nginx don't have
19:34:33 <elliott> Definitely. (It's also pretty popular.)
19:34:39 <zzo38> Taneb: Why did I seemed the right person to ask?
19:34:52 <quintopia> zzo38: because you know where the sun is rising
19:35:03 <elliott> http://news.netcraft.com/archives/2012/01/03/january-2012-web-server-survey.html (third most popular webserver)
19:35:16 <elliott> The only alternatives in the "server that can do general stuff" stakes are... uhh, ISS and lighttpd.
19:35:21 <kallisti_> [Did you know...] that the Sri Lanka Eye Donation Society has donated over 60,000 corneas for transplantation in 57 countries, including those of the late President of Sri Lanka, J. R. Jayewardene?
19:35:32 <elliott> lighttpd leaks memory like a sieve, or did, and isn't all that popular; IIS is... presumably not one of your options.
19:35:34 <quintopia> elliott: so how long do you think it will take to configure?
19:35:37 <zzo38> quintopia: I only know where the sun is rising and what phase of moon and these things because of the computer program Astrolog, can plot charts which makes it clear these things.
19:35:47 <Taneb> zzo38, I dunno, I just thought "Hmm, the moon. Is it waxing or waning? I know who to ask! zzo38!"
19:35:51 <elliott> quintopia: It depends on what you want to do.
19:35:59 <elliott> zzo38: There are CGI<->FastCGI bridges.
19:36:19 <Friendship> elliott: Hm, I'm surprised that lighttpd isn't higher on the list ...
19:36:22 <elliott> It's true that nginx doesn't support CGI OOTB but it's easy to make it do so.
19:36:27 <quintopia> elliott: i will probably put a wordpress or something like that in it. some well-supported and documented content manager
19:37:12 <elliott> quintopia: Wellll, since I'm assuming you don't know what you're doing (no offence), I'd assign half a day or so to the task. 90% of that will be reading http://wiki.nginx.org/WordPress.
19:37:15 <elliott> You're using Debian, right?
19:37:35 <zzo38> Taneb: Download Astrolog onto your own computer and then figure out phase of moon and these things by yourself (although you would have to learn how to read the horoscopes and other charts)
19:37:46 <elliott> If so, setting up PHP for FastCGI is really easy (install one package and you're done), so the only thing you'll likely need to do is write a ~50-line nginx site description.
19:37:50 <elliott> quintopia: (What Debian release?)
19:37:54 <elliott> Not sure stable has php-fpm. But it might.
19:39:21 <elliott> Be careful with WordPress.
19:39:53 <zzo38> Taneb: You can do that, learn phase of moon and that stuff by yourself. Why don't you learn it by yourself in this way?
19:40:46 <quintopia> elliott: i know not to download templates from non-wordpress sites, and keep it up-to-date
19:41:33 <elliott> quintopia: That does nothing to protect you from the countless security flaws that have been discovered in the core code in the past... but perhaps they're better these days. Anyway, how big is your VPS?
19:41:36 <Taneb> zzo38, I don't know.
19:41:37 <elliott> You'll want to install that WP Super Cache thing.
19:41:56 <zzo38> In addition to phase of moon, and where sun is rising, I used Astrolog to figure out when is Chinese New Year, when is solar noon, and more things.
19:42:32 <elliott> quintopia: Oh, and you'll want to install APC, there are guides on the net... ignore most of the tuning advice for your purposes except upping the memory to 64 megs.
19:42:38 * elliott must ask why quintopia doesn't go with wordpress.com or something.
19:42:56 <quintopia> elliott: 1kRAM, 1TB bandwidth, 60GBHDD
19:43:15 <quintopia> i'm not committed to wordpress. if you know a better CM
19:43:25 <elliott> One kilobyte of RAM? Impressive.
19:43:47 <elliott> What kind of terrible VPS host is that that's giving you 1 terabyte of bandwidth per month on a RAM/HD plan that small?
19:44:18 <quintopia> its not a ripoff. its fairly cheap
19:44:34 <elliott> It is a ripoff, in that there's no way they'll be happy if you use all that bandwidth.
19:44:45 <fizzie> A kilomegabyte is the funniest unit.
19:45:05 <quintopia> but i'm not paying for the transfer really
19:45:16 <quintopia> i just want the RAM and the always-on status
19:45:26 <elliott> Anyway, I'm not sure why you're using a VPS if you just want to run a single CMS like WordPress. I mean, there are hosted solutions. But it's your time.
19:45:31 <ion> fizzie: I like the grambit more.
19:46:48 <fizzie> I wonder about prgmr's bandwidth limits. Technically they have those, but no-one has even clarified me the units (it's probably /month, but it's *almost* within the realm of possibility it's /day), and the billing site's "view my usage" page always shows only zeroes.
19:46:50 <quintopia> i already have the VPS. i would have the VPS with or without the webface
19:47:06 <quintopia> but i figure since i have it, i can put a blog on it too yeah
19:47:33 <quintopia> anyway, i eventually want to plug my bot into the webserver
19:47:40 <fizzie> "If you had it, you should have put a blog on it", doesn't someone rap like that?
19:47:41 <elliott> fizzie: It's most definitely per-month, unless prgmr have wildly differing bandwidth plans to the rest of the universe.
19:48:01 <zzo38> Probably first thing you should do if you install Astrolog, is to adjust the configuration settings in ASTROLOG.DAT file to your timezone, geographic location, preferences, and macros.
19:48:28 <elliott> OK, there is no way The Lorax is not going to be the most terrible film ever created.
19:48:56 <elliott> [[Now people are having a (rather justified) heart attack about the fact that The Lorax is now being used to cross-promote a new SUV. Earlier this week, Mazda announced that it has partnered with Universal Pictures to promote the new "'Seuss-ifed' 2013 Mazda CX-5 crossover SUV." The cross-promotion includes commercials with a cartoon version of the car driving through a valley of Truffula trees. The ads claim that the car is "Truffula tree friend
19:49:58 <zzo38> Why did you want the phase of moon anyways?
19:50:18 <fizzie> elliott: It's not *that* different from e.g. buyvm, which is another cheap thing. I mean, they give 1000GB of bandwidth for the 256M/30G $5/month plan.
19:51:01 <elliott> fizzie: You suggesting buyvm will be happy if you use all that?
19:51:17 <fizzie> elliott: Perhaps not, but that's their nominal "BW" number.
19:51:34 <elliott> Right, which just means they, too, are overselling, which is unsurprising for an ultra-budget provider like that.
19:52:32 <quintopia> elliott: they wont be upset though, since they are selling based on the fact that for every person that does use it, 100 others won't. it works out.
19:53:38 <elliott> That's why everybody ran into all those horrible clogging problems with that overselling provider -- was it DreamHost? -- some years ago.
19:53:59 <elliott> Lying to your customers works OK, because most of them won't realise it!
19:54:05 <ais523> elliott: that still happens to BlogNomic occasionally
19:54:54 <quintopia> elliott: as long as they stay on top of adding bandwidth when they need to, they shouldn't be causing problems
19:55:31 <elliott> quintopia: That same argument would suggest that they should just offer completely "unlimited" bandwidth.
19:55:41 <elliott> And heck, RAM too, because for every person that uses it...
19:56:07 <quintopia> your extrapolation tactics wont work on me, fallacious arguer
19:56:17 <fizzie> 1000 GB/month equals 3 Mbps; that much per customer is I guess slightly much.
19:56:23 -!- ais523 has quit (Remote host closed the connection).
19:57:14 <fizzie> Anyway, I was more wondering whether prgmr actually has a counter or not at all, since it doesn't seem to be user-visible.
19:57:49 <Friendship> They just set a number so that if somebody starts being a problem they can point to it.
19:57:52 <Taneb> Wow, that's a handy escape route out of TVTropes
19:57:58 <Taneb> Genius Programming links to our wiki
19:58:09 <elliott> prgmr don't really watch anything.
19:58:14 <elliott> The limits are more like... guidelines :P
19:59:40 <Friendship> Welllll, the HD and RAM limits are pretty well limits.
20:00:10 <fizzie> I seem to have moved a total of 4 GiB in 75 days (unless these counters have wrapped around), so I suppose I'm one of their "not a problem" users when it comes to that.
20:00:36 <elliott> 2.21 gigs in however long the esowiki's been up here.
20:00:46 <elliott> 99% of that is spambots and rogue crawlers from less-regulated parts of the globe.
20:00:55 <elliott> I should probably block the latter. Except they don't actually look at /robots.txt.
20:01:05 <Taneb> Thanks, Phantom_Hoover
20:01:20 <Taneb> You're still my favourite person in Northern Edinburgh
20:02:33 <Taneb> `quote now is not the time
20:02:44 <HackEgo> Failed to clone the environment!
20:02:54 <fizzie> It keeps happening, yes.
20:03:09 <elliott> DAMMIT 1.19 COME OUT FASTER
20:03:18 <Taneb> Now I just have an image of HackEgo endlessly falling down a staircase ENDLESSLY
20:03:25 <elliott> Friendship: You should make Transactional HackEgo hapen.
20:03:39 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29212
20:04:02 <HackEgo> Failed to clone the environment!
20:04:11 <fizzie> Taneb: Foiled by the clone army.
20:04:13 <Taneb> I'll do this manually
20:04:14 <Taneb> 668) <HackEgo> 678) <Ngevd> Dammit, Gregor, this is not the time to fall in love <HackEgo> 187) <alise> Gregor: You should never have got her pregnant. <Gregor> what whaaaaaaaaaaaat
20:05:20 <elliott> It's the only way to make file pile stop from getting taller, etc.
20:05:57 <Friendship> elliott: I don't think it's all HackEgo though ... but if it's not, I don't know what it is >_>
20:06:09 <elliott> Friendship: Shhh, I just have to shoehorn as many SBAHJ references in as I can.
20:06:17 <elliott> Friendship: Would it help if I deleted some quotes?
20:06:29 <elliott> (http://www.mspaintadventures.com/sweetbroandhellajeff/?cid=031.jpg, for posteriority.)
20:10:28 <elliott> "I LIKE WRITING BIG, IT MAKES ME FEEL COOL" -- Friendship, 2005
20:10:31 <Taneb> I can't remember the context to...
20:10:42 <HackEgo> 511) <Taneb> So it's like... Rummy mixed with... breakout?
20:11:58 <elliott> http://www.ihopandthelorax.com/
20:21:53 <zzo38> How do you mix rummy with breakout?
20:22:53 <mRoman> You have to destroy the blocks in a specific order or you lose?
20:30:16 <Taneb> `pastelogs Rummy mixed with...
20:30:57 <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:35:10 <Taneb> That's what's like rummy mixed with breakout!
20:35:34 <zzo38> How is mahjong like rum mixed with breakout?
20:36:41 -!- oerjan has joined.
20:37:14 <Taneb> You asked me that last time
20:37:19 <HackEgo> oerjan: 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
20:39:00 <HackEgo> oerjan: This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net.
20:39:04 <elliott> You don't believe in astrology or anything, right?
20:39:09 <quintopia> i did not realize that there were 5 billion different PHP CMS's
20:40:13 * oerjan swats precognizant elliott -----###
20:45:03 <elliott> oerjan: So do you want to be a wiki admin yet?
20:45:09 <zzo38> Oerjan did do the horoscope for Agora Nomic, although that is not entirely relevant. and anyways they just used the default settings without adjusting them so you just do it without understand really
20:45:39 <elliott> Yeah, that oerjan is a poser astrologist.
20:47:36 <Sgeo> fortune -o offended me. It considered a quote I don't find offensive as offensive.
20:47:57 <oerjan> Sgeo: is that a quote?
20:48:22 <oerjan> the logs are just too long today
20:48:58 -!- augur has quit (Remote host closed the connection).
20:49:01 <Sgeo> No, I'm just being silly. In my UNIX class, I showed someone the fortune command, and noted the -o option, so he installed it. The first two quotes that came out of fortune -o may have been from the atheism vocabulary or something?
20:49:12 <elliott> oerjan: hope you enjoy RECENT CHANGES, then
20:49:57 <Sgeo> Third one was some limerick about a whore.
20:50:00 <elliott> Sgeo: -o mostly enables stuff that isn't actually offensive, and things that you don't *want* it to output because they're actually blatantly offensive rather than interesting or amusing.
20:50:18 <zzo38> I think the fortune program also has option to select from both offensive and nonoffensive? The one I have always selects from both offensive and not offensive files, it doesn't have option to change them
20:50:18 <elliott> So you just have to deal with not seeing any swear words and missing out on a bunch of unobjectionable stuff because the organisation is crap.
20:51:44 <Sgeo> I think you can list the ... files it uses?
20:52:26 * oerjan wonders if today's xkcd has a point he's not getting
20:53:03 <Sgeo> It looks pretty?
20:53:35 <elliott> Reminds me of the <100 days.
20:53:51 <elliott> Can't tell whether actually pencil-drawn, or just made to look it.
20:54:44 <elliott> A lot of the really old comics were essentially meaningless too.
20:55:04 <elliott> Phantom_Hoover: Make sure I'm not just going crazy.
20:55:21 <itidus20> i like trying to draw beach scenes sometimes.. and i am not good at drawing.. that scene is so well drawn i would want to pack my bags in
20:58:26 <itidus20> ok so the bread represents gathering people together... eg facebook
20:58:45 <itidus20> and then selling those people off
20:59:29 <itidus20> uh.. that is to say, a website business.. you attract users.. and then sell their personal data etc
21:00:51 <Phantom_Hoover> elliott, I like it too; it doesn't have that "look at me I'm funny" feeling that most newer xkcd does.
21:01:14 <Taneb> I like white beret guy
21:08:00 <elliott> He stopped being an entertaining sociopath and started just being an asshole ages ago.
21:11:46 <elliott> http://xkcd.com/284/ OK, xkcds used to be entertaining even if you didn't get them at all.
21:12:12 <Taneb> I liked that one because I have done pretty much that
21:16:13 -!- elliott has quit (Quit: Leaving).
21:20:04 <Taneb> elliott is a recluse. He has no access to tape measures.
21:20:36 <Taneb> He gets a meter stick
21:20:37 <itidus20> sometimes "you didn't get them" doesn't mean "i didn't get them"
21:21:06 <oerjan> itidus20: i do not think that applies
21:22:49 <itidus20> to me the funny part is that it's a reference on the internet to the activity of extending tape measures in the air and seeing them collapse
21:25:20 <itidus20> sort of like if he did a comic book about losing the end of a stickytape roll when using the tape.. to the extent that some companies started to include a tab of paper to make it easier, and others included a plastic dispensor with a metal cutter
21:25:59 <itidus20> and needing to have scissors on hand... the way tape can distort and get ruined when you try to break it by hand
21:26:15 -!- azaq23 has joined.
21:26:28 -!- azaq23 has quit (Max SendQ exceeded).
21:26:35 <pikhq> elliott is British. They don't use tape measures, because tape measures don't support fathom/hand/centimeter measurements.
21:27:08 <pikhq> Sorry, *centimetre*.
21:27:27 * oerjan has a plastic dispensor with a plastic cutter
21:29:04 <itidus20> i meant plastic dispensor in terms of what the dispensor was made of( an adjective), not what the dispensor dispensed (a noun)
21:29:41 <itidus20> ahh the ambiguity is diabolical
21:30:07 <oerjan> i suspect the tape may be plastic too?
21:30:23 <oerjan> (in the dispensor. the tape measure is metal.)
21:32:15 <itidus20> i was kinda imagining a dispensor dispensing plastic for the purpose of manufacturing things with plastic
21:33:19 <oerjan> those 3d printers might have some
21:35:44 * Sgeo writes a Common Lisp macro
21:35:54 <Sgeo> (Just a duplicate of an existing macro, to help me get the hang of macros)
21:37:35 <oerjan> write a macro for duplicating macros, duh
21:41:46 -!- Nisstyre has joined.
21:44:01 -!- pikhq has quit (Ping timeout: 245 seconds).
21:44:10 -!- pikhq has joined.
21:45:02 -!- KingOfKarlsruhe has joined.
21:46:29 -!- KingOfKarlsruhe has quit (Remote host closed the connection).
21:47:25 -!- TeruFSX has quit (Read error: Connection reset by peer).
22:17:57 -!- Taneb has quit (Quit: Goodbye).
22:31:32 -!- pikhq_ has joined.
22:33:40 -!- pikhq has quit (Ping timeout: 244 seconds).
22:53:10 -!- HalfTauRSquared has changed nick to PiRSquared17.
22:55:50 -!- monqy has joined.
23:00:46 -!- Ngevd has joined.
23:02:51 <Friendship> <elliott> "I LIKE WRITING BIG, IT MAKES ME FEEL COOL" -- Friendship, 2005
23:04:42 <zzo38> He picked up way too many cards! Now he has only ten turns remaining and still needs to pick up six side cards to win, I don't think so especially since they keep getting paralyzed
23:06:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28199
23:11:33 <Friendship> That being said, I assumed he was talking about caps, not exclamation points?
23:11:47 <Friendship> And my main thing is that I used to overuse the tongue-face smiley, anyway.
23:14:33 <zzo38> They have a lot of ENERGY REMOVAL and stuff, but none of that will help if you are just going to deck yourself.
23:15:05 <PiRSquared17> wtf was with <Keymaker> !!!!!!!!ATTENTION!!!!!!!!ATTENTION!!!!!!!!ATTENTION!!!!!!!!ATTENTION!!!!!!!!
23:16:00 <oerjan> i suspect he may have wanted some !!!!!!!!ATTENTION!!!!!!!!ATTENTION!!!!!!!!ATTENTION!!!!!!!!ATTENTION!!!!!!!!
23:16:21 <zzo38> Especially if your opponent has enough defense.
23:17:56 <oerjan> http://codu.org/logs/_esoteric/2005-01-21.txt
23:18:06 <oerjan> it doesn't clarify very much
23:19:53 <oerjan> Friendship: what's more strange is that that log file seems to contain everything twice
23:26:16 <Friendship> mRoman: Discuss similarities re Stlang and Glass kthx?
23:27:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24049
23:28:14 <Friendship> oerjan: In response to your previous statement, that is a lie and you should feel bad.
23:28:19 -!- pikhq has joined.
23:28:52 -!- pikhq_ has quit (Ping timeout: 240 seconds).
23:36:28 -!- Ngevd has quit (Quit: Goodbye).
23:36:51 <itidus20> wow that jhix guy.. <nooga> he's 14 and he's writing interpreters in haskell and he knows lambda calculus and everything!!!!!!
23:37:17 <monqy> what's so special about that
23:38:32 <itidus20> that depends on whether writing interpreters, coding in haskell, and knowing LC is special or if not really
23:40:23 <itidus20> the jury is out... unfortunately i selected a jury of lollypop ladies
23:41:10 <pikhq> itidus20: Special relative to the general populace. Not very special relative to the set of people for whom that sentence makes sense.
23:45:13 <itidus20> the trick [as trick identification is always important when describing things] is to extend every other activity and skill a person does and has by the development of new skills and activities
23:49:40 <itidus20> i think i wanted to say something like "extend every extra"
23:51:36 -!- pikhq_ has joined.
23:54:43 -!- pikhq has quit (Ping timeout: 248 seconds).
23:59:43 -!- hagb4rd has joined.
23:59:51 -!- Phantom_Hoover has quit (Quit: Leaving).