It sounds like XMPP (also called jabber) is what you need. XMPP is an open standard for instant messaging, and there are free/open source implementations for both clients and servers. One option for servers is jabberd. One option for a client is Pidgin (which runs in Windows and Linux).
Bah. Sorry for the google search result link. Here is a direct link to microsoft.
All the "Activesync Protocol" is, is good old PPP.
Not even close to the same universe as correct.
ActiveSync is an email synchronization protocol (among other things) built on top of WBXML and HTTP(S). See Microsoft's documentation for it here.
Can you give examples of good Exchange replacements?
Have a look at the PostPath Email and Collaboration Server. It is a mail server that runs on Linux and acts as a drop in replacement for Exchange (i.e. it implements the MAPI protocol so no special plugins are needed). They were recently acquired by Cisco, so I'm not sure what that has done to the availability of their server.
Admitting my biases, I am former employ of PostPath.
For some time now I've been using >=3 as an emoticon for "hate". Rarely do people seem to get it, though.
What barriers do you propose might exist that prevent one ancestral population from diverging into two arbitrarily-different ones?
If an individual strays too far genetically, God drops a rock on it.
Is that rock so heavy even God can't lift it?
Than there's the problem of "lowering" that massive cable to the ground.
Actually, I think the idea is that cars would run up and down the cable -- even as simple as, the cable stays put, and the cars use motorized wheels.
I expect he was referring to lowering the cable to the ground during the initial construction of the elevator, rather than for each trip.
The reason to fear Java doesn't really have much at all to do with any merits of the language itself. The reason you should fear Java is that it doesn't really add anything to your resume to distinguish you. There are, frankly, a LOT of extremely mediocre programmers on the market, and a common attribute they share is that they only know Java.
That said, DO learn Java. Not knowing how to use one of the most popular tools in your field is also not a smart idea. Just don't by any means think that your education is done.
For what it's worth, here are the four major things I look for when interviewing programmers.
1. Do you know C? (whether you are going to be programming in C is irrelevant)
If you don't know C, you probably have very little understanding of how computers work. C is language you can depend on to be on pretty much every platform; C is the language external APIs and foreign function interfaces are specified in; C gets the job done when all your layers of abstraction fail you.
2. Do you know a functional language such as Lisp, Scheme, or Haskell?
Programming in a functional language changes the way you think about programming in general. Programmers that understand functional programming generally are able to produce better solutions to problems even in imperative languages. Structure and Interpretation of Computer Programs is available online for free. Read it today and improve your skillset.
3. Can you write a compiler from start to finish?
The theory surrounding language parsing (automata, state machines, regex, grammars, etc) is fundamental to computing. In fact, computing itself is usually defined in terms of it. Once you understand it, you find you apply it all the time.
The ability to translate high level languages into optimized machine instructions requires that you understand your platform at every level. This is important because it lets you understand the tradeoffs you are making when you choose one tool or method over another.
4. What is your current personal project?
What your project is doesn't matter all that much, as long as you have one. Good programmers are usually always working on some personal project that excites them.