Readit News logoReadit News
evanem commented on Modern CSV (app) version 2.2   moderncsv.com/modern-csv-... · Posted by u/evanem
evanem · a year ago
Hi, I'm Evan, developer of Modern CSV, a tabular file editor for Windows, Mac, and Linux.

I posted about version 2 a year and a half ago and thought I'd do a follow up since I've added a lot of features since then. I just added printing and PDF export capability, a popular request among my user base. I've also added pivot tables, JSON and XML importing and exporting, improved statistics, ASCII Separated Values parsing, aesthetic improvements, and a bunch of little things to improve the user experience.

It's enough to justify a major version upgrade, but I have some lofty plans for version 3 which is in the works. If you have any requests, I'd love to hear them!

evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
zestyping · 2 years ago
Once upon a time, I went looking for a MacOS CSV viewer and was surprised that there weren't one or two widely used, clearly awesome options. I went hunting.

I downloaded Modern CSV, hopeful that it would be a quick and easy solution. I really wanted to like it! I even paid for it. I made it my default app for opening CSV files. But after a week or so, I gave up in frustration. It has lots and lots of editing functions (like, 50+ editing commands!) but first and foremost it has to work as a viewer, and it doesn't. It has too many design decisions that don't make sense for a viewer.

Take, for example, the most common use case: I want to see what's in a CSV file, and it has a header row, because the vast majority of CSV files have a header row. What are the things I want to know?

    1. What columns are present?
    2. What do the columns mean?
    3. What does the data look like?
Let's see how this goes.

I. Headers

The first thing that stands out is that, by default, Modern CSV highlights the headers, but — misleadingly — doesn't freeze them. What's the point of headers if they are not frozen? As soon as I scroll, the answer to #1 is gone. Within the first 10 seconds of using Modern CSV, I find myself hunting for the "Freeze Headers" command.

I right-click on the headers, but it's not among the 25+ items in the context menu. I have to scan through all the pull-down menus, to find the single most commonly needed command: it's buried on the second level of menus, after 27 other menu options. 27! It is also mixed in with a few other similar commands, so I have to think about which one to pick:

    Toggle Highlight Header Rows
    Toggle Highlight Header Columns
    Toggle Freeze Header Rows
    Toggle Freeze Header Columns
    Toggle Freeze Header Rows and Columns
What are "Header Columns", by the way? In my whole life, I have worked with many, many CSV files and I've never seen header columns. Clicking Toggle Freeze Header Columns doesn't seem to have any visible effect.

Ah, now I've found "Toggle Freeze Header Rows." I will need to do this 99% of the time I open a file. Does it have a hotkey? No. I will have to navigate through two levels of menus to find item #27, every time.

II. Hotkeys

I know I won't last long if I have to navigate two levels of menus every time I open a file, so I look for a way to add a hotkey. Unlike every other Mac app, Modern CSV doesn't have a preference menu in the usual place, and Command-Comma doesn't open the preferences.

To add a hotkey, you must edit a CSV file of hotkey definitions, which means learning how the file is organized and the syntax for specifying hotkeys. Deviously, the column with the hotkeys in it is not the one you edit. Editing this column does nothing; you must instead edit the empty column next to it. This is explained in the instructions, but of course you can't see them, because they disappear when you scroll down to find the row you want.

Also, as you scroll down to find the "Toggle Freeze Header Rows" command, the column with the command names occasionally disappears off the left side of the screen because Modern CSV insists on letting you scroll over to column 49 even though there are only 3 columns in the file. Which brings me to...

III. Scrolling

Having solved this, my the next action is to scroll around to look at the data. And here I am stymied again: the scrolling response is maddeningly hard to control, for four reasons.

First, vertical scrolling happens at a constant speed. It doesn't matter how slow or fast you swipe your fingers on the touchpad; there are exactly two speeds: zero, and about 60 rows per second. If you are scrolling down to row 1,000, you must swipe and swipe and swipe continuously, and wait for ages until you get there. The constant speed also means that if you want to adjust the view up or down by one or two rows, it's impossible; the view will jump by 7 or 8 rows no matter how tiny your swiping movement.

Second, scrolling will continue coasting after you stop, for some distance. This distance varies, but it is too far; when I swipe only a small amount, the scrolling continues for about 30 rows. I tried a few tiny swipes, gradually swiping a little more and more, to try to figure out the algorithm; and it appears that the coasting distance stays at zero for the smallest swipes, and then suddenly jumps from zero to about 30 rows. Again, the discontinuity makes it very difficult to control.

Third, horizontal scrolling only moves by whole columns. You get no visual feedback until the view jumps by an entire column, and columns in CSV files can often be quite wide. This makes it very hard to control how much you scroll, and again, hard or impossible to shift your view by just one or two columns.

Fourth, Modern CSV always shows 50 columns, even if your file has fewer. That means there will often be a giant empty space off to the right of your data. And because there is no feedback until the view jumps by an entire column, it's easy to accidentally scroll over and get lost in that empty space.

The first of these problems alone is enough to make me want to quit the app.

IV. Filtering

If the header doesn't make it obvious what's in a column, a good way to understand it is to see what values are present. The Filter feature in Google Sheets and Excel is great for this: you get a dropdown menu in each column that shows you a list of unique values in that column, which you can tick on or off to apply a filter.

Modern CSV doesn't have this feature. "Filter Selected Column" is in the context menu for a column, which is great, but it doesn't work; it's a paid feature. This is basic stuff; you can't explore a 10,000-line CSV file without filters.

In a licensed copy of Modern CSV, "Filter Selected Column" brings up a dialog with ten lines of syntax instructions for me to read, and a blank text field to enter a filter expression. I don't want to have to read syntax instructions to apply a filter. If the window is a normal width, I can't even see all the syntax instructions, because they are cut off and cannot be scrolled into view. Resizing my window won't help; I have to close the dialog, resize my window, and open the dialog again to read the instructions.

The filtering syntax has three different ways to specify a range of numbers (>=20 & <=30, or 20+ & 30-, or 20–30), but if I want to filter for a particular string value that appears in half the rows, I have to retype the string into the box. In Google Sheets or Excel, you just tick a checkbox.

The whole app feels like this. Sophisticated operations are possible, but the most basic, common operations don't work properly or are unnecessarily complicated. I was really sad to go back to Excel because it's so heavy and slow, but I went back to Excel.

I know this is a long rant, and no one asked for my advice. But I hope this is helpful information. If I were to advise the author, I would recommend:

    Make easy things easy.
    Make scrolling work.
    Choose good defaults.
    Provide filtering in the free version, and make it easy.
That would bring me back to Modern CSV.

All these things become obvious if you watch someone try to use the app for the first time. Perhaps even better advice would be:

    Stop adding features.

    Watch someone use the app for the first time, for
    a real-life use case with a real-life data file.

    Just watch.  Do not say anything.  Record every 
    frustration they encounter in the first ten minutes.

    Then, with maniacal focus, eliminate every one of
    those frustrations and test again and again until
    the first-use experience is completely smooth.
I guarantee this will get you more paid users.

evanem · 2 years ago
Many of your complaints were addressed in version 2. These include:

- A preferences window for settings, keyboard shortcuts, and file extension options

- A Unique Values feature

- A File Metadata pane to easily set up things like header rows

- The command launcher width changes as the window width is changed.

A few were addressed in version 1:

- Persistent storage of settings set via command

- Headers rows frozen by default

Header columns work the same way as header rows, just vertically. I use consistent verbiage for clarity. If they appeared to do nothing for you, the reason is probably that the number of header columns is 0 by default. I haven't seen any confusion about it since adding the File Metadata pane.

There's a Minimum Number of Table Rows/Columns setting that's set to 50 by default. You can set it as low as 1. There's also a Number of Buffer Rows/Columns that will add rows and columns beyond the data. It's set to 2 by default.

I'll take a good look at scrolling on Mac. I haven't seen problems with my setup, so I'll work to reproduce what others are seeing.

evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
tacker2000 · 2 years ago
Can your app auto detect the CSV delimiters and also detect decimal point vs comma for numbers?

This is a huge problem when dealing with European and UK/US CSV formats (or whatever you mat want to call them) for me daily.

Excel only auto opens the format supported by the current locale, so anything else will just not be detected.

evanem · 2 years ago
It does delimiter auto detection and for the Statistics feature, it automatically detects dot vs. comma decimals.
evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
jdmichal · 2 years ago
I'm using this on Windows 11 and it's locking up trying to copy a single cell. As in, here's the entire repro:

1. Open Modern CSV.

2. Open any file.

3. Select any cell.

4. Hit ctrl-c.

Expected: The cell contents would be copied.

Actual: The program becomes completely unresponsive with high CPU usage and must be force-quit.

Happy to help however I can, because so far I really like this product and I want to be using it.

evanem · 2 years ago
I've never seen or heard of this issue. By any chance, could you send me a file that it crashes on? That or a video showing the crash. You can send them here: https://www.moderncsv.com/report-a-bug/
evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
MichaelZuo · 2 years ago
FYI there may be a bug with the mac version on Mojave.

I tried testing it out just now by copying a 5 million row by 14 column selection of random data, ~620MB, and it completely freezes up right after hitting command-c on my 2019 macbook pro 15. Even after waiting minutes, it's still frozen.

evanem · 2 years ago
I would expect this to take some time, but not minutes. I'll see if I can make it quicker and if not, I'll have to add a progress bar.
evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
francislavoie · 2 years ago
Some feedback:

- I couldn't figure out how to paste a CSV from clipboard and have it parse the CSV as-is. Instead, it just creates a single column with each line as a row. I think "Split Selected Cells Horizontally" might do it, but that's locked behind the paid version, so I can't verify. Either way, this seems like basic functionality that should be free.

- Selecting seems buggy; if I click down on a cell in row 0 then drag down, it only selects rows 0-2 and then stops. If I select anything below row 0 then drag up or down, it selects everything. I'm on Linux, maybe just a Linux thing? I dunno.

- I'd appreciate a "paste from MySQL table" tool or something; I tend to copy table output from my terminal (i.e. a +----+----+ kind of table), it would be nice to not need to switch the MySQL output to CSV first if I want to paste it in here quickly to futz with it.

- It's very annoying to see tons of options and buttons that I can't use at all in the free version. Please mark those up-front in the UI/command palette as not being available, it's not fun to click something, get a popup, have to dismiss it, then hunt elsewhere for a solution because I don't have access to it. Feels a bit dickish so it makes me want to pay for it less, tbh.

- As others have said, pricing seems fair, but I'm not convinced yet so I'll wait for now.

evanem · 2 years ago
1. If you copied from another table, it should paste as a table. If you copied a bunch of delimited text, then yes, it'll paste into a single column and you can you the Split Selected Cells Horizontally command to separate it into columns.

2. That first bug is known and for reasons I don't recall, is much trickier than one would think. It's still on my to-do list. The thing with dragging and selecting everything sounds like it might be scrolling really fast.

3. I'll consider it. Perhaps a smart paste option where it attempts to determine the nature of the text (e.g. whether it's a database table or what kind of delimiter it uses) and pastes accordingly.

4. I'll give this some thought as well. I'm not sure that disabling the commands is the way to go if the user doesn't know why they're disabled.

5. If you have any more questions, feel free to ask. Also, if you do buy and change your mind, just let me know and I'll issue a refund right away.

evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
d-k-bo · 2 years ago
I think you should release the Linux version as a Flatpak [1] to Flathub [2]. That way it could be install using a (graphical) software manager on many distros and it would increase the discoveribility of your program. It shouldn't be too complicated to create a package from the provided tarball.

[1]: https://flatpak.org/ [2]: https://flathub.org/

evanem · 2 years ago
I've been meaning to do this. I appreciate the reminder.
evanem commented on Modern CSV version 2   moderncsv.com/modern-csv-... · Posted by u/evanem
dmje · 2 years ago
Note to HN commenters: it's always nice to think, and express, "wow, you shipped a thing" before diving into a solid wall of criticism.

This fella has got over the biggest, greatest hurdle of them all - actually getting something out of the door - so should be commended for that. This is not to say that well thought out criticism isn't useful, of course it is, but maybe lead your comment with "Hey, amazing work on getting this far! ...if I may here's a couple of extra suggestions.." rather than "you should name it X / do Y / I didn't like Z".

Just a thought.

evanem · 2 years ago
I appreciate that. However, I did know what I was getting into. :)

u/evanem

KarmaCake day146May 31, 2022
About
Developer of Modern CSV (https://www.moderncsv.com).
View Original