Conversation
|
Hey just a note -- all this was done with codex 4.5xhigh + claude code opus 4.6 max effort. I used gpt 4.5 pro for some reviews. I also have various skills to do code reviews. So I bounced all the models off each other for a while, reviewed various outputs, asked for more investigation and added some additional tests. This was mainly to solve a pain point for me -- I love visidata and wanted to use it for duckdb files. I have it aliased as 'vd' now and it seems to work great. Hope it's useful and not more AI slop. |
|
Thanks, @mpr1255, it's much appreciated! and thank you for the disclosure, great job. I just did a writeup this weekend about this (https://visidata.org/ai), it sounds like this is AI level 6 or 7. Do you understand most of the code and overall technical choices (like you could find your way around without AI, level 6) or did you not even look at the code really (level 7)? |
|
Yeah probably closer to 7 than 6, I'd say? I looked at the code but didn't seriously read it. I mostly bossed the LLMs around into doing that. Like I would say "compare it closely to the sqlite loader -- do we differ only where absolutely necessary? tell me how." and then like, "ok is this as simple as it can be? No LLM slop??" [I realise the irony]. Then I would get codex and claude to check each other's work, and sent it to 5.4 Pro for extra AI power. Here is an example. Claude tells me
I'm a bit suss. I feed this to codex to confirm. Spelunks in the codebase and 10 minutes later says:
Now -- am I following all the rabbitholes there? No. I am doing a "lgtm" and just trying to ensure the tests pass and that I did the most minimal possible implementation. Also, I used it a bunch and it behaved normally. BTW big other issue: visidata will fill memory obviously if you try to open a gigantic file. But duckdb seems to behave worse because it shoves things in so fast. So I turned on lazy loading for the main db view (before you click into a table) and recover the metadata duck db surfaces for rows/columns. So you can find out about the tables in your db and not have to calculate them fresh each time. For no memory cost. FYI. |
Problem:
developApproach:
exec-sql, saver support, and deferred commit handlingsample_data/benchmark.duckdbfixture and save the replayed result totests/golden/load-duckdb.tsvChecklist:
open_duckdbreturns the DuckDB sheetrowtypeand# rowdefare presentduckdbdependency is noted inrequirements.txtsample_data/tests/load-duckdb.vdopens the checked-in sample datasettests/golden/load-duckdb.tsvis generated from replaying that loader testdev/formats.jsonlincludes the DuckDB sectionRisks:
duckdbpackage installedTesting: