Things are a lot better now than they were in 2018, in large part due to his work and his team's. The typescript migration has gone well, with good automatic migration tooling, and I mostly only use TS now. This means good error messages, and good editor support.
(Disclosure: I work on ads at Google, speaking only for myself)
It sounds supremely annoying to have to wait for the entire ecosystem to develop (Cider extensions, Bazel rules, whatever-the-fuck-else-someone-needed-to-feel-less-guilty-about-making-$700k/yr) in order to write code in a new framework that's significantly more modern than the ones that are used currently.
On the other hand, internal tooling like cider, bazel, etc. are so advanced at these companies that the old frameworks like vanilla javascript are a lot better than what outsiders using javascript have. Moving to Typescript is still a huge benefit but I don't think the old development was that bad either.
Blaze and Cider are really amazing though. Consistently my favorite tools I use by and large. I wish the OSS world adopted bazel more so "what language do we use" is less of a problem.
I just resigned from Amazon today, and reading this is giving my flashbacks to my earlier years there. When I first joined in 2013, it was incredibly difficult to leverage open source third party libraries and build systems like grunt/gulp. I ended up doing a lot of work to make it possible to model JS dependencies using the standard Amazon dependency management setup and to create bindings to our language/stack agnostic build system. It was an uphill battle at times, but I got things to a point where you could reasonably do things in Amazon similar to how you'd do them externally (without sacrificing any of the advantages of of our first party tools).
The solutions I engineered still had to make some compromises and better solutions by dedicated teams were built later on, of course. All this just to say that I can very readily sympathize with the challenges that Googlers must be facing.
Edit: To clarify, I put in my 2-week notice a while back and today was my last day. That's what I meant by "resigned today".
Oh, hey Alex. As soon as I saw your handle, the name "Alex Rattray" popped to mind, and sure enough, that's who you are. I think I probably met you at a hackathon many years ago (maybe PennApps?), though it was probably in passing, since I don't think we ever worked together on a project. Small world though!
I'd been at Amazon for many years and had always wanted to move on to doing my own startup, which is what I'll be doing starting tomorrow. It's an exciting moment for me. My biggest worry about leaving is figuring out what to do about health insurance, but my fallback plan is to go with COBRA until I figure something out.
Yeah, for sure. I was using them as early as this morning, haha. I've been through the whole end to end spectrum of this at Amazon, from wild-west every team doing their own custom things to building BrazilGrunt/BrazilGulp, and moving on to all the successors since then.
Overcoming the incompatibility of npm's multi-version allowance and Brazil's need to have a single version of each package in the transitive closure of the dependency graph without hacks like shrinkwrapping was a key turning point.
Personally, I’m not a huge fan of TypeScript. I feel it’s unnecessarily verbose at times. I used ReasonML for a while, and I absolutely LOVED it. I’m just bummed about the uncertainty of the projects future and adoption and the lack of alternatives that seem to make TypeScript the defacto standard.
Lately I've gotten into the habit of giving my pure JS projects a tsconfig.json file, so that my editor runs the files through tsc and I get all the code hints and errors it reports.
I find that as long as the code is reasonably straightforward, I get most of TS's benefits without actually declaring any types. It was kind of a pain to originally set up, but the code hints really are pretty magical.
typescript is only slightly more verborse than reason (or is it rescript?), the syntax is almost identical (does reason still have those annoying explicit ocaml/js conversions?).
At this point the features that ts has and reason doesn't out number that of the other way around. I only know that reason has more stringent jsx types and opaque types (easily done in ts in 2 lines of code). On the other hand ts has mapped types and conditional types, weird as they are, pretty unique to itself. In the future, expect ts to be even more functional and absorb ideas from F# which is also from microsoft.
People here forget that typescript is both a language and a static code analyzer for Javascript. You don't have to use Typescript syntax to use. You can write plain old Javascript and still use Typescript compiler to make sens of your code.
You can't do that with ReasonML, you are forced to adopt another language that is not Javascript.
Super set of JS instead of a beging a totally different language, fix its main issue (lack of useful types for error checking and refactoring), adopted by many projects, backed by Microsoft and quickly releasing new versions: there is no wonder it's replacing JS where it can.
It’s a fad. Give it some time… it’s not the first layer on top of JavaScript someone has come up with. Microsoft drops project all the time- this is a stunt on their part to attract devs and it’s actually working for now.
I agree, however its utility outweighs that in a large org. It’s basically indispensable for frontend programming at scale. Having dozens or even hundreds of people contributing to a codebase without it (or equivalent) would be chaotic and painful.
(Disclosure: I work on ads at Google, speaking only for myself)
The solutions I engineered still had to make some compromises and better solutions by dedicated teams were built later on, of course. All this just to say that I can very readily sympathize with the challenges that Googlers must be facing.
Edit: To clarify, I put in my 2-week notice a while back and today was my last day. That's what I meant by "resigned today".
I'd been at Amazon for many years and had always wanted to move on to doing my own startup, which is what I'll be doing starting tomorrow. It's an exciting moment for me. My biggest worry about leaving is figuring out what to do about health insurance, but my fallback plan is to go with COBRA until I figure something out.
Overcoming the incompatibility of npm's multi-version allowance and Brazil's need to have a single version of each package in the transitive closure of the dependency graph without hacks like shrinkwrapping was a key turning point.
I find that as long as the code is reasonably straightforward, I get most of TS's benefits without actually declaring any types. It was kind of a pain to originally set up, but the code hints really are pretty magical.
At this point the features that ts has and reason doesn't out number that of the other way around. I only know that reason has more stringent jsx types and opaque types (easily done in ts in 2 lines of code). On the other hand ts has mapped types and conditional types, weird as they are, pretty unique to itself. In the future, expect ts to be even more functional and absorb ideas from F# which is also from microsoft.
You can't do that with ReasonML, you are forced to adopt another language that is not Javascript.
As others will point out alot has progressed and changed since then, this isn't news.
Lots of previous discussion: https://news.ycombinator.com/item?id=17894764
Deleted Comment
Guess that means Gmail is now 17 years old.
Dead Comment