News for hackers. Stuff that matters.

spyder81

Re:ReScript 8.4 on Tuesday December 15, 2020 @02:58AM (#25428052)
It was never official, and the people behind it folded into the new ReScript team.
Re:ReScript 8.4 on Tuesday December 15, 2020 @02:55AM (#25428031)
"readable output" isn't really about being human-readable, except in unrealistic example cases. The bigger benefit is shared data types; this helps immensely with JS interop.

https://rescript-lang.org/docs/manual/latest/shared-data-typ...

Re:ReScript 8.4 on Tuesday December 15, 2020 @02:41AM (#25427961)
ReasonML is, as it has always been, a 100% syntax map to OCaml. It will always be that, but moving forward it will be nothing more than that. Compiling future ReasonML versions to JS will require js_of_ocaml.

The success of BuckleScript meant that a _lot_ of people used what they thought was ReasonML but it was really ReasonML+BuckleScript. This lead to a ton of confusion the moment newcomers realised they needed a second website to look up APIs.

ReScript includes a snapshot version of ReasonML for backwards compatibility, but it will never be upgraded.

The future of ReasonML is likely slow and steady progress, potentially fading into obscurity as the target audience is now very small (OCaml developers who don't like OCaml syntax).

Re:ReScript 8.4 on Tuesday December 15, 2020 @02:34AM (#25427922)
It's still on 4.06, I think in 2021 they're targeting an upgrade (they haven't said how far forward they will upgrade to)
Re:ReScript 8.4 on Tuesday December 15, 2020 @02:33AM (#25427916)
Quite the opposite, Reason v4 looks to be taking inspiration from the changes ReScript has made.
Re:ReScript 8.4 on Tuesday December 15, 2020 @02:28AM (#25427895)
ReasonML isn't dead, but the way I heard the story it has always been a spare time project not a properly funded FB team. There was just enough spare time early on to get the community excited.

From the same source, I heard ReScript does have funding behind it.

Re:ReScript 8.4 on Tuesday December 15, 2020 @02:26AM (#25427885)
The TinyMCE team is building a big new feature with it

https://www.tiny.cloud/blog/tinymce-reasonml/

We aren't sure when we will be able to open source the new model, and we are still using Reason syntax with the ReScript compiler, but we will transition to ReScript syntax eventually.

Re:ReScript 8.4 on Tuesday December 15, 2020 @02:23AM (#25427860)
IMO this isn't about whether ReScript wants to upstream their changes, it's a combination of things:

- Reason+BuckleScript was confusing at best, having two websites and different release schedules.

- Reason's goal is to be a 100% mapped syntax for OCaml. This does not mesh well with the goal of producing readable JS, so ReScript will probably end up as a subset of OCaml features.

- Reason syntax changes apparently caused grief when applied to BuckleScript. This one was never very clear, but regardless now that the syntax is in-house the ReScript team can be more responsive with it.

The problem with this transition is that it was dropped on the community in an unfinished state and BuckleScript was retired completely. The goals of the change are, I think, mostly reasonable.

Re:ReScript 8.4 on Tuesday December 15, 2020 @02:13AM (#25427818)
You might have been able to use the same syntax before, but writing code for Reason native was already very different to writing Reason+BuckleScript for the browser. This just formalises the split.

To write the same code for both front and back end js_of_ocaml has been the standard since long before Reason came along, and it works just fine with Reason native.

Re:Reason React 0.8 on Thursday May 14, 2020 @01:50AM (#23175826)
The standard compiler can do a cold compile of a single file in milliseconds. When the compiler is that fast you _can_ just wrap it up and it'll still be faster than TypeScript.

But to answer your actual question: The current standard (reason-language-server) does simply wrap the compiler, and it's more than fast enough, but the community is working on a new merlin-based language server (ocaml-lsp) which does support partial compilation.

Re:Real-Time collaboration in TinyMCE with Slate.js on Friday February 21, 2020 @01:07AM (#22381252)
This is the second post in a series, discussion from the first post: https://news.ycombinator.com/item?id=22039950
Re:OT and CRDT trade-offs for Real-Time collaboration on Wednesday January 15, 2020 @04:38PM (#22058981)
It's hard to offer more detail than that in a blog post. I'm not going to repeat the research papers or write one of my own. The post is already so long and complex, covering so many surface details, I couldn't reasonably push it any further.
Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @09:03PM (#22051147)
User experience is definitely why we didn't go for an existing CRDT solution.

The model we've chosen is fairly agnostic to whether OT or CRDT is used to collaborate, as I'll expand on in the second post, so if we see an opportunity to switch to a CRDT-based solution we'll certainly jump on it!

You only need to normalise things like bold/italic/underline when using a browser DOM, every collaborative rich text model I've seen represents formatting as unordered attributes which is much easier to collaborate on.

Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @08:22PM (#22050943)
atomic elements doesn't really extend to arbitrary HTML, which is fine for the simpler editing solutions but not TinyMCE.

To do something like that in arbitrary HTML you wind up locking at the top-level-block boundaries. Locking sounds great as an engineer but it leads to a garbage user experience.

Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @08:19PM (#22050928)
It is, as I'll cover in the second post ;)
Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @08:19PM (#22050925)
I haven't! This is what our server team is looking at as an option for encrypting our RTC traffic.

https://tweetnacl.js.org/ https://github.com/dchest/tweetnacl-js/wiki/Examples

Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @08:17PM (#22050918)
It's not impossible, particularly in cases where the model is fairly flat.

In complex models it is symptomatic of a larger issue with complexity in CRDTs; the post was already quite long and I didn't want to repeat any more of the research I'd linked to.

Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @08:15PM (#22050905)
I wasn't really trying to say OT is better than CRDT. Nor was I intending to provide a complete detailed explanation (there's enough research already).

I was driving at CRDT not being capable enough for arbitrary HTML structures, and giving a quick summary of what was an extended multi-week research process.

Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @06:58PM (#22050501)
I'm a big fan of Automerge, I look forward to where the research takes it!
Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @06:51PM (#22050465)
I've been given advice that ShareDB is "pretty antiquated and not well supported". I'm told it is not difficult to rewrite in modern NodeJS, replacing things like callbacks and event emitters with async/await produces a much simpler and more reliable server.
Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @06:48PM (#22050443)
I'll cover this in the second post but we will be using ShareDB for our initial launch (although probably building our own once we hit production release).
Re:OT and CRDT trade-offs for Real-Time collaboration on Tuesday January 14, 2020 @06:38PM (#22050371)
I definitely read a few of your posts during my research, thanks for your hard work :)

The best CRDTs do treat each character separately (as I think I mentioned at one point?). But not all of them - the video and my example is an example of one that doesn't.

It's also very difficult to support arbitrary nested trees with a per-character data type, which leads to the compromises I talked about.

Re:OT and CRDT trade-offs for Real-Time collaboration on Monday January 13, 2020 @09:00PM (#22041109)
That's included in my research links, yes :D
Re:OT and CRDT trade-offs for Real-Time collaboration on Monday January 13, 2020 @08:59PM (#22041105)
The second post will cover which editor model we chose, and talk a little bit about the OT implementation details ;)
Re:OT and CRDT trade-offs for Real-Time collaboration on Monday January 13, 2020 @08:57PM (#22041088)
We're using property-based testing where we can, which I hope to cover in a future post
Re:The Horror in the Standard Library on Saturday May 06, 2017 @01:57PM (#14281466)
"Then I remembered reading something long ago" is when experienced programmers are worth their weight in gold.
Re:Why OCaml, why now? (2014) on Monday February 16, 2015 @05:18PM (#9059407)
In the presence of laziness, it can be very difficult to reason about what code executes when. When you don't know when your unsafe IO happens, things can get out of order or have other unforeseen side effects.
Re:Why OCaml, why now? (2014) on Sunday February 15, 2015 @05:21PM (#9054387)
That's exactly why most FP articles and tutorials around the net didn't help me, but Dan Grossman's "programming languages" coursera course did.

If (when) I ever learn enough to talk about why OCaml is better in detail, it will be with concrete examples not buzzword bingo :)

Older »