Tools and tips for the discerning programmer