ELLIOTTCABLE changed the topic of #elliottcable to: #ELLIOTTCABLE — “do something cool, shove it into throats, everyone thinks it's crap, then it's all amazing.” “everything else is just details.”
Sgeo has joined #elliottcable
<whitequark>
heyyyy ELLIOTTCABLE
<whitequark>
r u here?
yorick has quit [Read error: Connection reset by peer]
joelteon has quit [Quit: I'm out]
joelteon has joined #elliottcable
alexgordon has quit [Quit: Computer has gone to sleep.]
<cuttle>
this channel is so depressing
<joelteon>
why
eligrey has quit [Quit: Leaving]
sharkbot has quit [Remote host closed the connection]
sharkbot has joined #elliottcable
cuttlebone has joined #elliottcable
dskuza has quit [Quit: Connection closed for inactivity]
<cuttle>
joelteon: nobody says shit :p
KillerX has quit [Quit: Connection closed for inactivity]
rckts has quit [Quit: Connection closed for inactivity]
fwg has joined #elliottcable
yorick has joined #elliottcable
gozala has quit [Ping timeout: 252 seconds]
gozala has joined #elliottcable
Sorella_ has joined #elliottcable
Sorella_ has quit [Read error: Connection reset by peer]
Sgeo has quit [Read error: Connection reset by peer]
<cuttle>
i really want to see a different foundation than set theory
<cuttle>
because set theory is ugly
<prophile>
learn category theory
<prophile>
all the rest is just special cases
<cuttle>
prophile: :p
<cuttle>
well i mean the less structure you have the more deep truth and generality you have
<cuttle>
:p
<cuttle>
alexgordon: HoTT is apparently about modeling types as spaces rather than sets
<prophile>
"the universe is all... stuff"
<cuttle>
alexgordon: not starting from sets
<prophile>
WHOOOOAH
<cuttle>
prophile: hahahahah
<prophile>
"and it does... stuff"
<cuttle>
alexgordon: i want to make AI based on this
<prophile>
*THUNDEROUS APPLAUSE*
<cuttle>
ha
<cuttle>
i like spaces better than sets
<cuttle>
so this seems like something my brain will like
<prophile>
I like space
<cuttle>
haha
<cuttle>
WHAT IS A SHEAF
<alexgordon>
cuttle: "The penis sheath of a male axis deer is elongated and urine-stained. When rubbing trees with their horns, chital stags sometimes move the penis back and forth rapidly inside its sheath.[8] Male bison and fallow deer have tufts of fur at the end of their penis sheaths."
<cuttle>
alexgordon: omg
<alexgordon>
I ANSWERED YOUR QUESTION FOR YOU
<whitequark>
alexgordon: wat.
<purr>
beep.
<alexgordon>
TOO LATE WHITEQUARK
<whitequark>
fuck.
<cuttle>
alexgordon: "The penis sheath of a male axis deer is elongated and urine-stained. When rubbing trees with their horns, chital stags sometimes move the penis back and forth rapidly inside its sheath.[8] Male bison and fallow deer have tufts of fur at the end of their penis sheaths."
<cuttle>
whoops
<whitequark>
alexgordon: "The penis sheath of a male axis deer is elongated and urine-stained. When rubbing trees with their horns, chital stags sometimes move the penis back and forth rapidly inside its sheath.[8] Male bison and fallow deer have tufts of fur at the end of their penis sheaths." wat.
<purr>
beep.
<cuttle>
beat me to it
<cuttle>
:p
<alexgordon>
I don't understand the significance of "urine stained"
<cuttle>
prophile: Indeed, higher-dimensional category theory (particularly the
<cuttle>
theory of weak ¥-groupoids) is now known to be intimately connected to homotopy theory, as
<cuttle>
proposed by Grothendieck and now being studied intensely by mathematicians of both sorts.
<cuttle>
The original semantic models of Awodey–Warren and Voevodsky use well-known notions and
<cuttle>
techniques from homotopy theory which are now also in use in higher category theory, such as
<cuttle>
Quillen model categories and Kan simplicial sets
<cuttle>
oh thanks PDF
<cuttle>
PDFs are great at *looking* how you want
<alexgordon>
fuck this is getting technical
<yorick>
I know people who would understand that
<cuttle>
but they are a small step above images in terms of HTML5-style semanticity
<cuttle>
alexgordon: i want to talk about an idea iwth you
<cuttle>
for PL syntax
<yorickpeterse>
homotopy what?
<cuttle>
what i was trying to say by saying "shape-oriented"
<yorick>
yorickpeterse: homotopy from topology
<cuttle>
alexgordon: a way to describe many-one/one-many/etc. relationships in a points-free way
<cuttle>
alexgordon: and that replaces recursion and looping
<yorick>
cuttle: ooh the book describes an alternative to ZF, at last.
<cuttle>
yorick: yeah :D
<yorick>
there'll be some pesky godel guy proving some kind of independence for ugly choice axioms coming along within 20 years or so
<cuttle>
hahaha
<cuttle>
godel, destroying mathematical dreams since 1906
<yorick>
him and cohen.
<cuttle>
what did cohen do?
<cuttle>
oh continuum?
<cuttle>
cool
<cuttle>
i really like the way HoTT seems to be more about like shapes and shit
<cuttle>
than Truth™
<cuttle>
takes the morality out of it
<cuttle>
makes it just fun
<yorick>
cuttle: godel proved you can't disprove CH, cohen proved you can't prove it either
<yorick>
so ehm, cuttle, I like you, you seem ahead of me, tell me what you know.
<yorick>
tell me your secrets, tell me what to study
<cuttle>
heh
<cuttle>
you seem ahead of me too
<cuttle>
we are putting our best feet forward :p
<yorick>
I just read like 3 chapters from Quantum Computing Since Democritus :P
<cuttle>
my mathematical education consists of:
<cuttle>
going up to calc II in high school
<cuttle>
doing calc III right now in college
<cuttle>
and reading a whole ton of blogs and wikipedia about haskell and category theory
<cuttle>
and talking to my dad about the linear algebra type of stuff he's done in his work on computer graphics in video games
<yorick>
I did calc II and linear algebra II
<cuttle>
:P
<yorick>
working on haskell, I did one of those "make your own scheme interpreter" tutorials, but they're like "okay, now use IORef" and I'm like "NO I WILL LEARN ABOUT STATE MONADS"
<cuttle>
HELL YES my midterm bumped me up to ~95
<cuttle>
yorick: hahaha
<cuttle>
yeah fuck IO
<cuttle>
such a phoning-it-in
<cuttle>
of an I/O system
<yorick>
my scheme won't need to talk to anyone anyways.
<whitequark>
my preciousssss
<cuttle>
alexgordon: i feel like you'd be interested in what i want to make right now
<cuttle>
alexgordon: heavy, heavy emphasis on C interop
<cuttle>
alexgordon: A4-size spec
<whitequark>
cuttle: so, more or less C?
<cuttle>
alexgordon: immediately useful for real life applications, reactive, really concise but not opaque syntax
* yorick
uses sick beard with BTN, but it doesn't work as well as it does with usenet and I had to configure rtorrent *shudder*
<cuttle>
whitequark: no, like Lua in its interop
<cuttle>
can immediately start integrating it
<yorick>
show us your spec, cuttle
<cuttle>
yorick: very vague in my head right now
<cuttle>
i need to make some decision
<cuttle>
s
<cuttle>
but basically it's like, FRP without stick up its ass
<cuttle>
and without recursion and all that
<cuttle>
very aware that it's on a machine
<cuttle>
i mean, with recursion probably but not treated as the fundamental looping construct
<yorick>
ohhh, I wanted to add elm to my todo list but it was already on it.
<cuttle>
haha
<cuttle>
elm seems cool
<cuttle>
but too haskelly for me
<cuttle>
I want to have an algebraic data types meets multimethods thing
<cuttle>
like Atomo
<cuttle>
and also a manyness/oneness thing deeply ingrained in the syntax, to function as looping constructs/mapping/etc.
<joelteon>
ok i'm back
<joelteon>
alexgordon:
<cuttle>
not sure what exactly it'll look like
<joelteon>
never mind
<joelteon>
no matter
<alexgordon>
cuttle: yeah for sure
<joelteon>
i just realized i have page up/down keys on this keyboard
* whitequark
. o O ( can you run a relocatable file? )
<joelteon>
which is probably
<joelteon>
the greatest invention of modern times
<joelteon>
now i can fucking scroll with weechat
fwg has quit [Ping timeout: 272 seconds]
fwg has joined #elliottcable
<cuttle>
alexgordon: let's hash it out! :D
<cuttle>
joelteon: haha
<cuttle>
I have to use fn-ctrl-up/down
<joelteon>
yeah :|
<cuttle>
not bad at all really
<cuttle>
alexgordon: i want that uniformity of access shit
<cuttle>
alexgordon: and that shape oriented shit
<cuttle>
nahm sayin
<alexgordon>
wat
<alexgordon>
cuttle: what's uniformity of access?
<joelteon>
i'd like to uniformly access your mother
<cuttle>
alexgordon: like, think ruby's no difference between method call and property access
<cuttle>
alexgordon: but don't think of ruby as a whole :P
<cuttle>
alexgordon: i guess think more of smalltalk
<cuttle>
and it'd be multimethod stuff
<alexgordon>
cuttle: yeah
<alexgordon>
well that's what I did with furrow
<alexgordon>
everything is a function
<cuttle>
so like, defining algebraic data types
<alexgordon>
except for members
<cuttle>
that way
<cuttle>
well even members are functions in this
<cuttle>
but not haskell's ugly pseudorecores
<cuttle>
pseudorecords*
<joelteon>
think of javascript's no difference between method call and property access
<joelteon>
LOL
<purr>
LOL
<cuttle>
joelteon: well in fact it's the exact opposite of that
<alexgordon>
trolololol
<cuttle>
joelteon: JS is very much not a uniformity of access language
<cuttle>
think
<cuttle>
a.x and a.x = vs a.getX() and a.setX()
<joelteon>
i know, that's why i hate javascript so fucking much
<cuttle>
haha aight
<alexgordon>
cuttle: don't forget a.x() in jquery
<cuttle>
how's that?
<alexgordon>
jquery has getter: foo.html()
<alexgordon>
setter: foo.html(blah)
<cuttle>
haha
<cuttle>
aight
<cuttle>
I have avoided jquery
<cuttle>
the hassle of getting it into my namespace seems more trouble than the lots of things it brings into my namespace are worth
<alexgordon>
eh
<alexgordon>
it's useful
<alexgordon>
there's not much that doesn't use it nowadays
<cuttle>
sure
<cuttle>
:p
<cuttle>
alexgordon: but look at this cool thing:
<cuttle>
suppose you have constructor
<cuttle>
a(1, 2, 3)
<cuttle>
that is indistinguishable from a function call
<cuttle>
so you can change the impl behind it
<cuttle>
or you can leave it atomic
<cuttle>
all up to you, uniformity of access
<cuttle>
no capitalized constructors requirement
<alexgordon>
cuttle: right
<alexgordon>
cuttle: well that's how it works in furrow
<alexgordon>
:P
<cuttle>
oh neat
<alexgordon>
I never understood why haskell has separate constructors and functions
<alexgordon>
seems like duplication
<alexgordon>
I think the only real reason is pattern matching?
<alexgordon>
but eh, it's more elegant to have them as one and the same
<joelteon>
separate constructors and functions?
<alexgordon>
function application
<joelteon>
namespacing
<alexgordon>
sure but they're separate at a very low level
<alexgordon>
even in core
<joelteon>
oh i mean yeah
<cuttle>
enforced capitalization for namespacing is the grossest kind of namespacing
<joelteon>
it's pattern matching
<joelteon>
that's the reason
<alexgordon>
right
<joelteon>
you can't pattern match on function application (anymore)
<alexgordon>
but it's rather short sighted IMO
<cuttle>
hm how do you handle pattern matching, alexgordon ?
<joelteon>
well, we have view patterns now though
<joelteon>
which is sort of similar I guess
<alexgordon>
it would be more elegant to get rid of constructors, then allow function application in pattern matches, but restricted
<alexgordon>
then you're not creating a new entity with the same semantics
* alexgordon
shrugs
<purr>
¯\(º_o)/¯
<joelteon>
>
<joelteon>
>_>
<alexgordon>
cuttle: gimme an example
<cuttle>
alexgordon: i mean like
<cuttle>
suppose you make a type that can either be
<cuttle>
a(int) or b(string)
<cuttle>
then you want to case..of on it
<cuttle>
but a and b could just be function calls making some other data type behind the curtain
<alexgordon>
cuttle: well that's beyond what haskell can do
<alexgordon>
but if you had A, then its "constructor" function would be a() right?
<alexgordon>
I don't think you can go backwards without like inverse functions
<alexgordon>
though it's an interesting idea
<cuttle>
right, you need inverse functions
<cuttle>
but i mean with uniformity of access you *have* to have that to do pattern matching
<alexgordon>
well yeah, but I'm just talking about making constructors into functions, not making functions into constructors :P
<alexgordon>
then pattern matching works like normal
<cuttle>
can you make a type
<cuttle>
in furrow
<cuttle>
with two constructors
<cuttle>
that you pattern match
<whitequark>
you can have functional constructors
<whitequark>
eg sml has those
<alexgordon>
cuttle: hm no I don't think so
<alexgordon>
cuttle: the constructor functions are generated automatically
<alexgordon>
you can of course add more
<alexgordon>
but you can't pattern match on those because there's no way to specify inverses
<cuttle>
whitequark: tell me more
<whitequark>
cuttle: well
<whitequark>
they can be used in pattern matching and you can curry them like functions
<whitequark>
unlike eg ocaml
<alexgordon>
can you map over a constructor in haskell?
<alexgordon>
map SomeType xs ?
<whitequark>
you can in sml
<cuttle>
alexgordon: if it implements functor
<cuttle>
wait no
<cuttle>
alexgordon: yeah they're identical to functions
<cuttle>
in haskell
<cuttle>
except they're capitalized and you can pattern match
<cuttle>
data A = B Int
<cuttle>
B :: Int -> A
<alexgordon>
that's nice
<cuttle>
yeah
<alexgordon>
cuttle: a year or so ago I did some thinking on the uniformity of access thing
<alexgordon>
trying to merge everything
<alexgordon>
a language can be *too* uniform
<cuttle>
that is true
<alexgordon>
you start to get problems with namespacing, as joelteon said
<cuttle>
but i feel that uniformity of access can make things actually very non-uniform in the good way that lisp isn't
<alexgordon>
lisp is a funny one
<alexgordon>
it works much better than it should
<alexgordon>
:P
<cuttle>
haha
<cuttle>
I don't like lisp's data structures at allll
<alexgordon>
yeah yeah
<cuttle>
also paul graham is a big stupid dumb head
<alexgordon>
but somehow it manages to be a lot less fragile than say ruby and python
<alexgordon>
even though it's no less dynamic
<cuttle>
hm idk about that
<cuttle>
what do you mean by fragile?
<alexgordon>
maybe it's just different problem domains
<alexgordon>
cuttle: well like, often ruby and python code gets into a mess
<alexgordon>
because dynamic typing stabs you in the back
<cuttle>
idk i feel like lisp can just as easily or more get into a mess
<alexgordon>
no compiler is there to help
<cuttle>
python doesn't very much i feel
<alexgordon>
entropy wins out
<cuttle>
python and ruby are both *much* less messy than JS, no thanks to static typing
<cuttle>
though it is earlier failure
<alexgordon>
true
<cuttle>
just not that early
<cuttle>
jesus i love python's comprehensions
<cuttle>
generators should be *way* more common in every language than they are
<alexgordon>
yeah for sure
<alexgordon>
that's something I was investigating with uniformity of access
<whitequark>
cuttle: i think cl has a hybrid system
<alexgordon>
turning lists into iterables
<whitequark>
like it's dynamically typed
<whitequark>
but there's very good static analysis
<alexgordon>
cuttle: wherever you see [a] that means a generic iterable (generator)
<cuttle>
oh interesting
<alexgordon>
instead of a concrete list
<alexgordon>
since most of the time I just want to iterate over lists, either directly or with map/filter/etc
<whitequark>
the trouble with representing everything with iterables is that general-purpose iterators are incredibly limited
<whitequark>
since it's one-way moving only
<whitequark>
no indexes, no mutation, no back-up-one-element
<alexgordon>
not necessarily
<alexgordon>
C++ and D have "ranges"
<alexgordon>
which various levels of listiness
<alexgordon>
*with
<alexgordon>
there's a spectrum
<cuttle>
jesus this is the last time i buy snacks for my dorm room
<whitequark>
that tends to complicate your code
<cuttle>
ended up snarfing them down in 2 days
<alexgordon>
on the one side you have "once-only generators" like in python
<alexgordon>
on the other side you have contiguous arrays
<whitequark>
I don't think generators should be a language feature
<whitequark>
closures and delimited continuations totally should
<alexgordon>
HERESY!
<whitequark>
which is basically
<whitequark>
how ruby solves it
<alexgordon>
nah I totally disagree
<whitequark>
because you can build your iterators with those primitives
<alexgordon>
itertools is so damn useful
<whitequark>
you do understand I emphasize *language* ?
<whitequark>
features
<alexgordon>
surely generators can't be a library feature?
<whitequark>
they can, they are in ruby
<alexgordon>
and nobody uses them ;)
<whitequark>
wat?
<alexgordon>
I dunno. I dunno what you're talking about, I don't ruby :P
<whitequark>
there's plenty of usage for them
<whitequark>
but!
<alexgordon>
all I know is that in ruby everybody does foo.each do |x| blah end
<whitequark>
most of the time you're ok with just #each/#map/etc
<whitequark>
because you don't *need* generators most of the time if you're working with collections
<cuttle>
you only need blub
<alexgordon>
this is going to end up with me enumerating all the things I hate about ruby
<alexgordon>
so let's stop now :P
<whitequark>
why stop?
<alexgordon>
it depends a lot on your object model I think
<alexgordon>
if you have indirect method calls, then you can get away with combining the two
<whitequark>
indirect method calls as in?
<alexgordon>
like Java
<whitequark>
still no idea what you mean
<alexgordon>
virtual function calls
<whitequark>
ok
<alexgordon>
...because you can make List implement Iterable
<alexgordon>
then you can check if the Iterable you got is a List or not
<alexgordon>
and if it is, you don't need to do anything, otherwise you might want to scoop it all up into a List if you're going to be doing a lot of index operations on it
<whitequark>
that sounds like incredibly bad design
<whitequark>
if you want a List, ask for a List
<whitequark>
see, that's exactly what I'm talking about
<whitequark>
you have a method which abstracts over the storage passed to it
<alexgordon>
yeah probably but I'm making the assumption that [a] is an iterable
<whitequark>
... but actually it does not! its signature says it accepts an Iterable but it actually wants a List
<whitequark>
[a]?
<alexgordon>
the type [a]
<alexgordon>
foo :: [a] -> b
<alexgordon>
imagining if [a] meant iterable instead of list
<whitequark>
ok
<alexgordon>
actually in haskell you don't have O(1) subscripting anyway...
<alexgordon>
but that's just stupid ;)
<whitequark>
for lists?
<whitequark>
obviously
<alexgordon>
right
<whitequark>
how much do you care about efficiency?
<alexgordon>
that's what I was getting to... you're right about the storage thing
<alexgordon>
this is about the point where functional programming begins to fall apart
<alexgordon>
because in C you would use pointers, in C++ you could pick a data structure
<alexgordon>
in haskell you have this hammer...
<whitequark>
hm, haskell's lazy lists are almost the same thing as generators
<whitequark>
was that how you got the idea?
<cuttle>
what i like about lazy lists is that they don't make using map all over the place use a lot of copying
<alexgordon>
when I'm writing haskell I find I get rather distressed at the *lack* of control I have
<whitequark>
alexgordon: that's a feature :]
<whitequark>
cuttle: they don't?
<whitequark>
you still are going through all your data and creating all those cells
<whitequark>
except not at the same time
<devyn>
god I love erhu music
<alexgordon>
personally, C++11 is where it's at
<whitequark>
C++14?
<whitequark>
C++17?
<whitequark>
clang has complete 14 support
<alexgordon>
it's a miracle!
<devyn>
C++11 music?
<devyn>
I don't know of any
<whitequark>
guys guys
<cuttle>
whitequark: well it does it on demand
<alexgordon>
I just wish I could delete features from C++
<cuttle>
whitequark: so it's like you have it all written as a central loop
<whitequark>
cuttle: same amount of allocation, done at different time
<cuttle>
whitequark: no
<devyn>
whitequark: that's an awesome name
<cuttle>
whitequark: not at all
<cuttle>
whitequark: often you want a supply of primes for some algorithm
<cuttle>
well
<cuttle>
"often"
<alexgordon>
xD
<cuttle>
so you can either make a lazy infinite list of them
<alexgordon>
we language designers live on another planet
<alexgordon>
this is why languages are all so FUCKED UP
<cuttle>
and exactly the amount you need is generated
<alexgordon>
because we use these toy problems
<whitequark>
cuttle: yeah I know haskell excels at math textbook examples
<cuttle>
alexgordon: no, in my cs class i was writing an algorithm
<alexgordon>
and design everything around a reality that doesn't exist
<whitequark>
cuttle: >cs class
<cuttle>
alexgordon: and i needed the right amount of primes
<whitequark>
lol
<purr>
lol
<whitequark>
devyn: word.
<cuttle>
it was a godel hashing function
<whitequark>
unfortunately the music is crap
<cuttle>
unhashing
<alexgordon>
xD whitequark
<cuttle>
which is prime factorization
<cuttle>
which is a common task
<whitequark>
what?
<cuttle>
probably was an inefficient algorithm for it
<whitequark>
cuttle: "prime factorization, which is a common task" wat.
<purr>
beep.
<alexgordon>
cuttle: to be honest, in the real world people just make websites with rails
<alexgordon>
cuttle: any improvement to languages is pointless
<alexgordon>
yay. we can all go home now
<joelteon>
RIP
<alexgordon>
so I just say fuck it, design a language to make the stuff *we* write easier
<alexgordon>
fuck everybody else's needs
<alexgordon>
because what everybody else really needs is a better PHP
<alexgordon>
but who wants to build that
<cuttle>
just saying, laziness makes it hundreds of times easier to allocate exactly how much you need and calculate it on the go
<whitequark>
alexgordon: my friend
<cuttle>
like, for input buffering
<whitequark>
slash-lang.org
<alexgordon>
whitequark: ha I saw that
<alexgordon>
but just no
<whitequark>
he's competent
<whitequark>
and does a right thing
<alexgordon>
it's a small step, it's not a giant leap
<whitequark>
giant leaps don't work
<alexgordon>
IMO the web dev world needs a giant leap
<whitequark>
never, ever.
<alexgordon>
because a small step is like using Python and Flask
<joelteon>
slash looks cool
<cuttle>
imo the web world needs a giant
<cuttle>
bottle of sleeping pills
<alexgordon>
hahaha
<joelteon>
i want to try using slash
<alexgordon>
ok ok let me propose something
<whitequark>
cuttle: more like botulinum toxin
<alexgordon>
what the web dev world really needs, is Java-like performance
<alexgordon>
because they're using all these slow languages
<whitequark>
alexgordon: J2EE?
<alexgordon>
PHP, Ruby, Python
<whitequark>
just use it
<whitequark>
btw
<alexgordon>
and they're SO FUCKING SLOW
<whitequark>
JRuby
<whitequark>
on webdev tasks it's on par with java
<alexgordon>
and websites go down all the time, BECAUSE EVERYTHING IS SO FUCKING SLOW
<joelteon>
our bottleneck is database performance, not language performance
<joelteon>
if we were bottlenecked by ruby that would be awesome
<cuttle>
yeah, we could have much faster but just as easy languages
<whitequark>
joelteon: dude
<alexgordon>
if everything was written with C++, linode and rackspace would go BUST
<devyn>
alexgordon: everything I've ever done in Ruby, pages load in like, 50 ms... when I do PHP things take a lot longer, so
<whitequark>
just a year ago I had a rails app
<alexgordon>
devyn: 50ms is a long time
<whitequark>
it generated a main page for...
<whitequark>
wait for it...
<whitequark>
40 seconds
<whitequark>
forty seconds, yes
<joelteon>
.....
<joelteon>
why?
<alexgordon>
devyn: my computer can run crysis at 60fps
<joelteon>
what was it doing
<whitequark>
homemade templating engine spewing out about 10MB of HTML
<joelteon>
LOL
<purr>
LOL
<whitequark>
it like, didn't have separate parsing and execution steps
<whitequark>
so each time it executed a for loop body
<devyn>
o_o
<whitequark>
it reparsed it
<alexgordon>
devyn: that's what, 16ms per frame
<whitequark>
with regexps
<whitequark>
google for "liquid"
<whitequark>
I rewrote that with a proper lexer, parser, ast, compiler so it outputs ruby code
<devyn>
alexgordon: well only the physics really matter there; GPU performance isn't really applicable to web development
<alexgordon>
my computer can render a whole frame of crysis, faster than a computer can shit out a fucking HTTP response
<devyn>
Crysis also isn't doing disk access all the time
<alexgordon>
why'd you need disk access?
<whitequark>
db
<whitequark>
fsync
<alexgordon>
why does the response have to wait for that
<cuttle>
alexgordon: haha when you put it that way jesus christ
<cuttle>
i mean it does have shit alreayd going
<cuttle>
startup is slower
<whitequark>
alexgordon: because ruby is impure
<cuttle>
but like a website theoretically has shit already going
<whitequark>
and so it can't stream responses by default
<whitequark>
so it has to generate entire html before returning
<devyn>
whitequark: sinatra streaming is actually quite nice, btw; I use it a lot
<whitequark>
devyn: rails can do it too
<alexgordon>
web developers have their conceptions of how fast computers are set WAY too low, because all they ever do is web dev with these slow languages
<devyn>
oh boy, I don't have time for this rant
<alexgordon>
I've written enough python to know how fast things get when you rewrite python -> C++
<devyn>
lol
<purr>
lol
<whitequark>
/rename #alexgordon-ranting
<alexgordon>
XD
devyn changed the topic of #elliottcable to: #alexgordon-ranting
<whitequark>
we have #yorickpeterse-ranting (ex #ruby-lang)
<whitequark>
now we have #alexgordon-ranting.
<alexgordon>
ok so trying to be constructive...
<alexgordon>
the most important thing in web dev is security
<whitequark>
be classical instead
<alexgordon>
the reason people don't use C is because everything would get hacked
<whitequark>
the reason people don't use C is because it's a shitty language
<whitequark>
that stuff would get hacked is a corollary
<alexgordon>
haha
<alexgordon>
maybe
<whitequark>
it's shitty even for its intended domain
<whitequark>
which is extra funny
<cuttle>
after my 3-day fling with rust
<cuttle>
i don't think it's the answer
<cuttle>
type system gets all up in your grill
<alexgordon>
cuttle: orly?
<cuttle>
way harder to satsify than haskell is
<whitequark>
cuttle: some examples maybe?
<whitequark>
rust is basically ml+regions, no?
<alexgordon>
whitequark: if you ignore all the details that make it interesting, yeah
<whitequark>
alexgordon: well he complained about type system
<whitequark>
and that's what matters for it
<cuttle>
whitequark: shit about like
<cuttle>
the linear types
<alexgordon>
doesn't it have linear types
<alexgordon>
right
<whitequark>
linear types are fucking awesome
<cuttle>
like there are all these restrctions
<cuttle>
you can't pass a clojure wiht a ref to a linear type because it may be called more than once
<cuttle>
shit like that
<cuttle>
gets in your way *all* the fucking time
<whitequark>
because that's how you get deterministic destruction in a safe lang
<whitequark>
hmmm
<whitequark>
interesting
<alexgordon>
cuttle: that seems to be where everybody has problems
<alexgordon>
closures
<alexgordon>
each language has fucked them up in a slightly different way
<alexgordon>
(the award goes to Objective-C++ though where everything is const and so you have to make a new temp variable if you want to modify an outer argument inside a closure)
<alexgordon>
...if I've remember that right
<whitequark>
alexgordon: it's sorta same for C++
<devyn>
fffff there's no way I can do this assignment in an hour
<whitequark>
which is understandable
<alexgordon>
whitequark: yeah but C++ lambdas can specify it IN the lambda, whereas in Objective-C it goes with the variable declaration
<alexgordon>
devyn: no C identifier may include __ or start with _ then a capital letter
<cuttle>
devyn: it's objc's policy
<cuttle>
devyn: don't trample on c
<alexgordon>
yeah
<whitequark>
devyn: you'll like python
<alexgordon>
EXCEPT for in, out, inout, etc ;)
<devyn>
my mistake, C is obviously perfect
<cuttle>
alexgordon: wait what are those
<cuttle>
devyn: in no way
<alexgordon>
cuttle: DO
<cuttle>
devyn: c is fucking awful
<alexgordon>
distributed objects
<devyn>
cuttle: :p
<cuttle>
devyn: but objc is supposed to be 100% backwards compatible
<cuttle>
devyn: jesus
<cuttle>
passive agress much
<devyn>
haha
<devyn>
no you
<cuttle>
:p
<alexgordon>
though it actually ISN'T because to use objc you need objc_runtime
<cuttle>
no u
<alexgordon>
which defines a bunch of stuff like YES and NO
<cuttle>
haha
<alexgordon>
which has tripped me up in the past
<cuttle>
yes and no are so cute
<alexgordon>
trying to turn .c files into .m
<alexgordon>
if the .c file does #define YES 1
<devyn>
cuttle: I appreciate C a lot more since starting on some low level stuff...
<whitequark>
#define YES NO // fuck you
<cuttle>
devyn: yeah C is sure quite useful, but it could be equally useful
<cuttle>
however, defining something equally useful but actually better seems hard
<cuttle>
rust makes me want to kill myself in practice thanks to the linear types
<cuttle>
go is not useful for kernel
<cuttle>
s
<cuttle>
etc.
<cuttle>
basically, x86 is fucking braindead
<whitequark>
devyn: I prefer to say "I hate everything except C a lot more since starting on some low-level stuff"
<cuttle>
x86 needs a great big
<devyn>
haha
<cuttle>
bottle of sleeping pills
<whitequark>
that's really the only sane way to think about languages
<cuttle>
whitequark: no it's very insane
<whitequark>
you use the language you hate the least
<cuttle>
c doesn't match asm which doesn't match x86
<cuttle>
and they're all fucking braindead on their own anyway
<alexgordon>
seems apple has excised the distributed objects stuff from The Objective-C Programming Language book
<whitequark>
you still fucking hate it and want to strangle its fucking braindead committee
<whitequark>
or lack thereof
<devyn>
C isn't too far off of x86 asm... it's just more two dimensional instead of completely linear
<whitequark>
doesn't matter, strangling
<cuttle>
alexgordon: wait i thought you were referring to python :p
<cuttle>
nvm
<alexgordon>
devyn: like befunge?
<whitequark>
devyn: common misconception
<cuttle>
alexgordon: hahahaha
<devyn>
whitequark: I've been writing lots of x86 asm too...
<cuttle>
devyn: c is *incredicbly* off and asm is *incredibly* off the actual processor
<whitequark>
devyn: sure
<alexgordon>
I wonder if you could do a 3D befunge, a la keccak
<whitequark>
keccak?
<whitequark>
isn't that
<whitequark>
a cypher?
<devyn>
cuttle: well... no, asm is just a deconstruction of the x86 machine code. the funny part is that processors don't actually use that directly anymore; their decoders basically reassemble it as something more sane
<whitequark>
sha3
<cuttle>
devyn: that's what I'm saying
<cuttle>
devyn: *machine* code is a huge mismatch
<whitequark>
well, the sane subset of x86 is almost 1:1 match for the uops
<alexgordon>
whitequark: a 3D hash function
<cuttle>
and we have huge fucking amounts of transistors dedicated to running one instruction at a time more quickly
alexgordon has quit [Remote host closed the connection]
<whitequark>
hahahahaha
<devyn>
I'm on OS X... still here
<devyn>
how about File:/// hahaha
<whitequark>
devyn: go ahead
<whitequark>
cuttle: well
<whitequark>
each port is an execution unit
<cuttle>
wait what was the thing about File:///
<whitequark>
so in ideal circumstances (no memory deps for example) it can execute 6 instructions in parallel
<whitequark>
this works best when you have sse-heavy code
<devyn>
it caused any application that tried to use it with the builtin URL lib to crash
<cuttle>
devyn: haha
<devyn>
cuttle: so if you sent an iMessage with it, iMessage wouldn't open anymore ever
<cuttle>
whitequark: ooh that's a lot of instructions
<devyn>
until you cleared your log
alexgordon has joined #elliottcable
<devyn>
lol
<purr>
lol
<alexgordon>
ok WHO DID THAT
<cuttle>
haha that's great
<cuttle>
alexgordon: wait did it crash you?
<whitequark>
alexgordon: me
<alexgordon>
cuttle: yeah
<whitequark>
why do you ask?
<alexgordon>
running 10.8 here
<cuttle>
omg that's great
<whitequark>
you could look at logs
<joelteon>
ok tiem to try running slash
<whitequark>
oh wait
<whitequark>
HAHAHA
<alexgordon>
xD
<cuttle>
alexgordon: want to make a cute fun c interop reactive shape oriented uniformity of access langauge
<cuttle>
:3
<alexgordon>
LOL
<purr>
LOL
<joelteon>
god damn the office network is so slow
<alexgordon>
cuttle: I have no idea what that is
<cuttle>
alexgordon: just like, frp but not in a haskell type system
<joelteon>
yeah fuck haskell
<cuttle>
alexgordon: like the whole thing about a = b + c and a updates and b and c do
<cuttle>
as b and c do *
<alexgordon>
cuttle: oh right
<devyn>
cuttle: lol
<purr>
lol
<devyn>
joelteon: I feel like so many IT departments just don't know how to scale WiFi networks properly...
<devyn>
at school, I easily get like 50 Mbps or so
<devyn>
at work, it's a struggle to get a consistent 2 Mbps
<devyn>
and work has fewer people
<whitequark>
shitty uplink?
<joelteon>
>_>
<joelteon>
i don't get it
<devyn>
whitequark: I don't think it's that, because the wired computers have no problem
<whitequark>
perhaps
<joelteon>
god
<joelteon>
the california DMV is AWFUL
<joelteon>
and i appear to be closest to the worst one
<joelteon>
115 minute wait time without an appointment
<devyn>
joelteon: yeah, and I hear if even one thing is “wrong” compared to their unwritten policies, you have to wait all over again, generally
<joelteon>
i.e., having a credit card rather than cash
<devyn>
heh
<joelteon>
also, we still do pen and paper tests here
<devyn>
how the fuck do they manage to take that long
<devyn>
there can't be that many people there at any one time
<joelteon>
that's what i want to know
<joelteon>
any day you go there, there will be a line extending around the side of the building
<devyn>
probably all except one of the staff are on a permanent coffee break, and the one person who actually does work does it so slowly
<joelteon>
no
<devyn>
:p
<joelteon>
there's at least 30 people working at any one time
<joelteon>
well
<joelteon>
probably more like 20
<joelteon>
i'm trying to get my roommate to let me use her car to drive to the one in san jose
<joelteon>
which is 13 miles away
<joelteon>
not biking that far
<devyn>
noo, Joel Teon, don't do it
<joelteon>
it's only a 24 minute wait over there
<joelteon>
that's how long appointments take in santa clara
<devyn>
idk I can never parse your name as Joelteon on IRC
<joelteon>
really
<devyn>
always looks like Joel Teon to me
<devyn>
think it might just be the kerning between l and t
<joelteon>
>___________>
<devyn>
whitequark: anyway, as before, much of C isn't really that huge an abstraction of x86 asm...
<devyn>
but it's enough to make a huge difference
<whitequark>
devyn: write me an add with overflow in C which maps to proper x86 asm
<whitequark>
write me an access to address 0
<whitequark>
or actually, write me an access to an aribitrary memory address
<whitequark>
write me a function to walk the stack
<whitequark>
write me an efficient memory copy routine
<whitequark>
(all of that without using inline asm or intrinsics, of course)
<whitequark>
do I need to go on?
<whitequark>
you could say that Java is not a huge abstraction of x86 asm because basic Java arithmetics maps to the same opcodes
<whitequark>
x86's lea was ostensibly designed to map to array/struct access in C/Pascal/etc, but in reality common subexpression elimination completely screws all of your assumptions, if loop strength reduction didn't do it earlier, or if the scheduler didn't decide that add+mul utilizes the pipeline better than lea, or...
<whitequark>
all C guarantees you is asymptotic complexity of all its basic operations being O(1) basically
<whitequark>
which *is* important but has absolutely nothing to do with it being low-level (lisp can do that) or close to x86 (sigh)
<whitequark>
I mean, null pointer can have not a numeric value of zero specifically *because* of x86
<whitequark>
there's also some other fun, for example unsigned i; i++ can *trap* (yes, trap, segfault, name it) on architecture X
<whitequark>
</rant>
<whitequark>
hey devyn
<whitequark>
don't tell me I wrote all that into /dev/null
<devyn>
whitequark: yeah, sorry, you did </sarcasm>
<devyn>
:p
<devyn>
no
<devyn>
well
<devyn>
why can't you access memory address zero?
<devyn>
*0?
<whitequark>
devyn: that's forbidden in the standar
<whitequark>
d
<whitequark>
in practice, at >-O0 the compiler will optimize it into nothing
<whitequark>
if it can prove the address is always zero
<devyn>
didn't know that
<devyn>
huh
<whitequark>
and it can prove that in a surprising amount of cases
<whitequark>
also, the reverse. eg, in ptr->foo(); if(!ptr) puts("huh");
<whitequark>
the "huh" part is optimized out
<devyn>
so NULL, then, is always zero, despite it being possible to define it as something else?
<whitequark>
no
<whitequark>
null pointer and integer zero are very distinct entities
<whitequark>
if you convert a null pointer to integer, it'll be zero, and vice versa
<devyn>
well if not for null, why can't I address zero
<whitequark>
however the low-level representation of a null pointer need not be zero
<whitequark>
see, if you do (void*)0, you get a null pointer :p
<alexgordon>
devyn: NULL is a macro, which expands usually to (void*)0
<whitequark>
alexgordon: devyn: (void*)0 does not necessarily have all bits set to zero.
* whitequark
sighs
<devyn>
yeah I get that
<alexgordon>
whitequark: wait what?
<devyn>
what happens if I printf() NULL?
<whitequark>
alexgordon: yes.
<alexgordon>
wat
<devyn>
as a pointer
<whitequark>
devyn: ummm show me the code
<alexgordon>
devyn: toast comes out of your CD-ROM drive
<whitequark>
printf("%p") ?
<devyn>
yes
<devyn>
printf("%p", NULL)
<whitequark>
implementation-defined
<whitequark>
*g*
<alexgordon>
still don't see how (void*)0 can have some bits not set to 0
<whitequark>
alexgordon: the compiler inserts checks at each conversion of ptr<>int to change the bits
<whitequark>
if the architecture needs it
<whitequark>
I believe this applies at least to real-mode x86 and ia-64
<alexgordon>
is this like near and far pointers?
<whitequark>
not quite
<whitequark>
in real mode you would actually need to access memory at address zero, so null pointer can't be 0
<whitequark>
to keep accesses to zero defined
<whitequark>
today it matters because the compilers got very good at proving incredibly contrived conclusions from the C rules and exploiting them in a manner they like
<alexgordon>
...why would you need to access memory at address 0?
<whitequark>
which almost always is not what you expect
<whitequark>
alexgordon: some control block of DOS is there or something
<alexgordon>
weird
<whitequark>
PCP? PDP?
<whitequark>
can't remember how it's called
<alexgordon>
PCP xD
<devyn>
ideally you should be able to address any piece of RAM...
<alexgordon>
this is definitely having that kind of effect on me
<whitequark>
devyn: further, C only defines accesses via pointers based on other pointers
<whitequark>
so even if you know you need to access 0x40011000 because some hw lies there
<devyn>
I'm alexgordon, I hate low level stuff but I think webdevs should use C++
<whitequark>
it's not legal
<alexgordon>
devyn: lol that isn't what I said
<purr>
lol
<alexgordon>
web devs should not use C++ because it's too damn insecure
<whitequark>
alexgordon: you are too damn insecure
<devyn>
okay, I'm going back to school
<devyn>
>_<
<alexgordon>
whitequark: well I use C++, clearly I hate myself
<whitequark>
that dos thing
<whitequark>
is FCB
<alexgordon>
FIB?
<devyn>
FROG?
<whitequark>
or maybe not
<whitequark>
hell this was more than a decade ago
<devyn>
well that reminds me of urbit
<devyn>
where fucking everything is four letters long
<devyn>
or three
<whitequark>
wher fuck ever isis four lett long
<alexgordon>
whitequark: I'm sure I've missed something here, but... can't you just use inline asm?
<whitequark>
alexgordon: we were arguing whether C is close to x86 asm, or any asm
<whitequark>
of course you can do it inline
<devyn>
whitequark: have you seen hoon code? it's unreadable. completely random four letter symbol names for everything
<whitequark>
then it's not C lol
<whitequark>
devyn: I did
<whitequark>
I've ranted about it here
<whitequark>
tl;dr: "urbit is a nice attempt at trolling"
<whitequark>
I mean seriously, is that shit for real!?
<whitequark>
DOS 7.0? Watcom fucking C?
<whitequark>
WHAT
<alexgordon>
cuttle: HOLY SHIT
* alexgordon
is looking at urbit
<alexgordon>
cuttle: just had an idea
<alexgordon>
cuttle: been looking at alphabets recently
<cuttle>
alexgordon: oh?
<alexgordon>
cuttle: ok it seems like most of the time programming uses one of two things (usually a combination of both)
<alexgordon>
1. english
<alexgordon>
2. mathematics encoded into ascii
<alexgordon>
some languages have more english, some have more math notation
<alexgordon>
but what if you could invent a notation that was neither...
<joelteon>
ok it's gonna be a bitch to set up slash
<joelteon>
mostly because i have to use apache
<joelteon>
i hate apache
<alexgordon>
obviously nobody would ever use it, so this is strictly masturbotary
<alexgordon>
but what interesting things could you do with a new writing system for programming?
<alexgordon>
writing on paper btw, not talking about unicode here
<cuttle>
yeah
<whitequark>
alexgordon: how do you get into, you know, the computer?
<alexgordon>
whitequark: high resolution graphics tablet? :P
<whitequark>
and what software?
<whitequark>
and what do you do when you wanna fix a bug?
<cuttle>
whitequark: irrelevant question
<alexgordon>
I dunno, this is the future, we don't have to think about these things
<cuttle>
whitequark: we're thinking about a cool idea
<cuttle>
whitequark: don't need to think about that aspect
<alexgordon>
whitequark: hire a chinese person to take your drawings and type them in
<whitequark>
a useless idea then. ok
<alexgordon>
whitequark: life is merely a series of useless ideas, followed by death.
<whitequark>
meh
<cuttle>
In mathematics, a topos (plural "topoi" or "toposes") is a type of category that behaves like the category of sheaves of sets on a topological space (or more generally: on a site).
<cuttle>
alexgordon: high five
<cuttle>
11:38:42 <+alexgordon> whitequark: life is merely a series of useless ideas, followed by death.
<devyn>
okay, back for a little while
<cuttle>
whitequark: not every fucking part of an idea has to be set in stone for one to usefully speculate about it
<cuttle>
that came out more angry than I intended
<devyn>
it was the 'fucking' part
<devyn>
just because you can swear now, cuttle, doesn't mean you have to do it constantly
<joelteon>
stop fucking
<niggler>
cuttle is one angry fucker
<devyn>
:)
<joelteon>
good bye cutle
<joelteon>
good boy*
<joelteon>
cuttle*
<joelteon>
jesus
<cuttle>
devyn: just because you can be condescending now doesn't mean you have to do it constantly
<joelteon>
it's a joke bro
<devyn>
cuttle: lol
<purr>
lol
<alexgordon>
the true meaning of life to have a lot of sex, right?
<alexgordon>
pretty sure that's what darwin said
<joelteon>
technically speaking, yes!
<whitequark>
alexgordon: yes
* alexgordon
is OK with this
<cuttle>
joelteon: i'm referring to devyn as a whole, not just now
<joelteon>
ok
<cuttle>
devyn: :P
<devyn>
life's ultimate goal is to reproduce
<cuttle>
the fact that multiple people agreed with that
<alexgordon>
I am just a package manager for my balls
<cuttle>
oh god now
<cuttle>
no
<devyn>
we are the grey goo
<cuttle>
evolution gives no goals
<devyn>
cuttle: of course not
<cuttle>
the illusion of goal-driven behavior arises
<devyn>
cuttle: it is emergent...
<alexgordon>
cuttle: not long term, but short term if we don't reproduce there can be no other goals at all
<alexgordon>
I guess that fits what you just said
<alexgordon>
QED
<cuttle>
it is deeply fallacious to say that there is only one inherent true meaning of life, due to evolution
<cuttle>
it's self-defeating logic, and that "meaning" is not a meaning either
<alexgordon>
just saying that evolution wants us to fuck a lot
<cuttle>
it's a fun joke to say
<alexgordon>
as men. for women it's slightly different
<cuttle>
but that's like saying
<cuttle>
the only meaning for a star is to burn
<cuttle>
that's a problematic sentence
<cuttle>
that's not a meaning at all
<whitequark>
#philosophy
<alexgordon>
xD whitequark
<whitequark>
let's all have one giant orgy with ec
<alexgordon>
oh god
<devyn>
cuttle: oh come on just give up and fuck something
<whitequark>
oh yes
<alexgordon>
^5 devyn
<devyn>
YEAH BABY, YEAH
<cuttle>
LADIES LOVIN MY MUSIC IS LIKE SOME SEX SHIT
<cuttle>
NIGGAS TRYNA GRIP UP MY MIC LIKE IT'S A DICK
<alexgordon>
cuttle: ah now this is an interesting question
<alexgordon>
at what point in human history did music become a way of getting sex?
<alexgordon>
that was an awkward way of putting it
<alexgordon>
"getting sex"
<cuttle>
lol
<purr>
lol
<alexgordon>
eh you know what I mean
<whitequark>
alexgordon: I think immediately
<whitequark>
because everything humans do is a way of getting sex
<cuttle>
nobody knows where music came from except bullshit evopsychologists
<devyn>
lol
<cuttle>
i mean you can say "it came from humans loving patterns"
<cuttle>
but i mean we don't get the same deep satisfaction from constellations
<cuttle>
oh man it's getting late
<cuttle>
I have to go do some shit
<alexgordon>
cuttle: have you seen bbc's life?
<cuttle>
be back in a while
<cuttle>
alexgordon: maybe
<alexgordon>
at the end there's footage of apes drumming
<cuttle>
oh that's awesome
<cuttle>
well I'll be back
<cuttle>
alexgordon: and we can make a cute fun reactive shape oriented uniformity of access language