9 ms·
Pyspread – Pythonic Spreadsheet
- frognumber 2y agoThis looks a very good idea. This would be an ideal place for a semi-technical user to contribute documentation. Good starter open-source contribution. Without that, it's hard to figure out if it would work for me, let alone give feedback.
- sevagh 2y agoEvery dev here loves throwing unglamorous volunteer work to non-developers, acting as if it's a favor.
- blitzar 2y ago"You will be paid in exposure" - this is where the venn diagram for devs & social media influencers intersect.
- psychoslave 2y agoSo what, who want raw wild naked large exposure? If you don’t get an army of free PR specialists, lawyers and body guards to protect you and your beloved ones h24 every single day for the rest your lives, it’s an obviously net negative situation.
- jjmarr 2y agoExcept when you contribute to open-source, you typically have a legal document (the licence) that explains how the exposure will be paid.
- JulianChastain 2y agoSome of the motivation for this comes from how often devs want to contribute to open source but are intimidated by how difficult the barrier of entry is, particularly for large projects. It's surprisingly hard to find a good list of projects that a beginner or even intermediate programmer can substantially contribute to. The ones that do exist tend to have the low hanging fruit plucked pretty quickly.
- frognumber 2y agoA few points: - Most of my career was made by being the author of one popular open source platform which happened to do well. - I've recruited people based on open-source contributions. If I want an expert in [X], finding someone who contributed to [X] is a good bet. - The flip side is I've made (minor, helpful) contributions to many projects in part for exposure. My name is in the commit list of many systems in domains where I have wanted to work. - Many mid-sized contributions look good on a resume, especially for a junior developer. Indeed, I've made one case to promote someone based, in part, on contributing to a library we were using (even if only tangentially). If you want a job in e.g. network security, find something in a firewall, anonymzing proxy, packet sniffer, or whatnot, and make a PR. It's often quick, easy, and helpful. A corollary is you do actually learn a lot about a system by contributing. I have no axe to grind here, but I think the cynicism is unwarranted.
- sevagh 2y agoI love open source. My cynicism isn't about open-source, but about the OP's first post being "these docs suck, snaps fingers maybe one of you non-devs can work on it."
- frognumber 2y agoGood life lesson: You don't know until you ask. That's more a salesperson mantra than SWE, where for every 10-100 people you ask, someone buys something. However, I've raised money many times simply by shamelessly asking. Second good life lesson: Don't assume things about others. People who make $1/day, $10/day, $100/day, $1000/day, $10,000/day, etc. have fundamentally different priorities and motivations. Ditto on many other axes. Good synergies are leveraged working across such differences.
- resource_waste 2y ago>Every dev here loves doing volunteer work as a favor. Devs are expected to contribute to FOSS, write free educational blog posts about technology, and fix your friends computer! Ask a doctor why something hurts and they tell you to come into their office and insurance will bill you.
- sevagh 2y agoThis sounds made up tbh. I mean, I agree it's common to feel this "pressure" but the day you discover the pressure isn't real is the day you level up. And I charge plenty for fixing peoples' software pains. I do open-source and write blog posts to satisfy my own desire to publicize my work, and for exposure, and to put my skills on display. Not as a race to the bottom. I could have had a career without those things.
- photochemsyn 2y agopandas has a good documentation model for installation and usage: https://pandas.pydata.org/docs/getting_started/install.html https://pandas.pydata.org/docs/getting_started/install.html https://pandas.pydata.org/docs/user_guide/10min.html https://pandas.pydata.org/docs/user_guide/10min.html
- rbanffy 2y agoThe Gods have listened to me!
- kwhitefoot 2y agoI tried to install, and discovered yet again why I fell out of love with Python. Executing: pip3 install -r requirements.txt gave this error: " Traceback (most recent call last): File "/tmp/tmprhazpypn", line 126, in prepare_metadata_for_build_wheel hook = backend.prepare_metadata_for_build_wheel AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel' ... ERROR: Command errored out with exit status 1: /usr/bin/python3 /tmp/tmprhazpypn prepare_metadata_for_build_wheel /tmp/tmpl72s0sfd Check the logs for full command output." I'm on Linux Mint 19.
- kreddor 2y agoI tried to install it on ubuntu 22.04 and got a different error using pip. I'm not experienced enough with Python to quickly figure out how to proceed. It's a shame it isn't easier to install.
- amias 2y agostop trying to use the system python for application development. You will break your OS and you will make your code machine specific. Go read up on Virtual Envs , you were the problem here.
- tupolef 2y agoAnd for the lazy ones, pipx uses Virtual Envs and can install most things from a path, an archive or a package name. Install pipx and check pipx install --help.
- evilduck 2y agoPython has like a dozen competing solutions in their package management space. Python is clearly the problem, not the user. Their docs don’t say that, they advertise exactly what the GP ran. Python needs to unfuck its ecosystem.
- smaudet 2y agoYeah they kinda screwed the pooch on that. That being said, venv is the official solution, and it works fairly well. pipenv/pipx are some alternatives...but yeah. What exactly is your system installation for if you aren't supposed to install anything to it? The package system should be able to attempt installing via venv or be able to block uncompatible packages with sane error messages.
- voxelghost 2y agoI am Jacks endless disappointment. j/k - it looks nice - how would you compare/position it against something like jupyter lab?
- fab13n 2y agothe magic power of spreadsheets is that they encourage improvisation, and it probably applies to that one. you have only one data structure (the 2D table), data types are super-weak, there are no variable names... all of this guarantee a maintenance nightmare, and rightfully scares developers. But it's also a very low barrier to entry. You've got data, you paste them into the grid, and you start toying with them, before having figured anything about them. That's an amazing superpower, when targeting non-developers, and that's why Excel is the most used programming language over the world, by far: it's probably got an order of magnitude more users than there are trained developers in the world.
- WillAdams 2y agoand _that_ is why I'm still very sad that Lotus Improv didn't make it in the marketplace --- gathering all the formulae into one pane was _incredible_ for organization and providing a single top-level view of what a spreadsheet was doing. I really wish Flexisheet would get to a usable point, or that Quantrix wasn't so expensive.
- metadat 2y agoWhat is the meme behind this reference: "I am Jack's endless disappointment"? I searched the web but still unclear.
- fishyjoe 2y agohttps://www.quora.com/What-does-Im-Jacks-complete-lack-of-surprise-mean-in-the-movie-Fight-Club https://www.quora.com/What-does-Im-Jacks-complete-lack-of-su...
- voxelghost 2y ago
- oulipo 2y agoI guess it would be "easy" to compile to WASM using pyodide or such, and have a full in-browser version? might be cool
- codingglass 2y agoLooks like the interface/windowing is built on Qt/PyQt. QT does have a WebAssembly build, but I don't think it's all that simple of a transition.
- zero-sharp 2y agoI wonder what the performance is like?
- ssl232 2y agoI see it uses numerical designations for both the columns and rows allowing indexing like a 2D matrix. Nice. One of the many annoyances of Excel is the alphabetic columns that make even less sense beyond 26.
- tichiian 2y agoThat A1 mode is Excel "Baby-Mode", you can switch to R1C1 mode in settings. Things are far easier then, and more sane. His Excel-lence also recommends this: https://www.youtube.com/watch?v=JxBg4sMusIg https://www.youtube.com/watch?v=JxBg4sMusIg
- falcor84 2y agoBaby mode?! As a full grown adult, I find the cognitive load of the base 26 arithmetic of "what column is an offset of 8 to the right of AW" to be exactly what I needed to fully forget about what I came there to do in the first place
- epcoa 2y agoBaby’s lack object persistence and a formed theory of mind, seems to check out.
- mhh__ 2y agoNever seen anyone actually use this. The "real" answer is to use names and tables. That and generally not having data flying up down left and right.
- steine65 2y agoAgreed! Hard cell references should rarely be used. Names for metadata variables (eg. Current_Month) and tables for datasets.
- tichiian 2y agoYes. But many parts of excel don't support those. E.g. conditional formatting just doesn't deal with names. Also, when you need names, it is a sign to reach for a proper programming enviroment like Delphi or Lazarus.
- amias 2y agothis seems like a huge reinvention of jupyiter , i really hope they aren't going to recreate all the bugs.
- cdrini 2y agoI think one major difference between spreadsheets and Jupyter notebooks is state/dependency graph. In a notebook, cells don't depend on each other. They can be run many times, and the order they're run in matters. This is one of the major gotchas with notebooks. With spreadsheets, they're generally deterministic. There is no notion of "cell order", cells are recomputed automatically depending on the dependency graph between the cells. This results in a pretty big user experience difference.
- ziml77 2y agoBut according to other comments here, that's unfortunately not how this spreadsheet program works.
- cdrini 2y agoYes in that it doesn't appear to use a dependency graph to track recomputes; it recomputes everything on a cell change (according to another commenter anyways). But the UX effect is still the same in that the user never has to think about cell order, and every cell is always consistent with each other.
- tichiian 2y agoPython is a bad language for this, because one-liners are awkward. Multiline code is possible but ugly due to indentation-based syntax. Brace-based languages would be far more suitable here.
- DrNosferatu 2y agoI couldn't understand what's the datatype of each cell. - How to use NumPy and others?
- WillAdams 2y agoI would really like to see a distribution which puts all the best alternative software together: - pyspread for a spreadsheet - LyX for a word-processor - OpenSCAD for a 3D modeler - TkzEdt (or ipe) for 2D drawing &c. (and I'd be interested in suggestions for similar software for other tasks, esp. presentations and database work)
- heggy 2y agoWhen would you take OpenSCAD over Blender?
- giancarlostoro 2y agoMy understanding is that with CAD software you can go backwards and have (near?) infinite edit history, in a way you cannot with Blender. Which makes it very, very useful.
- spott 2y agoA lot of cad software actually has an editable history: you can go back 100 steps and modify a dimension or a step and have the rest of the model updated to take that new dimension into account. I wouldn’t work with any cad software that didn’t have that ability.
- constantcrying 2y agoThis is called parametric design. Since CAD programs do not operate on meshes, this allows you to e.g. change the dimension on some part and have the rest adjust accordingly. How well this works depends on the situation, if changing a parameter causes new faces to appear on the object this is usauayvwry difficult to handle, even for commercial CAD programs.
- bitdivision 2y agoBlender wasn't originally designed to be used for CAD type applications. It's possible of course, but you're likely better off with something specifically meant for precision CAD models. Specifically for 3d printing, I don't think blender is ideal. I think most programmers like OpenSCAD - what better way to make parametric CAD models than by writing code?
- dfox 2y agoIt seems to not be a true spreadsheet with dependency tracking and instead it recomputes everything after each change. Whis probably kind-of obvious as how to track the dependencies for arbitrary Python code is not that obvious. But without resorting to some static analysis magic one could just track accesses to the magic S[] during the excecution of the cell, its value cannot depend on anything else than what was accessed during the evaluation.
- cmcconomy 2y agowhat if you wrap all your cell contents with a memoize
- mewpmewp2 2y agoOr maybe worst case allow user to add deps like in React useEffect.
- dgacmu 2y agoThat gets broken by constructs like sum(all of column 5) when new rows or columns are added. (It's very similar to the problem of locking in databases)
- movpasd 2y agoOne issue with this is that arbitrary Python code can have arbitrary side-effects. Your suggestion reminds me a lot of fine-grained reactivity like in SolidJS, which makes sense, since spreadsheets basically operate on reactive programming. Some great articles by Ryan Carnatio on the topic. The side-effects thing comes in if a user puts in some side-effect in a dependent cell, which is equivalent to adding side-effects in a memo in reactive-speak.
- regularfry 2y agoShame it's GPL3. That counts it out of being included in FreeCAD, which I can't help but feel would be an improvement on the current spreadsheet workbench.
- adolfopd 2y agoEneble number line to 2^25 or minimal 2^22 by default. Kill many user from Excel limitation 2^20!!
- Kim_Bruning 2y agonix run nixpkgs#pyspread Not saying Nix(os) Is The Way, but sometimes it does ok.
- ingenieroariel 2y agoI did not believe you and just typed it on OSX, half a minute later the app was ready for me to use. nix run nixpkgs#pyspread [0/1 built, 3/113/132 copied (1311.8/1721.6 MiB), 280.4/300.7 MiB DL] fetching llvm-16.0.6 from https://cache.nixos.org https://cache.nixos.org https://pasteboard.co/P1eh7B7W8C9R.png https://pasteboard.co/P1eh7B7W8C9R.png
- just_testing 2y agoI just downloaded nixos for WSL2. Way easier than I thought. Thank you!
- brudgers 2y agoRelated? Python in Excel: https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d https://support.microsoft.com/en-us/office/get-started-with-...
- ptx 2y agoNot actually "in Excel", though. The Python code runs on Microsoft's servers (they say in the introduction) and Excel is just a client. There's no reason they couldn't embed CPython in Excel, but maybe the intention was for the online version of Excel to have feature parity without having to compile Python to JavaScript?
- cyanydeez 2y agothe intention is to lock in orgs to their cloud services. This is a value-add. They really know that Excel, Word are "feature complete" and the only way they're going to make money on it is by harvesting and locking in the users.
- mhh__ 2y agoAwful. They don't seem to understand excel anymore. If you want to see this done properly (on some limit) look at pyxll.
- eigenket 2y agoI'm also interested in the least pythonic spreadsheet, has anyone worked on that?
- deleted 2y ago[deleted]
- voxelghost 2y agoI heard microsoft made an attempt
- eigenket 2y agoThat was the joke, I guess it wasn't appreciated ;)
- dang 2y agoRelated. Others? Pyspread – Spreadsheet with deep Python integration - https://news.ycombinator.com/item?id=30426053 https://news.ycombinator.com/item?id=30426053 - Feb 2022 (1 comment) Pyspread – Spreadsheet implementation in Python, cells return Python objects - https://news.ycombinator.com/item?id=7593603 https://news.ycombinator.com/item?id=7593603 - April 2014 (1 comment) Show HN: Spreadsheets using Python - Have you seen this? - https://news.ycombinator.com/item?id=1884896 https://news.ycombinator.com/item?id=1884896 - Nov 2010 (47 comments) PySpread: A spreadsheet that accepts a pure python expressions - https://news.ycombinator.com/item?id=265132 https://news.ycombinator.com/item?id=265132 - Aug 2008 (3 comments)
- justin_oaks 2y agoI'd like to give praise for the "Target User Group" section on the homepage. Not only does it say what users the app is for, but also who it is NOT for. I think this kind of information is invaluable in deciding whether or not to use or suggest an app. I can understand if app developers want EVERYBODY to user their app (whether or not its the best for the job) or if the app developer just doesn't want to take the time to write out who the app is NOT for. But I will praise those who do include that information.
- TheCleric 2y agoI like it and I'll take it a step further. I think this is important information for a developer to admit to THEMSELVES at least. Being all things to all people is a route straight to burnout for an open source project.
- behnamoh 2y agoAnd yet, it is not available on macOS, presumably THE platform where that target user group lives.
- yazzku 2y agoAnd what makes you think that?
- tazu 2y agoI wish Stackoverflow included "daily operating system" in their surveys, but I'd wager that 50%+ of professional developers use MacOS. For many reasons probably, but for me it's simply because it's a nice BSD system that translates well to Linux servers (prod).
- throwaway2037 2y ago> but I'd wager that 50%+ of professional developers use MacOS Ok, I will take that bet against you. If you think it true, then you are living in a bubble. Probably 90% use MS Windows with no choice, because they work in a big enterprise that uses MS Office and Exchange/Outlook. For enterprise email, is there any competition at this point? I don't know any.
- breckognize 2y agoShameless plug: If you have bigger data sets, check out https://rowzero.io https://rowzero.io We scale up to hundreds of millions of rows and have native Python support. You can define functions in Python and call them as formulas from any spreadsheet cell. We seamlessly marshal Pandas dataframes from Python land to spreadsheet land and back. [1] We're also hosted and support real time collaboration like Google Sheets. We reimplemented the Excel formula language. We connect directly to Postgres, S3, Snowflake, Redshift, and Databricks. And the first workbook is free. [1] https://rowzero.io/docs/code-window https://rowzero.io/docs/code-window
- blagie 2y agoShameless suggestion: Instead of one free workbook, make unlimited free workbooks, but unusable for corporate settings. I'd recommend binary sharing: - Only I have access (private / personal use) - The universe has access (open-source use) But one free workbook still beats the typical 30-day trial.
- Aliyekta 2y agothe api page doesn't seem to work.
- JosephRedfern 2y agoInterestingly, Giles Thomas (the guy behind Python Anywhere) originally developed a Pythonic Spreadsheet application, called Resolver One, and then iterated to a a web-based version, called Project Dirigible. Python Anywhere eventually span out from Project Dirigible when they realised that it was mostly being used for "generic" Python development rather than being used as a spreadsheet. There's an interesting write-up on this evolution here: https://blog.pythonanywhere.com/197/ https://blog.pythonanywhere.com/197/, and a demo of Dirigible here: https://www.youtube.com/watch?v=2ZoIp-5NaiQ https://www.youtube.com/watch?v=2ZoIp-5NaiQ. Project dirigible ended up being open sourced here: https://github.com/pythonanywhere/dirigible-spreadsheet https://github.com/pythonanywhere/dirigible-spreadsheet.
- golem14 2y agoI'm curious how it compares to emacs' calc / spreadsheet mode in org. Looks like it is a) a stand-alone X11 app (not easily runnable on macos) b) using python instead of elisp. Is that roughly accurate ? I can't easily understand from the post.
- cognomano 2y ago> Execution order between cells is not guaranteed to be stable and may differ for different versions of Python.
- pasc1878 2y agoThere used to be a python spreadsheet that worked as a spreadsheet - Resolver One. It was .Net based but did not make enough money. I wonder if done now there would be enough support to open source something like this. For a review see https://blog.jonudell.net/2007/09/27/first-look-at-resolver-an-ironpython-based-spreadsheet/ https://blog.jonudell.net/2007/09/27/first-look-at-resolver-...
- smithza 2y agoI have been using grist [0] for a number of months. Self-hosted. Uses Python and has defined all common Excel functions as Python functions. Has a web-api so it can be used as a kind of database. Very nice for my small use-cases where Excel would have fit the bill. I have not stress tested it and I know there are row limitations without going to the enterprise edition. 0: https://www.getgrist.com/ https://www.getgrist.com/