I've always enjoyed programming and I always enjoy learning new langauges (anything e.g. Java/C#/Erlang/F#/Clojure/Ruby etc), but something's never seemed to enjoy it as much as I want.
One thing I'm curious about which I'm wondering if I might enjoy completely is CAD/CAM/CNC programming and design and I was wondering if anyone has any tips on where/how to start learning, what software there is out there that would be helpful for learning with (preferably free/open source and preferably for Linux, though I appreciate options may be limited).
Any tips would be appreciated.
You can start trying EMC (free) at http://www.linuxcnc.org/
Just a few comments:
CNC is a generical name for computer controlled machines (the "N" comes from Numerical)
There are several standards (as always) for the language, perhaps the most used is ISO 6983. However you'll find out quickly that each machine implementation is different.
There are also relatively cheap machines (under $1000) that you can buy or DIY to effectively run your programs and make "real" things. See for example http://buildyourcnc.com/default.aspx or http://wiki.makerbot.com/cupcake. You'll not catch up the quirks of the trade until you can run your programs in a real lathe or mill.
CAD and CAM programs from the programmer's POV can be thought as visual CASE tools.