Just made a synthetic test to generate 128 .WAV files (large, to avoid staying in cache) that when summed, produce a nice clean sine wave, and when any are missing, produce noise. REAPER seems to have no problem playing them all at once, at least on my fast laptop or desktop, with Win7 x64. Mmmm. It's only 18MB/sec, even.
Riding the tube listening to 'tame impala - half full glass of wine', and I can't imagine that any of the other people who are listening to their headphones are enjoying themselves more than this. Not possible.
This is a good video for anybody who does software development:
Some people I know don't like Linus when they've watch this, but I think he's awesome, even though he called me stupid and ugly. He was right, I guess.
Using SVN was a great thing for me, as I'd constantly diff my work to make sure it was what I wanted. It also (obviously) enables collaboration.
Git, however, is utterly awesome, an order of magnitude more useful.
Branches in SVN were a huge pain, we rarely used them. In Git, you can actually
use them, effectively and without having to deal with nonsense, it is fantastic.
It is fast, efficient at storing data, easy to synchronize and automate backups,
I love it.
The only downside I see is that TortoiseSVN doesn't exist for it, TortoiseGit is getting there, from what I hear, but I've just been using the command line thus far.
Anyway, I'm just giddy with it. I would say life changing, but that would be overdramatic. It is work-changing, I guess.
I am posting this in case anybody debugging something needs to find it -- I did find mention of it on some Java related site, but nothing conclusive. This may affect VC2010, too, but I haven't tested it.
While VC 2005/2008 targeting x64 generates SSE code for floating point code, fmod() still uses the x87 FPU, and more importantly it assumes that the divide by 0 exception flag is clear going in (meaning if it is set prior to the call, the call will throw an exception or return #.IND regardless of the input). Apparently they assume that since the compiler won't possibly generate code that would cause the divide by 0 floating point exception flag to be set, then it would safe to assume that flag will always be clear. Or it could be a typo. If you use assembly code, or load a module compiled with another compiler that generates x87 code, this can be a huge problem.
SECTION .text
global asmfunc
asmfunc:
fld1
fldz
fdivp
fstp st0
ret
Compiling this (cl.exe hi.cpp hihi.obj) and running it does not print 1.0, as it should.
The solution we use is to call 'fclex' after any code that might use the FPU. Or not use fmod(). Or call fclex before fmod() every time. I should note that if you use ICC with VC200x, it doesn't have this problem (it presumably has a faster, correct fmod() implementation).