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

Ah these poor fools. Having built this exact product (OOXML compatible editor in React) before, it took all of two minutes to find a bug. The issue is that the OOXML spec is not in fact definitive - Word is, and trying to implement it from the spec will produce something that works maybe 80% of the time then fall over completely when you hit one of hundreds of minor, undocumented edge cases. Assuming of course that CC did not just hallucinate something. And then there's the more fundamental problem that HTML/CSS has unresolvable incompatibilities with OOXML. This is why Google Docs for instance use canvas for rendering.

I feel your pain. PDF applications have the same problem. The thousand page PDF spec isn't actually the spec, Acrobat is the spec.

Acrobat at least hasn't been relevant for over a decade outside of niche concerns (like javascript-enabled pdfs, which I have seen exactly twice in the wild... these should be illegal by the way). You can't say the same about microsoft.

This is not true IME, because PDF and PostScript are so tightly coupled. If your PDF renderer doesn't tightly align with Acrobat, it's highly likely to not print correctly, hence Acrobat __is__ the spec.

I feel the pain having had to build a browser based pdf editor with features not found anywhere else. React was hammered into working and turned out pretty good. But my god, it was quite a journey. As with all enterprise projects, this one was shelved because business changed their minds. Two years of figuring it out just wasted …

do people still use acrobat? since pds becoming prolific in browsers and word and stuff i mean

IE was used well until EOL and is still being used in some places. I have no doubt Adobe Acrobat is the same way. Likely few if any new users but old ones will keep using what they're familiar with.

When I saw the title I couldn't help but ask myself: how?

The spec is over 5000 pages long - no way in hell a human could parse this in a reasonable timeframe and no agent today has nearly the necessary context.

EDIT: also, like you said: the spec is secondary to the implementation and was only published (and not even in complete form originally!) because Microsoft was asked by the EU to do that.


Fair point, we know the editor isn't yet 1:1 with Word. When you built yours, was Word your source of truth (reverse-engineering sense), or did you stick to MS-OE376? And any recommended process for systematically uncovering those undocumented edge cases?

We went out and used our editor against our and customer's documents. The Open part of OOXML makes as much sense as the Open in OpenAI. Microsoft made OOXML available to fend off an antitrust lawsuit, there is no incentive for them to make it actually easy to build competing editors off their specification.

FWIW the bug I found is that your comment parser assumes the w:date attribute represents a useful timestamp of when comments are made. It does not - a bug in Word causes it to save it as ISO8601 local time but _without timezone_, rendering it useless if more than one user across different timezone edits the document. Instead, you need to cross reference the comment with a newer comment part and find a dateUtc attribute. The above is, of course, completely undocumented.


Can you say the name of the editor your worked on?

When you built this exact product, how long did it take you to reach 80% compatibility?

>> how long did it take you to reach 80% compatibility?

Honest question: when the formal spec isn't really a spec how do you even measure "80% compatibility"?


We don’t have a formal '% compatibility' metric yet, but it’s on our radar as a feedback loop mechanism for self-improvement.

For now, we mostly rely on testing with our own and customer docs. In practice, we were seeing solid results after a couple of days of keeping Claude working in the loop and giving lots of feedback: .docx files along with screenshots annotated to highlight what didn’t work.


This is a very naive mindset, getting the last 10% is going to be 90% of the work. Learn from other projects that have tried and failed. I can guarantee you LibreOffice was not built with "our own and customer docs" as a test harness.

Arent there any commercial libraries available already?

Somehow this reminds me of PDF


Also while searching for SimCity screenshots I found someone recreating NYC in SimCity 4 https://www.reddit.com/r/simcity4/comments/12dkxey/check_out...


Another fun fact - lodash/fp doesn't deduplicate with lodash when bundled. For a couple of months I was wondering why our app had bundled two copies of lodash. I dismissed it as a measurement artifact at first. It took so long to realize there was actually two copies of lodash and it was because one developer on our team had a preference for fp syntax.


Links can have that as their href and it will also work as you'd expect. It's the telephone equivalent of the more well-known mailto: scheme


Now we should add a ?message= query string to be read out loud in the users voice.


It's not random, setting the query string to a new value on every fetch is a cache busting technique - it's trying to prevent the browser from caching the page, presumably to increase bandwidth usage.


It's trying to prevent the server from caching the search. Thousands of different searches will cause high CPU load and the WordPress might decide to suspend the blog.


Pretty sure that blog is hosted on Wordpress.com infrastructure so it's not like the blog owner would even notice unless it generates so much traffic that WP itself notices.

That said I don't think there's many non-malicious explanation for this, I would suggest writing to HN and see about blocking submissions from the domain hn@ycombinator.com


Note that this is 51kb, it's not exactly lightweight https://bundlephobia.com/package/@js-temporal/polyfill@0.5.1. Still good for forward compatibility or on the server, but for smaller apps it's significant.


Yep, I’ve been using this one which is lighter (20kB): https://github.com/fullcalendar/temporal-polyfill/


Yeah, supporting iOS 12 in 2025 is odd. I was investigating browser support levels just recently for a library and also settled on iOS 16 as a reasonable level.

For reference, iOS 12.x and below are used 0.33% globally https://browsersl.ist/#q=safari+%3C+13+or+ios+%3C+13. Selecting iOS 16 would still exclude less than 1% globally https://browsersl.ist/#q=safari+%3C+16+or+ios+%3C+16. In both cases the vast majority would be older iOS which is unfortunate because I assume they're on older devices with no upgrade path, but you have to decide on the transpile/polyfill cutoff at some point and browser support has an extremely long tail.


For anyone confused by why the text says the performance is improving between each graph but the lines don't seem to show that - the color for each key and the scale changes between graphs.


Since it didn't gain traction the first time round, I'll just leave this here:

> Clad Labs launches Chad IDE, the first ever "brainrot IDE" https://www.ycombinator.com/launches/OgV-chad-ide-the-first-...



I might be too middle aged to understand. Is this a joke? It's absurd. How did this get funded?


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

Search: