Wednesday, October 20, 2021

Another Great Tool: Knipex Pliers-Wrench

At the Makerfaire in Milwaukee a few weeks ago I spotted a tool I had never seen before sitting on a table. I picked it up and played with it for a minute and was hooked. It belonged to Markus, one of the Makerspace members who happens to be German, and has a great collection of super high quality European hand tools. Thanks Markus for showing me yet another great tool!

The particular tool I am referring to is a Knipex Pliers-Wrench. It is essentially an adjustable wrench, but unlike the type with the little worm gear to set the jaw spacing (which always slips and requires readjustment multiple times almost every time you use it), it operates like a pair of pliers. What makes it a wrench? Unlike normal pliers, the jaws are smooth and remain parallel at all times. The tool is intended for gripping the flats on nuts and bolts, not for grabbing pipe. You can still use it to crush and bend things like pliers, but you're not going to hold or turn pipes with it (Knipex makes other great tools for that).

This is the exact tool I bought. $48 via Nope, not cheap, but in a world where Apple sells $19 microfiber cloths for cleaning ipads, a relative bargain.

The Pliers-Wrench comes in many sizes, but the two most useful for everyday stuff are probably the 125mm and 180 mm models. The 125 mm version has very narrow jaws that can grip thin nuts like the jam nuts used to hold bearing cones in bicycle wheels (for bikes without sealed cartridge bearings). The 180 mm version that I bought is a bit longer (more leverage) and has wider jaws and can be used on nuts/bolts up to 40 mm (1 1/2")! That makes it a great tool to carry on a bike or in your car, truck, boat, or RV, because it can grip any size nut or bolt, metric or imperial.

You adjust it to the size of nut you're trying to hold by pushing down on the spring loaded pivot and sliding the jaws to the needed size. Opening and closing the handle through their full range gives about 6 mm (1/4") of adjustment range at each of the pivot settings. That also means it will work similar to a ratchet wrench if you loosen your grip on the handles as you rotate the wrench on the nut. The grip strength is very high and I was able to crush the edge of a penny with it. 

There are many reviews of the Knipex Pliers-Wrench on youtube. Here's one of them:

Highly recommended (and no I didn't receive any compensation for saying so).

You can buy Knipex tools at many places- I ordered mine via

Monday, October 18, 2021

3D Printed Stands for LG SN11RG Surround Speakers

 I recently added an LG SN11RG sound bar to my TV (got it on sale for about 1/2 price!). It's pretty deluxe, and connects wirelessly to the woofer and two rear surround speakers. My setup is a little less than ideal, but I'm kind of forced to position things the way they are due to the many windows in my living room. By less than ideal, I mean the TV is in one corner of the room with the sound bar, and the surround speakers are on end tables on either end of my couch. 

The end tables are not matched and one is 30 mm higher than the other. I wanted to put the speakers at equal height, so I designed two stands, one 200mm tall and the other 230 mm tall to make up for the difference in end table heights.

It took two attempts, but I matched the bottom of the speakers perfectly and have the rubber feet sitting in little concavities in the tops of the stands. A single M4 screw attaches each stand to its speaker. The first design had three feet to sit on the tables, but I felt like it wasn't going to be stable enough so I redesigned them to have 180 mm diameter round bases.

The stands are printed using PETG with a 1mm nozzle with 1.2 mm line width, two perimeters, and zero infill. There's a cone in the center of each stand that allows me to get a long 3mm hex screwdriver in to tighten the M4 screw that holds the stand to the speaker. I added some modifiers with 90% infill at the top of the stands to allow clean printing of the concavities for the speaker's feet.

This is one of the stands highlighting the cone that runs through the center of the stand to allow tool access for installing an M4 screw.

One of the stands...

The other stand.

If you also have the same speakers and need stands, you can download the STEP file for my stands here.

Friday, October 1, 2021

Arrakis Sand Table Experiments with Glass Beads

Someone at the makerspace (thanks Sarah!) provided me with a bag of glass beads of the type used to make lines on roads reflective. I decided to see how they'd behave in Arrakis.

First experiment

For starters I tried scattering a handful of the beads over the surface of the table while it was full of baking soda. The beads are retroreflective so they don't reflect the red and blue LED lighting to your eyes when you're looking at the table. They do reflect a camera flash...

I scattered some beads on the baking soda. Without the flash on the camera, the beads just disappear.

The beads get pushed around by the ball.

After completng a pattern, then an erase, the beads are really starting to mix with the baking soda.

A completed pattern with the glass beads mixed with the baking soda.

A close up of the baking soda and glass bead mixture. You can see how rough the lines left behind by the ball look.

The different particle size/density/mass of the beads compared to the baking soda caused the ball to behave poorly when it was drawing lines. Straight and curved lines came out wobbly. I also noticed increased grinding noise with the beads. After running a few erase and drawing patterns the beads got scattered over the table a bit.

Second experiment

This time I removed the baking soda and went entirely with glass beads.

Noise level went up, line quality went down. At high speeds the beads get thrown more than the baking soda, so I had to slow the motion down to try not to clear the whole table off during a high speed erase pattern. I found that 200mm/sec was about as fast as I'd want it to go, and even then it throws the beads around.

The glass beads provide a sort of soft looking drawing.

Another view of the drawing.

With the flash, the drawing almost looks wet because of the way the flash reflects off the beads.

A soft looking drawing. There are no sharp edges to the lines because the beads are coarse and don't pile up sharply like the much finer baking soda.

The same drawing photographed with the flash. The bright spot in the center is a reflection of the flash in the glass top of the table.


The beads may be OK under certain circumstances, but I prefer the baking soda because it produces "cleaner" lines, it's quieter, and patterns can be drawn and erased faster.

The beads are denser and have larger particle size than the baking soda so they tend to get thrown more than the baking soda. That suggests that if a material with lower density and/or smaller particle size than baking soda were used, the drawings might come out even sharper, or allow higher speeds without loss of quality.

Some people use actual sand in their tables. I suspect that they might get better looking drawings (sharper, smoother lines) if they replace the heavy sand with the much lighter, finer grained baking soda.

Sunday, September 19, 2021

A New Post-Processor to Speed Sand Table Pattern Drawing

A little history

Back when I worked on The Spice Must Flow sand table, I found an undesirable characteristic in Sandify, the software that generates the pattern files. For some patterns, it created a lot of excess motion along the edges of the table that drastically increased the drawing time and was boring to watch. I wrote a crude Perl program that would post-process Sandify pattern files to eliminate most of the excess edge motion, often reducing the pattern drawing time by 50% and reducing boredom by about 90%. Shortly after that, a better implementation of that function was written into Sandify by one of the Sandify programmers, where it now works very well on every pattern generated.

So what's the problem now?

The Arrakis sand table is now working and I've turned my eye toward improvements. Arrakis can run up to 2000 mm/sec at high acceleration (up to 2 g!) thanks to servomotors. It's impressive to watch it moving like that, and throwing sand all over the place, but the sand throwing wipes out some of the detail in the patterns. Sometimes it's nice to run it slowly so the pattern finishes with all its most intricate detail intact. 

I normally set the speed for each pattern in Sandify by using the "program start code" box when I export the pattern. That speed value is applied to all motion in the pattern except homing which is set in the table's controller board firmware. If I want to see a lot of detail in the pattern and don't mind it taking a long time to finish, I set the speed to 100 mm/sec using a G01 F6000 statement. If I want it to run fast, I set the speed to 1000 mm/sec using a G01 F60000 statement.

This is how I set speed in Sandify. G01 F60000 sets the speed to 1000 mm/sec.

And that's the problem. Run the pattern slow, and you get lots of detail, but the motion along the edges, that doesn't contribute to the pattern, also runs slowly. 

Some patterns have a LOT of edge motion and running them slowly can get pretty boring to watch. It would be really nice if there were a way to speed up the edge motion while leaving the drawing motion at a low speed to preserve detail. 

Sandify Pattern File Structure

Sandify pattern files are plain text files that start with a series of comments about the parameters used to generate the pattern contained in the file. Then the "program start gcode" statements, followed by a bunch of G01 statements that define the pattern itself, and finally a few more lines from the "Program end gcode" box in Sandify.

The gcode interpreter in the controller firmware uses each G01 as an instruction to go from the last coordinate specified in the last G01 statement to the new coordinate in the next G01 statement. In gcode, the speed is "modal" which means setting it once applies until you set it to a different value. So when I set the pattern speed to 1000 mm/sec using G01 F60000, as in the example above, that speed is applied to all motion. Sandify doesn't allow for speed changes within the pattern file but gcode does. In fact, gcode allows setting speed on each and every segment described by a sequence of G01 statements. For example,

G01 X112.000 Y554.260 F6000

tells the controller to move the ball from wherever it is to (112,554.26) at a speed of 6000 mm/min (100 mm/sec).

I tested the idea of bumping up the edge speed by manually editing a pattern file so that the edge motion runs at 1000 mm/sec while the drawing speed is 100 mm/sec. First I generated a pattern in Sandify. Then I used notepad++ to search for and mark all gcode statements that include a point on the edge of the table. Then I went through the file and looked for all the edge to edge movement and appended F60000 to those statements. Since speed is modal, I had to append F6000 to the statements that return to drawing on the table so they'd draw at 100 mm/sec to preserve pattern detail. 

Here's a portion of the manually edited file (right) compared to the original file (left). I added speed changes highlighted in orange. It took me about 15 minutes to manually make the edits on this relatively small pattern file.

The video below shows the results of the test- the first is run at 100 mm/sec for all motion, and about half way through the video it switches to the same pattern run at 100 mm/sec for drawing and edge motion increased to 1000 mm/sec. Acceleration is set to 5000 mm/sec^2 for both. The 100 mm/sec pattern took 25:42 to complete and the dual speed version took only 15:13, shaving 10:29 (and a lot of boredom) off the completion time.

This test convinced me that it was worth the effort to try to automate the dual speed process.

Time to program again...

Each G01 line in the Sandify pattern file specifies a point somewhere on the table. Every time the controller board reads a new line of the pattern file, it figures out how to move the motors to go from the previous point to the new point, and applies whatever speed has been specified (subject to acceleration set in the controller's firmware).

I want to specify two speeds, one for the drawing, and one for the edge motion. That will allow me to use a low speed for the drawing that will preserve the fine detail in the pattern and a high speed for the edge motion so that the pattern will finish drawing faster.

Each segment (any two sequential points specified in the pattern file) either draws a line on the table or moves the ball around the edges of the table. The program has to figure out which is which and then apply the low or high speed appropriately.

The first step in figuring out whether a segment specifies drawing on the table or moving along the edge is to figure out where the two end points are among nine possible locations- the four corners, the four edges, or on the table.

The nine possible locations for any single point in the pattern file.

But how do you know the location of a given point? You read the minimum and maximum values of X and Y out of the original file. A is at (minx, miny), B is at (minx, maxy), etc. A point on the left edge is at the minimum X value, but not minimum or maximum Y value (those specify the corners A and B).

Once you know the two positions, it's simple logic to determine if the the segment draws on the table or moves the ball along an edge. Actually, the locations are intermediate values that are not entirely necessary to use. One could just compare X and Y values of the two points and use them to decide the speed, but the locations make it a little easier to understand the logic of the program, to write it, debug it, and to maintain it.

If you know the locations of the two points, you know if that segment draws a line on the table. For example, if the first point is at corner A and the second point is at T, TE, C, or RE, the segment will draw a line on the table, so it should happen at the lower speed. If the second point is anywhere else, it will be edge motion at high speed. If the first point is at TE and the second point is either B or C, the segment is along the edge and movement should happen at the high speed. If the second point is anywhere else, the motion will draw a line on the table so it should happen at the lower speed.

The program I wrote does just what is described above. It compares locations of points specified in sequential G01 lines, determines whether the segment draws a line or moves along the edges and appends the appropriate speed designator to each line.

This program was a lot easier to write than the one I had previously written to remove excess edge motion, but this was a much simpler problem to solve.

The Result

I wrote the post-processor program,, in Perl. Input to the program is the drawing speed, edge speed, and Sandify pattern file name and coordinates of the home point. Output is an edited pattern file using the input file name with the low and high speeds appended. It scans a Sandify pattern file line by line, locates edge motion and sets it to run fast while setting all other motion (that actually draws the pattern) to run slowly to maintain detail. The speed values entered can be the same value if you don't want the speed to change during a pattern.

The Perl program,, can be downloaded here. There are lots of comments so it should be pretty easy to understand it and make changes if you want.

You'll need to have Perl on your computer to run this program. It was written using Perl 5.32 in Windows, but it doesn't use any exotic stuff that may have changed, so it will probably work on older versions of Perl, too.

To run the program, open a command line console, type "perl -w" and then follow instructions:

As it states, there's no error trapping, so type carefully and open the output file to check it before you try to run it on your table. Remember- speeds are specified in mm/min, NOT mm/sec!

Here's a short video of a pattern that was processed with running on Arrakis.

Thursday, August 12, 2021

An Old Project: The Snakebite Extruder

There's recent interest in the forums on different ways to drive the filament through the hot-end, especially as it seems that the teeth in some gear driven extruders result in artifacts visible in the surface of the prints. 

Here's an example of the problem:

The wood-grain looking waviness in the print surface seems to be coming from the gear teeth in the extruder.

There's an interesting thread on the subject at the Duet3D forums here.

Here's one designer's idea about a different way to drive the filament. 

Here's a recent design that looks very interesting- similar to the one above:

Both of those extruders rely on rolling threads into the filament to drive it through the hot-end. I explored that concept in a crude way several years ago.

Back in 2014, 1.75 mm filament was a new thing, and extruder jams were everyone's biggest problem in 3D printing. I thought that what was needed was a very strong push-force extruder that would be able to force filament through the hot-end and nozzle under almost any circumstances, including a partial blockage of the nozzle.

My new design came about when I found myself a little bored at a makerspace meeting and and started fooling around with a piece of filament and a 6-32 nut I found on the table where I was sitting. I noticed that the nut could be threaded onto the 3 mm filament. That got me thinking that I could use that idea in an extruder to drive the filament by spinning the nut with the motor. 

One problem with that idea was that the nut fit tightly on the filament and caused the filament to twist when the nut was turning. I needed something to prevent the filament from twisting. I decided to add a second nut, rotating in the opposite direction, figuring that if one nut twists the filament, the second one will untwist it. The second nut would have to have the opposite (left-hand) threads. Hmmm.

I did a little research and found that one can buy left-hand threaded 6-32 taps very cheaply (about $7 IRIC), so I ordered one and used it to make a left hand threaded 6-32 nut from a small piece of mild steel.

The next problem was the gears to drive the two nuts. A little shopping found sets of plastic gears for about $2 at American Science and Surplus that would do the job. I added some 5mm diameter brass tubing, and some small bearings to fit the tubing and it was almost done.

Total invested funds- about $30, most of which went to the Budaschnozzle hot-end that, believe it or not, was considered one of the more reliable designs available at the time. I can't say enough bad things about that hot-end but that's not what this post is about, so I'll just leave it alone.

The final final snakebite extruder, assembled. The green printed part is 3 pieces, all indexed to each other to ensure proper alignment when they are assembled. The red and blue gears are just press fit onto 5mm brass tubing and there are bearings at both ends of both pieces of tubing.

Did it work? Yes and no. It was fine at driving the filament, but retraction proved problematic. If the threads in the two nuts didn't match exactly and/or the hole diameters were a little different, one nut experienced more friction with the filament than the other. It wasn't enough to allow the filament to twist but it interfered with retraction. Also, the nuts had fixed diameter, and in those days, filament diameter was poorly controlled, so it would occasionally run into a blob on the filament that wouldn't fit through the nuts.

I thought about using threaded collets that would allow adjustment to fit different filament diameters, or even spring loaded collets to allow automatic adjustment, but ultimately abandoned the project when 1.75 mm filament became the standard to allow higher speed printing. 

The first prototype of the snakebite extruder. I went from this to the "final" design in about a week. The nuts are soldered to the ends of the brass tubes running through the two gears on the sides of the extruder. The mechanical force tended to push the two side gears apart, so I redesigned the top cover to help hold them together.

Here is an intermediate version assembled with the hot-end for print testing. I eventually used smaller gears to drive the nuts. With this 1:1 gearing, a full rotation of the motor drove the filament about 0.8 mm, so with 16:1 ustepping and a 200 step/rev motor, it was about 4031 usteps/mm. The result was slow but very smooth extrusion.

Here is the very first test print made using the snakebite extruder. You can see that there were some retraction problems (and ringing which is not the problem that started this post).

The top of the extruder, with smaller filament drive gears, opened so you can see the gears and bearings. The green part is actually two pieces that fit tightly together to capture the bearings.

Comparison of an early version to the final, size-reduced version.

The three printed pieces of the extruder assembled.

Side view of the final extruder showing how the gears mesh. The large green gear was press fit onto the motor shaft and was able to fit through the hole in the printed base of the extruder.

A print made using the snakebite extruder. It had excellent surface quality except for the random loop-blebs scattered over it.

A close-up of the blebs. I suspect it was part of the retraction problem.

Here are some videos I made of tests of the snakebite extruder:

Monday, August 2, 2021

More Bike Stuff

I've been riding the Priority Continuum Onyx (PCO) daily for about 4 months now (see my post here) and have made a few changes for comfort and convenience. I've also, finally, had to do some maintenance/repairs. I had a flat tire on the rear wheel, and the front brake developed a horrible squeal. 

The flat tire repair wasn't hard, but getting the shifter cables off the rear wheel proved to be a little difficult. However, once they were off, the repair went as any flat tire repairs does, and putting the wheel back on the bike and reattaching the shift cables was no problem.

The brake squeal was fixed by cleaning the brake disc and pads with disc brake cleaner followed by scuffing them with sand paper and a wipe with IPA. A total of about 15 minutes was all it took.

Other than those two minor issues, the bike has performed flawlessly. Shifting is always instantaneous and silent, the generator that powers the head and tail lights keeps humming right along. 

I list the stuff I added/removed from the bike, below:

Safety gear

I finally replaced my 20+ year old Giro helmet with what I have found to be a much more comfortable Specialized Echelon II helmet in flat black to match the bike. Back in the Giro helmet days, helmets came with a bunch of different thickness foam pads to adjust the fit. Now they have a single thin layer of foam and a knob on the back of the helmet that you turn and you can feel the helmet hugging your head as it tightens up.

Specialized Echelon II helmet. Very comfortable and the matte black finish matches the Priority Continuum Onyx bike.

I like to ride in the evening because it's usually cooler, less windy, less traffic, and I won't get sunburned. Staying alive when riding at night requires being seen. To that end I am using a set of Cygolite Hotrod lights that are small, light, rechargeable, and bright, to supplement the PCO's built in head and tail lights. I put the white light on the left side of the fork and the red light on the back of the bike's rack. Their batteries are good for more than a week of my riding between charges.

Cygolite Hot Rod lights mount on the bike using stretchy rubber straps. I put the white one on the left side of the fork and the red one on the back of the rack on my bike. The straps are secure and seem to hold up in exposure to weather. The lights are rainproof, too.

I need my hands to work, so I bought some gloves to protect them in case I fall, and they are reflective so my hands will be quite visible at night when signaling turns, etc. They aren't great cycling gloves- not much padding for my palms, and they have seams between the thumb and forefinger that make using the twist shifter uncomfortable, so when they wear out I'll replace them with proper cycling gloves.

Reflective glove lit by the flash in my phone. Normally just looks gray with a little color. The colors you see depend on the angle you view them from.

I bought a 247 Viz reflective vest to ensure that I'd be seen at night. This thing is very bright and easy to fold up and carry in my bike bag. It will fit over my coat in winter.

I added reflective tape to the wheels, helmet, and rack, and may add even more.  You can never have too many reflectors on a bike!

I added a Hafny bar-end rear view mirror so I can more easily see if someone is approaching from the rear. The mirror is made of polished stainless steel, so should be more scratch resistant than polycarbonate mirrors, and it won't break if the bike falls over or I crash (though the mount may break). The mount seems well designed and easy to install and adjust. The mirror is convex and gives a wide angle view of things approaching from behind, but the optical quality isn't as good as a glass or polycarbonate mirror. 


While I was waiting for the PCO to arrive after I ordered it in January, I also ordered a Deploy bag from Timbuk2 that was offered at a steep, close-out discount. It is convertible from a pannier to a backpack. It has some plastic clips that lock it to the rack on the bike quickly and easily. The bag is made of some rubberized (?) nylon with a top that rolls up and keeps whatever you carry dry, even in pouring rain. I carry my ancient, heavy, thick, Thinkpad laptop to work in it every day, and it can hold quite a lot of groceries.

I also have a small bag from REI that I've had for many years that fits under the seat for emergency tools. I don't have it on the bike all the time- just when I'm going on longer rides. Someday I'll probably regret not using it all the time.


I have a Pearl Izumi bike jacket that I have been using for many years. It's waterproof and breathable, has long sleeves that cover my arms even when stretched out on the bike, and and extended "tail" that covers my lower back in riding position. It's a great jacket, except for one thing- it has no pockets! That is a never ending source of frustration for me. I have looked at many other biking jackets and find that about half of what's out there has no pockets or just one pocket at the lower back. What are they thinking? Real people have to carry stuff when they are riding. There isn't always someone in a sag wagon driving along behind the riders to carry their crap.

I swapped the PCO seat for the Serfas Rx seat from the old Cannondale I was riding because the PCO seat just wasn't very comfortable for my pelvic geometry. The Serfas seat is split down the center and the two halves can rotate to conform to the shape of your (my) ass bones. The padding on the seat is very dense, not squishy, and is comfortable even on long rides.

I also bought a pair of Ergon GP1 grips to replace the ones that came on the PCO. I was finding that my hands were getting numb after a few miles of riding with the original grips.

I added a cheapo water bottle cage - nothing special, but it does the job.


Fortunately there isn't much to do to the bike, and I was already well equipped with metric tools that I have collected over many years of working on bikes, cars, 3D printers, and electronics. I do carry a small multi tool when I ride for just-in-case. I also carry a CO2 inflator, patch kit and tire levers. The bike has 15mm nuts on the axles and no quick release, so I should start carrying a 15mm wrench, too. Priority Bicycles supplied a decent 15mm wrench with the bike.

Sette multitool with uSD card for scale. I got this tool from Pricepoint many years ago. No, the uSD card didn't come with the tool.

A few years ago I bought a 3D printer that came with a set of hex screwdrivers. I had never heard of the brand- Bondhus- but I was impressed with them. I looked them up and it turns out you can buy them on I have since bought another set of the hex drivers and torx drivers because they are good and inexpensive- much better quality than anything from I ever got at Harbor Freight Tools. I have yet to break or damage any of them and they are much more comfortable to use than the L shaped drivers, though they don't fit everywhere an L shaped tool will fit.

I have to say the best, recent tool acquisition was the Ryobi One+ high pressure inflator that has replaced my crappy old floor pump. OMG it is fantastic! No more struggling with a floor pump to try to maintain tire pressure. A quick 10 second squeeze of the trigger tops off each tire and I'm ready to roll without working up a sweat before I even start to ride. If you have any of the Ryobi One+ tools/batteries, and you have a bicycle in your household, this one should be your next new tool. I paid $25 for it and feel like it was the best $25 I have spent in a long time.

When I repaired the flat tire on the rear wheel, the Ryobi inflator made quick, easy work of refilling the tire. I can't say enough good stuff about this tool!

Monday, May 17, 2021

No more floor pump for me!


About a year ago I decided it was long past time to replace my ancient DeWalt 12V drill/driver as the NiMh battery was failing, again. I did some research and decided to buy an 18V, brushless Ryobi P252 that came with two, 2Ah Li ion batteries and a charger for about the same price as a replacement NiMH battery for the DeWalt unit.

The Ryobi driver is great. It's small, light, and very powerful thanks to Li ion batteries and the brushless motor. It has a white LED that lights up the work and a magnetic tray for holding bits or screws.

Here's a review of the driver:

A few months ago I was anticipating an upholstery project and I wanted to get a stapler so I did more looking. I ended up buying a Ryobi electric stapler that uses the same 18V batteries that the drill uses. The stapler slams staples deep into hardwood like it's butter!

The stapler is every bit as good as the drill/driver.

Here's a review of the stapler:

I got a new bike in March and have been using an old floor pump I've had for about 15 years to keep the tires topped up. The floor pump is a stupid design that has a screw holding the metal tube into the plastic base of the pump. The screw goes into the high pressure area and had a rubber seal that was leaking. I replaced the seal with a couple thick o-rings and some plumber's grease but no good- it still leaked. I had to pump that dumb thing a lot to get a little air into the tire as the pressure was going up, and I could hear it leaking at the screw with each stroke, as if it were laughing at my effort.

I decided to look for a replacement for the floor pump. After a bit more research I found that Ryobi makes a high pressure inflator that uses the same 18V batteries as the drill and stapler. Perfect! I picked one up at Home Depot for $25- less than the cost of a decent floor pump, and cheaper than ordering it via amazon. 

The inflator can pump up to 150 psi and has a duty cycle limit of 5 minutes on/5 minutes off to prevent overheating.

I noticed a couple things about it as soon as I opened the box and connected a battery:

1) there's no lock-out on the trigger, so a very light touch will start the thing up. Don't transport it loosely in your car with a battery attached!

2) the locking chuck on the end of the hose is kind of cheesy looking. 

Other than that, it seems to be well made. It's not exactly quiet, but it really isn't too noisy either. Best of all, it takes my bike's 700x32C tires from 60 psi to 80 psi in about 10 seconds. It has a big, easy to read, backlit digital pressure gauge that lights up whenever I squeeze the trigger. 

Here's a review of the inflator that will give you some idea of operation:

I think floor pumps are officially obsolete! I don't think I'd try to inflate a car's tires with it, but it's perfect for bikes.

Before you ask, no, I am not receiving any sort of compensation for this post- I just like these tools and thought I'd share. Also, I'm just someone who does a lot of hobby stuff and find these tools more than adequate for my needs.