the hardest exam question

https://lemmy.ml/post/14710408

the hardest exam question - Lemmy

It has a cup of coffee as logo
I want to create a political party in India. I need you as a candidate for next elections.
That’s Java, not Javascript. Java is to javascript as ham is to hamster.
Or butter to butterfly

Or car to carpet

Or fun to funeral

Moon to moonshine
It runs in browsers. It… isn’t poop? I don’t know. I’m all out of ideas.
It runs on mobile also
3 billion devices worldwide?
John Cena "are you sure about that?" GREENSCREEN (IMPROVED VERSION)

YouTube
Well, there’s a link that’s staying blue.
Over what?
Death by wasps
Can I please pick the wasps?
Totally understandable choice.
Did a robot just asked to die because of JavaScript hahaha

The bot toggle was on for my account for some reason but I am human… I think

It should be off now

It seems it doesn’t propagate to other servers immediately though.

Browsers love it!

Practically anything you write will execute without all that scope and well formed statements nonsense.

  • It runs in browsers
  • If you hate your co-workers, then they will also feel your pain.
  • You’ll find an npm package to help you count up to 2.

    (I recently learned - maybe here - that the is-even package has over 170k weekly downloads)

    is-even

    Return true if the given number is even.. Latest version: 1.0.0, last published: 8 years ago. Start using is-even in your project by running `npm i is-even`. There are 59 other projects in the npm registry using is-even.

    npm
    What’s even wilder is if you look at the code of that package, all it does is include the is-odd package and then return !is-odd. And the is-odd package isn’t much better, it does some basic checks on the input and then returns n % 2 === 1.
    I thought I was missing something. JS is one of my main languages and I always just write the is-odd function myself since it’s like 10 characters. It boggles the mind that is-even has 176k weekly downloads
    If youre lazy/busy enough, doing basic checks on the input is enough boilerplate to package out.
    Also there are 40-something packages depending on it, so I guess it gets pulled automatically when they are used.

    To be fair having a name can make things easier to read. I get that i % 2 == 0 is a common pattern and most programmers will quickly recognize what is happening. But isEven(i) is just that much easier to grok and leaves that brainpower to work on something else.

    But I would never import a package for it. I would just create a local helper for something this trivial.

    Exactly what I would do if I had to reuse it, especially now since I know that adding a package would actually add 2. It all just seems so…inefficient
    Even if the code isn’t reused adding names to sub-expressions can be very valuable. Often times I introduce new functions or variables even if they are only used once so that I can give them a descriptive name which helps the reader more quickly understand what is happening.
    Yeah, I do that with pretty much every separate operation in c# since our solutions are pretty big. Most of my JS scripts are just done in ServiceNow which are separated and named appropriately.
    I’ve always looked at stuff like that as much more along the lines of performance art than anything else.
    Is-even continues to be the best joke in the industry
    This must be a “hold my beer” kind of joke and someone wanting to see how far they can take it.

    Oh boy, this actually made me laugh out loud

    You can make your speakers go BRRRRRRRRR via Home Assistant with it
    We have forced it, quite hamfistedly, to do anything. The organic hell-evolution of web browsers turned them into do-anything sandboxed mini-OS. It meant whatever hellish code you used to write your corporate mandated web app could now become a perfectly bloated standalone application. And the demonic language that would enable it was called Javascript. It does the backend and it does the frontend. You could consider those advantages over other devices, like toasters and those handheld electronic games from the 80s.
  • it’s easy to make fun of
  • it makes every other programming language look better in comparison
  • Easiest way to run a script in your browser
  • Always finds its way if inputs are bad Nan. undefined
  • NaN is of type number. because fuck me.
    To be fair, this is actually reasonable. But it does look stupid on the face of it.

    When my console throws a NaN I kinda think of it as an Halloween kid receiving a fruit instead of a candy. He won’t say “That’s a fruit”. He’ll say “That’s not a treat”.

    I’m personally pissed more often by a falsy 0.

    Did you know that early analog computers would literally explode when asked to divide by 0?

    Now computers just say “Hey stupid, that shit is not even a Number in a mathematical sense, but sure I’ll add one to it.” instead of “Why would you kill me like this?”

    You can’t really define Infinity as a number, yet it is part of their world.

    So typeof NaN === ‘number’ totally makes sense in that regard.

    If you ever worked with arrays of dates, don’t judge NaN too harshly.

    Falsy zero? What’s wrong with that, 1 is true and 0 is false. I thought that was standard logic?

    in javascript a property is truthy if it exists

    myThing.property = "some string" if (myThing.property) { // true // do something }

    It works with everything except of course for falsy values

    myThing.number = someNumberThatShouldNotBeEqualToZero if (myThing.number) { // do something very important with that number that should not be equal to zero } // This can fail at anytime without warning

    So you’ve got to be extra careful with that logic when you’re dealing with numbers.

    I am not saying it’s wrong though. I’m saying it’s often annoying.

    ah ok , I think I write this a bit more verbose when using other languages, instead of

    if(thing) { stuff; }

    I do

    if(thing != null) { stuff; }

    so checking for numbers being truthy & existing didn’t seem like an issue

    In the case of a non-existing property, the value would be undefined rather than null.

    And while == and != exist in JavaScript, most linters will throw an error and require a === and !== as they should be avoided.

    null == undefined // true null === undefined // false

    Besides, null is a perfectly valid value for a property, just as 0. Working with API Platform, I couldn’t tell the number of times I used this kind of statement:

    if (property || property === null) { // do some stuff }

    Probably just as much as

    if (property || property === 0) { // do some stuff }
    Easiest? More like… The only way.

    I am forced to try to get a JS certification.

    I am reaching the end of my rope, and starting to think of maybe putting my neck into one.

    Isaac Newton said that we see far because we stand on the shoulders of giants.

    Javascript is like standing on the shoulders of dwarves with brittle bone disease.

    Standing on the shoulder of dwarves hiding deep underground
    The part that always gets me is when people choose Js for the backend. Like I get that it’s the default thing that works on the frontend, so there’s some rationale why you might not want to transpile to it from another language. On the backend though, there are so many far better option, why would you willingly go with Js, especially given that you’re now forced to do all your IO async.
    You really should be doing your IO async. Do you specifically mean callback hell?
    No I meant having to do async as opposed to having threads like you would in Java for example. In vast majority of cases a thread pool will work just fine, and it makes your code far simpler. Typically, Java web servers will have a single thread that receives the request and then dispatches it to the pool of workers. The JVM is then responsible for doing the scheduling between the threads and ensuring each one gets to do work. You can do async too, but I’ve found threads scale to huge loads in practice.