Hacker Newsnew | past | comments | ask | show | jobs | submit | lewisjoe's commentslogin

This is technically a CRDT. It's just that the "order of operations" to apply over the doc is now resolved using a central server. For context, this is exactly how Google Docs and Zoho Writer works currently. Except that, they use OT with central-server based reconciliation and the proposal uses CRDT-istic approach.

I agree this is more practical if your service anyway run over centralised servers (aka cloud)


> This is technically a CRDT. It's just that the "order of operations" to apply over the doc is now resolved using a central server.

This is not true. One of the most basic traits of CRDTs is that updates are performed without coordination. Relying on a central server to coordinate conflict resolution rejects two of the main traits of CRDTs.

There is a name-drop, but there is no substance.


ELI5: Why not use typescript and an embedded v8 engine or deno to run them? What kind of advantages will I miss if I go for typescript as an embedded language for my application?

Also by using v8, I open up new possiblities via wasm (write in any lang and run it here?)

Will be helpful if somebody enlighten me.


Be warned that V8 is a behemoth and adds 100+MB to your binary size, is quite slow to link, and is not practical to compile from source for most projects. If you want a lighter weight JS runtime there's quickjs, if you want WASM there's wasmtime.

Personally I don't think it's a good choice for what it seems Roto is used for (mission critical code that never crashes) since TS doesn't have a sound typesystem and it's still very easy to fuck up without additional tooling around it.


There's also Duktape for just JS minus the WASM (at least I don't think they've implemented WASM yet).

https://duktape.org/


I think QuickJS wins over Duktape for ES5 compliance, though it's been a few years since I was evaluating embedded JS. They're both extremely easy to integrate into an application, in contrast to V8


Fair, I'm not quite as familiar, but always like to bring up alternatives in case they're helpful. My favorite HN comments lead me to new alternatives for programming.


Roto is a very limited scripting language with no loops. You might compare it with the eBPF language used to load filters into the Linux kernel.


You are comparing a general purpose scripting language (TypeScript) to a DSL (Domain Specific Language) essentially. They built theirs with a specific purpose.


Why would I want to bundle an entire JS runtime? And why do you think you need that for WASM?

And personally I will go out of my way to not use TS/JS if I can


sounds like it's not fast enough for their use case. plus, have you ever tried to integrate v8 into a project? Deno is fine for building binaries, but to date doesn't really have good support out of the box for bundling a script into a library, which this application seems like it would need.


A lack of universally recognized richtext format is really a problem. Why? practically any rich-text that needs to be rendered across platforms (web and mobile devices) are now being stored as html or markdown or app-dependent json.

HTML was never envisioned as a cross-platform richtext format and markdown lacks almost half of all formatting features. Specialzed json is even more evil because the content becomes unrenderable when the parent app goes out of existence.

op's suggestion (accomodating formattings as unicode bytes) might not be optimal however I'm happy at least somebody thought of this as a problem to solve.


Can this be used to build a grammar checker for japanese language?


Even if one could verify grammatical correctness, there are many ways to produce unnatural Japanese phrases.

To give an easy example: 9つ (9 things) is natural, but 10つ sounds extremely strange. However, 10個 sounds fine. When the number is large enough, it's also common to not use 助数詞 at all.

Sometimes, grammatical mistakes are natural Japanese. For instance, there is a concept of ら抜き言葉 (words with ら dropped), where people will say e.g. 寝れない ("I can't sleep") instead of 寝られない. This is an error in conjugation, yet it's natural language and applies to a few other words, too.

Validating both grammar and word choice is still insufficient to judge naturality of a Japanese phrase. A common "mistake" made by many Japanese is writing 「違和感を感じる」. The verb is redundant because of the 「感」 in 「違和感」. The "correct" word to use in this case is 覚える. In practice, however, either choice of word is understandable and considered correct (except to those with the trivia of 「違和感は覚えるもの!」)

Sometimes, redundancy makes phrases considered incorrect (see 二重敬語 for an example). In other cases, nobody will debate the correctness of the phrase.


No, because what people mean when they say grammar checker, it doesn't suffice to check whether a sentence is (formally speaking) ungrammatical or not. You'd expect it also check word choice, ortography etc. Those aren't part of the syntax structure. This means that it would allow many very flawed sentences.

Besides, the grammar this project uses is not likely to reflect accurately the actual grammar of modern spoken or written Japanese, and it's likely not to be even nearly complete; that would mean it would also have a quite lot of false positive "ungrammaticals".

Something _like_ this can certainly be used as a part of a grammar checker. But in that case, you shouldn't implement it in TypesScript's type system in the first place.


No. Japanese is very context sensitive, and like any natural language, has ambiguities. Japanese is loaded with dajare (puns).

Grammar checking basically needs AI - you need to train some model to understand common phrases and sentence structure. Before LLMs there was software like MeCab[1] which done this, and gave good results, but modern LLMs are much more capable.

[1]:https://taku910.github.io/mecab/


Japanese grammar is so simple because it doesn't matter that much.

Most of the "rules" are common patterns made into guidelines, and they'll change depending on the speaker, context, society of the time (the "correct" way is fully dictated by the majority). And you could break the grammar rules as long as the other accepted guidelines are OK.

As a parallel you can learn to mechanically drive a car, but driving it "correctly" will require full knowledge of traffic code, societal rules and how to reasonably handle conflicting situations, including crashing it into a tree if it means avoiding a packed school bus.


No, it's missing basic things, accepts ungramattical sentences, and is fundamentally flawed by being based off nihongokyouiku grammar.


Microsoft really has to pull itself together in terms of product branding. Microsoft 365 itself was a terrible name for an office suite, but adding a "copilot" at the end is hitting too low a bar. Not sure how it even got an approval in the first place.


Today, I noticed there was a new App on my Windows laptop at work, because the Apps section was highlighted. "That's weird," I thought "I don't _remember_ installing anything."

So, I expand "Apps", and I see an item named "Microsoft CoPilot 365". It absolutely did not occur to me that this was a rebranded/updated Office. I simply thought "Aww, man, Microsoft is at it again, raining some new crap on me that I never asked for." Without a moment's thought I right-clicked it and uninstalled. Only now as I read this thread I realize I may have accidentally uinstalled MS Office.


My iPad now has a “windows” app.

Teams is now named “Teams (work and school)”


My guess is that the plan will be Office -> Office 365 -> Microsoft 365 -> Microsoft 365 Copilot -> Microsoft Copilot.


Why was it Microsoft 365 in the first place? Does it not work on leap days ?


Good question, 360 would have been better, full circle coverage of all your (office) productivity needs.


Then the next version would have been Microsoft One.


Microsoft Series X Copilot


Microsoft Series X Copilot for Business E3 with Copilot


The sad part is that that name doesn't feel like that much of a stretch for Microsoft. I wouldn't put it past them to end up with two products called Copilot.


You mean like GitHub Copilot and Microsoft 365 Copilot?


You only pay fro 365 days a year. The leap day is free.


In 2020 I was disappointed they didn't rename it to Microsoft 366.


The Zune didn't ;p


Curious how this can augment document authoring! Can you toss some ideas?


I just think about how often professionals need placeholder images or doodles in their documents, but cliparts are generally terrible and actually making a nice looking drawing for those purposes is out of scope for business users and immensely time consuming... so this fills a nice gap.

I'm obviously biased as a former "business user" writing a document authoring software!


Grammarly has been having an identity crisis ever since LLMs made grammar checking accessible to every company at a fraction of the cost. ChatGPT is killing a lot of companies and grammarly was the first collateral.

This acquisition is concerning because Grammarly is well known for its bad privacy policy and how it's essentially a keylogger. Now that it has access to probably thousands of companies data hosted on Coda is a huge red flag to Coda users.

However it's high time Grammarly evolves itself into some other product or die trying.


Yup.

I also dislike Grammarly because they made it unnecessarily difficult to cancel my yearly subscription. Instead of allowing me to cancel on my own, they forced me to start a thread with their support team, which felt frustrating and inconvenient.

Additionally, I found Grammarly’s approach a bit aggressive, and it often conflicted with other plugins.

ProWritingAid is another plugin that was awfully buggy.

I switched to LanguageTool, which I genuinely love and support. However, to be honest, I’ve always felt that basic features like grammar checking, proofreading, and editing should be built directly into the operating system, rather than requiring additional plugins. Even LanguageTool isn’t compatible with every app, which can be limiting.

Thanks to advancements in LLMs, I’m finally hopeful that this functionality will become standard, eliminating the need for tools like LanguageTool altogether.

That said, it’s probably a long way off, especially considering how lackluster Apple’s AI capabilities have been so far.


Grammarly has been having an identity crisis ever since LLMs made grammar checking accessible to every company at a fraction of the cost. ChatGPT is killing a lot of companies and grammarly was the first collateral.

This acquisition is concerning because Grammarly is well known for its bad privacy policy and how it's essentially a keylogger. Now that it has access to probably thousands of companies data hosted on Coda is a huge concern.

But it's high time Grammarly evolves itself into some other product or die trying.


The other day, Grammarly marked a grammar error in my text. I wasn’t too sure about it, so I asked ChatGPT (4o) to explain it. It agreed with Grammarly. I wasn’t convinced and didn’t understand ChatGPTs justification, so I asked again but using the more advanced o1 model… this time ChatGPT said Grammarly was wrong.

… ChatGPT is good at improving grammar, but it doesn’t “understand” what it’s doing (by design), and doesn’t have a complete and consistent ruleset, which is what you want in a grammar checker. Also, grammar and style rules change with time, and you want to have good and precise control of what rules you’re applying.


Can you share the alleged error and the arguments for and against it?


I am perplexed by Grammarly getting progressively worse as time goes by. I am seriously considering spending a weekend or two on writing myself a small LLM powered clone. I think a browser extension for Gmail should be relatively easy. I am not sure about Word (desktop) and Google Docs though.


> I think a browser extension for gmail should be relatively easy.

Hold your beer, I built that https://chatgptwriter.ai


Haha nicely done!

However, it is more expensive than Grammarly's annual plan and there is no Office app. I do like the different models, though, and it looks very polished.

Have you considered letting users add their own "writing tones"? I have a few Custom GPTs for different types of recipients. Perhaps your users would like such a feature.


> Have you considered letting users add their own "writing tones"?

Even better, I recently implemented the Prompt Template feature. You can create as many prompt templates as you like and insert them with one click. It's a recent feature, so the landing page is not updated, but you can try it for free (without adding a credit card) at https://chatgptwriter.ai/extension.


This seems to be one of those glorified ChatGPT API wrappers. Only available on Chromium, free tier is 15 corrections a month with the next recommended tier being $350 dollars a year. I think I'll pass.


> I am perplexed by Grammarly getting progressively worse as time goes by.

Leadership issue.


> I am perplexed by Grammarly getting progressively worse as time goes by

They switched from parse trees and rules to LLMs, presumably some things got better and some got worse


Grammarly may have been collateral damage, but the first target to be nuked was Chegg.


Students these days have no idea of the struggle.

Then again, I can't imagine the struggle of having to rely entirely on libraries pre-internet


I graduated in the mid 2000s, and right around that time they moved the main library collection into a mechanical bin that you have to request an attendant to request books for you.

I have fond memories of looking up X, and going to the library and exploring the section where X was stored, along with all the books around it. this experience is dead now with their new "system". It's been about 20 years and I'm an old dog now with limited energy. but I would love to (if I were a political activist) do an expose story about how many books were checked out before this transfer was made vs after. I strongly suspect that a lot of knowledge was lost, just due to the friction of having to know which exact book you want, vs having the liberty to browse and freely select whatever you stumbled upon. and not all the info is online, now. due to licensing and copyright. Google Books tried to fight that, but lost. It's sad.


I loved going through our (small) programming & computers section in our school library in the early 2000s, and visiting the local library with a much larger one. I picked up PHP because of that :)


As a 70's child I wouldn't call it a struggle, at least we didn't saw it like that.


Microfiche are amazing, that's what I remember most.


We had fewer distractions, though, even if we didn't have all the world's information so close at hand. I think I'd pick that struggle again over what today's students go through. But I'm glad to have lived in both eras.


I'm not that old, and I still remember being really disappointed when something wasn't in my home (book) Encyclopedia. Then you would trudge to the library to find maybe one book on the obscure topic.

You could request a book be sent from another library, but that would take weeks, and you had no idea what was in that book.

It was wild. Most things were just unknown, or whatever you parents told you.


I didn't even know Grammarly had so much cash that they can acquire something. I thought it was on the road of being acquired since GPT 3.5 was out.


Is Grammarly anything more than glorified autocorrect?

Curious if anyone here uses it, and if so, what value it provides (I've been bombarded with its ads for years, but could never see what value it provides). Even a quick search of its website gives inanely basic examples (like correcting Ive to I've) [1].

[1] https://support.grammarly.com/hc/en-us/articles/360047727871...


I myself do not, but some people I know who are intelligent and articulate and also dyslexic struggle to get their thoughts expressed in writing adequately for professional life, especially in the “everyone live co-editing” environment these days. Many of them report Grammarly being a valuable tool for them to feel like they’re on a more even playing field.

So yes, fancy autocorrect, but apparently better enough to matter for them.


Having English as a second language, it was essential for me for a long time. I never understood why they never marketed to that public.

I don’t pay for it anymore because I am more comfortable in my current company where I am sure my colleagues won’t be bothered by frequent mistakes and misspellings. Also, for the eventual more important text that I want to be grammatically perfect, there is free ChatGPT now.


It’s a glorified autocorrect. It is not useful for people who are already decent at writing.


My CTO uses it, which is frankly, terrifying. We'll be in a shared screen session editing slides for a board meeting or very sensitive docs, and their little UI prompts are shining away.

...and it's not like it improves his grammar or spelling - they're still terrible!


Is the CTO aware that the information being checked could be leaked to a competitor?


Do you think Grammarly is offering up individual’s logs to the highest bidder?



You mean there was a vulnerability, that they claim was patched within hours of release and never exploited, and only affected the Grammarly Editor interface?

At that point you might as well include every OS because everything contains saved data and vulnerabilities. That’s extremely different than grammarly collecting and selling off private data that they promise is private.

If your competitors are trying to actively hack you and steal your data…


Grammarly at least used to be deterministic and fast. Its edits are consistent and its mistakes are easier to spot. That alone is enough of a value proposition over LLMs, especially since their tech required years of computational linguistics research, whereas anyone can write an OpenAI API wrapper...


What? But in chatgpt I have to copy it to chatgpt.

With Grammarly it's right here in the text box as I am typing.


>his acquisition is concerning because Grammarly is well known for its bad privacy policy and how it's essentially a keylogger. Now that it has access to probably thousands of companies data hosted on Coda is a huge concern.

And how does ChatGPT differ?


> which is very likely how G wants them to be perceived

One of the authors of the book is Chris, who leads the Blink rendering team at G :)


When working with formatted text content like in Google Docs / Zoho Writer: moving a list item down or adding a new column or any table/list operation is essentially a tree manipulation op.

Concurrent conflicts in such cases are notoriously hard to converge without contextual special handling [1]. Does this implementation generalize a solution for such use-cases?

I guess it should be possible to combine a list(or string) CRDT for leaf nodes (i.e text blocks) and use this tree CRDT for structural nodes (lists & tables).

But that will make augmenting every op with two-dimensional address (parent-id, index_offset_into_that_parent)

[1] https://github.com/inkandswitch/peritext/issues/27


That’s always how I’ve imagined it. Rich text is plain text with 2 additions: Annotation ranges (for bolded regions and such) and non-character elements (Eg a table or embedded image). A text crdt is fundamentally just a list crdt that happens to contain character data. So embedded elements can easily be modelled as a special item (the embedded child node), and with size of 1 like any other item in the string. And then with the right approach, you can mix and match different CRDTs in a tree as needed. (Rich text, contains a table, and one of the cells has an image and so on).

Augmenting every op with a parent-crdt-id field is unfortunate but I think unavoidable. Thankfully I suspect that in most real world use cases, it would be very common for runs of operations to share the same parent crdt. As such, I think those ID fields would run-length encode very well.


The implementation can indeed combine multiple different CRDTs. Within Loro's internal implementation, each op does need to store a parent ID. However, as Seph mentioned, consecutive operations under the same parent can be effectively compressed, so the amortized overhead of these parent IDs is often not significant.


Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: