Collaborative Language Engineering by Dan Flickinger