Computational components
17 related links
- Timeline of changes
- Blog Statistics
- Bubbles as objects
- Colophon
- Convert Wordpress into Memex
- Integrate backlinks automatically onto pages
- Life list generator
- Modify Markdown files
- Plant location generator
- Recent changes
- Some Assemblage Required
- Memex - Version 3
- Wood Duck observations
- Wood duck work history
- Markdown Manipulation
- As We May Think
- A new day
Originally the idea of a memex was to provide a personal filing and retrieval system - a personal knowledge base. The utility of such a system is linked to how effectively the owner can gather, weave, and augment information (amongst other things e.g. retrieve information).
A lot of the "Second Brain" ideas focus on people manually gathering and weaving content. Related tools provide functionality to help this manual work. For example, Foam's key features such as wikilinks, templates, tags. Features which support the manual authoring process. In addition, most software supporting this work provides also provide various computational means to automate aspects of personal knowledge management. For example, Obsidian plugins or how Josh Comeau uses MDX to create interactive components by combining Markdown and JSX through use of MDX.
Computational components defined
Computational components are the automations I've developed to help gather-weave-augment the information on my Memex.
Current computational components#
The ecosystem I'm using to assemble Memex means that these computational components are implemented using Python and using a couple of MkDocs plugins
-
🚧 wood-duck-observations 🚧
Similar to wood-duck-work-history, but intended to gather observations of animals, birds, insects, etc made on wood-duck-meadows. Early development of the idea of bubbles-as-objects and how that can be integrated into the computational component architecture.
-
Allows regeneration work performed on wood-duck-meadows to be recorded and then woven together with where the work was done. Initial experiments with the bubbles-as-objects concept.
-
The (wood-duck-gallery-generator) gathers all the photos from the zone and plant pages for wood-duck-meadows. Implemented using
mkdoc-gen-filesto integrate a Python script intomkdocs -
recent-changes Macro that queries github changelog and generates a table or timeline of recent changes made to the site.
-
Generate and display statistics about the content of the blog.
-
Generate a public website version of Foam's graph feature.
-
Corpus Actions
Early work on a component to perform actions on the entire corpus of bubbles. Initial work done implementing integrate-backlinks-automatically-onto-pages
And some deprecated/archived components:
-
life-list-gallery
life-list-generator is/was a stand alone Python script (TODO integrate using
mkdocs-gen-files) generates the life list gallery from a combination of eBird CSV file download and images saved locally.Replaced by wood-duck-observations approach.
-
🚧 plant-location-generator 🚧
Early experiment to extract plant location data from plant photos.
-
Various different functions as part of the convert-wordpress-into-memex process
Category and archive pages, RSS feeds, and blog statistics are being generated using Python scripts.
Architecture#
There are two types of computational component based on what they generate, including:
-
Generators; and,
Create entire markdown files which are then translated by the SSG into HTML pages as part of building the site. Implemented using mkdocs-gen-files.
e.g. wood-duck-observations uses a generator to transform eBird and iNaturalist data into markdown files.
-
Macros.
Create markdown that is inserted into an existing Markdown pages. Implemented using mkdocs-macros-plugin.
e.g. the timeline-of-changes page uses '{{ recentChangesTimeline() }}' macro to insert a timeline of recent changes into the page.
Configuration#
Macros are configured by code within util/macros.py, for example
@env.macro
def recentChangesTimeline( numChanges : int = -1 ):
"""
Generate a timeline of the last numChanges changes to the current git repo.
By default, will show all changes.
"""
return getRecentChangesTimeline( numChanges )
mkdocs-gen-files configured via mkdocs.yml e.g. the following which configures:
woodDuck.py- wood-duck-gallery-generatorlifeList.py- life-list-generatorcorpusActions.py- various global tasks e.g. generating back links
plugins:
- macros
- gen-files:
scripts:
- util/generators/woodDuck.py
- util/generators/lifeList.py
- util/generators/corpusActions.py
corpus.py#
Provides a class to support corpus-manipulation. The ability to retrieve all or select part of the corpus of bubbles, increasingly based on the idea of bubbles-as-objects.
from corpus import corpus
bubbles = corpus()
#-- get a list of work-history bubbles
regionWorkHistory = bubbles.get_bubble_by_type("work-history")
Object model#
The bubbles-as-objects concept is based on the idea of each bubble (Markdown file) being treated as an object.