Re-print of this one from circa a year ago: http://swizec.com/blog/why-programmers-work-at-night/swizec/...
I've been thinking on and off about this since I read it then; and I mostly agree with it.
Except for the 'bright screens' cause. In my case, the same work pattern happens if I'm reading a deep (but not too abstract) book, writing on paper, or doing some hardware work.
Which I found quite interesting, as the book case kind of matches the 'sleepy brain' cause, and the hardware part happens more when I already have a plan and I'm just building with almost no stop (maker-type activity?).