O:9:"magpierss":11:{s:6:"parser";i:0;s:12:"current_item";a:0:{}s:5:"items";a:10:{i:0;a:3:{s:5:"title";s:33:"The New "Cotton Club", an update.";s:4:"link";s:64:"http://www.toolshed.com/blog/SocialCommentary/CottonClub2.html,v";s:11:"description";s:765:" Why copy protection schemes don't work: check out this story on CNN about how the latest copy-protection scheme for music CD's can be disabled by using -- wait for it -- the SHIFT key, of all things.
Now that brings up an interesting dilemma. According to the DCMA, anything that can be used to disable or otherwise interfere with any digital rights management system (including copy protection) is illegal.
Does that mean the SHIFT key now violates the DCMA?
DOES THIS MEAN WE HAVE TO KEEP THE ALPHA-LOCK ON AT ALL TIMES, SO THAT ALL OF OUR E-MAIL AND WEBSITES TAKE ON A 1960's LOOK AND FEEL?
Seems appropriate, somehow. One step forward, six steps back :-) ";}i:1;a:3:{s:5:"title";s:21:"The New "Cotton Club"";s:4:"link";s:63:"http://www.toolshed.com/blog/SocialCommentary/CottonClub.html,v";s:11:"description";s:2580:" CNN is carrying an interesting story about how file sharers (aka "song swappers") have moved underground, to a high-tech equivalent of a 1920's speakeasy.
It's encrypted, it's difficult to track, and it's available by invitation only. You have to know someone on the inside who can vouch for your character -- and who knows you aren't a narc with ties to the RIAA or any other controversial group.
Once again, it's not about the technology. If the entire net itself were disconnected, you'd have people mailing CD's to each other. If they started searching the mail and made that illegal as well, people would establish other underground distribution channels just as easily.
In the book The Mystery of Capital by Hernando de Soto, the author shows how extra-legal systems evolve to supply the needs of consumers when the official, authorized, legal channels fail them. It happens all the time, especially in third-world countries with developing economic and legal systems. In many countries, buying land legally can take anywhere from 5-20 YEARS. Because of this, residents of these countries don't bother to buy land legally. They resort to more informal means.
But this phenomena is not restricted to banana-republics or small, developing countries. It happens in the first world when technological capabilities outstrip our societal and legal precedents, as witnessed with the ongoing debacles regarding file-sharing, consumer access, fair use, and so on.
And you know what? The same thing happens in companies and on teams as well.
Are those CMM-mandated procedures too difficult and onerous to complete? People will find a work-around, bypassing the intent of the CMM and filling in whatever documents are required to get by. Is that comprehensive (and manual) test plan overly lengthy and tedious? People will take short-cuts. The "extra-legal," or alternative system will evolve in any social setting where the official mechanism doesn't cut it.
The solution, of course, is to align the "official" system more closely with the needs of the people. That's easier said than done, of course, and can take years. In the mean time, the extra-legal system -- be it a skunk works project, a clandestine use of Extreme Programming or other Agile methodology, the private use of Pragmatic Programming in an otherwise dogmatic environment, or even a new-fashioned speakeasy -- will continue to thrive and serve the needs of the people. ";}i:2;a:3:{s:5:"title";s:37:"Ender's Game and Software Development";s:4:"link";s:66:"http://www.toolshed.com/blog/SoftwareDevelopment/EndersGame.html,v";s:11:"description";s:5356:"
I recently read the novel Ender's Game by Orson Scott Card. It's a science-fiction piece about a young child who is training to be the next military genius that can save Earth from devastating attack by an alien species.
As I read the novel, four main themes jumped out at me as being very relevant to software development. The hero of the story, Ender, had many gifts and attributes, but I think these were the ones that made him a success:
Ender knew that the elaborate battle formations his peers were practicing were too rigid, rehearsed, and thus could be broken. In accordance with agile and emergent principles, he broke his battle team up into smaller, autonomous units. Each unit was given a strategic goal that he coordinated, but the tactical details of how to accomplish that goal were left to the individuals at the lowest levels.
This defied the standard "command and control" logic that permeated the school, but quickly became a huge success as Ender's team won every simulated battle against larger and more experienced forces.
We can harness emergent behavior in teams the same way, by pushing control down to the lowest levels and allowing team members the flexibility to adapt to changing situations on the ground. That's the whole point of agility, in business or in software development.
But we can also harness emergence in our code the same way. Don't create an architecture with a single "command and control" entity that makes all the decisions in the system. That's bad OO design, right? Instead, you defer and push decisions down as far as you can, ultimately to the lowest-level object that has to act on it.
Ender played for keeps; he wasn't a killer and yet he was able to kill readily when the situation warranted it. His opponents didn't necessarily know that, and attacked initially with less-than-overwhelming force. They never got a second chance.
One might argue that Ender was overly violent and overreacted; killing without justifiable cause. But to Ender it was justifiable; he was simply playing to win. Playing with overwhelming force, leaving little to chance and leaving little risk of future conflict.
The emerging military doctrine of "overwhelming force" has parallels in business and development as well. Overwhelming force is simply one way to address risk management. If you are SO well prepared and have SUCH greater strength than the opposition, then the risk of failure is minimized. The greater the dichotomy, the lesser the risk.
Unfortunately, economic conditions in most companies take us into battle on a software project with "barely adequate" force. Instead, it's the project team that gets overwhelmed.
But overwhelming force doesn't have to be overwhelmingly expensive. It just has to be sufficiently strong to win.
Always play to win.
Remember the old joke where the tourist on the streets of New York asks the man "How do you get to Carnegie Hall?" To which the hip dude replies "practice, baby, practice."
Ender and his battle teams practiced more than anyone else in the school. Outside of regular school-sponsored activities, Ender organized his own training regimen. They practiced constantly, and in the end, he and his disciples were so adept at the practice sessions that the real battle felt just like another practice.
As Dave is fond of pointing out, practice is what makes you technically adept. The code katas that he posts on his blog are a first step in practicing the mental discipline and skills you need to become -- or continue to be -- an excellent programmer.
Without practice, many individuals and teams resemble rookie football players that are dropped straight into the Superbowl, under the cameras and everything. The results are not pretty.
One of Ender's most fascinating traits to me was his style of continual learning. That's a trait of Pragmatic Programmers that Dave and I have often suggested is the most important -- continually learning the technology, the people, the dynamics of the team, the problem domain, and even learning about yourself.
Ender really specialized in this area, under the most remarkably poor conditions. Even when attacked by bullies, or unfairly treated by the authorities or peers, Ender's first reaction was neither anger nor fear. He simply "made a note of it." Enemies attacking in furor reveal useful information about themselves, information that can be used in a counter-attack.
So Ender learned all the time: from his peers, his enemies, the authoritarian system, and from himself. And no matter what pain or humiliation was brought to bear on him, he decided to learn from it.
We all make mistakes. But the biggest mistake is not to learn from them.
Not a bad lesson from a work of fiction written about 20 years ago.
-- /\ndy ";}i:3;a:3:{s:5:"title";s:31:"Slashdot - How To Keep Your Job";s:4:"link";s:54:"http://www.toolshed.com/blog/News/SlashdotHTKYJ.html,v";s:11:"description";s:1137:" The Pragmatic Programmers are up on Slashdot again, this time it's the "How To Keep Your Job" Talk. The poster says, in part:
CNN.com is running an interesting story on the heels of a Forrester Research report concerning the shift of high tech jobs from the U.S. to places like China, India, and Russia......are Andy Hunt and Dave Thomas correct in recognizing this as a new reality? Personally I tend to agree with Hunt and Thomas's view (which is not completely opposed to Bruce Eckel's opinion, btw) and I also agree with their viewpoint that protectionist policies like H1B quotas and tariffs won't work to change anything for the better. So what do you think? Is this just another business cycle or is this a New World Order in IT?
Of course, we believe strongly that the world is a-changing. And with change comes opportunity.
Are you ready? ";}i:4;a:3:{s:5:"title";s:26:"How Good a Job Can You Do?";s:4:"link";s:61:"http://www.toolshed.com/blog/SocialCommentary/WorkPlay.html,v";s:11:"description";s:2564:" I'm reading Mark Twain's classic novel Tom Sawyer to my son as a bedtime story, and right after the classic "whitewashing" scene where Tom tricks his friends into painting his fence, the author notes:
If [Tom Sawyer] had been a great and wise philosopher, like the writer of this book, he would now have comprehended that Work consists of whatever a body is OBLIGED to do, and that Play consists of whatever a body is not obliged to do. And this would help him to understand why constructing artificial flowers or performing on a tread-mill is work, while rolling ten-pins or climbing Mont Blanc is only amusement. There are wealthy gentlemen in England who drive four-horse passenger-coaches twenty or thirty miles on a daily line, in the summer, because the privilege costs them considerable money; but if they were offered wages for the service, that would turn it into work and then they would resign.
That's how Tom conned his friends into painting the fence for him; he made it sound like fun, not work. Instead of paying his friends to paint the fence (which would have been work) he extracted payment from his friends for the privilege of demonstrating their prowess with the paintbrush.
There's a couple of interesting observations here. First, as soon as you turn play into work, it's not fun anymore. Maybe this explains why some folks who code all day for pay go home and code all night for free on some Open Source project. Coding for free is more fun.
The other interesting aspect to Tom's con is craftsmanship. Tom sold the idea that not just anybody could paint a fence well. Maybe only one boy in a thousand, maybe two thousand, had the talent to do it well, he claimed.
So now there's some competition involved, both against Tom and against oneself. Suddenly we have a very different situation; the other kids jumped at the chance to prove themselves, to face a new and unknown challenge head-on.
They were posed the question "how good a job can you do?" and jumped to answer it with great fervor.
Don't we all tend to react that way? My favorite clients are those on an absolutely impossible deadline, with nothing else in the way. Just you and the code. It tests your mettle.
So ask yourself this afternoon, "how good a job can I do?" Forget about the fact that you're getting paid for it, that's work. Rise to the challenge of doing your very best work, no matter how mundane the task, and now it's play.
And it's fun again. ";}i:5;a:3:{s:5:"title";s:18:"Use Your Illusion ";s:4:"link";s:68:"http://www.toolshed.com/blog/SocialCommentary/UseYourIllusion.rdoc,v";s:11:"description";s:1784:"I'm not one for biography or history books, but I found myself reading "The Last Lion" by William Manchester -- the story of Winston Churchill in the years leading up to World War II.
The amazing to me was that so many individuals and governments were perfectly aware of the rise of a newly-armed Germany, in blatant violation of treaty obligations, yet who chose to simply ignore it. Herr Hitler promised that each aggressive move would be his last, and a war-weary world sat back and said "well, okay. Just this once" again and again.
Yet while we sit back and laugh or condemn the events and attitudes of that time, the biographer makes a stunningly obvious observation:
Every generation cherishes illusions which baffle its successors (who passionately defend their own).
How on earth could they have fallen for it? we ask, not realizing that our children and grandchildren will say the exact same thing about us concerning the grand affairs of the world.
Pragmatism insists on a certain amount of skepticism. Anyone can shower you with claims, but how many can actually back them up? Individuals get away with ill-founded claims every day in business, whether it has to do with the predatory practices of Microsoft or the peculiar provenance of Linux. I won't even mention that fact that some skilled politicians can even get whole countries to go to war -- apparently unencumbered by actual, provable facts.
And whose fault is that? The business analysts, the politicians, or the media? Nope, none of the above. The fault is ours and ours alone. It is up to us to seek proof of our convictions, whatever they may be.
It is up to us to decide which is right -- and which is an illusion.
";}i:6;a:3:{s:5:"title";s:24:"The Trip-Packing Dilemma";s:4:"link";s:52:"http://www.toolshed.com/blog/News/TripPacking.html,v";s:11:"description";s:380:" The March edition of our Construction Column in IEEE Software magazine, entitled The Trip-Packing Dilemma is now online for your reading pleasure.This time out, we look at how you might balance coding for flexibility against the danger of overbuilding for a future that never arrives.
Enjoy! ";}i:7;a:3:{s:5:"title";s:20:"What's in YOUR shed?";s:4:"link";s:68:"http://www.toolshed.com/blog/SocialCommentary/WhatsInYourShed.html,v";s:11:"description";s:1027:" According to the BBC, a New Zealand man is building a cruise missile in his garage with parts bought on the internet. Now while us U.S. taxpayers are shelling out $1.5M or more for a cruise missile, this guy is building it on the cheap, for less than $5,000.
The New Zealand Herald reported that "neighbours did not appear to be aware that Mr. Simpson had turned his attentions to missiles, although they did know he was testing pulse jets in his shed, north-west of Auckland."
Pulse jets in his shed?
I'm a big fan of Do It Yourself projects, but pulse jets? Complete with GPS guidance system? (that part only cost $120, and came with the software needed to interface with a flight-control computer). Mr. Simpson (if that is his real name) is not revealing HOWTO instructions on building the missile, but is instead trying to raise awareness of just how easy it is.
Apparently, building a cruise missile ain't rocket science... ";}i:8;a:3:{s:5:"title";s:13:"Herd Products";s:4:"link";s:65:"http://www.toolshed.com/blog/SocialCommentary/HerdProducts.html,v";s:11:"description";s:3428:" I'm a virtual kind of guy. I try to do most shopping over the net where I can, the major exception being groceries, which my wife is kind enough to take care of for the most part.
But as luck would have it, I was out of shampoo and razor blades and she was otherwise occupied, so I had to head down to the Eckard's myself. That was my first mistake. I hadn't been down there for a while, so my first surprise was the shaving section -- there were no razor blades in the shaving section. Instead, on the 4'x4' shelf area where the blades should have been, there were little notes hanging on each of the display pegs explaining that blades were kept under lock and key up at the front of the store, where a sales associate (whatever happened to "clerks", by the way?) would be happy to get one for you.
I didn't realize razor blades were now so restricted. Must be that homeland security stuff.
So okay, I'll just go back and get the shampoo first, and then get the blades on my way out -- assuming I don't forget about the blades in the meantime. On to the the shampoo aisle. Now my needs are simple; I'm just looking for a basic, normal, guy's shampoo. Tough luck for me, it was labeled the "shampoo" aisle but I thought for sure it was the fruit juice aisle!
Every shampoo offered for sale was laced with guava, cucumber, something generically called "herbal essence", maybe a little coconut; every ingredient you might want in a tropical drink -- but there was nothing that contained any soap. Okay, I thought, let's drop down a notch. We'll try a kids or baby shampoo -- that's got to be fairly inoffensive, right? Well the kid's shampoo was watermelon flavored, and smelled suspiciously like bubblegum. This is quite the irony, as that's often exactly the substance one wants to remove from children's hair.
All I want is plain shampoo. It should smell like soap, not like salad or a dessert. Is that too much to ask?
Maybe it is. I'm a victim here of herd marketing. Some company out there struggles to gain market share. What could we do different to attract customers?, they ask. They brainstorm. Someone suggests, "what the hell, you might as well stick guava juice in it." They do. Now every other shampoo manufacturer panics over the growing "guava gap" and rushes to top their competitors. Cucumber will do it! Let's add herbal essence! No one will even know what the hell that is, so they certainly can't copy it! And in the mad, headlong rush to be different -- to add features -- they forgot about those of us who just want a plain old bottle of shampoo.
Does this herd mentality only affect consumer products? It doesn't seem so limited. I'd really like a nice GUI e-mail client that doesn't need a quarter gig of RAM. It doesn't need guava juice or calendar or contact management, just e-mail would be fine. It should be robust, blindingly fast, you know, the things I want.
Isn't that supposed to be the essence of marketing? Give the people what they want -- not what everyone else wants to give them, or even what you want to give them.
Maybe this is something you should think about the next time you write code for a client or your company. Are you giving the customer what they want? Or are you giving them Java juice (our industry's version of guava) because that's what the rest of the herd is doing? ";}i:9;a:3:{s:5:"title";s:18:"Thoughts for Today";s:4:"link";s:65:"http://www.toolshed.com/blog/SocialCommentary/QuoteDykstra.html,v";s:11:"description";s:1009:"
It is impossible to sharpen a pencil with a blunt ax. It is equally vain to try to do it with ten blunt axes instead.
-- Edsger Dijkstra
How many blunt axes are piling up in the corner of your desk? Do many of them have some sort of coffee-related pun in the name? Perhaps a smaller, sharper tool would be more appropriate. I've got Ruby on my Sharp Zaurus, and it's a real kick to be able to write good code on the go. The small screen isn't an issue, because it doesn't take much Ruby code to do something interesting.
Teams aren't immune from this effect, either. Ten inadequately skilled people can't get a project out the door no matter what wonderful IDE or process they use. But one sharp person can.
At some point, corporations will realize this, and take action to retain only the best people, and let the others go. Maybe they have already started.
If they have, then you need to make sure YOU are the one sharp person... ";}}s:7:"channel";a:3:{s:5:"title";s:14:"/\ndy's Weblog";s:4:"link";s:28:"http://www.toolshed.com/blog";s:8:"language";s:5:"en-us";}s:9:"textinput";a:0:{}s:5:"image";a:0:{}s:12:"parent_field";a:1:{i:0;s:3:"RDF";}s:13:"current_field";s:0:"";s:17:"current_namespace";b:0;s:5:"ERROR";s:0:"";s:13:"last_modified";s:31:"Wed, 08 Oct 2003 19:56:15 GMT ";}