[HN Gopher] IronCalc - Open-Source Spreadsheet Engine
       ___________________________________________________________________
        
       IronCalc - Open-Source Spreadsheet Engine
        
       Author : kaathewise
       Score  : 650 points
       Date   : 2024-11-09 16:36 UTC (1 days ago)
        
 (HTM) web link (www.ironcalc.com)
 (TXT) w3m dump (www.ironcalc.com)
        
       | kaathewise wrote:
       | A spreadsheet engine. It's a React app with a Rust backend, but
       | it impressed me how snappy it was[0]. Of course, it's not nearly
       | as feature rich as Google Sheets, not to mention Excel.
       | 
       | [0]: https://app.ironcalc.com/
        
         | mdaniel wrote:
         | "backend" seemed to imply it was contacting some server, but
         | https://github.com/ironcalc/ironcalc#early-testing claims (and
         | the network tab confirms) it is just Rust compiled to wasm, no
         | "backend" required
         | 
         |  _MIT or Apache 2 (player 's choice) if anyone else has grown
         | deeply suspicious about any "open source" HN headlines of late_
        
           | fsckboy wrote:
           | backend does not imply server to me, it implies software that
           | does the calculating engine work and does not concern itself
           | with display refresh.
        
             | readthenotes1 wrote:
             | In code that typically runs in on e process, that's a
             | plausible interpretation.
             | 
             | However, the browser, sorry, the Internet browser, is
             | typically a distributed system and a more plausible
             | interpretation of backend is server-side.
             | 
             | IMNSHO.
        
             | ninalanyon wrote:
             | Surely that's background not backend.
        
               | 8n4vidtmkvmk wrote:
               | I wouldn't call it background unless maybe it's async or
               | continues to process stuff while you're doing other
               | things.
        
               | fsckboy wrote:
               | what's the backend of a spreadsheet engine going to be
               | doing? updating the datastructures of the spreadsheet.
               | 
               | is it going to be local or remote? that's not part of the
               | question.
               | 
               | is it foreground or background? that's an implementation
               | choice. apple II, yeah, everything freezes while it
               | recalcs. windows? recalcs when it can, don't let the
               | mouse freeze.
        
             | bonoboTP wrote:
             | Backend is a general word, not limited to client-server or
             | the web. You can have a rendering backend with various
             | configurable choices, like in Matplotlib (https://matplotli
             | b.org/stable/users/explain/figure/backends....), or the
             | deep learning library Keras has a choice between PyTorch,
             | JAX and TensorFlow backends.
        
               | fsckboy wrote:
               | we're talking about a spreadsheet engine, the backend is
               | not going to be the Xserver displaying it
        
           | kaathewise wrote:
           | Right, I've made a mistake! I keep getting surprised by the
           | fact it's possible to simply compile a Rust crate with a WASM
           | target and run it in the browser.
        
         | nhatcher wrote:
         | It's running entirely on your browser unless you click share,
         | download or import. The computation part is done in Rust
         | compiled to wasm.
         | 
         | Thank you for posting!
        
           | kaathewise wrote:
           | Yep, I've misunderstood, realized it after seeing mdaniel's
           | comment.
           | 
           | Thanks for making this in the first place! I saw IronCalc in
           | the list of projects supported by NLnet and it grabbed my
           | attention.
           | 
           | By the way, if You don't mind me asking, how'd Tuta end up
           | sponsoring IronCalc? It seems that lately they and Proton
           | have been trying to expand their business away from just
           | email. The fact that Tuta is interested in IronCalc makes me
           | think they want to have an office-like offering.
        
             | nhatcher wrote:
             | Tuta sponsors by providing us with free email accounts,
             | that's all. I reached out months ago, they liked the
             | project and were kind enough to help us out with the email.
             | 
             | I haven't have talks with them about integrating IronCalc,
             | but it is something that is on my mind.
        
               | kaathewise wrote:
               | Ah, I see. Best of luck with that!
               | 
               | There are a few projects where I'd love to see a modern
               | spreadsheet implementation. CryptPad comes to mind. They
               | use OnlyOffice, which is quite featurefull, but takes
               | awhile to load and isn't as responsive.
        
         | nine_k wrote:
         | What Google Sheets functionality you're missing there?
         | 
         | Of course there's a lot missing, but what's interesting is what
         | you've reached for and could not find.
        
         | snthpy wrote:
         | How tightly coupled are the React app and the Rust backend?
         | 
         | I hope the backend engine can be used standalone embedded in
         | other apps.
        
       | nhatcher wrote:
       | Hey! This is my project! Amazed to see this here. I'll try to
       | answer questions people might have
        
         | fatih-erikli-cg wrote:
         | Where and how do you handle the operator precedence? I couldn't
         | find in the codebase.
        
           | mdaniel wrote:
           | I'm cognizant it's just documentation, because the code is
           | its own thing, but it seems to be a recursive descent parser 
           | https://github.com/ironcalc/IronCalc/blob/2c2228c2c26386b019.
           | ..
        
           | nhatcher wrote:
           | I wrote about it at length here:
           | 
           | https://www.nhatcher.com/post/a-rustic-invitation-to-
           | parsing...
           | 
           | The implementation in IronCalc follows that.
        
         | wslh wrote:
         | Thanks for your great work! I'd love to hear your thoughts on a
         | recent "brainstorm" a few of us had here on HN about
         | spreadsheets. How does this resonate with you? [1][2]
         | 
         | [1] https://news.ycombinator.com/item?id=42027356
         | 
         | [2] https://news.ycombinator.com/item?id=41970554
        
           | nhatcher wrote:
           | Hi wsih, thanks! There is a lot to unpack on those threads
           | but of the top of my head: 1. Clear separation between
           | UX/backend Done by design in IronCalc. It is first a
           | spreadsheet engine.
           | 
           | 2. Multi language support, language connectivity, enhanced
           | data types, ...
           | 
           | You might very well be right, but out first step is to be as
           | close to Excel as possible. We are ~ 1 year away from being
           | formula compatible in a reasonable way. Once we are there we
           | can do better in different directions. I think strict typing
           | might be very beneficial for spreadsheets engines. Anything
           | you can do to reduce errors and human mistakes.
           | 
           | I strongly believe that having a competitive spreadsheet
           | engine fully open source might be a good first step in
           | extending and improving Excel.
           | 
           | Let's see!
        
             | wslh wrote:
             | I am sure you are in the right track! It would also be
             | great to know if you have some kind of business model on
             | mind.
        
               | nhatcher wrote:
               | Noup. I'm not doing this for money. Not saying there is
               | not a business angle, and happy to help anyone that wants
               | to build a business using IronCalc.
        
           | enugu wrote:
           | Hyperfiddle and Quadratic implement some of the items on your
           | wishlist (richer data types, modern programming languages,
           | working with arrays, better connectivity to data tools).
        
             | nhatcher wrote:
             | They are both amazing tools!
        
         | readthenotes1 wrote:
         | What keeps me in Excel 2007 is Goal Seek.
         | 
         | I'm not sure how unusual I am, but would be interested in
         | knowing:)
        
           | nhatcher wrote:
           | Thanks for the feedback, I will keep this on the back of my
           | head. This and things like sensitivity analysis are not in
           | our immediate roadmap, but this is the kind of thing that
           | would be fairly easy to add. You can do it right now
           | programmatically, of course.
        
         | echoangle wrote:
         | Where does the name come from?
        
           | nhatcher wrote:
           | The first well known spreadsheet application was called
           | VisiCalc[0] (the killer app!). The "Iron" side is because it
           | is written in Rust and the domain was available.
           | 
           | [0]: https://en.wikipedia.org/wiki/VisiCalc
        
         | ericra wrote:
         | Great project. I particularly love the:
         | 
         | 1) mit license 2) using plausible instead of Google analytics.
         | Practically speaking, uBO is going to block both by default,
         | but for non-tech users this is great. 3) appreciate how the app
         | respects your pc when the web app is running in the background.
         | Very low footprint, no random CPU spikes or anything.
         | 
         | Wish you guys the best.
        
           | nhatcher wrote:
           | Thanks :).
           | 
           | WRT: Plausible. I think I will remove all kinds of analytics,
           | I'm not yet convinced I should be using them at all. That
           | being said I had been longing to try Plausible for the a long
           | time and this seemed like a good opportunity.
        
           | nhatcher wrote:
           | If you are curious, I just made the analytics public:
           | 
           | https://plausible.io/ironcalc.com
           | 
           | I think more than one folk in HN might be interested. All
           | traffic is because of this post. I had no visitors as of
           | today. This was work in progress :)
        
             | twojacobtwo wrote:
             | Sweet, it's basically data on HN users then.
             | 
             | Only 13.4% of HN readers use Firefox. For shame. But
             | seriously, it's interesting that safari is top by quite a
             | margin.
        
               | rsi_triad wrote:
               | * HN users who don't block analytics
        
               | lbotos wrote:
               | I assume that's mostly iphones?
        
               | mgkimsal wrote:
               | I have to imagine most of that safari is mobile safari /
               | iPhone traffic?
        
             | ksec wrote:
             | It will be HN user who dont block the analytics. That is
             | with no DNS or uBlock solution.
             | 
             | I would imagine both solution being much more popular on
             | Desktop / Laptop. Hence 75% of all views counted are
             | actually from Smartphones.
        
             | fragmede wrote:
             | What do your logs say for breakdown on user agent?
        
         | airstrike wrote:
         | Where were you when I started writing my code ;_; I have also
         | written a spreadsheet engine in Rust from scratch, for an app
         | built with the iced GUI library!
         | 
         | I'll take a deep dive through your repo and compare notes later
         | this week. Congrats on the huge lift!!
        
           | nhatcher wrote:
           | Thanks you very much! Lets continue talking on Discord in the
           | coming days!
        
           | phonon wrote:
           | https://news.ycombinator.com/item?id=37559371
        
             | nhatcher wrote:
             | Oh wow! Good find!
        
             | airstrike wrote:
             | Hah! It wasn't open sourced then, but I did buy the book
             | and followed his advice!
        
         | dpe82 wrote:
         | What a cool project! I intend to dive in and I'm sure I'll have
         | questions as I do. Are you active in Discord? The invite link
         | on the bottom of ironcalc.com isn't currently valid.
        
           | airstrike wrote:
           | I got in via https://discord.gg/zZYWfh3RHJ from the github
           | repo
        
           | nhatcher wrote:
           | Ooops, just fixed it. Here is the link:
           | 
           | https://discord.gg/zZYWfh3RHJ
           | 
           | I don't necessarily respond every day immediately, but I am
           | active.
        
         | arjunlol wrote:
         | Looks cool! What sort of different solutions do you imagine
         | devs building on top of the engine?
        
           | nhatcher wrote:
           | One of the recurrent topics is integration with spreadsheets
           | done by non-developers.
           | 
           | Imagine a spreadsheet built by the finance department of an
           | institution. It is also maintained by them. The developer
           | team might want to integrate this tool in their workflow.
           | With IronCalc the can add units test or compute it a thousand
           | times, one for each user.
           | 
           | I don't think developers would choose IronCalc to do any
           | actual development. They will be forced to by other parts of
           | their tool chain being spreadsheets.
           | 
           | Another way would be developers wanting to build spreadsheets
           | with some extensions for a company or organization. Imagine
           | needing a spreadsheet that has a built in SAT solver (like
           | https://github.com/shnarazk/splr). That would be easily built
           | in IronCalc.
           | 
           | Not sure if any of those ideas convinces you :)
        
         | madjam002 wrote:
         | Do you see this as an alternative to OnlyOffice? I'm wondering
         | if you've tried it and how you think this compares
        
           | nhatcher wrote:
           | I remember trying it out, yes. I yet need to do a serious
           | comparative analysis.
           | 
           | For what I can see OnlyOffice is feature complete, it's a
           | full office solution. The sheets component is way ahead from
           | IronCalc.
           | 
           | On the plus side, IronCalc is way lighter. When you go to
           | IronCalc you download < 1Mb (compressed), it is faster and
           | able to load larger workbooks on the web. IronCalc is an
           | engine, meaning you don't need a UI at all to run it.
           | 
           | I don't think IronCalc is an alternative today to OnlyOffice.
           | At most one day might be an alternative to the sheets
           | component.
        
         | alexk101 wrote:
         | I haven't looked into the source for your project, but am
         | curious if you are integrating any kind of existing
         | engine/backend (Polars is what I am thinking) into it, or if
         | that is even possible.
        
           | nhatcher wrote:
           | Not as of now. We first want to be a first class spreadsheet
           | engine that implements 90% of Excel functions and features
           | like array functions, LAMBDA, ...
           | 
           | A goal of IronCalc is to make things like integrating Polars
           | trivial for a developer.
        
         | hitradostava wrote:
         | Amazing project. The question I have is why rust? Is the
         | compiled WASM significantly faster than JS?
        
           | nhatcher wrote:
           | Yes, the compiled WASM is significantly faster. Easily by an
           | order of magnitude. I might be completely wrong about this
           | but I _think_ if the brilliant folks at Microsoft research in
           | the calc intelligence group would have waited a few years
           | they might have used wasm instead of TypeScript
           | (https://www.microsoft.com/en-us/garage/wall-of-fame/calc-
           | ts-...)
           | 
           | As for Rust, could have been C or Zig. I just needed a
           | language that minimally compiles to wasm.
           | 
           | There is another reason though. IronCalc runs in the bare
           | metal, not only in the web and needs to have bindings to
           | languages like Python, R or Julia. I can't get that today
           | easily with TypeScript.
        
             | Onavo wrote:
             | There might be some tricks from Row Zero that you can
             | borrow
             | 
             | https://news.ycombinator.com/item?id=39551064
             | 
             | https://news.ycombinator.com/item?id=41512270
        
         | yowlingcat wrote:
         | Very cool library. I like the goal of Excel support (it truly
         | is an incredible platform). A couple of questions:
         | 
         | 1) Any plans for programmatic manipulation of pivot tables?
         | Looking across the Python ecosystem, outside of xlwings (which
         | essentially requires FFI manipulation of a running instance of
         | Excel), nothing else makes it possible. It does look like some
         | .NET Excel libraries support it.
         | 
         | 2) Will there be ability to use the engine as library? Would
         | love to use something like this through Python bindings.
        
           | nhatcher wrote:
           | > 1) Any plans for programmatic manipulation of pivot tables?
           | 
           | As soon as we possibly can
           | 
           | 2) Will there be ability to use the engine as library? Would
           | love to use something like this through Python bindings.
           | 
           | That is in place already! It is an MVP, so I haven't
           | published all packages for all architectures but you can
           | compile it from source:
           | 
           | https://github.com/ironcalc/IronCalc/tree/main/bindings/pyth.
           | ..
           | 
           | https://pypi.org/project/ironcalc/
        
         | negoutputeng wrote:
         | nice project ! and attempt to modernize the spreadsheet tech
         | stack. be warned though, that the feature-set of the modern
         | spreadsheet is gigantic, with tentacles in hundreds of nooks
         | and corners. Any attempt to play catch-up is a losing
         | proposition. Hence you could position it so as not to directly
         | compete with excel - in areas that are new or emerging.
         | 
         | trivia: js based https://ethercalc.net/ is in turn is derived
         | from https://github.com/DanBricklin/socialcalc written by the
         | spreadsheet inventor dan bricklin
        
           | fermigier wrote:
           | Fun fact: Audrey Tang, creator of Ethercalc, went on to
           | become Minister for Digital Affairs for the Taiwanese
           | government.
        
           | nhatcher wrote:
           | I've said this in some other comment. We can't and will never
           | be as feature full as Excel. We want to find different use
           | cases. A super light spreadsheet with MIT license that you
           | can use anyway you want.
           | 
           | If I were to go closed source, for instance, I think I loose
           | 90% of my selling points.
        
             | mjrpes wrote:
             | One of my dreams if I were to create my own web-based
             | spreadsheet engine would be to make worksheets much more
             | general purpose and not stuck in tab UI like Excel. You
             | would be able to embed them separately in the page so
             | multiple worksheets could be viewed at the same time.
             | Example: you might have multiple small worksheets with
             | financial summaries where the columns are slightly
             | different. You could also do things like include text
             | above/below worksheets, to present the data in a document-
             | like format.
        
               | jitl wrote:
               | This is how Apple's Numbers.app works.
        
         | Hashex129542 wrote:
         | Nice :)
         | 
         | You've added xlsx format to export. Is it legally allowed?
        
           | nhatcher wrote:
           | Yes, it is an open format:
           | 
           | https://ecma-international.org/publications-and-
           | standards/st...
        
         | eviks wrote:
         | Cool project!
         | 
         | Do you have a detailed list tracking compatibility with Excel?
         | 
         | Do you have any great ideas where you can surpass it (in one
         | way you can use yours without UI)?
        
           | nhatcher wrote:
           | Thanks!
           | 
           | There is not a detailed tracking of all Excel features. But
           | we track:
           | 
           | 1. Function implementations:
           | https://github.com/ironcalc/IronCalc/labels/Functions 2.
           | Dynamic arrays, defined names, pivot tables, ...
           | 
           | Excel is huge we only aim at implementing a subset.
        
             | eviks wrote:
             | Exactly because Excel is huge it'd be nice to have such a
             | detailed reference, grouped by type: functions, UI,
             | scripting, built in analysis tools etc
             | 
             | And some features could reduce pressure re compatibility in
             | other areas. For example, if you had some kind of wasm
             | plugin system, then people could easily write the lacking
             | functions in their favorite language without having to wait
             | for the core to add such a function.
        
               | nhatcher wrote:
               | Thanks for the feedback. I will try to build a more
               | detailed compatibility reference as you describe.
        
         | bsenftner wrote:
         | How does your project compare to:
         | 
         | https://bossanova.uk/jspreadsheet/v4/ which is the open source
         | version of
         | 
         | https://jspreadsheets.com/
         | 
         | Serious question. I base a lot of work off the open source
         | jspreadsheet. Curious about yours.
        
           | nhatcher wrote:
           | At the moment they are a full production ready product, we
           | only have an MVP.
           | 
           | If and when we reach version 1.0 we might be comparable. And
           | you might want to use one or the other. It its difficult to
           | say who the two product will compare in a year from now but
           | probably IronCalc will be lighter, easier to integrate,
           | faster in computations but not so feature full.
        
         | hotbutterscotch wrote:
         | Hey, sorry for the noob question. What is the use case for
         | this. Is it to integrate into webpages for rendering data in
         | spreadsheets/tables ?
        
         | sunshine-o wrote:
         | Beautiful project. Congrats and thanks !
        
       | franga2000 wrote:
       | It's a cool project, but wow is the top of the page just absolute
       | buzzword salad!
       | 
       | > The democratization of spreadsheets > Empowering Everyone with
       | Advanced, Open-Source Spreadsheet Solutions
       | 
       | It's a really fast spreadsheet engine that runs entirely in the
       | browser and is fully open source. That's all the sales pitch I'd
       | need, but I'm a developer...
       | 
       | So, serious question: who is this kind of marketing targeting?
        
         | nhatcher wrote:
         | I'm a software developer with extremely bad marketing skills...
         | 
         | This project targets both end spreadsheet users and developers.
         | In its first an engine (a Rust crate) then a full fledged
         | product.
         | 
         | FWIW, I'm over them moon this project is getting some traction
         | :)
        
           | bonoboTP wrote:
           | I agree that the bullet points feel like ChatGPT output.
           | Whether an LLM was involved or not, it's good practice
           | nowadays to avoid that AI style as many are getting used to
           | spotting it and frown about it.
        
             | HKH2 wrote:
             | I'm not sure what you mean by 'that AI style'. What are
             | some examples?
        
               | bonoboTP wrote:
               | Gerund Adjective Noun (heading)
               | 
               | * Gerund Adjective Noun (bold): (colon) text (non-bold).
               | 
               | ----
               | 
               | Already the format like this. Then plus points for
               | sounding like an empty phrase that chatgpt likes. Eg from
               | the heading "Addressing Unmet Needs" then bullet
               | "Empowering SaaS Developers:" in bold.
               | 
               | It's hard to describe. If you use chatgpt a lot, you
               | develop an intuition that has many components.
        
               | HKH2 wrote:
               | I can sort of see what you're saying, but I think a lot
               | of marketing is like that. Chatgpt is just regurgitating
               | it.
        
           | bruce511 wrote:
           | This probably sounds daft, but I was trying to figure out on
           | the site what platform it ran on.
           | 
           | It doesn't seem to say "in browser" - so I'm wondering if
           | it's Windows or Mac or ...?
           | 
           | Since it is in-browser there's then no detail on what the
           | scope is - where are the spreadsheets stored? How are they
           | shared? Do I host it on my server? Are they stored on your
           | server ? Can I embed it on an existing page? Can I update
           | cells via JavaScript? Or websockets?
           | 
           | And so on.
           | 
           | Some of the above is inferable from the comments here, but
           | not all.
           | 
           | Congratulations on a cool project - but you may want to "set
           | the scene " as it were for prospective users.
        
         | hcarvalhoalves wrote:
         | It shows the main focus is not the technology, but the fact
         | spreadsheets are important and deserve a robust open source
         | alternative.
        
         | Nathanba wrote:
         | I think using the word "democratization" is the main issue, how
         | does that even make sense in software? Who is doing the voting?
         | You just "vote" by forking...? I don't get it, you also "vote"
         | by using Microsoft Excel.
        
           | mmooss wrote:
           | 'Democratization' IME usually refers to the foundation of
           | democracy, equality in rights, freedom, and opportunity. It's
           | something for the masses, for the people.
        
             | Nathanba wrote:
             | Yes I know what the word is being used these days for but
             | it doesn't make sense. Democracy does not inherently have
             | anything to do with these additional (also vague) terms.
        
               | mmooss wrote:
               | Democracy doesn't have anything to do with "equality in
               | rights, freedom, and opportunity"? That is the point of
               | and foundation of democracy - no democracy without them.
               | It's incredible that people are so anxious to destroy
               | freedom and humanitarianism (why?) that they adopt an
               | obviously false history.
               | 
               | Those have long been believed to be the foundations of
               | democracy; you might have heard this one, which founded
               | one democracy:
               | 
               |  _We hold these truths to be self-evident, that all men
               | are created equal, that they are endowed by their Creator
               | with certain unalienable Rights, that among these are
               | Life, Liberty and the pursuit of Happiness.--That to
               | secure these rights, Governments are instituted among
               | Men, deriving their just powers from the consent of the
               | governed, ..._
               | 
               | That also says governments exist - their reason for being
               | - is to protect those things you deny are relevant.
               | 
               | Then from the French Revolution, and now France's
               | national motto: _Liberte, Egalite, Fraternite_.
               | "Liberte, Egalite, and Fraternite are fundamental values
               | that define French society, and democratic life in
               | general."
               | 
               | https://www.liberties.eu/en/stories/liberte-egalite-
               | fraterni...
               | 
               | From the Universal Declaration of Human Rights:
               | 
               |  _Whereas recognition of the inherent dignity and of the
               | equal and inalienable rights of all members of the human
               | family is the foundation of freedom, justice and peace in
               | the world, Whereas disregard and contempt for human
               | rights have resulted in barbarous acts which have
               | outraged the conscience of mankind, and the advent of a
               | world in which human beings shall enjoy freedom of speech
               | and belief and freedom from fear and want has been
               | proclaimed as the highest aspiration of the common
               | people, ..._
               | 
               |  _Whereas the peoples of the United Nations have in the
               | Charter reaffirmed their faith in fundamental human
               | rights, in the dignity and worth of the human person and
               | in the equal rights of men and women and have determined
               | to promote social progress and better standards of life
               | in larger freedom, ..._
               | 
               |  _Article 01: All human beings are born free and equal in
               | dignity and rights. ..._
               | 
               | https://www.un.org/en/udhrbook/pdf/udhr_booklet_en_web.pd
               | f
        
               | Nathanba wrote:
               | All of those are just additional things ones wishes
               | democracies to have but are not inherent in the word
               | definition. I can certainly see that some people wish to
               | have the definition of "democracy" expanded to mean many
               | additional things but that really isn't the point of
               | having that very precise word.
        
               | mmooss wrote:
               | What basis do you have to say that? Otherwise, these
               | claims are just bytes with no force behind them. You can
               | see the overwhelming evidence and consensus otherwise,
               | stretching over centuries!
               | 
               | Even more, why do you want it to be true? Why do people
               | want to eliminate their own and others human rights, an
               | incredibly positive basis for society and for your
               | freedom and prosperity, which has resulted in what are by
               | far the most successful societies and people, by many
               | measures, in human history? You're giving away all that
               | for what? To look clever and 'with it'? Smarter than
               | democracy? Very clever.
               | 
               | You should be fighting for it, like your predecessors
               | did. Otherwise, you'll lose it. There are people actively
               | and successfully taking it away, while you are engaging
               | in this philosphical exercise.
        
           | nhatcher wrote:
           | You are right. I created a ticket to remedy this:
           | 
           | https://github.com/ironcalc/ironcalc.github.io/issues/14
        
       | howthisends wrote:
       | This is awesome. Will try using it as the foundation of some web
       | tools.
        
         | nhatcher wrote:
         | If you do and want help with, don't hesitate in contacting me.
         | 
         | Right now you can't just `npm install ironcalc`, but hopefully
         | that will be in place in a month from now.
        
       | dwroberts wrote:
       | Had a comment here about larger values/arbitrary precision (e.g.
       | 74829901923401860/14408150751351922) and realised that it isn't
       | choking on the number but it seems to error if I paste in values?
       | In Firefox:
       | 
       | Uncaught RuntimeError: unreachable executed pasteCsvText
       | assets/index-BxqQcmeI.js:40
        
         | nhatcher wrote:
         | Thanks for the bug report!
         | 
         | I just added csv copy/paste, most likely an error there. We
         | don't support arbitrary precision arithmetic but I would like
         | to.
        
       | iamthejuan wrote:
       | I am genuinely looking forward for the success of this project. I
       | am just wondering will this support scripting language like VBA
       | for Microsoft Excel?
        
         | nhatcher wrote:
         | Thanks. I am thinking a lot about this recently. We will
         | definitely support a scripting language, or rather several
         | scripting languages. VBA won't be one of them, I think. I
         | wouldn't want to create a language just for this. Maybe use a
         | language like Lua or perhaps Rhai[0]. By design extending and
         | embedding IronCalc should be very easy. Work in this direction
         | will not start in the next 9 months though.
         | 
         | [0]: https://github.com/rhaiscript/rhai
        
           | kingo55 wrote:
           | Thank god for that, VBA gives me nightmares.
        
           | buremba wrote:
           | It would also be pretty interesting to see a modular system
           | where we can run Python scripts as well
        
       | bonoboTP wrote:
       | Nice work. Clicked around in it, some default features I'm used
       | to are missing, like clicking on a row or column header to select
       | the whole thing, or double click the resizer between two columns
       | to autosize the column to content length.
        
         | nhatcher wrote:
         | Thanks, those things are on the roadmap :)
        
         | 8n4vidtmkvmk wrote:
         | IIUC, this project is focused on the calculations, not the UI.
        
       | phonon wrote:
       | This looks great! Do you use cached calculation chains for
       | performance optimizations? Do you take volatile functions into
       | account?
       | 
       | https://learn.microsoft.com/en-us/office/vba/excel/concepts/...
        
         | nhatcher wrote:
         | > Do you use cached calculation chains for performance
         | optimizations?
         | 
         | Not yet, there is heavy research in that direction. I will
         | write on this soo-ish
         | 
         | > Do you take volatile functions into account?
         | 
         | Yes, for instance RANDBETWEEN and NOW are implemented. Things
         | like `IF(RANDBTWEEN(1, 500)> 200,A1, A2)` work fine
         | 
         | Thnaks
        
           | 8n4vidtmkvmk wrote:
           | What does that actually mean, "works"? I don't know how that
           | behaves in Google sheets or Excel. Is it evaluated exactly
           | once the first time the formula is entered? Every time you
           | focus the input? Is the dice rerolled when a1 or a2 is
           | modified? What?
        
             | nhatcher wrote:
             | Hi 8n4vidtmkvmk, the algorithms for evaluating spreadsheets
             | are surprisingly tricky mainly because of the dependencies.
             | The dependencies are only know at runtime and in Excel are
             | lazy evaluated. So things like `IF(condition, value1,
             | value2)` would evaluate first the condition if it is true
             | it will evaluate value1 but not value2. So things that in
             | other programming languages are a circular dependency are
             | not so in Excel. The problem of computing the dependencies
             | might be solved by topological sort. The complication of
             | the runtime dependencies is made worse by having
             | dependencies that change every time (or that their outputs
             | do not dependency solely of their inputs) like random
             | functions or date functions. An optimization while
             | evaluating a spreadsheet would be to only compute those
             | cells that depend on cells whose value changed. If you do
             | that you might miss on those volatile functions.
             | 
             | I realize I am most likely babbling too much.
             | 
             | Yes, volatile functions like RANDBETWEEN get evaluated each
             | time a cell changes. They don't get evaluated when you
             | focus on them.
        
               | 8n4vidtmkvmk wrote:
               | Thanks. I wonder if it would make sense for RANDBTWEEN to
               | take a seed so that it becomes non-volatile unless you
               | use time as the seed.
        
       | cultureulterior wrote:
       | It's interesting that the Iron prefix means rust now. It used to
       | mean .NET
        
         | seanw444 wrote:
         | Yeah, like IronPython.
        
         | nine_k wrote:
         | ...but only in the +3 oxidation state.
        
         | snthpy wrote:
         | Agree with your comment. I almost didn't click on it because I
         | wouldn't be interested in a C# or .Net project and was very
         | pleasantly surprised. I don't love the name.
        
           | snthpy wrote:
           | Oxcel ?
        
       | eointierney wrote:
       | Congratulations, this is awesome. One of those "why hasn't
       | someone done this already?" projects.
       | 
       | I can see this becoming transformative and superseding Excel,
       | which is a bold claim to make. But this is compliant (with
       | Excel), performant, extensible, free, and in-browser. This could
       | easily become almost an emacs-level editor.
       | 
       | Think of the interfaces that could be built to this in this?
       | 
       | I'll be sharing this with every student I know.
       | 
       | And the name is a winner.
        
         | Aeolun wrote:
         | > One of those "why hasn't someone done this already?"
         | projects.
         | 
         | I think this one is fairly clear. It's because it's a massive
         | amount of work with a not necessarily large payoff for
         | yourself?
         | 
         | I think some of these basically get made when someone gets too
         | annoyed something similar doesn't exist.
        
           | nhatcher wrote:
           | It is a massive amount of work. Another thing I might add,
           | not the most appealing thing to work on.
        
         | mhh__ wrote:
         | Why would there be any reason for this to kill excel? Seriously
         | you should try to replace excel entirely rather than merely get
         | a better version of it. If you want to get a better excel just
         | buy excel and actually learn how to use it.
        
         | nhatcher wrote:
         | Woah, thanks for the kind words!
         | 
         | This is out of date, and not a priority ATM, but we will have a
         | TUI for it:
         | 
         | https://github.com/ironcalc/TironCalc
        
       | neoyagami wrote:
       | Sudently I have the urge of adding this to my app report system
        
       | mgkimsal wrote:
       | Can't tell by the docs (but I've not dug in much yet) but...
       | @nhatcher... here's a use case question.
       | 
       | Admins use the ironcalc UI to create their formulas. Is there a
       | way to get those formulas to a backend and run the calcs on the
       | server itself (separate from the user's browser) to get results
       | based on input from other sources?
       | 
       | The UI half looks great so far. I have a colleague I was going to
       | recommend this to, but they more need the 'run the formulas on
       | the server' part more than anything else. They've got some custom
       | Rust stuff running already, but having admins come up with their
       | advanced formulas, then translating that to server code - that
       | takes the time. It _seems_ they may be able to use this to have
       | this handle both ends of the workload, without the translation
       | layer.
       | 
       | Is that something supported, or even feasible?
       | 
       | Thanks!
        
         | nhatcher wrote:
         | Yes, IronCalc is first a spreadsheet engine. Meaning it is a
         | library you can consume from Rust or Python without any UI.
        
       | wuming2 wrote:
       | It's a great ambition to replace Excel and many went down this
       | path before. Congratulations to even attempting to achieve it and
       | going this far to do it.
       | 
       | Excel compatibility, when fully realized, will remove the major
       | obstacle to adoption. Given the current stronghold Excel has on
       | the market.
       | 
       | Once that is achieved do you plan to offer a transition to more
       | modern forms of calculations as vectors and arrays formula panels
       | together with frozen sheets of raw data and output? Thus
       | separating logic and model.
       | 
       | Also when your solution adoption will have grown much larger you
       | should learn from the experiences Bavaria and CERN went through.
       | Microsoft stronghold more often than not has nothing to do with
       | technical prowess.
        
         | evanjrowley wrote:
         | >Also when your solution adoption will have grown much larger
         | you should learn from the experiences Bavaria and CERN went
         | through. Microsoft stronghold more often than not has nothing
         | to do with technical prowess.
         | 
         | Can you elaborate on those experiences?
        
           | wuming2 wrote:
           | The government of Bavaria, one of the wealthiest countries of
           | the German federation and thus of the world, tried to replace
           | Microsoft with Linux and generally FOSS solutions. Twice.
           | 
           | CERN tried to replace Office with NextCloud. It is now
           | struggling to cope with a policy reversal under Microsoft
           | fanboys.
           | 
           | Both cases were also discussed here.
        
         | nhatcher wrote:
         | Yeah, that is not our battle. At least not right now. Excel,
         | and Google sheets, are and will be far more advanced than
         | IronCalc. What we can do is to cater different needs. The focus
         | is on lightweight and open source. Given the billions of
         | spreadsheets out there I wouldn't be surprised if for a small
         | percentage of them IronCalc is a better option.
         | 
         | The reason for Excel compatibility is twofold:
         | 
         | * You can use your workbooks as the are * You don't need to
         | learn a new tool
         | 
         | > do you plan to offer a transition to more modern forms of
         | calculations as vectors and arrays formula panels together with
         | frozen sheets of raw data and output?
         | 
         | So far, nothing beyond Excel's compatibility
        
       | jvanderbot wrote:
       | Props on Rust not being mentioned here or on the index page.
        
       | paradite wrote:
       | In it's current form, how would I integrate the engine and UI in
       | an existing software with, say Java backend and React front-end?
       | 
       | I couldn't find docs on how to use it in languages other than
       | rust. Perhaps via IPC?
        
         | nhatcher wrote:
         | At the time of writing, you can use Rust, Javascript and Python
         | bindings.
         | 
         | The React front-end communicates with wasm compiled from Rust.
         | 
         | Java bindings are planed but not in the next ~6 months. A
         | client/serve architecture (like libreoffice does) with IPC or
         | sockets might be a good idea for languages that we don't
         | provide bindings to. also not planned for the next 6 months
        
           | paradite wrote:
           | > The React front-end communicates with wasm compiled from
           | Rust.
           | 
           | Just to clarify, this means that the entire engine is
           | compiled into wasm and runs inside the browser? There is no
           | server component?
        
       | phonon wrote:
       | Have you looked at these other somewhat similar Rust projects?
       | 
       | https://github.com/logisky/LogiSheets
       | 
       | https://github.com/natefduncan/excel-emulator
       | 
       | https://github.com/jiradaherbst/XLFormula-Engine
       | 
       | https://github.com/omid/formula
       | 
       | https://crates.io/crates/df-web/0.1.28
        
         | nhatcher wrote:
         | I _think_ I saw the XLFormula-Engine. At least the name rings a
         | bell.
         | 
         | I guess I have some reading to do!
         | 
         | What is the last one?
        
           | phonon wrote:
           | I'm not exactly sure...it seems to handle Excel files in some
           | fashion. It came up when I looked through this
           | https://crates.io/keywords/excel
        
       | openrisk wrote:
       | Is this similar to pysheets? From a quickscan it seems that its
       | running client-side via rust/wasm but where are the data stored?
       | 
       | Interesting to see all those different takes on the spreadsheet
       | metaphor.
        
         | nhatcher wrote:
         | The data is stored in your browser's localStorage.
         | 
         | I think the take is a tad different form pysheets. Cool tool
         | though!
        
       | snthpy wrote:
       | Awesome project! Looking forward to following this.
       | 
       | I've been looking out for projects like this over the years and
       | I'm glad to see that this one takes Excel compatibility
       | seriously! Also love the choice of Rust and WASM!
       | 
       | For me Dynamic Array support is a blocker and I can't play with
       | it until you've got that. Very glad to see that's your top
       | priority though[1]! That and everything in the Logical, Lookup
       | and Reference, and Information sections (in that order). That
       | covers probably over 95% of my work and I spend most of my time
       | in Excel.
       | 
       | 1: https://docs.ironcalc.com/
        
         | snthpy wrote:
         | What would be quite cool would be a small utility that one can
         | run over ones workooks and that produces a csv or json file of
         | all the Excel functions used and their count.
         | 
         | People could submit those and you'd get real usage stats of
         | what functions people actually use in real world workbooks
         | rather than guessing.
         | 
         | Users could also then use this to run a compatibility check to
         | see if they could move over to your engine or not.
        
           | nhatcher wrote:
           | Hi snthpy, that is planed! We used to have that, but I
           | removed it to simplify the UI.
           | 
           | If you don't mind compiling yourself there is a somewhat
           | rough tool tat does that:
           | 
           | https://github.com/ironcalc/IronCalc/blob/main/xlsx/src/bin/.
           | ..
           | 
           | It will tell you exactly what cells evaluate differently.
           | 
           | I will also add mentions to unsupported formulas and features
        
         | nhatcher wrote:
         | Thanks! Yes, that is exactly the top priority of the project
         | right now.
        
       | thezipcreator wrote:
       | cool project, but I don't particularly like "The democratization
       | of spreadsheets" as a catchphrase. Like, what does that even
       | mean? If by "democratization" you mean like, more able to be
       | used, well anyone can go download LibreOffice or for the web use
       | CryptPad's Spreadsheets, and if you mean that it's more open,
       | well both of those are open source. Is this project specifically
       | run democratically or something? It just seems like a really bad
       | use of meaningless marketing terminology.
        
         | rizky05 wrote:
         | This reason met my definition of democratization:
         | 
         | > Empowering SaaS Developers: Hundreds, if not thousands, of
         | companies have implemented half-baked spreadsheets in their
         | systems. IronCalc aims to provide these businesses with a
         | superior, open-source alternative that enhances their SaaS
         | applications.
         | 
         | I am currently creating SAAS and the idea of implementing
         | LibreOffice on top of my offering just not gonna work.
        
         | icemelt8 wrote:
         | Because of your comment, I discovered OnlyOffice.
        
           | homebrewer wrote:
           | I recommend you un-discover it and take a look at the
           | Collabora office suite. It's basically the LibreOffice engine
           | with a web ui on top. We've been using both OnlyOffice and
           | CODE for years, and CODE has much better performance (both
           | the client and the server; probably because the backend is in
           | C++ instead of Node), it's more stable over the long term,
           | and has better compatibility with msoffice.
           | 
           | https://www.collaboraonline.com/code
           | 
           | https://hub.docker.com/r/collabora/code
           | 
           | (it's FOSS, the language about "home use" is there to scare
           | large companies into buying commercial versions with support
           | contracts.)
        
             | v3ss0n wrote:
             | Onlyoffice have a lot better compatibility .
        
         | nhatcher wrote:
         | Can only agree with you. I just created a ticket for this:
         | 
         | https://github.com/ironcalc/ironcalc.github.io/issues/14
         | 
         | As I said somewhere else I had really bad marketing skills.
         | Maybe I should talk to someone who really knows what they are
         | doing :)
         | 
         | The catchphrase was decided in 5 seconds when I was sending a
         | proposal to the nlNet and stuck.
         | 
         | Thanks for the feedback!
        
         | usr1106 wrote:
         | I think it's the general idea that free (as in speech) software
         | is "democratic". Even if the project does not do what you want
         | you can always modify or fork, i.e. make changes privately for
         | your own use or even distribute them. Closed source software is
         | like totalitarianism, the leader or leading party knows what is
         | best for you.
         | 
         | Democracy is not the best analogy, free software projects have
         | BDFLs. The difference is more indirect, in democracies citizens
         | have rights and freedoms. In non-democracies typically less so.
        
           | thezipcreator wrote:
           | FOSS is more anarchistic than democratic, I think. Sure,
           | there exist democratic organizations like the Debian
           | Organization, but if you don't agree with their decisions not
           | much binds you to them (that's how projects like Devuan can
           | exist). The same applies to projects with BDFLs as well
           | (altho I do disagree with that form of governance for a
           | project).
        
           | 7bit wrote:
           | 99,9999999% of the people using open-Source software are
           | absolutely unable to modify or fork said software. From the
           | other 0,00000000% most don't care enought to modify it.
           | 
           | Calling it democratic is is like calling cancer a completely
           | natural phenomenon. It's true, but it's also completely
           | beside the point
        
       | microflash wrote:
       | Impressive project. I've dealt with Excel a lot so anything new
       | and ope source catches my attention.
       | 
       | The docs currently focus on the engine part but I'm more
       | interested in the integrations (for example, with Java, Angular,
       | Vue etc).
       | 
       | I'm currently on mobile but I'll have to take a look at your
       | React example to see if I can write a working Angular or Vue
       | example.
        
         | nhatcher wrote:
         | The idea is to have an egine that is clearly separated from the
         | various "skins" like a React, Vue, a TUI or a desktop app. At
         | the moment the React component is a bit difficult to use in
         | isolation. I need to provide a npm package that folks can
         | install
        
       | lovasoa wrote:
       | This sounds like a cool project! Does anyone here knows how it
       | compares to univerjs ?
       | 
       | I currently use univerjs to power the open source sql spreadsheet
       | component I work on (https://github.com/sqlpage/sqlpage-
       | spreadsheet/). My experience with it has been that it's very
       | powerful, but quite difficult to use due to the boilerplate
       | involved, the lacking documentation, and the fact that it seems
       | to be developed mainly for the Chinese market.
        
         | nhatcher wrote:
         | Woah! I didn't realize luckysheets renamed to univerjs!
         | 
         | I think at the time being you should stick to univerjs as it is
         | a finalized product. Once we reach version 1.0, IronCalc should
         | be easier to deal with and you cold consider using one or the
         | other.
        
       | anyfactor wrote:
       | I was an excel enthusiast and studied accounting mainly for
       | Excel. Although I have moved to programming unlike most I still
       | do think Excel is awesome.
       | 
       | I sincerely commend the enthusiasm, but working in the industry
       | as the "excel expert", I think most outsider does not understand
       | the "cult" aspect of Excel.
       | 
       | Excel works. That is it.
       | 
       | Trying to replace excel with anything will be percieved as
       | replacing a calculator with some alien substance that does math.
       | Excel is like Pencil and Pen. You can not replace it.
       | 
       | Excel is not software it is a tool.
       | 
       | I have had my fair share backlash when trying to introduce
       | replacement and complimentary tools. To replace excel, you not
       | only need to advocate for it's usefulness and you need to be also
       | be liable to the complaints from excel users. If anything goes
       | wrong no how minor with the new tool, you are the one who
       | introduced all these mess.
       | 
       | So, in practice what usually happens is that, when people hit UX
       | challenges they go to a consulting firm and commission a
       | backoffice software to address the Excel limitations. Some
       | business may pay for nocode but that is very rare. They go to
       | backoffice software firm and they build a CRUD software that is
       | now not replacing Excel but compliments it.
        
         | delusional wrote:
         | > So, in practice what usually happens is that, when people hit
         | UX challenges they go to a consulting firm and commission a
         | backoffice software to address the Excel limitations. Some
         | business may pay for nocode but that is very rare. They go to
         | backoffice software firm and they build a CRUD software that is
         | now not replacing Excel but compliments it.
         | 
         | Heh, where were you 6 month ago when my team was pitching some
         | of our traders on replacing a system they'd built for balancing
         | their strategy. It was built in excel of course, but what
         | surprised me was the resistance to changing it at all. They all
         | hated the thing, it was slow and crashed often, and right in
         | the middle of the difficult part of the work too. Working with
         | it was a terrible experience, even for people used to medium
         | business enterprise crap. Yet they refused to consider any
         | alternative to building some CRUD around it that would extract
         | the worst parts.
         | 
         | The issue we faced was that there was no way we could
         | contribute to this excel monster while still following the risk
         | tolerance of our department. It's not that we're opposed to
         | building something that is probably a bad idea, if it helps
         | build relationships that let us build something better later.
         | It's more that as soon as IT touches it, we get to own every
         | legal aspect of it too. So they ended up with an external
         | consultant that built them what was essentially an external
         | database they could query, which was then supplied with data by
         | some program somewhere.
         | 
         | It ended exactly as you say. They got a back-office firm to
         | develop some one-off hack that alleviated the immediate
         | problem, without replacing excel.
        
           | antasvara wrote:
           | I think this highlights the main issue with replacing Excel,
           | which is that most people have an undocumented, informal
           | workflow with their tools in Excel that would be difficult to
           | replicate fully in other software.
           | 
           | Relevant XKCD: https://xkcd.com/1172/
           | 
           | As someone that has had other software tools replaced with
           | alternatives (think Slack replaced with Teams), the new
           | solution almost always speeds up and fixes a lot of problems.
           | It also invariably screws up at least _one thing_ that I need
           | the tool to do as a part of my job.
           | 
           | I love my IT colleagues, but (and I mean no offense to them
           | or other IT folks) they don't understand that the way we use
           | our internal tools is super flexible and doesn't adhere to an
           | end to end process. It's how we ended up with an entire
           | software platform that takes more manual steps, breaks in a
           | way that we can't fix, and still requires the use of Excel to
           | get the output into the formats that our stakeholders need.
           | It also can't adapt quickly when we need to change things in
           | our process.
           | 
           | It is a technically impressive tool that does the things they
           | designed it to do super well. But we're like a month away
           | from needing an Excel tool (or another piece of software)
           | that can reliably do all the things we didn't realize relied
           | on the "hot spacebar" from the XKCD.
        
         | wslh wrote:
         | As an expert in Excel, don't you think Google Sheets has
         | chipped away at Excel's dominance in a very smart way? I'm not
         | saying that Google Sheets is a complete competitor to Excel,
         | but it has been highly user-oriented. And, if we add Apple
         | Numbers to this discussion, I feel it's still at a kindergarten
         | level by comparison.
         | 
         | I think this is where IronCalc like software could thrive:
         | finding a non-complete competition to Excel, and Google Sheets
         | that does the other part of the work better.
        
           | antasvara wrote:
           | What Google Sheets did that was super innovative IMO was make
           | a spreadsheet that integrates with _the entire Google
           | ecosystem._
           | 
           | I am partially joking (they put it on the cloud in a way
           | that's super useful and made collaboration remotely easier,
           | along with other scripting inprovements), but I think it
           | highlights that the main "benefit" to Sheets is that it's a
           | fully featured product created by a mega-corporation that
           | complements other tools they have to offer.
           | 
           | Put another way: how many companies use Microsoft for
           | everything except Excel? How does that compare to companies
           | that use Google Drive for everything except for spreadsheets?
           | 
           | A tool like this one has the upward battle of needing to be
           | so useful, it is worth employing alongside your currently
           | existing office software. It feels like spreadsheet software
           | is a particularly hard arena to compete in, given the quality
           | of the major ones you mentioned.
        
             | respondo2134 wrote:
             | a killer feature of Sheets is querying web-based databases
             | for adhoc reporting. You can do this lots of ways including
             | Excel, but sheets was early and makes it very easy. I've
             | saved so much development effort (in Excel or elsewhere)
             | just dumping data into a sheet and letting them at it.
        
             | wslh wrote:
             | > It feels like spreadsheet software is a particularly hard
             | arena to compete in, given the quality of the major ones
             | you mentioned.
             | 
             | It's not just a feeling. A basic Porter's analysis,
             | especially with a 6th force, reveals how nearly impossible
             | it is to compete effectively (now) in the spreadsheet
             | software market given the dominance of the major players.
             | 
             | [1] https://en.wikipedia.org/wiki/Porter%27s_five_forces_an
             | alysi...
        
         | nhatcher wrote:
         | I think I understand the cult part of Excel. And to be honest,
         | Excel is a fantastic tool. I don't think IronCalc can ever
         | replace Excel (a boy can dream though!). But many companies
         | need a spreadsheet of sorts they can embed in their product.
         | Allow me a bit of humour:
         | 
         | > Any sufficiently complicated startup or young company
         | contains an ad hoc, informally-specified, bug-ridden, slow
         | implementation of 10% of Excel.
         | 
         | Maybe we can use IronCalc for those cases?
        
           | mritchie712 wrote:
           | as a saas founder, I can confirm you are 100% correct about
           | this and we'll be looking at IronCalc for
           | https://www.definite.app/
        
             | jeffreyq wrote:
             | cool and slick website. reminds me of linear.app but when i
             | attempt to scroll all the way down it lags. i'm on macbook
             | air with chrome browser
        
           | bwanab wrote:
           | > > Any sufficiently complicated startup or young company
           | contains an ad hoc, informally-specified, bug-ridden, slow
           | implementation of 10% of Excel.
           | 
           | Let's give Philip Greenspun due credit for this phrase. I'm
           | going to guess there's at least one generation who isn't
           | familiar with it.
        
         | atoav wrote:
         | Excel is powerful, but it is also important to consider its
         | limitations.
         | 
         | Things will get real when your orgs problems/needs grow from
         | something that was totally cool to do with spreadsheets to
         | something requiring higher complexity, performance, resilience,
         | testability, coordination, ... -- and the point at which you
         | cross over into the latter is not always clearly marked.
         | 
         | It would for example not be advisable to use Excel sheets as a
         | replacement for a distributed database of central importance,
         | unless your org is a lemonade stand with 3 employees.
         | 
         | I would also prefer maintaining a python script with written
         | tests over maintaining an Excel file containing complex
         | business logic, but maybe that is just personal perference.
         | 
         | Don't get me wrong here, Excel is amazing and we should all use
         | it where it shines. But as with all tools we need to be aware
         | of the fact that they heavily color the way we look at
         | problems, as expressed by Maslows famous aphorism: _" If the
         | only tool you have is a hammer, you tend to see every problem
         | as a nail."_
         | 
         | Good engineers should not be blinded by their tools, but
         | accutly aware of their limitations and know which to use when.
         | Just like with hand tools you could probably also just hammer a
         | nail in using a shovel or "drill" a hole using a screwdriver
         | and Excel is very versatile in those regards: it can get you
         | very far without being the best solution, a bit like a swiss
         | pocket knife.
        
           | no_wizard wrote:
           | What would be nice though is if you could export logic from
           | excel to examine it and port it.
           | 
           | One can dream
        
             | wombatpm wrote:
             | Diffs in source control would be sweet
        
               | no_wizard wrote:
               | They already know how to do it too
               | https://support.microsoft.com/en-us/office/compare-two-
               | versi...
        
             | stackskipton wrote:
             | You easily could. Format is available.
             | 
             | What I found is such tools barely work because what makes
             | Excel so sticky is ability for end user to change that
             | logic. X + Y = Z. Well, _Click Clack_ and Z -Y = F
             | 
             | That's just so difficult to handle in a way that isn't
             | "Just use Excel"
        
           | respondo2134 wrote:
           | I get what you're saying, and agree with lots of it, but most
           | of the time things built in Excel are not for programmers,
           | usually have no maintenance budgeted, and often are built by
           | non-developers.
           | 
           | To extend your analogy too far, Excel is the 4mm allen key
           | you get with all your Ikea furniture. It's good enough to
           | build all the bog-standard, functional but not particularly
           | nice furniture you need, but sure you'd rather have bespoke
           | custom work. Sometimes you don't have or want the tools, or
           | know how to use them and that's OK.
        
         | Andrew_nenakhov wrote:
         | I would very much use a product that would work exactly like
         | Google spreadsheets, web and all, but would be self-hosted.
        
           | magusor wrote:
           | Have you tried collabora office and/or onlyoffice ? These
           | could match your need.
        
             | Andrew_nenakhov wrote:
             | Yes and it is atrocious compared to Google Spreadsheets,
             | unfortunately.
        
               | magusor wrote:
               | Yes, they are indeed not as streamlined unfortunately.
               | Maybe ethercalc if you need something lightweight, but
               | that's also not a real alternative https://ethercalc.net/
        
           | ochrist wrote:
           | I use NextCloud with Collabora Online (hosted and trimmed
           | down version of LibreOffice). All self-hosted.
        
         | skissane wrote:
         | Outside of specific domains such as finance and accounting,
         | most people don't really need Excel, and will be served
         | perfectly well by Google Sheets or whatever.
         | 
         | Indeed, I have hardly used Excel in years. I do use Google
         | Sheets at work, where they are used for adhoc tracking by
         | engineering, product management, project managers, etc.
         | 
         | Our son who is 11, he uses Google Sheets - and I know he has
         | used Apple Numbers in the past too. I'm not sure if he even
         | knows what Excel is.
        
           | respondo2134 wrote:
           | I think people conflate Excel the product with workflows that
           | can be solved with Excel. Lots of tools like sheets and even
           | numbers can do the latter, but nothing since Lotus competed
           | with the former.
           | 
           | So if you've never used Excel, you can probably get away with
           | an alternative. But if you already know Excel, why would you
           | add another product for some subset of use cases?
        
             | dleeftink wrote:
             | I'm a heavy Excel user, and I have yet to find a usecase
             | that cannot be solved in Sheets. It has App Script after
             | all, for whenever you run into a feature that isn't there.
             | But even then, I've translated many Excel functions to
             | native Sheets array_formula equivalents, and found the
             | latter much more ergonomic.
        
               | no_wizard wrote:
               | Much of Excels dominance is due to its legacy
               | pervasiveness in certain industries/ roles (notably
               | finance or financial related but there's strong
               | bureaucratic use of it as well asan ad-hoc tracking tool
               | for instance) and the fact that two generations of people
               | grew up using it.
               | 
               | I've noticed over the years that younger generations are
               | far more used to using Google Sheets since schools and
               | universities have strong adoption of Google Workspace. As
               | a result, I've seen less and less use cases that were
               | once believed to be Excel only domains turn out not to
               | be.
               | 
               | I'm not going to proclaim the death of Excel by any means
               | but it's not as ironclad of a leader position as it once
               | was. There is however some increasingly niche cases where
               | Excel can do things that Sheets can't, or doesn't do as
               | well. One non obvious (for todays environment) use case
               | being offline portability, Excel being a standalone
               | program really helps here.
               | 
               | That said, they both suffer from one issue that's the
               | same, which is there is no ergonomic way to run business
               | logic rules over the calculations easily (and some cases
               | at all)
        
               | proamdev123 wrote:
               | What do you mean by "run business logic rules over the
               | calculations"? Genuine question.
               | 
               | Don't most people embed business logic into their
               | spreadsheet formulas?
               | 
               | Or is there something else you're referring to?
        
               | no_wizard wrote:
               | It's not uncommon for the sums of the spreadsheet to get
               | fed into other systems or even spreadsheets.
               | 
               | There being validation around that can significantly
               | reduce errors, such as checking totals against system
               | values etc.
        
               | danm wrote:
               | Maybe it has changed, but last time I tried to use
               | numbers it still didn't support resolving circular
               | references through iterative calculation.
        
             | wrs wrote:
             | In the case of Google Sheets, one reason is that
             | collaborative editing in M365 Excel is absolutely awful.
             | It's slow, clunky, and more importantly loses data. If you
             | have a shared spreadsheet with important data in it, it's
             | worth switching.
             | 
             | I've worked with a "prototype CRM" that was just a big
             | Google Sheet. Basically a lead generation form would add a
             | row to the sheet, and the sales team would edit cells to
             | reflect the state of the sale. It grew to 3 million rows
             | and still worked. Doing that in Excel is a laughable idea.
             | 
             | I've also been on a management team where compensation
             | planning was done with ten managers editing a shared Excel
             | sheet with just a few hundred rows. Somehow some rows got
             | deleted and others got slightly scrambled during the
             | process. It was a huge mess.
        
             | skissane wrote:
             | > But if you already know Excel, why would you add another
             | product for some subset of use cases?
             | 
             | I know Excel - I've been using Excel since before Sheets
             | existed. First spreadsheet I ever used was Lotus 1-2-3 for
             | DOS (I was just a kid at the time, so I was just mucking
             | around with it, not using it in anger - but I remember
             | watching my father use it in anger.)
             | 
             | At my work everyone gets Sheets, whereas you only get an
             | Excel license if you specifically request one - and most
             | people don't. So why would I use the product which most of
             | my colleagues don't have, instead of the product everybody
             | has?
             | 
             | Likewise on my personal laptop, I have an Excel license...
             | and still I use Sheets for most things. Habit maybe? I've
             | never used the web-based Excel, and I don't like having to
             | deal with open another app.
             | 
             | The only time I ever use Excel nowadays is if I need to
             | open some complex Excel spreadsheet that Sheets can't
             | handle properly, or if I need to work on some Excel
             | spreadsheet import/export function at work - both of which
             | are "once in a blue moon" activities for me.
        
         | manvillej wrote:
         | I feel like any solution that replaces excel must solve a
         | larger problem outside the scope of the spreadsheet.
         | 
         | Data intake, preprocessing, solving performance limitations,
         | executing automated decisions.
         | 
         | If it's just a "better excel" it's not better enough.
        
         | dudus wrote:
         | As a long time Google sheets user I recently was involved in a
         | project for one of these Excel heavy enterprises.
         | 
         | I proposed the CRUD solution to complement their use case but
         | the solution was not received well. They couldn't allocate
         | computer resources to host the solution within their infra
         | easily. So they pushed back and asked us to develop some Excel
         | add-on, PowerBI based dashboard or some kind of Microsoft no
         | code I can't care enough to remember the name.
         | 
         | I had no experience with PowerBI at all. But had a lot of fun
         | learning about it. Great ideas on that piece of software but
         | ultimately it's too hard for Excel users and too finicky for
         | real data processing other than very simple stuff.
         | 
         | It failed spectacularly in the end. We could never make it work
         | reliably and the customer also skimped on the license and
         | didn't want to add some extra features M$ft charges on the side
         | such as power automate and some "advanced instances". Which
         | meant the software runs have to be manually triggered on the
         | managers machine to update the dashboards. It was nasty.
         | 
         | The end result is completely unmaintainable. A collection of
         | "M" scripts inside a power bi dashboard, it pulled data from
         | multiple spreadsheets from specific locations, joined and
         | processed the data, and generated reports. The scripts runs on
         | a Thinkpad so it needs to fit inside the machine constraints of
         | memory and processing. Some of the files are manually updated
         | so very easy to mess up the format or permissions to the point
         | the whole thing broke.
         | 
         | It was a cool experience I'm never repeating
        
           | steine65 wrote:
           | This mirrors my experience. I am the accounting manager
           | responsible for updating these dashboards at my saas
           | employer. Troubleshooting powerbi errors during month-end
           | close is the most stress-inducing thing. And whenever
           | management wants a dashboard edit, we have to somehow know
           | that the spreadsheets being fed the powerbi cloud data will
           | also change. Maybe an extra row inserted into the pivot table
           | of ARR by product. Now any formulas directly referencing the
           | cells rather than using XLOOKUP are pointing to the wrong
           | product category. I was chewed out hard for that one a few
           | days ago even though IT made that change, since it updated
           | our report after review. TLDR: Powerbi suck, use a data
           | warehouse and SQL for data transformations.
        
         | cyrialize wrote:
         | My first career was at a fintech company that sold auditing
         | data. All of our clients were accountants, auditors, lawyers,
         | etc.
         | 
         | Every single person worked in Excel. It didn't matter how old
         | our website was, how crappy our code was - all that matter was
         | that we generated a CSV.
         | 
         | I used Excel often - I think many people underestimate how
         | powerful Excel is and how much of finance / auditing relies
         | upon it.
         | 
         | My co-workers used to joke that the world runs on Excel. That
         | some of the most important economic documents are probably some
         | .xlsx file named "economy-v3" that people send back and forth
         | over email.
        
         | mmooss wrote:
         | > I have had my fair share backlash when trying to introduce
         | replacement and complimentary tools. To replace excel, you not
         | only need to advocate for it's usefulness and you need to be
         | also be liable to the complaints from excel users. If anything
         | goes wrong no how minor with the new tool, you are the one who
         | introduced all these mess.
         | 
         | That is a universal issue of IT management: Any change
         | implemented in IT systems (or anything else) will get that kind
         | of resistance - bigger changes cause more resistance. If you
         | change their primary tool, which they use all day and on which
         | their jobs depend, expect a lot of resistance. The solutions:
         | 
         | 1) Get management buy-in. They set the ceiling for acceptance -
         | very few underlings will have more interest or make more effort
         | than their management; if the manager dislikes it, doesn't use
         | it, is disinterested, etc., then most others will do the same.
         | Also, management is your support - when someone objects, they
         | are not just objecting to you, they are objecting to their
         | manager.
         | 
         | 2) Get user buy-in. This is perfectly reasonable, if you think
         | about it: Their tools, they use the tool all day, their jobs,
         | probably they should have the biggest say. It means obtaining
         | and utilizing their input from the start on what the tool
         | should and should not do, etc. It may not be what you planned
         | or expect; it may shatter your dreams; that's good - your
         | fantasy was not aligned with reality. They provide the user end
         | (e.g., 'don't change the keyboard UI that is in all our muscle
         | memory and in all our documentation, and automated in macros';
         | 'of course you are migrating our macros, on which we depend,
         | right?!'), you provide the technical end (e.g., 'we need a
         | database with a spreadsheet UI and not a file-based
         | spreadsheet').
         | 
         | 3) Use all your development skills: test, mvp, deploy, iterate,
         | etc.
         | 
         | 4) Use some social intelligence: Deliver to the most
         | interested, capable users first. Others will see them being
         | uber-productive and want one too. Provide everyone with
         | incredible, highly responsive support. Etc.
        
         | analog31 wrote:
         | I think that experienced Excel users and managers don't expect
         | Excel to be perfect, but have figured out how to cost the
         | inevitable bugs and changes into their expectations, to a good
         | enough level of accuracy.
         | 
         | Nobody knows how long a software project will take, if it will
         | deliver something that works or not, and if responsive support
         | will materialize. Many if not most developers agree with this,
         | even if they disagree as to the root causes.
         | 
         | One way to think of it is that it's a difference between a
         | person and a process. A spreadsheet can be created and
         | maintained by a person -- often the end user themselves. But
         | since most people don't program, getting software written and
         | maintained requires a process.
         | 
         | The same is true of driving a car versus flying in an airplane.
         | When you drive, you feel like you're the person who's in
         | control of getting yourself to your destination. When you fly,
         | you're placing yourself at the mercy of processes that you
         | don't control and that are not all aligned with your interests.
        
       | inglor wrote:
       | When I worked at the Excel team our motto was Excel is the second
       | best tool for everything.
       | 
       | I'm excited to see more players in this space though, all the
       | standards are open and there are decent libraries with decent
       | licenses that exist. A lightweight LibreOffice alternative would
       | be neat and something truly open source and embeddable (MIT) is
       | great.
        
       | jeremyscanvic wrote:
       | I was recently looking for a Linux alternative to LibreOffice
       | Calc and couldn't find something that meets my needs (mostly CSV
       | import/export, filtering and pivot tables). It's great to see
       | this new contender showing up and even if it lacks major features
       | what's there so far looks very good. This is promising! Congrats
       | for the good work and best wishes for what's to come.
        
       | majkinetor wrote:
       | Great, very needed.
       | 
       | Consider making formula engine standalone as it might be used in
       | other contexts, like Markdown or html tables.
        
       | afiodorov wrote:
       | I am quite excited about the new era of WASM webapps - those are
       | cross-platform & fast. Unlike traditional desktop programs those
       | are sand-boxed & unlike mobile apps the distribution channels are
       | open ("side-loading" by default).
        
       | fithisux wrote:
       | Calc and Dbeaver with DuckDb for me. If it compiles with Mingw,
       | why not.
        
       | HexDecOctBin wrote:
       | Any plans to add C bindings? Most other languages have a decent
       | FFI story, and being usable from C will make it more universally
       | usable.
        
       ___________________________________________________________________
       (page generated 2024-11-10 23:00 UTC)