I have a Lumenlabs micro CNC machine which was purchased by my brother for some prototyping work. It turned out that I was more able to tinker with it than he was, and so I ended up taking it off his hands. I have the thing in working order, and while it didn't take quite as much tinkering as we originally thought it would, it has taken a bit of work. Of course, my skills as a machinist are extremely limited, so the whole thing has been (and continues to be) a learning experience.
When he bought the micro, my brother was intending to use it to make prototypes for our everyday carry pen and stylus. So far, that hasn't worked out. Most significantly, the design we're going with would be more appropriately fashioned on a lathe (or at least a 4 axis mill; the micro is a 3 axis machine) but also, the micro (as shipped) has a couple of deficiencies that make it hard to use for serious work. More about those in a minute. The last piece of the picture has to do with my (lack of) skills, and the learning curve I've encountered in working with this device. In that regard, the micro's deficiencies haven't hurt us that much, as they've been something I can learn from.
So, deficiencies. As far as my brother was concerned, the biggest problem was in the realm of documentation and customer support. Getting the wiring and the computer interface set up properly required a little digging. All of the information is supplied by Lumenlabs, but it's behind a pay wall. The purchase of the machine grants access for a year (in theory) but that wasn't made clear to us at first, and so we did a lot of stumbling around until we managed to get everything hooked up. That part didn't bother me as much: I figure a machine made for hobbyists has a certain amount of tweaking built into its design. My issues rest with some missing features of the machine.
First, positioning. After installing the limit switches, the machine zeros itself, and can locate positions in x and y with relative ease. The z location, however, is set at the top, rather than the bottom, and so zeroing in z doesn't give you a clear idea of the height of the end of the tool above the table. Furthermore, any time you change a tool, this (unknown) height will change in an unknown and probably unpredictable way. Also, moving too quickly in z will cause the motor to bind a little, and the z position gets lost. I don't know if the binding is a result of the design, or if it's an alignment issue that I can fix, or if some part of the z axis on our machine is bent or otherwise damaged. I haven't tried too hard to fix it, because the workaround (don't move too fast in z) is reasonably easy. I think that height detection/touch off is doable (and in fact, I've read a bit about people who are into pcb milling doing some fancy things with bilinear interpolation to get a good height map of the work piece) so that's on my list of projects. In any event, I can touch off manually, and have a pretty good idea of where the end of the tool is. So this is really more of an inconvenience than anything else.
The other, perhaps more serious limitation of my current hardware is that my spindle only has one speed, and it's too fast. Which is to say, it works fine in wood and plastic, but I run into serious chatter problems when milling aluminum, and I wouldn't imagine trying to do steel. I have three or so options here. The simplest would be to try a variac (... if I only had access to the stuff in my parents' basement!). Next, I could buy either just the speed control or a whole packaged flex shaft grinder; though I don't have any guarantee that a speed control for another grinder would work with mine. Last, I found a circuit schematic online that I could build. That solution has a certain appeal, but would be most time consuming.