One of my favorite vim plugins is https://github.com/sjl/gundo.vim , which can open a pane showing the actual tree of versions, including at what time the version changed. j and k can move around in the tree, and the pane with the file will show what it was at a given time. I've definitely used it to pull out a version of a file as it existed an hour ago...
I noticed the security implications of "memory that doesn't always behave like memory" when that paper came out a few months ago and was discussed briefly on HN:
Yeah, it definitely needs to be kept secret. Since you specified that A and B can have a set-up phase before C is around, the initial setup is fairly straightforward.
Depending on what the system is used for, how valuable breaking into it would be, and how long you expect it to be up, you might need to rotate the key every so often, by having A and B agree on a new key. This is a little more complicated; since B now needs to check C's HMACs against two keys (the original and the new one) until every message signed by the original key has expired.
Ah, I see - thanks for this clarification. Alpha server and Beta server can actually communicate after the initial setup, but I didn't want this to be a consideration in my scenario, since I don't want any such communication to be required during each permission message transaction (once per hour or day, etc. would of course be fine).
Perhaps, I will provide an API method for automatically expiring an HMAC and fetching a new one. During this rollover period, messages sent using the old HMAC will be allowed to fail, since they can just come get a new copy from Alpha server.
That's still fairly straightforward; change the message A signs to "I trust Gamma. Nonce: whatever. Valid Until: DateTime". B should then 1) check the signature and 2) check the datetime (in that order).
By reading the article I would have thought it would be possible to walk down the street while pointing at a house and the device would show if/where someone is hiding but after reading this FAQ I don't think this device is working so well as people expect.
Maybe in houses with wooden walls but not in buildings with thick brick or concrete steal enhanced walls. They even recommend to press the device against the wall/floor to get the best results. This means that the device can be used to see if somebody is behind a specific wall but not just somewhere in the house a couple of rooms away.
In the warmer parts of the country, you are not looking at a lot of metal/brick. In California for example, you are looking at a lot of plywood and insulation mostly.
I've been writing a bunch of branch-free code recently, so I took a crack at it. In my world, data-dependent table lookups might as well be branches, so let's eliminate those as well.
Here's a fizzbuzz(char*, int) function that can accept any number up to 99999999, and will put the correct FizzBuzz result into the provided buffer (either the printed number, "Fizz ", " Buzz", or "FizzBuzz"). As promised, it's loop-free, and as a bonus it should be constant-time as well:
Well, in this draft linked here they spell 'server' as 'sever' in one instance so I guess that evens up the score. But the GGP had a point, referrer is a troublesome bit in many ways and he seemed to be aware of the spelling error so I chose to answer the meat of the item rather than to take it in the most simplistic way (after all, making spelling errors like this really does happen, one guy I knew had sandblasted 150 glass doors with a text when I happened to walk by and pointed out that pneumatical has an 'n' in the second position (and not an 'm'...). For some reason he didn't seem all that happy.
The score most certainly not even. HTTP is still way, way behind. There's a qualitative difference between a spelling error in the document describing the protocol and a spelling error in the protocol itself. In my opinion, the substantive point wasn't about the mechanics of referrers, but that the lack of care and attention to detail demonstrated by "Referer" is strong evidence that HTTP is not as elegant as you claim.
I worked a bit for a small newspaper in Amsterdam in the 1980's, called 'the paper about Holland'. It was written by two UK journalists, Abi Daruvalla and Mark Fuller.
We were pretty good at proofreading because spell checkers were non-existent at the time, we barely had a word processor. It would probably surprise you that as a non-native English speaker I would catch typos (not grammar errors) much quicker than the rest of the (native speakers/writers) crew. We figured it was because they didn't actually read the words where I had to. They'd mentally fill in the word that should have been there which allowed them to proofread a piece with three individuals and I'd still catch the mistakes in the spelling.
In spite of that we managed to ship two issues labeled September in one year, and that's with everybody being so focused on the spelling that nobody bothered to check the dates.
I think you're reading way too much in a single letter spelling error (which I spotted the first time I saw the word), the common excuse is that the spell checker used by the person that wrote that part did not include a spelling for 'referrer' (and if it had it would have probably ignored it with the leading capital anyway...).
I've seen some pretty elegant code with terrible spelling errors in the variable names, it's certainly not great to have a spelling error in a text protocol. But I would not use that single letter mistake as a yardstick by which to measure the entire protocol, that seems all too easy a way to discard something that has stood the test of time very well.
Imaginary meat. Sure, you can talk about the implications of the actual header, but you must first acknowledge that this has nothing whatsoever to do with the context of 'elegance'.
It's a little less clear than that, unfortunately. Apple chose to not support third-party Bluetooth LE dongles, which might be a reasonable engineering limitation. However, if you upgrade your Mac with a BT-LE capable board used by other Continuity-capable Macs, you still can't use Continuity by default; you need to patch some kexts and disable kernel kext signing[1].
It really does feel like Apple blacklisted older machines from using Continuity; only third-party kext hacking can get things started again.
CLFLUSH is definitely unprivileged - I made use of it on a recent project (evicting outbound messages from a core's cache cut cash misses meaningfully).
Just to note that Internet Explorer does this slightly differently, using VBScript to call the local crypto API as it doesn't support <keygen>. It's functionally equivalent though.