- em Feature Spec
- =view
- Article
- =view
- Table
- Author
- Raine Revere
- Date
- April 11, 2020
- Avatar
- =view
- Article
- =sort
- Alphabetical
- Dynamic Context
- Define children (and optionally grandchildren) via a function
- Option to replace children with dynamic children
- Access to full content
- 3rd party API's
- Names
- API's
- Service Integration
- 3rd Party Integration
- Data binding
- 3rd party syncing
- Vendor syncing
- Service binding
- Service syncing
- Description
- Bind a category to any JSON API
- Integrate with specific vendors
- Vendors
- WorkFlowy
- Trello
- Google Docs
- Todoist
- Evernote
- Names
- Built-ins
- Author
- Date/Time Created/Modified/Visited
- Use Cases
- Maintain global list and sublists e.g. cornucopia, heroes
- Dynamic Text
- ${numChildren}
- numDescendants
- depth
- depthDescendants
- ancestors
- ancestorTrail
- dateCreated
- dateModified
- now
- context
- contexts
- items
- Encryption
- End-to-end
- *Archive
- Card Stack View
- Each level is a card
- Overlap on left edge
- Blur lower cards
- Zooming in and out occurs through the z-axis
- Enter on empty item to unindent
- Changed to add dividing space:
- https://workflowy.com/#/f3ead8e5ea8d
- Favorites
- Just pin recently viewed
- Mini Map
- Dragboard
- Click and drop onto stack
- Item becomes ghosted until moved elsewhere
- Or just smart copy/paste?
- ✗ Obsoleted by split view
- Non-empty Dragboard must be rendered horizontally to allow text to expand
- Text
- “ 📎 Clip Board - DROP HERE”
- “Drop here temporarily”
- “Drop here until you find where to put the thought”
- Archive
- Empty Dragboard may be rendered as a small shape if full width is too distracting
- Since most drags will not use the dragboard
- Empty Dragboard may be rendered as a small shape if full width is too distracting
- Multi Selection
- Double tap to select
- Tap and swipe
- Then how would you scroll?
- Button to enable multi-select mode
- Button becomes exit multi-select mode
- Tap to toggle selection
- Exit multi-select mode when no items are selected?
- Tap and swipe across to select/deselect siblings and descendants
- No scrolling, all gestures
- There will always be lists with more items than will fit on the page
- Push and pop from stack
- Mobile controls
- Tap stack to push current focus (or slide out)
- Drag title to stack to push
- Drag from stack to center to pop (or alt+tab)
- Double tap stack to alt+tab
- Mobile controls
- Stream & Consolidate
- What is the value?
- Stream
- Extensive adding
- Long items
- Minimal editing
- Minimal rearranging
- Linear
- Consolidate
- Tap and speak
- Large touch screen
- Tap with one hand on context and tap other to create an item
- Card Stack View
- 2-way data sync
- You have to be able to handle multiple data stores since you can’t control a 3rd party data store
- Deal with timing issues, merge conflicts, etc
- Decentralized interoperability can only be done with standards
- The dream of the mashup web
- Ad hoc data source
- Plug in to any data source that can be converted into a list, graph, or tree
- Graph → Tree
- Navigate any graph as a tree
- Decouple linking
- How do all these fit together?
- =sort
- Alphabetical
- ActivityPub
- Blockchain
- Too expensive for content storage
- Operational Transforms
- GraphQL
- Gossip
- IPFS
- Federation
- OrbitDB
- Seasons
- RDF
- =sort
- Bind Context
- Establish identity
- Are these the same?
- Canonical Form
- If content matches a certain form, specific view option becomes available
- Commands
- Add child
- Add context
- Add as context item (i.e. in context view)
- Alternatives
- Move cursor to superscript
- Hide current context temporarily and edit inline
- Back/Forward
- Context Management
- https://workflowy.com/#/eec3eccb30e1
- Copy/Paste
- Multiple items
- From Google Docs
- From Word
- Delete Item
- Prompt if has other contexts
- Decontextualize/Disunify
- Move caret up/down
- Move item(s) up/down, parent/sibling
- Moving to a completely different location is provided by Context Navigation
- Pin item to top or bottom
- Italicize
- Use Cases
- Obsolesce
- Examples
- Archived
- Examples
- Metacategories
- A category that describes its parent rather than provides an instance of its parent
- Examples
- Names
- Overview
- Obsolesce
- Pin to Recently Viewed
- Semantic Operations
- https://workflowy.com/#/12d7cfa84be8
- Sharing
- Real-time collaborative editing
- operational transforms
- Grant viewing/editing access
- Publish in a format that is intuitive for nonusers
- Real-time collaborative editing
- Sorting
- Alphabetical
- Autodetect and properly sort dates
- Optional: Enable if > 3 items
- Setting to automatically switch to alphabetical after 3 items
- Date Created
- Date Edited
- Depth
- Manual
- Preserved when switching sorting types
- Weight
- Alphabetical
- Undo/Redo
- Views #highlight
- Bullets
- Styles
- Different bullet glyphs
- Numbers (auto increment)
- Letters (auto increment)
- Unbulleted/Inline
- Font color
- Font size
- Bold/italic
- Caps
- Margin
- Boolean
- Only false if no bullet
- Justification
- English is read left-to-right
- Items have to stack vertically
- Bubbles or other containers add bulk; use space
- Indentation efficiently communicates hierarchy
- Each item needs a bullet or card to differentiate multi-line items
- Due to word wrap, which is better than ellipses or text scaling
- Styles
- Headings
- Names
- Headings
- Caption Text
- Divider Text
- Subtext
- Qualities
- Gray
- Smaller
- Bulletless
- No margin
- ALL CAPS
- Treated as the same level as its children for expansion purposes
- Example
- Argument
- If...
- A
- B
- Then...
- C
- Names
- Hidden Level
- One level of categories are hidden and all items are shown in the context of their parent
- Graph View
- Might be clearer for demonstration purposes to render as graph
- Structured visual representation avoids confusion with traditional Word Processors and emphasizes uniqueness of operations
- Layout algorithm
- Category Inlining
- Description
- Sometimes you have two categories at the same level (logical type) but you want one category to be implicit and display all its children directly under the supercategory
- Example
- Before
- Active
- a
- b
- c
- Archived
- d
- Active
- After
- a
- b
- c
- Archived
- d
- Before
- Description
- Category Flattening
- Display all grandchildren at same level
- Sometimes we want the category for informational purposes but it's not relevant for viewing
- Suggest using Dynamic Context
- Two columns
- Applied to two levels
- Children
- Grandchildren
- Deeper descendants are hidden until zoomed
- If each child has a single child:
- Empty column headers
- Column 1: Children
- Column 2: Grandchildren
- If each child has multiple children:
- Column headers: Children
- Grandchildren
- Archive
- Formerly: Table
- Applied to two levels
- Bullets
- Indent/Deindent
- ✗ Replace with semantic operations to encourage correct logical typing at creation
- Conversation View
- Right (Me)
- Left (You+)
- Me and You+ are values of type ConversationParticipant
- M
- Question
- What’s the difference between a type and a dimension?
- Question
- M
- Subcategory or Detached?
- New Thoughts are pinned to Me
- See:
- Pin Context
- See:
- Detach
- Names
- Detach
- Flatten
- Lock Context
- i.e.:
- Floating Context
- Convert categories to floating contexts and back
- Detached thoughts are not in the current context chain
- Tags: Meta
- Simpler than tagging each thought with ./Tags/X, but same functionality
- M
- Questions
- Can this be modeled in a unified way?
- Questions
- M
- Equivalent structures
- Level tag and Content
- e.g.
- A
- MyTag
- “=content”
- A content
- A
- e.g.
- Add to context of tag
- Hidden tag
- Level tag and Content
- Simpler than tagging each thought with ./Tags/X, but same functionality
- Names
- Diachronic annotation
- Names
- Scribe
- Real-time diachronic annotations
- Horonote
- Anhoronotation
- Scribe
- Record note over time
- Self-replacing
- ✗ append
- Spatial co-occurence over time induces synthesis
- Emigration
- Names
- Dynamic Commands
- Expose API that lets you write functions
- Bind them to gestures or keyboard shortcuts
- Metaprogramming
- Description
- My biggest breakthrough with em recently is the discovery and initial formalization of metaprogramming in em. That is, programming from within em itself self-reflectively operating on the content of em. With metaprogramming, features of em can be implemented in em: Settings is just another context with thoughts like “Theme” it “Font Size” that can be edited directly. Recently Edited Thoughts is just another context. It’s similar to how Search already works, except I am adding templates, type validation, and command triggers so that users can create their own dynamic and interactive contexts. This moves closer to the vision of em’s contextual data model as a universal sensemaking structure.
- Dynamic Commands
- Names
- Handlers
- Hooks
- e.g.
- Next
- toggleTaskList
- keyboard
- Option + Shift + T
- gesture
- →←↓→
- else
- +Mode/Task List
- ../Mode/Task List
- if
- +Mode/Task List
- ../Mode/Task List
- then
- +Mode/Task List
- ../Mode/Task List
- keyboard
- ../Next/^
- -Complete
- Names
- Dynamic Contexts
- A context whose children are determined by a dynamic (hierarchical) query
- Children can not trivially be added to indices since they may change
- Global or context specific
- Examples
- /Tasks/Today
- ../Mode/Task List
- ../Completed
- OR
- Completed/.
- ../Mode/Task List
- -Mode
- /Tasks/Completed
- ../Mode/Task List
- Completed/.
- ../Mode/Task List
- /Tasks/Next
- Names
- Ready
- Next
- No Due Date
- ../Mode/Task List
- -./Due
- -./Repeat
- -Mode
- Names
- /Tasks/Today
- Errors
- Functions
- and
- Intersection of contexts
- command
- keyboard
- gesture
- if
- then
- concat
- Names
- or
- Names
- filter
- e.g.
- /A
- /B
- =text
- Name
- /A
- /B
- Dynamic Contexts
- A context whose children are determined by a dynamic (hierarchical) query
- Children can not trivially be added to indices since they may change
- Global or context specific
- e.g.
- hidden
- How to efficiently block all descendants from search and context views?
- label
- Names
- Text
- Value
- Override thought’s value
- Names
- expanded
- readonly
- schema
- Type
- Values
- view
- =schema
- Type: Options
- Values
- List
- Prose
- Table
- =schema
- Archive
- contextView
- Not persisted
- contextView
- and
- Inline Metadata
- Since the search and collate functions can easily
- Avoid need for mapping / selector language
- Named Arguments
- Render argument name instead of bullet for named arguments
- Or should argument names be their own subthoughts, just with a range?
- Or render named arguments as a table
- Range
- Regexp
- */5
- “*”
- [bmt]p{\d+}
- bp999
- “Bottom of page 999”
- bp999
- Selectors
- Names
- Predicate
- predicate
- Child
- ./X
- “x”
- Equals
- X
- “x”
- Parent
- X/.
- Archive
- “x”
- Sibling
- (parent has child X)
- ../X
- Archive
- “x”
- Uncle
- .../X
- “x”
- Grandparent
- X//.
- Archive
- “x”
- Grandchild
- .//X
- “x”
- Not child
- -./X
- “x”
- Archive
- ./X/✗
- ./!X
- “x”
- Names
- Predicate syntax
- Syntax
- Thought beginning with “=“ is interpreted as a function
- Thought beginning with “=“ are interpreted
- {...} to interpret within a thought (escape)
- Avoid special forms
- Avoid nested escaping
- ✗ BASH
- List possible values (range) as helper text
- e.g.
- Values: Dark, Light
- e.g.
- Render ✗ instead of bullet when there is an error
- Render argument name instead of bullet for named arguments
- Or should argument names be their own subthoughts, just with a range?
- Archive
- XPath? CSS?
- Can’t select relative to cursor
- XPath? CSS?
- Description
- Future
- Time lapse
- Scrubbing
- Observe how thoughts develop over time
- Analyze the organic development of thoughts
- Time lapse
- Hold that thought
- Fades / expires (?) over time
- Hybrid prose-mindmap view
- MOAD
- 28:45
- Break lines after connector words
- Mini mind map extends off to the right of connector word
- MOAD
- Lock context
- Once a stream of thoughts have been recorded, reorganize them without losing their original context
- Same as?
- Pin Context
- Names
- Lock context
- Once a stream of thoughts have been recorded, reorganize them without losing their original context
- Lock context
- New thought are added to the pinned context in addition to the cursor context
- Thoughts moved stay in the pinned context
- Use Cases
- Conference
- Conversation
- Book
- Podcast
- Names
- Prose View
- ✗ Not just leaves
- Process operations
- Description
- Instances
- Collapse subcategories
- After grouping a list of thoughts by subcategory, the user may find at a later date that the subcategory is not the primary way in which they want to view the thoughts
- Yet they do not want to lose the information of the subcategory
- Therefore they should be able to collapse the subcategory, resulting in a flat list of thoughts, each with the subcategory as a (potentially floating) context
- What is the storage representation?
- Is this a change in storage representation or view?
- Same as asking whether subcategory is floating or not
- Collapse subcategories
- Semantic Operations
- Names
- Cognitive Operations
- Relational Transformations
- Structural Operations
- Semantic Patterns
- Hierarchy Operations
- Complexity Expansions
- Description
- With existing outliners, you have to perform several non-semantic intermediary operations
- New item
- Move
- Indent
- Move
- We need a single operation that is semantically similar to the operation of our mind
- Implemented via Dynamic Commands #highlight
- https://workflowy.com/#/460d52303c2c
- With existing outliners, you have to perform several non-semantic intermediary operations
- Definition
- A (simulated) semantic operation is a digital simulacrum of a cognitive operation (mind), contrasted with an editing operation (machine).
- A structuring operation is a specific, necessary type of editing operation that converts prose to semantic structure
- See Split
- See Swap Parent
- Operations
- =view
- Table
- MECHANICAL
- Split Sentence
- Discussion
- Not a cognitive operation per say but a way of (de)structuring prose
- Types
- Split Sentences
- Split on period
- Split Conjunction
- Names
- Disjoin
- Example 1
- Before
- Do this or do that
- After
- Do this
- Do that
- Before
- Example 2
- Before
- Its end goal is either communication or action or modification of one's model of reality
- After
- End goals
- communication
- action
- modification of one's model of reality
- Before
- Names
- Split at cursor
- Split Sentences
- Discussion
- Split Sentence
- SIMPLE
- New item
- New category
- Creates both new category and placeholder for content
- Enter moves to editing content
- Not mechanically more efficient, but semantically more accurate
- New uncle
- Create a new category as a sibling of the current item's category
- Categorize one
- Names
- Abstract Up
- Lift
- Categorize
- Deepen
- Split Down
- Subcategorize
- Bifurcate
- Elevate
- Expand
- Grow
- Promote
- Complexify
- Evolve
- Split
- Description
- Indents the current item under a new category
- Example
- Before
- Navigation
- 🥕I should be able to easily bounce over to another node and back
- Methods
- Favorites
- Push/pop
- Recently Edited
- Navigation
- After
- Navigation
- Description🥕
- I should be able to easily bounce over to another node and back
- Methods
- Favorites
- Push/pop
- Recently Edited
- Description🥕
- Navigation
- Before
- Names
- Categorize selected
- Description
- You identify that two or three items should have their own category
- Description
- Categorize all
- Description
- Indent all items at the current level under a new category
- -1
- Merge with parent
- Description
- Move all nodes at current level into parent
- Keep parent name by default
- Opt-in popup to choose to keep child name instead
- Inverse of categorize all
- Example
- Before
- Interests
- Topics of Interest🥕
- Relationships
- Intimacy
- Addiction
- After
- Interests🥕
- Relationships
- Intimacy
- Addiction
- Before
- Description
- Merge with parent
- Description
- COMPLEX
- Bump Category → Child
- Names
- Bump category
- Replace parent
- Description
- Category becomes item of new category alongside former children
- Example
- Before
- a1
- a2
- a3🥕
- a1
- After
- 🥕
- a1
- a2
- a3
- 🥕
- Before
- Archive
- Swap with Parent
- Primary use case covered by Bump Category
- Discussion
- Not strictly cognitive but is used in practice
- Use case: Finding a simpler name for a category but wanting to keep the old name as an item
- Description
- Swap the text of the current item with its parent
- Swap with Parent
- Names
- Bump Category → Subcategory
- Description
- A random item sparks other thoughts which are added underneath
- Then you realize that the sparking thought shouldn't be the root category, but belongs to another subcategory such as Description or Instances.
- This operation prompts you to:
-
- Create a new containing category
-
- Bump the sparking thought into a subcategory
-
- Define a new subcategory for the children
-
- Similar to Bump Parent but creates additional intermediary categories
- Example
- Before
- I mean, I did it, but it took a toll🥕
- Impulse to go catatonic
- Who am I?
- Labor trauma?
- Embarrassed that I can't do something that others can do
- I mean, I did it, but it took a toll🥕
- After
- 🥕1
- 🥕2
- I mean, I did it, but it took a toll
- 🥕3
- Impulse to go catatonic
- Who am I?
- Labor trauma?
- Embarrassed that I can't do something that others can do
- 🥕2
- 🥕1
- Before
- Description
- Detach subcategory
- Names
- Sublimate Subcategory
- Copy children to grandparent
- Remove subcategory from parent
- without deleting children
- Names
- Differentiate from siblings
- Names
- Differentiate
- Recategorize
- Description
- Realize that an item is different enough to be in its own category
- Functional Equivalence
- categorize + unindent
- uncle + item
- -1
- Merge with sibling
- Names
- Subsume
- Neutralize
- Description
- Move all children into prev/next sibling then remove current item
- Opt-in popup to use name of merged item instead of merge target name
- Inverse of Differentiate
- Example
- Before
- Interests
- Psychology
- Systems Theory
- Topics of Interest🥕
- Relationships
- Intimacy
- Addiction
- After
- Interests🥕
- Psychology
- Systems Theory
- Relationships
- Intimacy
- Addiction
- Before
- Names
- Merge with sibling
- Example
- Before
- Description
- Node becomes child of a new containing parent
- Make room for nonsiblings (differentiated nodes)🥕
- Description
- After
- Description
- Node becomes child of a new containing parent
- Purpose🥕
- Make room for nonsiblings (differentiated nodes)
- Description
- Before
- Names
- Bump Category → Child
- =view
- Archive
- Deparenthesize
- Obviated by good habits
- Example
- Before
- Parenthetical additions should be children (Unless it already has children and you don't want to add another level of depth)
- After
- Parenthetical additions should be children
- Unless it already has children and you don't want to add another level of depth
- Parenthetical additions should be children
- Before
- Differentiate & Deepen
- Operation more likely to occur before new item is added (therefore allowing Categorize All to intuitively be performed first)
- Description
- Differentiating when current level needs a new category
- Functional Equivalence
- categorize all + differentiate
- categorize all + categorize + deindent
- Example
- Before
- Animals
- Otters
- Wallabies
- Weasels
- Animals
- After
- Before
- Deparenthesize
- Names
- Subcategory vs Tag
- Tag
- M
- Questions
- M
- What's the difference between adding a thought to:
-
- Subcategory "Cornucopia"
-
- Context "Cornucopia"
- Same:
- Thought belongs to "Cornucopia"
-
- Required or recommended?
- See:
- Detach Subcategory
- Tag
- Thoughtflows
- Names
- App
- Automation
- Declarative
- Document
- Extension
- Macros
- Plugin
- Programmable Thoughts
- Thoughtflow
- Dynamic Commands + Dynamic Contexts
- Names
- Tutorial
- Content
- Basics
- Start
- You are now in your own, personal thought space. Everything you write will be stored privately on this device, protected by your device password.
- To access your thoughts from more than one device, log in with your Google account using the Login link at the bottom of the page.
- Now, let’s begin exploring how to record your thoughts with em!
- Model your thinking
- New Thought
- ✗
- First, let me show you how to create a new thought in em using a swipe gesture.
- Trace the line below with your finger to create a new thought.
- Type Thought
- You did it! Now enter a thought. Anything will do.
- Continue button
- You haven’t entered anything yet. I want to make sure you can enter a thought before we move on.
- New Thought - Repeat
- Good work! Try creating a few more thoughts to get the hang of it.
- Bullet types
- Normal
- Cursor bullet
- Move Cursor
- New Subhought
- New Subthought - Repeat
- You can even try nesting a thought inside a nested thought! Sorry, I get excited about meta-thoughts 😍
- End Part I
- How are you feeling? Would you like to learn more or play on your own?
- Learn more
- Play on my own
- Okay! To resume the tutorial, click the Tutorial link at the bottom of the page.
- Fade in footer
- Okay! To resume the tutorial, click the Tutorial link at the bottom of the page.
- Start
- Contexts
- Intro
- If the same thought appears in more than one place, em shows a small number to the right of the thought.
- It looks like this: pancake^3
- Let’s see this in action.
- ✗
- This helps you see how your thoughts are connected
- Create
- First create a subthought “Todo” inside one of your pre-existing thoughts.
- It’s okay if it doesn’t make sense. We’re just setting up the correct structure for our example.
- Subthought
- Now add an item to “Todo”
- Do you remember the gesture? hint
- Subthought in Root
- Ah, I see what you did. You added “Todo” to the home screen.
- That makes sense, but for this tutorial, add “Todo” to one of your existing thoughts so that we have the correct structure to proceed.
- Duplicate Thought
- Now things are going to get interesting.
- Try creating another subthought “Todo” in a different thought.
- Same Context
- Oops! We need to add “Todo” to a different thought in order for this tutorial to make sense.
- One way to remedy this would be to drag “Todo” to “x”. You could also create a brand new “Todo” subthought.
- I’ll wait.
- Multiple Contexts
- Very good!
- Notice the number “2”. This means that “Todo” appears under two different thoughts: “a” and “b”.
- Add an item to this second Todo list.
- Context View Start
- Now imagine that you had hundreds and hundreds of thoughts, and you wanted to see what was in your other Todo list without having to search though everything or leave your current thought.
- [Tap on “Todo”] and swipe →↑
- Context View Open
- Well, look at that. Both Todo lists in one place. You can even view the first Todo item you created by tapping on “a”.
- There are no manual links in em. Simply type a thought, and it is automatically linked to every other identical thought.
- Conclusion
- Here are some real-world examples of linked thoughts:
- Multiple occurrences of a person’s name
- Keeping track of “Questions” across multiple categories.
- Creating a link on the home screen to a deeply nested subthought.
- The more thoughts you add to em, the more useful this feature will become.
- Here are some real-world examples of linked thoughts:
- Conclusion II
- Congratulations! You have completed the Linked Thoughts tutorial.
- You now have the skills to create a vast web of thoughts in em.
- To view a available gestures or to repeat a tutorial, click the Help link in the footer.
- Happy Sensemaking!
- Intro
- Context
- Basics
- Content
- Typed Relationality
- Arity
- Ternary
- Binary
- Context Types
- Immediate
- Broad
- Names
- Names
- Discussion
- Forcing the user to know the type/instance distinction makes it much more likely that it increases cognitive capacity
- Something must happen if it is necessarily novel
- Constraint breeds creativity
- Force plural types?
- Force no instances in instances?
- Maps to context-dependent/independent distinction
- If they are mutually applicable without constraint, what benefit do they provide?
- Maybe just identifying singletons (context independent) is useful enough
- A gradual spectrum of ontological force
- Lists (instances) vs Carvings (aspects)
- Open vs Closed
- Carvings may be open too
- Redundancy vs Exclusivity
- Open vs Closed
- Forcing the user to know the type/instance distinction makes it much more likely that it increases cognitive capacity
- False Cognates
- Hypotheses
- ?
- Instances must be uncountable, globally unique singletons
- Lists may be heterogeneous
- Example
- Art (instance)
- Books (type)
- Example
- Unique
- Food is an instance
- Free Composition
- Non uniques are types
- Uniques
- Names
- Unique instances
- Singleton
- Unique
- Context Independent
- When nonuniques appear in multiple contexts, they refer to different (disparate) things
- Context dependence (type-of) relationships may stretch across levels
- Uniques undermine the meaning of multiple contexts
- A unique in multiple contexts refers to the SAME reference
- A non unique...
- which is none other than a type
- ...in multiple contexts refers to DIFFERENT references
- Names
- Uniques undermine the meaning of multiple contextsa
- ✓
- ✗
- A leaf is an instance; a nonleaf is a type
- Counter examples:
- You can always comment (loose associate) on a leaf, turning it into a nonleaf, which doesn’t change it
- You can stop writing at any time, but it is more typical to stop on an instance
- ✗ Counterexample
- Counter examples:
- A type can always be represented as a plural
- Counter examples
- Qualities
- Exception: if the quality category is reframed as "things with that quality"
- "Example" instead of "Examples"
- When only a single example is presented
- Qualities
- ✗ Counterexample
- Counter examples
- A leaf is an instance; a nonleaf is a type
- ✓
- ?
- Templates
- (A) includes (B)
- (A) consists of (B)
- NOUN (A) is ADJ (B)
- Noun (A) is Predicate (B)
- Predicate
- predicate
- Instance (A) have NOUN (B)
- NOUN (B) of NOUN (A)
- (C) is an example (B) of (A)
- (C) is an instance (B) of (A)
- (C) is an aspect (B) of (A)
- (C) is one of many (B) (A)
- (C) a description (B) of (A)
- Specific Noun (C) is a General Noun (B) of Specific Noun (A)
- Instance (C) is a Type (B) of Instance (A)
- Type = Plural category for list of instances
- (D) is part of the description (C) of Binary (B) n-grams (A)
- UI
- English input with parallel hierarchy
- Arity
- Versioning
- Identity is a claim of a diachronic sequence of content
- Similarity per se does not imply adjacency
- View Sequence
- “Chain of views”
- Engelbart
- MOAD
- 22:00
- Sequence of views that forms a kind of presentation
- Granular View Addressability
- Parameterize view
- Embedded views
- “Chain of views”
- Views
- Flow Chart
- Render Top → Bottom
- Option for Left → Right
- Render each level below the previous, evenly spaced out
- Draw arrows from Context → Thought
- Hide bullets
- Option to control x,y position of each label
- Render Top → Bottom
- Flow Chart
- API
- Technical
- GraphQL
- REST
- /login
- GET
- Params
- key
- Output
- version
- token
- Params
- GET
- /logout
- POST
- /note/xxxxx
- GET
- Params
- max-depth
- Output
- id
- text
- parent
- alias
- Params
- POST
- text
- Add one child
- text[]
- Add multiple children
- json
- Adds nested content
- opml
- alias
- text
- PUT
- text
- alias
- DELETE
- GET
- /note/xxxxx/search
- GET
- query
- GET
- /note/xxxxx/empty
- PUT
- Remove all children
- PUT
- /note/xxxxx/share
- GET
- Description
- Get all share urls
- Params
- ancestors (optional)
- Include ancestor urls that would make this note shared
- ancestors (optional)
- Description
- POST
- Description
- Creates a unique url that anyone can open
- Params
- name (optional)
- To help keep track of multiple shares urls
- edit
- true/false if users can edit
- restrict
- ids of nested nodes
- name (optional)
- Output
- url
- Description
- PUT
- Params
- url
- name (optional)
- edit
- Change permissions
- restrict
- Replace the set of restricted notes
- Params
- DELETE
- Params
- url
- name (optional)
- Instead delete by name
- Params
- GET
- /note/xxxxx/history
- GET
- /note/xxxxx/rss
- GET
- /stack
- GET
- POST
- aka push
- DELETE
- aka pop
- /search
- GET
- query
- GET
- /history
- GET
- /favorites
- GET
- /recent
- GET
- /rss
- GET
- /login
- Webhooks
- Technical
- Animation
- General
- Always use easing
- Examples
- After Effects
- CSS
- Animations
- Focus
- Content items swing down one-by-one
- Content fades in
- Translate space opening
- Focus anchors
- Commands to navigate in/out or forward/back through focus anchors
- Unfocus (Collapse)
- Items swing up one-by-one
- Translate space closing
- Preview swing on start swipe right
- Move
- Item moves back out of old space (z)
- Translate space opening
- Item moves forward into new space (z)
- Navigation
- Navigating multiple levels deep
- Adding content in a deep level
- Text Animations
- Fade up each letter
- Fade left to right
- Typewriter
- Traversal
- Shift over and fade in/out when navigating
- Collapse and move to parent
- Focus
- General
- Federation
- Decentralized publication of rdf
- rdf subset for contextual knowledge graphs
- Interpretation protocol of any rdf as generic thought network
- Fractal Attention Protocol
- Fractal Overlap
- Like a melody sung in a "round"
- Continuous zoom requires fractal overlap at each level, i.e. always size 1
- Size of fracteme = # levels before repeat
- Focus size = # visible levels
- Unifocus
- Multifocus
- Rendering function must know how to transition any visual level to its visual superlevel
- How to overlap across different forms?
- Peer layout function
- General function to transition between isomorphisms
- Each signifier has an expansion function that defines:
- Point of departure for assocemes
- Spatial translation of peers
- Structure-agnostic network of ideas
- I realized that em is not just a content-agnostic structure, but a structure-agnostic network of ideas.
- You should be able to easily switch between forms/isomorphisms
- There is an invariant of relationality tying together content fractally. I think I need to develop a fractal navigation protocol based on focus and associativity.
- Fractal Overlap
- File Storage
- Google Docs integration
- Grant permission to read/write files
- Mirror context in folders
- Autofocus
- Names
- Autofocus
- Autoexpand
- Auto expansion
- Scope
- Zoom
- Overview
- Attention and working memory have a limited scope
- A cybersemic app should similarly limit the items within the visible scope
- Behavior
- Fade
- Progressively fade out ancestors and siblings as you focus deeper
- Fade siblings #todo
- Except when cursor is a leaf
- Except when cursor is a leaf
- Uncles should fade out without fading out parent
- Great uncles should fade out without fading out grandparent
- Progressively fade out ancestors and siblings as you focus deeper
- Fade siblings #todo
- Except when cursor is a leaf
- Except when cursor is a leaf
- Uncles should fade out without fading out parent
- Great uncles should fade out without fading out grandparent
- Focus Control (optional)
- ability to switch between narrow, medium, and wide focus
- ability to switch between narrow, medium, and wide focus
- Pin (optional)
- Manually override autofocus to pin state
- Option A: pin single item open
- Option B: pin all children open
- On any given editing session there is a "root" node which I don't need to see above
- But you can't infer what is the root when jumping around
- But you can't infer what is the root when jumping around
- Manually override autofocus to pin state
- Option A: pin single item open
- Option B: pin all children open
- On any given editing session there is a "root" node which I don't need to see above
- But you can't infer what is the root when jumping around
- But you can't infer what is the root when jumping around
- Fade
- Archive
- Autoscroll
- Better to scroll siblings into view, parents, vertically centered, or no scroll?
- Mobile users are used to manual scrolling
- False negative better than false positive
- Expand all descendants that fit on screen
- Sometimes results in extraneous depth
- Example
- A
- B
- C
- Long note about C that really shouldn’t be expanded all the time even if there is room.
- D
- Technical text pasted from website etc
- Example
- Sometimes results in extraneous depth
- Fade out levels that haven't been touched in a while
- False positive
- Keeping open for reference
- False negative
- Too slow
- False positive
- Expand grandchildren if that level is complete
- i.e. all items at that level have a child
- Mixed expand/collapse
- There are many use cases for both expanded and collapsed nodes at the same level
- I am often working at one level while jumping in and out of children
- Sometimes I want to see two siblings expanded
- Autoscroll
- Names
- Public Views
- Names
- Public
- Read-only
- Shared
- Public
- Read-only
- Shared
- Share a read-only view on a public url
- Choose what that is shown
- Top level
- Excluded specific descendants
- Top level
- Excluded specific descendants
- Updated in real-time
- Set public view independently from editing view
- Names
- Public
- Read-only
- Shared
- Public
- Read-only
- Shared
- Share a read-only view on a public url
- Choose what that is shown
- Top level
- Excluded specific descendants
- Top level
- Excluded specific descendants
- Updated in real-time
- Set public view independently from editing view
- Names
- Settings
- Icon: top right
- Night mode
- Customize command palette
- (See
- https://workflowy.com/#/5eed3ac34187
- )
- Customize Shortcuts & Gestures
- (See
- https://workflowy.com/#/d44b7f7c05e9
- )
- Customize Editing Palette
- (See
- https://workflowy.com/#/3b7b757d7ffc
- )
- Auto Backup Settings
- If device is lost or stolen
- If device is lost or stolen
- Multivocality
- https://workflowy.com/#/beae2d97650e
- Icon: top right
- Night mode
- Customize command palette
- Customize Shortcuts & Gestures
- Customize Editing Palette
- Auto Backup Settings
- If device is lost or stolen
- If device is lost or stolen
- Multivocality
- Social Stream / Timeline
- Names
- Social Stream
- Timeline
- Anything added to the Public context is published to your timeline
- Archive
- ✗ Use # or # + HashTag to add an item to your Social Stream
- Why go back to a textual artifact?
- ✗ Use # or # + HashTag to add an item to your Social Stream
- Names
- Substring Categories
- Names
- Anchor substrings
- Any substring may serve as a category
- Multiple substrings in the same item may serve as different categories
- Underline anchors
- Dim other anchors when one is open
- Names
- General Editing
- Trim end-of-line whitespace
- Smart quotes
- Preserve keyboard when switching focus #highlight
- Hit enter on an empty item to replace with dividing space
- Scrolling
- Vertical scroll
- No horizontal scroll
- Makes navigation more difficult
- Prevents swipe gestures
- Archive
- Headings + Bullets
- ✗ Bullets needed multiline items
- Notes
- Looks better than all bullets
- Moving between levels not amenable to animation #animation
- Levels
- h1
- h2
- bullet / prose
- Bullet default
- Prose if long
- etc
- Headings + Bullets
- Gestures & Shortcuts
- Also see: Commands
- Desktop #zoom
- Cmd Left
- If cursor is not at beginning of line, move to beginning of line (default behavior)
- Else move cursor to parent
- Cmd Up
- Move cursor to parent
- Cmd B, I, etc.
- Commands
- Bold
- Italic
- Underline
- Strikethrough
- Uppercase/Lowercase/Sentence/Original
- If no selection, format whole item
- Commands
- Cmd Left
- Mobile Gestures
- Horizontal Gestures
- Gesture anywhere
- Sequence must start with left or right to avoid scrolling conflict
- 26 commands possible with 3 strokes
- 2 x 3 x 3 (+ previous levels)
- 2, 8, 26
- —
- Bullet Gestures
- ✗
- Not contextual to current position
- Trigger commands by swiping bullets
- Defaults
- Left
- Delete
- Right
- Context Management
- Up
- Move Up
- Down
- Move Down
- Up-Down
- Swap content and connect
- Up-Right
- Move to prev sibling content (indent right)
- Do not include as it is so mechanical?
- Encourage correct initial relationship
- Move to prev sibling content (indent right)
- Up-Left
- Down-Up
- New Uncle
- Down-Right
- New content
- Down-Left
- Move to parent context (indent left)
- Down-Right-Down
- New category
- Right-Left
- Categorize all
- Right-Down
- Right-Up
- Left-Right
- Categorize one
- Left-Down
- Differentiate
- Left-Up
- Merge with parent
- Left-Up-Right
- Merge with previous sibling
- Left-Down-Right
- Merge with next sibling
- Left
- Command Palette
- Too slow
- Not always accessible on mobile
- Tap and hold on an item to bring up the command palette
- Start animation: Each icon grows and bounces into place
- Command palette consists of 8 icons at each of the cardinal and intercardinal directions
- A second ring of 8 additional icons can be added in the settings
- Drag in direction of icon and release to activate
- Holding over icon for 300 ms displays text title of command
- Hot Point
- Hot point is a circle in the lower center of screen above the keyboard
- Tap, hold, and drag to new location
- Nullary or current context
- No in-place preview
- Hot point is a circle in the lower center of screen above the keyboard
- Toolbar Button Command Palette
- 5-8 buttons in toolbar above keyboard
- Previews the action in realtime
- 3-4 distinct directions in 180 degree range
- Toolbar Button Gestures
- 5-8 buttons in toolbar above keyboard
- Tap and hold a button on the toolbar to perform a gesture
- 4 gestures possible per button
- Up
- Up right
- Up left
- Up down
- Less precision needed than command palette
- Defaults
- Move Cursor (2)
- Parent
- Previous sibling
- Next sibling
- Context (5)
- Add/Replace x One/All
- Uncle
- Replace and bump to child
- Child (2)
- Add
- Swap
- Intermediary Context (3)
- 1, selected, all
- Differentiate
- Merge (3)
- Next Sibling
- Previous Sibling
- Parent
- Move Cursor (2)
- Horizontal Gestures
- Quick Type #zoom #z2
- Names
- #zhide
- Mobile Shortcuts
- Description
- Easy to type on Mobile
- A lot quicker than other interactions if you're already typing
- Shortcuts
- Formatting
- bb: bold
-
- (one dash): short dividing line
- -- (two dashes): long dividing line
- Semantic Operations
- cc: categorize single
- ca: categorize all
- Archived #zhide
- two spaces: indent
- This is an mechanical operation and should be replace by a semantic operation
- uu: unindent
- two spaces: indent
- Formatting
- Touch
- Customize in Settings
- Defaults
- Double tap
- Zoom In
- Pinch
- Control zoom (# levels to show)
- Scale text with zoom level
- Appropriate minimum and maximum
- Swipe from left edge
- Open recently edited side drawer
- Swipe from right edge
- Swap workspace
- Alternatives
- Change context
- Zoom Out
- Animation tracks swiping motion
- Swipe left
- Forward
- Animation tracks swiping motion
- Forward
- Swipe right
- Back
- Animation tracks swiping motion
- Back
- ✗ Two finger swipe
- Double tap
- Groups
- Types
- Group by
- Ad hoc grouping of a given level in the hierarchy
- Groupings
- Author
- Time
- Move content to today group as you type
- Look to Safari history as reference
- This Evening
- This Afternoon
- This Morning
- Wednesday Evening
- Tuesday, September 29
- Groups instances of some larger class
- e.g.
- People
- Cornucopia
- e.g.
- Bunch
- Categorize without a name
- Categorize by togetherness against others
- Completely subsumes dividers
- Group by
- Archive
- Tree vs Tag Representation
- Tree Representation 1
- A
- 1
- a
- b
- 1
- B
- 2
- 3
- A
- Tag Representation 1
- a $1 $A
- b $1 $A
- 1 $1
- 2 $B
- 3 $B
- Tree Representation 2
- C
- 1
- a
- 2
- 1
- D
- 3
- C
- Tag Representation 2
- a $1 $C
- b $1 $A
- 1 $1
- 2 $C
- 3 $D
- Tree Representation 1
- Tree vs Tag Representation
- Types
- Import/Export
- Import
- WorkFlowy (opml)
- Autodetect ontological categories
- Evernote
- WorkFlowy (opml)
- Export
- opml
- Import
- Infix Items
- Description
- A parent may derive it's meaning from situating its children
- within
- a sentence, i.e. bookends
- Start fragment
- Ends with an ellipsis...
- End fragment
- ...starts with an ellipsis
- Rendered under the children
- Same indentation as parent
- No bullet
- Editing
- Hitting enter twice after an ellipsis splits it into an infix item
- And places the cursor in the end fragment after the ellipsis
- Hitting enter twice after an ellipsis splits it into an infix item
- Example
- By examining the...
- faculties
- activities
- ...of the mind
- By examining the...
- Description
- Intersectional Categories #keyconcept
- #consolidate
- Ontological linking (identity) is not sufficient
- Context Dependent
- Same signifier, different content because of context
- e.g. Todo
- Contract Independent
- Case 2: Same signifier, same content everywhere
- e.g. Cybersemics
- Note: Context Type is not (pre)determined by item identity but by usage
- e.g. in the context of Journaling, Cybersemics may be context dependent (i.e. a category of journal entries related to Cybersemics that day), but the default expected behavior when writing Cybersemics still its context free form
- Context Dependent
- Ontological linking (identity) is not sufficient
- Names
- Alias
- Mirroring
- Syntagmatic Categories
- Intersectional Categories
- Signifier Identity
- Ontological Linking
- Ontological Signifiers
- Contexts
- Multiple Categories
- Seamless Content
- Embedded Content
- Associative Content
- Embedded Linking
- Seamless Linking
- 1st Class Categories
- Internal Linking
- Inclusion Nodes
- Sync Nodes
- Sync
- Cross-link
- Cross reference
- Multiple parents
- Nested Link
- Circular Reference
- Transclusion
- Shortcut
- Actions
- Add present item to another context
- Edit inline as parent
- Seamlessly transition in parent context (e.g. siblings)
- Move to another context
- Include/adopt/import item from another context
- Hyperlink (internal)
- Names
- Hyperembedding
- Hyperlink
- Tokenization
- Symbolization
- Masked tags
- Description
- Mark any word phrase as a linkable tag
- Unlike tags, the text can be different than the link
- Really just a different implementation of hyperlinks that link in instead of link out
- Names
- Merge present item with other item
- Options for merging children
- Keep present, discard other
- Keep other, discard present
- Keep both
- Order depends on order of merging items
- If both manual, opt-in popup option for prefer
- Options for merging children
- Split/Disunify present item
- Opt-in popup disunify button on delete
- Disappear after a few seconds
- Add present item to another context
- Context Navigation #zoom #z2
- UI
- Superscript links to All Contexts view
- Alternatives
- Bullet ring
- Render small ring around bullet when item has multiple contexts
- Not amenable to interaction
- Breadcrumbs
- Doesn't work for floating zoom since top level changes dynamically
- Horizontal swipe
- Pan horizontally to swap out contexts inline
- Surrounding content fades out and new contextual content fades in
- Doesn't change scroll position
- Doesn't swap in new parent, just changes highlight, until released
- Render dots at right edge when item has multiple contexts
- One dot for each context
- Proximate to other contexts
- Tap and hold to show other contexts on same line
- Reversible delay for 1 second
- Do not allow for top level item
- Other contexts:
- bulleted
- Animated from right dots
- faded
- elipsized after one word
- bulleted
- Pan horizontally to swap out contexts inline
- Mini dots orbiting bullet
- Too noisy
- Not amenable to rotational panning
- Doesn't mirror horizontal panning
- Parent ellipsis
- Display ellipsis at the end of the parent of the currently selected item
- ✗ confusing that ellipsis and superscript are on different elements
- Swipe right edge of screen
- Better reserved for more frequent action
- Bullet ring
- Observations
- Separate menu is too cumbersome and is not compatible with switching in-place
- No menu lacks information
- Most indexically represented as a sideways/horizontal shift
- Navigate to specific context instead of rotating in the dark
- Hide other contexts by default; too distracting
- Might as well display all children when viewing all contexts; just displaying the titles isn't enough information
- See Gestures:
- https://workflowy.com/#/088b174a940b
- UI
- Description & Terminology
- Nodes can have multiple parent nodes
- Only one parent node is shown at a time (similar to the sole parent in a traditional bulleted list)
- Specialized controls are provided to navigate to new parents or modify parents
- Parent nodes are referred to as the "context" of child nodes.
- #Examples
- You are reading a book (which is under /Books/ or /School/Naropa/'08-09/) and discover a connection to a previous topic. You should be able to record the connection such that it does not belong exclusively to either topic. #writing
- You want to mark a topic for later research. "Marking" a topic can be modeled as adding it to a "To Research" context.
- /Home/Residences/Eaton St should appear at the top of /Home when it is my current residence for easy access
- /em/Animations should contain all Animation subcategories in /em/Commands
- Commitments or Active Projects top-level category contains deeply nested topic
- Todo list
- Journal should be subdivided into em and Philosophy
- You are modeling a security protocol at your job and you have a question about one step. You should be able to seamlessly add that step to Work + Questions
- Ontological Linking
- Alternatives
-
- Search
- Brings up search box
- Actions radio buttons above search box
- Autosuggest as you type
- (in order)
- Top Level Categories
- https://workflowy.com/#/9154ca655f1d
- Number of other contexts of children
- Exact match
- Fuzzy match
- Checkbox to search only non-leaf nodes (checked by default)
- Use search query language
- https://workflowy.com/#/a7a1e8826c2b
- Tap suggestion to complete
-
- Paste Identum
- Names
- Alias
- Entity
- Essentia
- Identum
- Ontum
- Onteme
- Ontomen
- Self
-
- Description
- Identical signifiers automatically become the same item (albeit in a different context)
- Deep Linking
- How to connect multiple levels of depth across concepts?
- Example
- Onboarding
- Survey
- Group by Q or Companies
- Q1
- Coinbase
- A1
- MakerDao
- A3
- Coinbase
- Q2
- Coinbase
- A2
- MakerDao
- A4
- Coinbase
- Q1
- Companies
- Coinbase
- Survey
- Q1
- A1
- Q2
- A2
- Q1
- Survey
- MakerDao
- Survey
- Q1
- A3
- Q2
- A4
- Q1
- Survey
- Coinbase
- Onboarding
- Discussion
- Simplifies context management as simply adding a child will link the item with the global representation of the child
- All words are types
- Context = Intersection of all ancestors
- New items inherit all contexts of current view
- Left commutative
- ((em → Features) → v1) → Zoom
- Linear vs Global Views
- Linear Context View
- em → Todo
- Global Context View
- Todo → em/Habit Tracker/em
- Linear Context View
- Proximity Levels
- Identical
- Partial
- We don’t “remove” from attention
- e.g. don’t think of an elephant
- Syntagmatic Relations
- Names
- Intercategory
- Intersectional Peer Relations
- Description
- Contexts in an intersection can have different relationships
- Focus/Supra/Context of
- Description
- Temporary privileging of one syntagm (component of context)
- Other contexts of the focused component become peers
- Other types of Todo items besides em
- Other em items besides Todo
- Not relevant if observing Todo items from other contexts
- Examples
- em → Todo → ...
- Todo in the context of em
- Todo → em → ...
- em in the context of Todo
- em → Todo → ...
- Description
- Equi/Mutual/Joint Context
- A + B → ...
- Hybrid
- C → A + B → ...
- Names
- UI
- Navigation Actions
- navigate
- gesture: double tap
- intersect ⋂ (with parent context)
- gesture: tap
- Archive
- double tap and drag up to intersect with active context
- Is the only valid operand one of the components of the active context?
- double tap and drag up to intersect with active context
- union ∪
- gesture: triple tap
- navigate
- Creating a child implicitly creates a subcategory in the other context equal to the parent category
- Or other signifier
- Examples
- Journal → 2018 → 7/25 → PhD
- Journal
- Thoughts → em → Fear → A B C
- Journal → Fear
- Journal → 2018 → 7/25 → PhD
- Examples
- Or other signifier
- Indicate when an identum has other contexts
- superscript number
- Choose any view as home/startup view
- Simultaneous tap for intersection
- Highlight components of Active Context
- tap to remove from active context
- Navigation Actions
- Archive
- Manually add intersections
- ✗ Too cumbersome
- tap ADD and type “TODO”
- suggest “TODO + Intersectional Categories + em”
- suggest “TODO + em”
- otherwise type "TODO + other”
- Differentiate CxD and CxI
- ✗ not necessary with navigation actions or hops
- If context dependence is a property of the identum itself, then wouldn’t that eschew the need for a differentiated gesture at navigation time?
- No, because navigation still could be to the CxD or CxI view of the identum
- CxD
- e.g. Doctorate
- of
- Cyberpensics
- line from parent
- open/closed bullet
- CxI
- e.g. Cyberpensics → em
- ✗ not necessary with navigation actions or hops
- Doubt tap + gesture
- Double tap and then gesture to allow four directions
- TODO likely not visible
- tap and drag ADD icon to TODO
- double tap + down on TODO
- double tap + down on NEW (+)
- ✗ only works if TODO doesn’t exist yet
- Deferred merge choice
- Choice to include is made later at associate point/in other context
- e.g. Does this belong here?
- No, because then the link from the editing context is not established
- Root context determiner
- if other is a root context...
- Then
- add subcategory
- Exception
- Process Modeling → States →
- Stress Points
- Optimistic merge
- ✗ Confusing to have children from other context inserted
- False positive
- When duplicate signifier appears, show global content faded out
- Stays faded for 30 seconds
- Then it locks in the association, although it can be disconnected
- ✗ Confusing to have children from other context inserted
- Union
- If other context has more than one leaf child, union content, otherwise create subcategory
- Or leave as viewing option?
- e.g. Cornucopia - flat or grouped
- Manually add intersections
- Alternatives
- Theory #theory
- Ideas/concepts can exist within more than one context
- Tags are awkward
- Separate entity
- Artifact
- Suprastructural
- Multiple parents = many-to-many = graph
- Allows a hierarchy of contexts to co-exist
- Types
- Cross-cutting category (0)
- Female Role Models
- Process (1+)
- Commenting on or referring to an idea at higher logical level
- Subtype: Personal category
- People to learn more about
- Exciting ideas
- Cross-cutting category (0)
- #consolidate
- Multivocality
- Names
- Agnosticism
- Multivocality
- Nonfinalism
- Noncommitalism
- Names of categories may vibrate/equivocate between several possible representations rather than be represented with a final, univocal name
- Represent multiple names with "/"
- e.g. Nonfinalism/Agnosticism/Noncommitalism
- e.g. zoom/scope
- Activate - first by default
- Inactive - subsequent
- Display possibilities
- (...)
- ... subscript
- Faded
- Tap an active name to cancel
- Tap an inactive name to make it active
- moves it to the beginning
- updated fading
- Type two slashes to include all previous spaces since the starting "/"
- Can be turned off in settings
- Names
- Moving Items
- Double tap to "lift" an item
- Floats on screen independent of navigation
- Leaves imprint of starting location
- Draggable
- Can float multiple items
- Alternatives
- Movement Handle
- Show handle next to item while editing to allow tap-and-drag movement
- Show handle for multiple selected items
- Workflowy-style
- Tap and drag to adjust indentation and order in real-time
- Movement Handle
- Double tap to "lift" an item
- Offline Mode
- Automatically merge conflicting data after reconnecting with best guess
- Performance
- Initial app load time < 1s
- Support up to 1,000,000 items without sensible performance impact #highlight
- Pin Context for New Items
- Description
- When enabled, all new items are also added to the specified category
- Use Case
- On retreat
- Book
- Description
- Recently Viewed
- Algorithm
- Caret touching item for more than 2 seconds counts as recently viewed
- Use parent of all leaf nodes
- Use nearest Top Level Category ancestor
- See Category Typing
- https://workflowy.com/#/c86d982829e0
- If user bounces back and forth between parent and children, record the parent
- If user spends the majority of time on a single child, record the child
- Observations
- Example Paths
- Home > Projects of Inspiration > Journaling App > Design > Navigation
- Live Processing > Maitri II > Main Actions
- Home > Live Processing > Maitri II > Wed 2/25 > World of Self > Exit Strategies > Connect with others
- Example Sizes
- [1]
- [1]- 2
- 4- 10- [10]
- 31- 36- [8]
- [1]- [2]- 1- x
- 31-[18]- [11]- 2
- 4- 10- [7]- 5- 3- 2
- 12- 8- x-[7]- 3- 3
- 16- 12- [8]-30-[2]- 1- 1-2
- 16- 3- 6-[5]- 7-[6]-[12]-1
- Half of depth, rounded up (towards leaves)
- 1/2
- 2/3
- 2/4 or 2/5
- 3/5
- Each entry is at least 2 nodes away from other entries
- Parent with most children near center
- Rarely less than half
- One cannot distinguish main categories from subcategories based on height
- Single chain → lower main category
- A main category is never an only child
- Example Paths
- Grouping
- Current group header sticks to top
- Group by Time Viewed
- Look to Safari history as reference
- This Evening
- This Afternoon
- This Morning
- Wednesday Evening
- Tuesday, September 29
- Archive
- Logarithmic sorting within 48 hrs
- 1 min
- 2 min
- 4 min
- 8 min
- 16 min
- 32 min
- 64 min
- 2 hrs, 8 min
- 4 hrs, 16 min
- 8 hrs, 32 min
- 17 hrs, 4 min
- More
- 1 day, 10 hrs
- 2 days, 20 hrs
- 4 days, 6 hrs
- 1 week, 1 day
- 2 weeks, 2 days
- 1 month
- 2 months
- 4 months
- 8 months
- 1 yr, 4 months
- Linear x10
- 1 min
- 10 min
- 100 min
- 1,000 min - 16.7 hrs
- 10,000 min - 6.9 days
- 100,000 min = 9.9 weeks
- 1,000,000 min = 22.8 months
- Logarithmic sorting within 48 hrs
- Display
- e.g.
- Design
- (Home > Projects of Inspiration > Journaling App)
- Kiva Finance
- (Home > Projects of Inspiration)
- Questions
- (Home > Skills > Guitar)
- Archived
- Home > Projects of Inspiration > Journaling App > Design
- Home > Projects of Inspiration > Kiva Finance
- Home > Skills > Guitar > Questions
- e.g.
- Normal command palette on long hold
- Pin to top
- Archived
- Clustering
- Head
- The entry that represents the cluster in the list
- Don't count root or leaves
- Option 1: Oldest ancestor in cluster
- Not including root
- Option 2: Last visited
- Option 3: Register parent of density level
- Level with most sibling edits
- Merging Clusters
- Refresh timestamp if visited from the recently viewed list
- Temp items
- Navigating to a note registers it temporarily
- If a close relative is navigated, replace the temp
- This should be replaced by the oldest ancestor rule
- After 30 seconds, temp nodes become permanent
- What if intervening notes are edited?
- Editing permanently registers the note
- Unless it is part of a cluster of edits
- This may be unnecessary if clustering can work identically for edits and visits
- User tagged major categories as such?
- Clustering
- Algorithm
- Revision History
- TBD
- Search
- Icon: top right
- Regex
- Autopopulate selected word
- Search partial or exact
- Easily switch between searching whole document and searching subdocument
- Search & Replace
- Show results like WorkFlowy, except:
- Multiple intermediary levels are collapsed into breadcrumb format, e.g. Recently Viewed > Archived > Algorithm > Other...
- Exclude categories
- Archive(d/s)
- Query language
- Segmentation
- "exact match"
- Conditions
- parent:
- child:
- above:
- below:
- Relations
- AND
- OR
- NOT
- Segmentation
- Checkbox to search only categories/end thoughts
- Future Ideas
- AR
- Write text into physical environment
- Content stays in place
- Unlock to relocate
- As soon as you have items in a physical space, you want manipulate them physically
- Ideascape
- How to reconcile physical categorization with abstract categorization?
- Physicality is independent
- Draw a line between physical objects to create non-physical relationship?
- Awareness Facilitation
- Facilitate stream & consolidate
- Highlight areas of potential refactoring
- Redundant/disconnected concepts
- >7 children (too large for working memory)
- Change Tracking
- Mark creation date of each entry
- Keep track of last modified date per character range
- Vertical timeline of edits (like Heroku uptime)
- Time series of edits
- List of most edited within given time span
- Multilevel diff
- Playback
- Changelog
- Change notifications
- Consolidation
- Names
- Bound and unbound ideas
- Consolidation
- Integration
- The first spark might just be an association
- It takes active thinking to determine the particular nature to the relatum
- What about visually (and functionally) rendering child idea unbounded before they are categorized
- Display integration statistics
- integration %
- average age of unintegrated
- rate of integration
- Names
- Eye tracking navigation
- Grammar Simplification
- Examples
- It would give me a chance to do some fun coding
- Fun Coding
- I cannot allow myself to become isolated
- Isolated
- It would give me a chance to do some fun coding
- Examples
- Layers of Cohesion
- Preserve stream layer
- Metrics
- Names
- Analytics
- Is there structure that exists independent of the content?
- Are leaf nodes longer than internal nodes?
- Is there a consistent ratio of height:depth or breadth:depth?
- What are the average number of children?
- How much compression occurs in consolidation?
- Can categories be determined from the structure?
- See Observations;
- https://workflowy.com/#/980e83d3d246
- Depth
- Breadth
- Volume
- Density
- average node length
- Novelty
- relatable to past nodes
- Speed
- Lifespan
- Pulse
- Activity over time, like github
- Names
- (Micro)Diachronic Semantics
- Trace the development/evolution/unfolding/ontogeny of concepts
- Concepts are subsumed/cannibalized, leaving a trace
- Boundaries/scopes can be established between sessions/temporal clusters
- Explicit or implicit
- Unsubsumed concepts/subconcepts are preserved, although become either incorporated or fossilized in relation to living concepts
- Lineage/Archeology of Concept
- Public Web
- New web of implicit links
- Spam/Sybil attack
- More general selection/search/IR problem
- Track category name changes
- Zip and unzip parallel lists
- e.g. FCD & Live Processing
- AR
- =view