Site in costruction

Exobrain

Home of inorganic intellectual chaos and unpolished content

About exobrain

Notes about this very exobrain
0001-01-01 00:00:00 +0000 UTC

Finally starting an exobrain

Liking https://beepb00p.xyz one a lot. Especially annotation style. Done some more research on Org and org-mode. Might not be the right thing. Org is serialization format for org-mode, using it outside of it is kinda meh. Going with asciidoctor for now as it is practical to write and edit right now.

Adopting a daily journal filing method for this: avoids creating complex taxonomies and it is efficient to parse incrementaly having a cache file somewhere.

must think of a nice retrival system for this knowledge base. It must be an active app. There isn’t really a way to make it static.

Importing old stuff from exobrain v0.1

This is technically the 2nd revision of my exobrain, so i’ll call it v0.2.
Old version was just a bunch of pages in Hugo. Reorganizing it in a way that makes more sense.

User experience

Want to take a journaling approach to adding content: a file per day, append only. When rendered in Hugo should look like one single page.

DONE: Merge note files under a single section in a single view. * Completed on 2023-06-17 with note #1

TODO: Still need to figure out how to manage headings. Should i manage them at all ?

TODO: Still need to inject some Hugo magic into files to make this work. I need tooling to export stuff from exobrain in a machine-readable format.

TODO: Figure out tags for Zettelkasten functionality.


0001-01-01 00:00:00 +0000 UTC

Editing friction

Experienced first friction moments with the system.
Currently using Syncthing to sync exobrain across personal devices and Git to export it to the public cloud. Today i was looking to write a note and noticed something was wrong. The directory that contains this very note was missing, couldn’t figure out where it was gone. Checked sync history on phone and pc, couldn’t figure it out. Started developing some migraine-inducing thougths about distributed state failure modes. Then it hit me: i was one revision behind on the Git side of things. Git pulled. Problem solved. But the tought sill haunts me: in the event stuff gets messed up i struggle to repair the system state. I could lose data and not have the ability to tell with mathematical certainity.

I need to make the distributed editing process more reliable.

Considerations in solving reliability problems

Keeping the authoritative copy of exobrain in a backed-up CIFS share sure can solve desync problems, but then availability concerns arise.

For the system to be useful i must be able to edit it at all times.

System architecture at 2023-04-27

exobrain 20230427.drawio

0001-01-01 00:00:00 +0000 UTC

Lowering publishing friction

Separating the exobrain source from the website has been a great idea, using a submodule to relink them a dumb one.
The exobrain isn’t something inherently versioned, only the latest version matters at all. So using Git for this job brings nothing but worthless mental overhead.
I still had to manually sync the submodule in the website to the exobrain repo, that in turn had to be quite artificially be synced to the authoritative copy.

Directly rsyncing the website copy from the authoritative one is a much simpler and effective method to manage publication.


0001-01-01 00:00:00 +0000 UTC

On removing "Hugo magic" from exobrain files

Currently to correctly render exobrain via Hugo, exobrain files need to include some Hugo-specific data. Since this repository is not indended to be consumed by just Hugo in particular i was searching for a workflow alternative to "just plop files into a Hugo project", that being the very thing requiring "magic" to be there.
For a variety of reasons this is quite challenging at the moment.

Today tho i come across this thread, that may provide a very interesting intermediate solution.


0001-01-01 00:00:00 +0000 UTC

A good-ish content view for journaled notes

Figured out how to render journaled notes as a single page in Hugo: iteratively fetching the .Content property for each note from Hugo DOM proved a quite inflexible but simple and effective method.

While current result is satisfactory from the visual standpoint it definitely isn’t from the codegen one, this mainly due to the underlying Asciidoctor codegen combined with the inflexibility of certain Hugo features.
The table of contents for example results in this:

<nav id="TableOfContents">

<h1>Table of Contents</h1>
<nav id="TableOfContents">
	<ul>
		<li><a href="#_why_make_websites_simple">Why make websites simple ?</a></li>
		<li><a href="#_cool_android_stuff">Cool Android stuff</a></li>
		<li><a href="#_a_list_of_things_i_want_to_do_in_the_long_term">A list of things i want to do in the long term</a></li>
		<li><a href="#_dns_resolution_chain_from_my_local_system">DNS resolution chain from my local system</a></li>
	</ul>
</nav>
<nav id="TableOfContents">
 	<ul>
   	<li><a href="#_the_case_for_biparted_project_structure_buildsrc">The case for biparted project structure ( build/src )</a></li>
 	</ul>
</nav>
<nav id="TableOfContents"></nav>
<nav id="TableOfContents"></nav>

</nav>

TODO: Figure out how to customize Asciidoctor codegen

Overall this tecnique is is still an inferior solution to the data driven one, but it’s slighly better than before.