Add article about Protovac
This commit is contained in:
parent
118c471d00
commit
005a371dcb
49
content/.obsidian/core-plugins.json
vendored
49
content/.obsidian/core-plugins.json
vendored
|
@ -1,17 +1,32 @@
|
||||||
[
|
{
|
||||||
"file-explorer",
|
"file-explorer": true,
|
||||||
"global-search",
|
"global-search": true,
|
||||||
"switcher",
|
"switcher": true,
|
||||||
"graph",
|
"graph": true,
|
||||||
"backlink",
|
"backlink": true,
|
||||||
"canvas",
|
"outgoing-link": false,
|
||||||
"page-preview",
|
"tag-pane": false,
|
||||||
"note-composer",
|
"page-preview": true,
|
||||||
"command-palette",
|
"daily-notes": false,
|
||||||
"editor-status",
|
"templates": true,
|
||||||
"bookmarks",
|
"note-composer": true,
|
||||||
"markdown-importer",
|
"command-palette": true,
|
||||||
"outline",
|
"slash-command": false,
|
||||||
"word-count",
|
"editor-status": true,
|
||||||
"file-recovery"
|
"starred": false,
|
||||||
]
|
"markdown-importer": true,
|
||||||
|
"zk-prefixer": false,
|
||||||
|
"random-note": false,
|
||||||
|
"outline": true,
|
||||||
|
"word-count": true,
|
||||||
|
"slides": false,
|
||||||
|
"audio-recorder": false,
|
||||||
|
"workspaces": false,
|
||||||
|
"file-recovery": true,
|
||||||
|
"publish": false,
|
||||||
|
"sync": false,
|
||||||
|
"canvas": true,
|
||||||
|
"bookmarks": true,
|
||||||
|
"properties": false,
|
||||||
|
"webviewer": false
|
||||||
|
}
|
109
content/.obsidian/workspace.json
vendored
109
content/.obsidian/workspace.json
vendored
|
@ -16,7 +16,9 @@
|
||||||
"file": "Secret Garden.md",
|
"file": "Secret Garden.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Secret Garden"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -28,7 +30,9 @@
|
||||||
"file": "Fake Dog.md",
|
"file": "Fake Dog.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Fake Dog"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -40,7 +44,9 @@
|
||||||
"file": "Secret Garden.md",
|
"file": "Secret Garden.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Secret Garden"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -49,10 +55,12 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Makerspace Tours.md",
|
"file": "Protovac Retro Terminal.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Protovac Retro Terminal"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -64,7 +72,9 @@
|
||||||
"file": "Helios Alpha.md",
|
"file": "Helios Alpha.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Helios Alpha"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -76,7 +86,9 @@
|
||||||
"file": "Hydroponics.md",
|
"file": "Hydroponics.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Hydroponics"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -99,8 +111,11 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "file-explorer",
|
"type": "file-explorer",
|
||||||
"state": {
|
"state": {
|
||||||
"sortOrder": "alphabetical"
|
"sortOrder": "alphabetical",
|
||||||
}
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -115,7 +130,9 @@
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical"
|
"sortOrder": "alphabetical"
|
||||||
}
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -123,7 +140,9 @@
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "bookmarks",
|
"type": "bookmarks",
|
||||||
"state": {}
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -146,7 +165,7 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "backlink",
|
"type": "backlink",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Makerspace Tours.md",
|
"file": "Protovac Retro Terminal.md",
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
|
@ -154,7 +173,9 @@
|
||||||
"searchQuery": "",
|
"searchQuery": "",
|
||||||
"backlinkCollapsed": false,
|
"backlinkCollapsed": false,
|
||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
}
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Protovac Retro Terminal"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -163,8 +184,13 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Makerspace Tours.md"
|
"file": "Protovac Retro Terminal.md",
|
||||||
}
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Protovac Retro Terminal"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -181,46 +207,47 @@
|
||||||
"graph:Open graph view": false,
|
"graph:Open graph view": false,
|
||||||
"canvas:Create new canvas": false,
|
"canvas:Create new canvas": false,
|
||||||
"command-palette:Open command palette": false,
|
"command-palette:Open command palette": false,
|
||||||
"markdown-importer:Open format converter": false
|
"markdown-importer:Open format converter": false,
|
||||||
|
"templates:Insert template": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "24a62ccdfd18a884",
|
"active": "24a62ccdfd18a884",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"Secret Garden.md",
|
|
||||||
"Hydroponics.md",
|
|
||||||
"Makerspace Tours.md",
|
|
||||||
"Linux Flavour.md",
|
|
||||||
"Fake Dog.md",
|
|
||||||
"Wine Crate Coffee Table.md",
|
|
||||||
"Things I Recommend.md",
|
|
||||||
"t0txt.md",
|
|
||||||
"t0 Services.md",
|
|
||||||
"Spaceport.md",
|
"Spaceport.md",
|
||||||
|
"QotNews.md",
|
||||||
|
"Protovac Retro Terminal.md",
|
||||||
|
"Fake Dog.md",
|
||||||
|
"Bypassing Ports.md",
|
||||||
|
"Backup Strategy.md",
|
||||||
|
"Algae Growth.md",
|
||||||
|
"t0 Services.md",
|
||||||
"Solar Car.md",
|
"Solar Car.md",
|
||||||
"Sensors.md",
|
"Sensors.md",
|
||||||
"Helios Alpha.md",
|
|
||||||
"QotNews.md",
|
|
||||||
"Protospace.md",
|
"Protospace.md",
|
||||||
"Plant Waterer.md",
|
"Helios Alpha.md",
|
||||||
"Painting.md",
|
"Hand of Ozymandias.md",
|
||||||
"Notica.md",
|
"Airflow.md",
|
||||||
"Light Switch.md",
|
"media/protovac1.png",
|
||||||
"LED Dress.md",
|
"media/fake-dog.jpg",
|
||||||
"Japan Photography.md",
|
"media/dress1.jpg",
|
||||||
|
"media/cookies2.jpg",
|
||||||
|
"media/cookies1.jpg",
|
||||||
|
"Acoustic Panels.md",
|
||||||
|
"About.md",
|
||||||
"Hydroponics Log 3.md",
|
"Hydroponics Log 3.md",
|
||||||
"Hydroponics Log 2.md",
|
"Hydroponics Log 2.md",
|
||||||
"Hydroponics Log 1.md",
|
"Hydroponics Log 1.md",
|
||||||
"Hydroponics Aphid War.md",
|
"pages/writing.md",
|
||||||
"Hand of Ozymandias.md",
|
"pages/projects.md",
|
||||||
|
"pages/creations.md",
|
||||||
|
"Makerspace Tours.md",
|
||||||
|
"Secret Garden.md",
|
||||||
|
"Hydroponics.md",
|
||||||
|
"Linux Flavour.md",
|
||||||
"media/nft2.jpg",
|
"media/nft2.jpg",
|
||||||
"media/nft1.png",
|
"media/nft1.png",
|
||||||
"media/ports1.svg",
|
"media/ports1.svg",
|
||||||
"media/backup1.svg",
|
"media/backup1.svg",
|
||||||
"media/japan12hi.jpg",
|
"media/japan12hi.jpg"
|
||||||
"media/japan11hi.jpg",
|
|
||||||
"media/japan10hi.jpg",
|
|
||||||
"media/japan09hi.jpg",
|
|
||||||
"media/japan08hi.jpg",
|
|
||||||
"media/japan07hi.jpg"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -2,21 +2,110 @@ Title: Protovac Retro Terminal
|
||||||
Date: 2025-06-14
|
Date: 2025-06-14
|
||||||
Category: Creations
|
Category: Creations
|
||||||
Summary: A retro dumb terminal interface at my local makerspace.
|
Summary: A retro dumb terminal interface at my local makerspace.
|
||||||
Image: protovac1.jpg
|
Image: protovac1.png
|
||||||
Tags: feed
|
xTags: feed
|
||||||
|
|
||||||
Protovac is a retro dumb terminal interface that lives at my local makerspace, [[Protospace]]. Its main use is printing storage labels and name tags for members and guests when they visit.
|
Protovac is a retro dumb terminal interface that lives at my local makerspace, [[Protospace]]. Its main use is printing storage labels and name tags for members and guests when they visit.
|
||||||
|
|
||||||
|
![[protovac1.png]]
|
||||||
|
|
||||||
An 85-year-old member donated the 1983 Morrow MDT-60 video display terminal that he bought new from London Drugs and kept in his closet. Originally this terminal is supposed to connect to a mainframe computer (perhaps in a different room) and display text over a serial connection.
|
An 85-year-old member donated the 1983 Morrow MDT-60 video display terminal that he bought new from London Drugs and kept in his closet. Originally this terminal is supposed to connect to a mainframe computer (perhaps in a different room) and display text over a serial connection.
|
||||||
|
|
||||||
In this case it connects to a Raspberry Pi computer mounted to the back over 9600 baud serial UART. The Pi has been configured to output a terminal over its UART pins and auto login the protovac user with `agetty`. The protovac user's shell has been replaced with the Python script that runs the curses-based TUI.
|
In this case it connects to a Raspberry Pi computer mounted to the back over 9600 baud serial UART. The Pi has been configured to output a terminal over its UART pins and auto login the protovac user with `agetty`. The protovac user's shell has been replaced with the Python script that runs the curses-based TUI.
|
||||||
|
|
||||||
You can find the source code and set up instructions here: https://github.com/Protospace/protovac
|
You can find the [source code](https://github.com/Protospace/protovac) on Protospace's GitHub.
|
||||||
|
|
||||||
In addition to printing labels for members, Protovac:
|
In addition to printing labels for members, Protovac:
|
||||||
|
|
||||||
- can control the train in the Protospace welcome room
|
- can control the train in the Protospace welcome room
|
||||||
- displays stats about Protospace (next meeting, next class, member counts, etc)
|
- displays stats about Protospace (next meeting, next class, member counts, etc)
|
||||||
- can send a message to our marquee LED sign
|
- can send a message to our marquee LED sign
|
||||||
- has a chat interface to message ChatGPT
|
- has a chat interface to message ChatGPT
|
||||||
- has an interface to access Wolfram Alpha
|
- has an interface to access Wolfram Alpha
|
||||||
- can play the games NetHack, Moria, 2048, Zork, and Hitchhiker's
|
- can play the games NetHack, Moria, 2048, Zork, and Hitchhiker's
|
||||||
|
|
||||||
|
Here's what the home screen looks like:
|
||||||
|
```
|
||||||
|
_______ _______ ___ _________ ___ ____ ____ _ ______
|
||||||
|
|_ __ \|_ __ \ .' `. | _ _ | .' `.|_ _| |_ _|/ \ .' ___ |
|
||||||
|
| |__) | | |__) | / .-. \|_/ | | \_|/ .-. \ \ \ / / / _ \ / .' \_|
|
||||||
|
| ___/ | __ / | | | | | | | | | | \ \ / / / ___ \ | |
|
||||||
|
_| |_ _| | \ \_\ `-' / _| |_ \ `-' / \ ' /_/ / \ \_\ `.___.'\
|
||||||
|
|_____| |____| |___|`.___.' |_____| `.___.' \_/|____| |____|`.____ .'
|
||||||
|
|
||||||
|
[I] Info [N] Nametag UNIVERSAL COMPUTER
|
||||||
|
. * - )-
|
||||||
|
[S] Stats [L] Label . * o . *
|
||||||
|
|
|
||||||
|
[G] LED Sign [Z] Games . . -O-
|
||||||
|
| * . -0-
|
||||||
|
[C] Classes [V] Protovac Sign
|
||||||
|
. . | *
|
||||||
|
[P] Protocoin * -O- .
|
||||||
|
. * | ,
|
||||||
|
[M] Message . o
|
||||||
|
.---.
|
||||||
|
[T] Think = _/__[0]\_ . * o '
|
||||||
|
= = (_________) .
|
||||||
|
[A] About . *
|
||||||
|
* - ) - *
|
||||||
|
Copyright (c) 1985 Bikeshed Computer Systems Ltd.
|
||||||
|
```
|
||||||
|
|
||||||
|
If you press the "C" key, for example, a list of Protospace classes appears:
|
||||||
|
|
||||||
|
```
|
||||||
|
PROTOVAC UNIVERSAL COMPUTER
|
||||||
|
|
||||||
|
Protospace Classes
|
||||||
|
================== Instructor Cost Students
|
||||||
|
|
||||||
|
[PAST] Woodworking Tools 1: Intro to Saws
|
||||||
|
Sun Jun 22, 2025 2:00 PM Mike M. $20.00 5 / 6
|
||||||
|
|
||||||
|
Woodworking Tools 2: Jointer, Thickness Planer, Drum Sander
|
||||||
|
Sun Jun 22, 2025 5:00 PM Mike M. $20.00 6 / 6
|
||||||
|
|
||||||
|
Blender Phreaking Phrydays
|
||||||
|
Fri Jun 27, 2025 7:00 PM Jeff D. Free 0
|
||||||
|
|
||||||
|
New Member Orientation and Safety
|
||||||
|
Sun Jun 29, 2025 3:00 PM Cole N. Free 3 / 10
|
||||||
|
|
||||||
|
Laser I: Basic Cutting and Engraving (Thunder Laser)
|
||||||
|
Wed Jul 9, 2025 8:30 PM Craig P. $20.00 6 / 8
|
||||||
|
|
||||||
|
Woodworking Tools 1: Intro to Saws
|
||||||
|
Sun Jul 20, 2025 2:00 PM Vince K. $20.00 6 / 6
|
||||||
|
|
||||||
|
[B] Back [J] Down [K] Up
|
||||||
|
```
|
||||||
|
|
||||||
|
The "S" key shows stats about Protospace:
|
||||||
|
|
||||||
|
```
|
||||||
|
PROTOVAC UNIVERSAL COMPUTER
|
||||||
|
|
||||||
|
Protospace Stats
|
||||||
|
================
|
||||||
|
|
||||||
|
Next meeting: None
|
||||||
|
|
||||||
|
Next clean: None
|
||||||
|
|
||||||
|
Next class: Woodworking Tools 2: Jointer, Thickness Planer, Drum Sander
|
||||||
|
Sun Jun 22, 2025 5:00 PM
|
||||||
|
|
||||||
|
Last class: Woodworking Tools 1: Intro to Saws
|
||||||
|
Sun Jun 22, 2025 2:00 PM
|
||||||
|
|
||||||
|
Member count: 464 Green: 408 Paused / expired: 1590
|
||||||
|
|
||||||
|
Card scans: 18
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[B] Back
|
||||||
|
```
|
||||||
|
|
|
@ -61,6 +61,6 @@ The data gets collected by a central Python script that process and stores it in
|
||||||
|
|
||||||
## InfluxDB Regrets
|
## InfluxDB Regrets
|
||||||
|
|
||||||
My biggest regret was using InfluxDB. It's a stupid database that I wouldn't recommend it to anyone. I ran into timezone issues with `group by time()`. It assumes the column data type is an integer if your sensor happens to send it a whole number at first and it won't let you change it. Their docs are a confusing mess. They dropped the SQL-like InfluxQL syntax for querying with a pipeline-like syntax called Flux in version 2.0. Debian's repos seem to be staying with version 1.x though. You can only delete data by time ranges, not values. It also logs every single thing to `/var/log/syslog` and there's no easy way to disable it (completely). They shut down InfluxDB cloud in Belgium and [didn't warn customers](https://community.influxdata.com/t/getting-weird-results-from-gcp-europe-west1/30615/7) before deleting all their data.
|
My biggest regret was using InfluxDB. It's a stupid database that I wouldn't recommend it to anyone. I ran into timezone issues with `group by time()`. It assumes the column data type is an integer if your sensor happens to send it a whole number at first and it won't let you change it. Their docs are a confusing mess. They dropped the SQL-like InfluxQL syntax for querying with a pipeline-like syntax called Flux in version 2.0. Debian's repos seem to be staying with version 1.x though. You can only delete data by time ranges, not values. It also logs every single thing to `/var/log/syslog` and there's no easy way to disable it (completely). They shut down InfluxDB cloud in Belgium and [didn't warn customers](https://community.influxdata.com/t/getting-weird-results-from-gcp-europe-west1/30615/7) before deleting all their data. They changed schemas again in version 3.x and made useful features closed-source. Read the comments [here](https://news.t0.vc/TUTF/c#doctoboggan1750217574).
|
||||||
|
|
||||||
Just stick to SQLite or Postgres.
|
Just stick to SQLite or Postgres.
|
||||||
|
|
BIN
content/media/protovac1.png
Normal file
BIN
content/media/protovac1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1001 KiB |
Loading…
Reference in New Issue
Block a user