https://github.com/codedthinking/bead-demo-rsecon
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.5%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: codedthinking
- Language: Shell
- Default Branch: main
- Size: 5.1 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
- Releases: 0
Metadata Files
README.md
author: - Krisztián Fekete - Miklós Koren authors: - Krisztián Fekete - Miklós Koren date: 2025-09-10 subtitle: a provenance tool title: bead
toc-title: Table of contents
The Editor Gives You One Week
You need to:
- Address reviewer concerns about source data
- Redo analysis with new data
- Recreate Figure 1
- Submit within one week
But the Submission Was Months Ago
- Research submitted months ago
- Team has been improving data cleaning since then
- Some team members left
- Different statistical methods now
- First question: How exactly was Figure 1 produced?
Research Results are Functions
$$\text{Figure 1} = \text{code}(\text{data})$$
- Results depend on both algorithms and data
- Code under version control (Git) ✓
- Tagged commit at submission ✓
- But what about the data?
Data is Also a Function
$$\text{data}1 = \text{code}2(\text{data}_2)$$
- Data transformed by wrangling/cleaning steps
- countries dropped
- transformations applied
- feature engineering details
- Chain of data provenance
A Real-World Data Pipeline

The Data Provenance Problem
Why It Is Complex:
- Frequent changes: Code and data both evolve
- Complex pipelines: Many steps, multiple datasets
- Tool heterogeneity: Python, R, SQL, DuckDB all in one project
- Team dynamics: People join, leave, change roles
Existing Solutions
Version Control (Git)
- Great for code
- Not suitable for large binary data
Data Version Control (DVC)
- Similar spirit to bead, but delivery/versioning focused\
- More complex than needed for provenance tracking
Orchestration Tools
- Apache Airflow (Python) - airflow.apache.org
- dbt (SQL) - getdbt.com
- KNIME (no-code) - knime.com
- Too complex for heterogeneous teams
Enter bead
A command-line tool that captures your data's story, step by step.
- Much simpler than alternatives
- Language agnostic
- Supports heterogeneous teams
What bead Does NOT Do
Not a code runner
- You run your own code
- Python, R, Stata, SQL - doesn't matter
Not a file delivery system
- File system stores your files
- You copy/move files yourself
Only requirement:
- Works with flat files on file system
- Files not too big (20GB works fine)
Core bead Concepts
The bead
- Self-contained unit of computation
- Contains code, reference to input data, results
- Packaged as ZIP file
- Remembers exact provenance
Simple Commands
bash
bead new my-analysis
bead input add source-data
bead save
Demo Time
⚡ Inspiration
- Data Journalism
- Human concept of story
- Characters, setting, events, theme or message
- Variable scope
- Stories are composable
- Helps us to make sense of the world
📐 Design
- ISBN / ISSN
- Identification of books and series with code
- Task scope
- Local first
- Integrity
🎬 Demo
Conference session classification by title
Inputs:
- list of sessions
- session theme classification rules
Output:
- list of sessions extended with theme
⚙️ Workspace and Box
{#section .top}
```{=html}
{#section-1 .top}
```{=html}
{#section-2 .top}
```{=html}
{#section-3 .top}
```{=html}
{#section-4 .top}
```{=html}
/demo/workspace
{#section-5 .top}
```{=html}
/demo/workspace
{#section-6 .top}
```{=html}
/demo/workspace
{#section-7 .top}
```{=html}
/demo/workspace
{#section-8 .top}
```{=html}
/demo/workspace
{#section-9 .top}
```{=html}
/demo/workspace
{#section-10 .top}
```{=html}
/demo/workspace
{#section-11 .top}
```{=html}
/demo/workspace
{#section-12 .top}
```{=html}
/demo/workspace
/demo/bead-box
{#section-13 .top}
```{=html}
/demo/workspace
/demo/bead-box
{#section-14 .top}
```{=html}
/demo/workspace
/demo/bead-box
{#section-15 .top}
```{=html}
/demo/workspace
/demo/bead-box
{#section-16 .top}
```{=html}
Boxes:
demo: /demo/bead-box /demo/workspace $
/demo/workspace
/demo/bead-box
📁 Output: Plain data
{#section-17 .top}
```{=html}
/demo/workspace
/demo/bead-box
{#section-18 .top}
```{=html}
/demo/workspace
/demo/bead-box
{#section-19 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
└── temp
/demo/bead-box
Workspace {#workspace .top}
- name (sessions)
- input
- output
- temp
{#section-20 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
└── temp
/demo/bead-box
{#section-21 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
└── temp
/demo/bead-box
{#section-22 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
└── temp
/demo/bead-box
{#section-23 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
└── temp
/demo/bead-box
{#section-24 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
│ └── sessions.csv
└── temp
/demo/bead-box
{#section-25 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
│ └── sessions.csv
└── temp
/demo/bead-box
{#section-26 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
│ └── sessions.csv
└── temp
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-27 .top}
```{=html}
/demo/workspace
└── sessions
├── input
├── output
│ └── sessions.csv
└── temp
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-28 .top}
```{=html}
/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-29 .top}
```{=html}
/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-30 .top}
```{=html}
/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-31 .top}
```{=html}
/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-32 .top}
```{=html}
/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-33 .top}
```{=html}
/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-34 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ /demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-35 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions_.zip data/ | csvlook -/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-36 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions_.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ /demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-37 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions_.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases/demo/workspace
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-38 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions_.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $
/demo/workspace
└── theme-aliases
├── input
├── output
└── temp
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-39 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions_.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace
└── theme-aliases
├── input
├── output
└── temp
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-40 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions_.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $
/demo/workspace
└── theme-aliases
├── input
├── output
└── temp
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-41 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonical_theme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace
└── theme-aliases
├── input
├── output
└── temp
/demo/bead-box └── sessions_20250910T150300641490+0000.zip
{#section-42 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonical_theme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box └── sessions20250910T150300641490+0000.zip
{#section-43 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonical_theme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $ bead save
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box └── sessions20250910T150300641490+0000.zip
{#section-44 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonicaltheme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $ bead save
Successfully stored bead at /demo/bead-box/theme-aliases20250910T150520735490+0000.zip.
/demo/workspace/theme-aliases $
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-45 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonicaltheme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $ bead save
Successfully stored bead at /demo/bead-box/theme-aliases20250910T150520735490+0000.zip.
/demo/workspace/theme-aliases $ bead discard
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-46 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonicaltheme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $ bead save
Successfully stored bead at /demo/bead-box/theme-aliases20250910T150520735490+0000.zip.
/demo/workspace/theme-aliases $ bead discard
Deleted workspace /demo/workspace/theme-aliases
/demo/workspace/theme-aliases $ /demo/workspace
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-47 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonicaltheme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $ bead save
Successfully stored bead at /demo/bead-box/theme-aliases20250910T150520735490+0000.zip.
/demo/workspace/theme-aliases $ bead discard
Deleted workspace /demo/workspace/theme-aliases
/demo/workspace/theme-aliases $ cd ../demo/workspace
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-48 .top}
```{=html}
Length Method Size Cmpr Date Time CRC-32 Name
332 Defl:N 236 29% 2025-08-31 22:29 4aa44c11 data/sessions.csv
245 Defl:N 171 30% 2025-09-10 15:03 80ce012f meta/bead
308 Defl:N 207 33% 2025-09-10 15:03 f4ddb35a meta/manifest
885 614 31% 3 files
/demo/workspace $ unzip -p /demo/bead-box/sessions.zip data/ | csvlook -
| title | speaker |
| ----------------------------------- | ------- |
| Advances in Artificial Intelligence | Alice |
| Blockchain Basics | Bob |
| Sustainability in Business | Charlie |
| Future of Quantum Computing | Diane |
| Data Privacy and Security | Eric |
| Machine Learning 101 | Fiona |
| AI Ethics and Impact | Grace |
| Green Tech Innovations | Henry |
| Distributed Ledger Technologies | Ian |
| Effective Team Communication | Julia |
/demo/workspace $ bead new theme-aliases
Created workspace "theme-aliases"
/demo/workspace $ cd theme-aliases
/demo/workspace/theme-aliases $ cat > output/themealiases.csv <<EOF
alias,canonicaltheme
artificial intelligence,artificial intelligence
machine learning,artificial intelligence
ai,artificial intelligence
blockchain,blockchain
distributed ledger,blockchain
sustainability,sustainability
green tech,sustainability
quantum computing,quantum computing
data privacy,data privacy
privacy,data privacy
EOF
/demo/workspace/theme-aliases $ bead save
Successfully stored bead at /demo/bead-box/theme-aliases20250910T150520735490+0000.zip.
/demo/workspace/theme-aliases $ bead discard
Deleted workspace /demo/workspace/theme-aliases
/demo/workspace/theme-aliases $ cd ..
/demo/workspace $ /demo/workspace
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
🛠 Calculation 1: CSV to DuckDB
{#section-49 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-50 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-51 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-52 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-53 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-54 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-55 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
│ └── sessions
│ └── sessions.csv
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-56 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
│ └── sessions
│ └── sessions.csv
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-57 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-58 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-59 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-60 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-61 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-62 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-63 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db_20250910T150740610157+0000.zip. /demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-64 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db_20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-65 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db_20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-66 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db_20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd ../demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-67 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db_20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd .. /demo/workspace $/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-68 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd .. /demo/workspace $ unzip -v /demo/bead-box/sessions-db*.zip | tail -9/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-69 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd .. /demo/workspace $ unzip -v /demo/bead-box/sessions-db*.zip | tail -9 Length Method Size Cmpr Date Time CRC-32 Name798720 Defl:N 2001 100% 2025-08-31 22:29 36fb105d data/sessions.db 249 Defl:N 132 47% 2025-08-31 22:29 1c671ac8 code/run.sh 937 Defl:N 478 49% 2025-09-10 15:07 bec88543 meta/bead 458 Defl:N 291 37% 2025-09-10 15:07 68cde410 meta/manifest
800364 2902 100% 4 files
/demo/workspace $/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-70 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd .. /demo/workspace $ unzip -v /demo/bead-box/sessions-db*.zip | tail -9 Length Method Size Cmpr Date Time CRC-32 Name798720 Defl:N 2001 100% 2025-08-31 22:29 36fb105d data/sessions.db 249 Defl:N 132 47% 2025-08-31 22:29 1c671ac8 code/run.sh 937 Defl:N 478 49% 2025-09-10 15:07 bec88543 meta/bead 458 Defl:N 291 37% 2025-09-10 15:07 68cde410 meta/manifest
800364 2902 100% 4 files
/demo/workspace $ unzip -p /demo/bead-box/sessions-db_*.zip code/run.sh/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-71 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); " EOF
/demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T150740610157+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd .. /demo/workspace $ unzip -v /demo/bead-box/sessions-db*.zip | tail -9 Length Method Size Cmpr Date Time CRC-32 Name798720 Defl:N 2001 100% 2025-08-31 22:29 36fb105d data/sessions.db 249 Defl:N 132 47% 2025-08-31 22:29 1c671ac8 code/run.sh 937 Defl:N 478 49% 2025-09-10 15:07 bec88543 meta/bead 458 Defl:N 291 37% 2025-09-10 15:07 68cde410 meta/manifest
800364 2902 100% 4 files
/demo/workspace $ unzip -p /demo/bead-box/sessions-db*.zip code/run.sh duckdb output/sessions.db " -- Load sessions CREATE TABLE sessions AS SELECT * FROM readcsv_auto('input/sessions/sessions.csv');-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace $/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
🔗 Calculation 2: Match Themes
{#section-72 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-73 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-74 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
├── output
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-75 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
├── output
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-76 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
├── output
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-77 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
├── output
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-78 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-79 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-80 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-81 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-82 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
│ └── sessionswiththemes.csv
├── run.sh
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-83 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
│ └── sessionswiththemes.csv
├── run.sh
└── temp
/demo/bead-box ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-84 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
│ └── sessionswiththemes.csv
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-85 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
│ └── sessionswiththemes.csv
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-86 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
│ └── sessionswiththemes.csv
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-87 .top}
```{=html}
/demo/workspace
└── sessions-by-themes
├── input
│ └── sessions-db
│ └── sessions.db
├── output
│ └── sessionswiththemes.csv
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-88 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-89 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-90 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
✨ Versions: Inputs and Improvements
{#section-91 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-92 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-93 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-94 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-95 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-96 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-97 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-98 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases20250910T150520735490+0000.zip
{#section-99 .top}
```{=html}
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-100 .top}
```{=html}
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-101 .top}
```{=html}
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-102 .top}
```{=html}
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip └── theme-aliases_20250910T150520735490+0000.zip
{#section-103 .top}
```{=html}
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-104 .top}
```{=html}
/demo/workspace
└── theme-aliases
├── input
├── output
│ └── themealiases.csv
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-105 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-106 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-107 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-108 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-109 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-110 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-111 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-112 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-113 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-114 .top}
```{=html}
/demo/workspace
└── sessions-db
├── input
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-115 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-116 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load
/demo/workspace
└── sessions-db
├── input
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-117 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-118 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-119 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases_20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-120 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases_20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-121 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases_20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-122 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases_20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-123 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T151520899203+0000.zip. /demo/workspace/sessions-db $
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-124 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T151520899203+0000.zip. /demo/workspace/sessions-db $ bead discard
/demo/workspace
└── sessions-db
├── input
│ ├── sessions
│ │ └── sessions.csv
│ └── theme-aliases
│ └── themealiases.csv
├── output
│ └── sessions.db
├── run.sh
└── temp
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases_20250910T151240993101+0000.zip
{#section-125 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T151520899203+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-126 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T151520899203+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd ../demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-127 .top}
```{=html}
-- Load aliases CREATE TABLE themealiases AS SELECT * FROM readcsvauto('input/theme-aliases/themealiases.csv'); "
/demo/workspace/sessions-db $ bead input load Verifying archive /demo/bead-box/sessions20250910T150300641490+0000.zip ... OK Loading new data to sessions ... Done Verifying archive /demo/bead-box/theme-aliases20250910T150520735490+0000.zip ... OK Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bead input update theme-aliases Verifying archive /demo/bead-box/theme-aliases20250910T151240993101+0000.zip ... OK Removing current data from theme-aliases Loading new data to theme-aliases ... Done /demo/workspace/sessions-db $ bash run.sh /demo/workspace/sessions-db $ bead save Successfully stored bead at /demo/bead-box/sessions-db20250910T151520899203+0000.zip. /demo/workspace/sessions-db $ bead discard Deleted workspace /demo/workspace/sessions-db /demo/workspace/sessions-db $ cd .. /demo/workspace $/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
🖼️ Visual Overview
{#section-128 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-129 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip ├── sessions20250910T150300641490+0000.zip ├── theme-aliases20250910T150520735490+0000.zip └── theme-aliases20250910T151240993101+0000.zip
{#section-130 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-131 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-132 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-133 .top}
```{=html}
/demo/workspace
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-134 .top}
```{=html}
Loaded bead 2 (demo / sessions-db @ 20250910T150740610157+0000)
Loaded bead 3 (demo / sessions-by-themes @ 20250910T151020352321+0000)
Loaded bead 4 (demo / sessions-db @ 20250910T151520899203+0000)
Loaded 4 beads Creating PNG: session-themes.png
/demo/workspace $/demo/workspace └── session-themes.png
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip

⚙️ Internal Details
{#section-136 .top}
```{=html}
/demo/workspace └── session-themes.png
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-137 .top}
```{=html}
/demo/workspace └── session-themes.png
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-138 .top}
```{=html}
/demo/workspace └── session-themes.png
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-139 .top}
```{=html}
/demo/workspace └── session-themes.png
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
{#section-140 .top}
```{=html}
/demo/workspace └── session-themes.png
/demo/bead-box ├── sessions-by-themes20250910T151020352321+0000.zip ├── sessions-db20250910T150740610157+0000.zip ├── sessions-db20250910T151520899203+0000.zip └── sessions20250910T150300641490+0000.zip
🧩 Similar ideas
- kaggle notebook
- https://www.kaggle.com/code#:~:text=New,-Notebook
- nix flake
- https://nixos.wiki/wiki/Flakes#Flake_schema
- orderly2 (RSECON24 talk)
- https://youtu.be/lkPgihFQbrk
🐙 Source
```{=html}
qrgithub {
position: absolute; top: 0; right: 50%; } ``` https://github.com/e3krisztian/bead {{< qrcode https://github.com/e3krisztian/bead qrgithub 300 300 >}}
Case Study From Our Research Lab
Case Study From Our Research Lab
- Used since 2017 in our research groups: CEU MicroData,
MACROMANAGERS.eu
- internally
- when sharing data with others
- Saved about 600+ beads, two versions on average
- Interquartile range of bead sizes: 10 to 500 MB, largest is 23 GB
- Median time between saving new versions: 51 days
Practices We Adopted
- Everything is a bead: raw data, intermediate data, analysis sample, research results
- Never load data directly, from outside a bead
- Side product: always use relative paths
- We don't often recompute everything, but good to know we could
Lessons For Research Software Engineers
- Minimal learning curve for researchers
- No infrastructure requirements
- Works with existing workflows
- Complements version control
- Enables true reproducibility
Key Takeaways
- Data provenance is hard - especially with changing teams
- Existing tools too complex - for heterogeneous research teams\
- bead keeps it simple - focuses on one thing well
- Reproducibility becomes automatic - not an afterthought
Contact and Acknowledgements
- Web: bead.zip
- Installation: https://bead.zip/install
- GitHub: github.com/e3krisztian/bead
{width="20%"}
This project has received funding from the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation programme (grant agreement No 313164). The views expressed are those of the authors and do not necessarily reflect those of the ERC or the European Commission.
References
- World Development Indicators: data.worldbank.org/indicator
- DVC (Data Version Control): dvc.org
- Apache Airflow: airflow.apache.org
- dbt: getdbt.com
- KNIME: knime.com
Owner
- Name: codedthinking
- Login: codedthinking
- Kind: organization
- Website: http://learn.codedthinking.com
- Twitter: codedthinking
- Repositories: 1
- Profile: https://github.com/codedthinking
GitHub Events
Total
- Issues event: 2
- Push event: 21
Last Year
- Issues event: 2
- Push event: 21
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 1
- Total pull requests: 0
- Average time to close issues: 13 minutes
- Average time to close pull requests: N/A
- Total issue authors: 1
- Total pull request authors: 0
- Average comments per issue: 0.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 0
- Average time to close issues: 13 minutes
- Average time to close pull requests: N/A
- Issue authors: 1
- Pull request authors: 0
- Average comments per issue: 0.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- korenmiklos (1)