Whenever I do imperative programming I'm always conscious of time. Each statement may change state and I'm aware of how that can affect the system. I'm very aware of "time".
When I do functional programming (like Scala) I feel like I'm writing mathematical statements that aren't causing actions but just stating truths. It feels like time doesn't exist.
I know it's just a feeling and under the hood there's still a Von Neumann engine chugging away, but it's a feeling I can't seem to shake.
The original analogy involved a principal (a fairly complex process) who instructs a group of students (a collection of complex processes) to go to various classrooms (a fairly expensive / time consuming task). The pseudo-code he has breaks most of these assumptions and results in a simple single threaded task calling move-to-classroom routine that is so trivial that the implementation is not even shown. His straw man analogy is thus not correct.
It could easily be the case where the analogy is correct. e.g.
In this case, implementing this system (especially with a technology such as actors) would very closely parallel the analogy and the anthropomorphism would aid in communicating the design. The straw man argument that the author dredges up is a very simple example not worthy of most tasks a software developer faces in the 21st century.
Any analogy can be incorrect. Don't use them if they're incorrect.
This is a pretty healthy conversation but I can still add my $0.02
I hosted my own email server (webserver etc.) from 1995 to 2005. It was very enlightening but eventually grew to be a big pain in the ass. The last straw was a power surge that fried the motherboard. (raid and backups can't help with that) and looking at the the time and effort of getting a new hardware (and getting more redundant hardware) I decided to go with a hosting service. Eventually I pointed my domains to gmail.
Every geek friend I know has at one time hosted his own email. I'd be hard pressed to find a techno-nerd worth his cred who hasn't tried this. I also don't know anyone who has continued to host their email after a number of years of feeding and caring for the server beast.
I think the big issue is figuring out where to separate you hobby from your job. If you have a classic car in your garage that you like to tinker with is fine. If you decide to do you daily 20 mile commute in your classic car you're signing yourself up for some headaches as there will be days that you will need to bumb a ride, take a bus or taxi, etc. Hosting your own email is like commuting to work in a car that only you are able to fix in an environment where there are no buses, taxis or other cars. You have to be prepared to drop everything at a moments notice to fix your email server.
You can have someone else host your hardware but then ask yourself, why not have someone else configure and maintain the software as well?
DIY is great but realize what your signing up for if you want to DIY a critical system.
I bought a MythTV system from Cosmos Engineering. You can probably save money by building one yourself but I liked the fact that it just works out of the box. It was reviewed in Linux Journal so that might be reputable enough for you.
(null cookie; hope that's ok)