00:00:07 <Vorpal> though it could be argued that bignum cells are possibly not allowed by the standard
00:00:34 <Vorpal> kallisti, iirc javascript uses floats? You want to avoid that, and get proper integers, or at least limit yourself to an integer range
00:00:39 <Vorpal> 32-bit or 64-bit I guess
00:00:52 <kallisti> there are no "proper integers"
00:01:09 <Vorpal> well you want the proper precision and behaviour
00:01:13 <Vorpal> as if they were integers
00:01:22 <Vorpal> soundnfury, I just said it did?
00:01:35 <Vorpal> <Vorpal> btw, cfunge can do 64-bit cells. Forgot if it does that by default. And efunge does bignum cells.
00:01:42 <soundnfury> <soundnfury> does efunge do bignum cellos?
00:01:52 <Vorpal> oh, I thought it was a typo
00:02:01 <kallisti> actually I might write the interpreter in coffeescript.
00:02:10 <Vorpal> kallisti, what is that?
00:02:24 <kallisti> a dialect of javascript that compiles down to javascript.
00:02:35 <Vorpal> kallisti, ... why does that exist?
00:02:46 <kallisti> because people want sugar with their javascript. :D
00:02:48 <Vorpal> anyway you should clearly use node.js
00:02:50 <soundnfury> I think coffeescript support should be mandatory for HTCPCP user-agents
00:03:03 <soundnfury> kallisti: syntactic sugar causes and you know the rest
00:03:23 <Vorpal> soundnfury, oh the coffee thing?
00:05:14 <Vorpal> kallisti, anyway in here I think I, Deewiant and fizzie could probably help you with any befunge question you might have, except for the cfunge-INTERCAL bridge code, please direct any queries relating to that at ais523
00:05:51 <Vorpal> (yes there is a fingerprint IFFI that makes cfunge and the ick INTERCAL implementation interact. Technically cfunge becomes embedded in ick)
00:06:11 <Vorpal> (or rather in the program ick produces)
00:06:29 <Vorpal> (since I don't understand intercal terribly well, I can't help with that)
00:07:37 <kallisti> also AFAIK using coffeescript and node.js aren't mutually exclusive.
00:07:47 <kallisti> coffeescript plays nicely with javascript code, of course.
00:08:29 <Vorpal> kallisti, hey, why not implement an intercal parser?
00:09:14 <Vorpal> (that is notoriously difficult, it is an LR(infinite) grammar in the worst case)
00:11:12 <Vorpal> Deewiant, hm maybe I should implement some more fingerprints in cfunge
00:11:33 -!- Patashu[Zzz] has changed nick to Patashu.
00:11:35 <Vorpal> due to some of the optimisations EVAR might be a bit of a challenge for example
00:11:45 <Vorpal> kallisti, btw CCBI is implemented in D
00:11:51 <Vorpal> the only program I know that uses D
00:13:05 <Vorpal> hm I could implement IIPC and IMAP I think, it would just make the code less cleanb
00:13:10 <zzo38> I have made up some functions for dealing with free monads, such as: affectFree :: Functor g => (forall z. (s, f z) -> g (s, z)) -> (s, Free f x) -> Free g (s, x); reduceFree :: Monad m => (forall z. f z -> m z) -> Free f x -> m x;
00:13:38 <Vorpal> kallisti, HEY you want to implement TRDS. It allows time travel for the instruction pointers
00:13:49 <Vorpal> only rcfunge (the original implementation of it) and CCBI implements it
00:14:02 <kallisti> I'm not looking to implement every fingerprint ever.
00:14:18 <kallisti> I just want to use befunge on a website. :D
00:14:34 <Vorpal> kallisti, what about SOCK? Would that even work in a browser?
00:14:41 <Vorpal> kallisti, fungot uses it
00:14:42 <fungot> Vorpal: hold on... pyrire... is that what they *really* can't stand is a smartass
00:14:43 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
00:16:30 <Vorpal> FILE, SOCK, FING, STRN, SCKE, TOYS, REXP
00:16:42 <Vorpal> TOYS is only used for the reload on the fly
00:18:27 <kallisti> Vorpal: pretty sure your example involving k would just run out of stack.
00:18:40 <Vorpal> kallisti, empty stack pops a 0 though
00:19:00 <Vorpal> kallisti, anyway my point here was that k on j is a pain, k on k is even more of a pain
00:19:17 <Vorpal> ccbi even opted to not handle k on k specially and just hope for the best
00:19:23 <Vorpal> I don't remember what cfunge does
00:20:22 <Vorpal> kallisti this is what cfunge does: http://sprunge.us/iMQH?c
00:21:16 <Vorpal> that recursively invokes the function based on different prototypes (which can happen due to different configurations when building)
00:22:03 <Vorpal> kallisti, anyway k is one of those instructions where you could make a case for several different interpretations
00:22:19 <Vorpal> in fact mycology accepts several variants there (it prints it as UNDEF: )
00:22:34 <kallisti> I think it's pretty clear that whatever k does, it should be one tick.
00:22:45 <kallisti> even if it runs k multiple times.
00:23:16 <Vorpal> kallisti, ah that isn't the issue. The issue here is different. Where it should fetch the instruction
00:23:17 <kallisti> the tricky part for me is how the linewrapping behaves with jumps.
00:23:45 <Vorpal> kallisti, ooh yeah that one is tricky
00:24:07 <Vorpal> cpressy (who made befunge) was here some time ago and we discussed it with him
00:24:12 <Vorpal> forgot what the outcome was
00:24:20 <kallisti> Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;), treats it as an instruction, executing it n times.
00:24:34 <kallisti> it clearly states that kk should execute k, n times.
00:24:46 <kallisti> so then kj should execute j, m times.
00:24:50 <Vorpal> but what about the inner k, where should it fetch the instruction?
00:25:04 <Vorpal> k should fetch it the next from the current position, but executes it at the k iirc
00:25:09 <Vorpal> which leads to some issues with kk
00:25:28 <Vorpal> where does that go up from
00:25:35 <Vorpal> does it go up above the k or above the ^
00:26:15 <kallisti> the result is the same as just ^
00:26:57 <kallisti> I don't think it makes any sense for k to execute the next instruction from its location in the grid.
00:27:19 <Vorpal> right, I forgot how it was supposed to work. I wrote most of cfunge in like 2008
00:27:28 <Vorpal> kallisti, what about 01-k2 btw?
00:27:35 <Vorpal> how many times does that execute, if any?
00:27:39 <Vorpal> or does it do something else?
00:27:53 <Vorpal> basically you have a -1 on the stack
00:28:18 <Vorpal> kallisti, in befunge? of course
00:28:32 <Vorpal> kallisti, signed 32-bit commonly
00:28:57 <Vorpal> kallisti, anyway don't stare yourself blind at the spec for this one:
00:28:59 <Vorpal> "UNDEF: k with a negative argument reflects"
00:29:06 <kallisti> well since "execute -1 times" isnt really meaingful it would just be undefined behavior
00:29:09 <kallisti> so... whatever you want to do.
00:29:21 <Vorpal> (iirc ccbi executed the absolute value instead)
00:30:09 <Vorpal> btw the cfunge bzr repo has some tests for things that mycology doesn't test. Might be useful. Might not be
00:31:25 <Vorpal> hm I should get rid of the ones named *.b109, since that standard died due to lack of work.
00:32:01 <Vorpal> kallisti, read the spec for y too. Have fun
00:32:16 <kallisti> so, I have 1 TB of storage on this server. How can I utilize this for the Great Good of the esolang community?
00:33:30 <Vorpal> kallisti, give me root access
00:33:47 <kallisti> however I'll give you private git repos.
00:35:14 <Vorpal> kallisti, anyway is the server in a data center?
00:36:03 <kallisti> I got the cheapest one, from a reseller
00:36:35 <kallisti> 2 GB RAM, celeron processor. Sufficient for a small-scale storage server.
00:37:03 <Vorpal> kallisti, only twice the ram of my phone
00:37:19 <Vorpal> and as much ram as my laptop
00:37:26 <Vorpal> 1/8 of the RAM in my desktop
00:37:27 <kallisti> yeah it has the same CPU and RAM specs as my old dell desktop.
00:37:47 <Vorpal> and I can't make any silly CPU comparisons without more details :P
00:38:31 <Vorpal> okay that is less than my phone
00:38:53 <kallisti> I don't remember how to check this stuff from shell.
00:39:01 <Vorpal> kallisti, cat /proc/cpuinfo
00:39:50 <kallisti> sufficient for a server, I think.
00:39:55 <Vorpal> kallisti, my phone has 4 cores at 1.4 GHz each. Of course, it is ARM so any comparison is pointless.
00:40:24 <Vorpal> though atm /proc/cpuinfo on it only lists one, but iirc it hotplugs the cores on demand
00:40:52 <Vorpal> http://sprunge.us/HUfh
00:41:31 <kallisti> so yeah it looks like their plans only list the minimum of what you're getting.
00:42:05 <Vorpal> kallisti, what about traffic / month?
00:42:31 <kallisti> 5 TB a month before they limit your bandwidth.
00:42:36 <Vorpal> I can only find ** and *** below
00:42:47 <kallisti> ** : The traffic is unlimited. If you exceed 5TB/month for the Kimsufi 2G, 10TB/month for the Kimsufi 16G or 15TB/month for the 24G Kimsufi the connection will be limited to 10 Mbps. You can buy additional TB of traffic directly from your manager: €0.99 per TB
00:42:49 <Vorpal> kallisti, that is not "unlimited"
00:42:51 <kallisti> they messed up their asterisks. :P
00:43:05 <kallisti> I don't see myself exceeding 5 TB a month.
00:43:41 <kallisti> there's a .co.uk but they only work with UK customers.
00:43:42 <Vorpal> oh right, it is spelled Ireland in English
00:43:47 <kallisti> the .ie site has ireland, US, and I think Canada.
00:44:18 <Vorpal> "BSD Raw, for BSD fans", I wonder why they don't say that the Linux variant is for Linux fans, or the Windows variant is for windows fans
00:44:25 <kallisti> best deal I've found for a dedicated server. the price per storage space is much higher than any VPS I've found.
00:44:38 <Vorpal> kallisti, much lower you mean
00:45:15 <Vorpal> kallisti, "help what is ratio"?
00:45:48 <kallisti> I don't know how to explain what that means
00:45:57 <Vorpal> kallisti, which distro did they pre-install?
00:46:21 <kallisti> you pick from a list. I chose Debian (stable was the only option, but I updated to wheezy)
00:46:22 <Vorpal> I would probably go for debian myself
00:46:42 <kallisti> I'm afraid of things called "unstable"
00:47:16 <Vorpal> isn't there an even more unstable version than sid iirc?
00:47:19 <kallisti> for a production server, you'd want Debian stable. testing would be a bit risky.
00:47:54 <Vorpal> also I guess they don't give you hardware visualisation with the cheap variant
00:48:18 <Vorpal> you should go for colo, then the hardware is a one-time investment (huge one though)
00:48:19 <kallisti> there's some graphs and stuff I haven't looked at. you can view resource usage
00:48:45 <Sgeo> I think my experience with making a program that had an inordinately large startup time made me desire an environment with live modification of code more than I really should
00:48:46 <Vorpal> you provide the hardware
00:48:55 <Vorpal> kallisti, do they give you any kvm access?
00:49:04 <Vorpal> to access BIOS and if you fuck up ssh
00:49:31 <kallisti> there's a "web console" if you fuck up your network config, and you can reboot from the admin panel.
00:49:49 <Vorpal> kallisti, with web console you mean a serial console?
00:50:31 <Vorpal> but yeah it seems like a nice deal
00:51:02 <kallisti> I wouldn't mind upgrading to one of the better servers if I could afford it.
00:51:09 <kallisti> dunno what I would do with 16 GBs of RAM and 2 TBs though.
00:51:17 <Vorpal> for now I manage fine with dropbox. My phone came with 50 GB free for 2 years.
00:51:28 <soundnfury> kallisti: my server (which is also my laptop, heh) is running debian Testing
00:51:39 <kallisti> yeah I'm running test on both my laptop and server.
00:51:45 <Vorpal> soundnfury, how do you do RAID then?
00:51:46 <soundnfury> Stable is more than stable, it's fossilised
00:51:51 <Vorpal> kallisti, does the hardware have RAID btw?
00:51:56 <Vorpal> I wouldn't do a server without RAID 1
00:52:05 <Vorpal> soundnfury, right, I even do RAID 1 on my desktop
00:52:22 <kallisti> Vorpal: not sure. I know there's backup services but it costs extra I believe.
00:52:24 <soundnfury> it's hard to fit more than that into the case heh
00:52:25 <Vorpal> (the third one is for windows, no raid for it
00:52:41 <Vorpal> soundnfury, then it isn't a desktop case
00:52:43 <soundnfury> (however, I do intend (eventually!) to get an external disk that I can raid onto
00:52:52 <Vorpal> I have space for two more disks
00:52:56 <soundnfury> Vorpal: I know it isn't. It's a laptop, not a desktop
00:53:08 <Vorpal> I read laptop as desktop somehow
00:53:18 <Vorpal> I remember reading about a laptop with 2 disks
00:53:27 <Vorpal> some insane 20" thingy with dual screens iirc
00:53:31 <kallisti> Vorpal: yeah RAID costs extra.
00:53:38 <Vorpal> kallisti, how much extra?
00:54:46 <kallisti> Vorpal: actually it looks like they don't offer it at all. they point you to the OVH site for that.
00:55:11 <kallisti> http://www.ovh.ie/dedicated_servers/
00:55:56 <Vorpal> those cost considerably more
00:56:06 <kallisti> yes. they come with more bells and whistles. and probably better support.
00:56:26 <kallisti> kimsufi is "here, have a computer. don't break anything"
00:56:43 <Vorpal> kallisti, I would love "here, have a computer with RAID 1, don't break anything"
00:57:02 <Vorpal> support isn't what I'm looking for
00:57:15 <kallisti> I would hope that hard drive failure isn't something I'll need to worry about.
00:57:32 <Vorpal> kallisti, have backups on everything on the server I would suggest
00:57:53 <kallisti> well at the moment the server is my backup.
00:57:54 <Vorpal> using it as an backup is fine, unlikely both your local disk and the remote disk would fail at the same time
00:58:00 <kallisti> but eventually I'll have an external drive I can rsync to.
00:58:49 <kallisti> also I'm going to set up a fancy backup system with rsync + git annex.
00:59:23 <kallisti> I don't want to fool with git locally. so I'll just have a local cronjob that rsyncs to the server, and a serverside cronjob that does git / git annex stuff
00:59:42 <kallisti> so I can version control small files
00:59:51 <Vorpal> kallisti, my /etc is in bzr
00:59:51 <kallisti> git annex lets you check things into git without actually checking the file contents in
01:00:01 <kallisti> so you can use it to transfer large files.
01:00:05 <kallisti> but version control small files.
01:00:22 <kallisti> it's like a dropbox replacement for people with servers. :P
01:00:51 <Vorpal> what is the prefix for EgoBot now again?
01:00:54 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
01:00:57 <EgoBot> help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
01:01:06 <kallisti> psh, I haven't been here for months and I know this stuff. c'mon.
01:01:11 <EgoBot> languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
01:01:28 <Vorpal> !befunge98 > text ":P"
01:01:44 <Vorpal> don't fear though, there are limits
01:01:58 <kallisti> oh wait befunge starts from right to left?
01:02:07 <Vorpal> kallisti, it travels >
01:02:16 <Vorpal> but look at what t does
01:02:24 <Vorpal> the child IP starts in the opposite direction
01:02:56 <Vorpal> kallisti, speaking of which, you need to move the child IP forward before it's first move
01:02:58 <kallisti> so >t with a @ along the control flow path makes a fun little concurrent stream of sorts.
01:03:10 <Vorpal> the spec is written so that the first instruction the child ip executes is t....
01:03:49 <Vorpal> !befunge98 >t"foo"...@
01:03:50 <EgoBot> 111 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111 102 111 111
01:03:55 <kallisti> each thread has its own stack I'd imagine.
01:04:07 <Vorpal> kallisti, and its own set of fingerprints
01:04:23 <Vorpal> you indicate support in y
01:04:36 <Vorpal> well, befunge-98 is surprisingly sane
01:04:48 <Vorpal> it is however really hard to compile, and to implement in general
01:05:18 <Vorpal> kallisti, remember the IP can't only move ^>v< you can use x to set the delta vector to any value
01:05:23 <Vorpal> that is going to mess up compiling :P
01:05:45 <Vorpal> imagine reading the delta vector from user input
01:05:46 <kallisti> Vorpal: re: VPA. kimsufi has VPS offers. and there's nothing stoping you from running xen or kvm or whatever on your dedicated server.
01:05:59 <kallisti> in fact the 24G server would be sufficient to run a small VPS service.
01:07:17 <Vorpal> btw samsung sucks at coding. Each time I plug my phone into a computer it spawns two zombie shell processes
01:07:36 <Vorpal> the parent process? kiesexe... Kies is Samsung's PC bloatware phone suite
01:07:55 -!- itidus21 has left ("Leaving").
01:10:34 <Vorpal> app_113 8739 1909 461856 31200 ffffffff 00000000 S com.sec.android.daemonapp.ap.yahoostock.stockclock <-- huh, I disabled the yahoo bloatware... Wtf
01:10:41 <kallisti> since I freelance for living these days, private git repos will come in handy.
01:12:12 <Vorpal> don't see where it was
01:12:48 <kallisti> "freelance for living" sounds like something an ignorant Swede would say!
01:13:42 <kallisti> not a sophisticated speaker of the English serpent.
01:14:59 <Vorpal> kallisti, and where are you from?
01:15:25 <Vorpal> blergh, you can't even spell colour correctly
01:15:44 <Vorpal> And you put z instead of s in many places
01:15:50 <Vorpal> you have nothing to say when it comes to English :P
01:16:09 <kallisti> it knows what it means to be cool.
01:16:15 <Vorpal> kallisti, why didn't you write "to uze z" then?
01:16:33 <kallisti> because the art of cool is a subtle thing.
01:16:44 <kallisti> you can't be brazen with your z's
01:17:09 <kallisti> also what is the name of that figure of speech I just used
01:18:18 <Gregor> Yes, "non sequitur" ;)
01:19:03 <Vorpal> kallisti, "figure of speech"
01:20:18 <Vorpal> anyone know where android keep the group mappings?
01:20:31 <Vorpal> it has no /etc/passwd or /etc/groups
01:20:39 <Vorpal> yet "id" manages to work
01:22:08 <Vorpal> oh "Actually there is a stub for mapping the android_id to passwd structure. Although there is no physical /etc/passed, the stub should populate the values. "
01:25:48 <Vorpal> well, I'm going to sleep. Good night
01:26:11 <Vorpal> kallisti, don't forget to check out mycology. And I will ask you tomorrow how it all went I guess
01:26:19 <Vorpal> (how much you written so far and so on)
01:26:47 <kallisti> I need to work on things that get me paid, actually.
01:27:10 <kallisti> it's not too bad. I'm writing it in Haskell, because I can.
01:27:22 <Vorpal> I got a job. Will start last July
01:27:57 <Vorpal> at Atlas Copco. Will code in C++ on top of a real time OS
01:28:30 <Vorpal> kallisti, it is easy to get jobs if you took computer science or computer engineering in Sweden
01:28:32 <kallisti> you should convince them to use FPC++
01:29:31 <Vorpal> kallisti, did you see pikhq's lambda's in C (using gcc for closures)
01:29:40 <Vorpal> ask him to give you a link otherwise
01:29:49 <Vorpal> it is awesome to look at
01:29:49 <kallisti> FC++ is actually well designed.
01:30:14 <kallisti> it supports higher-order functions on functions with polymorphic types.
01:30:23 -!- DHeadshot has joined.
01:30:25 <kallisti> which IIRC templates don't do.
01:30:26 -!- DHeadshot has quit (Remote host closed the connection).
01:30:36 <Vorpal> is this a C++ library?
01:31:21 <kallisti> they're working on getting it in boost actually
01:31:33 <Vorpal> boost is not a good thing :P
01:31:50 <Vorpal> from what I have seen of it
01:32:04 <Vorpal> For me C++ is just a job. C++ is not fun.
01:32:10 <kallisti> I've used the async networking bits of it, and from what I can tell it's pretty well-designed.
01:32:17 <kallisti> I wouldn't expect interfaces to be simple in C++.
01:32:40 <Vorpal> Java or C# (with their standard libraries) are much nicer
01:32:57 <Vorpal> C# is actually a pretty decent imperative object oriented language
01:33:08 <Vorpal> java is not quite as decent
01:33:17 <Vorpal> (generics and type erasure for a start)
01:34:04 <kallisti> I enjoy the way C++ "feels" if that makes sense.
01:34:06 <Vorpal> anyway I need to sleep
01:34:14 <Vorpal> kallisti, you sick sick person! :P
01:34:33 -!- DHeadshot has joined.
01:34:50 <Vorpal> in fact most programming languages do to some extent, even haskell sometimes. But Haskell less than usual, and C++ more than usual
01:35:04 <Vorpal> anyway, night *closes lid on laptop running the irc client*
01:39:18 -!- Vorpal has quit (Ping timeout: 245 seconds).
01:59:46 <ion> I’ve just been playing that game. \o/ It’s one of the best games i’ve played.
02:02:53 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:02:56 -!- DH____ has joined.
02:03:55 -!- DHeadshot has joined.
02:05:06 <Phantom__Hoover> ion, well I did start playing it again yesterday in lieu of considering augur's comments on nonlethal and stealth, and decided I wasn't having any truck with either.
02:05:41 <Phantom__Hoover> Suffice to say, dragon's tooth sword + regen aug makes most of the game a cakewalk.
02:05:47 -!- DH____ has quit (Read error: Connection reset by peer).
02:06:28 <ion> I’ve been playing a stealth game, avoiding melée.
02:07:10 <Phantom__Hoover> So are you using the... one stealth non-melee weapon in the vanilla game?
02:08:01 <Phantom__Hoover> (Silenced sniper rifle, stealth pistol doesn't count since it can barely kill the average grunt with a headshot with pistols at master.)
02:08:30 -!- DHeadshot has quit (Ping timeout: 264 seconds).
02:13:27 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
02:21:43 -!- DH____ has joined.
02:22:16 -!- DHeadshot has joined.
02:26:30 -!- DH____ has quit (Ping timeout: 264 seconds).
02:30:52 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:30:58 -!- DH____ has joined.
02:36:19 <zzo38> Maybe some is more and less clunky to you
02:36:20 -!- Tod-Autojoined has quit (Read error: Connection reset by peer).
02:36:29 <zzo38> I do not understand exactly what you mean
02:37:12 -!- DH____ has quit (Read error: Connection reset by peer).
02:40:01 -!- TodPunk has joined.
02:49:42 -!- pikhq has joined.
02:55:14 <zzo38> data X :: (* -> *) -> (* -> *) -> * -> * where { X :: y z -> X x y (x z); }; What would it be called instead of "X"?
03:01:48 <zzo38> Do you know what it would be called?
03:03:03 <zzo38> Do you know this one? data Y :: ((* -> *) -> (* -> *) -> * -> *) -> (* -> *) -> * -> * where { Y :: forall (w :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) y z. w x y (x z) -> Y w y z; };
03:04:13 <zzo38> pikhq: Ahola, klof.
03:23:13 -!- edwardk has joined.
03:24:55 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
03:25:47 -!- oerjan has quit (Quit: No clue!).
03:40:40 * Sgeo attempts to remember the details of the proof of the theorem that ais523 and I did
03:41:15 <Sgeo> I seem to be caught up wondering why the assumption that the version of the pattern with the dead live cell could not be part of the loop if the pattern without the cell was
03:46:41 <Sgeo> There's a mistake in my restatement of the proof
03:46:46 <Sgeo> http://tunes.org/~nef//logs/esoteric/11.07.23
03:47:26 <Sgeo> 00:51:41 <Sgeo> Now, for every pattern of a certain size or smaller, you can trivially make a precursor by putting a single live cell outside of causal contact with the pattern. Therefore, the pattern has a precursor, and therefore, there's a Garden of Eden that results in it.
03:48:17 <Sgeo> (Besides the sloppy wording, the extra cell doesn't result in having a precursor of the pattern added to, but a precursor of the pattern's next iteration)
04:02:43 -!- copumpkin has quit (Ping timeout: 250 seconds).
04:03:20 -!- copumpkin has joined.
04:09:05 <zzo38> Do you know what to call these "X" and "Y" types instead of the names "X" and "Y"?
04:09:30 <zzo38> data X :: (* -> *) -> (* -> *) -> * -> * where { X :: y z -> X x y (x z); }; data Y :: ((* -> *) -> (* -> *) -> * -> *) -> (* -> *) -> * -> * where { Y :: forall (w :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) y z. w x y (x z) -> Y w y z; };
04:11:36 <zzo38> I don't know the proper name either.
04:12:00 <edwardk> if you drop the z parameter from X maybe you can spot something
04:12:41 <edwardk> X x y = (y -> X x y) looks like a hyperfunction
04:13:06 <edwardk> so you probably have something like a higher order hyperfunction there
04:13:12 <zzo38> Well, that isn't what it is, though. Here it is a GADT.
04:13:23 <edwardk> but i'm fishing for intuition
04:13:28 <edwardk> because that type means nothing to me ;)
04:13:47 <edwardk> if you ignore the action on the third parameter you get a hyperfunction
04:14:00 <edwardk> so you have something hyperfunction-like, but i don't know how you would use it
04:14:22 <edwardk> its like a hyperfunction where you are building up a layer of x's for every step of the hyperfunction
04:14:53 <edwardk> kind of like a prepromorphism
04:15:09 <edwardk> but those aren't applied to non-uniformly recursive types like this
04:16:12 <edwardk> i would hazard that if you took the "initial algebra semantics are enough", there might be a way to make that prepromorphism connection more rigorous
04:17:49 <edwardk> you can probably annihilate X with a Jet or use it to consume one
04:18:27 <edwardk> https://github.com/ekmett/ad/blob/master/src/Numeric/AD/Internal/Jet.hs#L39
04:18:38 <edwardk> its a 'fully unzipped' cofree comonad
04:18:52 <edwardk> a :- f a :- f (f a) :- f (f (f a)) :- ...
04:19:13 <edwardk> your X wants to consume an a then an f a then an f (f a), etc.
04:20:09 <zzo38> It doesn't want to consume anything, as far as I can see.
04:20:42 <zzo38> It isn't a function.
04:21:46 <edwardk> i was reading it as y z -> X x y (y z) -> X x y z
04:24:20 <edwardk> so now i have no intuition for it whatsoever ;)
04:24:23 <zzo38> I was thinking of uses with Yoneda and Density and so on.
04:25:22 <zzo38> It is never a Functor, as far as I can tell.
04:36:14 <zzo38> Do you figure out about CodensityAsk, CodensityAskT, DensityAsk, DensityAskT?
04:37:08 <zzo38> (The way I have it, (CodensityAsk w) make MonadPlus if w is Comonad; hopefully it is correct although I am not completely sure)
04:37:53 <edwardk> i've been busy packing for the last 2 days
04:38:07 <zzo38> I know; you told me that.
04:38:57 <edwardk> finally got my new living room furniture. first time i reclined one of the loveseats, the whole thing burned out and shut down. now i have a loveseat i can't un-recline ;)
04:39:16 <edwardk> quintopia: well, so is the question ;)
04:39:17 <zzo38> Now you have to fix it, please.
04:39:35 <edwardk> now i'll let the people who shipped it to me fix it
04:40:58 <quintopia> ask a qestion again, expect a different answer
04:41:26 <edwardk> Insanity: doing the same thing over and over again and expecting different results. ;)
04:42:56 <zzo38> What is your CofreeT? Is it different to mine that is why you said mine was wrong? I can fix it if it is wrong
04:43:09 <zzo38> quintopia: Ask again later.
04:43:18 <zzo38> quintopia: Ask again later.
04:43:24 <zzo38> quintopia: Ask again later.
04:44:05 <quintopia> damn that was hilarious but it is too long to quote
04:44:06 <edwardk> it put the w on the outside
04:45:14 <zzo38> Did you have: data CofreeT f w x = CofreeT (w (x, f (CofreeT f w x)))
04:45:36 <edwardk> zzo38: more or less (the pair was a data type)
04:46:22 <edwardk> http://hackage.haskell.org/packages/archive/comonad-transformers/0.3/doc/html/Control-Comonad-Trans-Stream.html
04:46:47 <edwardk> i didn't check its laws and it was awkward as hell to reason about
04:47:21 <edwardk> the fact that freeT puts the m on the outside leads me to guess by analogy that the w may go on the inside like you had
04:47:25 <edwardk> so you may well have been correct
04:47:38 <edwardk> but this is the version i had
04:47:41 <zzo38> Yes, that is what I thought.
04:48:51 <edwardk> when i wrote that i was only just coming to terms with the way things had to distribute over one another to make a comonad transformer
04:49:02 <edwardk> (i had implemented many comonad-transformers incorrectly in category-extras)
04:49:53 <zzo38> My definitions of class methods are: duplicate (CofreeT x y) = CofreeT (x =>> flip CofreeT y) (duplicate <$> y); lower (CofreeT x _) = x;
04:51:03 <edwardk> duplicate looks simple enough to be right
04:51:39 <edwardk> i'll validate it when i get around to adding CofreeT and FreeT to the free package
04:53:46 <zzo38> extract is also obviously correct, I think.
04:54:56 <zzo38> (I didn't specify fmap or extract, because fmap is known directly from the type, and extract = extract . lower)
05:04:03 <zzo38> I did not post the CodensityAskT on here so now I will: newtype CodensityAskT w m x = CodensityAskT { runCodensityAskT :: forall z. w (m z) -> (x -> m z) -> m z };
05:07:42 <zzo38> You have said before that (Yoneda Endo) makes a Maybe monad, although you cannot get the instances for free. (CodensityAsk Identity) would be the same kind of things, isn't it? You will get Monad and MonadPlus instance for free.
05:45:03 -!- ogrom has joined.
06:11:17 <edwardk> you get the instance of Monad for Yoneda Endo for free
06:13:14 <edwardk> the easiest way to get a 'free' definition for Maybe is Free Default using the Free c a = forall r. c r => (a -> r) -> r free monad
06:13:18 <zzo38> You can get the instance of Plus for Yoneda Endo for free at least in my definitions.
06:13:38 <zzo38> edwardk: Yes that works too.
06:14:01 <edwardk> in practice though, just working with Codensity Maybe is faster than working with the Yoneda Endo-based Maybe
06:14:21 <edwardk> and that at least is a monad for free
06:14:32 <edwardk> and is isomorphic to Yoneda Endo
06:15:07 <zzo38> Unlike yours, you can also get the MonadPlus instance for free for (Codensity Endo), and it acts like a list monad.
06:16:42 <zzo38> class Plus f where { zero :: f x; plus :: f x -> f x -> f x; }; instance Plus Endo where { zero = mempty; plus = mappend; }; instance Plus f => MonadPlus (Codensity f) where { mzero = Codensity (const zero); mplus (Codensity x) (Codensity y) = Codensity (liftA2 plus x y); };
06:16:47 <edwardk> The difference is that CodensityAskT is sort of an ad hoc mess =P
06:17:06 <zzo38> edwardk: O, yes, OK. Perhaps it is sort of an ad hoc mess.
06:17:37 <zzo38> But I don't know if it is so messy as to be wrong.
06:17:37 <edwardk> yeah, i buy Codensity Endo
06:18:04 <edwardk> its not wrong, its just not fundamental in any real useful way i can detect
06:18:42 <zzo38> (There is also CodensityAsk which is the same except without the "m"; the reason it is separate is because w could be anything not necessarily even a endofunctor or contrafunctor)
06:19:01 <zzo38> (Although to make a MonadPlus, w does need to be a comonad and therefore a endofunctor.)
06:19:27 <zzo38> Are you sure it is not wrong? I thought you said before that you were unsure?
06:20:18 <edwardk> i meant that even granting it not being wrong, that it was an ad hoc mess =)
06:20:39 <zzo38> Yes I understand that.
06:23:02 <edwardk> i'm debating about weakening the requirement for MonadPlus (Codensity m) to just Plus m, i'm torn because the MonadPlus m => MonadPlus (Codensity m) is more useful to more people
06:24:40 <zzo38> edwardk: Well, I do have a overlappable instance Alternative f => Plus f so probably it is also Applicative and Alternative so it can be used.
06:24:51 <edwardk> that instance is a terrible idea
06:25:11 <edwardk> because it only works reliably if it is placed _in_ the module with any instance that overlaps it!
06:25:15 <zzo38> You need not do that, although even if you do, I think your Plus requires Functor anyways so it won't work
06:26:03 <zzo38> edwardk: No instances will actually overlap it though, since you will define Alternative rather than Plus if it can have that.
06:27:28 <edwardk> you'd have a 'compatible' instance, but the problem is that even so, if you make two instance Foo a and Foo Bar but you define Foo Bar in another module than the module you supplied Foo a, there exist circumstances where you may never get the Foo Bar instance to be taken.
06:27:49 <edwardk> SPJ has commented on this in the past when overlapping instances come up
06:28:31 <zzo38> I know overlapping instances is not the best solution but it is what Haskell has. The solutions in Ibtlfmm work better but we don't have that so instead we use what we do have.
06:29:09 <edwardk> no, its not that its what haskell has, its that if you use it, and will be adding more instances in any other module, your code is just broken
06:30:10 <edwardk> you can use overlapping instances if you define everything that overlaps with that instance in the same module as the 'too general' case, and it'll work correctly (in the absence of ConstraintKinds and other tomfoolery)
06:30:46 <zzo38> What happens if you define them in other modules?
06:30:49 <edwardk> but if you go to make a sweeping instance like the one you named, by construction people will want to make refinements later!
06:31:18 <edwardk> but its unpredictable because instances tend to infect a ghc --make session
06:31:58 <edwardk> in general the decision of what to do at an instance head has to be an entirely local decision
06:32:09 <zzo38> OK, but still, if you require the Plus and Alternative and MonadPlus to all use the same monoid, you should not get any problems, especially if you never actually define a Plus instance for something that has Alternative.
06:32:54 <zzo38> (I just put in overlapping instances to ensure it will compile. It seems it won't always compile if that is turned off.)
06:33:52 <edwardk> the statement that instance says is that 'the only instances of Plus are instances of Alternative', that is a much stronger statement than you want, and it can prevent the more specific rule for something that -is- only a Plus from being used in some difficult to write circumstances
06:33:54 <zzo38> I do understand the problems with overlapping instances but sometimes it is needed for some things.
06:34:11 <edwardk> i don't think you do, because you're still trying to use a flagrantly broken instance ;)
06:34:23 <zzo38> edwardk: Yes I saw those kind of things, but that isn't the only instance in that module.
06:37:36 <zzo38> If overlapping instances is not turned on, I get the error "Overlapping instances for Plus Endo" when doing something like (return 7 <|> (return 9 :: Codensity Endo Int)) even though there are no overlapping instances.
06:38:29 -!- azaq23 has quit (Remote host closed the connection).
06:39:24 <zzo38> Can you explain in what circumstances something that is only a Plus cannot be used?
06:40:33 <zzo38> You say that if you define the other instances in a different module they won't work. Have you tried this?
06:40:42 -!- variable has changed nick to const.
06:41:26 <zzo38> Well, I understand *some* problems with overlapping instances, not necessarily all.
06:42:56 <zzo38> One problem seems to be that you cannot mark individual instances in a module as normal, overlapping, or incoherent.
06:43:25 <zzo38> Not only would I like to be able to ark individual instances, I would also like TH splices to be able to do so.
06:45:02 <zzo38> I have thought of something else but might result in many other problems: Use a TH code that gets the list of instances of Alternative and of Plus and then make up individual instances of Plus for all Alternative if they don't already have instance of Plus too. But then it is possible different modules will have different instances even if the instances are the same.
06:47:38 -!- pikhq has quit (Read error: Operation timed out).
06:50:09 -!- pikhq has joined.
06:54:27 <edwardk> i don't have the link handy for how it blows up
06:54:43 <edwardk> the th hack you mentioned is actually a reasonably correct solution
06:55:02 <edwardk> but it needs to probably be run in the module that defines the type
06:55:27 <edwardk> which means if you don't control the type, any instances you make will be orphans and subject to this problem
06:56:14 <zzo38> Yes that is what I thought. It is possible different modules will have different instances even if the instances are the same, and maybe this can somehow cause problems?
06:58:49 <edwardk> it definitely causes problems
06:59:13 <edwardk> and will introduce even more overlap and incoherence if someone imports both of those modues
06:59:56 <edwardk> if you have Foo and Bar imports Foo, and defines an instance and Baz imports Foo and defines a similar instance, and Quux imports Bar and Baz, you're hosed. this is why orphan instances are bad
07:02:09 <zzo38> Yes I can understand.
07:02:47 <zzo38> I think the type class system how it is implemented in Haskell is just somewhat bad in general; it is why I proposed the Ibtlfmm system which should correct these and other problems.
07:05:49 <zzo38> In Ibtlfmm, it would be possible for types to have annotations. Two types that are the same type but with different annotations are still the same type. The purpose of the annotations is they can be accessed by macros. Since classes will just be type synonyms of some constraint with many parts (the methods, laws, superclasses, etc) then "instance" can also be a macro that takes this into consideration!
07:06:11 <zzo38> Therefore you can have default definition of class methods even though there needs not have this feature built-in to Ibtlfmm.
07:07:56 <zzo38> Do you think the type class system in Haskell is somewhat bad in general? Do you think this other way is better?
07:09:49 <edwardk> i think there are a number of fundamental issues that every such system needs to address, and that Haskell's system is the best of all the terrible systems I've seen tried.
07:10:24 <edwardk> I have no practical experience with your system, so I have no real stance on if its good/bad or just odd ;)
07:10:37 <zzo38> Yes that is probably true. Nevertheless I had my own ideas many of which have never been implemented as far as I know.
07:11:00 <edwardk> but my main concern is that if you don't have confluence of instance resolution, you'll wind up with the same sewer that scala has
07:11:09 <zzo38> You can't really have practical experience with my system since no implementation exists (not even the specification actually really exists completely).
07:11:18 <edwardk> and it isn't clear to me from your description whether that holds or not
07:11:31 <zzo38> What is confluence of instance resolution?
07:11:40 <zzo38> And what is the same sewer that scala has?
07:11:50 <edwardk> in haskell there is only one instance of 'Ord Int' for instance
07:12:04 <edwardk> in scala i can make up multiple implicit definitions for that
07:13:02 <edwardk> in haskell this means that, say, given two Set Int values that you know they were sorted the same way so you can use a hedge merge
07:13:27 <edwardk> but in scala, you get no such guarantee, so you must take the asymptotically slower solution of inserting every member of the smaller set into the larger
07:13:43 <zzo38> I have read and thought of the problems of having multiple instances of Ord Int such as making Set Int wrong; but what if you could have like this: Set :: Ord x => (* =x) -> * being the kind of the type Set (as Haskell's Set) therefore if the instance Ord Int is different, the type Set Int is also a different type.
07:14:57 <zzo38> You could be allowed to equate two different instances of the same thing in two different modules even in a third module; this is simply an assertion and if the computer doesn't attempt and succeed at disproving it then it is assumed to be equivalent.
07:15:21 <edwardk> yes, you can move constraints to the kind system
07:15:24 <zzo38> (And even if the computer does somehow disprove it, you would probably only get a warning.)
07:15:32 <edwardk> not sure i'm a fan of unchecked assertions like that ;)
07:16:20 <zzo38> Well, I mean that constraints are types and can be used on types but can also be used on kinds.
07:16:32 <edwardk> ok, i need to get some sleep, movers will be here in a few hours
07:16:39 <zzo38> OK, I can understand if you dislike these kind of unchecked assertions.
07:16:54 <zzo38> But, doesn't Haskell already have some such as GHC's RULES pragmas?
07:17:23 <edwardk> RULES pragmas are at least checked for type consistency
07:17:50 <edwardk> and they are accepted to be a sort of 'buyer beware' situation for extreme optimizations
07:18:06 <zzo38> (It is just that in the case of Ibtlfmm, they are somewhat stronger and the compiler is allowed to attempt to disprove them as long as it does not go into an infinite loop in doing so, and even if it does disprove it you should get a warning. There are other things that make them stronger too such as allowing implied stuff to be assumed too)
07:18:29 <edwardk> the situation you painted, would make you use this in many places where an ml programmer would be asserting the use of two modules with a type equality assertion
07:18:51 <zzo38> But with my idea of Set :: Ord x => (* =x) -> * then (Set Int) is not even a valid type if there is no instance Ord Int in scope.
07:19:35 -!- Taneb has joined.
07:20:14 <edwardk> FYI- jhc's internal representation of typeclasses in its 'E" language is somewhat similar to the subkinding representation of classes
07:20:27 <zzo38> What do you mean, asserting the use of two modules with a type equality assertion? How does that work?
07:20:31 <edwardk> you may get some insight into your problem domain
07:20:40 <edwardk> but i'm goign to sleep now =P
07:20:47 -!- edwardk has quit (Quit: Leaving...).
07:25:51 -!- const has quit (Ping timeout: 255 seconds).
07:26:27 <zzo38> How do *you* think Ibtlfmm's class system and Haskell's class system will be compared?
07:27:05 <zzo38> Taneb: I do mean you, too.
07:29:10 <zzo38> Read the logs as well as my file I wrote some things about it (I may write another one later too).
07:29:23 <Taneb> `pastelogs Ibtlfmm
07:29:39 <zzo38> > map succ "Haskell"
07:29:41 -!- Guest1087 has joined.
07:30:14 <zzo38> Oops! Is the pastelogs broken?
07:30:22 <zzo38> Just look at the recent logs for now.
07:31:48 <zzo38> Gregor: Do you know why the pastelogs is broken?
07:32:20 <zzo38> I cannot access the logs at all.
07:32:39 <zzo38> Let's try the other one.
07:33:30 <zzo38> This one works: http://tunes.org/~nef/logs/esoteric/12.07.08
07:34:22 <Taneb> Gregor, Codu.org seems to be down
07:52:30 <Taneb> zzo38, I don't really understand it. Can you give some examples of it in practise?
07:59:06 <ais523> huh, I wasn't actually expecting a response
07:59:10 <ais523> this must be more complicated than it looks
08:00:12 <Taneb> ais523, codu's down
08:00:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15514
08:00:23 <ais523> Taneb: I'm attempting to determine to what extent it's down
08:01:44 <zzo38> type Monad (m :: * -> *) :: & = (Functor m, MonadLaws m, method return :: x. x -> m x, method join :: x. m (m x) -> m x);
08:01:49 <ais523> seems to be just the webserver that's having issues
08:02:06 <ais523> although seeing both glogbot and glogbackup here is a little confusing
08:05:49 <zzo38> Can you connect to that file linked using hg?
08:09:41 -!- Taneb has quit (Ping timeout: 250 seconds).
08:12:53 -!- DHeadshot has joined.
08:13:19 -!- stlangbot has joined.
08:20:46 <zzo38> What program was used to make optimized compression PNG file (on esolang wiki) for smaller size?
08:22:52 <zzo38> File:Grid processor.png has been reduced from 374 KB to 514 bytes.
08:25:09 -!- aloril has quit (Read error: Operation timed out).
08:28:36 -!- aloril has joined.
08:33:21 -!- Vorpal has joined.
09:02:30 -!- stlangbot has quit (Ping timeout: 264 seconds).
09:23:18 -!- AnotherTest has joined.
09:36:54 <zzo38> In golf, if a player hits his ball into another ball so that the other ball moves out of the way and the first ball slows down and ends up in the space where the other ball is supposed to be, what happens?
09:38:51 -!- zzo38 has quit (Remote host closed the connection).
09:43:52 -!- MoALTz has joined.
09:52:12 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
09:52:50 -!- ais523 has quit.
09:55:39 -!- rodgort has joined.
10:15:55 -!- nortti-netbsd has joined.
10:18:09 -!- nortti-netbsd has left.
10:25:30 -!- nortti-netbsd has joined.
10:28:10 -!- nortti-netbsd has quit (Client Quit).
10:28:55 -!- nortti-netbsd has joined.
10:29:38 <nortti-netbsd> NetBSD misaki 5.1.2 NetBSD 5.1.2 (GENERIC) #0: Thu Feb 2 17:22:10 UTC 2012 builds@b6.netbsd.org:/home/builds/ab/netbsd-5-1-2-RELEASE/i386/201202021012Z-obj/home/builds/ab/netbsd-5-1-2-RELEASE/src/sys/arch/i386/compile/GENERIC i386
10:30:16 <nortti-netbsd> can someone explain how to use multiple channels in ircII?
10:31:17 <ion> ircII? Seriously? :-D
10:31:34 <nortti> it was faster to build than irssi
10:32:08 <nortti> after compiling lynx for 7 hours I didn't want to do that again
10:33:06 -!- ogrom has quit (Quit: Left).
10:33:14 <nortti> yes. I'm running netbsd on qemu on my machine
10:33:24 <nortti> it runs about the same speed as mid
10:33:52 <ion> How about using virtualization instead of emulation?
10:34:32 <nortti> are there any virtualization programs that don't use loads of memory
10:35:49 <ion> Dunno about memory, but i’ve used VirtualBox.
10:36:31 <ion> Also, e.g. 8 or 16 gigabytes of memory is quite cheap nowadays.
10:36:55 <nortti> actually big part of lynx compilation time was spent building gmake and libraries
10:37:53 <nortti> ion: my computer can be maxed out at 512MB. it just needs rams sticks that I can't find (pc100)
10:38:38 <nortti> also one of the two ram slots seem damaged so 256MB
10:42:22 <nortti-netbsd> kaytan netbsd:ta ja tassa n. 20v vanhassa irkkiclientissa joka oli nopein kaantaa ei oo tukea skandeille
10:43:42 <shachaf> Does NetBSD only support gibberishese. :-(
10:44:25 <nortti> it is finnish. ircII doesn't seem to handle queries
10:49:00 <ion> I was under the impression they actually added UTF-8 support to ircII some time ago.
10:49:06 <ion> Perhaps i remember incorrectly.
10:50:09 <nortti> it cuts of the most significant bit of byte
10:50:41 <nortti> now I'm compiling irssi
10:53:40 <nortti-netbsd> why don't they have binary packages that work on i586? I have to compile _everything_ from source
10:57:58 -!- zzo38 has joined.
10:59:53 <nortti-netbsd> I mean building software on irtual machine as fast as 486 is not fun
11:03:14 <nortti> can someone explain to me how uptime load average numbers work?
11:20:30 <zzo38> Now I made up this: catchCodensityAskT :: (Functor w, Monad m) => w (CodensityAskT w m x) -> CodensityAskT w m x -> CodensityAskT w m x;
11:22:00 <ion> nortti: uptime(1) explains it.
11:25:05 <nortti> well I don't have man installed...
11:25:25 <nortti> with a little bit of googling I found it
11:25:49 <zzo38> Why don't you have man installed?
11:26:29 <nortti> well I have man but is requires retawq
11:27:35 <shachaf> ion: Why is #haskell so horrible?
11:28:26 <ion> Because it’s not that bad.
11:28:32 <ion> Why do you go there?
11:35:31 <zzo38> I made up the catch for CodensityAsk; can it be made finally as well?
11:48:58 -!- Phantom_Hoover has joined.
11:55:26 <zzo38> (CodensityAsk Predicate) seems to be the exhaustively searchable set monad as in "infinite-search" package. The type can be proven the same by Yoneda and the monad seem to work same way too
11:59:36 -!- pikhq_ has joined.
11:59:47 -!- pikhq has quit (Ping timeout: 246 seconds).
12:12:01 -!- asiekierka_ has joined.
12:14:34 <nortti> why does autoconfig test for fortran 77 compatibility when building irssi?
12:40:42 -!- edwardk has joined.
13:01:20 -!- MoALTz_ has joined.
13:02:57 -!- MoALTz has quit (Ping timeout: 244 seconds).
13:26:17 <Vorpal> autoconfig do a lot of pointless checks in general
13:27:06 -!- DHeadshot has quit (Ping timeout: 264 seconds).
13:27:48 -!- edwardk has quit (Ping timeout: 252 seconds).
13:29:59 <nortti> oh. it wasn't irssi. it was libtool
13:30:17 <nortti> irssi seems to have it as dependency
14:43:25 -!- AnotherTest has quit (Quit: Leaving.).
14:43:42 -!- AnotherTest has joined.
14:54:10 -!- Guest1087 has quit (Changing host).
14:54:10 -!- Guest1087 has joined.
14:54:13 -!- Guest1087 has changed nick to function.
15:04:04 -!- AnotherTest has quit (Quit: Leaving.).
15:04:07 -!- AnotherTest1 has joined.
15:26:51 -!- DHeadshot has joined.
15:33:42 -!- DHeadshot has quit (Read error: Connection reset by peer).
15:42:33 -!- DHeadshot has joined.
15:45:06 -!- calamari has joined.
16:16:37 -!- asiekierka_ has quit (Ping timeout: 240 seconds).
16:32:43 -!- asiekierka_ has joined.
16:53:56 -!- azaq23 has joined.
16:54:05 -!- azaq23 has quit (Max SendQ exceeded).
16:54:35 -!- azaq23 has joined.
16:58:09 <zzo38> Do you have ideas to name data X :: (* -> *) -> (* -> *) -> * -> * where { X :: y z -> X x y (x z); }; data Y :: ((* -> *) -> (* -> *) -> * -> *) -> (* -> *) -> * -> * where { Y :: forall (w :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) y z. w x y (x z) -> Y w y z; };
16:58:55 <Lumpio-> ...did you expect an actual answer or did you just want to show off your unreadable piece of code?
16:59:06 <zzo38> I expect an actual answer.
16:59:31 <zzo38> If you think it is unreadable then maybe it is because you do not understand how to read a Haskell code very well.
17:00:07 <zzo38> These are two GADTs which may have a use in some circumstances.
17:00:11 <Lumpio-> Well for one I'm pretty sure that one-letter variables with no context to explain them are shunned in any language.
17:00:36 <zzo38> It is the uppercase names (X and Y) which I want to rename that is what I am asking.
17:06:05 <Sgeo> Should I assume no Europeans here play the lottery?
17:07:38 <Lumpio-> I prefer not to play games that are based purely on chance.
17:07:53 <Lumpio-> You might as well flip coins and try to guess the next result
17:08:17 <copumpkin> zzo38: what operations on that type would you define?
17:10:04 <zzo38> copumpkin: They are types that may be used somewhere that intends a type containing the other type, sort of
17:14:07 <augur> zzo38: I'd name the first one B
17:14:30 <zzo38> augur: Why should it be?
17:14:41 <augur> its the blurbird combinator, aka composition
17:14:55 <augur> or thats the way it looks, anyway. :)
17:15:17 <augur> its not literally bluebird, ofcourse, but the way the arguments look is reminiscent
17:15:18 <zzo38> It doesn't seem like that to me these are GADTs.
17:15:31 <augur> its just the look of the thing, zzo38, thats all
17:15:45 <augur> X :: y z -> X x y (x z)
17:16:02 <augur> bluebird is B : (y -> z) -> (x -> y) -> (x -> z)
17:16:42 <augur> even tho the thing as NOTHING to do with bluebird, it still has that look, so mnemonically..
17:17:19 <augur> X :: f x -> X f g (g x)
17:18:01 -!- function has quit (Read error: Operation timed out).
17:18:29 <zzo38> (\(CoYoneda x (X y)) -> x (maybe [] return y)) :: CoYoneda (X [] Maybe) t -> t is one example
17:18:31 <augur> it looks like some sort of widget related to natural transformations
17:19:36 <zzo38> Yes maybe it might be something like that
17:20:35 -!- Guest75632 has joined.
17:27:09 -!- Guest75632 has changed nick to trout.
17:27:14 -!- trout has quit (Changing host).
17:27:14 -!- trout has joined.
17:29:58 <zzo38> (CodensityAsk $ \(X q) k -> k 'a' ++ k 'b' ++ maybe [] return q) :: CodensityAsk (X [] Maybe) Char
17:34:18 <zzo38> These are some examples (although there may be more). Now would you understand a bit? And then be able to decide the names?
17:58:50 -!- copumpkin has quit (Ping timeout: 246 seconds).
17:59:30 -!- copumpkin has joined.
18:16:58 -!- john_metcalf has joined.
18:25:29 -!- soundnfury has quit (Remote host closed the connection).
18:27:29 -!- soundnfury has joined.
18:55:22 -!- oerjan has joined.
18:57:31 -!- Gregor has quit (Quit: Coyote finally caught me).
18:59:13 -!- esowiki has joined.
18:59:14 -!- glogbot has joined.
18:59:14 -!- glogbackup has left.
18:59:14 -!- EgoBot has joined.
18:59:17 -!- esowiki has joined.
18:59:17 -!- esowiki has joined.
19:00:06 -!- glogbackup has joined.
19:00:25 <nortti> kallisti: spirity.org requires authorization
19:00:47 -!- Gregor has joined.
19:02:35 <kallisti> nortti: wait are you getting an auth challenge?
19:02:41 <kallisti> because I'm just getting a 403
19:02:58 <nortti> I am getting auth dialog
19:03:21 <kallisti> nortti: I'm trying to set up subdomains properly.
19:03:23 <nortti> when I press esc I get 401
19:03:46 <kallisti> right now my DNS has an A record where * points to my IP.
19:03:51 <kallisti> so all subdomains go to the same IP.
19:05:09 <kallisti> well, I'm not sure how I can have multiple virtual hosts on the same IP.
19:05:12 <kallisti> does it use reverse DNS or something?
19:06:37 <kallisti> I was thinking at the DNS/IP level.
19:06:59 <nortti> well if you don't try to
19:07:23 <kallisti> what does the realm same for the auth?
19:07:26 <nortti> +serve different ftp pages from subdomains it seems to be ok
19:08:57 <kallisti> right, for other protocols I would need seperate IPs, right?
19:09:35 <kallisti> what I'm confused about is why spirity.org is asking for auth
19:09:43 <kallisti> when it should just be a 404 or something like that.
19:10:26 <kallisti> the auth should only be a for a subdomain.
19:10:43 <kallisti> the main site shouldn't exist at all ATM.
19:11:06 -!- ernesto1 has joined.
19:11:41 -!- ernesto1 has left.
19:11:45 <Vorpal> kallisti, https requires separate IPs per host in general. You may be able to get away with subdomains, if you have a wildcard SSL cert (*.foo.net for example, though plain foo.net wouldn't work then)
19:12:03 <Vorpal> basically the server needs to select the SSL cert to use before it gets the Host header
19:12:33 <kallisti> yeah my current cert isn't a wildcard (I didn't even know that was a thing)
19:12:48 <Vorpal> it is a thing, but there is no way afaik to say "foo.net or *.foo.net"
19:12:53 <Vorpal> which is kind of stupid
19:13:27 <Vorpal> anyway, I have no idea how you make them, I just know they exist (and I have run into that annoying foo.net fail thingy a few times)
19:13:31 <kallisti> I could do email-based verification.
19:14:53 <kallisti> strange that nginx allows you to configure ssl certs per virtual host.
19:15:07 <kallisti> if it needs the Host header to determine which virtual host to use, and it needs the cert to get the Host header.
19:15:20 <Vorpal> hm, maybe that happens because the generic way the config is parsed or something?
19:15:39 <Vorpal> kallisti, or does the same block or whatever allow you to define ip-based virtual hosts?
19:15:58 -!- nortti-netbsd has quit (Quit: se you if I get irssi building not to hang).
19:15:59 <Vorpal> there you have it then
19:16:10 <Vorpal> the ssl cert option only makes sense for IP based virtual hosts
19:17:39 <kallisti> Vorpal: I got my cert through a free CA, and they seem to have email-based verification instead of domain name verification
19:17:47 <kallisti> perhaps that doesn't apply to HTTPs though.
19:17:58 <Vorpal> huh, that is kind of weird
19:18:02 <Deewiant> Vorpal: nginx doesn't yet support SPDY (but there's a beta batch for it, so it's probably coming "soon")
19:19:13 <kallisti> it's another attempt by Google to redefine web standards.
19:19:40 <Vorpal> kallisti, well, at least they try to make their redefinitions open, unlike some other vendors
19:19:53 <nortti> oh. is it the one they try to replace https with?
19:19:56 <Vorpal> anyway, didn't it improve the bandwidth usage and response time quite a bit?
19:20:00 -!- AnotherTest1 has quit (Quit: Leaving.).
19:20:22 <Vorpal> Deewiant, hm "In June 2012 NGINX, Inc. announced support for SPDY in the open source web server Nginx.[32]"
19:20:30 <Vorpal> I guess that might refer to the beta patch
19:20:40 <Deewiant> http://mailman.nginx.org/pipermail/nginx-devel/2012-June/002343.html
19:21:55 <kallisti> I like the statelessness of HTTP, it makes implementation of simple clients... simple.
19:23:36 <Vorpal> hm looks like spdy allows encryption and name based virtual hosts
19:24:44 <zzo38> Just use SSH if you want secure connections, instead of using HTTPS and HTML and all of that stuff. SSH allows you to use key based authentication and operates by command-line.
19:24:47 <kallisti> out of the box nginx actually doesn't support digest auth
19:24:58 <kallisti> which is why I'm using basic auth, because I don't feel like recompiling it with the digest auth module.
19:25:31 <Vorpal> zzo38, ... ssh and https have completely different uses in many cases.
19:25:39 <Vorpal> neither can replace the other
19:25:59 <Vorpal> kallisti, really? no digest?
19:26:05 <Vorpal> well I guess basic works fine over https
19:27:32 <kallisti> basic auth never expires right?
19:27:46 <Vorpal> I guess that might be an issue
19:27:46 <Deewiant> Both basic and digest are broken without https anyway, and if you have https basic is fine
19:27:47 <kallisti> might be why nortti is getting an auth challenge and I'm getting a 403
19:28:01 <zzo38> Yes that is true they do have different use but there are many things that SSH just does better but they use HTTPS (or even insecure HTTP) anyways
19:28:02 <Vorpal> kallisti, restart browser?
19:28:02 <kallisti> even though I authenticated like... yesterday.
19:28:33 <Vorpal> kallisti, my browser is set to restore the tabs when it opens
19:28:38 <Vorpal> so for me that is a non-issue
19:29:10 <Vorpal> well, I need to sleep, cya
19:29:58 <kallisti> now I'm getting the auth challenge.
19:30:08 <kallisti> apparently basic auth lasts indefinitely..
19:30:57 <kallisti> so yeah I have no clue what's happening. so far nginx has been a pain to configure correctly.
19:31:46 <zzo38> You could even run other protocols over SSH if you need to, but often just SSH itself should do
19:32:19 <kallisti> text editing on a laggy ssh session is painful. :(
19:32:50 <zzo38> Yes it can be if it is not a local network; but you could just edit the file locally and then use remote copy.
19:33:14 <kallisti> I plan to use git to do automatic transfers
19:33:33 -!- Vorpal has quit (Ping timeout: 244 seconds).
19:34:12 <kallisti> so any push to the remote repo will automatically reset --hard a repo in the server root.
19:36:05 <kallisti> for now I won't use subdomains.
19:36:39 <kallisti> the only real benefit is that cookies don't transfer across subdomains. otherwise it's largely cosmetic.
19:41:20 -!- Ngevd has joined.
19:47:05 -!- Ngevd has quit (Read error: Connection reset by peer).
19:49:43 -!- pikhq_ has quit (Ping timeout: 245 seconds).
19:49:46 -!- pikhq has joined.
19:55:35 <zzo38> To purchase stuff by internet, implement this protocol (keep the existing ones too but deprecate them): You connect to the online store, figure out how much money it is worth, connect using SSH to your account with money, issue a split command with the amount you need to pay to create a new account, send key of new account, merchant transfer to their own account, and then approve payment.
19:55:46 -!- asiekierka_ has changed nick to asiekierka.
19:57:05 <zzo38> But first you have to go to some store and pay them in cash for the SSH account, and the merchant when receiving money, go to some store or bank to receive the cash.
19:59:20 <zzo38> HTTPS is a stupid way to do internet money transfer.
20:02:02 <quintopia> i didnt see you describe it. repeat?
20:04:20 <zzo38> For one thing you need to fill in all forms, you need HTML, JavaScript, popup ads, and various special accounts (you cannot simply go to the bank and do it), there are some security issues (scams, frauds, homograph attacks, etc), and HTTP is for hypertext transfer protocol, for documents not for other things
20:04:33 <zzo38> Anyways, SSH use key based authentication.
20:06:49 <zzo38> SSH is just a more secure protocol.
20:06:54 <quintopia> yeah i think you're just doing it wrong
20:07:41 <quintopia> https is cryptographically secure as long as you trust the certificate authority (and don't accept invalid certificates)
20:08:05 <quintopia> js, popup ads, etc. can be disabled easily without disabling https
20:08:24 <quintopia> and i don't know what special accounts you are talking about, but i suspect they are accounts that most people already have.
20:09:27 <zzo38> Cryptographically, yes. But that is not the only issue. Anyways you need the same, if they accept PayPal then you need PayPal, if they accept MasterCard then you should need MasterCard instead; with my scheme you need just your service provider and the various banks have agreement with each other (by law), then you can pay them if there is such chain.
20:09:47 <zzo38> You need no bank account, you need no credit card, no gift card, just pay.
20:10:04 <zzo38> Whoever you are paying, does not need any of these things either.
20:10:18 <zzo38> Keep the current system but compatibility purpose but deprecate it.
20:11:02 <quintopia> but what you are describing is basically covered by bitcoin
20:11:06 <zzo38> Perhaps that is true but I think it is irrelevant.
20:11:15 <zzo38> And no I do not quite mean like bitcoin.
20:12:03 <quintopia> the system you described requires about the same amount of work to do a transaction as bitcoin
20:12:17 <quintopia> paypal is a hell of a lot easier to use
20:14:59 <zzo38> No it does not require a lot of work if you have paid the bank ahead of time a large sum of money which you use to pay various merchants by internet. No forms to fill, no web pages to view, no virtual shopping cart, just ssh key file amount of money go.
20:15:44 <zzo38> Keep PayPal if some people prefer it but when you accept that method mark it as deprecated and specify SSH as preferred method.
20:16:00 <coppro> most paypal users do not know what deprecated means
20:16:27 <zzo38> Then write "warning" instead of "deprecated".
20:16:54 <zzo38> Or specify in other words.
20:17:47 -!- ais523 has joined.
20:30:23 -!- asiekierka has quit (Remote host closed the connection).
20:33:16 <quintopia> most paypal users do not know what SSH key file means
20:34:36 <zzo38> Yes, like I said, they can use PayPal if they want, even though its use should be discouraged.
20:34:53 -!- pikhq_ has joined.
20:35:10 <quintopia> yeah that's a good way to make a new system catch on
20:35:30 -!- pikhq has quit (Ping timeout: 264 seconds).
20:35:31 <quintopia> "hey you can keep doing it the old way if you like, but we'd rather you did this much more difficult thing!"
20:39:56 -!- pikhq has joined.
20:40:18 -!- pikhq_ has quit (Ping timeout: 264 seconds).
20:40:33 -!- DHeadshot has quit (Ping timeout: 245 seconds).
20:54:37 -!- john_metcalf has left.
21:13:49 <nortti> interesting. there is a port of mksh to android
21:16:02 -!- MoALTz_ has quit (Quit: bbl).
21:41:48 -!- copumpkin has quit (Ping timeout: 245 seconds).
21:42:19 -!- copumpkin has joined.
21:45:21 -!- TeruFSX has quit (Read error: Connection reset by peer).
21:47:09 -!- TeruFSX has joined.
21:51:49 -!- nortti_ has joined.
22:03:03 -!- oonbotti has quit (Remote host closed the connection).
22:03:47 -!- oonbotti has joined.
22:04:01 <fizzie> More like "enoobotti".
22:04:09 <nortti_> oerjan: what does that mean?
22:04:39 <oerjan> i dunno, i don't speak finnish
22:04:43 -!- nortti has quit (Ping timeout: 245 seconds).
22:07:01 -!- nortti_ has changed nick to nortti.
22:38:20 <kallisti> would it be a bad idea to chmod o-rx /etc ?
22:38:44 <nortti> kallisti: what is in there in your system?
22:38:44 <kallisti> I imagine some user program might need to read a config file from there.
22:39:11 <nortti> at least /etc/passwd is read by some programs
22:39:13 <kallisti> nortti: the kitchen sink. Debian loves /etc
22:39:47 <kallisti> I recall using a Gentoo box where /etc was o-r
22:40:12 <kallisti> nothing bad happened that I recall. but I didn't try much.
22:41:05 <kallisti> yeah so I'll just leave /etc open...
22:43:33 <kallisti> but yeah in Debian there's almost guaranteed to be a non-root app that needs to reads its default config from /etc
22:45:45 <kallisti> but chmod o-r /home; chmod o-rx /home/*
22:46:25 <kallisti> not that I'm managing a shared host or anything, but... yak shaving is my speciality.
22:47:04 <oerjan> kallisti: you probably know this, but o-r means programs can look up files in /etc, but only if they can guess the name
22:47:37 <oerjan> which is probably all a reasonable program does
22:47:58 <kallisti> oh, it seems to work differently for x then.
22:48:08 <kallisti> can't cd into a directory if a parent isn't +x
22:52:57 <quintopia> someone save me a lot of time and energy by giving me an rsync command that exactly duplicates a source directory and is easy to recover when the transfer inevitably breaks halfway through
22:54:18 <kallisti> but it depends on what you mean by "exactly"
22:54:33 <kallisti> what do you want to do with hard links, for example.
22:55:20 -!- nortti_ has joined.
22:56:43 <kallisti> quintopia: --delete is sometimes handy
22:57:31 <kallisti> "archive mode", it's a shorthand for a bunch of other options.
22:57:52 <kallisti> recursive, preserve symlink as symlinks, preserve permissions, preserve modification times
22:58:37 <kallisti> you might also want -H (preserve hard links) and -A (preserve access control lists) but I didn't see a need.
22:59:09 <kallisti> and --delete is nice if you want the destination to look exactly like the source when you're done
22:59:37 <quintopia> but there shouldn't be any orphaned files to delete if the target is empty right?
22:59:45 <kallisti> also --delete-excluded, if you changed your exclude options and want the copy to delete them too.
23:00:27 * kallisti has an exclude file in his home that excludes a bunch of directories he doesn't really need backups of.
23:02:02 <kallisti> .mozilla/firefox/*/Cache/* is another good one.
23:02:13 <kallisti> anything with "cache" in the name. :P
23:02:29 <kallisti> also .cpan, .ghc, and everything in .cabal except for the config.
23:02:55 <kallisti> there's probably countless other stuff to exclude... I just haven't.
23:03:21 <quintopia> i'm just copying one very large subdir, so i pretty much want everything in it to go
23:04:15 <quintopia> eh i dunno, many gigs. enough that i used -z.
23:06:57 <kallisti> it would be nice if rsync had an option that let you insert a script to execute instead of --delete
23:07:02 <kallisti> granted that's a huge security problem.
23:07:24 <oerjan> http://r6.ca/blog/20120708T122219Z.html :D
23:07:29 <kallisti> but basically it would be nice if you could rename target files that were deleted in the source dir to have a ~ postfix
23:09:30 <kallisti> some people would interpret this as a benefit of using Haskell, but I interpret it as a flaw in thinking that goes something like: "oh Haskell has a great type system, therefore my code is correct!"
23:09:53 <kallisti> which results in less testing.
23:15:39 <zzo38> I do test the Haskell programs.
23:20:02 <Lumpio-> But do you prove their correctness?
23:25:23 <zzo38> That would need to be done by mathematics.
23:27:48 * oerjan also chuckles at the last paragraph of http://www.reddit.com/r/haskell/comments/w7zd8/i_never_tested_this_code_before_releasing_it/c5b5n26?context=1
23:33:30 <zzo38> Knuth once wrote: Warning: I have only proven this program correct, not tested it.
23:37:42 -!- ais523 has quit.
23:37:43 -!- nortti_ has quit (Read error: Connection reset by peer).
23:38:41 <zzo38> You (or someone) said my type data X :: (* -> *) -> (* -> *) -> * -> * where { X :: y z -> X x y (x z); }; is related to widget for natural transformation; is it? That still doesn't tell me exactly to rename
23:41:27 <oerjan> i definitely didn't say that, since i don't know what that is
23:43:56 <zzo38> I did not mean you personally.
23:44:02 <zzo38> I means someone in this channel.
23:44:44 <oerjan> well edwardk is my prime suspect and is not currently present
23:47:32 -!- pikhq has quit (Read error: Operation timed out).
23:48:22 <zzo38> Do you know what is it called if a tensor category satisfying: f . g = f *** g (for all f and g as long as the types match)
23:49:27 -!- pikhq has joined.
23:57:27 <zzo38> edwardk didn't know about that X either. But what would you think this datatype (GADT) seems to be?
23:57:40 <zzo38> I can understand some uses of it, but I don't know what to call it.