From 8c6ad29b2ba47732b3fddbf5c3112b4add1ee14d Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 26 Jul 2019 22:33:49 +0200 Subject: Add post: Talk at the rust meetup stuttgart --- content/blog/2019-07-26-meetup-talk.md | 15 + static/rust-meetup-talk-20190726/slides.html | 439 +++++++++++++++++++++++++++ static/rust-meetup-talk-20190726/talk.md | 383 +++++++++++++++++++++++ 3 files changed, 837 insertions(+) create mode 100644 content/blog/2019-07-26-meetup-talk.md create mode 100644 static/rust-meetup-talk-20190726/slides.html create mode 100644 static/rust-meetup-talk-20190726/talk.md diff --git a/content/blog/2019-07-26-meetup-talk.md b/content/blog/2019-07-26-meetup-talk.md new file mode 100644 index 0000000..27e4051 --- /dev/null +++ b/content/blog/2019-07-26-meetup-talk.md @@ -0,0 +1,15 @@ +--- +title: "Rust Meetup Slides" +date: "2019-07-26T21:45:40" +tags: [ "linux", " open source", " programming", " rust", " software", " tools", " imag", "talk" ] +--- + +Today, I held a talk on imag at the +[Rust Meetup Stuttgart](https://gettogether.community/rust-stuttgart/). + +Here are [the slides](/rust-meetup-talk-20190726/slides.html) (revealjs). + +The revealjs is _not_ included in the website, so it pulls it from the web. If +you don't want it, don't click this link. +The [raw markup can be found here](/rust-meetup-talk-20190726/talk.md). + diff --git a/static/rust-meetup-talk-20190726/slides.html b/static/rust-meetup-talk-20190726/slides.html new file mode 100644 index 0000000..cb31b61 --- /dev/null +++ b/static/rust-meetup-talk-20190726/slides.html @@ -0,0 +1,439 @@ + + + + + + + + imag + + + + + + + + + + + +
+
+ +
+

imag

+

Matthias Beyer

+

July 26, 2019

+
+ +
+

imag

+

Personal information management suite

+
+
+

Idea

+
    +
  • Collect Metadata +
      +
    • calendar, contacts, todos…
    • +
  • +
  • Connect Metadata
  • +
  • Query Metadata
  • +
+
+
+

Future…

+
    +
  • Automatic suggestions
  • +
+
+

Hey Dave…

+
+
+
+

Existing tools

+
    +
  • +taskwarrior +
  • +
  • +khal +
  • +
  • +khard +
  • +
  • +abook +
  • +
  • +… +
  • +
+

yes, but…

+
+
+

Existing tools

+
    +
  • +no interoperability +
  • +
  • +no composability +
  • +
  • +no scriptability +
  • +
  • +not always text-only +
  • +
+
+
+

Workflow

+
    +
  • +Email comes in +
  • +
  • +imag classifies it +
  • +
  • +it is from Lisa +
  • +
  • +it is in a thread of emails +
  • +
+
+
+

Workflow

+
    +
  • +… which is connected to a calendar entry (tomorrow) +
  • +
  • +… which is connected to a recipe +
  • +
  • +… which is connected to a shopping list +
  • +
  • +… which is connected to opening times of a shop +
  • +
+
+
+

Workflow

+
    +
  • +The shop closes at 8pm, it is 6pm +
  • +
  • +this seems to be important! +
  • +
  • +imag notifies you +
  • +
+
+
+

Goals

+
    +
  • plain text only
  • +
  • scriptable
  • +
  • composable
  • +
+
+
+

Facts

+
    +
  • +Rust +
  • +
  • +init commit: 2015-10-18 +
  • +
  • +41,827 LOC (2019-07-14, master) +
      +
    • +34,925 LOC Rust +
    • +
    • +3,025 LOC Markdown (documentation) +
    • +
    +
+
+
+

Facts

+

Implemented domains:

+
    +
  • bookmark
  • +
  • contact
  • +
  • diary (log)
  • +
  • habit
  • +
  • notes
  • +
  • timetrack
  • +
  • wiki
  • +
  • todo / mail (rewrite pending)
  • +
+
+
+

Architecture

+
    +
  1. “Core” +
      +
    1. “The Store”
    2. +
    3. “The Runtime”
    4. +
  2. +
  3. “Entry layer”
  4. +
  5. “Domain layer”
  6. +
  7. “UI Layer”
  8. +
+
    +
    +
    MVC anyone?
    +
    +
+
+
+

Core: The Store

+
    +
  • +Filesystem abstraction +
  • +
  • +CRUD interface +
  • +
  • +defines “Entry” +
  • +
  • +Different backends (FS, inmemory for testing) +
  • +
+
+
+

Core: Entry

+
    +
  1. Header
  2. +
  3. Content
  4. +
+
[imag]
+version = "0.10.0"
+
+[somemore]
+headers = 123
+
+
+

Core: The Runtime

+
    +
  • +Configuration handling +
  • +
  • +CLI utilities (clap) +
  • +
  • +Logging setup +
  • +
+
+
+

Entry layer

+
    +
  • +Extensions for “Entry” +
      +
    • +“link” +
    • +
    • +“tag” +
    • +
    • +“category” +
    • +
    • +“edit” +
    • +
    • +“…” +
    • +
    +
  • +
+
+
+

Domain layer

+
    +
  • diary
  • +
  • bookmark
  • +
  • contact
  • +
  • todo
  • +
+
+
+

UI Layer

+
    +
  • CLI
  • +
  • (TUI)
  • +
  • (GUI)
  • +
  • (WUI)
  • +
+
+
+

External libraries

+
    +
  • +Policy: Use what’s useful +
  • +
  • +clap +
  • +
  • +toml +
  • +
+
+
+

Extracted libraries

+
    +
  • +toml-query +
      +
    • +human-readable X-Path for toml +
    • +
    +
  • +
  • +filters +
      +
    • +composable (failable) predicates +
    • +
    +
  • +
  • +kairos +
      +
    • +human-readable date/time processing +
    • +
    +
  • +
+
+
+

Concepts

+
    +
  • +StoreId +
  • +
  • +Entry +
  • +
  • +FileLockEntry +
  • +
  • +Store +
  • +
  • +Traits +
      +
    • +extending Store +
    • +
    • +extending Entry +
    • +
    +
  • +
  • +Iterators +
  • +
+
+
+

More Concepts

+
    +
  • +IsA +
  • +
  • +(Header)Partial +
  • +
+
+
+

Other things

+
    +
  • +Minimal coding styleguide +
  • +
  • +LGPL-2.1 (only) +
  • +
  • +Documentation: pandoc +
  • +
  • +Website: hugo +
  • +
  • +Contributions +
      +
    • +Signed-off-by +
    • +
    • +anything I can pull/apply +
    • +
    +
  • +
+
+
+

Thanks

+

Thank you for your attention!

+
+
+
+ + + + + + + diff --git a/static/rust-meetup-talk-20190726/talk.md b/static/rust-meetup-talk-20190726/talk.md new file mode 100644 index 0000000..6f760fb --- /dev/null +++ b/static/rust-meetup-talk-20190726/talk.md @@ -0,0 +1,383 @@ +--- +author: Matthias Beyer +title: imag +date: July 26, 2019 +--- + +# imag + +Personal information management suite + + +# Idea + +* Collect Metadata + * calendar, contacts, todos... +* Connect Metadata +* Query Metadata + + +# Future... + +* Automatic suggestions + +> Hey Dave... + + +# Existing tools + + + + + yes, but... + + + +# Existing tools + + + + +# Workflow + + + +# Workflow + + + +# Workflow + + + + +# Goals + +* plain text only +* scriptable +* composable + + +# Facts + + + + +# Facts + +Implemented domains: + +* bookmark +* contact +* diary (log) +* habit +* notes +* timetrack +* wiki +* todo / mail (rewrite pending) + + +# Architecture + +1. "Core" + 1. "The Store" + 1. "The Runtime" +1. "Entry layer" +1. "Domain layer" +1. "UI Layer" + + + + +# Core: The Store + + + + +# Core: Entry + +1. Header +1. Content + +```toml +[imag] +version = "0.10.0" + +[somemore] +headers = 123 +``` + + +# Core: The Runtime + + + + +# Entry layer + + + + +# Domain layer + +* diary +* bookmark +* contact +* todo + + +# UI Layer + +* CLI +* (TUI) +* (GUI) +* (WUI) + + +# External libraries + + + + +# Extracted libraries + + + +# Concepts + + + + +# More Concepts + + + + +# Other things + + + +# Thanks + + +Thank you for your attention! + + -- cgit v1.2.3