The source content for blog.juliobiason.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
4.8 KiB

+++
title = "Nice Troubled Astatine"
date = 2022-08-03
update = 2023-07-27
[taxonomies]
tags = ["projects", "personal", "notes", "note taking", "microblog", "twitter"]
+++
Note Taking Application
<!-- more -->
A (I hope) novel idea about note taking apps: Instead of keeping the notes and
having either links or tags to link different content, each note is short and
you can create a thread of notes, somewhat similar to the way microblogging
tools like Twitter and Mastodon work.
Still thinking on storage. Initially, it feels like using SQLite would suffice,
but I'd prefer some text format for not "locking" the content into a single
thing.
Text Storage could be a couple of Markdown with special links, but that means
that building a whole graph of connected notes (all the threads in your notes)
would take a massive time, since every note would have to be scanned and marked
as a parent or child of another (also, a child note could appear before a
parent, and we would need to take that in care). Another solution would use a
hidden file for the index: all notes are markdown (with or without the special
links) but a single file contains the whole note structure. This could create
an issue when the user manually changes a note.
## Ideas for a GUI
### Insert note
```
+-------------------------------------------------+
| +---------------------------------------------+ |
| | New note: | |
| | [ ] | |
| | [ ] | |
| | [ + Add new ] | |
| +---------------------------------------------+ |
| |
| +---------------------------------------------+ |
| | This is a note | |
| | 2022-08-03 15:53 [ Delete ] [ + Followup ] | |
| +---------------------------------------------+ |
| |
| +---------------------------------------------| |
| | Another note, not necessarily a follow up | |
| | of the one above. | |
| | 2022-08-03 15:50 [ Delete ] [ + Followup ] | |
| +---------------------------------------------+ |
+-------------------------------------------------+
```
### Map view
```
+-------------------------+
-| A follow up of "A note" |
+---------+ / +-------------------------+
| A note |-
+---------+ \ +-------------------+ +------------------------+
-| Another follow up |---| Follow up of "Another" |
+-------------------+ +------------------------+
```
## Storage
Since we are keeping things in Markdown, it seems it would be good to have a
proper format that could also be read as a normal markdown.
```
# Note title
This is a note
---
2022-08-23 15:53
[parent-note-id](parent note)
Children:
- [child1](Child 1)
- [child2](Child 2)
```
```
# A note
This note has no parent and no children.
---
2023-07-27 14:46
```
```
# A parent note
This note has no parent, only children.
---
2022-08-23 15:53
Children:
- [child1](Child 1)
- [child2](Child 2)
```
The "note title" would also be the filename, *sluggered* (if that's even a
word). Also note that the GUI design does not have title, but those are
interesting 'cause that would produce the proper filename[^1].
Another option for the title: Top level notes can have just one line, which is
the title for the thread. All child notes could have a versioning-like scheme
for them, like
```
Single line note (becomes single-line-note.md)
|-- note content (becomes single-line-note-1.md)
| |-- another note content (becomes single-line-note-1-1.md)
| \-- more content (becomes single-line-content-1-2.md)
\-- more content (becomes single-line-note-2.md)
```
This can be done 'cause the note we would add a follow up already have a list
of children, so it's just a matter of adding "-1" if the note has no children
yet, or "last id + 1" otherwise.
There should be an index of sorts, with all the notes in order of insertion
(most recent to the oldest), just to speed up loading. This "index" would be
read as paging, so if we want Page 10, we would probably need
## Web
One nice thing to have, which could replace the GUI, is to have a Web
interface. This would allow using outside our device (as long as it have
internet access) and to make notes public or private.
If we do this, there should be two indexes files: One for everything and one
for only public notes. When the user is logged in (and since notes are
personal, only one user would be accepted), the system loads notes from the all
notes index; if it is not, only the public notes index is read.
---
[^1]: Note that there aren't titles in the GUI mock up 'cause the Mockup is
older than the idea of using Markdown files, and I want to keep some
"history" of the project there.