1. being connected to multiple communities and switching between them instantly
this can be of course simply replaced by connecting to different servers in a tabbed terminal and use the terminal's built-in cmd-1/2/... shortcut, which happens to be the same as in slack.
2. meta data about others, like their timezone or how to pronounce their name is quite important for distributed team work
this can be approximated by a world readable file on the chat server in every user's home, like .plan or motd files (https://github.com/ESWAT/john-carmack-plan-archive)
3. automatic idleness detection
im actually not sure how reliable is this even in slack, but in general, it can be useful, but im not sure how to solve it elegantly, when the chat runs remotely...
maybe we should just spawn a loop at the background, which gathers idleness status from the OS and uploads it when it changes, into world readable files and the remote clients can just check those file whenever they want.
4. extra status indication with automatic expiry, eg when someone is away from the keyboard, coz they are having lunch
we do use this feature often and it's a really helpful regarding when can we expect a response from someone.
again, quite simple to model this as a plain text file and we can even use emojis, to have a very similar effect to setting " lunch" on slack. ppl would need to know what's the emoji selector shortcut though... like cmd-ctrl-space on macos.
5. text search across all channels/rooms
assuming the chat is being logged into files, then a recursive (rip)grep could work to some extent, but then from the search results one might want to get back to the context of the result too.
6. threads
this complicates implementation a lot more, but we found it an obvious improvement over the single threaded IRC model of communication
7. having threads open on the side, so ppl can track 2 streams of comms at once at least
it would require starting the chat app multiple times and do some window management to see them side-by-side
now obviously all this can be done a lot simpler, but those implementations typically always lack somehow. not sure why is that...
see https://cancel.fm/ripcord/ or http://www.altme.com/what.html
the REBOL 3 programming language even had a quite full featured, text-mode chat built in: http://www.rebol.com/r3/docs/functions/chat.html !
The simplest approach to something like this is Apache homedirs or finger plan files [0]: you write some text in a file in your home directory and a service makes it accessible to anyone who connects to your machine. Apparently plan files were somewhat popular thing at one point; you could finger the machines at id Software and read what John Carmack was doing on any given week [1].
The problem with this approach is that the internet (not just the web) is not end-to-end. Assuming your ISP isn't using CGNAT, I have to:
- Punch a hole in my firewall or setup up a DMZ host. Unless my workstation is the only thing on my network and hooked directly into my modem, but nobody does that. Everybody has a LAN with private addressing.
- Setup dynamic DNS, since there's no guarantee that my ISP has given me a static address. In practice this isn't that bad, but if I lose power in a thunderstorm you need to have the same name you had before.
- Harden and update whatever service I run. It'll get probed regularly, and is a high value target since it presumably runs on the same machine where I run my password manager or buy things using I credit card.
A VPS is just a convenience and security measure here. You get a public IP address without any additional management (default-deny firewall, NAT) and can isolate your private data from the VPS which is more likely to be compromised.
The alternative would be to make a new network which gets rid of all the extra layers of management - just your machine, with a publicly accessible name that you can point people to. No smart network appliances in-between imposing NAT, DHCP, or firewalls beyond the one on your machine. I think there are P2P networks which work like this, or Tor if you give your machine a name in the .onion namespace. I don't know of any which are better on the security aspect though.
If we are gatekeeping, THIS (was) blogging like a hacker:
I never ended up going into games myself, but in no small part I owe my career to him.
As well as the Doom book, his plan files are a fascinating time capsule to go back over, particularly if you 'came of age' during that golden age of PC games development.
sudo apt install finger
finger [email protected]
finger [email protected]
sigh. his old ones have been archived https://github.com/ESWAT/john-carmack-plan-archiveFinger was really great microblogging platform.
There's an archive of John Carmack's .plan files here:
https://sites.google.com/site/steveyegge2/blog-rants
http://steve-yegge.blogspot.com/
Armin Ronacher's blog is also excellent:
For the Schemer, or the compiler hacker, Andy Wingo's blog is fantastic
For insights into debugging, kernels, and debugging kernels, Bredan Gregg's blog is fantastic.
http://www.brendangregg.com/blog/index.html
Finally, I wish to list a non-blog: and unblog, or perhaps the remnants of a blog once passed. This is an archive of John Carmack's .plan between 1996, and about 2005.
https://github.com/ESWAT/john-carmack-plan-archive
It is still a fascinating read.
Direct link to the 1998 file: https://github.com/ESWAT/john-carmack-plan-archive/blob/mast...