An open-source information manager
Neomem is a combination table and document editor, with free and paid hosting plans and a marketplace for plugins.
You can filter, sort, group, and edit data from different sources in the same way - files, bookmarks, email, database, etc.
It's open source and cross-platform. More information at https://github.com/bburns/Neomem.
Development is ongoing, with a launch planned for August 2021.
Follow along on Twitter - https://twitter.com/bburnskm.
Note: this site is generated in Neomem - will make it look nicer later...
Postgres plans and new new new blog
My plan at the moment is to use Postgres for the main datastore - it'll have nodes, edges, and history tables - the latter will be a TimescaleDB table, so it can archive and drop off data as needed.
This structure should work with the other project as well, so they can feed off each other. Later, when need to integrate different datasources, could try Stardog to link them together.
I'm going to make a simpler blog - I'm not crazy about Hugo - it's a bit complex for what I need, and I spent too much time trying to adapt a template to what I needed. I just want a page with little blurbs and links to articles. So going back to a simple html generator.
Back to Hugo, and Stardog Knowledge Graph
I'm putting this blog back to Hugo to try to make it look nicer...
The gateway needs to be able to consolidate different datasources. I Googled around and wound up at Stardog Knowledge Graph - it's a free platform for building knowledge graphs on different datasources. Will investigate.
PostgreSQL and A Graph Extension (AGE)
I think I'll try PostgreSQL for the main backend - there is a graph extension for it, a time-series extension, a GIS extension, and you can store JSON/JSONB data in fields. So it seems to have the best of everything.
A new blog, using GitHub Pages / Jekyll
Here is my new blog, stored in / generated by Neomem and GitHub Pages with Jekyll. I'll try to make it look nicer later.
I'm hoping that writing a blog in Neomem will get me to make it functional faster.
I've been spending weekends lately working on it, but every time I come back to it I think - this is too complex - and try again. Maybe eventually it'll settle on a good architecture.
Last week I found ArangoDB, which is faster and uses less memory than Neo4j, and I like the query language a bit better. So I'm going to try that for the main storage.
But for now, this is stored in a json file along with other test data.
I'm trying to figure out how to handle types - Neomem needs to understand a set of basic types, and to translate between those and each datasource's types.
e.g. Chrome Bookmarks have a 'date_added' field, which is based on the year 1601. We'll need to translate that to the 'created' field, which is an ISO datestring like '2021-02-08', and vice-versa.
We could store a library of these datatypes, usable by different datasources. e.g. 'date1601', in case some other datasource needed it also.
Put this in neomem-util? neomem-types? neomem-data?
Types need to be dynamic, as with neo4j - user will be able to define new types/labels as needed, and they can contain fields, or relations with other nodes.
A new blog, using Hugo
I looked at a few static site generators -
- Hugo - Go
I tried Eleventy but wasn't crazy about the architecture and documentation. Gatsby seemed interesting and well-designed, but was terribly slow. Hugo is fast, and seems well planned out and organized.