<pikajude>
the "jsonschema" node package is seriously fucking broken
<pikajude>
if there's one thing you can say about coffeescript, it's that it generates legitimate fucking truth comparison
<pikajude>
but in this stupid package its "required" check is literally "if(value)"
<pikajude>
so 0 is not a valid number
<pikajude>
and "" is not a valid string
<pikajude>
shoutout to languages that let you pass any old horseshit to `if'
<pikajude>
ec, how do you like me write-only stream
<pikajude>
my bandwidth is up
<gkatsev>
I think your mistake is 1) using jsonschema 2) using any project that was somehow involved with coffeescript (i.e., uses it)
<mkroman>
^ +1
<ec>
hi all
<ec>
gkatsev: ಠ_ಠ
<ec>
pikajude: if you are a write-only stream, how do you expect me to reply to that question?
<ec>
ooo ooo I know, Out Of Channel feedback loop!
<pikajude>
gkatsev: is jsonschema bad?
<pikajude>
ec: just use sudo
<pikajude>
man, everybody hates coffeescript
<ec>
gkatsev: miss you already
<pikajude>
and i totally sympathize with them
<ec>
pikajude: I think CoffeeScript is legitimately dead, unfortunately.
<ec>
well, not necessarily unfortunately.
<ec>
I *really* want to see babel-like solutions evolve more and better
<ec>
that could finally be a true replacement for what CoffeeScript *actually gave us*, despite all the h8ers
<gkatsev>
all the possible goodness of coffeescript was far shadowed by all the terribleness of it
<ljharb>
and most of the goodness of it is in ES6 anyways
<ljharb>
the stuff that's left that coffee users seem to want is like, implicit returns (in braceless arrows, but otherwise nope_octopus.gif); sig whitespace (nope); `?.` (sadly, probably going to arrive in some form within the next few years); omitting all the tokens (nope_octopus.gif + oprah_bees.gif)… what am i missing
<ec>
implicit returns is the biggest one; significant whitespace is nearly as important
<gkatsev>
the more I dealt with python, the more I don't like significant whitespace
<ec>
ugh, Python does it terribly
<ec>
I hate python
<ec>
CoffeeScript is the *best* implementation of sig whitespace, that's the sad thing
<ec>
and everybody hates it.
<ec>
most of the haters haven't even *tried* it; and most of the remainder only ‘tried’ it when forced to by contributing briefly to a project.
<gkatsev>
because it's a terrible idea :P
<ec>
I'm terrified that CoffeeScript's terrible reputation is going to contribute more to the death of sig-whitespace as an avenue of language design than any of the other, actually terrible, languages that use it ಠ_ಠ
<ljharb>
ec: if coffeescript had started out as just JS + significant whitespace, it would have been much better received, and CS could still have iterated on that.
* ec
nods
<ljharb>
but it started with way too many things at once, that were way too un-idiomatic-JS, and some of them sucked
<ec>
agreed.
<ec>
s/some/many/
<ec>
it improved over time, though
<ljharb>
fair
<ec>
unfortunately, some of peoples' *favourite* things were some of the worst ones.
<ec>
shadowing was considered as a feature for a good while before people started to realize it was really harmful to restrict developers like that
<ec>
the *horrible* things it does to try to hide JavaScript's type system flaws / nullification flaws are just, horrific
<ljharb>
i agree
<ec>
not in and of themselves, but in the fact that trying to *imperfectly* hide those flaws is 10x worse than just dealing with them up-front in your code
<ljharb>
right
<ec>
</rant>
<ljharb>
i also really don't like the imposition of the assumption of classical inheritance in a language that lacks it
<ljharb>
it's subtle but it infects both coffeescript and backbone and it affects the patterns people make with them
<ec>
I think I disagree with you about ?.-and-friends coming to ES2017 being a bad thing, though
<ljharb>
probably so
<ec>
if *the TC* does it, I think it'll be all good and fine
<ljharb>
yeah, it will.
<ljharb>
i don't like it simply because i think a) deeply digging into an object structure b) that you don't know for a fact what the structure is, are bad things
<ec>
because they have 1. the power to make related changes to make it fit in, and 2. we have a long-standing history of them *not* trying to messily hide away the bad parts
<ljharb>
right
<ec>
they do their best to mitigate them, but still leave them out there to be dealt with when that's the best they can do
<ljharb>
fwiw, i'm on the committee, so i'll keep you posted :-p
<ec>
lmao
<ec>
hey I've been writing javascript for years and I basically have no idea how it's run / designed
<ljharb>
i've been on the committee for a year and i only kind of do
<ec>
I know there's a dude who designed it that people hate now for a tweet from centuries ago who actually seems pretty cool, but he seems to have little to do with it nowadays,
<ec>
and that there's something called TC39
<ljharb>
the dude is brendan eich, he's on the committee for life and is present at every meeting, and is very involved
<alexgordon>
oh look, activity
<ljharb>
people hate him now for a political donation he made to a shitty cause in 2008, but it didn't blow up until he was made CEO of mozilla last year, and then he stepped down, and then the brouhaha died down.
<ljharb>
and TC39 is "technical committee 39" which is part of ECMA, the standards body that owns the JS spec
<ljharb>
(and JSON and Dart and many others, ftr)
<ljharb>
TC39 primarily deals with JS.
<ljharb>
and there's a bunch of companies that pay to be ECMA members which gives them the right to send delegates to meetings
<alexgordon>
ljharb: I love coffeescript, I'm using it over python now
<ljharb>
including all the browsers, and intel/netflix/adobe, and recently thanks to me, twitter and airbnb
<alexgordon>
I don't get the point of es6
<ljharb>
alexgordon: happy you're happy, but a) gross and b) it's dead in the community so it's super outdated to still be using it.
<ljharb>
lol, the "point" of it?
<ljharb>
it's new additions to the language.
<alexgordon>
if you're going to use a preprocessor, why not use coffeescript?
<ljharb>
you don't have to use a preprocessor
<alexgordon>
yeah you do
<ljharb>
not if you're using node
<ljharb>
only if you're using language features that aren't supported by engines you target.
<ljharb>
eventually you can drop the transpiler.
<ljharb>
with coffeescript you never could
<alexgordon>
well that's most of the time for me
<ljharb>
also coffeescript doesn't have an actual spec governed by a standards body.
<alexgordon>
I'll be retired before IE supports es6
<ljharb>
actually Edge supports the most ES6 out of anyone.
<ljharb>
and IE 11 Technical Preview.
<ljharb>
more than chrome.
<ljharb>
the IE hate is also super outdated, microsoft is kicking ass these days.
<ljharb>
it's tough to shed the PTSD tho, i know.
<gkatsev>
Edge is pretty cool
<gkatsev>
and latest IE11 isn't bad
* gkatsev
heads home
<alexgordon>
ljharb: lol edge, I'm still trying to figure out if I should drop support for IE8
<ljharb>
ok fair
<alexgordon>
(the answer is yes)
<ljharb>
but in, say, 5 years? you will be able to drop babel for ES6 usage.
<ljharb>
people update browsers faster than ever before.
<ljharb>
maybe more than 5. but still, the point is valid.
<alexgordon>
maybe MAYBE once everybody is using autoupgrade
<alexgordon>
things will be better
<ec>
<alexgordon> I'll be retired before IE supports es6
<alexgordon>
but for now, still got to support IE9 at least
<alexgordon>
ljharb: anyway, even if I could use es6 everywhere, I still wouldn't, because coffeescript is better
<ec>
lol I'm still booting up IE6 VMs to test things
<alexgordon>
coffeescript has list comprehensions
<ec>
ES6? I'm lucky if I get to use getters/settters ;_;
<alexgordon>
that's in es7 iirc
<ec>
I don't use comprehensions *at all*
<ec>
I absolutely don't understand them
<ljharb>
alexgordon: nope, comprehensions are *never* coming to JS. they're dead.
<alexgordon>
:(
<ec>
and I *absolutely* don't understand why we need *an element of fucking syntax* for .map
<ec>
or whatever they're supposed to do
<ljharb>
and "better" isn't a thing i will ever agree with about CS but we don't have to debate that now
<alexgordon>
can't survive without comprehensions
<ec>
yeah, even *I* wouldn't say CS ≥ native ES6
<ljharb>
ec: see, we can agree :-p
<alexgordon>
ljharb: well it has the features that expect, and js doesn't yet (or ever apparently)
<ec>
the only issue is whether ES6-transpiled > CS
<ljharb>
then adjust your expectations
<ec>
and I'm not convinced that's true.
<ec>
*especially* if you're talking about re-writing a large codebase for that reason.
<alexgordon>
ljharb: orrrr use coffeescript
<alexgordon>
ec: (x for x in y if f(x))
<ljharb>
alexgordon: a quasi-language with inherent flaws by an author who is incredibly user-hostile, isolating yourself from 99% of the JS community
<ec>
ljharb: I know you're new here, but alexgordon is a proven embittered language-troll with a long track-record of Not Changing His Mind ;)
<ljharb>
haha
<alexgordon>
ljharb: well that last bit is a good thing ;)
<ec>
it's about 20% of why we love him
<ec>
the other 80% is definitely his fiery red hair
<ljharb>
alexgordon: not if you want to hire people, maintain your code, open source it…
<alexgordon>
ec: I HAVE BROWN HAIR GODDAMMIT
<ljharb>
coffeescript implicitly coerced it to red, sorry
<ec>
red
<alexgordon>
ljharb: man, if they can't figure out coffeescript I don't want them
<ljharb>
haha
<alexgordon>
takes a day
<ec>
he makes a good point though
<alexgordon>
if you know JS
<ec>
that's the *biggest* deal with coffeescript
<ljharb>
there it is
<ljharb>
if you have to know JS, *why would you want to add CS on top of it*
<alexgordon>
...
<ec>
I literally do not care what anybody says, I've *never* heard an argument that even begins to sound plausible,
<alexgordon>
I just said, because it has the features I expect
<ec>
CoffeeScript is 99.9999% easier for *true beginners* to read than JavaScript.
<ec>
even full-ES6 JavaScript.
<ljharb>
ec: i highly disagree
<ljharb>
but obv that's very subjective.
<alexgordon>
it's more reliable, because it doesn't have ==, or JS's weird idea of truthiness, or implicit globals...
<ec>
Like, the ‘CS isolates you from 99% of JavaScripters’ argument is such bullshit; because *JavaScript* isolates you from 99% of programmers
<ec>
sure, CS does a mediocre job of hiding away the *real* messes
<ljharb>
alexgordon: you can add that with a linter tho, which you should be using anyways.
<ec>
but those messes bite in, again with the 99's, only 0.009% of situations
<alexgordon>
ljharb: I guess you could call it loss aversion
<ljharb>
ec: that's not really true (the 99% of programmers)
<ec>
for 99% of patches, CoffeeScript makes programming super-accessible
<alexgordon>
ljharb: if you haven't gotten used to a programming language that works correctly, it might seem like no big deal
<ec>
and I don't mean the writing, I mean the requisite reading.
<ljharb>
ec: most people i've ever worked with find coffeescript entirely unreadable, including me.
<ljharb>
i can figure it out, but that's not the same as "readable"
<ec>
a total beginner can come to a CoffeeScript project (as long as the developers involved are working towards this goal and contributing to simple, readable, spelunkable code), and start making pull requests
<ljharb>
alexgordon: coffeescript doesn't "work correctly". it just eliminates specific flaws that are in JS - while adding new ones.
<alexgordon>
ljharb: but coming from python it is just obscene that JS is so fucked up
<ec>
ljharb: yeah, the 99's everywhere are a joke
<alexgordon>
ljharb: ? what flaws
<ec>
I was making fun of you for using it in the first place :P
<alexgordon>
the implicit return is a flaw, I grant you
<ljharb>
alexgordon: you can't shadow variables, for one point
<ec>
ljharb: yes.
<ljharb>
ec: i was being serious tho :-p
<ec>
ljharb: you're not a beginner.
<ljharb>
very true
<ec>
that's literally the single thing I hate the most about programming, and programmers everywhere:
<alexgordon>
ljharb: can't you with do ->
<ljharb>
alexgordon: even python 3 has "local"
<ec>
every person building programming languages, is convinced what is easy for a beginner, is what is easy *for them*.
<pikajude>
holy crap
<pikajude>
i literally just said the word "coffeescript"
<ljharb>
alexgordon: making another iife/block is not shadowing :-) that's just a hack.
<pikajude>
what's wrong with you people
<alexgordon>
ljharb: wait a second, you can't shadow variables in JS either
<ec>
pikajude: blame ljharb for bringing new opinions to this channel
<ljharb>
ec: i also work with lots of newcomers to programming. and my experience has *not* been that coffeescript is easier ¯\_(ツ)_/¯
<ljharb>
alexgordon: yes you can?
<ec>
we're much better at being stale and staid in our opinions in here
<alexgordon>
not with var
<ljharb>
alexgordon: `var Array = 'not an array'`
<pikajude>
coffeescript isn't easier, per se
<ljharb>
yes, with var.
<pikajude>
but it's much more powerful
<ec>
pretty sure most everybody in this room hasn't changed an opinion since 2011.
<pikajude>
and by powerful i mean
<pikajude>
it's much more terse
<alexgordon>
ljharb: oh I thought you meant lexical scoping
<pikajude>
it's not more powerful
<pikajude>
it's just a PP layer
<pikajude>
hi alexgordon
<alexgordon>
sup pikajude
<ec>
hi alexgordon
<ljharb>
alexgordon: you mean block scoping? sure, but that's separate. imo needing block scoping is a code smell, and it means your function needs to be split up. i never use loops either :-p
<ec>
hi pikajude
<ec>
hi purr
<ljharb>
alexgordon: in ES6 i use only let/const, but it's only relying on block scoping when using "var" instead would change the semantics
<alexgordon>
yeah well I dunno, python doesn't have it either
<alexgordon>
it annoys me but what can you do
<ec>
hey ljharb, write a paws
<alexgordon>
ljharb: anyway if you think coffeescript is dead, try haskell. I've been waiting 5 years for them to fix having two record types with the same field name... no progress yet
<alexgordon>
(5 years since I started using it, the issue is like 20 years old)
<alexgordon>
and I lived through the Great C++ Drought of 1998 to 2011
<alexgordon>
coffeescript only seems dead because js programmers are so fucking hyper
<ljharb>
ec: lol wat?
<ljharb>
alexgordon: you can compile haskell to js if you want :-p
<ec>
ljharb: write a paws btw
<ljharb>
i think i love the concepts in haskell, but the type notation imo is insanely obtuse
<ljharb>
what is a paws
<ec>
wait wtf
<ec>
where is purr
<ec>
alexgordon: DID YOU KILL PURR
<ec>
GODDAMNIT
<pikajude>
heh
<pikajude>
two record types with the same field
<alexgordon>
ec: I didn't do anything *gulp*
<alexgordon>
coffeescript added support for generators just this year
<ec>
oh linode shut down
purr has joined #elliottcable
* ec
hugs purr tight
<ec>
you're back!
<ec>
I missed you so much
* purr
rr
<pikajude>
good old linode
<ec>
ljharb: oh *that's* why you were in here
<ec>
that's right, we were talking about purr
<ljharb>
ec: btw you should remove the #node.js autojoin if you're going to leave the trigger as ">>"
<ljharb>
lol yeah i think that's the original reason
<purr>
lol
<ec>
yah yah, I remember
<ec>
I'll do so since I'm connected right now
<ljharb>
cool
<ec>
purr is inappropriate for #Node.js anyway ¯\_(ツ)_/¯
<ljharb>
either way's cool, i don't mind purr in there but getting duplicate responses is lame
<ljharb>
yeah true
<ec>
I like the *idea* of our little evil bot being the primary bot of a big change,
<ec>
channel*
<ec>
but realistically lol
<alexgordon>
ljharb: oh you are from #node.js, that explains things
<ec>
he's offensive as fuck.
<ljharb>
alexgordon: lol whats that supposed to me
<ljharb>
an
<ec>
there's some guards and shit
<ec>
but they don't apply to half the random shit added