# A `bsky.app` feed for Tcl/Tk posts
Written in Tcl, using Jetstream.
You could probably base your own feeds on this. I've tried to make the source code for
this relatively straightforward.
Deployed @ <https://bsky.app/profile/aleteoryx.me/feed/tclposting>.
Makes heavy use of `tcllib` and `tcltls`, both need to be installed for it to work.
Run `main.tcl` with a configured config as the argument.
All paths are resolved relative to the install directory.
This implementation doesn't support `did:plc:` feedGenerator IDs because im too lazy.
`bin/up.tcl` is a rough carbon copy of the `scripts/publishFeedGen.ts` present in
the official example repo.
## Directory Structure
- `/bin` - misc scripts
- `/lib` - code used only by `/bin`
- `/src` - application code
- `/src/algos` - algorithms, `*.tcl` is autoloaded, see `src/algos.tcl` for details.
## Potential Improvements
- there's something up with the websocket implementation (`src/ws.tcl`)?
we get disconnected frequently.
- `src/jetstream.tcl` solves this with reconnection code, but it doesn't
send a cursor, so posts may get missed.
- said reconnection code is god-awful, and would benefit from a refactor
- there's probably not a foolproof way to deal with the fact that TCL is
a brand, but it would be nice
- `src/httpd.tcl` is just enough webserver to handle requests, and very
little else. it's unfit for exposure to the public internet. this is
low-prio cause it works fine behind mod_proxy.
- the API for `lib/atpagent.tcl` could be nicer, but I don't feel like
doing codegen.
- `src/httpd.tcl`'s API should probably be subcommand-based instead of
token-based, to fit `lib/atpagent.tcl`
- a way to check against labellers when intaking posts maybe