techniques for basic graphics design (for programmers)?
1331: Practice is essential in becoming proficient in design.  A technique that I particularly recommend for beginners is recreating designs that you like, from scratch.  Start with something easy and work up!The majority of my design "training" was done in a professional environment, using Illustrator and Photoshop.  Such software has hierarchical layers/groups as well as support for keyboard input, which address your questions about performing tasks such as drawing circles and modifying designs.Photoshop (raster-oriented graphics) is quite mature and impressive; there is unfortunately no OSS that can even approach its creative power, IMHO.  Illustrator (vector-oriented graphics, which seems to be your interest) is nowhere near as solid as Photoshop...  The best OSS alternative (for screen design, that I know of) is Xara Xtreme, which outdoes Illustrator in a number of ways.  Unfortunately, core features such as layers/groups and keyboard input are not done well in Xara, and it is a long way away from being able to do print.  Inkscape trails pretty far behind.If you would like to take a scripting approach, how about trying JavaScript in a modern browser?  In case it is better suited for your needs, you may also want to check out Asymptote and/or METAPOST.A bit more advice: Technically-minded people can usually learn software applications by just playing around with it, but I highly recommend reading good books on the subject to really learn the software.  The many design tutorials online can also be quite useful.http://www.xara.com
http://www.xaraxtreme.org/
http://asymptote.sourceforge.net/