Programming requires maintaining focus for long stretches of time and the easiest way to get that focus is to enjoy the activity. As a result, virtually every developer I've met enjoys coding regardless of whether they like their current job or not. That doesn't translate into programming in your free time for everybody but it does for a lot of us.
The desire to use the same machine for work/pleasure isn't so much about the machine as it is about the setup on the machine. I don't particularly like to spend the half day or so getting my development environment set up on a new machine. Having a laptop means I don't have to set up/maintain/sync multiple development environments and I can work from wherever I like. I use a mac because MBP/MBAs have been quality machines for a decade, the shell environment is close enough, and everything works without my having to mess with it. I actually prefer linux desktop and tiled window managers but using them would mean I'd have to mess with things I don't care about.
The desire to use the same machine for work/pleasure isn't so much about the machine as it is about the setup on the machine. I don't particularly like to spend the half day or so getting my development environment set up on a new machine. Having a laptop means I don't have to set up/maintain/sync multiple development environments and I can work from wherever I like. I use a mac because MBP/MBAs have been quality machines for a decade, the shell environment is close enough, and everything works without my having to mess with it. I actually prefer linux desktop and tiled window managers but using them would mean I'd have to mess with things I don't care about.