| For lucene / sqlite, I used the docs on the web site. SQLite got me a little experience with b-trees (as did couch), and I got to write a little query planner. Lucene was interesting because it was compact, had some skip lists for fast lookup, and was a log-structured merge tree. I borrowed bits of it for an index in a binary file format for work. For realmdb / couchdb, I looked at the source code. I did realm so I could extract my Craft.app docs. It's interesting because it's a column structured database, so I got to learn a little bit about that. I also learned that C++ had changed a bit since I last used it (lambdas!). And couch is an append-only btree. I got to learn to read Erlang with that project. I've also have a web scraper that reads from the Chrome cache (whose format keeps changing). I archive things like recipes that show up in the cache. And I've got code on github that decodes iOS desktop backups, which some people have found useful. (Written mainly so I could poke around in various applications' data and extract stuff from my keychain.) |