bink
serverless microblogging for tilde.town! bink is a small project i threw together in one day.
command usage
town bink
: show post list
buttons used to navigate the list are similar to less
. here are the keys you can use:
- c: compose a new post in a text editor
- r: refresh the list
- ctrl-d: scroll down half a page
- ctrl-u: scroll up half a page
- space, page down: scroll down one whole screen
- down arrow, n, j, ctrl-n: go down one line
- up arrow, p, k, ctrl-p: go up one line
- page up: go up one whole screen
- g: go to top
- G: go to bottom
town bink --help
: returns a link to this page
town bink this is my post!
or town bink "this is also a post!"
will write all the words passed into it as a post for everyone else to see
town bink --pipe
: allow standard input to be the post body, eg. echo "hello world!" | town bink --pipe
town bink --dump
: dumps all post data to a json object
object logic
each system user that chooses to use bink will have a folder in their home directory called .bink/
, which will be populated by items named after the epoch-nanoseconds time of creation. the contents of each item are plaintext, and that is the post.
from the path where the object is stored, ex. /home/nebula/.bink/1745182221128478782
, the user who posted the item and the time it was produced can be inferred. each post object therefore has 3 pieces of data: the post body, the exact time the post was produced, and the user who posted it. the client will iterate over system files by using the /home/**/.bink/*
glob, collecting all of the user objects without using a central server.