4/6/2026 at 9:19:03 AM
Visidata is a fast popular data tool in python https://www.visidata.org/ if you just want data entry.If I may be permitted a small plug ...
Oleo is a GNU spreadsheet going back absolutely donkey years. I cloned the repo here: https://github.com/blippy/oleo and made minimalist fixes to get the thing to compile.
I also based my own terminal-based spreadsheet based off of it call neoleo: https://github.com/blippy/neoleo
I wouldn't say that my project is particularly good, but it does have a number of features that I find useful. The next release will include Tcl bindings, so you can customise some of the workings of the app. There's also a module available where you can go to town programmatically.
It opens up a world of possibilities, including stuff like pivot tables.
package require oleo
load-oleo mysheet.oleo
set ws [toMat]
set subset [subRows $ws [mand [mstreq 2 foo] [mstreq 3 bar]]
It has what I think is a nice little query language, too. In the last line I select the rows from the spreadsheet sheet column 2 is equal to foo and column 3 is equal to bar.I'm kinda dog-fooding it at the moment to put in place features that I need. It doesn't have the full equivalence of SQL-equivalent though.
by blippage
4/6/2026 at 4:02:20 PM
VisiData is superb. It can work with website tabular data too; great for scraping.¹by m-hodges
4/7/2026 at 12:52:54 PM
> Visidata is a fast popular data tool in python https://www.visidata.org/ if you just want data entry.Visidata does vastly more than data entry. It's one of the most powerful applications I've used in years, and basically functions as a cross between a spreadsheet and a relational database with an extremely configurable TUI interface. It's one of the best tools available for doing ad-hoc data analysis, transformations, and joining data from multiple sources in different formats.
There are few comparable tools that allow you to open a Postgres table, a local CSV, and JSON being returned from a REST API in real time, do a complex join, filter and normalize the results, all in a single terminal session.
by Gormo
4/6/2026 at 9:25:19 AM
vd (visidata) is amazing. The only tool that really works for me with millions of rows csv'sby izhak
4/6/2026 at 2:12:07 PM
See also lnav (https://lnav.org), a mini-ETL CLI power tool.by chrisweekly
4/6/2026 at 12:13:50 PM
Thanks for showing this. What would you say the differences between the classic version of oleo and your neoleo version?by guessbest
4/6/2026 at 2:03:57 PM
Oleo is C, circa 50k of C code, Neo(-leo) is around 5k of C++ code. A 10th of the size, but not necessarily any less powerful. Oleo has some memory leaks in places, whereas Neo has no (known) leaks.Oleo uses lex and yacc, whereas Neo has a hand-parser.
Oleo is in the style of emacs bindings, whereas Neo is more vim-like, but without the modality.
I think the Neo code is better-structured and more readable (but I would say that, wouldn't I? - although it is far from perfect). C++ generally makes code more readable and obvious, without all that pointer arithmetic.
The internals of Oleo are more complicated. It uses byte-code for cells, for example. Neo stores a parse tree for a cell. So you can see that a lot of programming effort is saved right there.
In terms of speed, I suspect that the original Oleo is faster, although it's difficult to benchmark.
Neo is also heading towards being a library that you can compile in with other C++ code. Plus there's an interface to Tcl, which Oleo never had. So you get a lot of extensibility there which Oleo doesn't have.
I also think Neo is more generally accessible. It's got something in the way of a menu (still early stages), which helps. Neo is just generally less fiddly with editing cells, IMO. The mouse works, too.
Oleo does have an interface using Motif. Very early-90s. There's even an interface to GTk, although I don't think that works properly. I decided to abandon all that and just stick to an ncurses interface. After all, if you want a fancy interface, there are proper options these days like LibreCalc, Caliigra and Gnumeric.
by blippage
4/6/2026 at 2:29:28 PM
To add to the cool things you can do with Neoleo, I wrote a little TCL extension that loads current processes into the spreadsheet. I added custom bindings so that you could search for processes, go to its parent, and kill processes.I'm also half-way to adding a little calendar extension, too.
by blippage
4/6/2026 at 5:33:54 PM
Thanks for the extensive write upby guestbest
4/6/2026 at 1:45:19 PM
> Oleo is a GNU spreadsheet going back absolutely donkey years.Third line of README:
> As of this writing (February 1999)
Whoah, you weren't kidding!
by Andrex
4/6/2026 at 2:08:46 PM
Yes, I'm partial to a bit of retro. It does back to around 1991, IIRC. I don't think it had a curses interface in those days.And check this: version 1.2.2 is available on Aminet, for the Amiga. How's that for a blast from the past?
by blippage