« first day (1909 days earlier)      last day (3229 days later) » 

22:00
@Quill try jQuery ad here
@Optimizer Uhhh because C++ is strict typed and you can't ever do something as inane as [] + ![]?
@quartata yeah, but still 'C' + 1 == 'D'
and get "false" as a answer. ;P
@Optimizer that actually makes sense though
@Optimizer Try it with "C" + 1
'C' is a char.
"C" is a char[].
I know
22:01
That makes perfect sense.
chars are numbers not strings.
C doesn't have a character type.
all I am saying is that everyone has flaws
'C' + 1 == 'D' works in most if not all languages that distinguish between chars and strings
It's called char, but it's just 8-bit integers.
Is it not 16-bit?
I have no idea.
22:01
@quartata No.
@quartata Nope
you're literally incrementing ascii integers, of course it would work
@quartata char is 8 bits on all sane systems
@Dennis Oh
because typed variables are better
22:02
@Optimizer No.
Weak typing is fine
when it's done sanely
Technically, it's 1 byte, whatever that means.
use TypeScript then
@Dennis 1 octet
@Optimizer That's my point. People are turning to other alternatives.
isn't Dynamic typing JS?
@QPaysTaxes technically not always
22:02
But they're not gaining traction
@Optimizer don't - TypeScript is bad at interop. Use flowtype
@Optimizer The problem is JS's aggressive type coercion.
@quartata its still JS though.
@Optimizer Only because it has to be
You have no choice but to transpile to JS because it's the only thing browsers support
24
A: What platforms have something other than 8-bit char?

R Samuel KlatchkoMachines with 36-bit architectures have 9-bit bytes. According to Wikipedia, machines with 36-bit architectures include: Digital Equipment Corporation PDP-6/10 IBM 701/704/709/7090/7094 UNIVAC 1103/1103A/1105/1100/2200,

22:04
Yeah, {} + [] === 0 is basically what I'm talking about
so life would be better if all browsers ever supported more than one language?
like JS and C# and Python?
@Optimizer Yes.
oh please
@Optimizer What's so unreasonable about that??
@EasterlyIrk da
22:04
Let's stahp argueing and go play tf2
wtf who removed my caret?
I'd really rather not have to use a language that does {} + [] === 0
Or even worse [] + {} === {}
in other news you could stop complaining about type coercion and just use strict mode.
@EasterlyIrk nothing of value was lost
6
like every serious javascript developer does.
@Doorknob D:
22:05
> (function() {
... 'use strict'
... console.log({} + [] === 0)
... }())
false
CARETS ARE LIFE
@DanPantry That's an ES6 feature right?
@quartata standard committee for each one, X times development effort in browsers, no new browser ideas seeing the daylight just because not enough manpower to support all languages and eventually you are left with just Google Chrome.
@quartata No. Strict mode has been around since at least ES5.
@Optimizer I'm saying that if it could happen it would be great, not that it will.
22:06
Everyone knows that non-strict mode sucks.
I thought strict mode was like ES3 or 4
That's why everyone uses strict mode.
@DanPantry Some people don't apparently
Although that's good to know
@Doorknob stahp pls.
I'm still pissed that you even have to do something like (function() { ... })() for a new scope
22:07
@quartata I am saying that how do you know that it will be great? from what I see its going to end like what I just wrote.
@QPaysTaxes [Object object]
@EasterlyIrk ... I didn't touch anything
already browsers are finding it hard to cope up with just 1 standard
Who deleted my carets?
@Doorknob Sorry for accusing you.
@QPaysTaxes "[object Object]" because yes, it casts it to a string, even in strict mode. I concede that is bad.. but how often do you find yourself adding an object to an array? Do you have any real-life examples of that happening?
22:07
If you really don't like carets, just tell me?
@EasterlyIrk That would have been me. They add nothing to the conversation.
@QPaysTaxes ( ͡° ͜ʖ... okay, wait, why am I Lennying myself
9
Browsers are finding it hard to stick to a standard because they're all racing each other for dominance
22:08
@QPaysTaxes Did you only read the fact that I said the result and ignore the other 3/4s of what I said/asked?
@DanPantry What if you typo something and end up with the wrong variables?
The error occurs completely silently
@quartata That's why you use static analysis, or unit tests
@QPaysTaxes My apologies
@DanPantry You shouldn't have to. Every other language would warn you.
Infinitely less effort.
@quartata Every other language warns you because of their type system. JavaScript doesn't have that.
@Quill which is both good and bad, otherwise there's no motivation to develop. stagnant market. look at how much time java 8 took, and 9 will.
22:09
Ultimately, JavaScript's type system can be useful but gives you more rope to hang yourself with in that specific case.
@DanPantry False. Any dynamic typed language under the sun would warn you
Python, Ruby, etc...
Unless you change the definition for the + operator, you can't throw errors on type comparisons or concatenation. Even then, it'll still go to primitive
So.. has anyone got a realistic example of aggressive coercion in strict mode that isn't {} + [] :P
@QPaysTaxes oops pretend you didn't see that
\o/ my internet's back on!
22:10
and that can't be easily prevented by simply using Flowtype (which comes for free with Babel - you are using Babel ,right?) or common sense
@CᴏɴᴏʀO'Bʀɪᴇɴ \o/
HAI
wb, @CᴏɴᴏʀO'Bʀɪᴇɴ
Did you see my jolf message?
@DanPantry Hi!
@EasterlyIrk Yes!
No because why should I bother to use a language where I have to use a third-party tool just to make it work sanely?
The only reason why is because I have to.
22:10
@DanPantry so its equivalent of me using IntelliJ on normal JS?
/end point
@CᴏɴᴏʀO'Bʀɪᴇɴ would work on it now but rewriting essays.... Q_Q
@QPaysTaxes @quartata Well, I am a JavaScript developer and honestly I've never once had to deal with a type coercion issue. Obviously, anecdotes are anecdotes, but that's my 2c
22:11
welp, bai to actualy get work done
@QPaysTaxes Babel is not huge. And you're using Babel primarily for backwards compatibiltiy (not all browesrs support es6 yet) - you just get flowtype thrown in for free.
@quartata why don't you start writing in ASM? it's pure JS, just instead of "use strict", use "use asm"
If we want to understand the type system's internal logic a bit better: 418stat.us/2016/04/javascripts-type-system
@QPaysTaxes I have found it very difficult to use rigid type systems when you want to use union or intersection types, which are surprisingly quite common in js
for example, mixins are not so easy to do in a strong type system unless they are explicitly planned for (scala)
the caret thief strikes again!
22:13
s/static/strong
> unless they are explicitly planned for
who deleted my message
8 mins ago, by Doorknob
@EasterlyIrk nothing of value was lost
@CᴏɴᴏʀO'Bʀɪᴇɴ Dennis.
22:14
I was also mainly referring to C# where the closest you get to a mixin is an Attribute
He doesn't like carets.
carets don't add to the discussion
6 mins ago, by Dennis
@EasterlyIrk That would have been me. They add nothing to the conversation.
@EasterlyIrk Actually, he didn't
22:14
It's fine.
I strongly protest that.
eh
not argue right now
go yell on skype
9 mins ago, by Doorknob
@EasterlyIrk nothing of value was lost
^ He has a point, and he is a mod. Deal with it.
That's like saying "I agree" is a pointless thing to say in a conversation.
22:15
so... anything .. beside type system?
I mean, there's a lot of hate on JS but I find it quite a nice language to work with once you step around the potholes (loose mode, double equals, don't pass value types to .call or .apply). Outside of that I find the flexibility quite useful. And it lends itself well to structural - rather than nominal - typing :-)
Interesting to note that the deletion of noise simply creates more noise
And to be clear, there are potholes in JS.
@Quill I concur strongly with this point.
@QPaysTaxes Because 'use strict'; is an expression that on it's own does nothing. It'll have no side effects.
Meaning that browsers that don't iunderstand it will simply ignore it.
22:16
@QPaysTaxes oh, now you have problems with choices? :P
(backward compatibility)
I further state that it's absolutely absurd to micro manage peoples chat messages for what you claim to be noise.
Lets go back to talking about golfing and avocad.
If we ever did.
/s
its juic avocad not golf avocad
Where's the line? Half of these messages can be classified as noise.
JavaScript is a language built on bandaids and backwards compat. ES6 is actual the tipping point where standards agencies have gone "Nah, we're tired of this crap now. Let's actually make ourselves viable". Though they still aren't getting rid of double equals. @_@
@QPaysTaxes Double equals is loose equality.. sort of
22:18

Is this not noise?

1 min ago, 25 seconds total – 6 messages, 3 users, 0 stars

Bookmarked 5 secs ago by Cᴏɴᴏʀ O'Bʀɪᴇɴ

woah was that lag or lots of messages at once
@CᴏɴᴏʀO'Bʀɪᴇɴ @CᴏɴᴏʀO'Bʀɪᴇɴ you won't win. I am sorry.
@QPaysTaxes '5' == 5 is true. '5' === 5 is false (type coercion)
@QPaysTaxes huh
@QPaysTaxes type coerceon... there's a long table of effects on SO if you like
@EasterlyIrk I can still argue the point.
22:19
bai finding more interesting chat
3761
A: Does it matter which equals operator (== vs ===) I use in JavaScript comparisons?

Bill the LizardThe identity (===) operator behaves identically to the equality (==) operator except no type conversion is done, and the types must be the same to be considered equal. Reference: Javascript Tutorial: Comparison Operators The == operator will compare for equality after doing any necessary type c...

@QPaysTaxes well, when you think about it sort-of kind-of makes sense.. back when it was made, every attribute on a DOM el was a string. It just meant if you had an attribute that was numeric you wouldn't need to parseInt it.
@QPaysTaxes constant. That was one.
But it has a whole slew of side effects; every static analyser and linter and strict mode will yet at you if you try and use it
so does that mean that we cannot start a caret party?
the meme is obsolete ????
22:20
@QPaysTaxes Sure, but the difference is that C99 was a version of compiler, and by and large the byte code generated by it is still usable, right?
But you can't do that in JS, because it's interpreted and not compiled (sort of)
@QPaysTaxes you also need to understand that upgrading to C99 was a choice.
Until there are about.. 0.01% of the user base using ES5, then we will still have to compile down to ES5.
You can't convince users to upgrade their browsers. It doesn't matter for C++ where you can statically link all the libraries and just deploy that on it's own with no 3rd party dependencies
Any more answers here? The bounty was meant to attract more than 1.
Also bear in mind that every user who can't use your site is a potential lost customer
@DanPantry i think the blocking point is not that users dont upgrade browsers, but that site developers don't want to upgrade their broken sites in the upgraded browsers
22:22
@Optimizer eh? I don't follow
In my most recent project we were forced to support IE9 because the business wanted it until IE9's perf issues forced them to upgrade to a more modern browser - we wanted to code it in modern standards with flexbox and such but couldn't until that tipping point
backward compatibility in standard is required to make sure older sites still keep working.
@Optimizer That's true, but the backwards compatibility is only required because of older browsers
If everyone tomorrow upgraded to Edge, Chrome 48, whatever, then there'd be no reason to keep the IE9 compatibility code in
not browsers.. but sites..
@Optimizer Maybe I'm misunderstanding. From my POV, the code I write now in ES6 is not going to impact geocities for example. But it's not going to work in someone's browser who is more than a year old.
@DanPantry so if all these only supported ES5+ then hell lot of sites will break. and that is a more important concern than people still being stuck to IE9
22:24
@Optimizer Ah. I see what you mean.
@QPaysTaxes To be fair, a large reason why our business personally was so wanting to stick to IE9 was security concerns.
IE9 is a lot more.. configurable for enterprise solutions than Chrome is.
But can't you mostly use polyfills/shims?
@QPaysTaxes Uh, not from external attacks. Internal ones.
@DanPantry but not more than IE 10 or Edge, right?
So with IE it's a lot easier to stop users going to a certain site. With Chrome, we had to redirect all users to a proxy that only allows specific whitelisted IPs through.
@DanPantry installing a DNS layer blocker app is not that hard. our company does that.
22:26
@Optimizer Well, IE10 and IE11 both also were choking on AngularJS. Turns out IE10/11 have some kind of setting turned on by default that causes it to choke.
Also it was AngularJS 1.3 which is really bad for performance, but that's not my choice of tech
TIL: you can write a custom action for ToPrimitive: gist.github.com/The-Quill/6d31d4aef337360fdd2855c89d8af546
All of our internal systems are still on W7, so no Edge
@QPaysTaxes @Optimizer I didn't make the infrastructure calls, I'm just explaining in laymans what was told to me by our itsec
@Quill Interesting
Also, "it's just an internal application" ergo they don't want to spend too much resource on it..
I wonder whether I could overload the Object constructor to apply that value to every incoming object
22:28
@Quill that's news even for me..
@QPaysTaxes Well, yes and no. Basically, the whitelist was only to be applied to outbound network connections from a virtual machine farm. So I am pretty sure they could have done it, but it was a matter of time and resource - they only had 2 days to set this up because we deployed the app in production to IE11 to 200 users, replacing their old desktop app (which was broken due to schema changes in the new app).
@QPaysTaxes That would be a good thing
It would mean he could override how type coercion works for everything
i.e he could make it good
So it was damage control to get Chrome 48 up and running ASAFP. I guess the whitelist with IPs over a proxy on the virtual machine farm was easier.
That was a really stressful week.
Yes, and also the gain would be pretty minimal.
It would change the basic spec definition for ToPrimitive (for variables of that type)
The users of that app are internal users and would only be using Chrome for that app anyway.
22:31
@Quill ah, its ES7
@Optimizer s/7/2016
Yeah, I know...
(apparently versions are being named after years now)
@DanPantry it'll still remain ES7/8/9/10 in my heart
@Optimizer please tell me there isn't an es8/9/10 yet. i barely know all the features in 7
what is there.. async/await, decorators, bind syntax..?
22:32
@DanPantry why do you want to? you dont even know if they'll stay in.
array deconstruction
i believe array comprehensions got scrapped
what is decorator?
@Quill array destructors are in es6
@DanPantry that was from es6. its there in 7
22:32
@Optimizer async functions are definitely staying
bind syntax was strawmanned though, and it is a bit weird anyway. ::this.item === this.item.bind(this)
@Optimizer Decorators look like this
yeah, remembered after a quick search
class MyComponent {
  @Inject foo;
}
^ and people say its not Java syntax
They're definitely staying in because angular and also TypeScript has already adopted them, but apparently the spec changes more often than Hilary Clinton's political views
Which is why Babel currently has them disabled
> Hillary Clinton's political views
22:35
but unless they make some default decorators, its not much of use
can i use that? :P
@Optimizer They're cool, but I'm not really seeing a huge use for them. Additionally, the current shims for them are very bulky, which makes me not want to use Angular 2 (as Angular 2 requires them).
@EasterlyIrk sure
@EasterlyIrk caniuse.com should tell you the answer
@Optimizer The main thing is decorators are very useful with the current component-based development pattern.
@DanPantry but not if you have to write all decorators yourself and then people just keep duplicating things
import connect from 'react-redux'

@connect(state => ({ greeting: state.greeting }))
const GreetingComponent = ({ greeting }) => <h1>{greeting}</h1>

export default GreetingComponent
(bad example as it's ugly, but that's what it is used for)
@DanPantry What is this?
I mean what language
@quartata JS
I hate when strings don't need quotes
in Angular, react and JSX
Though I might have gotten the syntax.. slightly wrong
@Optimizer after using Angular for a year and seeing react, I hate Angular. The way you pass props through the component stack is messy as all hell
@Optimizer And JSX?
Yeah sorry I should mention what I have there is ES6 + JSX
@DanPantry what is JSX?
22:39
@Optimizer I have no clue what the acronym stands for but it is basically syntactic sugar around React.createElement calls
@QPaysTaxes this one too
<h1>Hello, world</h1> becomes React.createElement('h1', {}, 'Hello, world!')
i hate it when you write your code as string and a JS code parses it without using eval
greeting => $('<h1/>').text(greeting) <- jQuer is the best
22:40
@MarsUltor no
@DanPantry it looks better
at least my strings have quotes
React.createElement('h1', {}, 'Hello, world!') for one is more like a Haskell IO Monad
it doesn't create an element like that jQuery snippet does
So I got a defined constructor method to do it: gist.github.com/The-Quill/…
@Optimizer since when do you write HTML code with quotes? :P
But I don't know how to override the default wrapper constructor yet
22:41
@DanPantry since when do you write HTML tags in JS?
since React. Also Hack (Facebook's PHP dialect) has a similar notation
@Optimizer Since writing nested React.createElement is hard to read
@DanPantry Since when do you do <div onclick=handleClick()></div>?
@MarsUltor We don't do that...
Well, I mean, we do and we don't
but it works
:D
22:42
It certainly looks like that, but it isn't an actual inline js event
lets not talk about HTML. even I agree that its a very bad language
let's talk about more noise stuf like avocad and avocad juic
no,JS was fine
22:47
Wait, Babel has an online thing where you can transpile?
@quartata And evaluate. Its basically an online REPL
Like a tryitonline :D
you can also enable/disable the various presets and a few options like high compliancy
also stage-0 through stage-3 are experimental es7 features
stage-0 being the most experimental and stage-3 the most stable
From a file?
es2015-loose is es2015 but with a bit more "yo momma"
22:49
@quartata Hm. That sounds interesting, but if the matrix is square it gives "inconsistent" behaviour so to speak? I mean, if you want det(A^T * A) and A happens to be square...
@DanPantry That's actually what MDN says about it as well. good description
@LuisMendo True.
> Invalid preset specified in Babel options: "on"
@QPaysTaxes Why not just use a while loop? Read a character and break when the regex matches
@QPaysTaxes yes
@MarsUltor wtf did you do? lol
22:50
Nothing
@Quill so when you say that wish you could change object's contructor, you will still need to create that object using that constructor, right?
just tried to enable React compilation
like var a = new Object({a:4}) instead of var a = {a:4}
yeah, I can't overload the initializer declaration for the object type, I don't think
@MarsUltor if you used my link it should already be enabled. goo.gl/1JJ3Og
22:51
@Quill ?
@DanPantry wasn't for me
@MarsUltor hmm, maybe the shortlink foobarred it.
@QPaysTaxes Split on regex, take the zeroth element?
@MarsUltor I can overload this probably. but not this
@Quill even if you can overload Object's constructor, var a = {a:4} doesn't use that
@Optimizer yeah, that's what I said. I said I can't overload the initializer declaration
22:53
@Quill Yeah, you normally can't overload literals in most languages. Also, JS doesn't even have operator overloading,
@MarsUltor (that's a good thing @ operator overloading)
@QPaysTaxes This will match all text until the string FOO: ^.+?(?=FOO)
@MarsUltor Yeah, you can like fake overload it though
@DanPantry Not even for user-defined classes though
@MarsUltor Meh, I'd still prefer to not have it
22:54
@Quill But it can only return primitives, right?
though it's quite a vicious circle. the only reason I don't like it is because you rarely see it, so when you do see it it looks weird
fake overloading you can do whatever you like
there's a whole weird JS library that looks like ruby (apparently)
@QPaysTaxes You don't need to be like that. You said what your problem is and apparently you have solved parts of it yourself, and assumed I would know what parts you have solved yourself.
@Quill I believe that's called CoffeeScript, and everyone hates it. /s (seriously, though, it was voted one of the worst languages in 2016 and 2015)
22:55
I wonder what would happen if you combined Babel and TypeScript into one big ball of awesome
Maybe JS would actually be usable
@quartata It is decidedly less awesome than you think.
@DanPantry Oh, do they not play nice with each other?
  { loaders: ['ng-annotate', 'babel', 'ts'], test: /\.ts|js$/, include: /app/ },
^ been there. done that.
no. typescript is upper crap for interop with anything, including other javascript
FlowType is the way to go (if you want static typing)
22:57
@DanPantry +1 for babel :D
i mean typescript won't even let you interop with half of the npm ecosystem without choosing from one of three import syntaxes
all of which have different semantics
so if you try and use anything from npm you will probably end up with something like this (actual code from our app)
@Downgoat you just missed a javascript bash magic fest
import $ = require('jquery')
import lodash from 'lodash'
const classNames = require<any>('./classNames.scss')
@Quill ;_;

« first day (1909 days earlier)      last day (3229 days later) »