Wednesday, February 19, 2014

Designing a 3D Printable Modular Spindle Mounting System for Shapeoko2

Last week my long awaited Christmas present arrived, a brand-spankin-new Shapeoko2. Initial assembly took about two afternoons, but I got stuck on the z-axis because of a poorly threaded lead nut. Anyways, at long last I have a CNC router that I can use in the relative comfort of my basement.

Behold: My extended Shapeoko2

After making a few cuts and working with the stock router I pretty quickly got tired of the sound and setup of the stock cutting tool (a "Master Mechanics" Dremel-like thing.) I'm used to working with the bigger Porter Cable router on the Shopbot at the scene shop. So I plunked down the $150 for a new 800W spindle, and set about preparing for its eventual arrival (on the obligatory slow-boat.)

My most pressing concern was mounting the Spindle to the z-axis carriage, but in thinking about the problem I got a little bit ambitious. I came up with some goals for my eventual design:

  • Mount must hold the spindle securely on the z-axis
  • Mounted spindle must clear the motor mount at the top of the z-axis.
  • Mount must fit onto the existing z carrage and not add undue angular load to the z-axis.
  • Mount must be 3D printable and require only minimal hardware to install.
  • Mount features must be sized correctly after accounting for ABS shrinkage.

In addition to these I identified some optional goals that I would shoot for:

  • Mount may hold a laser diode for help with homing.
  • Mount may integrate a dust-collection hookup.
  • Mount may integrate a compressed-air hookup for cooling.
  • Mount may manage spindle electrical connections including power and coolant and low-voltage.
So, with these goals in mind, here is the result:

Modular 65mm Spindle Mount for Shapeoko2!

Initial Rendering Including the mount, the dust collection attachment and the dust collection foot!

At the moment it meets all of my goals except for having a passage for compressed air. Though that should be do-able. I spent a lot of time tinkering with the sizes and placements of each hole in the body of the mount. They are all designed to fit M5 bolts. Though some of the holes must be tapped prior to use.

The first test print of the mount

The first test print taught me a lot about the way ABS shrinks after printing. Pretty much every dimension had to be enlarged by at least 1mm. Tight holes were tappable, but the stress from tapping resulted in layer delamination which weakens everything. I also discovered that the recessed bolt holes in the back of the mount were not sufficiently recessed. This caused the head of the M5 pan-head bolts to interfere with the spindle mount.

The good news is that the first test body fit on the z-carriage nicely and, most importantly, the spindle clears the bearing mount at the top of the lead-screw. This allows for maximum z-axis range. Something distinctly lacking in the factory tool-mount.

The bottom of the Spindle Mount showing the laser setting

In addition to holding the spindle the mount body also has a 9mm recessed opening for a Laser emitting diode. A 9mm laser diode can be be easily added and used for aligning the spindle. For easy offsetting, the center of the laser diode is located 40mm to the rear of the center of the spindle.

Having made these changes to the model I set about designing a dust-collection attachment. A key goal of the dust collection attachment is to that have as small a footprint as possible. A large dust collector effectively reduces the working area of the tool. The attachment needs to be modular in a way that allows for easy cleaning and for attachment to a variety of different vacuum systems. In addition the module needed to be easily 3D printable without support structures. To this end I broke the DC system in to three parts.

The Dust Collection Attachment (left) and Dust Foot (right)

The "Dust Collection Attachment" bolts securely to the side of the Mount body. This is the most-secure (and most-permanent) part of the dust collection system. The job of this component is to act as a middle man bringing suction down from the hose adapter through to the dust foot. 

The Dust Foot "snapped" onto the Attachment

The "Dust Foot" snaps on to the bottom of the Attachment using a flexible plastic snap-fit. This provides two functions. First, it allows the Dust Foot to be easily detached for cleaning, for changing bits or simply to get it out of the way. It also prevents damage in a situation where an operator inadvertently crashes the foot into the work-piece. 

The Dust Foot has a pass-through hole to allow the alignment laser to pass through the foot. This is a bit lame as it restricts air-flow through the dust foot. Future versions will probably move the laser to another position.

The Vacuum Adapter clipped to the top of the Dust Collection Attachment

The third piece of the Dust Collection system is the "Vacuum Adapter". At the moment this adapter fits the hose of the shop-vac at my house (which has an OD of around 1.25"), however I plan on making several different adapters to fit 1-5/8" and 2-1/2" hoses. The Vacuum adapter serves two purposes: First it attaches the Dust Collection manifold to your shop-vac, and second it will serve as a utility pole for managing cables and tubes exiting the top of the spindle. This function is shown in the rendering below.

The utility mast to the right of the spindle body will eventually feature wires and zipties

The added angular load imparted on the "utility pole" and "Vacuum Adapter" require that the adapter be screw-mounted to the top of the mount body. Tapped mounting holes are available on both sides of the body so that the system can be mounted "ambidextrously."

So that's it! The bit thing I'm waiting for now is the actual spindle! Once I get it in hand I can do a real fit-test and start to really finish the design work! 

The design is available for free download on Thingiverse.

The system is a work in progress and I'm looking for feedback from anyone interested in this!

Saturday, February 21, 2009

Hyperic First Impressions

As someone who is in charge of a large network of different applications and hosts, I spend a decent portion of the day wondering if our software is working correctly. Some of our software is off-the-shelf, but much of it is application-specific custom built software. To further complicate things, much of this software interacts with other software and services. Staying "aware" in this type of large heterogeneous environment is serious work and in the past we've developed custom apps to monitor other custom apps. Clearly there must be a better way.

Check out this unrelated picture I added to spice things up!

Enter Hyperic.

I learned about Hyperic through this pretty interesting round-up. For those of you who aren't familiar with it, Hyperic is an open source, java-based monitoring platform. My first thought was that Hyperic kind of looks like Cacti (a rolled up fancy version of MRTG). In fact, it's quite a bit different.

Agent Based

The first big difference you notice between a grapher (like Cacti) and Hyperic is that Hyperic has an agent application. This caused me some initial alarm. I worry about having to install an agent on a bunch of boxes in the field. I also worry about the resources consumed by the agent. Fortunately it's pretty simple to install (just a directory containing a JRE and the software). The agent is also really smart at monitoring it's own processor utilization, so you can keep tabs on how much work the it's actually doing.

My agent-related fears assuaged I started setting up a small Hyperic pilot test. Server installation was pretty easy on Linux. For the pilot I decided to use the built-in DBMS (Postgres) rather than setting up an out-board MySQL database. The server started up easily and self configured itself. After setting up a few credentialed users I started installing agents.

Understanding Hyperic

When your first agent connects to Hyperic you start to learn about the system. Hyperic is pretty opaque at first. A new user is immediately confronted with the notions of Platforms, Servers, Services and more. The key to wrapping your head around Hyperic is understanding that a physical server is not a "Server" in Hyperic. It's a "Platform". This is important. It's called a platform because it can run multiple servers (FTP, HTTP, SQL, etc). A server process can then host multiple services. For example: IIS can serve multiple web sites (vhosts). Understanding this hierarchy is key to understanding the way that Hyperic monitors your environment.

So having now added our first platform we start to get a feel for the power that Hyperic brings to the table. Hyperic begins auto-discovering servers on each platform it's installed on. So on my first box it discovered IIS, .Net 2.0 and MySQL. It immediately provided detailed monitoring capabilities. When I say detailed I don't mean: How many MySQL processes are runnng? I mean: How many rows are in table X in database B?

Hyperic immediately provides granular monitoring of installed services.

RAR! I am pile of servers! HEAR ME ROAR!
Check out this other unrelated picture I added to show some contrast to the first unrelated picture!

It doesn't stop with "installed" services either. The next week I added a new service on the machine. Within hours, Hyperic had discovered the new server and made it available for monitoring.

Auto-discovery is all well and good, but it doesn't help us monitor those oddball custom applications. How do we find out if our FTP Uploader application is behind on it's transfers? Well Hyperic provides us two easy mechanisms to do this. The first is at the SQL level: I can have Hyperic monitor the result of an SQL query via the database server's agent. The other option I have is to go to the FTP Uploader's platform and modify it's "inventory" manually. I can tell it about the input queue directory and have Hyperic monitor the number of files inside.


Which brings us to alerting. Hyperic has pretty cool system for defining alerting criteria. Anyone who's managed a real time environment knows that false positives are a real problem. To prevent this Hyperic has threshold-based alerting. This allows you to say: Only alert me if the disk is full for more than 1 hour in a 12 hour period. This functionality prevents regular fluctuations from causing spurious alerts.

Once an alert is triggered Hyperic follows user-defined "escalation trees". An escalation tree is designed to gradually increase the loudness of your systems desperate cries for help. For example: suppose a process, for which I'm responsible, begins to choke. An escalation tree might send me an email. But since it's 2am on a Tuesday I'm hardly checking my email. This process is important though, so after waiting a predetermined time, Hyperic decides to send me a text message. Normally that's the kind of alert that I respond to, but on this particular Tuesday night I'm sleeping one off, so I forget to charge my iPhone. Hyperic decides that I'm clearly not the right man for the job and can thereafter begin alerting other people or group mailing lists. All of this is readily configureably and pretty cool stuff. It tracks all sorts of data under the hood as well (IE: who fixed what, when and how).

Open Source

Hyperic is available in two varieties: An open source version called Hyperic HQ, and a closed source version called Hyperic HQ Enterprise. The enterprise version of the software has a number of cool features that could make my life a bit easier, but when I spoke to a sales representative the price proved to be prohibitively expensive in my environment. They seem to charge a per-server-monitored subscription fee. Unfortunately, for the price they ballpark-quoted me, I could hire a full time engineer who's job is solely to manage the open source version of the software.

Don't get me wrong though, the enterprise version has some very cool functionality (like the ability for the server to automatically react to certain conditions and send commands). But unfortunately Hyperic seems to charge on an all-or-nothing pricing model, so if I wanted to use advanced features on a small subset of my hardware I'd end up having to create two parallel installations or pay full price for every server I monitor.

What's next

Well these are all my "first impressions" so over the next couple of months, as I get more involved using Hyperic I'm going to need to get a grip on how much monitoring is appropriate. I have hundreds of servers that could benefit from this type of monitoring but that might create a load situation on the Hyperic server. Furthermore, there is so much data that we can keep track of - some of it incredibly useful. And some of it is... er... not-so-much. I hope that someone is keeping track of the "Number of Deleted Recurring Appointments" in exchange. There is clearly a trade off between performance of the Hyperic server and awareness of the environment. This is true at the network level as well: What if a significant portion of my bandwidth turns out to be monitoring-related messages?

The other factor is that the more systems we begin to monitor using Hyperic, the more Hyperic itself becomes a critical element in our infrastructure. We begin to need to keep tabs on Hyperic itself. This also means that we need to be methodical in our setting up and deleting of alerts. I suspect this will require some level of automation.

To me, this is all very interesting and exciting. To everyone else, my apologies.

Friday, February 20, 2009


Just in case you're wondering what this is all about, basically over the past couple of weeks I've been thinking a lot about whats involved with working with steel in our shop. And decided to write down my thoughts.

Our scene shop has never really been a "steel" shop. We typically work with wood and wood-based products (note the distinction). When we started looking at the set drawings for our March production of Twelve Angry Men it was pretty clear that we were going to be working with steel.

This photo is not staged... I know it looks it.

So, what are the processes that we use when working with steel? Well, they're basically the same processes as working with wood (cutting, drilling, attaching, etc.). These processes look a bit different when working with a mailable material like steel and therefore require different tools.


Cutting is the first major difference between working with steel and working with wood. Inexpensive toothed circular saw blades don't do so well when trying to get through most steel, so we end up using an abrasive cutting tool - an abrasive chop saw. Abrasive cutting uses a rough cutting wheel that deteriorates as it cuts. The result of this deterioration is that, rather than getting duller, the cutting wheel gets smaller as you go.

When dealing with sheet metal, cutting with a wood-type jigsaw generally doesn't work very well because of tendency of the sheet metal to bend. Instead, the more consistent pressure of a band saw is generally preferable it tends not to bend the metal and avoids overheating due to large surface area of the blade.


Attaching the metal to other surfaces is easily done using screws and bolts. Drilling out holes for bolts and screws is more time consuming and consumes far more drill bits, but otherwise is pretty similar. Attaching metal to metal can be done using bolts as well, but in this scenario we have a new process which has no analog in the world of wood: Welding.

The unit

Welding, essentially, involves turning two pieces of metal into one. To do this we heat two pieces of side-by-side metal up, then join them by adding metal to both pieces until they form one new lumpy piece of metal. To do this we need a welder.

Our scene shop only has 120V power so I ended up choosing a Hobart Handler 140. For this show we need to be able to weld 1/8" steel - this is on the very outside edge of what 120V welders are capable of using gas MIG process, but the Handler can do it provided you take your time and go slow.

The MIG process is pretty simple. Filler wire starts to come out the tip of the gun when you pull the trigger. As the filler wire approaches the work piece a little lightning bolt shoots out and starts to heat both the work piece and the filler. If you do it right, the filler wire should go into the, now molten, work piece and allow you to build up the metal. If you build-up two pieces of metal at the same time, you've joined them together. Lastly, to prevent the hot metal from immediately oxidizing, all of this lightning bolt action happens inside an invisible plume of shielding gas (in our case Argon and CO2).

But, while the process is simple, actually welding two pieces of metal together can get pretty complicated. For starters there are four important variables: Gas Pressure, Wire Feed Rate, Wire Feed Pressure, and Current. Fiddling with these variables will yield different results depending on the thickness of the metal. Additionally, there is pure skill involved. That little lightning bolt likes to jump around - you need a steady hand, and lots of practice.

A good weld!

Now you've welded two pieces of metal together. But wait, there's more! How do you know the weld will hold? On the surface the weld looks good. There's no excessive oxidation, there are no gaps in the weld, there's no stippling or balling of the bead. That's all the information that you get by looking at it. Next step you can either X-Ray the weld, or you can beat the hell out of it and see if it holds. I'll let you guess which method we use.


Shop safety is our foremost consideration when doing any kind of work in the shop, and working with steel brings with it some new issues to consider.

The first, most general, issue is that metal tends to be sharp. Anyone who's ever gotten a metal splinter knows what I'm talking about. To mitigate this factor we make sure to dull down any exposed surfaces that have been cut in our shop and make sure to clean up after cutting or drilling metal.

Cutting metal on an abrasive chop saw has some safety issues of its own. Fortunately they're quite obvious to anyone in the vicinity of a saw. As the abrasive blade cuts through the metal it creates a shower of sparks and dust. This shower presents a hazard to both the operator and any bystanders. Bystanders need to keep their distance, the operator needs to wear long sleeves and pants, gloves and a face shield. Additionally abrasive tools should not be used around combustible materials or in the vicinity of volatile solvents.

Welding has a few safety issues associated with it as well. Welding creates heat and light. For the welder, heat is an obvious danger; it's why we wear gloves and use clamps. For the bystander it can be quite hidden. When a piece of steel has been welded it remains hot for some time - despite not necessarily looking hot. It's important that steps be taken to prevent bystanders from coming into contact with freshly welded metal.

The light created by welding has high ultraviolet content. It is therefore inadvisable to be directly exposed to the light cast by the welder. The operator is wearing a mask and gloves and sleeves to prevent exposure. Furthermore, its the operators responsibility to keep bystanders shielded from the direct light of the welder. Often, this can be as simple as avoiding reflective surfaces and keeping your body in between the weld and any bystanders.

Lastly, spatter from the welding presents the same types of fire hazards as operating a cutoff saw. Again, care should be taken to avoid situations that could result in fire. Additionally, consider that material you have just welded may be hot enough to start a fire and keep it appropriately safe.

*Important note: This is not a comprehensive list of safety considerations. Your mileage may vary.

Why Bother?

There are a number of reasons that having steel capabilities is a tremendous asset. In theater, one of the biggest is weight. Building structural objects out of steel can be done significantly lighter that out of wood. This is a crucial factor when designing large sets that need to be moved around or flown out.

Uniformity is another factor. Consider that when you purchase board lumber you're generally getting a natural product and as such it tends to have warps and bends. Warps and bends can really mess things up when you're dealing with close tolerances.

That having been said its important to maintain a balance. Carefully evaluate your material selection and, when choosing steel, be sure to factor in the safety considerations when making your choice.

In my environment I further have to weigh the fact that this is a high school shop and that therefore there are bound to be students involved in the process. At the moment I've decided to operate the steel tools myself and have the students facilitate the process. This takes away the "Operator Risk" and makes me responsible for minimizing the "Bystander Risk". I'm okay with that responsibility.

Friday, February 22, 2008

Operation Sleepy Eagle

Well, the veil has been lifted on Operation Sleepy Eagle. A cunning plan to surprise my parents on their 30th wedding anniversary. It appears that we've managed to sneak in the entire out-of-town family without any leaks (though, truth be told, you can never be sure).

My sister and I have been working out the details of this party for a few months, and it's a relief that it went off without a hitch. I picked up the out-of-towners at Westchester Airport at 11:30 and got them started at a local bar. After that, all I had to do was get Mom and Dad to the restaurant at ten past six.


Last night we celebrated three birthdays and a 30th anniversary. Mission Accomplished.

FYI: Photographically, I had a frustrating night. I changed a white balance setting in my camera a week or so ago and forgot about it. Since then I'd performed a firmware update so I wasn't sure why all of my photos had a nasty hue.

Lesson learned: When in doubt, reset the camera's controls. It could take me an hour to search through all the settings on my camera, but it would probably only take a minute to restore my settings from scratch.

Thursday, February 21, 2008

The moon and his buddies

It's been a few years since I last watched the moon disappear behind the shadow of the earth. The last time was in the fall of 2004 - I think. While I'm having a little trouble remembering the date, I recall perfectly sitting outside in parking lot of the Dunkin Donuts watching the moon turn red.

There's something very cool about watching the moon change shape before my very eyes. I think the reason it appeals to me is that it's almost like watching a time-lapse event.


The dim red light illuminating the moon makes it a far less formidable photographic subject as well. Under normal circumstances, when photographing a full moon, I need to dial my camera's sensitivity way down in order to expose any lunar detail. However, with the fainter moon, the surrounding celestial bodies pop out of the night sky. Last night we were treated to the planetary glow of Saturn to the left of the moon and Regulus above it.

So why am I writing about this? Well, I'm afraid I don't have a very good answer. There's something about freezing my butt off trying to get a shot that makes me want to talk about it.

Monday, February 18, 2008

Managed mobility

Have you ever been to dinner with someone who's cell phone would simply not stop making noises the entire night? If you have, you might have been sitting across the table from me.

I get a lot of text messages. Last month, I received about 8,000 of them.

Thats 8,000 little 'beeps'. Not to mention the countless number of emails that I get both at the office and on my Gmail account creating another 1,000 little 'boops'. Thats a lot of noise to go walking around with.

Now by this point, you're probably thinking: "Okay, he can't possibly be that popular. After all, he's a software guy with a blog." Well, you're right. I am not that popular. The vast majority (about 98%) of those text messages are from automated monitoring applications trying to keep me abreast of what's going on at the office.

This situation has two inherent problems:
  1. I get so many alerts that I don't even try to keep up with them all
  2. I have no good way to distinguish between text messages from people and robots
The first problem is interesting to consider, and only slightly less easy to fix. Anyone who's ever worked in a real time environment knows the importance of automated monitoring software. Software which will pro actively let you know when trouble occurs. Without monitoring software we'd only know about problems when a user told us. Obviously no one wants to do business like that.

The problem with automated monitoring software is, that unless its properly tuned, you can end up in a situation where you have a really crummy signal to noise ratio. It's very important to spend time thinking about what things you want to be alerted about otherwise you just end up ignoring the system.

In our situation we never spent the time to correctly tune our alerting system. As a result I would constantly be getting text messages. Maybe I'd get one or two every five minutes. And by and large I didn't read them - even though some of them were probably important.

So why didn't I just turn off the system? Well, my brain started to become a pretty efficient filtering system. I got to the point where I would tune out the text messages unless they started coming in quickly. What's more, my brain seemed able to do this automatically as well. I could sleep through the individual text messages easily, but I would usually wake up when they started coming in more quickly.

The second problem, that of distinguishing alert messages from human-sent text messages, was one that begged for a software remedy. Not wanting to reinvent the wheel, I went in search of such a product.

Watchflag has changed my relationship with my cellphone. Watchflag is a rules based message alerting system for portable devices running Windows Mobile 5 or Windows Mobile 6. In my case I run Watchflag on a Samsung Blackjack2. My cell phone now vibrates and lights up when I get a human text message. Computer-based text messages just get the little ICQ "uh-oh" noise.

The other cool thing about Watchflag is that it is apparently written by actual human beings. When I recently had a problem with a new version, I emailed support and got in touch with one of the developers who fixed the problem and sent me a new version. Additionally, at the moment, Watchflag is being developed very actively. In the past week it feels like we've had 3 or 4 new versions. To some people that can seem like a drag, but since every upgrade brings new features, to me it's like a fun little present!

Lastly Watchflag is inexpensive. At the moment it is only $15 (half-off) and seems to feature free version upgrades. If you use a Windows Mobile based phone I highly recommend it.

Friday, February 15, 2008

The real deal

Lately I've been building sets at Staples High School in the evenings. Schedule-wise, this makes for some long days, but oh well, I like the work. At the moment we're building the set for Romeo and Juliet. The set consists of three walls forming an Italian plaza. The set is conceptual in its design so we make no attempt to disguise the fact that these walls are sitting in the middle of a theatre.

The centerpiece of the set is a gigantic clock. The clock is six feet in diameter and is built into the front of the center building. The clock rests about six feet off the ground and is designed to be illuminated from behind so that it can "become" the moon. The clock also needs to have real hands which dangle limply wherever we decide to put them.

So, it sounds like we need a gigantic lightbox. The design called for a six foot square lightbox to be skinned with rear-projection material which can be painted to look like the face of the clock. This all sounds good on paper, and when I converted the designers sketches into CAD drawings everything looked good. Yesterday we built the box.

A large lightbox

Sometimes you can see something drawn on paper and not realize exactly what the scale means. I knew it was a six foot lightbox, but I don't think I knew what a six foot lightbox was. I think my first reaction was "Uhh... that's pretty big". Thats before I realized that we could stand people up inside of it.

My second reaction was "Uhh... that's pretty heavy". Here's the part where I admit to making a rookie (in the field of enormous lightboxes) mistake. The sides of the box called for 3/4" plywood so that it would provide structure to the building around it. The mistake that I made, was to build the back of the box out of 3/4" plywood also. The rear of the box is non-structural and, as a result of my mistake, is now incredibly heavy. Which means I now have to alter my structural design to support the new weight of Gigantor, the lightbox.

So, what's to be made of this? Nothing really. Hopefully there's a lesson to be learned. I think the lesson is, when building large things off spec, think twice about the materials.