-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstack-faq.html
More file actions
344 lines (304 loc) · 36.6 KB
/
Copy pathstack-faq.html
File metadata and controls
344 lines (304 loc) · 36.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
<!DOCTYPE HTML>
<html lang="en" class="light" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Stack FAQ</title>
<!-- Custom HTML head -->
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="highlight.css">
<link rel="stylesheet" href="tomorrow-night.css">
<link rel="stylesheet" href="ayu-highlight.css">
<!-- Custom theme stylesheets -->
<script data-host="https://app.microanalytics.io" data-dnt="false" src="https://app.microanalytics.io/js/script.js" id="ZwSg9rf6GA" async defer></script>
</head>
<body class="sidebar-visible no-js">
<div id="body-container">
<!-- Provide site root to javascript -->
<script>
var path_to_root = "";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('light')
html.classList.add(theme);
var body = document.querySelector('body');
body.classList.remove('no-js')
body.classList.add('js');
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
var body = document.querySelector('body');
var sidebar = null;
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
body.classList.remove('sidebar-visible');
body.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ul class="chapter">
<li><a class="active" href="../">chuck-stack Home</a></li> <!--chuboe changed-->
</ul>
<ol class="chapter"><li class="chapter-item expanded "><a href="introduction.html"><strong aria-hidden="true">1.</strong> Introduction</a></li><li class="chapter-item expanded "><a href="picture-success.html"><strong aria-hidden="true">2.</strong> Picture of Success</a></li><li class="chapter-item expanded "><a href="success-factor.html"><strong aria-hidden="true">3.</strong> Success Factors</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="success-hr.html"><strong aria-hidden="true">3.1.</strong> Success with HR</a></li><li class="chapter-item expanded "><a href="success-ai.html"><strong aria-hidden="true">3.2.</strong> Success with AI</a></li><li class="chapter-item expanded "><a href="success-cli.html"><strong aria-hidden="true">3.3.</strong> Success with CLI</a></li><li class="chapter-item expanded "><a href="success-linux.html"><strong aria-hidden="true">3.4.</strong> Success with Linux</a></li><li class="chapter-item expanded "><a href="success-postgresql.html"><strong aria-hidden="true">3.5.</strong> Success with PostgreSQL</a></li><li class="chapter-item expanded "><a href="success-api.html"><strong aria-hidden="true">3.6.</strong> Success with API</a></li></ol></li><li class="chapter-item expanded "><a href="getting-started.html"><strong aria-hidden="true">4.</strong> Getting Started</a></li><li class="chapter-item expanded "><a href="stack-faq.html" class="active"><strong aria-hidden="true">5.</strong> Stack FAQ</a></li><li class="chapter-item expanded "><a href="stack-tools.html"><strong aria-hidden="true">6.</strong> Stack Tools</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="tool-incus.html"><strong aria-hidden="true">6.1.</strong> Incus</a></li><li class="chapter-item expanded "><a href="tool-linux.html"><strong aria-hidden="true">6.2.</strong> Linux</a></li><li class="chapter-item expanded "><a href="tool-postgresql.html"><strong aria-hidden="true">6.3.</strong> PostgreSQL</a></li><li class="chapter-item expanded "><a href="tool-postgrest.html"><strong aria-hidden="true">6.4.</strong> PostgREST</a></li><li class="chapter-item expanded "><a href="tool-aichat.html"><strong aria-hidden="true">6.5.</strong> AIChat</a></li><li class="chapter-item expanded "><a href="tool-nushell.html"><strong aria-hidden="true">6.6.</strong> Nushell</a></li><li class="chapter-item expanded "><a href="tool-zellij.html"><strong aria-hidden="true">6.7.</strong> Zellij</a></li><li class="chapter-item expanded "><a href="tool-git.html"><strong aria-hidden="true">6.8.</strong> Git</a></li><li class="chapter-item expanded "><a href="tool-obsidian.html"><strong aria-hidden="true">6.9.</strong> Obsidian</a></li><li class="chapter-item expanded "><a href="tool-netbird.html"><strong aria-hidden="true">6.10.</strong> Netbird</a></li><li class="chapter-item expanded "><a href="tool-idempiere.html"><strong aria-hidden="true">6.11.</strong> iDempiere</a></li><li class="chapter-item expanded "><a href="tool-htmx.html"><strong aria-hidden="true">6.12.</strong> htmx</a></li><li class="chapter-item expanded "><a href="tool-discourse.html"><strong aria-hidden="true">6.13.</strong> Discourse</a></li><li class="chapter-item expanded "><a href="tool-mdbook.html"><strong aria-hidden="true">6.14.</strong> mdBook</a></li><li class="chapter-item expanded "><a href="tool-others.html"><strong aria-hidden="true">6.15.</strong> Others</a></li></ol></li><li class="chapter-item expanded "><a href="stack-architecture.html"><strong aria-hidden="true">7.</strong> Stack Architecture</a></li><li class="chapter-item expanded "><a href="stack-application.html"><strong aria-hidden="true">8.</strong> Stack Application</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="application-deploy.html"><strong aria-hidden="true">8.1.</strong> Deployment</a></li><li class="chapter-item expanded "><a href="application-workflow.html"><strong aria-hidden="true">8.2.</strong> Workflow</a></li><li class="chapter-item expanded "><a href="application-attribute.html"><strong aria-hidden="true">8.3.</strong> Attribute Tagging</a></li></ol></li><li class="chapter-item expanded "><a href="best-practices.html"><strong aria-hidden="true">9.</strong> Stack Best Practices</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="best-practices-operation.html"><strong aria-hidden="true">9.1.</strong> Operation Best Practices</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="best-practices-operation-say.html"><strong aria-hidden="true">9.1.1.</strong> Say What We Do</a></li><li class="chapter-item expanded "><a href="best-practices-operation-do.html"><strong aria-hidden="true">9.1.2.</strong> Do What We Said</a></li><li class="chapter-item expanded "><a href="best-practices-operation-prove.html"><strong aria-hidden="true">9.1.3.</strong> Prove We Did It</a></li><li class="chapter-item expanded "><a href="best-practices-operation-feedback.html"><strong aria-hidden="true">9.1.4.</strong> Welcome Feedback</a></li><li class="chapter-item expanded "><a href="best-practices-operation-improve.html"><strong aria-hidden="true">9.1.5.</strong> Continuously Improve</a></li></ol></li><li class="chapter-item expanded "><a href="data-management-philosophy.html"><strong aria-hidden="true">9.2.</strong> Data Management Philosophy</a></li><li class="chapter-item expanded "><a href="postgres-conventions.html"><strong aria-hidden="true">9.3.</strong> Postgres Conventions</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="postgres-convention/schema.html"><strong aria-hidden="true">9.3.1.</strong> Private and API Schema</a></li><li class="chapter-item expanded "><a href="postgres-convention/abbreviation.html"><strong aria-hidden="true">9.3.2.</strong> Abbreviation</a></li><li class="chapter-item expanded "><a href="postgres-convention/table-convention.html"><strong aria-hidden="true">9.3.3.</strong> Table Convention</a></li><li class="chapter-item expanded "><a href="postgres-convention/column-convention.html"><strong aria-hidden="true">9.3.4.</strong> Column Convention</a></li><li class="chapter-item expanded "><a href="postgres-convention/table-record-convention.html"><strong aria-hidden="true">9.3.5.</strong> Table and Record</a></li><li class="chapter-item expanded "><a href="postgres-convention/uuid.html"><strong aria-hidden="true">9.3.6.</strong> UUID</a></li><li class="chapter-item expanded "><a href="postgres-convention/json-array-table-column.html"><strong aria-hidden="true">9.3.7.</strong> JSON vs Array vs Table</a></li><li class="chapter-item expanded "><a href="postgres-convention/enum-type-convention.html"><strong aria-hidden="true">9.3.8.</strong> enum and Type</a></li><li class="chapter-item expanded "><a href="postgres-convention/partition-convention.html"><strong aria-hidden="true">9.3.9.</strong> Partition</a></li><li class="chapter-item expanded "><a href="postgres-convention/function-convention.html"><strong aria-hidden="true">9.3.10.</strong> Function</a></li><li class="chapter-item expanded "><a href="postgres-convention/trigger-convention.html"><strong aria-hidden="true">9.3.11.</strong> Trigger</a></li><li class="chapter-item expanded "><a href="postgres-convention/comment.html"><strong aria-hidden="true">9.3.12.</strong> Comments</a></li><li class="chapter-item expanded "><a href="postgres-convention/sample-table-convention.html"><strong aria-hidden="true">9.3.13.</strong> Sample Table</a></li><li class="chapter-item expanded "><a href="postgres-convention/scalability-convention.html"><strong aria-hidden="true">9.3.14.</strong> Scalability</a></li><li class="chapter-item expanded "><a href="postgres-convention/nushell.html"><strong aria-hidden="true">9.3.15.</strong> Nushell psql</a></li><li class="chapter-item expanded "><a href="postgres-convention/to-be-resolved-convention.html"><strong aria-hidden="true">9.3.16.</strong> To Be Resolved</a></li></ol></li><li class="chapter-item expanded "><a href="postgres-services.html"><strong aria-hidden="true">9.4.</strong> Postgres Services</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="postgres-convention/async.html"><strong aria-hidden="true">9.4.1.</strong> Async</a></li><li class="chapter-item expanded "><a href="postgres-convention/attribute-tag.html"><strong aria-hidden="true">9.4.2.</strong> Attribute Tagging</a></li><li class="chapter-item expanded "><a href="postgres-convention/change-log.html"><strong aria-hidden="true">9.4.3.</strong> Change Log</a></li><li class="chapter-item expanded "><a href="postgres-convention/event.html"><strong aria-hidden="true">9.4.4.</strong> Event</a></li><li class="chapter-item expanded "><a href="postgres-convention/notify.html"><strong aria-hidden="true">9.4.5.</strong> Notify</a></li><li class="chapter-item expanded "><a href="postgres-convention/request.html"><strong aria-hidden="true">9.4.6.</strong> Request Workflow</a></li><li class="chapter-item expanded "><a href="postgres-convention/statistics-convention.html"><strong aria-hidden="true">9.4.7.</strong> Statistics</a></li><li class="chapter-item expanded "><a href="postgres-convention/system-configuration-convention.html"><strong aria-hidden="true">9.4.8.</strong> System Configuration</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="cli-tutor.html"><strong aria-hidden="true">10.</strong> Stack Tutor</a></li><li class="chapter-item expanded "><a href="stack-academy.html"><strong aria-hidden="true">11.</strong> Stack Academy</a></li><li class="chapter-item expanded "><a href="stack-local.html"><strong aria-hidden="true">12.</strong> Local Community Support</a></li><li class="chapter-item expanded "><a href="terminology.html"><strong aria-hidden="true">13.</strong> Terminology</a></li><li class="chapter-item expanded "><a href="roadmap.html"><strong aria-hidden="true">14.</strong> Roadmap</a></li><li class="chapter-item expanded "><a href="project-history.html"><strong aria-hidden="true">15.</strong> Project History</a></li><li class="chapter-item expanded "><a href="reference.html"><strong aria-hidden="true">16.</strong> References</a></li><li class="chapter-item expanded affix "><li class="spacer"></li><li class="chapter-item expanded "><a href="code-of-conduct.html"><strong aria-hidden="true">17.</strong> Code of Conduct</a></li><li class="chapter-item expanded "><a href="privacy-policy.html"><strong aria-hidden="true">18.</strong> Privacy Policy</a></li><li class="chapter-item expanded affix "><li class="spacer"></li><li class="chapter-item expanded "><a href="blog.html"><strong aria-hidden="true">19.</strong> Blog</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="blog-postgresql-json-show-sales-order.html"><strong aria-hidden="true">19.1.</strong> How to Extract JSON from PostgreSQL</a></li><li class="chapter-item expanded "><a href="blog-incus-netbird-phoenixnap-isolated.html"><strong aria-hidden="true">19.2.</strong> Isolated Public-Facing Services in Incus</a></li><li class="chapter-item expanded "><a href="blog-local-co-op-funding-help.html"><strong aria-hidden="true">19.3.</strong> Local AI Funding - Time to Bring Back the Co-op</a></li><li class="chapter-item expanded "><a href="blog-llm-ai-production-deploy.html"><strong aria-hidden="true">19.4.</strong> Production Open Source Chat with Work Instructions</a></li><li class="chapter-item expanded "><a href="blog-chuck-stack-it-job-description-assessment.html"><strong aria-hidden="true">19.5.</strong> chuck-stack IT Job Description</a></li><li class="chapter-item expanded "><a href="blog-rsync-net.html"><strong aria-hidden="true">19.6.</strong> Immutable Off-site Backups are Imperative</a></li><li class="chapter-item expanded "><a href="blog-llm-ai-operations-automation.html"><strong aria-hidden="true">19.7.</strong> Operations AI LLM Automation in 2025</a></li><li class="chapter-item expanded "><a href="blog-incus-netbird-phoenixnap.html"><strong aria-hidden="true">19.8.</strong> Hybrid Cloud Strategy: Incus + Netbird + PhoenixNAP</a></li><li class="chapter-item expanded "><a href="blog-letter-ceo.html"><strong aria-hidden="true">19.9.</strong> Letter to the CEO</a></li><li class="chapter-item expanded "><a href="blog-cli-better.html"><strong aria-hidden="true">19.10.</strong> The CLI is better than...</a></li><li class="chapter-item expanded "><a href="blog-conversational-enterprise-computing.html"><strong aria-hidden="true">19.11.</strong> Why Conversational Enterprise Computing Matters</a></li><li class="chapter-item expanded "><a href="blog-work-instruction-sexy.html"><strong aria-hidden="true">19.12.</strong> Work Instructions Make your Organization Sexy</a></li><li class="chapter-item expanded "><a href="blog-live-markdown-world.html"><strong aria-hidden="true">19.13.</strong> We Live in a Markdown World</a></li></ol></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<!-- Track and set sidebar scroll position -->
<script>
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
sidebarScrollbox.addEventListener('click', function(e) {
if (e.target.tagName === 'A') {
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
}
}, { passive: true });
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
sessionStorage.removeItem('sidebar-scroll');
if (sidebarScrollTop) {
// preserve sidebar scroll position when navigating via links within sidebar
sidebarScrollbox.scrollTop = sidebarScrollTop;
} else {
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
var activeSection = document.querySelector('#sidebar .active');
if (activeSection) {
activeSection.scrollIntoView({ block: 'center' });
}
}
</script>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<!-- add things here that will go above the body navigation -->
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title"></h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="stack-faq"><a class="header" href="#stack-faq">Stack FAQ</a></h1>
<p>The purpose of this page is to answer frequently asked questions (FAQ) about the chuck-stack.</p>
<h2 id="toc"><a class="header" href="#toc">TOC</a></h2>
<ul>
<li><a href="#why-do-we-love-the-chuck-stack">Why do we love the chuck-stack?</a></li>
<li><a href="#is-chuck-stack-really-the-name-of-the-project">Is chuck-stack really the name of the project?</a></li>
<li><a href="#how-do-we-choose-stack-components">How do we choose stack components?</a></li>
<li><a href="#what-are-the-chuck-stack-tools">What are the chuck-stack tools?</a></li>
<li><a href="#what-are-the-project-guiding-principles">What are the project guiding principles?</a></li>
<li><a href="#what-is-the-stack-academy">What is the stack-academy?</a></li>
<li><a href="#what-about-scalability">What about scalability?</a></li>
<li><a href="#what-about-ai-agents">What about AI Agents</a></li>
<li><a href="#what-about-chuck-stack-revenue">What about chuck-stack Revenue?</a></li>
<li><a href="#what-is-a-superclerk">What is a Superclerk?</a></li>
<li><a href="#saving-heartbeats">Saving Heartbeats</a></li>
<li><a href="#what-is-the-current-status-of-chuck-stack">What is the current status of chuck-stack?</a></li>
<li><a href="#is-chuck-stack-an-erp">Is chuck-stack an ERP?</a></li>
<li><a href="#what-is-capability-sandboxing">What is capability sandboxing?</a></li>
<li><a href="#what-are-the-most-important-pieces-of-the-chuck-stack-application-framework">What are the most important pieces of the chuck-stack application framework?</a></li>
<li><a href="#why-is-the-cli-so-important">Why is the CLI so Important?</a></li>
</ul>
<h2 id="why-do-we-love-the-chuck-stack"><a class="header" href="#why-do-we-love-the-chuck-stack">Why do we love the chuck-stack?</a></h2>
<ul>
<li>Because we believe it is the most simple solution given the complexities running an organization.</li>
<li>Because we drive down the cost of AI to augment your organization.</li>
<li>Because we do not need to worry about SQL injection since permissions are managed in the database.</li>
<li>Because we minimize the financial and employee commitment needed to run an organization.</li>
<li>Because we can focus on hiring good, smart people.</li>
</ul>
<h2 id="is-chuck-stack-really-the-name-of-the-project"><a class="header" href="#is-chuck-stack-really-the-name-of-the-project">Is chuck-stack really the name of the project?</a></h2>
<p>Yes and no... Naming a project is hard. chuck-stack is a good starting name given that Chuck Boecking has spent the last 25 years immersed in small-to-medium organization ERP, data management, and IT. This project started as result of what we believe to be safe, usable, reliable and performant. If the community believes there is a better name to represent this project, then we will change the name accordingly. That will be a good day!</p>
<h2 id="how-do-we-choose-stack-components"><a class="header" href="#how-do-we-choose-stack-components">How do we choose stack components?</a></h2>
<p>See <a href="./stack-tools.html">stack-tools</a>.</p>
<h2 id="what-are-the-chuck-stack-tools"><a class="header" href="#what-are-the-chuck-stack-tools">What are the chuck-stack tools?</a></h2>
<p>See <a href="./stack-tools.html">stack-tools</a>.</p>
<h2 id="what-are-the-project-guiding-principles"><a class="header" href="#what-are-the-project-guiding-principles">What are the project guiding principles?</a></h2>
<p>See <a href="./introduction.html#chuck-stack-guiding-principles">chuck-stack guiding principles</a></p>
<h2 id="what-is-the-stack-academy"><a class="header" href="#what-is-the-stack-academy">What is the stack-academy?</a></h2>
<p>See the <a href="./stack-academy.html">stack-academy</a> page.</p>
<h2 id="what-about-scalability"><a class="header" href="#what-about-scalability">What about scalability?</a></h2>
<p>The chuck-stack uses widely available and well understood tools (namely PostgreSQL and Linux) whose scalability is widely reasoned about. The chuck-stack can easily be scaled to thousands of concurrent users by simply following basic best practices.</p>
<p>Reference: <a href="./postgres-convention/scalability-convention.html">Postgresql Scalability</a></p>
<h2 id="what-about-ai-agents"><a class="header" href="#what-about-ai-agents">What about AI Agents</a></h2>
<p>I am commonly asked about AI agents and agentic frameworks (like CrewAI). Before we get into the discussion, it is important to remember that the chuck-stack serves small and medium organizations. The needs and abilities of these groups are significantly different than someone building the next web-scale product like tiktok.</p>
<p>It is also important to note that the chuck-stack takes a very different approach to how an organization improves over time. The traditional approach is to have technical group (like IT) build tools for an organization based on documented needs. The problem statement is that IT people almost never fully understand the needs of the people who perform the nuanced work for years.</p>
<p>The chuck-stack takes the approach that an IT department has only one primary focus: build a self-help platform. The IT goal is to enable the people who perform a task every day to reason, augment and automate their roles.</p>
<p>Agentic orchestration tools like CrewAI do not fit well in a typical chuck-stack organization. To explain why, we need to explain what chuck-stack organizations need from AI. Note we are using the term 'AI' as a general catchall term for all AI-related topics and technologies.</p>
<ul>
<li>Need AI to understand documented work instructions (specifically: RAG)</li>
<li>Need AI to help educate new people to roles (specifically: chat)</li>
<li>Need AI to understand operational/transactional systems (specifically: SQL schema)</li>
<li>Need AI to understand the intersection between work instructions and transactional system schema (specifically: context)</li>
<li>Need AI to help make real-time decisions that:
<ul>
<li>make the right data available to the right role</li>
<li>help make the role easier to execute</li>
<li>help prevent mistakes</li>
</ul>
</li>
<li>Need to create AI 'tools' quickly, simply and easily</li>
<li>Need to create simple workflows where neural networks make judgements and dispatch execution to simple tools</li>
</ul>
<p>Most organizations do not have complex BPMN-style workflows. A large percentage (say 70% to 90%) of operations execute a long a defined <a href="./terminology.html#happy-path">happy path</a>. The task is simply 'follow the work instructions' and look for any scenarios the fall out of the happy path. If a scenario falls out of the happy path, follow the work instructions that define the error, exception or edge case scenario. If there are no work instructions, ask a human.</p>
<p>Said another way... work instructions are the best, easiest, and most concise way to communicate and guide what needs to happen. Agentic frameworks are not needed to simple follow work instructions and execute tools accordingly.</p>
<p>Problem with Agentic frameworks:</p>
<ul>
<li>They are too hard for an everyday person to reason about</li>
<li>The complexity of coding modern agentic systems is prohibitively expensive</li>
<li>Agentic frameworks are the wrong tool for the problem/need as described above</li>
</ul>
<h2 id="what-about-chuck-stack-revenue"><a class="header" href="#what-about-chuck-stack-revenue">What about chuck-stack Revenue?</a></h2>
<p>We are commonly asked about the commercial viability of the chuck-stack. Specifically, people ask about generating revenue from a broader audience. Here are our thoughts and experiences on revenue.</p>
<ul>
<li>We have supported our families and business partners over the last 15 years from traditional ERP services (learn, configure, audit, deploy, scale and support). While the world is changing quickly both in terms of training and consulting, there is an aspect to this model that will remain. Reference: <a href="https://www.chuckboecking.com">https://www.chuckboecking.com</a></li>
<li>We believe there is value in providing chuck-stack hosting and configuration based on best practices. This follows the same life cycle (learn, configure, audit, deploy, scale and support) as ERP. This concept loosely follows a broadly accepted and successful Metabase, Netbird, Discourse, ... model; however, the chuck-stack is different since it is a collection of tools (not a single tool like discourse).</li>
<li>Revenue to date is generated through a flat monthly '<a href="./stack-academy.html">professional services / training</a>` fee plus project and hourly consulting services.</li>
<li>It is important to note that our general audience is small to medium organizations. This group is commonly defined by annual revenues ranging from $1M to $500M USD. Our target chuck-stack audience is more narrowly defined by organizations with $20M to $200M annual revenue. Although, our smallest customer is below $1M USD annual revenue, and our largest customer topped over $800M USD annual revenue.</li>
</ul>
<h2 id="what-is-a-superclerk"><a class="header" href="#what-is-a-superclerk">What is a Superclerk?</a></h2>
<p>See <a href="./terminology.html#superclerk">superclerk</a>.</p>
<h2 id="saving-heartbeats"><a class="header" href="#saving-heartbeats">Saving Heartbeats</a></h2>
<p>What does this mean? We have a precious few moments on this Earth. We will do everything in our power to preserve your time so that you may spend your remaining "heartbeats" on something that really matters to you.</p>
<h2 id="what-is-the-current-status-of-chuck-stack"><a class="header" href="#what-is-the-current-status-of-chuck-stack">What is the current status of chuck-stack?</a></h2>
<p>The short answer is: We have been deploying the chuck-stack for more that 10 years. Some parts of the stack are in early alpha. Other parts reached production 15 years ago. Here is a more detailed answer:</p>
<ul>
<li><a href="https://www.idempiere.org/">iDempiere ERP</a> is the oldest member of the stack. We started deploying it on Linux as early as 2001.</li>
<li>We started deploying <a href="https://www.postgresql.org/">PostgreSQL</a> on Linux in 2011.</li>
<li><a href="https://www.metabase.com/">Metabase</a> BI has been in production for us for the last 4 years.</li>
<li><a href="https://www.nushell.sh/">Nushell</a> has been in production for us for the last 2 years.</li>
<li><a href="https://www.getdbt.com/">dbt</a> has been in production for about 6 months. Note that we have used various ETL tools for the last 10 years.</li>
<li>The AI tools like <a href="https://github.com/sigoden/aichat">aichat</a>, are relatively new. Being able to use these tools to change how people interact with data is also new. This style of UI development is in alpha.</li>
</ul>
<h2 id="is-chuck-stack-an-erp"><a class="header" href="#is-chuck-stack-an-erp">Is chuck-stack an ERP?</a></h2>
<p>No, not yet - but someday. Here are our thoughts about becoming an ERP:</p>
<ul>
<li>The biggest hurdle to becoming a viable ERP is data entry.</li>
<li>It is common for an order header to have 90+ columns.</li>
<li>Historically, ERP systems burden users with a sea of fields (representing the 90+ columns).</li>
<li>We do NOT believe this is the best approach because a user will only need to modify three or so fields in a newly drafted order. The remaining fields should just default from either the Business Partner settings or recent orders. Said another way, changing many defaults is the exception, not the rule.</li>
<li>Improving the user experience for the above order scenario is currently our biggest challenge.</li>
<li>Another challenge will be to provide a viable accounting system. In the short term, we will use <a href="https://www.idempiere.org/">iDempiere</a>. In the long term, we will use AI and available references to create an accounting system that best supports our stack. Accounting is one of our strongest areas of our ERP practice.</li>
</ul>
<h2 id="what-is-capability-sandboxing"><a class="header" href="#what-is-capability-sandboxing">What is capability sandboxing?</a></h2>
<p>Capability Sandboxing is the act of defining roles so well that you can consider them to be a contract and enabling the system to ensure role created automation stays within the confines of the contract.</p>
<h2 id="what-are-the-most-important-pieces-of-the-chuck-stack-application-framework"><a class="header" href="#what-are-the-most-important-pieces-of-the-chuck-stack-application-framework">What are the most important pieces of the chuck-stack application framework?</a></h2>
<p>The two most important pieces of the chuck-stack application are workflow and attributes.</p>
<ul>
<li>Workflow is critical to data management. However, workflow is notoriously difficult. The concepts can be difficult to learn. The applications are often difficult to install and maintain, and they are either too complicated or overly simple. It is incredibly difficult to create a workflow architecture that is both generic enough and easy enough for broad adoption. AI will change the workflow landscape. What was previously tedious, is becoming a conversation.</li>
<li>Attributes and attribute sets are critical to data management. Being able to tag anything with an attribute, or a set of attributes is one of the most common actions in data management.</li>
</ul>
<h2 id="why-is-the-cli-so-important"><a class="header" href="#why-is-the-cli-so-important">Why is the CLI so Important?</a></h2>
<p>See <a href="./blog-cli-better.html">CLI Better Than ...</a></p>
<br>
<p>Copyright © 2024-<script>document.write(new Date().getFullYear())</script>, CHUBOE LLC. All rights reserved.</p> <!--chuboe changed-->
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="getting-started.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="stack-tools.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="getting-started.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="stack-tools.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script>
window.playground_copyable = true;
</script>
<script src="elasticlunr.min.js"></script>
<script src="mark.min.js"></script>
<script src="searcher.js"></script>
<script src="clipboard.min.js"></script>
<script src="highlight.js"></script>
<script src="book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>