111 karma · joined April 11, 2011
Oh, "TLS sucks" is a whole separate blog post for another day ;-)
Mature: Well, it's been running nightly for years for me, and has saved the day on a few occasions when I've had to restore stuff from the vault.
Reliable: The only data I've lost was when a vault disk actually died, and I hadn't replicated it because, well, I was happier losing some history sometimes rather than buying more disk for that use case. However, when I get archive mode in production, I'm going to build a better vault replication solution than rsync!
Largely, Ugarit is ticking along nicely in my production setup, doing backups of my servers; when I get time I work on (a) performance, which is still weak in some cases and (b) archive mode, which is a fun spare-time project rather than something urgent I use. But the core case of doing backups Just Works(tm).
UPDATE principals SET password='
Then I went and did all the stuff required to work out the correctly hashed and salted password format, then finally triumphantly pasted it in, followed by '; and newline.
FORGOT THE WHERE CLAUSE.
(Luckily, we had nightly backups as pg_dump files so I could just find the section full of "INSERT INTO principals..." lines and paste in a rename of the old table, the CREATE TABLE from the dump, and all the INSERT INTOs, and it was back in under a minute - short enough that anybody who got a login failure tried again and then it worked, as we didn't get any phonecalls). It was a most upsetting experience for me, however...
It agrees with your points - a split into applied and theoretical would probably be a good thing. The programmers I work with in the UK seem to come from physics/mathematics backgrounds, or electronic engineering, with just a few CS graduates. All of them (even the CS graduates) feel that a large proportion of what they learnt on the degree is irrelevant to their career going forwards. A degree focussing on practical software engineering would probably be very useful!
There is indeed a scaling issue with NAT/SOCKS as both need connection state on the gateway device - but, I suspect, the dropping cost of hardware versus the rising cost of IPv4s will favour more hardware. The real question is how it'll stack up against the cost of dropping IPv4 for IPv6 (not the cost of adding IPv6 support alongside IPv4, which isn't that hard).
Which is why I suggested setting up SOCKS as a competitor to NAT, as it lets the client ask the gateway device for an external IP/PORT to do peer-to-peer communications over... without needing to set up IPv6 :-)
So it's in my best interests to wait until I have to.
Which means I'll continue to use IPv4.
Which means the sites I want to connect to aren't motivated to turn off IPv4.
Ad infinitum.
* Why do clients - home ADSL users, small offices, wifi hotspots - want to bother with IPv6? It offers them no benefit for at least several years. Everything that's good is IPv4 only, or maybe IPv4 and IPv6. All they need is one external IPv4 - or they can share an upstream IPv4 via carrier-grade NAT, so they needn't bear any "rising cost" of IPv4.
* Why should important sites really bother about IPv6? They already have large IPv4 allocations, and there's endless tricks to make better use of them (they can vhost any HTTP-based service, for a start). Moving to IPv6 will make it easier for startups to get IPs to compete with them. I'm not sure why some of them have offered limited IPv6 access (Facebook's is just a proxy that forwards on the connections via IPv4, it seems), but they don't seem to maintain them well (bit.ly was inaccessible via IPv6 all day; nobody seemed to notice) - I suspect they're mainly "20% time" projects.
* Just how near is the point where it's a good idea to drop IPv4, for clients or servers? There's a lot of legacy networks to shift... more so on the client end than on the server end, which is dominated by a "top 100 sites" or so that could all conceivably add IPv6 support with little effort.
What would I propose for that?
* Using them more efficiently by having protocols support endpoint identification within a server (HTTP supports virtual hosting, SSL has spreading support for host identification in the SSL handshake process, SMTP has been fine with it for years, etc).
* Using incoming connection proxies / load balancers to have a small number of external IPs, connections to which are handled by a large number of backend servers
* Perhaps in the longer run, better usage of SRV records so that well-known ports fall into disuse, and server ports can be assigned by the administrator and then placed into the SRV record for that service, in effect making IPv4 addresses be 48 bits long.
I have serious concerns with IPv6's practicality, even with 6in4 et al. Is trying to implement it just flogging a dead horse?
If somebody comes up with a way to actually get IPv6-only nodes widespread - not just nodes with joint IPv4 and IPv6 machines - then I'll have hope for mainstream IPv6. But while every client and server has to have IPv4 as well to be of any use, then what benefit does having IPv6 connectivity give it?
The real issue here is running out of IPv4s.
We don't really need more IPs for clients - NAT fixes that problem (I just argue that SOCKS could be a better solution, that can work alongside NAT).
We need more IPs for servers. The IPv6 solution is to move clients and servers to IPv6. 6in4 gets around needing to migrate the ISP as well, which is good, but it's still a heap of work that has to be done by people who don't get any material benefit out of it for years, at best. So it won't happen.
And that's it. There's no need for ISPs to route you IPv6, or to set up tunnels. No need for dual stacks and AAAA records. No need for service providers to provide IPv6 access to their servers.
SOCKS is less restrictive than NAT - the client can know about it and find their external IP/port, it allows incoming connections, it lets the gateway device authenticate users and give them differing quality of service, etc.