Card grid for the deck listings; A Summer: Palm/scanner photos, Casabeza, Devendra, Diogramos, TOC order; A History and A Feat edits

8d5e8fa · gmorell · 2026-11-02 03:13

6 files +276 -57

Files changed

modified content/presentations/a-summer.md
+276 −57
@@ -1,6 +1,6 @@
1 1 +++
2 −title = "A Summer"
3 −description = "of Accelerated Development"
2 +title = "2026"
3 +description = "in Accelerated Development"
4 4 date = 2026-08-27
5 5
6 6 [extra]
@@ -8,33 +8,46 @@ reveal_theme = "black"
8 8 reveal_transition = "slide"
9 9 +++
10 10
11 −# A Summer
11 +# 2026
12 12
13 −What I've been upto this summer
13 +A summary of other things done this summer
14 14
15 15 ---
16 16
17 −## Apollo's Crib (Updates)
17 +<div class="cols">
18 +<div>
18 19
19 −## Apollo's Palm
20 +### Apollo's Crib
20 21
21 −## Movie Monster
22 +### Apollo's Palm
22 23
23 −## Tower Forever
24 +### LambentFlex
24 25
25 −## GitGud
26 +### Casabeza Clients
26 27
27 −## LambentFlex
28 +### Devendra
28 29
29 −## Camerite
30 +### Tower Forever
30 31
31 −## Angler
32 +</div>
33 +<div>
32 34
33 −## FeedPug
35 +### GitGud
34 36
35 −## Waxx
37 +### Movie Monster
36 38
37 −## Devendra
39 +### Camerite
40 +
41 +### Angler
42 +
43 +### FeedPug
44 +
45 +### Waxx
46 +
47 +### Diogramos
48 +
49 +</div>
50 +</div>
38 51
39 52 ---
40 53
@@ -46,6 +59,15 @@ Here
46 59
47 60 Now
48 61
62 +_with even more data sources_
63 +
64 +--
65 +
66 +## The need:
67 +
68 +- More Datasources
69 +- Bigger Data
70 +
49 71 --
50 72
51 73 ## Every Data Source
@@ -75,9 +97,32 @@ Now
75 97
76 98 --
77 99
100 +## Fun Challenges worked on
101 +
102 +<div class="cols">
103 +<div>
104 +
105 +#### Positive
106 +
107 +Germany has every single transit line on the same feed
108 +
109 +</div>
110 +<div>
111 +
112 +#### Negative
113 +
114 +Germany has every single transit line on the same feed
115 +</div>
116 +
117 +</div>
118 +
119 +
120 +Note: Makes it easy to integrate, but orders of magnitude larger data than any other system
121 +--
122 +
78 123 ## Demo
79 124
80 −<!-- .slide: data-background-iframe="https://ac.neiam.org/p/p/Hackspace" data-background-interactive -->
125 +[//]: # (<!-- .slide: data-background-iframe="https://ac.neiam.org/p/p/Hackspace" data-background-interactive -->)
81 126
82 127 [ac.neiam.org/p/p/Hackspace](https://ac.neiam.org/p/p/Hackspace)
83 128
@@ -100,6 +145,12 @@ In Your Hand
100 145
101 146 --
102 147
148 +## The want:
149 +
150 +### A desk widget that shows up to date information like the rest of the ecosystem
151 +
152 +--
153 +
103 154 ## The Hardware
104 155
105 156 - LilyGo T4-S3 <!-- .element: class="fragment" -->
@@ -128,27 +179,145 @@ In Your Hand
128 179
129 180 ---
130 181
182 +## LambentFlex
131 183
132 −## Movie Monster
184 +A mulit-channel udp lighting reciever
133 185
134 −Every Movie, Every Theater, One Place
186 +--
187 +
188 +## The need:
189 +
190 +### Captive Portal
191 +### LocationIndicator LED
192 +### Reusability
193 +
194 +--
195 +
196 +## Same Firmware, New Chips
197 +
198 +- ESP32-C3 (the original) <!-- .element: class="fragment" -->
199 +- ESP32-C6 port <!-- .element: class="fragment" -->
200 +- WS2812 strands over RMT <!-- .element: class="fragment" -->
201 +- Over-the-air updates <!-- .element: class="fragment" -->
202 +
203 +--
204 +
205 +## LambentFlex I2S
206 +
207 +- LilyGo T-QT (ESP32-S3) <!-- .element: class="fragment" -->
208 +- MEMS microphone <!-- .element: class="fragment" -->
209 +- Level meter & 7-band spectrum <!-- .element: class="fragment" -->
210 +- Beat detection <!-- .element: class="fragment" -->
211 +- Published over MQTT <!-- .element: class="fragment" -->
212 +
213 +---
214 +
215 +## Casabeza Clients
216 +
217 +The House
218 +
219 +From Every Screen
220 +
221 +--
222 +
223 +## On The Desktop
224 +
225 +- Rust + egui <!-- .element: class="fragment" -->
226 +- Inventory, projects, bills, numerics <!-- .element: class="fragment" -->
227 +- Prices and $/unit, plotted <!-- .element: class="fragment" -->
228 +- Images & PDFs cached for offline <!-- .element: class="fragment" -->
229 +- Follows the desktop's accent colour <!-- .element: class="fragment" -->
230 +- Shipped as .debs from CI <!-- .element: class="fragment" -->
231 +
232 +--
233 +
234 +## Remote Control
235 +
236 +- `cbz-remote` drives the desktop client over MQTT <!-- .element: class="fragment" -->
237 +- Switch tabs, open images & documents <!-- .element: class="fragment" -->
238 +- Page through PDFs, snap windows to a corner <!-- .element: class="fragment" -->
239 +
240 +--
241 +
242 +## On The Phone
243 +
244 +- **Auth**: one sign-in, shared with every CBZ app <!-- .element: class="fragment" -->
245 +- **Inventory**: items, locations, labels, tasks <!-- .element: class="fragment" -->
246 +- **Lists**: live lists from templates, pushed as they change <!-- .element: class="fragment" -->
247 +- **Numerics**: prices over time, scan a barcode to log one <!-- .element: class="fragment" -->
248 +- **Scanner**: continuous barcode scanning, out over MQTT <!-- .element: class="fragment" -->
249 +
250 +--
251 +
252 +## Auth
253 +
254 +- Sign in once, every CBZ app is signed in <!-- .element: class="fragment" -->
255 +- Session shared through a permission-guarded provider <!-- .element: class="fragment" -->
256 +- Pick the house you're working in <!-- .element: class="fragment" -->
257 +- A rolling QR code to sign in other devices <!-- .element: class="fragment" -->
135 258
136 259 --
137 260
261 +## Inventory
262 +
138 263 <div class="cols">
264 +<div>
139 265
140 −![diagram](/img/Screenshot_20260827-180051.png)
266 +- Items, locations, labels, tasks, projects <!-- .element: class="fragment" -->
267 +- Cached on the phone with Room <!-- .element: class="fragment" -->
268 +- Tap a tag on a reader, the item comes up <!-- .element: class="fragment" -->
269 +- Readers publish card reads over MQTT <!-- .element: class="fragment" -->
141 270
142 −![diagram](/img/Screenshot_20260827-180103.png)
271 +</div>
143 272
144 −![diagram](/img/Screenshot_20260827-180121.png)
273 +![CBZ Inventory on a Zebra scanner](/img/casabeza-scanner.jpg)
145 274
146 275 </div>
147 276
277 +---
278 +
279 +## Devendra
280 +
281 +Less Ansible
282 +
283 +More Daemon
284 +
148 285 --
149 286
150 −Live at https://monster.neiam.org
287 +## The need:
288 +
289 +- The subset of ansible I cared about
290 +- No SSH beyond initial setup
291 +- Idempotency
292 +- NAT Busting
293 +
294 +
295 +--
296 +
297 +## A Tiny Ansible, Embedded
298 +
299 +- Installs config files: quadlets, drop-ins, plain config <!-- .element: class="fragment" -->
300 +- `daemon-reload` only when a unit changed <!-- .element: class="fragment" -->
301 +- Starts, stops, enables, restarts services <!-- .element: class="fragment" -->
302 +- Idempotent: a repeat apply changes nothing <!-- .element: class="fragment" -->
303 +
304 +--
305 +
306 +## Controller → Agents
307 +
308 +- Desired state authored in a small web UI <!-- .element: class="fragment" -->
309 +- Synced to agents over iroh-docs <!-- .element: class="fragment" -->
310 +- Agents pull, converge, and report status back <!-- .element: class="fragment" -->
311 +- Shipped as a .deb, amd64 & arm64 <!-- .element: class="fragment" -->
312 +
313 +--
314 +
315 +## Adopt
151 316
317 +- Point it at a hand-configured host <!-- .element: class="fragment" -->
318 +- It proposes what it finds <!-- .element: class="fragment" -->
319 +- Accept the files you want <!-- .element: class="fragment" -->
320 +- From then on, it's managed <!-- .element: class="fragment" -->
152 321
153 322 ---
154 323
@@ -177,6 +346,14 @@ Of My Own
177 346 Note:
178 347 366 commits since May 13.
179 348
349 +--
350 +
351 +## The need:
352 +
353 +- Gitlab takes 5 minutes to restart a webservice
354 +- Gitlab has become a beast to run
355 +
356 +
180 357 --
181 358
182 359 ## Everything A Forge Does
@@ -202,40 +379,54 @@ Note:
202 379
203 380 Hosting its own development at https://gg.neiam.co
204 381
382 +since September 12
383 +
205 384 ---
206 385
207 −## LambentFlex
208 386
209 −Lights
387 +## Movie Monster
210 388
211 −Over UDP
389 +Every Movie, Every Theater, One Place
212 390
213 391 --
214 392
215 −## Same Firmware, New Chips
393 +## The need:
216 394
217 −- ESP32-C3 (the original) <!-- .element: class="fragment" -->
218 −- ESP32-C6 port <!-- .element: class="fragment" -->
219 −- WS2812 strands over RMT <!-- .element: class="fragment" -->
220 −- Over-the-air updates <!-- .element: class="fragment" -->
395 +- Full Automation
396 +- A Watchlist
397 +- An API
398 +- Reminders
399 +- Links to purchase tickets
221 400
222 401 --
223 402
224 −## LambentFlex I2S
403 +<div class="cols">
404 +
405 +![diagram](/img/Screenshot_20260827-180051.png)
406 +
407 +![diagram](/img/Screenshot_20260827-180103.png)
408 +
409 +![diagram](/img/Screenshot_20260827-180121.png)
410 +
411 +</div>
412 +
413 +--
414 +
415 +Live at https://monster.neiam.org
225 416
226 −- LilyGo T-QT (ESP32-S3) <!-- .element: class="fragment" -->
227 −- MEMS microphone <!-- .element: class="fragment" -->
228 −- Level meter & 7-band spectrum <!-- .element: class="fragment" -->
229 −- Beat detection <!-- .element: class="fragment" -->
230 −- Published over MQTT <!-- .element: class="fragment" -->
231 417
232 418 ---
233 419
234 420 ## Camerite
235 421
236 −Every Camera
422 +_Camerite: An aggregate stone made of cameras_
423 +
424 +--
425 +
426 +## The need:
237 427
238 −Live
428 +- Support Public Cameras
429 +- Support Cameras Behind NAT
239 430
240 431 --
241 432
@@ -264,12 +455,21 @@ Live at https://camerite.neiam.co
264 455
265 456 ## Angler
266 457
267 −Pixelfed
458 +Pixelfed, a PHP Instagram Clone
268 459
269 460 In Elixir
270 461
271 462 --
272 463
464 +## The need:
465 +
466 +- I don't have any PHP hosting in 2026
467 +- I don't want to have any PHP hosting in 2026
468 +- The setup, is *entirely* manual
469 +
470 +--
471 +
472 +
273 473 ## Drop-In
274 474
275 475 - Wire-compatible with the Pixelfed app <!-- .element: class="fragment" -->
@@ -293,6 +493,13 @@ Together
293 493
294 494 --
295 495
496 +## The need:
497 +
498 +- Feedly.com making nervous moves
499 +
500 +--
501 +
502 +
296 503 ## Features
297 504
298 505 - One newsfeed <!-- .element: class="fragment" -->
@@ -313,6 +520,13 @@ With Rules
313 520
314 521 --
315 522
523 +## The need:
524 +
525 +- Trello replacement
526 +- Lightweight to run
527 +
528 +--
529 +
316 530 ## The Columns Are A Graph
317 531
318 532 - Draw the workflow once, on a template <!-- .element: class="fragment" -->
@@ -337,38 +551,43 @@ Live at https://waxx.neiam.co
337 551
338 552 ---
339 553
340 −## Devendra
554 +## Diogramos
341 555
342 −Less Ansible
556 +Diagrams
557 +
558 +Together
343 559
344 −More Daemon
345 560
346 561 --
347 562
348 −## A Tiny Ansible, Embedded
563 +## The need:
349 564
350 −- Installs config files: quadlets, drop-ins, plain config <!-- .element: class="fragment" -->
351 −- `daemon-reload` only when a unit changed <!-- .element: class="fragment" -->
352 −- Starts, stops, enables, restarts services <!-- .element: class="fragment" -->
353 −- Idempotent: a repeat apply changes nothing <!-- .element: class="fragment" -->
565 +- Draw.io is not multiplayer!
566 +- Theme Token System
567 +- Embeddable Diagrams
354 568
355 569 --
356 570
357 −## Controller → Agents
571 +## The Canvas
358 572
359 −- Desired state authored in a small web UI <!-- .element: class="fragment" -->
360 −- Synced to agents over iroh-docs <!-- .element: class="fragment" -->
361 −- Agents pull, converge, and report status back <!-- .element: class="fragment" -->
362 −- Shipped as a .deb, amd64 & arm64 <!-- .element: class="fragment" -->
573 +- Shapes & connectors, anchor-aware routing <!-- .element: class="fragment" -->
574 +- Live multi-user editing <!-- .element: class="fragment" -->
575 +- Links on shapes: out to the web, or to another canvas <!-- .element: class="fragment" -->
576 +- Folders, roles, share links <!-- .element: class="fragment" -->
577 +- JSON export <!-- .element: class="fragment" -->
363 578
364 579 --
365 580
366 −## Adopt
581 +## Embeds
367 582
368 −- Point it at a hand-configured host <!-- .element: class="fragment" -->
369 −- It proposes what it finds <!-- .element: class="fragment" -->
370 −- Accept the files you want <!-- .element: class="fragment" -->
371 −- From then on, it's managed <!-- .element: class="fragment" -->
583 +- Read-only, in any page <!-- .element: class="fragment" -->
584 +- Frame mode: no cursors, scaled to fit, made for slides <!-- .element: class="fragment" -->
585 +- The embedding page picks the theme, live <!-- .element: class="fragment" -->
586 +- This deck's blueprint theme came from Diogramos <!-- .element: class="fragment" -->
587 +
588 +--
589 +
590 +Live at https://diogramos.neiam.co
372 591
373 592 ---
374 593
modified ?
+0 −0

Binary file — not rendered.

Parents: c86d3a9