Especially convenient when you need to transmit the file over some untrusted medium like email, or if you just want to dump it in some cloud storage service and not worry about potential snooping.
281 karma · joined May 31, 2019
Especially convenient when you need to transmit the file over some untrusted medium like email, or if you just want to dump it in some cloud storage service and not worry about potential snooping.
I have a suspicion that this will prove to be a better abstraction than application-level encryption for everything. If I'm right, I would expect things to naturally start migrating in that direction over time. We'll see!
* They already have some pretty deep Rust experience on staff
* They were already dissatisfied with the performance penalty from Lua's GC, so Go's GC was presumably unattractive as well
* Rust is worth more internet points than Go (just kidding, mostly)
In fact, the Discord UI says as much: "Don't [convert your server to Community] if your server is just for you and a few friends. Community servers are for admins who are building larger spaces where people with shared interests can come together."
It's a lot more than that. Addimg a persistent message history and multi-device identities to IRC is pretty huge, otherwise bouncers would never have existed.
And the number of paying customers shows that people are, in fact, very willing to pay for it. Slack just really sucks at b2b marketing, which is why Teams eclipsed them so quickly.
Compared to Tailscale the main weak point of these clones seems to be ACLs. Tailscale's system is very robust and surprisingly simple. The others I've seen are less well developed. I'm sure they will get there in time, but for now Tailscale is definitely the best if you want to control access.
By the latter I mean mostly the decision to eliminate base play, i.e. gens/turrets/invs mean basically nothing because you spawn in your load out. Also, the jetting/skiing physics are kinda wonky, in ways that I think negatively impacted gameplay.
* Small, scrappy team taking on the big incumbents that everybody hates (AWS)
* Heavy focus on efficiency / latency
* Deep expertise in their areas of focus
* Lots of Rust
* Chill, non-corporate-y writing style
I won't talk much about ACLs since if you're the only user on your VPN, they don't matter. E.g. I use Tailscale but I don't use ACLs because who am I going to block from connecting to what? Am I concerned about my server trying to compromise my Raspberry Pi? (Maybe I should be, but life's too short so I don't bother.)
Automatic peer configuration is a pretty killer feature, though. If you're just running plain vanilla Wireguard, then you have to manually copy keys between every pair of devices that need to be able to talk to each other. That's fine if you only have a few devices, or if you have a large number of devices but you're happy to use a hub-and-spoke model where each "client" only talks to the hub, and the hub routes all traffic. But once your number of devices starts to grow, or you decide you want direct links instead of hub-and-spoke, it can start to get unpleasant.
NAT holepunching may seem unnecessary if you're used to having a VPN hub and just port-forwarding to it. But it opens up a whole set of possibilities that would just be non-starters without it. Just off the top of my head, here are some things that I would consider easy with Tailscale but cumbersome-to-impossible without:
1. Not having to worry about static IP assignments on my LAN. Admittedly, this is more of a convenience than a true barrier to anything, but with vanilla wireguard one of the devices needs to be able to initiate the connection, meaning that the other has to be able to receive unsolicted traffic on some port. Normally I'd do that with port forwarding, but all of the port forwarding I've ever done requires a fixed internal IP to which to forward the port. Instead, with Tailscale, you can just plug in your server/RPi/whatever and forget about it.
2. Similarly, you can take advantage of this to get a window into a network that you don't control. (It sounds bad when I put it that way.) Say you've got a relative a long ways away, and they're constantly calling you for help with their network and you're constantly walking them through how to fiddle with their router settings or something - with Tailscale, you could just preconfigure a Raspberry Pi, ship it over, and not have to worry about being able to connect to it once they plug it in. Voila, you have an entrypoint into Grandma's network or whatever.
3. Self-hosting afficionados like myself tend to turn to "can I put a thing on a server somewhere" as a solution to many problems involving cross-device communication: file synchronization is an obvious example. But what if all the devices could seamlessly talk to each other, anywhere and anytime? Then you could pop, say, Syncthing on each device and not have to worry about having a server up.
Tailscale also has some extra goodies like being able to share a device to someone else's Tailnet, so if you run (say) a Plex server and you want to let someone else talk to it without exposing it to the greater internet that's pretty easy.
Their "Magic DNS" feature is also quite convenient - I used to pride myself on being able to remember all the IPs I had assigned to all my network-connected stuff and therefore not needing DNS, but since I've started using Tailscale I've found myself defaulting to DNS names more and more without ever even consciously deciding on it. Words are just more memorable than numbers, there's no need to fight it.
All that said, if none of those use cases seem compelling to you then maybe Tailscale just isn't for you. Different strokes for different folks.
In return, of course, you get a style of concurrency that tends to be much easier to reason about and much less prone to subtle bugs than traditional preemptive multitasking.
Whether that tradeoff is worth it is obviously very dependent on the particular situation.
That they also give you a quick-and-easy "here's just the recipe" page is just an added bonus, for me.
IMO huddles happened because the pandemic moved so many more people remote that the need for a water-cooler replacement became much more obvious.
For example, Swarm secrets can only be exposed as files, not as environment variables. You can argue this is more secure because file permissions are more granular than env vars, but IMO that's a silly argument in a container context because containers are almost always single-user to begin with. Moreover, the vast majority of containerized applications expect their secrets in env vars, so you have to resort to fragile entry point wrappers if you want to make use of Swarm secrets.
One possible explanation (that supports the author's main thesis) would be that three out of five of these are unlikely to be the main language for a project, but rather a supporting language. In other words, SQL and shell are just as likely to show up in a green-field project as in a brown-field project, because we still use SQL to communicate with database same as 20 years ago, and we still use shell scripts to tie it all together.
No idea how one would test this hypothesis, however. And I still don't have an explanation for why Scala and Haskell are both loved and hated.