Cute names can be more memorable, but I think they don't help people in understanding what the program does. A name like "memcache" is pretty good; hits the sweet spot between the two. Avoid putting the language name in (this happens a lot in JS), it's rarely needed. And please avoid recursive acronymns (GNU -> GNU's Not Unix). They're not smart; all you're telling me is it's not X. So what? I browse the web on NAKS -> Not A Kitchen Sink.