HNHacker News
TopNewBestAskShowJobs

bradfitz

5,555 karma · joined January 29, 2011

https://bradfitz.com/

Made LiveJournal, OpenID, memcached, etc.

12+ years at Google (Social, Android performance, 10+ years on Go),

Now Tailscale since Jan 2020

submissionscomments
bradfitz··on History LLMs: Models trained exclusively on pre-1913 texts
I seem to recall reading that as a kid too, but I can't find it now. I keep finding references to "Encyclopedia Brown, Boy Detective" about a Civil War sword being fake (instead of a Great War one), but with the same plot I'd remembered.
bradfitz··on Go-boot: bare metal Go UEFI boot manager
I've been idly following this stuff on & off for years, but I never saw proving a point "instead of using Rust" as one of the motivations of the project. Was that ever stated anywhere?
bradfitz··on Texas is suing all of the big TV makers for spying on what you watch
Until they start using Sidewalk/LPWAN type things automatically instead of your home WiFi.
bradfitz··on GPT-5.2
I had to go look that up! I assume that's https://en.wikipedia.org/wiki/The_Feeling_of_Power ? (Not a janitor, but "a low grade Technician"?)
bradfitz··on Booting Linux in QEMU and Writing PID 1 in Go to Illustrate Kernel as Program
Related, I gave a 6 minute lightning talk about writing tests in Go that use the test binary itself as the PID 1 under an emulated Linux in QEMU:

https://docs.google.com/presentation/d/1rAAyOTCsB8GLbMgI0CAb...

https://www.youtube.com/watch?v=69Zy77O-BUM

bradfitz··on DNS LOC Record (2014)
How many of those additional 1,643 were a result of your 2014 blog post? :)
bradfitz··on AirPods libreated from Apple's ecosystem
I assume it's intentional, playing on "libre" (as in libre software, not just gratis software)
bradfitz··on Perkeep – Personal storage system for life
I'm a co-author of tsidp, btw. You don't need tsidp with a Tailscale-native app: you already know the identity of the peer. tsidp is useful for bridging from Tailscale auth to something that's unaware of Tailscale.
bradfitz··on Perkeep – Personal storage system for life
Primarily using Tailscale for authentication as well, replacing perkeep's other auth methods.
bradfitz··on Tailscale Peer Relays
Tailscale employee here.

I kinda doubt we'll end up charging for it (as it costs us ~nothing except support costs, which are real), but it's easier to make it free later when it's GA rather than rug pull on people and start charging for it in the future if we start it out free+unlimited.

bradfitz··on JetKVM – Control any computer remotely
It doesn't. But judging from forum posts, it seems like it was a common failure mode and it might've been fixed in later hardware revs.
bradfitz··on JetKVM – Control any computer remotely
I ordered three and they all worked and then one died. Fortunately they replaced it, though.
bradfitz··on RIP pthread_cancel
Go does. And it supports timeouts and cancelation.
bradfitz··on Traps to Developers
Go strings are just bytes. There is no Unicode or encodings.
bradfitz··on Traps to Developers
> Golang use UTF-8 for in-memory string.

Nope. It’s just bytes with no encoding.

https://go.dev/blog/strings

bradfitz··on Dumb Pipe
There's no WebRTC in Tailscale.
bradfitz··on The sad state of font rendering on Linux (2018)
I haven't. I have 5K and 6K monitors. That's indeed privileged, but only for a bit until that's soon commonplace and cheap. So this all sounds like a very temporary problem at this point for something so subjective. Every time this topic comes up it's the same "but I like the look of $OS rendering the best" comments.
bradfitz··on The sad state of font rendering on Linux (2018)
I haven't used displays with under ~215ppi in over 10 years. I find these subpixel opinion discussions still ongoing very... quaint. :)
bradfitz··on Artisanal handcrafted Git repositories
My recent horror from some git work was discovering how git sorts its tree objects.

The docs just say to sort by C locale (byte-order sorting). Easy. Except git was sometimes rejecting my packfiles as being bogus per its fsck code, saying my trees were misordered.

TURNS OUT THERE'S AN UNDOCUMENTED RULE: you need to append an implicit forward slash to directory tree entry names before you sort them.

That forward slash is not encoded in the tree object, nor is the type of the entry. You just put the 20 byte SHA1 hash, which is to either a blob or a hash (or a commit for submodules).

So you can have one directory with directory "testing" and file "testing.md" and it'll sort differently than a directory with two files "testing" and "testing.md".

You can see a repro at https://gist.github.com/bradfitz/4751c58b07b57ff303cbfec3e39...

(So to verify whether a tree object is formatted correctly, you need to have the blobs of all the entries in the tree, at least one level)

bradfitz··on The FIPS 140-3 Go Cryptographic Module
Congrats, Filippo!
bradfitz··on Petabit-class transmission over > 1000 km using standard 19-core optical fiber
Because your switch is mapping a 4 tuple to a certain link and these people aren't, is my guess.
bradfitz··on Engineer creates ad block for the real world with augmented reality glasses
Pollution, advertising, and extra traffic all in one! Puke.
bradfitz··on A new generation of Tailscale access controls
Yes.
bradfitz··on Tailscale 4via6 – Connect Edge Deployments at Scale
> that doesn't work with UDP or even ping?

I never said it didn't work with UDP or ping. I described what it does differently for TCP.

Anyway, I'm sorry we offended you with its name.

I personally think it would've been more offensive to use an existing spec name and then not implement the spec of that name perfectly. (which is likely if our needs/goals only 90% overlap with the spec we pick)

At least if we screw up this implementation, we didn't tarnish anybody else's spec or its name.

bradfitz··on Tailscale 4via6 – Connect Edge Deployments at Scale
I'm largely responsible for this, so I'll try to answer.

Technically it's not NAT64 today. Different prefix for one, but it's also not translated at the IP layer (yet). For TCP, we terminate the TCP in tailscaled and make a new TCP connection out and switch them together, so packets are not 1:1 end-to-end.

We also had grander plans for the 32 "site-id" bits in the middle there. Instead of just a 8-bit (now 16-bit) "site ID" number in there, you could actually put the 32-bit CGNAT IPv4 address of any peer of yours, and then access its IPv4 space relative to that node, without any configuration.

Say you have an Apple TV plugged in at home.

Then you're at a coffee shop and want to access something on your LAN and don't have a subnet router set up.

You should be able to `ssh 10-0-0-5-via-appletv.foo-bar.ts.net` and have MagicDNS map that "appletv" as the "Site ID" and put its 32-bit CGNAT address in, and then parse out the 10.0.0.5 as the lower 32-bits, and then have Tailscale route your packets via your home Apple TV node.

All subject to ACLs, of course, but we could make it a default or easy-to-enable recommended default that you could do such things as an admin for your self-owned devices.

So why it's called "4via6"? That was just kinda a temporary internal name that ended up leaking out to docs/KB and now a blog post, apparently. :)

bradfitz··on Vacheron Constantin breaks the world record for most complicated wristwatch
"most complicated" as if that's something's to be proud of! :)
bradfitz··on An open source, self-hosted implementation of the Tailscale control server
Ha! But seriously, it's written in Go, so probably.
bradfitz··on Porting Tailscale to Plan 9
The Plan 9 port of Go _was_ not particularly healthy. It is now.

Fixing Go to not special case Plan 9 benefits all platforms--- all operating systems use the same code paths now, making the code simpler.

bradfitz··on Porting Tailscale to Plan 9
Indeed. We ran out of time :)
bradfitz··on Porting Tailscale to Plan 9
If your 9front machine is in a position on the network whereby it could serve a NAT, you don't have many networking problems at that point. Almost all operating systems can do NAT in such a position.

I'm talking about two machines deep in somebody else's network or where you don't control the router/NAT.

← PreviousPage 2 of 16Next →