100 karma · joined January 21, 2014
"This movement is designed to double the speed by gears of equal diameters and numbers of teeth—a result once generally supposed to be impossible. Six bevel-gears are employed..."
1. This is the simplest one - if the memory being accessed is in a cache (L1/L2, or page in TLB), the function will take a significantly shorter time to execute. If movfuscator achieves conditional execution by manipulating index registers to perform idempotent operations, this will be very easy to detect.
2. Prefetching - if movfuscator reads memory sequentially with a detectable stride, prefetching will shorten the execution time.
3. Write combining - if the code writes to nearby addresses (same cache line), the CPU will combine them to a single write. This will cause a measurable timing difference.
EDIT: One more: Store forwarding - if the code writes to a memory address and reads it soon, the CPU may bypass the memory access (and even cache access) completely.
- User-specific bin folder ~/LocalApps (with lots of scripts)
- Projects etc. in a GoCryptFS-encrypted directory synced with Syncthing with NAS (with NFS+Kerberos on my desktop rather than Syncthing). Vendor-directories (/vendor/, /node_modules/) are not encrypted as not to slow down development, they are bind-mounted to a cleartext directory.
- PDFs, MP3s, etc. in Dropbox
1. Program informs the terminal that it supports "extended keyboard input". This would be done with an escape code, much like bracketed paste.
2. Terminal informs the program that it is now enabled.
3. Terminal informs the program of the initial modifier key state.
4. When the user presses a key (including modifiers), it is sent in a format that standardizes over all the commonly used key codes. Also, if the key represents a Unicode codepoint, that is sent as well. E.g. (mod-status-at-key-press)(key-code)(utf8-char-or-null)(null-terminator).
5. When the user releases a key, a similar message would be sent.
6. When the program exits (or a shell runs another program), it asks the terminal to disable "extended keyboard input"Hardware is Lenovo Thinkpad Yoga 12".
Dev tools are vim + tmux + zsh, PHP + nginx for work and Clang + CMake for personal projects.
[0] https://github.com/Shougo/unite.vim [1] https://github.com/Shougo/vimfiler.vim [2] https://github.com/ggreer/the_silver_searcher
This might lead to C++ library vendors not implementing the standard and requiring using a third party library, perhaps later integrating them into their own libraries.
Thinking about it, it is not probably a bad thing, it will just take longer than with other parts of the standard. Of course, this is just pure speculation and things might turn out very differently.
The standards committee is conserned about portability, at least on a technical level. I wonder what their take is on portability issues caused by license terms.