HNHacker News
TopNewBestAskShowJobs

TheFlyingFish

281 karma · joined May 31, 2019

submissionscomments
TheFlyingFish··on Ask HN: What do you use for encrypting your personal stuff?
For small one-off encryption use cases (i.e. encrypt a single file) I use age: https://github.com/filosottile/age

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.

TheFlyingFish··on The HTTP crash course nobody asked for
I agree that sending cleartext over the internet in this day and age is a bad idea. But "encrypt all communication at the application layer" doesn't have to be the only solution. There's also "encrypt communication at the <i>network</i> layer," as discussed here for example: https://tailscale.com/blog/remembering-the-lan/

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!

TheFlyingFish··on Cppfront, Herb Sutter's proposal for a new C++ syntax
I'm an English speaker, so I'm curious: Italian technically requires some accent marks, right? Do you have a quick way to do those from a US layout, or do you just ignore them in casual conversation the way people tend to ignore capitals and (some) punctuation?
TheFlyingFish··on Forum Channels: A space for organized conversations
I think we just have a difference of opinion (or a different use case) when it comes to threaded channels. Personally, I don't have any use for them in any of the small Discord groups that I'm in, so I'm perfectly happy with having them classed alongside "Rules channels" and the like. Based on their decision here I suspect that Discord sees it the same way. Obviously, you feel differently.
TheFlyingFish··on Pingora, the proxy that connects Cloudflare to the Internet
Not from Cloudflare, but at a guess:

* 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)

TheFlyingFish··on Forum Channels: A space for organized conversations
My guess is that a lot of small, tightly-knit (i.e. everybody knows everybody already) servers don't need or want all of the extra "community" stuff. Community features seem like they're mostly for managing loosely-knit communities that are big enough to need different trust levels, onboarding procedures, announcements etc.

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."

TheFlyingFish··on Slack’s free plan change is causing an exodus
>It was a prettification of IRC, which of course nobody pays one fuck of a cent for

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.

TheFlyingFish··on Add ability to choose a custom coordination server
NetMaker is another: https://www.netmaker.org/

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.

TheFlyingFish··on On Being Rich-ish: Lessons I learned becoming suddenly middle-class
Living on your own vs. having a family (even just a spouse) makes a huge difference here. Feeding just-yourself vs. feeding yourself-plus-others can make the difference between "Groceries are at the bottom of my expense list" and "groceries are my second-biggest monthly expense".
TheFlyingFish··on Ask HN: What game do you wish existed?
IMO for two reasons, separated by player type. Casual players were turned off by the grind, and experienced players (read: players of former games) were turned off by the dumbed-down mechanics as compared to previous games.

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.

TheFlyingFish··on Ask HN: What game do you wish existed?
Oh cool! I played for a while back in the post-TribesNext days, but haven't touched it in years. Are there still pubs at all, or do you pretty much have to wait for a scheduled game?
TheFlyingFish··on Fly Machines: An API for Fast-Booting VMs
I think it just pushes a whole bunch of the HN zeitgeist's happy buttons:

* 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

TheFlyingFish··on Impressions from a first-time Mac user
Hasn't this been the case since Windows 7? I know 7/10 had the option to disable it, and it sounds like Windows 11 has removed that choice, but it's been clear what Microsoft has had in mind for a while now.
TheFlyingFish··on How our free plan stays free
Tailscale has a Synology package. You just install, log in, and there you go.
TheFlyingFish··on How our free plan stays free
Tailscale has three main pieces of functionality over vanilla Wireguard: Automatic peer configuration, NAT holepunching, and network ACLs.

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.

TheFlyingFish··on SingleFile: Save a complete web page into a single HTML file
I remember using HTTrack for this a while back. Still have a few of those sites lying around, I think.
TheFlyingFish··on Chris Lattner left Swift core team
I think async creates a mini-language within _any_ language, i.e. the whole what-color-is-your-function problem. It's turtles all the way down or nothing.

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.

TheFlyingFish··on SQLite 3.38 Released
SQLite is an embedded database rather than client-server, meaning runs within the Python interpreter. It's compiled (or at least linked) into the interpreter binary, meaning the version is determined at compile time. A given build of the Python interpreter has only one version of SQLite present in it.
TheFlyingFish··on Google Search Is Dying
Somebody who worked at a winery once told me that the flavors they mention on the bottle are actually what the wine is missing, and they name them in the hope that the power of suggestion give you a more balanced impression.
TheFlyingFish··on Bolt founder on Stripe/YC
Or have an unfortunate habit of hosting their sites on mind-numbingly inefficient architectures. E.g. vanilla Wordpress seems to run 500-1000ms TTFB on a standard shared hosting plan.
TheFlyingFish··on Why Facebook Sucks (2007)
At least as noteworthy for its prescience regarding Facebook's evil as for its lack of prescience regarding Google's. Boy, Google was really awesome back in the late 00's, wasn't it?
TheFlyingFish··on Firefox 96
The thing I've never understood about Opera is - what were they missing? They pioneered a ton of features that are now ubiquitous, like tabs and "speed dial," but somehow never managed to gain much market share. Why not?
TheFlyingFish··on Show HN: OnlyRecipe.app – Remove clutter from recipe sites
Agreed. I would even be ok with the SE format if they didn't split out the main recipe from the backstory, because with them the backstory is usually something of substance. They often go through multiple iterations, explaining what tweaks they introduced and what the effects were, so that you can understand not only the final recipe but also the principles that went into making it.

That they also give you a quick-and-easy "here's just the recipe" page is just an added bonus, for me.

TheFlyingFish··on Proof of stake is incapable of producing a consensus
Gold, silver and other metal coins were usually produced by a central (and government-controlled) mint, no? And counterfeit was harshly punished?
TheFlyingFish··on 55 GiB/s FizzBuzz
I actually disagree, at least about huddles. Huddles are a direct response to the low-friction nature of Discord voice channels (and arguably Teamspeak/Mumble/etc before Discord, although nothing else married text and voice channels quite as well before Discord.) It's almost silly how small of a difference there is between starting a huddle and a channel-wide "call" - the only difference is that it doesn't start out by "ringing" for everyone in the channel. But that tiny difference completely shifts the feeling from "this is a formal communication" to "we're all just hanging out and you can join if you want but no pressure."

IMO huddles happened because the pandemic moved so many more people remote that the need for a water-cooler replacement became much more obvious.

TheFlyingFish··on Internet of Snitches
Don't download actual CSAM, that's too questionable of a proposition. Just figure out how to manipulate innocuous images such that they trigger Apple's perceptual hashing algorithm. Then flood the web with those. If the false positives massively outweigh the true positives then eventually people will stop paying attention.
TheFlyingFish··on AWS's Egregious Egress
I run Docker Swarm on my homelab, but I honestly wouldn't touch it for production because it's lacking features that I find critical and doesn't show any signs of developing them soon.

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.

TheFlyingFish··on Please fix the AWS free tier before somebody gets hurt
I will gladly welcome the eventual IPv4 extinction, but unfortunately I'm pretty confident it won't happen for another 30 years.
TheFlyingFish··on Please fix the AWS free tier before somebody gets hurt
I think that's basically what Lightsail is supposed to be. I haven't used it myself, but from glancing at it they're pretty clearly targeting DO/Linode/Vultr etc.
TheFlyingFish··on Green vs. Brown Programming Languages
I'm particularly interested in why several languages show up on both lists, namely SQL, Scala, Haskell, Shell, and HTML if you count it.

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.

← PreviousPage 3 of 4Next →