<brixen>
ec^: it's a bytecode VM with a type-profile and feedback driven JIT using LLVM with a generational GC and no global interpreter lock
<ec^>
Oh, lord, I have no idea. I'm not even convinced Paws is meaningfully ‘compileable.’ Any Paws VM must almost of necessity be at a similar level to the language itself; because the langauge, very lisp-ily, is a super nearly-meaningless layer over a set of primitive semantics … and those don't map cleanly to common imperative shit like
<ec^>
variables-with-scope or assignment / functions or procedures / any sort of stack ...
<brixen>
think HotSpot without the Java nonsense (ie the internals)
<ec^>
It *may* be translatable to CPS though, I think? Well, I mean, by definition it is, turing-complete etc, but *cleanly* translatable, I have hopes ...
<whitequark>
ec^: pretty much anything is JIT-able
<whitequark>
uhm
<brixen>
wow rbx be all hard n stuff on the goog
<whitequark>
what do you plan to achieve by translating it to CPS?
<ec^>
creationix: omg
<ec^>
creationix: that's beautiful
<creationix>
:D
<ec^>
whitequark: I dunno! I have no idea how 2 compilezeses. You know I know nothing about anything.
<ec^>
Nearly every single paper I've read so far about compilation is about CPS transformations
<ec^>
but that's, like, self-selected because those are the papers I open and start to read because I'm obsessed with continuations and CPS ... but. like.
<whitequark>
ec^: i suggest uh, skipping CPS papers
<ec^>
brixen: why ‘rbx,’ btw?
<brixen>
RuBy eXecutable maybe?
<ec^>
whitequark: yea? I've read some stuff by andy wingo recently on this, a lot of the problems he's run into with CPS
<brixen>
evan was using it as an abbrev before I started
<ec^>
and how SSA intermediate-forms can be superior
<creationix>
I love andy's writing
<whitequark>
ec^: he switched to a more SSA-like representation
<whitequark>
yeah
<whitequark>
CPS is... fairly obtuse to work with
<ec^>
anyway: it's pretty easy to picture a bytecode for Paws' basic operations, I just have a really hard time seeing how that could possibly map into *any* of the things I've read about in my compiler research
<whitequark>
and many papers double town on obtuseness for whatever reason
<creationix>
fedor is a fan of sea-of-nodes
<creationix>
I think turbofan uses that (in v8)
<whitequark>
ec^: you haven't really answered the important question, which is
<ec^>
it's totally possible that that's just a mental block on my part: a long time ago, alynn offered to / was convinced that he could write a JIT for Paws,
<whitequark>
WHY do you want a bytecode
<ec^>
whitequark: rephrase?
<whitequark>
why do you want to translate paws to some bytecode representation?
<whitequark>
you can JIT without a bytecode. V8 does that
<whitequark>
it just reparses the source every time
<ec^>
well, here's my concerns:
<creationix>
right, IR ~= bytecode
<brixen>
you can also bytecode without at JIT, Ruby does that :)
<whitequark>
yep
<brixen>
bytecode is just an IR
<whitequark>
bytecode is very much an implementation-detail-thing
<whitequark>
that is for some reason often elevated to its own importance, which it lacks.
<brixen>
there are basically linear IRs and graph IRs and every combination in between
<whitequark>
what brixen says, yeah.
<ec^>
everything I've *ever read* about compiling *anything* starts with all sorts of the same basic assumptions: stuff like a lexical scope, objects that can be runtime-typed even if they're not statically declared, basic mathematical operations that have a syntactic encoding that can be detected and spat out nearly-directly ...
<brixen>
there's no specific specialness to a particular IR
<ec^>
if any of that non-jargon made any sense.
<brixen>
some are more useful for certain tasks
<whitequark>
ec^: sure
<whitequark>
none of that is *fundamental* to compiling
<ec^>
*none* of those things have any useful presence in Paws, so I don't see any *other* “step” I can attack, in terms of ‘compiling Paws.’
<whitequark>
compiling is just... transforming a program in one representation into another.
<ec^>
if that makes sense? </idiot>
* creationix
should really look at paws some day
<ec^>
okay: I don't see how to encode a Paws program, in x86.
<whitequark>
it's literally just that. there's no tricky magic.
<ec^>
I see how to encode a Paws *VM*, in x86.
<creationix>
interpreter?
<whitequark>
that is one way to encode a Paws program, in x86.
<whitequark>
another way would be...
<ec^>
so I'm hoping I can do some optimization in the <Paws-as-a-graph> to the <Paws-as-a-bytecode-of-sequential-operations> stage,
<ec^>
hm, that's a terrible review. marking something as “want-to-read” is *really* not a ‘review’, in my book ... >,>
<whitequark>
brixen: I thought the gains in Truffle are more in usability than expressive power?
<ec^>
whitequark: go back
<ec^>
unrolling?
<ec^>
I'm vaguely familiar with loop-unrolling, yes
<whitequark>
anyway, I'm not really interested in arguing what technique is slightly better, I wanted to illustrate that something like Truffle does *is* quite practical
<whitequark>
ec^: let me try to put it another way
<ec^>
oh lord no I can't focus on this, I have homework to do )'=
<brixen>
whitequark: the perf gains demonstrated by JRuby+Truffle on Graal are mostly attributable to eliding allocation
<ec^>
brixen: here's something that puzzles me:
<whitequark>
ec^: so you have some function that does a single evaluation step in Paws
<brixen>
at least, that's what i've seen but I haven't dug in super closely
<whitequark>
it can return a value right away, or it can decide it needs to go look at some child node
<whitequark>
right?
<brixen>
what I know is they are writing 10s of thousands of lines of Java code to *use* the Rubinius core library
<brixen>
because apparently they can optimize Ruby better than Java
<ec^>
I know why Paws is an interesting project in terms of ‘places to represent tasks’, versus LLVM or x86 or something (native, clean representation of massively concurrent or complex-interdependant-asynchronous tasks);
<ec^>
but what does rbx offer above/beside/versus LLVM
<brixen>
I've asked Chris about the economics of Truffle but he's all "it's a research project"
<ec^>
from what I've heard so far, it sounds like rbx is *also* very low-level; I was assuming early-on that you were creating a high-level VM for a particular family of languages
<whitequark>
imagine that every time you recurse into that function that does a evaluation step, or go on to execute another step of the main loop, or something like that
<creationix>
pypy is also an interesting target for a jit for dynamic languages
<ec^>
creationix: yah
<ec^>
learning python for a class right now
<whitequark>
instead of that you copy the evaluation step function itself and embed it into your program.
<ec^>
unfortunately pypy is suuuuuper dead w.r.t. Python 3.x
<whitequark>
repeat until the entire paws program graph is exhausted.
<ec^>
whitequark: will have to read that later
<ec^>
ugh
<whitequark>
boom, you've compiled Paws to x86.
<ec^>
no. will read. ugh.
<brixen>
ec^: the current Rubinius bytecode is very high level, but we have to recreate a bunch of semantics in the JIT
<whitequark>
fuck fuck FUCK
<ec^>
11:03 PM <+whitequark> ec^: so you have some function that does a single evaluation step in Paws
<ec^>
11:03 PM <+whitequark> it can return a value right away, or it can decide it needs to go look at some child node
<ec^>
I need to unpack that
<whitequark>
ec^: I went to argue with you on IRC and I forgot that I was boiling some acid
<whitequark>
brb
<whitequark>
go on
<brixen>
ec^: check out fancy-lang.org and atomy-lang.org
<ec^>
whitequark: “ec^: I went to argue with you on IRC and I forgot that I was boiling some acid” wat.
<purr>
beep.
<ec^>
brixen: have fancy in my lang-queue
<brixen>
ec^: Atomy is arguably more interesting
<brixen>
both are implemented on Rubinius
<whitequark>
ec^: i turned it off
<whitequark>
please continue
<creationix>
wow, fancy looks a lot like ruby
<brixen>
creationix: by design :)
<creationix>
brixen: is it just ruby with a more small-talk-like syntax?
<brixen>
also, just to keep this in mind, both Fancy and Atomy were created by people with 0 formal language training
<ec^>
brixen: I'm gonna focus on whitequark rn, I know I dragged you in here to talk, but I always benefit deeply from whitequark going all ‘Okay I have the patience to deal with you right now’ :P
<brixen>
Alex, who created Atomy, created Atomo in Haskell when he was 17
<ec^>
brixen: will get back to you.
<brixen>
ec^: it's all good!
<ec^>
11:07 PM <creationix> brixen: is it just ruby with a more small-talk-like syntax?
<brixen>
I'm fixing the non-GIL GC in Rubinius right now :)
<ec^>
the *depth* of semantic in *any* programming language makes “being *just* <other language> with <particular change> nearly impossible, unless you're writing a transpiler where the hosting semantic *is* that second language
<ec^>
just a random thought
<ec^>
11:05 PM <+ec^> 11:03 PM <+whitequark> it can return a value right away, or it can decide it needs to go look at some child node
<ec^>
rephrase that
<brixen>
creationix: the blurb at the top of fancy-lang.org describes it
<ec^>
trying to reconcile what you're talking about with my concurrency issues
<brixen>
creationix: I know the author but not that much about Fancy
<whitequark>
ec^: there are no transpilers
<whitequark>
there are just compilers. some of them target x86. some of them target javascript. there is no conceptual difference between the two.
<brixen>
just forget that transpiler is a word, what a terrible word
<whitequark>
^
<brixen>
it's the mansplainer for compiler lol
<purr>
lolol
<whitequark>
lol
<creationix>
yeah, not sure why Brendan made up that word
<ec^>
don't do the compiler/transpiler thing
<ec^>
that will set me off on something unrelated >,<
<ec^>
brixen: suffice to say we differ *strongly* here.
<whitequark>
not sure i get the analogy but there's no way you can possibly smear transpiler that i will argue against
<brixen>
heh
<whitequark>
so it's ok
<brixen>
well, actually...
<brixen>
lol
<brixen>
purr: !
<whitequark>
brixen: i have a point of saying that people are welcome to well-actually me.
* whitequark
shrugs
<purr>
¯\(º_o)/¯
<brixen>
whitequark: it's certainly something one is free to invite :)
<whitequark>
ec^: so! imagine you're writing a function that evaluates paws graphs.
<ec^>
Pedants doing the whole THEY'RE THE SAME thing are ignoring the fact that *in everyday usage*, *in the real world*, ‘compiler’ means two very specific things that it does not mean in the literature: 1. to a machine-code or byte-code, and 2. an *optimizing* step. something like CoffeeScript does neither, and completely deserves a separate term, as much as
<ec^>
you can look up a dictionary definition and call it something else.
<whitequark>
ec^: you know, it's like gender binary
* whitequark
laughs
<brixen>
ec^: we used to use the phrase "source to source translation", so if that phrase somehow means "transpiler" ok
<whitequark>
Pedants doing the whole GENDER IS A CONSTRUCT thing are ignoring the fact that *in everyday usage*, *in the real world*, 'man' means a very specific thing, cough, I can go on
<ec^>
it's especially important to term them differently because, while a transpiler is a weekend's work if you're not going for rigor, an optimizing compiler toolkit is literally one of the most difficult software-development projects of which I'm aware. Like, beyond O.S. level difficulty. That's fucking scary, and scares people off from *writing* non-optimizing
<ec^>
‘compilers’ (i.e. transpilers), which way, way more people should be doing.
<whitequark>
that's complete bullshit
<brixen>
but nothing about "compiler" insists on input and output, except it was usually a stage after "parser"
<ec^>
brixen: you, of all people, should be supporting new language that helps un-scare beginners and encourages them to approach these topics!
<whitequark>
a simple compiler is a weekend's work.
<whitequark>
there is /absolutely nothing/ inherently complex about compilers
<brixen>
ec^: this is my new language, "compiler" and I don't want people to fear it, I want them to get excited
<creationix>
so, about coffeescript. I'm not sure if I should apologize for that. I was the one that made it self hosted
<brixen>
whitequark++
<purr>
Let it be known that brixen loves whitequark.
<whitequark>
hahahahaha
<ec^>
yes, and that's a transpiler. if it's not doing optimization (and I don't mean depending on an external toolkit like LLVM for the optimization), then it's no longer a compiler by the popular / useful definition.
<ec^>
ugh irrelevant pedantry discussion, so done
<whitequark>
ec^: plenty of C compilers don't do optimization.
<brixen>
ec^: I'd simply argue that "compiler" has been misapplied and is a very simple, useful, concept
<whitequark>
^
<brixen>
by itself, it does not require "optimizing" anything
<ec^>
brixen: and I don't disagree with that!
<whitequark>
say after me: "coffeescript compiler"
<ec^>
but when you go around saying ‘compiler,’ you're bringing with it a particulr association and set of cultural baggage, and you can't just *decide it now means something else* and discard all that baggage.
<whitequark>
the sky didn't drop
<ec^>
this is just devolving into a descriptivist / prescriptivist argument, and there's zero point to that.
<whitequark>
cats and dogs aren't dining together
<whitequark>
etc
<brixen>
ec^: I'm writing a book, so I'll try to recover the utility of "compiler"
<ec^>
brixen: *nods*
<brixen>
maybe even with a cute gopher stuffed animal or something :)
<brixen>
ok, I'm off to slay concurrency bugs!
<ec^>
And I'm all for that. In a long-form text where you can *define a term*, and then operate consistently on that definition, that's all well and good
<brixen>
toodles
<whitequark>
ocaml has two compilers, none of which optimizes a lot
<ec^>
and if you succeed in reclaiming a powerfully-associated term, great!
<whitequark>
no sane person is going to suddenly call them "transpilers"
<whitequark>
amusingly the js_of_ocaml '''transpiler''' is doing more work than the bytecode '''compiler'''!
<ec^>
but jumping into an IRC room with a bunch of randos present, *most of whom will have those associations*, and then insisting that you not avoid the word for Pedantry Reasons™ ... is foolish.
* whitequark
idly recalls
<ec^>
descriptivist / prescriptivist, pointless, ugh., etc etc.
<whitequark>
someone i know wrote an optimizing machine code compiler for brainfuck...
<whitequark>
... in bash.
* ec^
reads back up
<ec^>
ahhah, that's beautiful
<creationix>
whitequark: that can't be healthy
<whitequark>
lol
<purr>
lol
<ec^>
creationix: I'd posit that *all* of software-development is inherently unhealthy in today's world. >:
<ec^>
our entire field is a life-force suck rn.
<ec^>
okay. bleh. *reads up again*
<ec^>
here's the basic issue:
<creationix>
so I'm guessing nobody in here has much experience with luajit bytecode other than me?
<ec^>
forgetting *all the other Paws crap*, most of which isn't like, a direct-compilation-without-optimization issue
<creationix>
ec: link to paws? I lost it
<ec^>
I still have the problem that a ‘chunk of tasks,’ whatever you want to call that, a procedure if you will, isn't *static*. which leaves me unsure how to encode that as machine-code, even via the unrolling you mention
<whitequark>
creationix: no
<whitequark>
creationix: run while you can
<whitequark>
ec^: you don't
<whitequark>
you have a runtime, which has a stack, in memory
<ec^>
creationix: eh, there's nothing really linkable. I've somehow failed, in six years, to *ever* coherently explain it outside of 1. a wildly-out-of-date and still-basically-useless ‘specification’, and 2. code.
<ec^>
creationix: can talk about it sometime, or better yet, just forget you ever heard about it, for your own health. /=
<whitequark>
ec^: there are basically no languages that do not have a runtime
<creationix>
I remember it being very strange and different
<ec^>
whitequark: ah! help! ‘runtime!’
<creationix>
something about some novel concurrency ideas
<ec^>
I do not understand how you compile a language to machine code and then still have this second process attached to it
<ec^>
I do not understand runtime plz halp
<whitequark>
ohhh
<whitequark>
so what you do is you write a program
<ec^>
fuck. I'm getting no more math done tonight. ;_;
<whitequark>
in absolutely anything (that has the functions you need)
<whitequark>
dunno, C is a popular choice
<ec^>
mmhmm
<whitequark>
and then you write all the relatively complex shit that you don't want to deal with in your translated machine code
<whitequark>
like the stack of tasks
<whitequark>
in it
<ec^>
“deal with in your translated machine code”
<ec^>
waesoirdhjtoispa
<whitequark>
then, you put your machine code in executable memory, and call it like a function
<ec^>
wait let me process
<ec^>
runtime ≈ runloop/event-loop?
<ec^>
or some such shit?
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<creationix>
whitequark: but if you're writing a systems language, you can eventually be fully self-hosted right?
<whitequark>
ec^: on the highest level, a runtime is literally anything that your machine code needs to work but that your compiler doesn't generate
<whitequark>
it can be the event loop, if you'd like.
<ec^>
i.e. runtime runs *below* your compiled code, not above
<whitequark>
yes.
<ec^>
it repeatedly calls into compiled code, but always gets control returned to it
<ec^>
so, kinda like how we use event-loops in shit
<ec^>
k
<whitequark>
er... no
<whitequark>
not really.
<ec^>
fack.
<creationix>
more like libv
<creationix>
*libc
<ec^>
11:23 PM <+whitequark> ec^: on the highest level, a runtime is literally anything that your machine code needs to work but that your compiler doesn't generate
<creationix>
or kernel system calls
<ec^>
not sure I see the utility of having a word for that, but that makes sense
|jemc| has quit [Ping timeout: 240 seconds]
<whitequark>
so libc is c's runtime
<ec^>
Like, I can picture a bunch of natively-implemented-standard-library shit
<ec^>
yeah, I think of libc as *standard library*, not *runtime*, I guess?
<whitequark>
the c standard says that the function "fopen" works like it says
<whitequark>
but it doesn't really say *how* you do it
<ec^>
so what is «runtime - standard_library»
<whitequark>
"runtime" and "standard library" are kinda two ways to talk about the same thing
<ec^>
hm
<whitequark>
mind you, none of this is very precisely defined
<ec^>
kkkkk
<ec^>
k
<ec^>
so:11:21 PM <+whitequark> and then you write all the relatively complex shit that you don't want to deal with in your translated machine code
<ec^>
11:21 PM <+whitequark> like the stack of tasks
<ec^>
stack of tasks?
<whitequark>
er
<whitequark>
oh, sorry, I misread
<ec^>
Paws is stackless, theoretically, so I kind of lose you a little bit there when I'm trying to picture what you're speaking of
<whitequark>
I misread "chunk of tasks" as "stack of tasks"
<ec^>
oh lol
<purr>
lolllllll
<ec^>
so let me explain Just Enough Paws to show where I'm confused, k?
<whitequark>
sure
<whitequark>
I vaguely remember it now, actually
<ec^>
hm
<ec^>
no, actually, this would be fine
<whitequark>
actually, didn't I write a Paws interpreter?
<ec^>
ignoring all the other shit: a chunk of code, a procedure, once compiled to an imaginary byte-code, is linear, which implies this will work fine
<whitequark>
and then, like, deleted it because I got so pissed off at you for some reason i decided to leave the channel forever
<ec^>
whitequark: lol. I think literally like two dozen people have, at some point. problem is 80/20%. It's really easy to spit out all the basic boring stuff, like a parser, or the object-system, or the primitive operations … but everybody loses me at the execution-model.
<ec^>
pretty sure there's only been precisely *three* functional and accurate implementations of the execution model /=
<ec^>
anyway:
<ec^>
ignoring all the other shit: a chunk of code, a procedure, once compiled to an imaginary byte-code, *is* linear.
<whitequark>
no, I figured out your execution model, I just thought it is mortally stupid
<whitequark>
yes
<ec^>
lmao
<ec^>
whitequark: “no, I figured out your execution model, I just thought it is mortally stupid” wat.
<purr>
beep.
<ec^>
thxpur
<whitequark>
now replace "imaginary byte-code" with "x86_64 instructions"
<ec^>
-botsnack
<purr>
ec^: Thanks! *nom nom nom* It could use some salt, though.
<ec^>
is that a thing
<ec^>
oh it's a thing, crazy
<ec^>
whitequark: yeah, that's what I'm thinking through
<whitequark>
literally replace every bytecode with whatever its implementation in C compiles to
<whitequark>
people actually write compilers like that
<whitequark>
it's a thing
<ec^>
oh totally get that, I've moved past that
<whitequark>
ok
<whitequark>
go on
* ec^
nods
<ec^>
I think it's all fine. I'm still not intuitively believing it, but it's *obvious* that it's fine, logically.
<creationix>
and simple jits do that on the fly
<ec^>
vaguely related to something I said earlier:
<ec^>
I continuously feel like Paws is Basically Unoptimizable (I assumed this *before*, when I started on the work; but now I have a little more formal basis for the assumption? just barely?). I mean I'm such a beginner, but every time I *do* read about some novel optimization, it always seems to be based on assumptions that my Paws work doesn't fit:
<ec^>
shit like lexical scope, *some* sort of basic type system or inheritance, etc.
<ec^>
though there is some edge-case stuff, I think I could theoretically do
<ec^>
like assumptions about very *most* primitive of types (‘is this a number? good. is this *staying* a number? good. now I can do Math™.’ kinda stuff)
<whitequark>
ec^: so concerning this
<whitequark>
yes, you are quite close.
<whitequark>
fundamentally, dynamic optimization (like JITs and such) is concerned with two questions.
<whitequark>
1. is there some thing that stays same a good amount of the time?
<ec^>
this doesn't bother me *too* much, because Paws is lolslow that's kinda the lolpoint. I'm more interested in this as a learning-about-optimization thing and a lot less about actually *succeeding* in making paws fast.
<purr>
LOL
<ec^>
purr: uhhuh. no.
<whitequark>
2. can I easily notice if that thing does change?
<whitequark>
as long as you answer yes and yes, your language can be optimized. period.
<ec^>
like the problem at its' core is literally the so very obvious one:
<whitequark>
lexical scope, types, numerics, all completely irrelevant
<creationix>
that's pretty much the main optimization in luajit
<creationix>
outputs native code assuming a type with minimal bail-out checks in case it's not
<ec^>
you're *supposed* to be targeting paws by abstraction. That's literally the point of the entire project. And by definition, then, the *compiler*/JIT/whatever/VM is never going to be able to know about the structures of things you're dictating in your on-top-of-Paws-language.
<creationix>
uses tracing to gather data
<whitequark>
yes, i know how luajit works
<ec^>
ex. whatever type-system you design.
<ec^>
yah? is my intuition holding up here?
<ec^>
you can't optimize based on assumptions about types that hold, when *you don't know those assumptions about types* because *you didn't design that type-system*
<whitequark>
ec^: it doesn't have to, if it can instrument your code
<ec^>
whitequark: 'splain
<whitequark>
what you say is pretty much true about a pure ahead-of-time compiler that has no feedback from the actual running system
<ec^>
whitequark: think creationix was speaking to me, not you
<creationix>
yes, sorry
<whitequark>
so like, no clang for paws.
* ec^
nods
<whitequark>
however, when we talk about a system that *can* instrument your running code, everything changes
<ec^>
but don't you need to Know Things About Structure to *learn* about the code?
<ec^>
if that makes sense?
<whitequark>
if something--anything at all--stays the same in the paws-representation, a JIT compiler can quite certainly take advantage of it.
<creationix>
at some level something is running native code right?
<ec^>
phrased very badly, but, I'm speaking abstractly here: my internal understanding of a lot of dynamic-analysis stuff is ‘start with a set of basic assumptions, and then accrue further systematic understanding at runtime by applying knowlege-you-gain to initial-framework.’
<whitequark>
ec^: if you look at hotspot, you will notice that the JVM *throws away* the type information that it has
<whitequark>
because it does not really need it to optimize well
<ec^>
hm!
<whitequark>
(the real situation is quite a bit more complex, but this is a good enough approximation)
<whitequark>
I mean
<whitequark>
why do you think a VM for a rigid, statically typed language runs all your dynamic shit so well?
<whitequark>
and it runs Ruby nearly as well as it runs Java. makes u think huh?
<whitequark>
ec^: fun trivia: with Truffle, JRuby can interoperate with the C extensions written for Ruby MRI because it uses a C interpreter
<whitequark>
yes, it literally interprets the C AST. the HotSpot optimizer then looks at the C interpreter, written in Java, and optimizes it well enough that the actual /C extension code/ runs somewhere within an order of magnitude of compiled C code
<whitequark>
how's that for inferring structure?
* creationix
wonders why C interpreters aren't more popular
<creationix>
wait, it can optimize an interpreter to near native speed?
<whitequark>
that works because it optimizes the code of the C interpreter (in Java) together with the data it operates on (the C AST). it mashes all this shit together and gets rid of all redundancy in it
<whitequark>
creationix: yep
<creationix>
I thought that was impossible for interpreters because of their structure
<whitequark>
creationix: basically it inlines the eval function for every node and constant-folds the node into it
<whitequark>
repeat until fast enough
<whitequark>
this is the idea behind Truffle
<creationix>
oh, I see, turns the interpreter into a jit
<ec^>
11:42 PM <+whitequark> creationix: basically it inlines the eval function for every node and constant-folds the node into it
<creationix>
a simple one, but still
<whitequark>
creationix: yep! and it also automagically infers various deoptimization points
<whitequark>
but for that go read the Truffle paper, it's ok
<creationix>
luajit isn't that smart I assume
<whitequark>
I don't remember that part well enough to explain anyway
<whitequark>
I am not qualified to make the comparison on this workload
<ec^>
so I'm vee confused, let me try a little bit more concrete example:
<whitequark>
I would assume it isn't
<ec^>
forgetting the JVM for a moment, simply because I very slightly know JavaScript-world things better;
<whitequark>
because I don't think it can infer deopt points from data that you say doesn't change much
<ec^>
if I write a new object system in user-space in JavaScript, how can something like V8 ever *infer* enough information about that at runtime to optimize for the particulars of that object-system?
<creationix>
v8 isn't really tracing jit I don't think
<ec^>
like ugh idk random example, let's say I'm creating objects with { "type": "blah" } and somewhere have { "typedeffor": "blah", "inheritsfrom": "widget" }
<creationix>
it uses inline caches and hidden classes and stuff like that mostly
<ec^>
how can it *ever* preform the sorts of useful optimizations that I understand from type-inferring JIT stuff?
<whitequark>
ec^: v8, specifically, will not
<whitequark>
it is not built to do that.
<ec^>
(not saying V8 *can/does* do this. I'm just trying to figure what layer gets added on to JITs-as-I-understand-them, that allows for optimizations without context)
<creationix>
so one example I know of, where luajit really shined, was when andy implemented packet-filter language in lua (as a "transpiler")
<ec^>
creationix: I don't know much about luajit. what is? as a project?
<creationix>
he basically compiled the packet-filter query to lua which he then handed to luajit to munch on while parsing packet capture data
<whitequark>
it's uh, jit for lua :D
<creationix>
it was able to read at full gigabit
<creationix>
or not gigabit, but whatever was the bandwidth of the ram
<creationix>
since it could optimize the jitted code for the particular data set being queried and the exact query input by the user
<creationix>
AOT could never consider that kind of specific optimization.
<ec^>
I do intuit some of this now.
<ec^>
Which is exciting, for two completely seperate reasons:
<ec^>
1. it might mean paws won't be *literally* the slowest thing ever; i.e., within a *couple* orders-of-magnitude of existing dynamic languages,
<ec^>
and 2. it might mean I get a real excuse to learn about compilation and optimization in the distant future :D
<whitequark>
there's a delightful paper that i rarely get a chance to quote, but it's actually very relevant to the current discussion
<ec^>
11:50 PM <+whitequark> there's a delightful paper that i rarely get a chance to quote, but it's actually very relevant to the current discussion
<whitequark>
I've read it a long time ago so I won't say how they relate to each other exactly,
<whitequark>
but fairly close.
* ec^
nods
<ec^>
like, you hating the evaluation model aside, this is all *really* exciting for my work, because like I *am* working on super-abstracted ‘abstract machines’ in the sense of the paper (iirc the abstract?)
<ec^>
take a big graph of instructions,
<ec^>
apply it to a big graph of data
<ec^>
that's like. the whole thing.
<whitequark>
yes
<ec^>
with some semantics for how to ‘apply’ concurrently and how to protect data
<ec^>
sshrug
<whitequark>
it is remarkably similar
<whitequark>
oh
<ec^>
I love lisp
<ec^>
want to work with more lisp
<whitequark>
oh yes I remember why I hated it so much
<creationix>
so paws is a constraint solver?
<whitequark>
yeah fuck paws
<ec^>
need an excuse ;_;
<ec^>
lol! whitequark
<purr>
lollllllll
<whitequark>
fuck it so hard
* ec^
rolls over
<ec^>
going to make me cry laughing in public omg
* ec^
breathes
<ec^>
creationix: idk maybe super-distantly? but not really, no.
<whitequark>
no, it's the most imperative thing in the universe
<whitequark>
except it obtusely pretends that it isn't
<ec^>
yep lol
<ec^>
wait, it pretends it isn't? how
* whitequark
is in full-on rage-mode now
<ec^>
that's literally the design goal
<ec^>
ugh are we doing this, why ;_;
<whitequark>
i'm not even going to talk about it, i'll just go wank at some silicon i just decapped
<whitequark>
ugh
<ec^>
whitequark: photos :3
<ec^>
uh
* whitequark
is roiling
<ec^>
of the silicon
<whitequark>
yeah sure
<ec^>
jesus
<whitequark>
lemme look at it at least
<whitequark>
er
<ec^>
whitequark: *why*, omg, wtf
<whitequark>
you have a dirty mind
<ec^>
later. later. wow.
<whitequark>
ec^: because i remembered why i hate paws so much
<whitequark>
and now i hate it all over.
<whitequark>
i mean
<whitequark>
all over again?
<whitequark>
freshly hate.
<ec^>
jesus christ
<ec^>
well remind me sometime
<ec^>
or summarize it now in one line? o_O
<whitequark>
the last time i did that i quit your channel for months. also you can probably dig it up in logs
<whitequark>
obviously you disagree anyway
<whitequark>
what's the point
<ec^>
er
<whitequark>
it's not like you're going to act on the feedback, besides endlessly arguing about it
<ec^>
because you know a fuckton more than me, and me differentiating it between ‘philosophical differences’ and ‘a logical reason my work is worthless’ is pretty important? for probably-obbious reasons? :P
<ec^>
okay.
<ec^>
sshrug
<whitequark>
i already explained whatever it was to you
<ec^>
speak later, just discovered that my battery is about to die UGH.
<whitequark>
like five times over
<whitequark>
in different ways
<whitequark>
it didn't work
<ec^>
whitequark: I have a terrible memory, I'll find logs somewhere
<whitequark>
no reason it's going to work now
<ec^>
lol ok
<purr>
lolllllll
<whitequark>
just go to irclog.whitequark.org/elliottcable
<whitequark>
it has search
<ec^>
I mean, I have no idea what to search for, but I'm sure I'll dig it up
<whitequark>
'nick:whitequark paws' iirc works
<ec^>
battery dying, am out. whitequark: decap well. lol.
<whitequark>
k
<whitequark>
creationix: see, this is why i told you to run
<whitequark>
you'll be like that in no time
<whitequark>
100%
<glowcoil>
this embedded systems class is
<glowcoil>
scaring me but i'm really excited for it
<glowcoil>
first assignment is to lay out a lil pcb to be actually printed
<glowcoil>
whitequark: is it ok if i ask you dumb ee/microcontroller questions
<glowcoil>
ec^: how is homework
<ec^>
glowcoil: bad / not happening / frustrating
<ec^>
I'm so fucking worthless at self-motivation L
<ec^>
(he says at 2:40 AM, when he desperately needs to be asleep)
* meowrobot
high-fives ec^
<meowrobot>
self-motivation is something i've been working on so much lately
<ec^>
meowrobot: lol hi fran
<purr>
LOL
<meowrobot>
i think i've risen a few micrometers tho
<ec^>
how does work on though
<ec^>
is like ultimate catch-22
<ec^>
worst
<meowrobot>
i think me having a half-broken laptop helps
<meowrobot>
"if you don't progress soon you're gonna be stuck not being able to do anything but type text hahahaha"
<meowrobot>
(or maybe have said laptop just die soon)
nuck has quit [Ping timeout: 272 seconds]
eligrey has quit [Quit: Leaving]
nuck has joined #elliottcable
nuck is now known as Guest7611
Sorella has joined #elliottcable
<ja>
oh, look at that! I made it into the log file! now I feel immortalized!
<ja>
hi
<purr>
ja: hi!
<ja>
whitequark: is that your own custom log viewer? it's awesome that it live updates
Rurik has joined #elliottcable
Rurik has quit [Changing host]
Rurik has joined #elliottcable
|jemc| has joined #elliottcable
alexgordon has joined #elliottcable
Rurik has quit [Ping timeout: 250 seconds]
Rurik has joined #elliottcable
Rurik has quit [Changing host]
Rurik has joined #elliottcable
headius has joined #elliottcable
<ec^>
ja: yeah, I'm a big fan of his irclog clone
<ec^>
no, it's based off of, uhhhh,
<ec^>
irclogger.com
<ec^>
which is also in here, lol.
<purr>
lolol
* ec^
waves at irclogger_com
<ec^>
o7 headius
<krainboltgreene>
Yo.
<ec^>
hopping in the shower, but I'll read when I get out
<krainboltgreene>
Specifically I'm talking about Opal.rb's Elia
<krainboltgreene>
I try not to talk about him or meh directly on twitter because invariably Coraline receives harassment.
<Rurik>
hi ec^
<ec^>
Rurik: hi!
<ec^>
krainboltgreene: I wish I knew coraline better. I've seen them speak once at a meetup here; they were funny af :P
<ec^>
morning alexgordon
<ec^>
or wtfever time it is there.
<ec^>
headius: you're The JRuby Guy? we should talk JVM sometime. I'm apparently incidentally VM-shopping. (lol brixen)
<ec^>
I've seen some Unicode-rendering bugs in my time, but never a fatal one
<headius2>
I assume it's the combiners
<ec^>
probably the non-BMP stuff? the Den of Determined Damsels is selected out of the higher-plane mathematics alternatives.
<headius2>
Possibly but seems more likely to be the combining characters, since they cause some tricky rendering challenges
<ec^>
really? the zalgo crap is pretty common, I'm pretty sure most *IRC clients* of all things would have handled that by now
<ec^>
anyway, on mobile, so not too much detail,
<headius2>
the non-BMP stuff I'd expect to just render as boxes
<ec^>
but I think while I agree with krainboltgreene in the specifics, I don't in the larger execution.
<headius2>
I obviously don't agree with elia's politics but this is a tough call for me
<ec^>
it sickens me that we persist fuckery onwards and onwards by discussing it; both to the detriment of the original fucker, *and* to everyone else, including the victims of that fuckery.
<ec^>
I think rvm, etc have a pretty simple call: is this person toxic *to our community*? Yes? Then eject them.
<headius2>
right, that's a much easier call
<ec^>
but I'm strongly *against* propagating that decision through the entire goddamn sphere.
<headius2>
but blacklisting across the board seems really hard to swallow
<ec^>
the idea that Ruby As A Whole should reject this person and never collaborate with them on everything … that's pretty. fucked. up.
<headius2>
right
<ec^>
like I totally get the impulse.
<headius2>
in this case he pretty much just added some fluff to the discussion...did not really influence anything
<ec^>
realistically? it's not something that people want to do *for the victims*. You're doing that to make your life as an *administrator* easier: simply to avoid future bad press, and future *hard decisions* if a ‘known bad actor’ (hate that phrase) becomes deeply involved in the community before Acting Bad again.
<ec^>
like, that's the same impulse that makes project maintainers want to disallow e-mail reporting of bugs, or to immediately close any not-perfectly-formatted bug report, or … so on and so forth
<ec^>
these are literally *what your job is* as a maintainer. I know someone might not think it sounds fun to carefully watch This Person who has a bad history, as they contribute to their project; and maybe they just want to get back to writing code, but … like, if you're taking the mantle of leadership, it's literally your job to maintain an equitable, but
<ec^>
safe, space.
<ec^>
idk </mini-rant>
<headius2>
ec^: right, like should I be checking every bug reporter's background and blacklisting them if they've done something bad on the internet?
<headius2>
or every PR?
<headius2>
we get dozens of bugs/PRs/comments every day...maybe hundreds
<ec^>
I'm not a member of a marginalized group, so while I can say your logic mirrors mine, I can't really give you validation on your choices;
<ec^>
I *can* say it heartens me, though, when I see a project's administration deal swiftly and unequivocally with troublemakers / toxic individuals, though.
<ec^>
another way to phrase that; while I wouldn't expect you to have a system in place to check the *background* of every poster; I *would* expect you to have a system in place to check the **current activities thereof**.
<ec^>
with any sense, probably with ratio to how strongly they represent your project: GitHub collaborators shouldn't be permitted to write abusive things in Issues … project managers with JRuby in their Twitter bio probably shouldn't be left unchallenged if they're spewing hatred on Twitter. you on my page, here?
<headius2>
aaaand of course colloquy.info crashes when I try to file the bug
<headius2>
and I did not put the topic in the bug
<headius2>
le sigh
<headius2>
ec^: yes, totally agree there
<ec^>
that's a beautiful comedy of error.
<headius2>
well, given that the issue in question is closed and elia's contribution didn't change anything one way or another, I'm going to consider this moot
<headius2>
not that it's my project to run, of course
<ec^>
I'm still not sure of the provenance of this topic
<ec^>
Elia? I remember ancient Opal stuff, but not sure what happened this time krainboltgreene
<headius2>
I don't know if anything has happened since then
<headius2>
ok, dropping off... ec^ feel free to ping me any time if you want to chat re: JRuby
<ec^>
headius2: o7
<ec^>
(=
Rurik has quit [Ping timeout: 250 seconds]
Rurik has joined #elliottcable
Rurik has quit [Ping timeout: 264 seconds]
Rurik has joined #elliottcable
brr has quit [Ping timeout: 255 seconds]
brr has joined #elliottcable
<whitequark>
glowcoil: yeah sure you can ask
<whitequark>
ja: yeah, my own, wrote it several eons ago
<whitequark>
ec^: it's not really an irclogger /clone/ as much as it is vaguely based on its visual style
<whitequark>
there's no code shared at all, for instance
<ec^>
oh, really? That surprises me. I thought you'd use their source code as a base.
<ec^>
I almost can't believe that you yak shaved your self an entire IRC logger instance
<ec^>
that seems very not you
<ja>
whitequark: sweet! is it Ruby?
<ec^>
I am Siri thing by the way, if there are any weird grammar those
<ja>
løl
Rurik has quit [Quit: Leaving]
<whitequark>
ec^: yeah ruby
<whitequark>
er
<whitequark>
ja: ^
<whitequark>
ec^: i do LOTS of yak shaving.
<whitequark>
ec^: remember that IC I decapped yesterday? that was yak shaving for an international move i have in five days
<ec^>
whitequark: wait what how.
<whitequark>
ec^: uhhhhhh.
<whitequark>
so I have a bottle of conc nitric that I don't know how to easily get in HK
<whitequark>
and I happen to have a bunch of ICs that ought to be decapped, and I happen right now to be equipped...
<whitequark>
you can see why it took over a month already, right
<pikajude>
ice climbers are a gimmick character whitequark
<whitequark>
wat&
<whitequark>
?
<pikajude>
wrong channel
<krainboltgreene>
headius2: Lol re your errors.
<purr>
lolllllll
<krainboltgreene>
lol
<krainboltgreene>
Dang.
<krainboltgreene>
(reading backscroll)
<krainboltgreene>
headius2: "don't agree with elia's politics" he thinks trans gender people are delusional and that the Italian government is sex changing kids secretly.
<krainboltgreene>
ec^: I disagree. It's pretty clear that not only is he extremely toxic and damaging, but he also carries around KIA and GG with him.
<krainboltgreene>
What's frustrating, and inspired the tweet, is that he's basically allowed to exist and contribute without much pushback. It shows other assholes they can basically be *the worst* and still continue to be a part of our community.
<krainboltgreene>
I'm a cis guy, so I can only imagine how it must feel basically seeing this dude and his cohort roll into important Ruby discussions.
<pikajude>
but meritocracy, amirite?
<krainboltgreene>
^
<ljharb>
the ironic part is that meritocracy can only exist when everyone has an equal shot. so those who believe in "meritocracy" should be the strongest advocates for safe spaces and fairness and whatnot.
<ljharb>
which shows that they really don't want meritocracy, they really want whatever benefited them to stay status quo
<pikajude>
the thing about meritocracies is that they always contain only white dudes for some reason
<ljharb>
it's mystifying
<pikajude>
either white men are genetically superior to everyone else, or they aren't *actually* meritocracies
<pikajude>
still not sure which
<ljharb>
yeah that's a puzzler
<pikajude>
whenever you bring that up people get confused, too
<pikajude>
i had an argument on reddit about how 97% of fortune 500 CEOs are white
<pikajude>
and ended up asking the guy "so, are you saying that white people are just inherently better CEOs than black people are?"
<pikajude>
no answer
<pikajude>
because that's what people like to believe, but they don't really want to hear it because they know it makes them sound like a white supremacist
<ljharb>
"sound like"
<pikajude>
right
<pikajude>
if you sound like a white supremacist, it's time to take a good long look at your policies
<krainboltgreene>
Three choices: MASSIVE coincidence, bias/racism, white people are better. Pick one.
<krainboltgreene>
No one really ever picks 1 or 3, but refuses to pick 2.
<alexgordon>
ceos aren't generally "white guys" but a small subset of rich people whose parents can afford to give them good educations
<pikajude>
ahh i see
<alexgordon>
I would never get to be a ceo
<alexgordon>
even though I am white
<pikajude>
so you wouldn't say it's suspect that all the rich people whose parents gave them a good education are white
<alexgordon>
it may well be suspect, but it's not _important_ because they are a very small subset of people
<pikajude>
that's interesting
<alexgordon>
most people do not become CEOs
<ljharb>
it's still relevant
<pikajude>
i'd say based on the relative amount of power CEOs have in society (see: lobbying and creating jobs) it's pretty important
<ljharb>
because if you look at the population of "rich parents who can give their kids a good education"…
<alexgordon>
lol creating jobs
<purr>
lololololol
<pikajude>
creating jobs as in owning a company that hires people
<pikajude>
but lobbying is the big one tbh
<alexgordon>
ceos don't own companies though, shareholders do
<ljharb>
running, then.
<ljharb>
ownership is irrelevant wrt hiring, it's who makes the operating decisions that matters.
<krainboltgreene>
"small subset of rich people whose parents can afford to give them good educations"
<krainboltgreene>
See: Systemic racism.
<ljharb>
^
<krainboltgreene>
AKA Option 2.
<pikajude>
that is a new angle though. the racial imbalance among CEOs (and, say, presidents) is unimportant because not all white people get to be CEOs. i've never heard that before
<jfhbrook>
that sounds unlikely
<krainboltgreene>
lol
<purr>
LOL
<jfhbrook>
in terms of being a viable argument
<krainboltgreene>
I sense major sarcasm.
<krainboltgreene>
;)
<alexgordon>
krainboltgreene: don't you think it's a distraction?
<krainboltgreene>
I don't understand the question.
<alexgordon>
surely it's more important to be worried about normal people
<krainboltgreene>
What the hell constitutes "normal people" exactly?
<alexgordon>
non-ceos
<krainboltgreene>
No, it's not more important.
<krainboltgreene>
Gender and racial biases and diversity imbalances affect us at all levels.
<alexgordon>
if a ceo runs a 1000 person company, is it more important to worry about whether the CEO is white or black, or about the wellbeing of the 1000 employees?
<krainboltgreene>
No. It's not important. It's imperative.
<ljharb>
alexgordon: the two are inextricably linked
<jfhbrook>
I mean
<ljharb>
read up on intersectionality
<krainboltgreene>
But then I'm not real good with "lets spend time on discussing what to spend time on so we can avoid talking about problems"
<ljharb>
everything affects everything else.
<jfhbrook>
I worry about the wellbeing of the 1000 employees
<jfhbrook>
but I think that a relatively diverse C-team will generally improve the wellbeing of said employees
<ljharb>
^
<jfhbrook>
I'm not a big enough expert on this subject to actually back up that claim
<ljharb>
and a non-diverse one often doesn't improve it, wrt specific categories
<jfhbrook>
but that's what my instinct says
<alexgordon>
I think we must have different values
<jfhbrook>
I mean given the choice between having a black CEO and giving the employees sustainable wages I'll obviously pick the latter
<ljharb>
alexgordon: what exactly do you think harms the wellbeing of the 1000 employees by picking a CEO that's not a white male?
<alexgordon>
ljharb: well it seems american workers have very few rights
<ljharb>
what rights do you have in mind?
<jfhbrook>
I don't think that's a scenario that actually happens much, if at all, in practice
<jfhbrook>
ljharb: right to form a union and collect fees, or get paid a living wage, reasonable vacation time, etc
<alexgordon>
ljharb: lack of mandatory leave, lack of protection from being fired, lack of power in the relationship...
<alexgordon>
I would not work in america
<ljharb>
um
<ljharb>
i can't speak to all of america but as a californian i have those rights
<jfhbrook>
that's california ljharb
|jemc| has left #elliottcable ["WeeChat 1.2"]
<ljharb>
certainly there's not enough things that grant protection from being fired, in CA, but especially in other states
<alexgordon>
well you don't get min 5 weeks of vacation time for sure
<ljharb>
true, i get unlimited
<jfhbrook>
many red states are, for instance, right-to-work states
<ljharb>
but that's not guaranteed :-p altho i think 2 weeks is
<jfhbrook>
california tends to have strong labor laws as compared to other states
<ljharb>
true
<alexgordon>
it just seems like yak shaving. OK so you change the distribution of capital at the top, to get more black people as CEOs, who hopefully won't be like white CEOs (because only white peole can be arseholes), and if all goes well, everybody gets a better life
<alexgordon>
why not just decide which rights are missing, and write them into law?
<ljharb>
because guess who makes the laws
<ljharb>
that should happen too, of course
<ljharb>
but all these changes have to happen at the same time because it takes a long time to effect societal change
<alexgordon>
so the essential problem is really that america doesn't have a functional democracy
<alexgordon>
good luck getting anything done then
<ljharb>
sure, altho i doubt anywhere really does.
<ljharb>
but also a "throw up your hands" attitude doesn't help anything either
<alexgordon>
depends what you mean by functional
<ljharb>
like it or not, america impacts the whole world
<ljharb>
so your life will be affected, and has been, by america's choices
<ljharb>
it's in everyone's best interests to help everyone.
<alexgordon>
uk has a functional democracy, in that most of the policies enacted are popular. of course my fellow countrymen (and women) are complete retards
<ljharb>
the US's laws are popular too
<ljharb>
it's just that the people are polarized.
<ljharb>
the measure of a "functional" government isn't how homogenous its people are.
<ljharb>
and the UK has tons of problems with equality for immigrants, as i understand it
<alexgordon>
nah actually the opposite
<alexgordon>
uk is a stickler for the rules
<alexgordon>
so the eu makes all these rules, and we follow them
<alexgordon>
then get really ANGRY about them
<alexgordon>
other countries just ignore the rules
<ljharb>
isn't there something about some UK party that's like fox news
<ljharb>
or is that EU stuff
<alexgordon>
ukip
<ljharb>
yeah that one
<alexgordon>
yes, they are like the trump party
<ljharb>
anyways i dunno much about the UK
<ljharb>
but i feel like every country has its problems
<alexgordon>
ukip support tends to come from areas which are 97% white though
<alexgordon>
or even 97% british
<alexgordon>
so it is more a fear of the unknown, rather than racism imo
<alexgordon>
in the past the racism was mainly directed towards eastern europeans, but now they have it in for syrians too
<ljharb>
whether the source of racism is hate or fear it's still racism
<alexgordon>
I mean, usually the source is the daily mail :P
eligrey has joined #elliottcable
<ec^>
alexgordon: ‘retards’ = nope.
<alexgordon>
they're not retards?
<ec^>
it's a word you can consider verboten in here nowadays
<ec^>
man it feels so much scarier saying things like that when I have my pants on
<ec^>
ugh I have so many responses to all of the above
<ec^>
but reallllllllllllllllllly don't want to type them out on iPhone
<alexgordon>
which term is more in vogue? my countrymen are mentally-disabled
<alexgordon>
they lack the proper cerebral faculties
<alexgordon>
they have a diminished capacity for thought
<ec^>
none of those things are true; and the problem here isn't with your word-choice (well, it is), but primarily with the underlying thought:
<ec^>
“I need something less-than-complimentary to say about <group's choices> … hm, what's a group of people who are universally worthless and terrible … oh! that's right! Mentally-disabled people!”
<ec^>
To fix (or more saliently, just get along in here, I guess; it's not my job to police your feelings, lol) this; you basically have to come up with a new group of terrible people … who aren't socially disadvantaged compared to you.
<purr>
LOL
<alexgordon>
I'm not trying to say they're terrible, I'm trying to say they're dumb
<ec^>
They're not. That's the point. What you actually mean is *you don't like their choices*, but literally by definition, any group system is going to persist of, on average, *average-intelligence people*.
<ec^>
Thus, you're obviously not referring to their intelligence (an absolute judgement); but rather their competence (a subjective, *value* judgement)
<ec^>
like, you get me?
<ec^>
anyway. I know you, you don't want to yak-shave over words. Simple: don't use ‘retarded’, period; and plz put minimal effort into not using ‘dumb’ or ‘crazy’ as value. ¯\_(ツ)_/¯
<ec^>
easy rules >= pedantry, I hope.
<alexgordon>
hmm, no they are definitely dumb
<alexgordon>
I have seen the polls
<ec^>
Plenty of Americans support goddamn Trump. Your countrymen, I do believe, cannot *possibly* be more foolish than that; but those people are *still* not retarded, crazy, *or* even simply ‘dumb.’
<ec^>
Susceptible to logical fallacy? Probably. Bigoted? Definitely.
whitequark has left #elliottcable [#elliottcable]
<ec^>
Closed-minded to the way they were raised; easily swayed by emotional arguments couched in their fears and privileges …
<ec^>
and there goes whitequark. sigh.
* ec^
wanders off instead of further arguing this
<alexgordon>
trump voters are definitely dumb, elliott
<alexgordon>
I don't think we will agree on this topic though
<pikajude>
do you all know if there's a tool like jq for XML
<glowcoil>
alexgordon: even with laws explicitly prohibiting hiring based on race, interviewers' decisions are demonstrably affected by race, as well as just the preexisting distribution of capital (including social capital, knowing the right people) is skewed in a racist direction
<alexgordon>
I think you're too late glowcoil, everybody is burnt out of this
<jfhbrook>
this is gonna be like the evil catthing from accelerando isn't it
<jfhbrook>
I never actually finished that book
|jemc| has joined #elliottcable
<ec^>
glowcoil: feel free to share your viewpoint. sshrug
<ec^>
glowcoil: get a dog! :D
<ec^>
jfhbrook: Accelerando bored me; but *everything else* by him is goddamn amazing
<ec^>
like literally every single sequenced set of 2+ words that comes out of his fingers, I love all of it *except* Accelerando.
<ec^>
>,>
<jfhbrook>
ec^: I loved like the first chapter of accelerando, or maybe the first quarter
<jfhbrook>
ec^: but maybe you can recommend one of these other books?
<ec^>
yeah, any *single section* is fine
<ec^>
my issue is basically with collecting these almost-disconnected stories about people together
<ec^>
it was just so goddamn jarring.
<ec^>
fuck calling it a novel and call it a collection of short-stories or novellas, and I'd be happy
<ec^>
except I still wouldn't be because he's obviously trying *so hard* to tie them all together, and it's just, ugh, I just hated the experience. I *did* finish it, but by the end, I had nearly decided to never read another Stross novel again >,>
<krainboltgreene>
> ljharb> true, i get unlimited
<krainboltgreene>
We get that here, but frankly I'm annoyed. All the studies I've seen say people tend to take less time off when given unlimited time off.
<krainboltgreene>
It puts a social barrier in front of a self-care exchange.
|jemc| has left #elliottcable ["WeeChat 1.2"]
<ec^>
I am genuinely. fucking. crippled. in school. by my inability to hand-write.
<ec^>
I hate how much the ability to ‘take notes’ is irrelevant to, like, literally the rest of my life: note-taking is like other people describe math: a complete waste of effort and focus, something that seems unassailably difficult and yet is essential to getting to the things that *are* relevant. |=
<ec^>
I absolutely love that the Spotify player that gets embedded into IRCcloud without my intervention *knows I'm listening to that already*, shows the progress-bar, and has a pause-button I can hit *right here in IRC*
<ec^>
IRC in a terminal is the past.
<pikajude>
is irccloud good ec
<ec^>
pikajude: I'm paying for like three accounts lol
<purr>
lol
<ec^>
yes, I love it
<pikajude>
oh, it's money
<ec^>
it's free, but it doesn't stay connected past three days without paying.
<pikajude>
lol
<ec^>
and they *claim* that someday, you'll only be able to connect to one network for free
<ec^>
so: bouncer, multiple networks are premium features.
<ec^>
anyway, it's fucking *excellent*.
<pikajude>
what is the purpose of it then
<ec^>
the devs are responsive, too.
<pikajude>
why not just make it paid
<pikajude>
also how much is it anyway
<ec^>
they basically did the mobile version of this page for me: http://ell.io/IRC
<ec^>
3$ a mo, i think?
<ec^>
oh, I'm grandfathered. It's $5/mo per member of my ‘team’ though. If I dumped the team, I'd still be grandfathered to $3/mo for just my own account.
<pikajude>
oh, $3 a month
<ec^>
the iOS app is excellent, the web-client is excellent,
<pikajude>
that's pretty decent
<ec^>
like yeah this is worth every goddamn cent :P
<ec^>
the three pinned tabs I use: getflow.com, irccloud.com, and gmail.com
<ec^>
and my school's terrible blackboard installation rn, but that's not by choice, lol
<ec^>
pinboard is also worth paying for, deeply love that …
<ec^>
I think that's all the web-services I am deeply attached to.
<krainboltgreene>
I'd pay for premium features.
<krainboltgreene>
Like extra premium
<ec^>
krainboltgreene: yeah, I *do* want a lot of things it doesn't have
<ec^>
they're responsive on some things, but they're also very clear when they're not interested.
<ec^>
lolol
<purr>
lolol
<ec^>
which is actually ideal so
<krainboltgreene>
I said I'd write an electron desktop app using their api and they were super happy but then messaged me and said they wanted to do it.
<krainboltgreene>
That was like 5 months ago.
<krainboltgreene>
Now I "own" slate.
<ec^>
krainboltgreene: slate? huh?
<ec^>
electron? huh?
<ec^>
wait, are we talking about irccloud, or
<ljharb>
krainboltgreene: in my experience that's illustrative. at this and the last company i worked at with unlimited, it was not a barrier to *anyone* taking time off.
<pikajude>
at least I do get to use Hasklig Light via userstyles
<krainboltgreene>
ec^: We're talking IRCCloud.
<krainboltgreene>
ec^: BTW, I'm fairly sure their entire ui uses flexbox, so you can order via flexbox if you feel like egetting dirty.
<ec^>
eh. maybe back when userscripts were a thing.
<pikajude>
ok, absolutely 0% productivity today
<pikajude>
that's for sure
<krainboltgreene>
Heh.
<krainboltgreene>
I've been playing with devtool
<krainboltgreene>
Which lets me use babel6 + electron to debug and profile my server side js.
<krainboltgreene>
Very very cool.
<gkatsev>
ec^: just because greasemonkey is dead and userscripts.org is dead doesn't mean userscripts are dead
<gkatsev>
krainboltgreene: devtool?
<ec^>
gkatsev: I am referring to the fact that there's not a single functioning userscript extension for safari anymore. Every single one, and there were like five, exhibits serious security holes
<ec^>
and all have large disclaimers advising against using them anymore.
<gkatsev>
safari's addon API has always been terrible...
<gkatsev>
looks like tampermonkey is working on safari