Model Ms feel the best to me but are too noisy for most work environments. Topre RealForce (I prefer the 55g version) keyboards are more expensive but feel almost as good (albeit different) and are quiet enough for any office. I use a Model M at home and a Topre RealForce 55g at work and am satisfied with that setup.
Both are extremely well built and will be long-lived. I've been using my Model M since 1984.
Sure it's exciting at first, but trust me--regular air travel gets *really* old *really* quickly. I traveled a bit with my consulting firm, and I think the thrill lasted two weeks. Then for another two weeks it was tolerable. And from then on it was just miserable. Virtually all of my colleagues feel the same way. Throw in a wife, a pet, a kid, or a house that you're paying a lot of money for, and you're looking at a recipe for disaster.
My old college's motto applies well to anyone trying to "learn IT": learn a little about a lot of areas, and a lot within a few areas. That way you can experience what it's like to be both a generalist and a specialist. Decide which approach you like better, and follow that path as a career. Yes, it takes some time to experience both sides of the fence, but if you can afford that time, it will be very well spent. Personally, I'm a generalist who wishes he had become a specialist, but different temperaments lend themselves to different types of careers, and you may discover that you lean the other way.
Finally, an Ask Slashdot question I'm qualified to answer! My undergraduate CS degree (Harvard) probably wasn't as rigorous as it would have been at MIT/Carnegie Mellon/Berkeley/Stanford, but my Philosophy Ph.D. (Berkeley, doing philosophy of mind with John Searle) was reasonably hard core.
Having worked as a developer for 5 years since finishing grad school, I've been discouraged to find that the points of contact between philosophy and CS are VERY few and far between. Studying philosophy will definitely sharpen your reading, writing, and analytical skills, all of which are (or should be, if you're doing your job right) useful for programmers. But those are all general skills; my knowledge of philosophical theories or history or personalities are, frankly, never a part of my work life.
I can imagine scenarios where the two would be more closely intertwined: heavy duty academic logicians probably work in the intersection of CS and philosophy, and philosophy of mind may have some (tenuous) relevance to cutting-edge AI research. But here's the problem. Philosophy is really about defining terms and asking questions. As soon as terms are successfully defined in such a way that everyone (or most people) agrees on the definitions, and as soon as theories are deemed reliable enough to use in real-world situations, that particular line of inquiry leaves philosophy and is re-branded as science. (Chemistry and astronomy are two particularly clear examples of sciences that started out as philosophical topics way back with the Pre-Socratics.) So any "philosophy" that is concrete enough for CS researchers, developers, or sys admins to use would, most likely, no longer qualify as philosophy.
But even if philosphy is not all that relevant to people working in CS, I think it can be enormously useful to students who are focusing on CS. Besides the improved reading/writing/thinking I've already mentioned, the study of logic (which generally falls under the purview of philosophy) is a good thing for CS majors (though even it is less directly relevant to programming than you might imagine), and it's good to get practice in questioning the definitions of fundamental terms in any field (which, again, is what philosophy is all about). And of course, reading the work of people like Turing and Godel is crucial to understanding what computers can do, what their limitations might be, and how they might be fundamentally different (or similar to) human minds. But those are not areas that professional developers are likely to spend any time thinking about when their main concern is cranking out another 500 lines of Java before lunch. So I'd encourage CS students to study as much philosophy as they can in order to become smart, thoughtful, well-rounded people, but not to expect to use the content of their philosophy courses all that much once they're in the working world.
A final caveat: there are vast areas within the philosophy landscape that are completely irrelevant to programmers as programmers, though may be relevant to programmers as human beings. Ethics, aesthetics, political philosophy, all of continental philosophy (think Sartre or Heidegger or Derrida) fall into this category. There are, of course, many more.
Model Ms feel the best to me but are too noisy for most work environments. Topre RealForce (I prefer the 55g version) keyboards are more expensive but feel almost as good (albeit different) and are quiet enough for any office. I use a Model M at home and a Topre RealForce 55g at work and am satisfied with that setup.
Both are extremely well built and will be long-lived. I've been using my Model M since 1984.
Neither is ergonomic, if that matters to you.
Both come in full-size and tenkey-less versions.
Sure it's exciting at first, but trust me--regular air travel gets *really* old *really* quickly. I traveled a bit with my consulting firm, and I think the thrill lasted two weeks. Then for another two weeks it was tolerable. And from then on it was just miserable. Virtually all of my colleagues feel the same way. Throw in a wife, a pet, a kid, or a house that you're paying a lot of money for, and you're looking at a recipe for disaster.
My old college's motto applies well to anyone trying to "learn IT": learn a little about a lot of areas, and a lot within a few areas. That way you can experience what it's like to be both a generalist and a specialist. Decide which approach you like better, and follow that path as a career. Yes, it takes some time to experience both sides of the fence, but if you can afford that time, it will be very well spent. Personally, I'm a generalist who wishes he had become a specialist, but different temperaments lend themselves to different types of careers, and you may discover that you lean the other way.
Finally, an Ask Slashdot question I'm qualified to answer! My undergraduate CS degree (Harvard) probably wasn't as rigorous as it would have been at MIT/Carnegie Mellon/Berkeley/Stanford, but my Philosophy Ph.D. (Berkeley, doing philosophy of mind with John Searle) was reasonably hard core.
Having worked as a developer for 5 years since finishing grad school, I've been discouraged to find that the points of contact between philosophy and CS are VERY few and far between. Studying philosophy will definitely sharpen your reading, writing, and analytical skills, all of which are (or should be, if you're doing your job right) useful for programmers. But those are all general skills; my knowledge of philosophical theories or history or personalities are, frankly, never a part of my work life.
I can imagine scenarios where the two would be more closely intertwined: heavy duty academic logicians probably work in the intersection of CS and philosophy, and philosophy of mind may have some (tenuous) relevance to cutting-edge AI research. But here's the problem. Philosophy is really about defining terms and asking questions. As soon as terms are successfully defined in such a way that everyone (or most people) agrees on the definitions, and as soon as theories are deemed reliable enough to use in real-world situations, that particular line of inquiry leaves philosophy and is re-branded as science. (Chemistry and astronomy are two particularly clear examples of sciences that started out as philosophical topics way back with the Pre-Socratics.) So any "philosophy" that is concrete enough for CS researchers, developers, or sys admins to use would, most likely, no longer qualify as philosophy.
But even if philosphy is not all that relevant to people working in CS, I think it can be enormously useful to students who are focusing on CS. Besides the improved reading/writing/thinking I've already mentioned, the study of logic (which generally falls under the purview of philosophy) is a good thing for CS majors (though even it is less directly relevant to programming than you might imagine), and it's good to get practice in questioning the definitions of fundamental terms in any field (which, again, is what philosophy is all about). And of course, reading the work of people like Turing and Godel is crucial to understanding what computers can do, what their limitations might be, and how they might be fundamentally different (or similar to) human minds. But those are not areas that professional developers are likely to spend any time thinking about when their main concern is cranking out another 500 lines of Java before lunch. So I'd encourage CS students to study as much philosophy as they can in order to become smart, thoughtful, well-rounded people, but not to expect to use the content of their philosophy courses all that much once they're in the working world.
A final caveat: there are vast areas within the philosophy landscape that are completely irrelevant to programmers as programmers, though may be relevant to programmers as human beings. Ethics, aesthetics, political philosophy, all of continental philosophy (think Sartre or Heidegger or Derrida) fall into this category. There are, of course, many more.