Specifically, do you worry that Microsoft is going to eventually do the Microsoft thing and horribly fuck it up for everyone? I’ve really grown to appreciate the language itself, but I’m wary of it getting too ingrained at work only to have the rug pulled out from under us when it’s become hard to back out.

Edit: not really “pulling the rug”, but, you know, doing the Microsoft classic.

  • jivemasta@reddthat.com
    link
    fedilink
    arrow-up
    43
    ·
    1 year ago

    Maybe Im reading the vibe wrong but to me, it seems like when it comes to the programmer/sysadmin/poweruser side of Microsoft, they seem pretty good in terms of not being total shit. Their “normie” facing side though seems hella shady though. Things like ads in windows, the speculated subscription model for windows, office 365, one drive spam.

    For example, things like vscode, WSL, winget, power tools, the new console app, powershell, typescript, opening up .net to native cross platform. All these things are pretty sweet and seem like something they wouldn’t be interested in doing.

    It almost feels like there are two Microsofts right now and they are at odds with each other. So yeah, I guess enjoy it while it lasts, but always be ready to drop them like a sack of potatoes.

    • atheken
      link
      fedilink
      arrow-up
      22
      ·
      1 year ago

      Like I said in my other comment, I think people tend to lump all of MSFT’s activities into the same bucket. DevDiv has always seemed pretty decent, and I am usually reminded of this comic when people talk about MSFT’s “shady” activities.

      • lemmyvore@feddit.nl
        link
        fedilink
        English
        arrow-up
        4
        arrow-down
        6
        ·
        1 year ago

        Historically speaking they’ve been shitty on all possible sides. Some people take that as “fool me twice, shame on me”.

        • sleep_deprived@lemmy.world
          link
          fedilink
          arrow-up
          4
          arrow-down
          1
          ·
          1 year ago

          Excuse me but I have it from a very reputable source that the saying goes "fool me once…

          Shame on… Shame on you.

          Fool me-- can’t get fooled again"

          • jeremyparker
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            I remember that moment. It was like, halfway through the sentence he was like, “I don’t want the world to have a clip of me saying ‘shame on me,’ what do I do…” I wonder if he ever figured it out. Because what you don’t do, is what he did, just kinda stammer and stumble in a much more clippable way.

      • jeremyparker
        link
        fedilink
        arrow-up
        2
        arrow-down
        4
        ·
        edit-2
        1 year ago

        Bill Gates was and still is a shady piece of shit. Microsoft is a lot better without him - but that’s a low bar.

        Personally what bothers me is that they’re starting to treat developers as users, the same as they treat Grandpa’s operating system, or Beth in accounting’s office suite: make everything “easy” and “intuitive” and “helpful”. I became a developer because I got tired of my computers getting in my way, so now I make them do what I want. I don’t want or need an intuitive, helpful interface. If you’re going to make a tool for me to use, just make the tool do that thing and that’s it.

        I’ve mostly moved on from GitHub, only using it for little pushes because the green dots look good for prospective employers.

        Edit: for those if you unfamiliar with how he’s been a piece of shit specifically recently: he is the primary reason why covid vaccines weren’t open-sourced. Poor countries were forced to live or die based on the generosity of wealthy nations (and the infrastructure around that generosity), rather than enabling them to buy it from less expensive sources, or even make it themselves.

        Not only is that just shitty on its face, let’s not forget that a pandemic somewhere is a pandemic everywhere; the fact that he prolonged covid in poor countries (resulting in the death of thousands if not hundreds of thousands), he kept it from fading in wealthy countries, too (resulting in the death of thousands if not hundreds of thousands).

        Gates’s battle to protect “intellectual property rights” (read: take but don’t give) has been a life-long thing for him, literally since childhood. His viciously selfish tactics have produced great success for him, but it’s a despicable kind of success… And having “retired” and amassed more money than he could possibly spend, you’d think he could just sit back and let the rest of us get on with it, but no - that’s not how his level of selfishness works - it’s insatiable.

    • Justin@lemmy.jlh.name
      link
      fedilink
      arrow-up
      7
      arrow-down
      2
      ·
      1 year ago

      Github has been kinda getting weird lately. They added a “for you” feed, ads for copilot, and the front page is super middle-managery.

      • bnjmn
        link
        fedilink
        arrow-up
        4
        arrow-down
        1
        ·
        1 year ago

        Idk, I actually kind of like the “for you” feed. I’ve discovered some interesting projects on there that I wouldn’t have otherwise

        • Justin@lemmy.jlh.name
          link
          fedilink
          arrow-up
          3
          ·
          edit-2
          1 year ago

          I dont think it has any place on a developer tool/workplace platform. Algorithmic feeds are the first step towards enshittification. If they had a “trending repos” page, it’d be fine, but they’re hijacking people’s work flows to show (potential) ads.

          • bnjmn
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            Yeah, I get that. I’m on sabbatical RN, so my GitHub usage is purely personal. Having your work feed hijacked is a different story altogether

  • RonSijm
    link
    fedilink
    arrow-up
    43
    arrow-down
    3
    ·
    1 year ago

    do you worry that Microsoft is going to eventually do the Microsoft thing and horribly fuck it up for everyone?

    I’m not really sure what you have against Microsoft, or what “Microsoft classic” you’d be referring to…

    In the last 10 years or so they pretty much moved everything C# related to Core, cross platform and open source. Even the decision making for the language is “Open source” - Microsoft is not really behaving the same as the Microsoft from 2000…

    Soo, I don’t really know how they could possibly fuck it up. They might add more and more features you might not like, but you could just choose to stick to an older version of the language

    • jeremyparker
      link
      fedilink
      arrow-up
      1
      arrow-down
      2
      ·
      1 year ago

      I’m not sure what that means. Open source telemetry is still telemetry.

    • jeffhykin@lemm.ee
      link
      fedilink
      arrow-up
      2
      arrow-down
      5
      ·
      1 year ago

      Chromium, Firefox, NodeJS, Deno, and Bun are all open source. I mean, sure the official name is ECMAScript not JavaScript, but unless you’re talking about a technicality I’m not sure what your point is.

  • atheken
    link
    fedilink
    arrow-up
    26
    arrow-down
    1
    ·
    edit-2
    1 year ago

    Everything is temporary. If we were talking about a niche language, I might worry a little bit that it could just lose momentum and die. But TS is a juggernaut. The only way typescript “dies” is if JS integrates enough of its features to make it redundant.

    Besides that, if Oracle managed to allow Java to continue to grow and flourish, I have confidence that MS can do at least that well. I also think lumping all of MS’s products into the same boat is a mistake. They have been pretty good stewards of their languages for decades.

    • Rogue@feddit.uk
      link
      fedilink
      arrow-up
      14
      arrow-down
      3
      ·
      1 year ago

      Everything is temporary except for people’s opinion on Microsoft.

      The company is spending a ton on supporting developers, tools, and open source projects but every time they get mentioned people just hark tired lines of past ill deeds.

      • alcasa@lemmy.sdf.org
        link
        fedilink
        arrow-up
        13
        arrow-down
        1
        ·
        1 year ago

        I think people should in general put as little trust as possible in corporations. Ensuring your tools, language and platform are as free as possible is a good idea.

        Just look at the problematic situation for VS Code extensions by Microsoft, which are non-free.

        • Rogue@feddit.uk
          link
          fedilink
          arrow-up
          4
          ·
          1 year ago

          I can agree with the goal but sadly the corporations have already got their claws deep in the tech stack.

          Facebook control React. Google has its hands around Chromium, Android, Go, Angular and I’m sure dozens of others. Then of course Microsoft now own npm, GitHub etc. You’re making your life very difficult if you entirely avoid corporate entities.

          If we don’t give corporations credit when they do run projects well then there’s no incentive for them to not go full on capitalist greed and destroy them.

      • hperrin@lemmy.world
        link
        fedilink
        arrow-up
        9
        arrow-down
        8
        ·
        1 year ago

        I mean if they didn’t want a shit reputation, they shouldn’t have done those past ill deeds.

    • sagethesagesage@lemmygrad.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      I actually drew that same Oracle comparison. They’ve made the occasionally bullshit effort, e.g. the API stuff with Google, but otherwise Java is just kinda Java. Fair point.

    • marcos@lemmy.world
      link
      fedilink
      arrow-up
      14
      arrow-down
      4
      ·
      edit-2
      1 year ago

      Yes, MS’s standard operation is to evolve the thing until it’s completely hostile to your intentions, but not explicitly enough to justify a tool change for management.

      They are currently in the “devs wanted” mode, it will probably be at least a few years before they change into “fuck you, pay me” mode again.

  • Tyfon
    link
    fedilink
    arrow-up
    13
    arrow-down
    1
    ·
    1 year ago

    I’d like to point out that TypeScript is a superset of JavaScript, so if anything goes wrong with it, you can just remove the type information and you’ll have regular JavaScript.

    • silas
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I’d still have to do some refactoring in and around my classes though. There’s some syntax that is TypeScript-only, including things like extended classes.

    • jeffhykin@lemm.ee
      link
      fedilink
      arrow-up
      5
      arrow-down
      11
      ·
      edit-2
      1 year ago

      If I take my json and add a .yaml extension it works. If I take my c code and add a .cpp it works. If I take my js code and add a .ts … it doesn’t work

      TS branches off of the JS syntax (which is great! way better than a syntax rewrite), but TS is not a superset; it does not meet the practical or technical definition of a language superset.

      • Kalabasa
        link
        fedilink
        English
        arrow-up
        6
        ·
        1 year ago

        What are the additional requirements? Afaik valid JS is valid TS.

        • abhibeckert@lemmy.world
          link
          fedilink
          arrow-up
          5
          arrow-down
          3
          ·
          edit-2
          1 year ago
          var foo = {};
          foo.bar = 42;
          

          Perfectly valid, and extremely commonly used, coding pattern in JavaScript - it’s essentially the normal way to do an associative array or hashmap in JavaScript. It’s also one of the commonly used ways to (poorly) simulate OOP in JavaScript.

          In TypeScript, it fails. You can’t treat an object as an arbitrary key/value pair. That’s a good thing… but still, it means TypeScript is not a superset of JavaScript.

          AFAIK that source code will be accepted by the TypeScript compiler if the file has a *.js extension, but that’s an ugly workaround and it also means you can’t copy/paste code between files. You have to rewrite the code.

          • FooBarrington@lemmy.world
            link
            fedilink
            arrow-up
            8
            ·
            1 year ago

            In TypeScript, it fails. You can’t treat an object as an arbitrary key/value pair. That’s a good thing… but still, it means TypeScript is not a superset of JavaScript.

            No, it doesn’t fail. It compiles to perfectly valid JS that runs exactly as you’d expect. The type checking itself errors, because you’ve made an error - but the compilation isn’t prevented by this error.

            So yes, Typescript is a superset of JavaScript.

            • jeffhykin@lemm.ee
              link
              fedilink
              arrow-up
              1
              ·
              edit-2
              1 year ago

              That is an important difference. Still lots of people, myself included, classify “compiler printing an error (not a warning)” as failure, even if bizzarly the code still runs somehow.

              • FooBarrington@lemmy.world
                link
                fedilink
                arrow-up
                1
                ·
                1 year ago

                That’s because you’re missing the distinction between compiler and type checker. The compiler doesn’t check types, it strips them. The type checker only checks types, it doesn’t compile. They are often used in conjunction, though increasingly the compilation is done by e.g. esbuild.

                But there is nothing “bizarre” about the code running, since literally, TS is a superset of JS.

            • lolcabanon
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              I know a cool library you can use to convert .ts files in Js! It’s called tsc!

              /s

        • jeffhykin@lemm.ee
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          1 year ago

          Type annotations. It can be as simple a adding any in front of parameters, but there are other edgecases too, and when you have a really big codebase it can be a pain to convert.

      • mrkite
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Your own example fails because “class” is a valid variable name in c but not cpp.

        • jeffhykin@lemm.ee
          link
          fedilink
          arrow-up
          1
          arrow-down
          2
          ·
          edit-2
          1 year ago

          I didn’t say C++ was a superset of C, I said “if I take my c code and add a cpp extension it works”. Believe me, I am painfully aware of the not-a-superset problem between C and C++. My point is Typescript doesn’t even meet the very loose “its practically a superset” relationship that C++ has with C.

          • mrkite
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            if I take my c code and add a cpp extension it works

            and I pointed out that it doesn’t if your C code has a variable called “class”.

            • jeffhykin@lemm.ee
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              Don’t worry, none of my code uses that, designated initilizers, complex numbers, variable length arrays, typedef name overloading, unintilized constants, implicit void pointer casting, implicit function declarations, nested struct defintions, or any of the other exclusively-C features.

  • onlinepersona
    link
    fedilink
    English
    arrow-up
    11
    arrow-down
    2
    ·
    1 year ago

    It’s nice, but it would be great if JS were replaced by WASM.

    • RonSijm
      link
      fedilink
      arrow-up
      5
      ·
      1 year ago

      Well since this is a Typescript / Microsoft kinda thread - there are replacements… You can use C# with Blazor (from Microsoft)

      And you can also compile Go and Rust to WASM (probably some other stuff as well that I’m not aware of)

    • aluminium@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      No, I’m glad that “now that wasm exists I can do web development in any language” isn’t thing yet. The web would get even more clumsy than it already is. I’m glad that when I visit 5 links I don’t have to download 10 different runtimes each time.

      • onlinepersona
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        10 different runtimes? WASM what do you mean? It’s byte-code for the browser. It’s not like Flash or Java applets that required an external program to run.

  • lysdexic
    link
    fedilink
    English
    arrow-up
    11
    arrow-down
    2
    ·
    edit-2
    1 year ago

    FYI, there’s a TypeScript community in Lemmy.

    [email protected]

    I’m sure that any non-trolling/flamebait discussion over TypeScript is welcomed in there.

  • abhibeckert@lemmy.world
    link
    fedilink
    arrow-up
    9
    arrow-down
    4
    ·
    edit-2
    1 year ago

    Regarding “doing the Microsoft classic” whatever that means… I don’t believe in judging a company by what they did in the past. They should be judged by what they actually do now and in the future. So far, they haven’t done anything bad. And anyway they’ve been good stewards of recent products that they’ve taken over (GitHub for example).

    As for TypeScript itself… well my opinion is language choices should always be done on a case by case basis. So far I have never personally encountered an individual case where TypeScript is the best choice. They do exist though, so I won’t hold it against anyone if they choose to use it.

    • Adsooi@lemmy.world
      link
      fedilink
      Français
      arrow-up
      1
      arrow-down
      1
      ·
      1 year ago

      Ehhhh… considering what they did to the .NET stack recently (removing dotnet watch from the open source builds to bundle it with Visual Studio and only reverting due to the huge community backlash), I think at least some cautiousness would be warranted.

  • disconnectikacio@lemmy.world
    link
    fedilink
    magyar
    arrow-up
    3
    ·
    1 year ago

    Its an improvement over plain js, but we say “you cant build a castle with bricks made of shit” the shit is javascript. Undefined errors are there using TS…

  • leaky_shower_thought@feddit.nl
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    If it makes you feel a bit better, think of it this way: Typescript is open-sourced not to just get the public free-access to it, but also for the public to provide feedback and improvements. Without outside devs to report bugs, TS would be living [ and dying ] in its own bubble.

    This is almost™ the same tactic Apple uses for Darwin by making use of netBSD’s open source nature.

  • Badland9085@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    I knew I remember something shady happening with .NET some years ago with dotnet watch, but welp that was pretty recent. Here’s a blog post that collected a lot of happenings and strung em together in a single view. Fear-mongering? Perhaps, but that .NET incident left a really bad taste in my mouth that reminded me that MS hasn’t really changed.

    https://ghuntley.com/fracture/

    • Badland9085@lemm.ee
      link
      fedilink
      arrow-up
      10
      arrow-down
      1
      ·
      1 year ago

      I think you’re missing the point. It’s exactly cause Microsoft created it that people get worried about it. The EEE is an actual phrase found to be used internally in Microsoft, albeit being some time ago. Though there’s no knowing whether it’s still circulating now, it’s hard to trust them to be good stewards forever.

      • lysdexic
        link
        fedilink
        English
        arrow-up
        9
        arrow-down
        2
        ·
        edit-2
        1 year ago

        I think you’re missing the point. It’s exactly cause Microsoft created it that people get worried about it.

        I don’t think there is any merit to that concern. Not only is TypeScript FLOSS, Microsoft also has an excellent track record developing high-quality programming languages and tech stacks. Take for example C#. It’s been around for over two decades and if anything it’s getting better by the release.

        I understand the rationale behind the concern, but there is also a factor of mindlessly parroting cliches.

        • Badland9085@lemm.ee
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          1 year ago

          Aaand just to top of the cake with some cherry, here’s a blog post from someone who’s been paying a keen eye to what MS has been doing.

          https://ghuntley.com/fracture/

          I thought the .NET controversy with dotnet watch was many years ago and turns out it was pretty recent.

          In any case, and I think I wrote this in my other comment, just because a project is FLOSS, doesn’t mean it’s all fine and dandy. FLOSS is just the means to an end, and while the community attaches a noble motivation behind it, FLOSS is just a method. The article mentioned that FLOSS is being used as a Venus fly trap, and I honestly couldn’t agree more.

        • Badland9085@lemm.ee
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          Just to play the Devil’s Advocate here.

          FLOSS is provably insufficient as a token of certainty for longevity and fairness. Licenses can change — we’ve seen this with MongoDB, and even Terraform. Sure, you can fork them, but who’s to say if the ecosystem will follow suit? Most of the time, the ecosystem doesn’t move to the new FLOSS fork.

          And I don’t think C# is a good example. C# runs on .NET, which is Microsoft’s own framework. TS compiles to JS (technically ECMAScript) and runs on V8, both of which aren’t “owned” by Microsoft. There’s ample room for Microsoft to take advantage of the popularity of TS to wedge their influence into the ECMAScript standard and the V8 engine, e.g. by extending TS with features not available or performant in JS, pull themselves ahead of the rest, and become the de facto standard. It’s a common playbook by large tech companies — Amazon takes FOSS projects, modify them, and put them up as services on AWS and eventually gain significant market share and influence; Google is doing something similar with the Web API Standards.

    • janWilejan@kbin.social
      link
      fedilink
      arrow-up
      4
      arrow-down
      2
      ·
      1 year ago

      Without Microsoft, TypeScript would not exist.

      I’m not sure you are aware, but TypeScript is not the first language to compile to JavaScript.

      https://stackoverflow.com/questions/4414558/languages-that-interpret-down-to-javascript
      https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS

      Without TypeScript, people would have adopted a different JS transpiler, one that isn’t controlled by a monopolistic corporation with a history of extinguishing open source projects.

      • lysdexic
        link
        fedilink
        English
        arrow-up
        5
        arrow-down
        1
        ·
        edit-2
        1 year ago

        I’m not sure you are aware, but TypeScript is not the first language (…)

        This discussion is about TypeScript.

      • mrkite
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Really? Name one open source project MS extinguished.

  • o11c
    link
    fedilink
    arrow-up
    3
    arrow-down
    8
    ·
    1 year ago

    I’m not concerned about the Microsoft’s involvement. TypeScript shows an immature tooling ecosystem even on its own merits.

    I posted some of my concerns earlier, along with a basic problem challenge (that I can easily do in many other languages) that nobody managed to solve: https://programming.dev/comment/2734178

    • spartanatreyu
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      This comment just seems weird no matter which angle I try to approach it from.

      immature tooling ecosystem

      It’s over a decade old now. I wouldn’t call that immature.

      Looking at your linked comment…

      following a basic tutorial somehow ended up spending multiple seconds just to transpile and run “Hello, World!”.

      1. Install deno
      2. Create hello.ts containing: console.log("hello world");
      3. deno run hello.ts (time taken to run command: 0.037s)

      […] 3 different ways of specifying the files and settings you want to use […] 3 incompatible ways to define and use a “module”

      Yes, that tends to happen as ecosystems evolve over time. Typescript allows developers to use modern standards-compliant modules, while maintaining backwards compatibility for older code.

      embracing duck typing means […]

      One of typescript’s strengths is that its type system isn’t all or nothing. Typescript will support duck typers, but it isn’t forced or limited to that. You can add as much or as little typing as you want. In theory, this means that the language supports simple beginners up to experts creating turing-complete theorem solvers at compile time. In practice, this means a much smoother onboarding and porting experience.

      Have a “generalized fibonacci” module taking 3 inputs […]

      I’m not sure if this is the basic problem challenge or the hello world example was. It seems a bit ambiguous as to what you really want, but it’s easy to create a module that takes inputs and produces outputs while running on backend servers, in browsers, and in CLIs.

      • o11c
        link
        fedilink
        arrow-up
        1
        arrow-down
        1
        ·
        1 year ago

        Obviously the actual programs are trivial. The question is, how are the tools supposed to be used?

        So you say to use deno? Out of all the tutorials I found telling me what tools to use, that wasn’t one of them (I really thought this “typescript” package would be the thing I was supposed to use; I just checked again on a hot cache and it was 1.7 seconds real time, 4.5 seconds cpu time, only 2.9 seconds if I pin everything to a single core). And I swear I just saw this week, people saying “seriously, don’t use deno”. It also doesn’t seem to address the browser use case at all though.

        In other languages I know, I know how to write 4 files (the fib library and 3 frontends), and compile and/or execute them separately. I know how to shove all of them into a single blob with multiple entry points selected dynamically. I know how to shove just one frontend with the library into a single executable. I know how to separately compile the library and each frontend, producing 4 separate artifacts, with the library being dynamically replaceable. I even know how to leave them as loose files and execute them directly (barring things like C). I can choose between these things all in a single codebase, since there are no hard-coded project filenames.

        I learned these things because I knew I wanted the ability from previous languages I’d learned, and very quickly found how the new language’s tools supported that.

        I don’t have that for TS (JS itself seems to be fine, since I have yet to actually need all the polyfill spam). And every time I try to find an answer, I get something that contradicts everything I read before.

        That is why I say that TS is a hopelessly immature ecosystem.

        • spartanatreyu
          link
          fedilink
          arrow-up
          3
          ·
          edit-2
          1 year ago

          It sounds like to me that you’ve taken your knowledge of your commonly used languages for granted, and assumed a new language would be just as easy. But if you watch a developer who is dipping their toe into that ecosystem for the first time you’ll find them making mistakes and running into footguns you didn’t know were possible.

          Regardless of the language, not having a proper guide leaves devs susceptible to the incorrect blogospam that’s out there, where engagement is rewarded over correctness.

          Ignore all of the blogospam.

          The two things you need to know:

          1. C/C++/Java/Go/Python have all gone through changes, growth and churn just like JS.
          2. Knowing the history of the ecosystem will go a long way towards helping you. If you understand why things have changed, then you’ll know how to ignore the bad advice out there.

          Here’s my shortened version of number 2.

          The beginning:

          • JS starts as a scripting language embedded into a browser
          • Different browsers try to copy each other but put in their own “features” pulling the language in different directions.
          • The amorphous blob that is JS starts to congeal and language standards are solidified. This standard is known as ECMAScript (named for legal reasons). ES1 is the first version, followed by ES2 and ES3, each adding useful features.
          • ES3 (released in 1999):
            • This is what you could consider the first long term stable baseline widely supported version of the language, where you can make anything you want.
            • Almost everything you can make in future versions of the language can be backported to ES3.
            • If you want to go by analogy, you can think of ES3 as javascript’s C99.

          The false start:

          • Work starts on ES4 with a massive feature list (including static typing, classes, modules, algebraic data types, generators, embedded xml/xhtml known as JSX/TSX today, etc…). It fails due to political infighting, and for basically being too ambitious in a single version.
            • This sucks up years of progress between released versions.
            • This version is commonly seen as being poisoned by 90’s/00’s Micro$oft and the dark ages of Internet Explorer
            • But the spirit of ES4 was released spread out over future versions anyway.

          The resumption:

          • The v8 JS engine is released, making JS really fast and worth programming in. This is used in Chrome and Node.
          • ES5 (released in 2009):
            • Adds native json support, reflection, and a strict mode to avoid some footguns with ES3
            • Think of this as C11
            • Some developers being experimenting with a more consise syntax in CoffeeScript that compiles down to ES5.
          • 2012: Typescript is released adding an optional and gradual typing system to JS (inspired by C# and ES4) designed for both Humans and Computers.
            • In effect, this brings IDE-style support for JS
          • ES6 (released in 2015):
            • With the lessons learned from CoffeeScript, a whole bunch of syntactical sugar is added to make the language more pleasant to write in.
            • With the lessons learned from community made modules, an official module spec is released and added to the language.
              • Known as ESM (EcmaScript Modules)
              • The community starts moving away from unofficial modules (CJS, AMD, UMD)
            • Babel is created to allow any developer to create and share their their own language extensions.
              • The faster feedback cycle from Babel allows for smaller and more frequent language updates.
              • Javascript moves to a yearly release cycle and ES6 is renamed ES2015
          • ES2016
            • Adds block scoping as an alternative to hoisting
          • ES2017
            • Adds async/await/Promise() syntax sugaring, to make asynchronous programming easier
          • ES2018
            • Adds ... (rest/spread operator) syntax sugaring, to make destructuring and variadic functions easier
            • Ryan Dhal (creator of Node) releases his famous 10 Things I Regret About Node.js talk. Announces his intention to create a “modern reset” of Node known as Deno.
          • ES2019
            • Minor changes
            • Deno is released
          • ES2020
            • Adds ?? Nullish coalescing operator syntax sugaring
          • ES2021
            • Adds ??=/&&=/||= Logical assignment syntax sugaring
          • ES2022
            • Adds top level await, making asynchronous programming easier
            • Adds private field syntax sugaring
          • ES2023
            • Minor changes

          The current state of things

          • Language-wise

            • Javascript has added a whole bunch of syntactical sugar since 2009 making it really pleasant to code in.
            • Typescript adds some really nice IDE support to Javascript and the vast majority of all libraries and frameworks are written in it giving that IDE support to Javascript developers.
            • Babel allows developers to create their own language extensions, which are frequently put forwards at for other developers to give feedback on. Useful proposals are added to the language on a yearly basis.
          • Runtime-wise

            • Node is considered the older slow-moving most-stable release of running JS outside of the browser
              • Think Debian
            • Deno is considered the friendly Node, coming with all the tools a developer needs (linter, bundler, tester, ts support, etc…). In the last 5 years it has reached almost complete feature parity and compatibility with Node.
              • Think Ubuntu
            • Bun is a brand new kid on the block prioritising speed over compatibility.
              • Think nightly linux
          • Standard workflow

            • Write in typescript
            • Let your editor check your typescript while you’re typing live so you don’t need to go through a compile cycle
            • Let your project’s stack compile your typescript for you.
              • If you’re writing a new project from scratch, Deno will run typescript for you.
              • If you want to build a new stack from scratch with no assistance, use the typescript project itself to check and compile your code into js, or use esbuild to strip out the typescript types to turn your typescript into js. (most developers elect to strip types since your editor/ide should be live checking your typescript anyway allowing you to skip a redundant compile check cycle)
              • If you’re using an existing stack, your build tools will compile/strip-out typescript for you.
          • Tooling wise

            • Most projects use Vite / rollup / and other “zero-config” tools to build and bundle their applications. Some older projects still use Webpack (which does the same thing, but with a more complicated config file).
            • Everyone uses ESM modules now, almost no one uses the older modules.

          For your simple fibonacci example:

          1. Create your fibonacci module that exports your fibonacci function
          2. Import module
          3. Call function in module
          4. Pick your endpoint:
          • Browser endpoint: Output result in console.log() and see result in browser’s console.
          • Server-side endpoint: Output result in Deno.serve() and see result in network requests/responses
          • CLI endpoint: Output result in console.log() and see result in terminal