ec changed the topic of #elliottcable to: #
<joelteon> well that's closer to working than ghc head
<whitequark> lol
<purr> lol
alexgordon has quit [Quit: Computer has gone to sleep.]
malia has joined #elliottcable
malia has quit [Quit: malia]
malia has joined #elliottcable
malia has quit [Client Quit]
malia has joined #elliottcable
malia has quit [Quit: malia]
malia has joined #elliottcable
malia has quit [Quit: malia]
malia has joined #elliottcable
malia has quit [Client Quit]
malia has joined #elliottcable
malia has quit [Client Quit]
<joelteon> whitequark: so foundry is like statically typed ruby, right?
<whitequark> kinda
<joelteon> does it have send?
<joelteon> it does have method_missing, doesn't it?
<whitequark> it does have both
<whitequark> both must be statically resolvable
<whitequark> so if you do x.send(y), y must be a compile-time constant
<whitequark> the compiler will try rather hard to figure out its value
<devyn> whitequark: wait, does that mean something like DRb isn't possible? i.e. #method_missing on client, over network, #send to object on server
malia has joined #elliottcable
<joelteon> ok that's what i was gonna ask
<joelteon> x.send(gets)
<joelteon> no es posible
<joelteon> not unless the compiler can enforce that it gets a certain input on stdin :D
<devyn> I believe you could probably write something to run at meta time that would expand the method list of an object into a big case statement?
<devyn> since that can't be dynamic anyway it should work, right?
<joelteon> makes sense
eligrey has quit [Quit: Leaving]
malia has quit [Quit: malia]
<joelteon> ok so i'm trying to figure out how to make a web server both private and ddos-resistant
<joelteon> private is the question
<joelteon> i'm not sure if it's possible to make a domain not resolve depending on the requester
<joelteon> is it?
<joelteon> if it is, that's easy
<joelteon> if not, i'd have to use random subdomains or something
<joelteon> with A records
<joelteon> but yeah, if i wanted to make domains not resolve i'd have to run my own dns server
<joelteon> that sounds painful
<joelteon> ok so you can't list subdomains unless it supports AXFR
<joelteon> phew
<devyn> yes, you can't list subdomains, but don't rely on the obscurity of a subdomain for security
<devyn> joelteon: really, you should use a wildcard, vhosts, and make absolutely sure that robots.txt denies everything
alexgordon has joined #elliottcable
alexgordon has quit [Ping timeout: 260 seconds]
alexgordon has joined #elliottcable
sharkbot has quit [Remote host closed the connection]
sharkbot has joined #elliottcable
Sgeo_ has joined #elliottcable
othiym23` has joined #elliottcable
othiym23 has quit [Ping timeout: 240 seconds]
Navarr has quit [Read error: Operation timed out]
Sgeo has quit [Ping timeout: 240 seconds]
Navarr has joined #elliottcable
jesusabdullah has quit [Read error: Connection reset by peer]
jesusabdullah has joined #elliottcable
<whitequark> devyn: yes exactly
<whitequark> basically it's a schema
yorick has joined #elliottcable
<joelteon> ok
<joelteon> well i'm not relying on its obscurity so much
<joelteon> but i don't want people to know what IP address the host represents if they're not in my whitelist
<whitequark> make a proxy
<joelteon> ok
<joelteon> sounds good so far
jjerengesa has joined #elliottcable
jjerengesa has quit [Read error: Operation timed out]
jjerengesa has joined #elliottcable
eligrey has joined #elliottcable
Sgeo_ is now known as UristMcSgeo
jjerengesa has quit [Ping timeout: 245 seconds]
malia has joined #elliottcable
malia has quit [Client Quit]
<joelteon> that's it?
<joelteon> 17 lines?
<whitequark> well, it's after optimization
<whitequark> as you can see llvm just constant-folded that shit completely
<joelteon> neat
<whitequark> yup
* whitequark is refactoring the goddamn compiler again
<whitequark> it's like, since its inception I've wrote 60k lines
<whitequark> then erased the fuck out of 50k of them
yorick has quit [Remote host closed the connection]
<joelteon> is it Sufficiently Clever yet?
<devyn> whitequark: haha. can it gets.to_i (or rather, to_u32) yet? I wanna see what it generates when it can't constant fold
<whitequark> devyn: there's no gets or string
<whitequark> but it's about the same as atoi(gets())
<whitequark> would be.
<whitequark> also yes, I'm sort of pissed off at LLVM
<whitequark> so far it folded down *every*single*program* I wrote into a set of constants
<whitequark> YOU ARE A COMPILER Y U NOT EMIT CODE
<whitequark> oh, no, actually mandel.fy is a whole one function
<devyn> that's a good thing if there's no user input, isn't it? if it decides a constant is smaller and will require less work, then it should just do that
<whitequark> sure, I was joking
<devyn> :p
<devyn> whitequark: maybe do something that generates a large data structure so that it won't constant fold it
<whitequark> devyn: well, it doesn't fold mandelbrot
<whitequark> and I can tweak the optimization params anyway
<whitequark> so it doesn't matter very much
<devyn> mmm yes but I want to see some actual IR :(
<devyn> gist me some good stuff
<whitequark> oh god
<devyn> holy shit haha
<whitequark> it actually should be smaller
<whitequark> it's a regression.
<whitequark> if you look at it, there's like dozens of duplicated functions
<whitequark> it's correct though.
<whitequark> F5 it, I added the source
<whitequark> LLVM will actually optimize it to the C level, even though the input is horrible
<whitequark> LLVM rocks
<joelteon> holy jesus
<joelteon> what's going on
<devyn> whitequark: I ran it and it works :p
<whitequark> devyn: of course
<devyn> whitequark: ran it through opt -O3 and the IR went from 2774 lines to 1306 lines
<whitequark> try opt -std-link-opts
<whitequark> and perhaps -mergefunc
<devyn> whitequark: woo, that got it down to 166 lines
<devyn> and the IR is pretty crazy looking
<whitequark> exactly
<joelteon> I need to find a use for the mouse operator <>~
<devyn> in what? lol
<purr> lol
<joelteon> in anything
<joelteon> maybe some kind of
<joelteon> regular expression library
<joelteon> but it combines <> and ~, so
<joelteon> ..."append match"
<whitequark> wat
<joelteon> <> is mappend
<joelteon> and ~ is ruby and perl for regex
<whitequark> it's not
<whitequark> =~ is
<joelteon> it totally is
<joelteon> =~
<joelteon> yeah, but = is everything
<joelteon> ~ is specifically regex
<whitequark> ~foo is unary negation
<whitequark> er, bitwise
<joelteon> but it's ALSO regex
<whitequark> oh god.
<joelteon> and bitwise ops in haskell look totally different
* whitequark wrote down a type for Assoc.fold2
* whitequark feels dirty.
<whitequark> val fold2 : f:(string -> 'c -> 'a -> 'a -> 'c) -> 'c -> ('a, 'b) t -> ('a, 'b) t -> 'c
<whitequark> I *hate* fold.
<whitequark> I can never write down its signature or arguments the first time correctly.
<joelteon> yeh, fold is very unintuitive for me
<joelteon> even though it really shouldn't be
<devyn> foldl :: (a -> b -> a) -> a -> [b] -> a, foldr :: (a -> b -> b) -> b -> [a] -> b
<devyn> it's not that hard
<devyn> :p
<devyn> (watch, I probably got foldr wrong)
<devyn> nope
<devyn> lol
<purr> lol
<devyn> ^_^
<joelteon> you know what's a clusterfuck
<joelteon> the new Data.Typeable
<devyn> it changed?
<joelteon> Typeable{1..7} don't exist anymore
<joelteon> Typeable is poly-kinded
<devyn> how does that work? o.o
<joelteon> well, that's a GREAT question
<joelteon> I have no idea
<joelteon> cabal sandbox is neat though
<joelteon> i have only positive things to say about it
<devyn> xmonad multimonitor is excellent for development guys
<devyn> especially if you actually take the time to configure it
<joelteon> i'm sure it is jerry
<devyn> also, unclutter, which hides the mouse pointer when you're not using it
<whitequark> I never understood multimonitor
<whitequark> maybe it's good for web developers
<whitequark> I'm completely OK with desktops, if I can switch two most recent with a keybinding.
<devyn> I like having IRC + music player most of the time on my secondary monitor, but sometimes it's useful for web stuff, yes
<devyn> really the secondary monitor, for me, is a monitor in the literal sense
<devyn> it's for monitoring things
<devyn> good for documentation, actually, too
<devyn> that's another use
<vil> ^
<vil> my main screen is what I'm doing, secondary is status stuff and twitter
<devyn> yeah
<devyn> anyway I really like the way xmonad does it, because it treats workspaces as single screens which you can just flip between screens as much as you want
<devyn> if I have a workspace on my primary that I want to display on secondary instead, I just open that workspace on secondary
malia has joined #elliottcable
<devyn> wat
<devyn> reminds me of korean pop videos
<devyn> lol
<purr> lol
<joelteon> k-pop isn't that bad
<devyn> it isn't but man, they make some crazy videos
<devyn> this is bad, but hilarious
<devyn> sorta the point
<devyn> :p
<devyn> well. that was bizarre
<whitequark> if you just look at the title
<whitequark> it describes me wrt/ the compiler
<whitequark> however if you take content into account it becomes very strange
<devyn> haha
<devyn> someone seriously commented "she is so fucking hot"
<devyn> …
<whitequark> isn't she?
<devyn> not really my type lol
<purr> lol
* whitequark BABY'S ON FIRE
* devyn cheers whitequark on
<whitequark> :D
<whitequark> perhaps