Tuesday, January 27, 2009
Wabi-sabi
I like this description of Wabi-sabi. It describes the approach I've taken to my projects lately; I don't let myself get hung up on imperfections. Each of my projects has blemishes, and that is how they should be.
Sunday, January 25, 2009
Love my Dewalt planer!
Thank you, Dewalt! Right after I got my DW735 planer, I decided it'd be a good idea to plane some wood with countersunk nails in it, and managed to take a couple of chips out of the blades, which means that I now get three little raised ridges on everything I plane. So today I remembered to buy a set of replacement blades, although I was dreading the replacement process, since I'd heard it's really painful to get them aligned properly.
It turns out that replacing the blades is a delightfully easy and elegantly designed process. A single allen wrench is all that's required, and it came with the tool, in its own holder. The process of disassembly and replacement is obviously something they put a lot of thought into: everything's easy to reach and simple to remove. There was almost no dust inside the machine at all. And the allen wrench even has magnets on the handle for lifting out the blades and guards. The whole process is alignment-free; the blades have slots that fit squarely over pins on the shaft.
The best part? The blades are reversible. Whereas a lot of companies go to great lengths to make big profits on replacement parts, Dewalt essentially included a replacement set with the tool.
That rocks! That's the kind of quality that makes me willing to spend twice the price of a cheaper tool. We've spent thousands of dollars on Dewalt tools at work, and it's all been worth it. Well done.
It turns out that replacing the blades is a delightfully easy and elegantly designed process. A single allen wrench is all that's required, and it came with the tool, in its own holder. The process of disassembly and replacement is obviously something they put a lot of thought into: everything's easy to reach and simple to remove. There was almost no dust inside the machine at all. And the allen wrench even has magnets on the handle for lifting out the blades and guards. The whole process is alignment-free; the blades have slots that fit squarely over pins on the shaft.
The best part? The blades are reversible. Whereas a lot of companies go to great lengths to make big profits on replacement parts, Dewalt essentially included a replacement set with the tool.
That rocks! That's the kind of quality that makes me willing to spend twice the price of a cheaper tool. We've spent thousands of dollars on Dewalt tools at work, and it's all been worth it. Well done.
Tuesday, January 20, 2009
Obama's inagural address
Here's the text of the speech. Lots of grand ideas and stirring words, but I really like that he said this: "we reject as false the choice between our safety and our ideals".
Saturday, January 17, 2009
Belkin routers suck
The other day I lauded Turtle Wax for their response to one of my blog posts about their suboptimal product packaging, and mentioned the evil that is astroturfing. And today I read that a
Belkin employee was caught using mechanical turk operators to astroturf positive reviews for a crappy Belkin router. Boo for Belkin.
Belkin employee was caught using mechanical turk operators to astroturf positive reviews for a crappy Belkin router. Boo for Belkin.
Tuesday, January 13, 2009
A 4-color proof
"A four color proof", a parody of "A Boy Named Sue" by Johnny Cash.
Dedicated to Appel, Haken and Koch, with thanks to Hilarie Orman.
Released into the public domain, January 13 2008.
Well my daddy left home when I was three
And he didn't leave much for ma and me
Just a few conjectures and an empty bottle of booze.
Now, I don't blame him cause he run and hid
But the meanest thing he ever did
Was to leave us with a 4-color sketch, unproved.
Well he must a' thought it quite a joke
And it got a lot of laughs from a lot of folks
It seems I had to prove my whole life through.
Some gal would giggle and I'd get red
And some guy'd laugh and I'd bust his head,
I tell ya, it aint easy writin' a 4-color proof.
Well, I grew up quick and I grew up mean,
My predicates got hard and my insights keen,
I'd roam from town to town to seem aloof.
But I made a vow to the moon and stars
That I'd search the journals and seminars,
And kill that man who gave me that awful proof.
Well, it was in Atlanta in March '08
And I'd just hit town and was feeling irate,
so I thought I'd hit G4G and see what's new.
At an old card table, on a fractal rug,
Dealin' puzzles, lookin' smug,
Sat the dirty, mangy dog that claimed that proof.
Well, I knew that snake was my own sweet dad,
From a worn-out picture that my mother'd had,
And I knew that frumpy coat and his ugly tie.
He was big and bent and gray and old,
and I looked at him and my blood ran cold
And I said: "How do you do? 4-color's true!
Now you gonna die!"
Well I hit him hard right between the eyes,
with a manuscript, about 10 feet high,
With nineteen hundred thirty-six cases proved.
And I showed him the code, and the bill I owed,
For the twelve hundred hours of time I'd stole'd,
And said "Just read that through and stay unmoved!"
I tell ya, there'd been longer proofs,
But I really can't remember whose
It read like a dictionary and strained the eye.
I heard him laugh and then I heard him cuss,
He went for his pen and I pulled mine first
He stood there lookin at me and I saw him smile.
And he said: "Son, this world is rough
And to make it in math he's gotta be tough
And I knew I wouldn't be there to help ya along.
So I give ya that sketch and I said goodbye,
I knew you'd have to get tough or die
And it's that theorem that helped to make you strong."
And he said: "My sketch was one hell of a blight,
And I know you hate me and you've got the right
To graduate now, and I wouldn't blame you if you do.
But you ought to thank me, before you go,
For the vectors in the plane and the snarks that you show,
Cause it's my faulty proof that got you through.
I got all choked up and I threw down my proof
And I cited his work and he gave me my due
And I came away with a different point of view.
And I think about him, every now and then
Every time I try, and every time I win
And if I ever have a son, I think I'm gonna have him prove,
FLT or Goldbach, or anything but 4-color cycling! I still hate that proof!
Dedicated to Appel, Haken and Koch, with thanks to Hilarie Orman.
Released into the public domain, January 13 2008.
Well my daddy left home when I was three
And he didn't leave much for ma and me
Just a few conjectures and an empty bottle of booze.
Now, I don't blame him cause he run and hid
But the meanest thing he ever did
Was to leave us with a 4-color sketch, unproved.
Well he must a' thought it quite a joke
And it got a lot of laughs from a lot of folks
It seems I had to prove my whole life through.
Some gal would giggle and I'd get red
And some guy'd laugh and I'd bust his head,
I tell ya, it aint easy writin' a 4-color proof.
Well, I grew up quick and I grew up mean,
My predicates got hard and my insights keen,
I'd roam from town to town to seem aloof.
But I made a vow to the moon and stars
That I'd search the journals and seminars,
And kill that man who gave me that awful proof.
Well, it was in Atlanta in March '08
And I'd just hit town and was feeling irate,
so I thought I'd hit G4G and see what's new.
At an old card table, on a fractal rug,
Dealin' puzzles, lookin' smug,
Sat the dirty, mangy dog that claimed that proof.
Well, I knew that snake was my own sweet dad,
From a worn-out picture that my mother'd had,
And I knew that frumpy coat and his ugly tie.
He was big and bent and gray and old,
and I looked at him and my blood ran cold
And I said: "How do you do? 4-color's true!
Now you gonna die!"
Well I hit him hard right between the eyes,
with a manuscript, about 10 feet high,
With nineteen hundred thirty-six cases proved.
And I showed him the code, and the bill I owed,
For the twelve hundred hours of time I'd stole'd,
And said "Just read that through and stay unmoved!"
I tell ya, there'd been longer proofs,
But I really can't remember whose
It read like a dictionary and strained the eye.
I heard him laugh and then I heard him cuss,
He went for his pen and I pulled mine first
He stood there lookin at me and I saw him smile.
And he said: "Son, this world is rough
And to make it in math he's gotta be tough
And I knew I wouldn't be there to help ya along.
So I give ya that sketch and I said goodbye,
I knew you'd have to get tough or die
And it's that theorem that helped to make you strong."
And he said: "My sketch was one hell of a blight,
And I know you hate me and you've got the right
To graduate now, and I wouldn't blame you if you do.
But you ought to thank me, before you go,
For the vectors in the plane and the snarks that you show,
Cause it's my faulty proof that got you through.
I got all choked up and I threw down my proof
And I cited his work and he gave me my due
And I came away with a different point of view.
And I think about him, every now and then
Every time I try, and every time I win
And if I ever have a son, I think I'm gonna have him prove,
FLT or Goldbach, or anything but 4-color cycling! I still hate that proof!
Monday, January 12, 2009
Turtle Wax rocks :)
Marc, a rep from Turtle Wax, left a comment on yesterday's rant about poor product packaging. I really respect a couple of the things he said:
That alone is praiseworthy, even if they had decided not to fix it. But apparently they do have a fix in the works, and he even gave a timeline. That rocks.
Astroturfing is an insidious practice that society isn't really prepared to handle yet. So I'm glad when companies take the high road and respond honestly instead of ignoring their customers or being deceptive. Thanks, Marc!
- He acknowledged that he works for the company, and
- He acknowledged that a defect exists.
That alone is praiseworthy, even if they had decided not to fix it. But apparently they do have a fix in the works, and he even gave a timeline. That rocks.
Astroturfing is an insidious practice that society isn't really prepared to handle yet. So I'm glad when companies take the high road and respond honestly instead of ignoring their customers or being deceptive. Thanks, Marc!
Sunday, January 11, 2009
Also, turtle wax sucks.
I must really sound like a curmudgeon sometimes, with all this complaining. Stupid product tricks do make me grumpy, but they also mystify me: why do premium brands sully their reputation with silly, preventable mistakes? Is it a random fluke? Price competition from cheap brands? Complacency? Mediocrity that accumulates as a company ages?
I bought some Turtle Wax to use on my cast iron tool worktables. Here's a company that's over 60 years old, whose product probably hasn't had to change much over that time. It came in a little tub with an applicator on top. Great.
Except that it's virtually impossible to get the yellow lid off without taking off the lid to the tub, and the tub is so flimsy that as the lid flies off, you end up with a handful of wax, and a gooped up lid attached to the lid holding the applicator safely inside. Seriously, wtf?
Did nobody at Turtle, Inc. ever actually think to try their product? Did environmental DDT contamination cause statistically thinner shells over time?
Even Sawstop didn't get it right with their $5000 cabinet saw. Reviews called it the finest saw they'd ever used, but both of the ones we got at work had some stupid missing or incorrect pieces or something.
I bought some Turtle Wax to use on my cast iron tool worktables. Here's a company that's over 60 years old, whose product probably hasn't had to change much over that time. It came in a little tub with an applicator on top. Great.
Except that it's virtually impossible to get the yellow lid off without taking off the lid to the tub, and the tub is so flimsy that as the lid flies off, you end up with a handful of wax, and a gooped up lid attached to the lid holding the applicator safely inside. Seriously, wtf?
Did nobody at Turtle, Inc. ever actually think to try their product? Did environmental DDT contamination cause statistically thinner shells over time?
Even Sawstop didn't get it right with their $5000 cabinet saw. Reviews called it the finest saw they'd ever used, but both of the ones we got at work had some stupid missing or incorrect pieces or something.
Laguna LT14 bandsaw sucks
We just got a bandsaw at work, a $1600 Laguna LT14 SEL. We could have gotten a much cheaper unit from the likes of Jet or Grizzly, but we figured it's worth a premium price to get a tool that's elegant, high quality and reliable.
Presumably Laguna knows their customers expect a premium tool. So it totally mystifies me that setting up the saw for 110v took me several hours and multiple trips to the hardware store.
Seriously, though. This is woodworking; people care about brand names, and they talk to their friends. Laguna makes a lot of different types of tools, so they stand to make a lot of sales when they impress a customer with a quality product. We bought ours because one of the guys in the group recently bought a 16" bandsaw from them. So it's mind-rendingly stupid to ship a product that's $10 and a few hours of QA short of working correctly.
Now, the website specs only list the saw as working at 220v. But the manual shows both of the 14" models as supporting 110v as well, although it doesn't say anything about how to select between the two. Also, the unit doesn't ship with a plug. That sent me on hardware store trip #1, where I spent half an hour purchasing a $4 part. Here's an idea: if people are spending $1000 more than they have to on your product, their time is probably worth a lot to them, so don't waste it.
I consulted the motor housing, which does actually describe how to rewire for 110v. Now, a nice piece of equipment would have a block of screw terminals so that all it takes is a screwdriver to reconfigure it. But no, all the wires were spliced. So I got to spend an hour looking for wire nuts, then looking for my soldering iron, in order to resplice the wires according to the instructions on the motor.
Finally we try to turn it on, and get nothing but a buzz. We notice that the box the switch is in also mentions 110v vs. 220v, but someone at the factory has blacked out the 110v text with a permanent marker. Right on the side of the saw, just about at eye level. So much for La Bella Forma.
So, I consult the interwebs. According to their forums, you have to call up their tech support and order a 110v switch box if you want to use the saw at 110v. A $100 switch. A $100 switch that has lots of unused terminals inside for safety switches that disable power when the panels are open, unused because this model doesn't have panel switches.
This is exactly the kind of nonsense I was trying to avoid buy spending extra on a nice tool. If you're only making $2 profit on each unit, I can understand why your manual might not be totally correct and why you didn't spend the time and money to fix the errors that inevitably happen during manufacturing. That's not to say that anyone should actually spend hundreds or thousands of dollars on a half-baked product, but at least the manufacturer has an excuse for shoddy workmanship.
But seriously, $1600 and you didn't even get the (staple-bound, fresh-off-the-inkjet printer) manual right? You couldn't even be bothered to ask if I'd like the correct power switch or the right kind of power plug? Astounding.
Presumably Laguna knows their customers expect a premium tool. So it totally mystifies me that setting up the saw for 110v took me several hours and multiple trips to the hardware store.
Seriously, though. This is woodworking; people care about brand names, and they talk to their friends. Laguna makes a lot of different types of tools, so they stand to make a lot of sales when they impress a customer with a quality product. We bought ours because one of the guys in the group recently bought a 16" bandsaw from them. So it's mind-rendingly stupid to ship a product that's $10 and a few hours of QA short of working correctly.
Now, the website specs only list the saw as working at 220v. But the manual shows both of the 14" models as supporting 110v as well, although it doesn't say anything about how to select between the two. Also, the unit doesn't ship with a plug. That sent me on hardware store trip #1, where I spent half an hour purchasing a $4 part. Here's an idea: if people are spending $1000 more than they have to on your product, their time is probably worth a lot to them, so don't waste it.
I consulted the motor housing, which does actually describe how to rewire for 110v. Now, a nice piece of equipment would have a block of screw terminals so that all it takes is a screwdriver to reconfigure it. But no, all the wires were spliced. So I got to spend an hour looking for wire nuts, then looking for my soldering iron, in order to resplice the wires according to the instructions on the motor.
Finally we try to turn it on, and get nothing but a buzz. We notice that the box the switch is in also mentions 110v vs. 220v, but someone at the factory has blacked out the 110v text with a permanent marker. Right on the side of the saw, just about at eye level. So much for La Bella Forma.
So, I consult the interwebs. According to their forums, you have to call up their tech support and order a 110v switch box if you want to use the saw at 110v. A $100 switch. A $100 switch that has lots of unused terminals inside for safety switches that disable power when the panels are open, unused because this model doesn't have panel switches.
This is exactly the kind of nonsense I was trying to avoid buy spending extra on a nice tool. If you're only making $2 profit on each unit, I can understand why your manual might not be totally correct and why you didn't spend the time and money to fix the errors that inevitably happen during manufacturing. That's not to say that anyone should actually spend hundreds or thousands of dollars on a half-baked product, but at least the manufacturer has an excuse for shoddy workmanship.
But seriously, $1600 and you didn't even get the (staple-bound, fresh-off-the-inkjet printer) manual right? You couldn't even be bothered to ask if I'd like the correct power switch or the right kind of power plug? Astounding.
Friday, January 09, 2009
Thursday, January 08, 2009
Engineering is plumbing, not math
Engineering is much more like plumbing than math.
As a programmer, being productive rarely involves finding new O(log(n)) algorithms. Adding new features and even optimizing for performance has much more to do with trying to figure out how to turn a vector of scoped_ptr<FooFactory>& into const ThreadableFooInstanceWrapper* tuples, regardless of whether the change actually affects the underlying algorithm in a nontrivial way.
My coworker pointed out that this tendency isn't limited to computer science. Modern digital devices come with slick programming interfaces, accessed over buses like I2C, SPI and CAN. All the datasheets have timing diagrams down to the individual bit levels for these standard, widely used interfaces, and at some point you'll get to hook up a logic analyzer to the lines and pull out the diagram to see why your commands don't seem to be affecting the chip. Oh, also, it needs 3 different power supply rails, and the following 6 very specific capacitors placed within 1cm of the power pins, before it'll do anything at all.
The semantic thing you're trying to get the chip to do -- turn off output B, enable automatic black level correction, or set the refresh rate -- is utterly straightforward. But hooking up the plumbing correctly so you can tell it that takes up a huge amount of the development time.
Mechanical engineering has that nature too: brackets, matching up bolt patterns between standard parts, sourcing a flange button head cap screw instead of the ordinary button head cap screw because the head is 2mm shorter and clears the bolts on the other leg of the L bracket.
When faced with a big project, an engineer's first impulse is to throw away what looks like a big mess of plumbing and start reinventing the core machine. That's almost always the wrong thing to do. Expect to spend at least half your time on plumbing by the time the system ships.
I suspect that engineering would benefit from a more explicit focus on plumbing skills. Yes, it's good if a programmer can break quicksort down into little pieces, but how many times have you had to implement quicksort? Okay, now how many times have you spent an hour trying to figure out how to get a new C++ library to work because the author didn't give any example code, and you didn't know which kinds of objects had to be initialized and in what order just to get the library initialized properly?
How much time have you spent pulling data from one source into a data structure so you can stuff it into a different data source in a slightly different format? Maybe CS departments need a Software Plumbing Research Group figuring out how to cut down on all the manual plumbing we have to do, and teaching classes on how to quickly rig up conduits between AJAX data sources and STL data structures used by C++ libraries.
And if you're on the designing end of a system, it suggests that before you write the detailed document for all the clever algorithms at the core of your system, you should write up some very straightforward recipes, with lots of ready-to-compile, complete examples (no pseudocode!) for how to build, use, and safely change what you've built. Make sure to copy and paste the examples into a clean environment and make sure it builds as advertised.
Stop assuming that algorithms are the important part and treating the plumbing as an afterthought, and you'll spend less time being frustrated at how hard it is to reach the semantics to make your tweaks. The plumbing's there; deal with it. And realize that your ability to hack the plumbing efficiently (or simplify it without crippling the system) is a big part of your overall productivity as an engineer.
As a programmer, being productive rarely involves finding new O(log(n)) algorithms. Adding new features and even optimizing for performance has much more to do with trying to figure out how to turn a vector of scoped_ptr<FooFactory>& into const ThreadableFooInstanceWrapper* tuples, regardless of whether the change actually affects the underlying algorithm in a nontrivial way.
My coworker pointed out that this tendency isn't limited to computer science. Modern digital devices come with slick programming interfaces, accessed over buses like I2C, SPI and CAN. All the datasheets have timing diagrams down to the individual bit levels for these standard, widely used interfaces, and at some point you'll get to hook up a logic analyzer to the lines and pull out the diagram to see why your commands don't seem to be affecting the chip. Oh, also, it needs 3 different power supply rails, and the following 6 very specific capacitors placed within 1cm of the power pins, before it'll do anything at all.
The semantic thing you're trying to get the chip to do -- turn off output B, enable automatic black level correction, or set the refresh rate -- is utterly straightforward. But hooking up the plumbing correctly so you can tell it that takes up a huge amount of the development time.
Mechanical engineering has that nature too: brackets, matching up bolt patterns between standard parts, sourcing a flange button head cap screw instead of the ordinary button head cap screw because the head is 2mm shorter and clears the bolts on the other leg of the L bracket.
When faced with a big project, an engineer's first impulse is to throw away what looks like a big mess of plumbing and start reinventing the core machine. That's almost always the wrong thing to do. Expect to spend at least half your time on plumbing by the time the system ships.
I suspect that engineering would benefit from a more explicit focus on plumbing skills. Yes, it's good if a programmer can break quicksort down into little pieces, but how many times have you had to implement quicksort? Okay, now how many times have you spent an hour trying to figure out how to get a new C++ library to work because the author didn't give any example code, and you didn't know which kinds of objects had to be initialized and in what order just to get the library initialized properly?
How much time have you spent pulling data from one source into a data structure so you can stuff it into a different data source in a slightly different format? Maybe CS departments need a Software Plumbing Research Group figuring out how to cut down on all the manual plumbing we have to do, and teaching classes on how to quickly rig up conduits between AJAX data sources and STL data structures used by C++ libraries.
And if you're on the designing end of a system, it suggests that before you write the detailed document for all the clever algorithms at the core of your system, you should write up some very straightforward recipes, with lots of ready-to-compile, complete examples (no pseudocode!) for how to build, use, and safely change what you've built. Make sure to copy and paste the examples into a clean environment and make sure it builds as advertised.
Stop assuming that algorithms are the important part and treating the plumbing as an afterthought, and you'll spend less time being frustrated at how hard it is to reach the semantics to make your tweaks. The plumbing's there; deal with it. And realize that your ability to hack the plumbing efficiently (or simplify it without crippling the system) is a big part of your overall productivity as an engineer.
Subscribe to:
Posts (Atom)