Learning

On tasks

A task can be seen both as a container of plugins or as a container of all the facts that have been learned and processed successfully by those plugins. It can therefore be controlled - started (so that it will run on schedule), stopped (so that it won’t) or run immediately.

At this point in Egeria’s development tasks are just names given to plugin chains. They can be used to address those plugins and they’re implicitly used to isolate facts learned by a specific task’s plugins from any other fact.

On input plugins

All input plugins are service-alikes that can be started, stopped or run. Note: some output plugins behave like services too. Also note that starting, stopping or running an entire task means starting or stopping or running all of the service-like plugins in its chain.

Inputs, regardless of what they do and how they do it, are always configured with a plan - a cron definition that looks like this: ‘*/2 * * * *‘ (this means “every 2 minutes”). When an input plugin is in the started state, it will automatically run according to its plan. Every time it runs, it learns facts - some of them new, some of them old.

Here’s a complete guide of the Cron format.

Facts learned by input plugins are fed to the rest of the plugin chain.

On mutators

Mutators receive a fact from the preceding plugin (an input or another mutator), process it and return it to the chain so that it can be processed by the next plugin in line. Mutators can forget facts, effectively removing them from the chain. Forgotten facts are gone forever - unless an input plugin learns them again.

On output plugins

Outputs make the magic happen: a file is downloaded, a torrent is sent to a BT client, a notification is pushed, a CSV table is created.

A few outputs are service-like; meaning they are also configured with a plan. Those plugins usually need to collect a number of facts over time and process them all at specified intervals (sending an email digest, writing a CSV file etc.). Those plugins can also be started, stopped or run just like inputs, but instead of learning facts they will accumulate them over time and then consume and forget them.

On Knowledge

Facts are small collections of metadata. They describe something in reality or on the Internet. Facts won’t include a video, but they can tell you where it is and what its name and description are. In a few cases facts do contain all of the data (e.g. Reddit private messages).

Facts are highly expendable; they are usually learned several times by the same plugin and should your Internet connection or electricity fail they still have a high chance of being processed just a little while later, as long as Egeria is kept running at all times, restarting it as needed.

Here’s what a youtube fact looks like (printed in a somewhat legible format, omitting a few fields):

Field Value
youtube:video:id:videoId: eWEJb_3IFBw
youtube:video:publishedAt: Thu Mar 31 2016 19:00:02 GMT+0200 (W. Europe Daylight Time)
youtube:video:title: Batman V Superman Discussion (SPOILERS)
youtube:video:description: From the March 30th stream, we talk about Batman V Superman at length. – Watch live at https://www.twitch.tv/previouslyrecorded_live.
youtube:video:thumbnails:default:url: https://i.ytimg.com/vi/eWEJb_3IFBw/default.jpg
youtube:video:thumbnails:medium:url: https://i.ytimg.com/vi/eWEJb_3IFBw/mqdefault.jpg
youtube:video:thumbnails:high:url: https://i.ytimg.com/vi/eWEJb_3IFBw/hqdefault.jpg
youtube:video:link: https://www.youtube.com/watch?v=eWEJb_3IFBw
youtube:channel:title: Previously Recorded
youtube:channel:description: Red Letter Media presents... Previously Recorded! A channel mainly starring Rich Evans and Jack from RLM doing some gaming action. [...]
youtube:channel:customUrl: previouslyrecorded
youtube:channel:publishedAt: Mon Jul 14 2014 03:27:40 GMT+0200 (W. Europe Daylight Time)
youtube:channel:thumbnails:default:url: https://yt3.ggpht.com/-ibOtuEASBgo/AAAAAAAAAAI/AAAAAAAAAAA/tPqxcB90mPY/s88-c-k-no-rj-c0xffffff/photo.jpg
youtube:channel:thumbnails:medium:url: https://yt3.ggpht.com/-ibOtuEASBgo/AAAAAAAAAAI/AAAAAAAAAAA/tPqxcB90mPY/s240-c-k-no-rj-c0xffffff/photo.jpg
youtube:channel:thumbnails:high:url: https://yt3.ggpht.com/-ibOtuEASBgo/AAAAAAAAAAI/AAAAAAAAAAA/tPqxcB90mPY/s240-c-k-no-rj-c0xffffff/photo.jpg

There’s a lot you could do with even this little amount of information. Notifications, keeping a log, downloading stuff... The point of Egeria is to automate the systematic consumption of data, letting you spend more time exploring new things. Egeria wants you to stop clicking on the same thing every day to see if there’s an update. Go click on entirely new stuff instead.

On Wisdom

Wisdom equals Knowledge plus time. You don’t need to know anything else about it.