We recount and examine experiences with Hermes, an experimental langua
ge for programming distributed systems, Hermes has several unusual lan
guage features, including compile-time checking of data initialization
, representation independent data aggregates, and an integrated proces
s model. To facilitate compile-time initialization checking, Hermes st
ores data in tables and does not expose pointers, We study these featu
res in light of the experiences of Hermes users around the world, anal
yzing the strengths and weaknesses of the language.