GNU recutils – human readable, plain text databases
gnu.org
gnu.org
> Why is the logo depicting a pair of copulating turtles?
> > Ask ams@gnu.org.
> What is the name of the turtles?
> > They are called Fred and George. And yes, they are both male.
3 of 5 of the questions in the FAQ are about these 2 turtles... Here I just wanted to know how different this was from something like noSQL.
This database is relational and might have a real life use-case with worthwhile tradeoffs. Those are big differentiating factors.
nah,... just add it to the faq
So, quite useful if you have a protocol specification with constants from which you want to generate code.
It is then super easy to version and compare differences. I am typically interested in new products and price changes for existing products so I can see what I want to purchase from my vendors. Having a weekly snapshot of this that I can go back in time through and visualize is really useful.
Being able to quickly edit rec files in emails and run queries on the command line is great.
I suppose if I was dealing with 100k+ products, I'd use a real database, but for the volume I am dealing with, it works really well.
I have been wanting to rewrite it in guile using simple sexprs as storage, but I am lazy.
Recutil format hits a sweet spot: easy to read, easy to modify by a human, and 'durable' in the sense that copying records around carries the info needed to integrate them later into the same schema.
Being able to export, import, and open recutils directly, would be powerful. Recutils can export an SQLite database schema at a fine enough resolution to reconstruct it (with, well, a schema-schema. but that's tractable), which would be great.
Utilities: http://man.postnix.pw/plan_9/8/ndb
Format: http://man.postnix.pw/plan_9/6/ndb
C Library: http://man.postnix.pw/plan_9/2/ndb
So much of the entire industry already relies on GNU code that I think that baring licensing issues no one ever got fired for choosing the GNU option. You know it will work and it will probably work well, forever.
1. I once went to an RMS talk where he said that the whole point of writing your own software was "so that you can give it a funny name". Which I take as good advice! :)
I'm almost positive that if we dig in a modern project dependency tree deep enough we'll find at least a couple that have an inappropriate joke in the readme or in the documentation. So how would recutils be any different?
Unfortunately, that argument is entirely straw man. Most corporate environments are absolutely fine with memorable non-functional logos. The issue is the narrative about gay turtle sex and perhaps the implied suggestion that the “rec” in recutils might stand for rectum.
In my personal life, I’m comfortable discussing turtles and rectums and sex and homosexuality. But I don’t want to discuss those topics at work with my co-workers, and most corporate environments aren’t just avoiding them for fun because they’re a bunch of stiffs, they’re avoiding such topics because there is a history of them causing actual problems at work, often lead to hurt feelings and the sense that the environment is not welcoming to all, and as a result there are several ways they’re legally required to encourage employees to avoid discussing such topics, and legally required to take disciplinary action if someone complains that someone else made negative comments about gay turtles or sex.
BTW this is all a side point to the fact that this photograph of turtles makes a terrible logo. It doesn’t work as a small icon or with reduced colors. It has no shape or symbolism. It’s unrelated to the product. It’s hard to see the detail even as a large full color image. The only thing that makes this logo memorable is the FAQ text, the story that it’s gay copulating turtles, which for all we know isn’t even true - turtles sometimes climb over each other, sometimes fight, and there’s no way to identify the sex of the turtles from this photo.
The command itself is a `recsel -e`. Which is not even remotely humorous, unlike, say, `dwarfdump`.
Why are you assuming the pun wasn’t intentional, and that both meanings aren’t implied? What exactly is the point of talking about male turtles copulating in the FAQ?
There is nothing wrong with ignoring the logo and just using the code, that isn’t the issue. The issue is the story of the logo & FAQ are intentionally controversial, even if the author only intended humor, and that loading the site and using the code at work would promote conversation about the topic of the logo and it’s narrative.
Or we could be adults and treat it in the way we treat any peculiar thing in a corporate environment, that is, ignore it and move on to what is actually needed? I've been in such situations quite a few times (mixed male/female environment, some old guys and young interns), and the maximum you could count on was a "well, that's an interesting choice", but most often people would just completely ignore it. We're not in elementary school to shout, "look, copulating turtles!"
On the other hand, I see your point. People got extremely cautious over the years because of real and perceived harassment attempts and their consequences. I can understand showing this page at work could be perceived by some in the same way as the famous dongle joke on a Python conference.
I had started on a python implementation[0] as a fun project, but got discouraged because I assumed no one used recutils to solve real problems. Hopefully this is the kick I needed to continue filling out the implementation.
my preferred format for readable data is s-expressions.
more flexible than json, easier to write than yaml and easy to parse for a program. if you structure the data properly when writing it to the file, then it is easy to read too. yet it has the flexibility to losslessly map most programmable data structures.
This is a crucial question, actually - at a first glance, I would wager to answer:
"The Recutils format is not nearly as universal or flexible as YAML/JSON. It essentially supports just one data structure, analogous to a SQL table or a list of dicts. But for that use case (which is quite important) it does seem to a more suitable format, and provides additional features that those formats and their tooling do not."
So the set of advantages over json/yaml are similar to SQL's advantages, except the database format is human readable and grepable.
in some of my bigger text engines I prefer a serialized hash table (berkeley db) over real databases because it's 10x faster under 20.000 records. constant database overhead is huge
Also, is it me, or the turtles at the top of the page are... Why?
About the logo
Why is the logo depicting a pair of copulating turtles? Ask ams@gnu.org. What is the name of the turtles? They are called Fred and George. And yes, they are both male. Why those names? /join ##English 16:40 <jemarch> Hello. 16:40 <someone> Hi 16:40 <jemarch> How would you name two (paired) gay turtles? 16:42 <someone> Fred & George?