I tried using this or a similar repo to set up a Tailscale exit node on Fly.io before.
The downside is that my traffic never went direct; it was always relayed via a Tailscale DERP node, as Fly.io machines were only accessible via anycast, and so a direct connection from Tailscale on my machine to the exit node on Fly.io couldn't be established.
So performance wasn't as great (and I felt bad about using up Tailscale's DERP bandwidth, as a free user).
Fly.io or not, this was an issue I always ran into with Tailscale.
They talk a big game about NAT punching, and using various UDP shenanigans to get around P2P connection formation issues, but at the end of the day, most of my connections were via DERP, even with fairly trivial firewall configurations.
Tailscale works hard to do all this stuff automatically.
Possibly you'd have more luck on a network where your client can allow incoming UDP connections on the Tailscale port, and so the exit node would be able to establish a direct connection.
But for a Tailscale peer I have running on AWS ECS, I can open the UDP port there, so a direct connection always happens regardless of what sort of network my Tailscale clients are on. I don't know if there's any Fly equivalent to get a direct connection to a UDP port.
Yes, fly.io allows you to expose a UDP port. See the fly.toml [1] in the repo. Make sure the tailscale port is pinned [2] to the exposed port (41641 in that case).
I just tested it again and the connections are made directly (after the first 2,3 packages go via DERP):
tailscale ping fly-ams
pong from fly-ams (100.96.123.32) via DERP(ams) in 15ms
pong from fly-ams (100.96.123.32) via [2604:1380:4601:d605:0:6c3b:eed5:1]:41641 in 12ms
tailscale status
100.96.123.32 fly-ams patte@ linux active; offers exit node; direct [2604:1380:4601:d605:0:6c3b:eed5:1]:41641
100.101.54.36 fly-hkg patte@ linux active; offers exit node; direct [2605:4c40:95:4eed:0:40f0:67b1:1]:41641
I switched to Joplin a few years ago, and it was able to import my notes from Evernote.
My existing Fastmail account gives me WebDAV file storage, and Joplin can use that as a sync backend. End-to-end encrypted.
There are clients for macOS and Android. Neither of which are as relentlessly buggy as text editing with Evernote. Web Clipper browser extension. All open source.
I've had zero regrets about switching away from Evernote.
Yeah, I'm in the same boat. I'm kinda confused about things like SSH and Funnel being moved to the Premium tier.
It feels a little odd that the Free tier lets you use Premium features indefinitely, but as soon as you get more colleagues onboard, you lose those features.
Unless you're looking carefully at the pricing page, you'd miss that Starter has many fewer features compared to Free.
Unfortunately, using Dagger for DI with Kotlin requires using the Kotlin annotation processor, kapt, which is still incredibly slow, and works non-incrementally.
If you value your build times or your sanity in the slightest, I'd recommend either severely limiting use of Dagger, e.g. by only using it in certain, small Gradle modules, or using a different DI solution.
I have only used Kotlin in the context of Android so far, and like the language — I wish Java had many of these features — but almost find it more of a pain in the ass than its worth for reasons like this (kapt). At some point, the build times get so bad I asked myself, am I being more productive having neat language features X,Y,Z or having 15sec build times (already too long) vs 2 minute build times (unbearable). Its like going from REPL driven development to something else.
While technically true, if the EU has no jurisdiction over you or your business, it's difficult for them to force compliance.
Another example of this is sales tax in the US. Several states have laws that tell the seller to collect and remit sales tax on any sales to residents within the state. But for sellers that have no physical presence in that state, the state has no ability to force them to actually do so (or to force them to open up their books and prove one way or the other).