<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: sheetjs</title><link>https://news.ycombinator.com/user?id=sheetjs</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 31 Oct 2026 15:23:50 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=sheetjs" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by sheetjs in "Donald Knuth's 2024 Christmas Lecture: Strong and Weak Components [video]"]]></title><description><![CDATA[
<p>Knuth is also still reviewing TAOCP-related email and issuing reward checks. A teammate received a reward check for 1 hex dollar last month after finding an error in Seminumerical Algorithms. Along with the check, there was a printout of the original email with hand-written annotations.</p>
]]></description><pubDate>Fri, 07 Feb 2025 08:15:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42970541</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=42970541</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42970541</guid></item><item><title><![CDATA[New comment by sheetjs in "Ask HN: Who is hiring? (March 2023)"]]></title><description><![CDATA[
<p>SheetJS | <a href="https://sheetjs.com/" rel="nofollow">https://sheetjs.com/</a> | Software Developer | Full time, Remote (US) | $165K - $240K<p>We're a bootstrapped company building open source solutions for spreadsheets and structured data. With over 1.8M unique monthly visitors, companies across the business world turn to us for challenging data processing problems. Over the last 10 years, we have pushed the boundaries of JavaScript and the web.<p>In this role, you will master new and established technologies while working on high-impact projects used by millions of people across the world. Balancing research and engineering, you will design and implement creative solutions that draw from your academic and professional experience.<p><a href="https://sheetjs.com/careers/" rel="nofollow">https://sheetjs.com/careers/</a> more details</p>
]]></description><pubDate>Wed, 01 Mar 2023 18:15:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=34986096</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=34986096</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34986096</guid></item><item><title><![CDATA[New comment by sheetjs in "We compete with GitHub. Bing does not show our website"]]></title><description><![CDATA[
<p>Last year, Bing and Edge erroneously flagged our website <a href="https://sheetjs.com/" rel="nofollow">https://sheetjs.com/</a> as "dangerous": <a href="https://i.imgur.com/BvA3zrk.png" rel="nofollow">https://i.imgur.com/BvA3zrk.png</a><p>At the time, there was no "Safety Report" to indicate why Bing thought it was dangerous.  The report page linked to <a href="https://www.bing.com/toolbox/bing-site-safety?url=https%3a%2f%2fsheetjs.com%2f" rel="nofollow">https://www.bing.com/toolbox/bing-site-safety?url=https%3a%2...</a> and it said "That web page doesn't exist"<p>To fix it, we had to register with "Bing Webmaster Tools" (<a href="https://www.bing.com/webmasters/about" rel="nofollow">https://www.bing.com/webmasters/about</a>) and raise a support ticket.<p>Within a few days, the issue "resolved itself".  It's possible that raising a ticket forced some automatic refresh of the indexed data for the domain.</p>
]]></description><pubDate>Thu, 09 Feb 2023 19:31:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=34729892</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=34729892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34729892</guid></item><item><title><![CDATA[New comment by sheetjs in "Why does 0.1 and 0.2 = 0.30000000000000004?"]]></title><description><![CDATA[
<p>Under the hood, modern Numbers stores values in Decimal128 (16 bytes)</p>
]]></description><pubDate>Wed, 08 Feb 2023 19:17:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=34713287</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=34713287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34713287</guid></item><item><title><![CDATA[New comment by sheetjs in "Ask HN: Who is hiring? (February 2023)"]]></title><description><![CDATA[
<p>SheetJS | <a href="https://sheetjs.com/" rel="nofollow">https://sheetjs.com/</a> | Software Developer | Full time, Remote (US) | $165K - $240K<p>We're a bootstrapped company building open source solutions for spreadsheets and structured data. With over 1.5M unique monthly visitors, companies across the business world turn to us for challenging data processing problems.  Over the last 10 years, we have pushed the boundaries of JavaScript and the web.<p>In this role, you will master new and established technologies while working on high-impact projects used by millions of people across the world. Balancing research and engineering, you will design and implement creative solutions that draw from your academic and professional experience.<p><a href="https://sheetjs.com/careers/" rel="nofollow">https://sheetjs.com/careers/</a> more details</p>
]]></description><pubDate>Wed, 01 Feb 2023 19:14:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=34615971</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=34615971</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34615971</guid></item><item><title><![CDATA[New comment by sheetjs in "Bun v0.5"]]></title><description><![CDATA[
<p>Under the hood, numpy and friends punt to native code.  FFI / native module performance becomes a bottleneck, and Bun is correctly focusing in this area.  Shumai [1] is a cool library for Bun that also punts to native code<p>[1] <a href="https://github.com/facebookresearch/shumai">https://github.com/facebookresearch/shumai</a></p>
]]></description><pubDate>Wed, 18 Jan 2023 21:30:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=34433376</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=34433376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34433376</guid></item><item><title><![CDATA[New comment by sheetjs in "Bun v0.5"]]></title><description><![CDATA[
<p>JavaScript has a massive and unrivaled ecosystem outside of core data analysis.  The main hurdle to adoption is ecosystem and community.  A generation of applied mathematicians and data scientists were trained on Python.  Python overcame older ecosystems like Matlab and Fortran for its ease of use for other general computing tasks (Matlab is a decent language for large array manipulation but soft tasks like string processing are kludgy compared to Python).<p>In the same way that Python developers are interested in extending their ecosystem to other spaces, JavaScript developers are interested in growing into the data science space.  But that doesn't happen unless there's a clear benefit for switching.<p>What advantages do a native JS solution have over Python? Performance: There are arguably many more developers and companies focused on pure JS performance than python. Community: A JS solution opens up a much larger pool of talent to build innovative solutions. Cost: Running heavy computations client-side, in the web browser, reduces costs for service providers.<p>PS: We're hiring for this and other related problems <a href="https://sheetjs.com/careers" rel="nofollow">https://sheetjs.com/careers</a></p>
]]></description><pubDate>Wed, 18 Jan 2023 21:10:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=34433122</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=34433122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34433122</guid></item><item><title><![CDATA[New comment by sheetjs in "The World Cup of Microsoft Excel"]]></title><description><![CDATA[
<p>The hardest unsolved problem is document compatibility.  It's not enough to have a cool tool -- you need to be able to interchange data with existing users of Excel and other workflows.  This was an important piece during Excel's journey to overtake Lotus 1-2-3.<p>We (<a href="https://sheetjs.com/" rel="nofollow">https://sheetjs.com/</a>) have been looking into document compatibility for 10 years (celebrating our 10 year birthday this week!), and our eponymous open source project <a href="https://github.com/sheetjs/sheetjs" rel="nofollow">https://github.com/sheetjs/sheetjs</a> is used by companies large and small. It's not a particularly glamorous subject and doesn't tend to electrify people in the same way as build tools or frameworks.<p>.<p>There are ways to improve upon the space, but the problem is that the world has changed.  Excel was designed to be the "center of the universe", a creative substrate that bypassed org security policies and enabled extremely flexible line of business tools.  Excel was designed to be used by one user at a time, with fundamental inconsistencies blocked at the UI level (for example, try entering a bad custom number format).  This made sense 20 years ago, but it doesn't make as much sense now.<p>The current crop of SaaS companies effectively monetize access to the data.  They aren't incentivized to make it easy to export metadata back to Excel -- they want to keep you using the software.  This runs at odds with the data portability and freedom that is needed for a successful replacement.<p>Whatever will replace Excel won't be a facsimile of the current tooling (what Google and Apple are trying to do), nor will it be a siloed experience (what the myriad of SaaS apps are trying to do).</p>
]]></description><pubDate>Sun, 04 Dec 2022 01:55:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=33849737</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=33849737</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33849737</guid></item><item><title><![CDATA[New comment by sheetjs in "Encoding issues in a spreadsheet received from digital collection donors"]]></title><description><![CDATA[
<p>Unfortunately the source spreadsheet was not shared, but the root cause was a misreported codepage (which you can actually fix with a hex editor!)<p>"Â ", where the second character is a unicode non-breaking space characters (U+00A0), is the CP1252 encoding of the byte sequence [0xC2, 0xA0] which is the UTF-8 encoding of "\u00A0".  So all that really needs to happen is to get Excel to think that the file is UTF-8 encoded.<p>The fix? For XLS, there is a special Codepage record that indicates how strings are to be interpreted.  The magic value to force UTF-8 interpretation is 65001, and it is possible to use a hex editor to find exactly where that record is located and change it.</p>
]]></description><pubDate>Tue, 02 Aug 2022 07:36:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=32316068</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=32316068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32316068</guid></item><item><title><![CDATA[New comment by sheetjs in "OfficerBreaker – pptx/docx/xlsx password remover"]]></title><description><![CDATA[
<p>A Seattle Times article from 1989:<p>> Inside Microsoft – A ‘Velvet Sweatshop’ or a High-Tech Heaven?<p><a href="https://www.seattletimes.com/business/archive-inside-microsoft-a-velvet-sweatshop-or-a-high-tech-heaven/" rel="nofollow">https://www.seattletimes.com/business/archive-inside-microso...</a></p>
]]></description><pubDate>Sun, 24 Jul 2022 00:43:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=32209070</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=32209070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32209070</guid></item><item><title><![CDATA[New comment by sheetjs in "OfficerBreaker – pptx/docx/xlsx password remover"]]></title><description><![CDATA[
<p>This password specifically refers to "Password to Modify" and Excel 2019 / 365 clearly warn in the reenter password popup:<p>> Caution: Password to modify is not a security feature.  ... Malicious users can edit the file and remove the password.<p>This type of "protection" is also present in the VBA blobs (where you can change a few bytes and work around the VBA protection)<p>Saving a file with a password to open actually employs encryption.  The exact setting can be tuned with registry settings, but is typically AES-128-CBC.<p>Saving a file as "read-only" encrypts the file with the standard password "VelvetSweatshop"</p>
]]></description><pubDate>Sun, 24 Jul 2022 00:40:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=32209056</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=32209056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32209056</guid></item><item><title><![CDATA[New comment by sheetjs in "Top-500 NPM package maintainers now require 2FA"]]></title><description><![CDATA[
<p>Hi, random developer that somehow ended up in the top 500 but didn't have 2FA turned on (<a href="https://www.npmjs.com/package/xlsx" rel="nofollow">https://www.npmjs.com/package/xlsx</a>)!  npm inc invalidated all of our authentication tokens in mid April and we have been unable to sign in via the web interface since then.  Assumably the same fate befalls other random devs.</p>
]]></description><pubDate>Tue, 31 May 2022 22:27:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=31575690</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=31575690</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31575690</guid></item><item><title><![CDATA[New comment by sheetjs in "VisiCalc Executable for the IBM PC (1999)"]]></title><description><![CDATA[
<p>Software Arts published an official technical specification of the DIF file format in 1983. [1] (to save a file in the DIF format, /S#S in VC)<p>It is certainly an interesting format, and Excel completely mangles the data (whether it was intentional is up for debate).  For example, the value<p><pre><code>    1,0
    "0.3"
</code></pre>
represents the literal string 0.3 in VisiCalc (the 1,0 indicates that the next line is a string).  Excel ignores the typing and tries to parse as a value, interpreting it as the number 0.3.  Like with CSV, there's an awkward formula workaround for generating a file with the text "0.3":<p><pre><code>    1,0
    "=""0.3"""

 [1] https://atariwiki.org/wiki/attach/VisiCalc/DIF_Technical_Specification.pdf</code></pre></p>
]]></description><pubDate>Wed, 06 Apr 2022 06:20:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=30929010</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=30929010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30929010</guid></item><item><title><![CDATA[New comment by sheetjs in "Tips For Making a Popular Open Source Project in 2021"]]></title><description><![CDATA[
<p>Maybe a story from a maintainer would help.  To contextualize, the main SheetJS open source project <a href="https://github.com/SheetJS/sheetjs" rel="nofollow">https://github.com/SheetJS/sheetjs</a> has over 28K stars.<p>tl;dr: the project involves "crowdsourced research" which benefits from popularity.<p>The main social goal with the project is data preservation and integrity.  Large-scale economic and political decisions are made from data and analyses in spreadsheets.  For example, last year in the UK, COVID cases were underreported thanks to Excel minutiae <a href="https://www.bbc.com/news/technology-54423988" rel="nofollow">https://www.bbc.com/news/technology-54423988</a><p>Due to various corporate stratagems, the older data representations were intentionally obfuscated.  To support Excel, many developers poked around at Excel files and guessed at the structures.<p>In this environment, the biggest challenge is finding worksheets with random corner cases.  These types of files are not easy to create and fuzzing has limited effectiveness.  This is where open source and popularity come into play.  The open source and JS nature of the project helps reduce testing friction (<a href="https://oss.sheetjs.com/" rel="nofollow">https://oss.sheetjs.com/</a> runs in the web browser, no need to install anything) and encourage bug reports with test cases.<p>There will always be "entitled users" and "low quality bug reports" but that comes with the territory.  There are also meaningful issues and code contributions.  Efforts at trying to prevent the low quality contributions also discourage higher quality contributions.</p>
]]></description><pubDate>Fri, 12 Nov 2021 20:12:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=29203999</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=29203999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29203999</guid></item><item><title><![CDATA[New comment by sheetjs in "Life Before Unicode"]]></title><description><![CDATA[
<p>Pre-Unicode issues still haunt us today, kept alive by various file formats that rely on system encoding.<p>Under the Apple "Mac-Roman" encoding [1], the standard MacOS encoding before OSX switched to Unicode, byte 0xBD currently is capital omega (U+03A9 Ω).  However, in the original 1994 release of the character set, they erroneously mapped to the ohm sign (U+2126 Ω)  Apple eventually fixed this in 1997, as noted in the changelog:<p><pre><code>    #       n04  1997-Dec-01    Update to match internal utom<n3>, ufrm<n22>:
    #                           Change standard mapping for 0xBD from U+2126
    #                           to its canonical decomposition, U+03A9.

</code></pre>
However, in 1996, Microsoft copied over the mac encoding to CP10000 using the incorrect character [2].  Unfortunately the codepage was not corrected when Apple realized their mistake.<p>This discrepancy leads to a huge number of strange issues with various versions of Excel for Mac (BOM-less CSV, SYLK and other plaintext formats default to system encoding) and other software that use Microsoft's interpretation of Apple's Mac-Roman encoding rather than Apple's official character set mapping.<p>[1] <a href="http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT" rel="nofollow">http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.T...</a><p>[2] <a href="http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/ROMAN.TXT" rel="nofollow">http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/RO...</a></p>
]]></description><pubDate>Tue, 24 Aug 2021 08:11:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=28286207</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=28286207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28286207</guid></item><item><title><![CDATA[New comment by sheetjs in "My tiny side project has had more impact than my decade in the software industry"]]></title><description><![CDATA[
<p>Our story is very similar.  I wrote a small library for converting XLSX and XLS files to CSV.  Over the years, that grew into one of the most popular open source libraries on npm/github: <a href="https://github.com/SheetJS/sheetjs" rel="nofollow">https://github.com/SheetJS/sheetjs</a><p>Back in 2015, 'patio11 reached out to us. In addition to a structured license purchase, he gave great insights and actually wrote a blog post about the experience <a href="https://www.kalzumeus.com/2015/01/28/design-and-implementation-of-csvexcel-upload-for-saas/" rel="nofollow">https://www.kalzumeus.com/2015/01/28/design-and-implementati...</a><p>Today, we offer paid software builds to solve related problems and it allows us to work on SheetJS full-time!</p>
]]></description><pubDate>Sun, 01 Aug 2021 19:26:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=28029086</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=28029086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28029086</guid></item><item><title><![CDATA[New comment by sheetjs in "The Tyranny of Spreadsheets"]]></title><description><![CDATA[
<p>> Spreadsheet evolution has been slow though.<p>Excel has to contend with nearly 40 years of backwards compatibility (MultiPlan, the predecessor to Excel, was released in 1982) and a deep userbase that literally has decades of experience and muscle memory with the software.  The Symbolic Link "SYLK" file format introduced in MultiPlan is still supported in recent versions of Excel, leading to the infamous CSV "ID" issue.<p>Many of our users still run very old versions of Excel and Windows (e.g. Excel 5.0 on Windows 95) because a change in a future version of Excel caused problems or gave different results.</p>
]]></description><pubDate>Fri, 23 Jul 2021 01:35:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=27926330</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=27926330</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27926330</guid></item><item><title><![CDATA[New comment by sheetjs in "The Tyranny of Spreadsheets"]]></title><description><![CDATA[
<p>Newer versions of Excel have native JavaScript support <a href="https://docs.microsoft.com/en-us/office/dev/add-ins/reference/overview/excel-add-ins-reference-overview" rel="nofollow">https://docs.microsoft.com/en-us/office/dev/add-ins/referenc...</a></p>
]]></description><pubDate>Fri, 23 Jul 2021 01:13:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=27926219</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=27926219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27926219</guid></item><item><title><![CDATA[New comment by sheetjs in "RFC 4180: Common Format and MIME Type for CSV Files (2005)"]]></title><description><![CDATA[
<p>When saving as CSV, Excel will use the regional "List separator" setting.  You can override this in Windows 7 with Region and Language > Additional Settings > List separator.<p>If you are trying to generate a file that plays nice with Excel, there is a way to force a specific delimiter with the "sep" pragma:<p><pre><code>    sep=|
    a|b|c
    1|2|3</code></pre></p>
]]></description><pubDate>Thu, 03 Jun 2021 17:18:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=27384418</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=27384418</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27384418</guid></item><item><title><![CDATA[New comment by sheetjs in "Ditching Excel for Python in a legacy industry"]]></title><description><![CDATA[
<p>We have a few customers in reinsurance, and for the most part the goal is to do the opposite of what the python solutions try to do.  Instead of integrating foreign stuff into existing workbooks, the goal is to retain the existing worksheets as source of truth and build modern tools around the files.  The most common use case is building out a web interface to replicate the Excel formula engine.<p>In the python space, there are libraries like openpyxl and xlrd, but the real hurdle is introducing python into an ecosystem which otherwise has no natural knowledge.  JavaScript is the language of choice for modern Excel addins as Excel provides an actual API for it <a href="https://docs.microsoft.com/en-us/office/dev/add-ins/reference/overview/excel-add-ins-reference-overview" rel="nofollow">https://docs.microsoft.com/en-us/office/dev/add-ins/referenc...</a></p>
]]></description><pubDate>Wed, 30 Dec 2020 22:50:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=25587207</link><dc:creator>sheetjs</dc:creator><comments>https://news.ycombinator.com/item?id=25587207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25587207</guid></item></channel></rss>