<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.2.1 on Tue, 08 Jul 2008 05:00:40 GMT -->
<rss version="2.0">
	<channel>
		<title>todd hoff: Stupid Human Programming</title>
		<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/</link>
		<description>Talk on software development.</description>
		<language>en</language>
		<copyright>Copyright 2008 todd hoff</copyright>
		<lastBuildDate>Tue, 08 Jul 2008 05:00:40 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.2.1</generator>
		<managingEditor>todd@possibility.com</managingEditor>
		<webMaster>todd@possibility.com</webMaster>
		<category domain="http://rpc.weblogs.com/shortChanges.xml">rssUpdates</category> 
		<skipHours>
			<hour>23</hour>
			<hour>0</hour>
			<hour>1</hour>
			<hour>3</hour>
			<hour>2</hour>
			<hour>4</hour>
			<hour>18</hour>
			<hour>22</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<title>Are Web Icons a Modern Form of Illiterate Communication for the Dumbest Generation?</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/07/07.html#a259</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Are Web Icons a Modern Form of
Illiterate Communication for the Dumbest
Generation?&lt;/span&gt;&lt;br&gt;&lt;br&gt;How do you communicate with
an illiterate population? That&apos;s a problem I hadn&apos;t thought of before,
but on a recent trip to Europe I was fascinated to learn how medieval
towns and merchants solved the problem of how to communicate with a
population that couldn&apos;t read. Their solution was to use elaborate
symbols that reminded me a lot of the iconography developed for
websites and other computer devices. I couldn&apos;t help putting this
together with the idea of Mark Bauerlein&apos;s new book &lt;a href=&quot;http://www.amazon.com/Dumbest-Generation-Stupefies-Americans-Jeopardizes/dp/1585426393&quot; &amp;gt;=&quot;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot; style=&quot;&quot;&gt;The Dumbest
Generation: How the Digital Age Stupefies Young Americans and
Jeopardizes Our Future&lt;/span&gt;&lt;/a&gt;&lt;p&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Complex Store Signs in Salzburg Austria
&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3270/2647265035_303780e0ee.jpg?v=0&quot; align=&quot;left&quot;&gt;&lt;br&gt;&lt;br&gt; Another example of using pictures
to communicate with non-readers is the amazing Salzburg street market
pictured on the left. This is a very long street with markets running
seemingly forever on either side. Imagine yourself a worker who
couldn&apos;t read. How would you what stores were available just looking
down the street? You couldn&apos;t know so the elaborately descriptive store
signs evolved so people could tell what a store sold. Here&apos;s the sign
for a McDonalds:&lt;br&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3122/2647270447_bb564004a4.jpg?v=0&quot; align=&quot;center&quot;&gt;
&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;German Maypole&apos;s Use Pictures to
Represent Town Services&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3266/2648293156_f2f355d990.jpg?v=1215479729&quot; align=&quot;left&quot;&gt;&lt;br&gt;Many German towns feature a &lt;a href=&quot;http://en.wikipedia.org/wiki/Maypole&quot;&gt;maypole&lt;/a&gt; in the
town square. In addition to being big and beautiful, a maypole
communicates to an illiterate population what services can be found in
the town with a picture symbolizing the service. Take a look at the
&lt;a href=&quot;http://www.flickr.com/photos/c-s-n/2234028459/&quot;&gt;maypole
in Munich&lt;/a&gt;. It&apos;s gorgeous. Look closely and you&apos;ll see
pictures of beer barrels which would tell you Munich has a beer
available. And oh boy is that true! If there&apos;s a bakery you&apos;ll see a
picture of a baker. If there&apos;s a wood cutter you&apos;ll see a picture of a
wood cutter. &lt;br&gt;&lt;br&gt;It&apos;s all picture based so you can just
look and immediately understand what you&apos;ll find in a
town.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Scan a webpage, an OS GUI,
or a cell phone interface and I think you get a very similar feel to
the ancient maypole symbols and store signs. I can&apos;t help but wonder if
over time text will drop out as people stop readining and we develop
ever more intricate graphical symbol systems to communicate instead of
relying on text? Everyhing old is new
again.&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/07/07.html#a259</guid>
			<pubDate>Tue, 08 Jul 2008 01:45:35 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=259&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2008%2F07%2F07.html%23a259</comments>
			</item>
		<item>
			<title>Why Stressed Out-of-Control Americans Won&apos;t Carpool</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/05/25.html#a257</link>
			<description>&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Why Stressed Out-of-Control Americans Won&apos;t Carpool&lt;br&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br&gt;Gas now looks like it will be expensive until the sun burns dark. SUV and truck sales have flopped while sales of the tiny cars we&apos;ve always sneered at have pulled a Robert Downey Jr. and have become stars once again. So why don&apos;t we American&apos;s do the smart and logical thing and carpool? Because we Americans need to feel like we are in control. Without that control we&apos;ll stay in our cars all lined up one-by-one in endless traffic jams even if at first it doesn&apos;t make rational sense. But this strange affliction does make sense and once we understand why we can design a mass transit system Americans are more likely to embrace, namely:  &lt;span style=&quot;font-style: italic;&quot;&gt;A&lt;/span&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;People Pod Pool of On Demand Self Driving Robotic Cars Automatically Refueled from Cheap Solar&lt;/span&gt;.&lt;br&gt;&lt;br&gt;The question of why don&apos;t we carpool  was asked by a commenter in&lt;a href=&quot;http://www.futurepundit.com/&quot; class=&quot;sitelink&quot;&gt;
FuturePundit  &lt;/a&gt;article &lt;a href=&quot;http://www.futurepundit.com/archives/005218.html&quot;&gt;&lt;span class=&quot;title&quot;&gt;American Car Drivers Cut Back Distance Traveled&lt;/span&gt;&lt;/a&gt;. When you read how the question is asked you&apos;ll wonder why you don&apos;t carpool either. Now, what&apos;s your answer to this? &lt;br&gt;&lt;br&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;In the short run, I&apos;m fascinated by the potential for carpooling. I
don&apos;t understand why someone would switch jobs or homes in preference
to carpooling (unless they wanted to anyway). It&apos;s easy, it&apos;s fast, it has no capital cost - 9% of Americans
already do it. Modern telecom makes it easy to match people up - it
used to be based on work site communication, but no more. It could reduce fuel consumption for an individual by 85% (4 people
in a Prius), or for the nation by 25% (50% of US fuel consumption is
light vehicles, and carpooling can be used for more than commuting) in
a period of months, if we got serious. Also, car-sharing (igocars, zipcar) could share scarce PHEV/EV&apos;s -
the average car is only used 1 hour per day, so 5M PHEV/EV&apos;s could be
used by 50M people.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;My first reaction was well don&apos;t I feel like an oily dipstick. It&apos;s all so clear. So sensible. So reasonable. Carpooling is the future. Carpooling is smart,  responsible, and good. Don&apos;t you want to be good? &lt;br&gt;&lt;br&gt;&lt;b&gt;But I don&apos;t want to do it&lt;/b&gt;. I don&apos;t want to carpool. There, I said it. I don&apos;t hate the environment (as evidence of my virtue I both compost and recycle!). And I don&apos;t want to see mother nature stripped and turned out into the cold lonely night. But as one of those ugly Americans I feel deep in my plush leather seats and fine German engineering that I would rather starve my characteristically overweight American self into the normal weight range rather than give up and share MY car!&lt;br&gt;&lt;br&gt;Yes, I am well aware that this is totally irrational and irresponsible. I won&apos;t be the first or last time you notice this about me. Could there be some deeper psychological reasoning behind my madness? Let&apos;s hope so because a lot of people don&apos;t seem to like carpools and they don&apos;t like mass transit either. The Metro, a local San Francisco Bay Area weekly, published a wonderful article &lt;a href=&quot;http://www.metroactive.com/metro/12.12.07/cover-0750.html&quot;&gt;Fueling the Fire&lt;/a&gt;, on how we need to cure our car addiction using the same marginalization techniques used to &quot;stop&quot; smoking.&lt;br&gt;&lt;br&gt;A telling quote shows how difficult going cold turkey off our cars will be:&lt;br&gt;&lt;i&gt;&lt;br&gt;&lt;/i&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;i&gt;Mitch Baer, a public policy and environment graduate student at George Mason University in Virginia, recently surveyed more than 2,000 commuters in the Washington, D.C., area. He found that people who drove to work alone were more emotionally satisfied with their commute than those who rode public transportation or carpooled with others. Even stuck in traffic jams, those commuters said they felt they had more control over their arrival and departure times as well as commuting route, radio stations and air conditioning levels. Commuters said that driving alone was both quicker and more affordable, according to the study. &quot;They will have a tougher time moving people out of their cars,&quot; Baer said. &quot;It&apos;s easier for most people to drive than take mass transit.&quot;&lt;/i&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;The key phrase for me is: &lt;i&gt;people who drove to work alone were more emotionally satisfied&lt;/i&gt;. How can people jostled in the great pinball machine that are our roadways be emotionally satisfied? That&apos;s crazy talk. Shouldn&apos;t we feel less satisfied?&lt;br&gt;&lt;h3&gt;We Feel Good in Our Cars Because We Are in Control&lt;/h3&gt;Solving the mystery of why we feel satisfied while stuck in traffic turns on an important psychological clue: &lt;b&gt;the more we perceive ourselves in control of a situation the less stress we feel&lt;/b&gt;. Robert Sapolsky talks about this surprising insight into human nature in &lt;a href=&quot;http://www.amazon.com/Why-Zebras-Dont-Get-Ulcers/dp/0716732106&quot;&gt;Why Zebras Don&apos;t Get Ulcers&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Notice we simply need more &quot;perceived&quot; control. Take control of a situation in your mind and stress goes down. You don&apos;t actually need to be in more control of a situation to feel less stress. If you have diabetes, facing your possibly bleak future can be less stressful if you try to control your blood sugars. If you are a speed demon, buying a radar detector can make you feel more in control and less stressed as you zoom along the seldom empty highways. If you are bullied, figuring out ways to avoid your torturer puts you more in control and therefor less stressed.&lt;br&gt;&lt;br&gt;Figure out a way to control and an out of control situation and you&apos;ll feel happier. That&apos;s what I think we are accomplishing by driving alone in cars. In our car we have complete control. Cars are our castles with a 2 inch air moat cushion. Most cars are plusher than any room in your average house. Fine leather, a rad sound system, perfect temperature control, and a nice beverage of choice within easy reaching distance. In our cars we&apos;ve created a second womb. The result is we feel more control, less stress, and more satisfaction, even when outside, across the moat, a tempestuous sea of stressors await.&lt;br&gt;&lt;h3&gt;Our Mass Transit System Must Supply Perceived Control&lt;/h3&gt;Given the warm inner glow we feel from being wrapped in the cold steel of our cars, if you want people to get out of their cars and onto mass transit you must provide the same level of perceived control. None of our mass transit options do that now. Buses are on fixed schedules that don&apos;t go where I want to go when I want to go. Neither do trains, BART, or light rail. So the car it is. Unless a system could be devised that provided the benefits of mass transit plus the pleasing characteristics of control our cars give us.&lt;br&gt;&lt;h3&gt;With Recent Technological Advances We Can Create a New Type of Mass Transit System&lt;/h3&gt;New technologies are being developed the will allow us to create a mass transit system that matches our psychological and physical needs. Just berating people and telling them they should take mass transit to save the planet won&apos;t work. The pain is too near and the benefits are too far for the mental cost-benefit calculation to go the way of mass transit.&lt;br&gt;&lt;br&gt;The technologies I am talking about are:&lt;br&gt;&lt;li&gt; &lt;a href=&quot;http://www.news.com/greentech/8301-11128_3-9835241-54.html?tag=nefd.top&quot;&gt;Inexpensive solar&lt;/a&gt; with $1/watt solar panels. Our mass transit must of course be green and cost effective.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.msnbc.msn.com/id/22240865/&quot;&gt;Breakthrough battery&lt;/a&gt; could boost electric cars. Toshiba promises &apos;energy solution&apos; with nearly full recharge in 5 minutes.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://news.bbc.co.uk/1/hi/uk/7148731.stm&quot;&gt;Personal transportation pods&lt;/a&gt;. A reusable vehicle that can take anyone anywhere they want to go.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://blog.wired.com/defense/2007/11/darpa-names-win.html&quot;&gt;Self driving vehicles&lt;/a&gt;. We are making great strides in creating robot cars that can drive themselves in traffic. Already they drive better than most humans can drive (low bar, I know).&lt;br&gt;&lt;br&gt;Mix these all together and you get a completely different type of mass transit system. A mashup, if you will.&lt;br&gt;&lt;h3&gt;Create a People Pod Pool of On Demand Autonomous Self Driving Robotic Cars Automatically Refueled from Cheap Solar&lt;/h3&gt;Many company campuses offer a pool of bicycles so workers can ride between buildings and make short trips. Some cities even make bikes available to their citizens. The idea is to do the same for cars, but with a twist or two.&lt;br&gt;&lt;br&gt;The cars (people pods) can be stored close to demand points and you can call for one anytime you wish. The cars are self driving. You don&apos;t actually drive them and are free to work or play during transit. Different kinds would be available depending on your purpose. Just one person on a shopping trip would receive a different car than a family. The pods would autonomously search out and find energy sources as needed to recharge.There&apos;s no reason to assume a centralized charging and storage facility. When repair was needed they could drive themselves to a repair depot or wait for the people pod ambulance service.&lt;br&gt;&lt;br&gt;The advantages of such a system are:&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Perceived control&lt;/b&gt;. You have a personal &quot;car&quot; you control the destination for, the interior environment of, and your own actions inside. This gets over the biggest hurdle with current mass transit options.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Better regional traffic flow&lt;/b&gt;. The autonomous cars could drive cooperatively to smooth out traffic jams. Traffic jams are largely caused by people speeding up and slowing down which causes ripples of slowness up and down the road. And automated system could prevent that.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Go where you want to go&lt;/b&gt;. It would be used because people can go to exactly where they need to go and be picked up exactly where they need to leave from at exactly the time they wish. None of these are characteristic of current systems.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Leverage existing road ways&lt;/b&gt;. Creating light rail and trains is expensive and wasteful (except for the high speed point-point variety). They don&apos;t extend to where people live and they don&apos;t go where people go. So it creates a multi-hop mess out of every trip. We already have an expansive road system that goes where everyone wants to go. Using the road infrastructure more efficiently makes a lot more sense than creating hugely expensive partial solutions. And since these cars would be eco-friendly, most arguments against using cars fall away.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Cheaper delivery&lt;/b&gt;. One force keeping truly distributed manufacturing and retailing from blossoming is high delivery costs. A $2 item is simply too expensive to buy remotely and ship because shipping costs more than the product. An automated transportation system would make this model more affordable.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Live where you want to live&lt;/b&gt;. Most mass transit systems are based on trying to socially reengineer our current suburbian and exurbian living pattern into a high density live-work pattern. While this should be an option, most mass transit proposals assume this pattern as a given and can&apos;t deal with current realities. For the foreseeable future people will not give up their houses or their lifestyles. The People Pod approach solves the mass transit problem and the &quot;difficulties&quot; of having to change a whole populace to behave in a completely different way for less than compelling reasons.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Still can own your own car&lt;/b&gt;. This isn&apos;t a replacement for the current car culture. It&apos;s leveraging the car culture. You can still own and drive your own car. Nobody is trying to steal your car away from you.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Cleaner and safer&lt;/b&gt;. Mass transit is disliked by many because it is perceived as dirty and unsafe. The pods would be safe and clean.&lt;br&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Road safety&lt;/b&gt;. Our new robot overloads will make our lives safer. Hopefully, possibly, maybe...&lt;br&gt;&lt;h3&gt;It&apos;s a Usable Mass Transit System so People Might Just Use It&lt;/h3&gt;After a lot of reading on the topic and a lot of self-examination on why I am such a horrible person that I don&apos;t want to carpool or use mass transit, this is the type of system I could really see myself using. It doesn&apos;t try to change the world, it uses what we got, and gives people what they want. It just might work.&lt;br&gt;&lt;/li&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/05/25.html#a257</guid>
			<pubDate>Sun, 25 May 2008 19:58:26 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=257&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2008%2F05%2F25.html%23a257</comments>
			</item>
		<item>
			<title>Secret Teachings: The Programmer&apos;s One Inch Death Punch</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/03/19.html#a256</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Secret Teachings: The Programmer&apos;s One Inch Death Punch&lt;/span&gt;&lt;br&gt;&lt;br&gt;How do programmer&apos;s get better at their job? Few programmers think of programming as a true profession. For most it&apos;s just a job. They go to work, do what&apos;s asked, and go home. They don&apos;t read. They don&apos;t attend conferences. They don&apos;t train. In fact, the training business for software is pretty much dead and has been for years. &lt;br&gt;&lt;br&gt;Other professions have different attitudes. Professional athletes train constantly to improve their skills. Even doctors and accountants have stringent continuing education requirements so they stay current. &lt;br&gt;&lt;br&gt;What can we programmers do? Let&apos;s first look at how expert performers are created in the first place. That might help us figure out how we can become better. Time in an article called &lt;a href=&quot;http://www.time.com/time/health/article/0,8599,1717927-2,00.html&quot;&gt;The Science of Experience&lt;/a&gt; has a lot of potentially fruitful ideas: &lt;br&gt;&lt;ol&gt;&lt;li&gt;The number of years of experience in a domain is a poor predictor of attained performance.&lt;/li&gt;&lt;li&gt;Rather than mere experience or even raw talent, it is dedicated,
slogging, generally solitary exertion, repeatedly practicing the most
difficult physical tasks for an athlete, repeatedly performing new and
highly intricate computations for a mathematician, that leads to
first-rate performance. And it should never get easier; if it does, you
are coasting, not improving.&lt;/li&gt;&lt;li&gt;They key is &quot;deliberate practice,&quot; by which is meant the kind of practice we hate,
the kind that leads to failure and hair-pulling and fist-pounding. You
like the Tuesday New York &lt;span style=&quot;font-style: italic;&quot;&gt;Times&lt;/span&gt; crossword? You have to tackle the Saturday one to be really good.&lt;/li&gt;&lt;li&gt; Great performance comes mostly from deliberate practice but also from another activity: regularly obtaining accurate feedback.&lt;/li&gt;&lt;li&gt;Experts tend to be good at their particular talent, but when something
unpredictable happens, something that changes the rules of the game
they usually play, they&apos;re little better than the rest of us.&lt;/li&gt;&lt;li&gt;Entire classes of experts &amp;#151; for instance,
those who pick stocks for a living, are barely better than novices.
(Experienced investors do perform a little ahead of chance, his studies
show, but not enough to outweigh transaction costs.)&lt;/li&gt;&lt;li&gt;Researchers found that &amp;eacute;lite skaters spent 68% of their sessions
practicing jumps, one of the riskiest and most demanding parts of
figure-skating routines. Skaters in a second tier, who were just as
experienced in terms of years, spent only 48% of their time on jumps,
and they rested more often.&lt;/li&gt;&lt;li&gt;Experience is not only insufficient for expert performance; in some
cases, it can hurt. Highly experienced people tend to execute routine
tasks almost unconsciously. Experience in a particular task frees space in your mind for other
cognitive pursuits,&amp;nbsp; wondering what&apos;s for dinner, answering your cell,
singing along with Justin Timberlake,&amp;nbsp; but those things can distract
you from the accident you&apos;re about to have.&lt;/li&gt;&lt;li&gt;Experience can also lead to overconfidence: a study in the journal &lt;i&gt;Accident Analysis &amp;amp; Prevention&lt;/i&gt; found that licensed race-car drivers had more on-the-road accidents than controls did.&lt;/li&gt;&lt;/ol&gt;None of this trips my BS meter. It makes a lot of sense and jibes with experience. We all know people with 10 years resume experience in X who couldn&apos;t program their way out of a  paper bag while someone with just 1 year of experience continually delivers quality results. And I know I&apos;ve grown the most when truly challenged to solve new problems. &lt;br&gt;&lt;br&gt;Given the science of experience article I think &lt;a href=&quot;http://codingdojo.org/&quot;&gt;Coding Dojos&lt;/a&gt; seem like a potential solution to the programmer training dilemma. A coding dojo is &quot;a meeting where a bunch of coders get together to work on a programming challenge.&quot; It&apos;s a form of &lt;AHREF=&quot;http: codingdojo.org=&quot;&quot; cgi-bin=&quot;&quot; wiki.pl?deliberatepractice=&quot;&quot;&gt;deliberate practice, which is &quot;not the same as experience gained while doing your job. It is when you
actually seek out experiences that will stretch your skills just the
right amount, and give you feedback that enables you to learn.&quot;&lt;br&gt;&lt;br&gt;For thousands of years martial arts have been taught in a deep mentoring relationship using a long progression of increasing difficulty and challenge. The path from a white belt to a black belt is long, it&apos;s hard, but in the end you learn. You learn through constant practice and challenge. &lt;br&gt;&lt;br&gt;It would be interesting to consider how a similar infrastructure could be setup to train programmers.&lt;br&gt;&lt;/AHREF=&quot;http:&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/03/19.html#a256</guid>
			<pubDate>Wed, 19 Mar 2008 22:53:40 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=256</comments>
			</item>
		<item>
			<title>Web 2.0 Suicide Monitoring Using Twitter and Emotional Presence</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/02/29.html#a255</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Web 2.0 Suicide Monitoring Using Twitter and Emotional Presence&lt;/span&gt;&lt;br&gt;&lt;br&gt;People on anti-depressant drugs--like Prozac--are supposed to be closely monitored for suicidal thoughts that could indicate the drug is having a &quot;paradoxical result.&quot; While many feel better on anti-depressants others drop fast and dark into an even worse suicidal depression. Paradoxical isn&apos;t quite the word I would use, but we must keep everything clinical.&lt;br&gt;&lt;br&gt;Monitoring allows a doctor to detect if a patient is entering the paradox zone. If so, treatment can be changed and further harm avoided. &lt;br&gt;&lt;br&gt;I was thinking one potentially Web 2.0  way to monitor people&apos;s internal subjective state--their feelings and emotions--on an unnaturally frequent basis would be to combine Twitter with emotional presence and a bot that would notify a doctor if certain downward emotional trends were detected.&lt;br&gt;&lt;br&gt;I&apos;ve been doing some work on a &lt;a href=&quot;http://www.xmpp.org/&quot;&gt;Jabber IM client&lt;/a&gt; lately, and I&apos;ve done some work using the &lt;a href=&quot;http://innertwitter.com/&quot;&gt;Twitter API&lt;/a&gt;, and I&apos;ve done quite a bit of research on emotion (patent pending), so a mashup of these services seems a pretty natural way of helping people stay alive through their dark times.&lt;br&gt;&lt;br&gt;In &lt;a href=&quot;http://en.wikipedia.org/wiki/Instant_messaging&quot;&gt;IM&lt;/a&gt; (Instant Messaging) your presence is broadcasted to your contact list so everyone knows what you are doing and you&apos;re availability to others. Using  your IM client tells everyone you are available. Don&apos;t use your IM client for awhile and and everyone will learn you are away.  Pickup the phone, mark your presence as &quot;On Phone&quot; and everyone&apos;s IM client will associate your name with a cute little phone icon. And when you close down your IM client everyone will learn you are now unavailable. &lt;br&gt;&lt;br&gt;There&apos;s also an idea of &lt;i&gt;emotional presence&lt;/i&gt;, often represented by &lt;a href=&quot;http://en.wikipedia.org/wiki/Emoticons&quot;&gt;emoticons&lt;/a&gt;. If you are happy or sad or angry you can broadcast your emotional presence in the same way you can broadcast your physical presence. Select an option that matches your current feelings and the whole world will instantly know how happy you are that it&apos;s Friday and a long weekend awaits.&lt;br&gt;&lt;br&gt;Now let&apos;s extend the emotional presence to indicate presence information for thoughts of suicide. I don&apos;t know what these would be, but I&apos;m sure doctors could work up something. Say you have a fleeting thought of suicide you could quickly change your emotional presence to indicate your new state. More severe thoughts could have different icons. And so on.&lt;br&gt;&lt;br&gt;Now let&apos;s bring in Twitter. Twitter is a microblog. Its purpose is to share brief bits of what is currently happening in your life. That&apos;s the perfect match for emotional presence. You could also indicate with each  post how you are feeling. These responses can be directed to a channel using the &quot;@reply&quot; syntax in Twitter. Doctors could follow those posts for their patients by briefly taking a look at  how they are doing. Or a specially created bot look for certain trends and notify a doctor if a negative trend developed. &lt;br&gt;&lt;br&gt;This would allow a doctor to intervene much more quickly than they could otherwise and the information they are making their decisions on would be much more accurate because it&apos;s harder for people to fudge on their self-reports when they are in the moment. With the perspective of time we all do a lot of self-editing, but in the moment you are more likely to be honest.&lt;br&gt;&lt;br&gt;Clearly privacy is an issue. Users need to be able to select who sees what kind of presence information. But that&apos;s necessary anyway and exists in some form now as privacy lists.  The type of information to block or allow simply needs to be extended to more granular  types of data.&lt;br&gt;&lt;br&gt;What&apos;s great about this approach is Twitter is everywhere users want to be. On
cellphones, browsers, IM, and desktop applications. Users will
always be in touch with their emotional presence and doctors can always follow their progress. &lt;br&gt;&lt;br&gt;Wouldn&apos;t it be wonderful if we could read a lot less about people on anti-depressants committing suicide? It just always seems so wrong that people who are trying to get help end up dying. &lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2008/02/29.html#a255</guid>
			<pubDate>Fri, 29 Feb 2008 16:54:48 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=255&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2008%2F02%2F29.html%23a255</comments>
			</item>
		<item>
			<title>The New Mass Transit: People Pod Pool of On Demand Self Driving Robotic Cars who Automatically Refuel from Cheap Solar</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/12/31.html#a254</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;The New Mass Transit: People Pod Pool of On Demand Self Driving Robotic Cars who Automatically Refuel from Cheap Solar&lt;/span&gt;&lt;br&gt;&lt;br&gt;Our traffic in the San Francisco Bay area  is like Dolly Parton, 10 pounds in a 5 pound sack. Mass transit has been our unseen traffic woe savior for a while now. But the ring of political fire circling the bay has prevented any meaningful region wide transportation solution. As everyone scrambles to live anywhere they can afford, we really need a region wide solution rather than the local fixes that can never go quite far enough.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Commuters are Satisfied Not Carpooling &lt;/span&gt;&lt;br&gt;&lt;br&gt;You might think we would car pool more. But people of the bay don&apos;t like carpools and they don&apos;t much like mass transit either. In the Metro, a local weekly, they publsihed a wonderful article &lt;a href=&quot;http://www.metroactive.com/metro/12.12.07/cover-0750.html&quot;&gt;Fueling the Fire&lt;/a&gt;, on how we need to cure our car addiction using the same marginalization techniques used to &quot;stop&quot; smoking. &lt;br&gt;&lt;br&gt;A telling quote shows how difficult going cold turkey off our cars will be:&lt;br&gt;&lt;br&gt;&lt;div style=&quot;margin-left: 40px; font-style: italic;&quot;&gt; Mitch Baer, a public policy and environment graduate student at
George Mason University in Virginia, recently surveyed more than 2,000
commuters in the Washington, D.C., area. He found that people who drove
to work alone were more emotionally satisfied with their commute than
those who rode public transportation or carpooled with others. &lt;/div&gt; 
&lt;p style=&quot;margin-left: 40px; font-style: italic;&quot;&gt;
Even stuck in traffic jams, those commuters said they felt they had
more control over their arrival and departure times as well as
commuting route, radio stations and air conditioning levels. &lt;/p&gt; 
&lt;p style=&quot;margin-left: 40px; font-style: italic;&quot;&gt;
Commuters said that driving alone was both quicker and more affordable, according to the study.
&lt;/p&gt; 
&lt;p style=&quot;margin-left: 40px;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;
&quot;They will have a tougher time moving people out of their cars,&quot; Baer
said. &quot;It&apos;s easier for most people to drive than take mass transit.&quot;&lt;/span&gt;
&lt;/p&gt;The key phrase to me is:  &lt;span style=&quot;font-style: italic;&quot;&gt;people who drove
to work alone were more emotionally satisfied&lt;/span&gt;. How can people jostled in the great pinball machine that are our roadways be &lt;span style=&quot;font-style: italic;&quot;&gt;emotionally satisfied&lt;/span&gt;? That&apos;s crazy talk. Shouldn&apos;t we feel less satisfied?&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;In Our Cars We Feel Good Because We Are in Control&lt;/span&gt;&lt;br&gt;&lt;br&gt;Solving the mystery of why we feel satisfied while stuck in traffic turns on an important psychological clue: &lt;span style=&quot;font-weight: bold;&quot;&gt;the more we perceive ourselves in control of a situation the less stress we feel&lt;/span&gt;. Robert Sapolsky talks about this surprising insight into human nature in &lt;a href=&quot;http://www.amazon.com/Why-Zebras-Dont-Get-Ulcers/dp/0716732106&quot;&gt;&lt;span class=&quot;sans&quot;&gt;Why Zebras Don&apos;t Get Ulcers&lt;/span&gt;&lt;/a&gt;&lt;b class=&quot;sans&quot;&gt;. &lt;br&gt;&lt;br&gt;&lt;/b&gt;&lt;span class=&quot;sans&quot;&gt;Notice we simply need more &quot;perceived&quot; control. Take control of a situation in your mind and stress goes down. You don&apos;t actually need to be in more control of a situation to feel less stress. If you have diabetes, facing your possibly bleak future can be less stressful if you try to control your blood sugars. If you are a speed demon, buying a radar detector can make you feel more in control and less stressed as you zoom along the seldom empty highways. If you are bullied, figuring out ways to avoid your torturer puts you more in control and therefor less stressed. &lt;br&gt;&lt;br&gt;Figure out a way to control and an out of control situation and you&apos;ll feel happier. That&apos;s what I think we are accomplishing by driving alone in cars. In our car we have complete control. Cars our are castles with  a 2 inch air moat cushion. Most cars are plusher than any room in your average house. Fine leather, a rad sound system, perfect temperature control, and a nice beverage of choice within easy reaching distance. In our cars we&apos;ve created a second womb. The result is we feel more control, less stress, and more satisfaction, even when outside, across the moat, a  tempestuous sea of stressors awaits.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Our Mass Transit System Must Supply Perceived Control&lt;/span&gt;&lt;br&gt;&lt;br&gt;Given the warm inner glow we feel from being wrapped in the cold steel of our cars, if you want people to get out of their cars and onto mass transit you must provide the same level of perceived control. None of our mass transit options do that now. Buses are on fixed  schedules that don&apos;t go where I want to go when I want to go. Neither do trains, BART, or light rail. So the car it is. &lt;/span&gt;&lt;span class=&quot;sans&quot;&gt;Unless a system could be devised that provided the
benefits of mass transit plus the pleasing characteristics of control
our cars give us.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;sans&quot;&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;With Recent Technological Advances We Can Create a New Type of Mass Transit System&lt;/span&gt;&lt;br&gt;&lt;br&gt;New technologies are being developed the will allow us to create a mass transit system that matches our psychological and physical needs. Just berating people and telling them they should take mass transit to save the planet won&apos;t work. The pain is too near and the benefits are too far for the mental cost -benefit calculation to go the way of mass transit. &lt;br&gt;&lt;br&gt;The technologies I am talking about are:&lt;br&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;sans&quot;&gt;&lt;a href=&quot;http://www.news.com/greentech/8301-11128_3-9835241-54.html?tag=nefd.top&quot;&gt;Inexpensive solar&lt;/a&gt; &lt;/span&gt;with $1/watt solar panels. Our mass transit must of course be green and cost effective.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.msnbc.msn.com/id/22240865/&quot;&gt;Breakthrough battery could boost electric cars&lt;/a&gt;. Toshiba promises &apos;energy solution&apos; with nearly full recharge in 5 minutes.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://news.bbc.co.uk/1/hi/uk/7148731.stm&quot;&gt;Personal transportation pods&lt;/a&gt;. A reusable vehicle that can take anyone anywhere they want to go.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blog.wired.com/defense/2007/11/darpa-names-win.html&quot;&gt;Self driving vehicles&lt;/a&gt;. We are making great strides in creating robot cars that can drive themselves in traffic, better than most humans can drive (low bar, I know).&lt;/li&gt;&lt;/ul&gt;Mix these all together and you get a completely different type of mass transit system.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Create a People Pod Pool of On Demand Autonomous Self Driving Robotic Cars that Automatically Refuel from Cheap Solar&lt;/span&gt;&lt;br&gt;&lt;br&gt;Many company campuses offer a pool of bicycles so workers can ride between buildings and make short trips. Some cities even make bikes available to their citizens. The idea is to do the same for cars, but with a twist or two.&lt;br&gt;&lt;br&gt;The cars (people pods) can be stored close to demand points and you can call for one anytime you wish. The cars are self driving. You don&apos;t actually drive them and are free to work or play during transit. Different kinds would be available depending on your purpose. Just one person on a shopping trip would receive a different car than a family. The pods would autonomously search out and find energy sources as needed to recharge.There&apos;s no reason to assume a centralized charging and storage facility. When repair was needed they could drive themselves to a repair depot or wait for transportation.&lt;br&gt;&lt;br&gt;The advantages of such a system are:&lt;br&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Perceived control&lt;/span&gt;. You have your own person car that you control the destination for, the interior environment, and your own actions. This gets over the biggest hurdle with current mass transit options.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Better regional traffic flow&lt;/span&gt;. The autonomous cars could drive cooperatively to smooth out traffic jams.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Go where you want to go&lt;/span&gt;. It would be used because people can go to exactly where they need to go and be picked up exactly where they need to leave from at exactly the time they wish. None of these are characteristic of current systems.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Leverage existing road ways&lt;/span&gt;. Creating light rail and trains is expensive and wasteful (except for the high speed point-point variety). They don&apos;t extend to where people live and they don&apos;t go where people go. So it creates a multi-hop mess out of every trip. We already have an expansive road system that goes where everyone wants to go. Using the road infrastructure more efficiently makes a lot more sense than creating hugely expensive partial solutions. And since these cars would be eco-friendly, most arguments against using cars fall away.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cheaper delivery&lt;/span&gt;. One force keeping truly distributed manufacturing from blossoming is high delivery costs. A $2 item is simply to expensive to buy remotely and ship because the shipping costs more than the product. An automated transportation system would make this model more affordable.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Live where you want to live&lt;/span&gt;. Most mass transit systems are based on trying to socially reengineer our current suburbian and exurbian living pattern into a high density live-work pattern. While this should be an option, most mass transit proposals assume this pattern as a given and can&apos;t deal with current realities. For the foreseeable future people will not give up their houses or their lifestyles. The People Pod approach solves the mass transit problem and the &quot;difficulties&quot; of having to change a whole populace to behave in a completely different way for less than compelling reasons.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Still can own your own car&lt;/span&gt;. This isn&apos;t a replacement for the current car culture. It&apos;s leveraging the car culture. You can still own and drive your own car. Nobody is trying to steal your car away from you.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cleaner and safer&lt;/span&gt;. Mass transit is disliked by many because it is perceived as dirty and unsafe. The pods would be safe and clean.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Road safety&lt;/span&gt;. Our robot overloads will make our lives safer. Hopefully...&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;Funding:&lt;br&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Current transportation budgets&lt;/span&gt;. There&apos;s lots of money that could be redeployed from existing less than successful approaches.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Advertising&lt;/span&gt;. The outside of vehicles could contain advertising as could the inside, especially from the internal search system. Imagine wanting a new place to eat and asking the pod to suggest one. That&apos;s prime targeted marketing. Social networks and massive multi-player games could also be created between pods.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Efficiencies&lt;/span&gt;. The plug-in cars are electric and efficient and low maintenance. That will save a lot of money.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Up sells&lt;/span&gt;. Individuals could buy their own pods and trick them out. Also, people could pay for a higher class of pod from the pod pool.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Licensing&lt;/span&gt;. Technology used in making the pods could be sold to other manufacturers. Create a standardized market so competition and cooperation can erupt.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sponsorship. &lt;/span&gt;Companies could buy rights to play music, stock the food locker, use their equipment, etc.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Naming rights. &lt;/span&gt;The rights to name parts of the system could be sold.&lt;/li&gt;&lt;/ol&gt;Implementation:&lt;br&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Challenge prize&lt;/span&gt;. Maybe someone
with a vision and a dream can put up a $50 million prize to get it
going. Something like the &lt;a href=&quot;http://www.xprize.org/&quot;&gt;Xprize&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Government funding&lt;/span&gt;. Don&apos;t laugh, it might happen.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Startup&lt;/span&gt;. I&apos;m available if interested :-) With a large enough challenge prize this is a viable model.&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;After a lot of reading on the topic and a lot of self-examination on why I am such a horrible person that I don&apos;t use mass transit more, this is the type of system I could really see myself using. It doesn&apos;t try to change the world, it uses what we got, and gives people what they want. It just might work.&lt;br&gt;&lt;span class=&quot;sans&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/12/31.html#a254</guid>
			<pubDate>Mon, 31 Dec 2007 18:24:47 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=254&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2007%2F12%2F31.html%23a254</comments>
			</item>
		<item>
			<title>Agile Owes More to Aristotle than the Renaissance</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/12/18.html#a253</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Agile Owes More to Aristotle than the Renaissance&lt;br&gt;&lt;br&gt;&lt;/span&gt;There&apos;s an interesting historical parallel between Agile software development, traditional large organizational software development and Aristotle and the new Renaissance politics of&amp;nbsp; Machiavelli. Of course the part of Agile development is played by the great Greek genius Aristotle and the part of the evil giant organization development group is played by Machiavelli. Could it be any other way?&lt;br&gt;&lt;br&gt;Machiavelli&apos;s &lt;span style=&quot;font-style: italic;&quot;&gt;The Prince&lt;/span&gt;, the longest please hire me resume ever, revolutionized politics by turning the long accepted ideas of Aristotle into compost. Aristotle thought the state was founded on friendship and trust.&amp;nbsp; To have a state you need a bond. That&apos;s how a gang becomes cohesive and turns into a team. That&apos;s how soldiers stand side by side together in battle against constant challenge and danger. And the basis of that bond, the basis for the state, must start with friendship and trust. The state can never be sustained by fear. The state succeeds based on personal morality.&lt;br&gt;&lt;br&gt;Sound like Agile now? You thought I was just crazy when I started out, didn&apos;t you?&lt;br&gt;&lt;br&gt;In a sure made for TV thriller, Machiavelli flat out contradicts Aristotle. This was a big deal in big M&apos;s time, for Aristotle was simply known as The Philosopher, and was assumed right about pretty much everything. It took some big ones to disagree with Aristotle.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br&gt;Machiavelli argues the basis of the state is fear of the Prince and the system of coercion the Prince creates to ensure the continuance of power. A Prince says if you do X here&apos;s the punishment or if you don&apos;t do Y here&apos;s the punishment. There&apos;s no weak minded friendship or trust or need for a unifying bond in big M&apos;s world. The Prince to stay in power must exercise power. What holds a people together is fear, fear of the Prince.&lt;br&gt;&lt;br&gt;Does this sound something like your usual software development group? Orders radiate down from the top and you are expected to follow orders under pain of death march.&lt;br&gt;&lt;br&gt;Aristotle&apos;s notion of political science is empirical (again, like Agile). A study of all the Greek city states was performed with the goal of finding what worked in all those cases so an ideal of how a perfect state is to be run could be established. In my rather strained analogy I&apos;ll say this is something like Scrum. An ideal algorithm of how to run a project rather than an exact prescription of every detail.&lt;br&gt;&lt;br&gt;Machiavelli is also empirical in nature, but he is more hard cruel world based. He wants to stay flexible because what works in one situation wont work in another. This sounds a bit Agilish, but it&apos;s not. What matters to big M is establishing and maintaining order.&amp;nbsp; The Prince must do whatever it takes to stay a Prince so you can&apos;t be wedded to any quaint notion of an ideal. Personal morality is quite separate from a Prince&apos;s morality. The Prince must be free to act in anyway necessary while people must act in strict accordance with the Prince&apos;s wishes or there is punishment. This is very similar to the notion that a corporation can justify actions by appealing to a fiduciary responsibility that an individual could never get away with. &lt;br&gt;&lt;br&gt;Who said history wasn&apos;t relevant to today? If you look irrationally hard we can see the same struggles faced today writ large in our past.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/12/18.html#a253</guid>
			<pubDate>Wed, 19 Dec 2007 00:08:52 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=253</comments>
			</item>
		<item>
			<title>Can Game Theory be Used to Loosen Website API Limits?</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/11/19.html#a252</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Can Game Theory be Used to Loosen Website API Limits?&lt;/span&gt;&lt;br&gt;&lt;br&gt;Let&apos;s say Twitter limits me to getting only 20 tweets at a time through their API. But I want more. I may even want to do something so radical as download everything. Of course Twitter can&apos;t let everyone do that. They would be swamped serving all this traffic and service would be denied. So Twitter does that rational thing and limits API access as a means of self protection. As does google, yahoo, and everyone else.&lt;br&gt;&lt;br&gt;But when I hit the limit I think, but hey it&apos;s Todd here, we&apos;ve been friends a long time and I&apos;ve never abused you. Can&apos;t you just trust me a little? I promise not to hurt you. I never have and won&apos;t in the future. At least on purpose, accidents do happen. The problem is Twitter doesn&apos;t know me so we haven&apos;t built up trust. We could replace trust with money, as in a paid service where I pay for each batch of downloads, but we&apos;re better friends than that. Money shouldn&apos;t come between us.&lt;br&gt;&lt;br&gt;And if Twitter knew what a good guy I was I feel sure they would let me download more data. But Twitter doesn&apos;t know me and that&apos;s the problem. How could they know me? We could set up authority based systems like the ones that let certain people through the airport security lines fast, but that won&apos;t scale and I have feeling we all know how that strategy will work out.&lt;br&gt;&lt;br&gt;Another approach to trust is a game theoretic perspective for assessing a user&apos;s trust leve. Take the iterated &lt;a href=&quot;http://en.wikipedia.org/wiki/Tit_for_tat&quot;&gt;prisoner&apos;s dilemma&lt;/a&gt; problem  where &quot;tit for tat&quot; is a surprisingly simple winning strategy. We start out cooperating and if you screw me I&apos;ll screw you right back. In a situation where communication is spotty (like through an API) there can be bad signals sent so if people have trusted before then they&apos;ll wait for another iteration to see if the other side defects again, in which case they retaliate. It seems like if services modeled the API like a game and assessed my capabilities by how we&apos;ve played the game together, then capabilities could be set based on earned and demonstrated trust rather than simplistic rules.&lt;br&gt;&lt;br&gt;A service like &lt;a href=&quot;http://mashery.com/&quot;&gt;Mashery&lt;/a&gt; can take this approach a step further because they can assess how a player plays in a wider playing field. If someone vouches for you to a friend then you will likely get more slack because you have some of the trust from your friend backing you. This doesn&apos;t work in one on one situation because there&apos;s no way to establish your reputation. Mashery on the other hand knows you and knows which APIs you are using and how you are using them. Mashery could vouch for you if they detected you were playing fair so you get more capabilities initially and transit the capability scale faster if you continued to behave. &lt;br&gt;&lt;br&gt;Of course we get the situations like on Ebay where people spend eons setting up great reputation only to trade their reputations in for cash in some fabulous scam. That&apos;s what happens in a society though. We all get more for the price of some risk.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/11/19.html#a252</guid>
			<pubDate>Mon, 19 Nov 2007 17:19:05 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=252</comments>
			</item>
		<item>
			<title>The Internet&apos;s Immune System in Arms Race with Digital Rights Management</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/10/31.html#a251</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;The Internet&apos;s Immune System in Arms Race with Digital Rights Management&lt;br&gt;&lt;br&gt;&lt;/span&gt;A popular image of the internet it to think of it as a vast interconnected intelligent organism, like this &lt;a href=&quot;http://www.eee.bham.ac.uk/com_test/img%5Cdsnl%5Cinternet15jan06.png&quot;&gt;gorgeous map of the internet&lt;/a&gt;. If the image is true then who is the heart, the brain, the liver, the nervous system, or the alimentary canal? I&apos;m sure you have candidates for each role :-) The immune system though I think is us, we the citizens of the internet. And we as the internet&apos;s immune system react to DRM as an invading organism: destroy ! destroy! destroy!&lt;br&gt;&lt;br&gt;The parallels between the arms race between invaders and the immune system and DRM and netizens are uncanny. The job of an &lt;a href=&quot;%3Ca%20href=&quot; %3cspan%20class=&quot; title=&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Immune_system&quot;&gt;immune system&lt;/a&gt; &lt;span class=&quot;title&quot;&gt;is to detect foreign invaders and destroy! them.
This is harder than it looks. Distinguishing between an
unwanted visitor and your liver takes some careful work. But once your immune system figures
out what&apos;s you and not you, it attacks. &lt;/span&gt;&lt;br&gt;&lt;br&gt;Some organisms have figured out a way to beat the system by waiting a while for the immune system to detect them as foreign and then rapidly evolving by changing their DNA. This causes the immune system has to start the whole process all over again. We were all brought up on microevolution. Evolution happens by small point/insertion/deletion changes. But the scientist &lt;a href=&quot;http://en.wikipedia.org/wiki/Barbara_McClintock&quot;&gt;Barbara McClintock&lt;/a&gt; discovered something radical, that genes could &lt;a href=&quot;http://en.wikipedia.org/wiki/Transposon&quot;&gt;jump&lt;/a&gt; around chromosomes. This means genetic changes could be radical and immediate, not small and slow. Of course Ms. McClintock was ostracized  by the scientific community for speaking a heresy. But modern science finally caught up to her, many decades later, and she won her Nobel prize.&lt;br&gt;&lt;br&gt;Why this matter is because invading organisms jump their genes around to &lt;a href=&quot;http://www.hopkinsmedicine.org/Press_releases/2004/12_23_04.html&quot;&gt;cloak themselves&lt;/a&gt; from our immune systems. Then in effort to keep up the immune system does the same thing. It hits the big randomizer button in the hope that it can find a way to kill the invader. It&apos;s like chasing each other through mirrors.&lt;br&gt;&lt;br&gt;DRM, the internet, and netizens follow a very similar arms race. DRM systems are constantly changed and upgraded to evade we the immune system. But the massive distributed immune system that is the internet community starts simultaneously evolving and attacking the DRM until someone, somewhere finds a way to beat it. Then the process starts all over again. Shouldn&apos;t we be smart enough to think ourselves out of this arms race and stop acting like little Darwin machines?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/10/31.html#a251</guid>
			<pubDate>Wed, 31 Oct 2007 20:46:01 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=251</comments>
			</item>
		<item>
			<title>Announcing My New High Scalability Site</title>
			<link>http://highscalability.com/</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Announcing My New High Scalability Site&lt;/span&gt;&lt;br&gt;&lt;br&gt;The site is &lt;a href=&quot;http://highscalability.com/&quot;&gt;http://highscalability.com/&lt;/a&gt;. And oddly. it talks about building highly scalable web sites and other systems. People always have questions about how to build a bigger and better website. The information is out there, but it&apos;s not easily accessible and often it doesn&apos;t make sense if you don&apos;t already know what you are doing. So, having some experience in the area, I thought the topic was worth its own site. Please take a look if you have the time. And if you have some expertise please consider contributing. Scalability is a giant field, so the more folks the better.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/07/25.html#a250</guid>
			<pubDate>Wed, 25 Jul 2007 18:02:46 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=250</comments>
			</item>
		<item>
			<title>Gordon Ramsay&apos;s Lessons for Software Take Two</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/07/12.html#a248</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Gordon Ramsay&apos;s Lessons for Software Take Two&lt;/span&gt;&lt;br&gt;&lt;br&gt;Gordon Ramsay began a new season of tasty &lt;a href=&quot;http://en.wikipedia.org/wiki/Ramsay%27s_Kitchen_Nightmares&quot;&gt;lessons&lt;/a&gt; for gourmet software chef&apos;s trying to run their own restaurant, err software development group. You may want to read what we learned in the &lt;a href=&quot;http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2006/07/04.html#a225&quot;&gt;first season&lt;/a&gt; of Gordon&apos;s tough love school of restaurantary. &lt;br&gt;&lt;br&gt;What new chicken nugget size bits of wisdom have we learned so far?&lt;br&gt;&lt;ol&gt;&lt;li&gt; Always put the nights earnings in the bank.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Don&apos;t cook everything on the same grill. Use separate pans or flavors from last weeks fish will be in today&apos;s veggie medley.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Don&apos;t double book. You can&apos;t turn more than one table an hour.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Pride and arrogance are what stops you from learning from the provocative lessons dancing in front of your face.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Lazy ways of cooking taint everything you make.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Don&apos;t piss off the locals. If the locals aren&apos;t happy then you won&apos;t make money during the off season.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Create vivid experience based learning sessions. To reduce pride in a charge take them to a bullfighting ring and have them fight an angry bull with nostrils flaring for vengeance. Arrogance fades when a giant multi-horned bull tries to kill you. And once the arrogance melts some learning can occur.&lt;br&gt;&lt;/li&gt;&lt;li&gt; Don&apos;t be too clever. Use local ingredients and cook cleanly and simply. Let people taste the food.&lt;br&gt;&lt;/li&gt;&lt;li&gt; You know you are doing well when you aren&apos;t stressed; you are communicating; everything seems easy; dishes come back clean; customers leave happy; and you make money.&lt;/li&gt;&lt;li&gt;Eat your own dog food. Eat at your own restaurant and experience what it&apos;s like from your customer&apos;s perspective. Do you like what you experienced?&lt;/li&gt;&lt;li&gt;Run your pub, not your kitchen. It&apos;s easy for a cook hideout  in the kitchen. You own the business, so run the business, let the chef cook, and let your people do their jobs. &lt;br&gt;&lt;/li&gt;&lt;li&gt;Don&apos;t try to be something you are not. If you are a pub then act like a pub. A pub serves well cooked, simple, traditional food. Don&apos;t be a fancy restaurant if that&apos;s not your market.&lt;/li&gt;&lt;li&gt;Working a lot of hours doesn&apos;t mean you are doing a good job. It just means you are working too hard.&lt;/li&gt;&lt;li&gt;Don&apos;t hord junk. Keep what you need to do your job and get rid of all the clutter that keeps you from your main purpose. &lt;br&gt;&lt;/li&gt;&lt;/ol&gt;Do any of these lessons apply to building software in a team? I think some of them do. But you&apos;re the chef.&lt;br&gt;&lt;br&gt;Hey, Pat Kennedy caught the Gordon Ramsey bug too in his post &amp;lt;A HREF=&quot;http://www.gurtle.com/ppov/2008/02/04/gordon-ramsey-is-a-great-consultant/&quot;&amp;gt;Gordon Ramsey is a great consultant&amp;lt;/A&amp;gt;. Pat&apos;s say Gordon exhibits several key traits:
&lt;ul&gt;&lt;li&gt;&lt;em&gt;confident&lt;/em&gt; &amp;#150; the meek might inherit the earth but they&amp;#146;re rubbish at getting the job done&lt;/li&gt;&lt;li&gt;&lt;em&gt;experienced&lt;/em&gt; &amp;#150; having done it all before he knows what he&amp;#146;s talking about and everyone knows it&lt;/li&gt;&lt;li&gt;&lt;em&gt;well rounded&lt;/em&gt; &amp;#150; it&amp;#146;s not just about the cooking, to run a successful restaurant you need to know about every aspect of the business&lt;/li&gt;&lt;li&gt;&lt;em&gt;eager to teach&lt;/em&gt; &amp;#150; he&amp;#146;s not a pompous prat who refuses to share his knowledge and experience, he gives it willingly&lt;/li&gt;&lt;/ul&gt;And he:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Demonstrates &lt;strong style=&quot;font-weight: normal;&quot;&gt;simple &amp;#145;tricks of the trade&amp;#146;&lt;/strong&gt; that can be the difference between staying afloat or going under. &lt;/li&gt;&lt;li&gt;&lt;strong style=&quot;font-weight: normal;&quot;&gt;Breaks the dire straits situation down to individual problems which make answers become simple.&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;Gives &lt;/strong&gt;&lt;strong style=&quot;font-weight: normal;&quot;&gt;the outsider&amp;#146;s perspective is a big advantage&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong style=&quot;font-weight: normal;&quot;&gt;Identifies actions having the greatest impact in the shortest possible time&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;&lt;strong style=&quot;font-weight: normal;&quot;&gt;Gets people skilled-up and self-confident&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;Ramsey may be a total a**hole, but that doesn&apos;t mean we can&apos;t learn from him.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/07/12.html#a248</guid>
			<pubDate>Fri, 13 Jul 2007 04:26:42 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=248</comments>
			</item>
		<item>
			<title>The Golden Spike Pattern</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/07/02.html#a246</link>
			<description>&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;The Golden Spike Pattern&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot;&gt;J Wynia wrote an interesting post &lt;a href=&quot;http://www.wynia.org/wordpress/2007/06/27/its-time-to-decouple-your-development-processes%3C/small%3E&quot;&gt;It&apos;s Time to Decouple Your Development Process&lt;/a&gt; where he talks about one of the most useful patterns a group of developers can use, it&apos;s a pattern I know as the Golden Spike Pattern. The name comes from the 1869 ceremony that drove the final spike completing the &lt;a href=&quot;http://en.wikipedia.org/wiki/Golden_spike&quot;&gt;transcontinental railroad&lt;/a&gt; in the US. The railroad linked the eastern US with the western US, finally meeting up at Promontory in Utah. Constructing a transcontinental railroad is a complex time consuming business. They made it work by researching a general route for the railroad, acquiring the necessary property, and then having two sides building their parts of the railroad independently,&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot;&gt;The metaphor behind the pattern name isn&apos;t subtle. The idea is groups don&apos;t have to be in lock step dependency to create a complex system. All they need is a general plan and an agreement of where to meet up. In software a meet can be an API, schema, library, protocol, or a test suite. Once that meet up point is established all the different sides can go about there business without interdependencies. From a lean manufacturing point-of-view this is a powerful way of increasing overall system flow because it&apos;s dependencies that cause wasted time. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot;&gt;Each side can work out their own issues in their own way, as long as they meet up. And how would you like spend a decade building a railroad and not have it meet up at the right place!&lt;/font&gt;&lt;/p&gt;&lt;small&gt;&lt;br&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Promontory_Summit%2C_Utah&quot; title=&quot;Promontory Summit, Utah&quot;&gt;&lt;/a&gt;
&lt;/small&gt;&lt;p&gt;
&lt;small&gt;  &lt;/small&gt;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;small&gt;		
			
			
		
			&lt;/small&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/07/02.html#a246</guid>
			<pubDate>Mon, 02 Jul 2007 18:31:14 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=246</comments>
			</item>
		<item>
			<title>Copernicus is My Favorite Pattern</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/06/30.html#a245</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Copernicus is My Favorite Pattern&lt;br&gt;&lt;br&gt;&lt;/span&gt;In interviews it&apos;s common to ask &quot;What&apos;s your favorite and least favorite pattern?&quot; My usual answer for favorite pattern is &quot;keep separate things separate.&quot; It&apos;s a bit meta&amp;nbsp; which allows me to talk about a few design principles that are dear to me. My least favorite pattern is the wretched visitor pattern because it binds together different parts of an application that have no business even knowing about each other. It creates a BLOB.&lt;br&gt;&lt;br&gt;After having read &quot;It Started with Copernicus&quot; by Howard Margolis I am going to have a new favorite pattern: the Copernicus Pattern. I will always hate the visitor pattern, so my answer to that question is not likely to change :-) &lt;br&gt;&lt;br&gt;The premise of this book is that Copernicus&apos; discovery of the heliocentric model of the solar system started a fire storm of scientific invention, not because of the discovery itself, but because it spread the idea that we puny humans could think and make big discoveries about the universe using&amp;nbsp; nothing but our tiny brains. Copernicus gave people permission to tackle big challenges and the confidence that they could expect to meet them. &lt;br&gt;&lt;br&gt;As evidence Margolis lists the major scientific discoveries made before 1600 and the major scientific discoveries made after 1600. Copernicus published his &quot;discovery&quot; that the Earth revolves around the Sun in 1543. In the list of pre-1600 major discoveries there is: nothing. Zip. Nada. After 1600 the pace of scientific discovery blossoms, we discover: the distinction between electricity and magnetism; law of free fall; Galilean inertia; Earth is a magnet; theory of lenses; laws of planetary motion; various discoveries from the telescope, like sunspots; laws of hydrostatic pressure; and synchronicity of the pendulum. All these discoveries were made by Stevin, Gilbert, Kepler, and Galileo all followers of Copernicus. &lt;br&gt;&lt;br&gt;Copernicus discovered discovery using what Margolis calls &quot;around the corner&quot; reasoning. Around-the-corner-reasoning is a habit of mind where you go beyond what is directly seen and take the unexpected step. Stubborningly pursuing a problem even when no clear solution is in sight. Before 1600 most things that can be discovered by direct ways of thinking were discovered. After Copernicus around-the-corner-reasoning helped us start discovering how the world really worked. I highly recommend the book if you want to see a full development Margolis&apos; argument. My already long delayed point follows a similar line of reasoning...&lt;br&gt;&lt;br&gt;What is important about patterns is the idea of patterns and not any particular pattern itself. Many have pointed out the weaknesses of patterns. Patterns can seem like trivial well understood solutions to common problems. Patterns can appear overly formal and lead to complex systems of frameworks that complicate more than they help. Patterns can pollute your code and lead you away from doing the simple thing.&lt;br&gt;&lt;br&gt;For me finding and using patterns is essential because patterns are simply software systemizations. A pattern is that bit of around-the-corner-reasoning that can create massive simplifications and improvements in your system, if you would just take the time to understand your system, see what&apos;s really going on, and think a bit how it might be improved. Programming isn&apos;t just writing one damn line of code after another. Patterns are the idea that you can continually find ways to&amp;nbsp; make your system better. If that&apos;s using the publish-subscribe pattern, resource acquisition is initialization pattern, or whatever, it doesn&apos;t matter. What matters is the idea that a system evolves over time to have inefficiencies and that the system can be brought under control again by&amp;nbsp; systematically applying patterns of improvement.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/06/30.html#a245</guid>
			<pubDate>Sat, 30 Jun 2007 23:29:33 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=245</comments>
			</item>
		<item>
			<title>All the world is a DOM. The rise of Identity Based Programming.</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/06/20.html#a244</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;All the world is a DOM. The rise of Identity Based Programming.&lt;/span&gt;&lt;br&gt;&lt;br&gt;In the past few years we&apos;ve seen a huge rise of successful systems built following a &lt;a href=&quot;http://www.w3.org/DOM/&quot;&gt;Document Object Model&lt;/a&gt; &lt;br&gt;(DOM) type of architecture. By that I mean: open systematized models of complex domains that are easy for applications to specialize and extend in a cooperative manner.&lt;br&gt;&lt;br&gt;This approach has quickly taken over the tradition libary + statically compiled language paradigm in amazing products like Eclipse, Aspect Oriented Programming (AOP), DOM + Javascript + DHTML, and in Content Management Systems (CMSs) like Drupal.&lt;br&gt;&lt;br&gt;While we must pay homage to Smalltalk for its unified image based development environment, the most familiar example of the DOM architecture runs inside your favorite browser, using the dynamic trio of DOM + Javascript + DHTML. &lt;br&gt;&lt;br&gt;The olden days of interface writing is represented by the applet. You combine all your libraries into a single application and download it to an interpreter. This is basically the same as compiling to an image and running the resulting executable on your favorite OS. &lt;br&gt;&lt;br&gt;Look how different is your browser&apos;s DOM based approach. The DOM provides a really rich and functional model of a document, your web browser, which is made available to all applications running in your browser.  Multiple libraries can be directly loaded into the browser and build on layers of each others functionality. Applications can add new methods, events, and properties directly to the model. And powerful meta tools like jQuery are creatable because of the dynamic power and regularity&lt;br&gt;the browser environment provides.&lt;br&gt;&lt;br&gt;One of the most stunning success stories is Eclipse&apos;s DOM type architecture of an IDE. If you would  have told me you could make a world class development platform by defining a plugin architecture and then weaving together a myriad of plugins from a bevy of developers, I would have said you are crazy. But it works and Eclipse is now the premier IDE on the market. They succeeded by creating an IDE model, which in my world is a DOM, and then made the IDE buildable by composing parts formed from a generic plugin architecture. That this works so well was surprising to me and very enlightening. &lt;br&gt;&lt;br&gt;Another interesting application of the DOM type model is in CMSs like Drupal and Joomla. A CMS is like a big web site construction kit allowing you to create your personal idea of a website from the work of 100s of other people. Drupal makes this possible through their module system that allows modules to be composed together. Drupal&apos;s role is to provide an open model of what it means to be a CMS, a set of standards about how everyones modules can play nicely together, and mechanisms for composing the modules together in meaningful ways. &lt;br&gt;&lt;br&gt;For example, forum systems allow readers to make comments on posts. Usually that comment system only works for forum posts, but Drupal takes it one step further and allows the ability to create a comment module that can be attached to any other part of the system, like blogs or polls. &lt;br&gt;&lt;br&gt;Taking extension yet another step beyond is the &lt;a href=&quot;http://drupal.org/project/cck&quot;&gt;Content Construction Kit&lt;/a&gt; (CCK) module for Drupal. CCK allows you to create new content types and extend existing content types with new features in a type specific manner that is understandable by Drupal. &lt;br&gt;&lt;br&gt;For example, let&apos;s say I am creating an event system and I want my event to support geolocation. With geolocation we can show events on Google maps and do other cool operations like calculate how far apart events are. Traditionally I would build location attributes and functionality into my event system and this would take a long time, even using a third part library. I would have to change the database, make a module, make it configurable, add theming, and so on.&lt;br&gt;&lt;br&gt;With CCK I don&apos;t have to start from scratch anymore. I can fold into my event the nifty preexisting location module that already exists. CCK will add the location fields, hooks, and widgets into my event in such a way that Drupal can see them as one thing, even though they aren&apos;t one thing.&lt;br&gt;&lt;br&gt;I can take this even further. Let&apos;s say I want people to be able to comment on my event, so we weave in a comment module. I also want people to rate the event, so we weave in a rating module. Next I want people to able to submit events like Digg and vote them into a front page, so we weave in the voting module.&lt;br&gt;&lt;br&gt;A very complex event has been created by weaving in different aspects together in a unified whole. This may sound a bit like AOP but it is much more powerful because what is being weaved together happens within a complete CMS system model. New content types are natively able to take advantage of CMS features like theming, installation, configuration, upgrading, security, user permissions, and database configuration. It&apos;s not just AOP&apos;s attachment of a bit code at an insertion point, you are creating a niche in a complete interdependent ecosystem.&lt;br&gt;&lt;br&gt;So what is an event really if it&apos;s defined primarily by weaving together different aspects? Here&apos;s where we get to the &quot;Identity Based Programming&quot; (IBP) part of our tour. Why IBP? Because all programming ideas these days have to have 3 letter acronyms where the middle letter is preferably a &quot;D&quot; for driven or &quot;O&quot; for oriented. I am really bucking the trend here using &quot;B&quot; for based.&lt;br&gt;&lt;br&gt;An object is usually said to have identity, state, and behavior. I have always contended an object simply has identity, state and behavior arise from relationships with other objects. For example, the date of an event is usually considered an attribute of an event object and this is part of its state. But in reality the date is in a 1-1 relationship with the object and thus isn&apos;t part of the object. This is the same for all attributes of the event, like location, comments, votes, and ratings, along with their associated behaviors. What ties the state and behaviors together is the identity of the event they are in relationship with.&lt;br&gt;&lt;br&gt;And here&apos;s where DOM type architectures and IBP meet. A DOM sets up the system model, the extension points and facilitation protocols. The process of composing and gluing them together to create new applications is what I am calling Identity Based Programming. Applications in Eclipse, your browser, and Drupal are all built this way. &lt;br&gt;&lt;br&gt;You can say I am not brining anything new to the party and you are absolutely right. I just think it&apos;s very interesting to see this approach evolve separately and almost independently in several different application spaces. This approach is fundamentally different than what has gone before, but it&apos;s very difficult to pin down exactly what is different. I just thought I would take a stab at defining what is different and to me one of the most important  ideas is that identity is what holds all this independent parts together when traditionally we have tried to force these parts to be one whole object. &lt;br&gt;&lt;br&gt;Biological life works by accretion. Parts keep being added on to existing systems rather than being thrown away and redesigned from scratch. In your brain you&apos;ll still&lt;br&gt;find the brain of the lizard, mammal, and the primate. Haman brains were made by adding on. With Identity Based Programming we see the same process happening in building software.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/06/20.html#a244</guid>
			<pubDate>Wed, 20 Jun 2007 19:31:35 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=244</comments>
			</item>
		<item>
			<title>Morning Scrum Meetings are Like the American Family Dinner</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/05/15.html#a243</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Morning Scrum Meetings are Like the American Family Dinner&lt;/span&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;br&gt;In the US family sit-down dinners are a cherished tradition. Many Americans have fond and powerful memories of sitting down around table with their family at night and eating together. I realize other cultures have very different dinner traditions, but I
was struck how much like a family dinner is the morning scrum meeting.&lt;br&gt;&lt;br&gt;In a family dinner there is a sense of community. You are surrounded by people who support you, who are there for you, and who will help you when times turn tough. During the day you battle the world and then you come home to the comfort of the family circle that is the dinner table. You gather together. It&apos;s a time to talk to each other, reconnect, and figure out how everyone is doing. Every gathering is a ritual act of building community. &lt;br&gt;&lt;br&gt;Scrum meetings create a very similar sense of family and community. Without a regular meeting we are just individuals carrying out tasks like machines. It&apos;s being part of a team that helps elevate work to life.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/05/15.html#a243</guid>
			<pubDate>Tue, 15 May 2007 16:40:29 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=243</comments>
			</item>
		<item>
			<title>Top 10 Things to Do Now that Your Blackberry has Crashed</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/04/18.html#a242</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Top 10 Things to Do Now that Your Blackberry has Crashed&lt;br&gt;&lt;/span&gt;&lt;br&gt;WNBC reported a major &lt;a href=&quot;http://www.wnbc.com/news/12339359/detail.html&quot;&gt;outage&lt;/a&gt; affecting 100% of Blackberries in the US. What might dedicated crackberry users do with all this unscheduled downtime?&lt;br&gt;&lt;br&gt;10. Solve world hunger. You now have the time.&lt;br&gt;&lt;br&gt;9. See a movie all the way through. No interruptions.&lt;br&gt;&lt;br&gt;8. Go for a run. Without your crackberry you weigh less and you&apos;ll be able to run farther and faster.&lt;br&gt;&lt;br&gt;7. Contemplate the transitory nature of the universe. If an essential
service like the crackberry can fail, what else in your life might fail
you?&lt;br&gt;&lt;br&gt;6. Have a drink. Surviving off the grid is stresseful. Did my team win last night? What time is that meeting at corporate? How is my portfolio performing? Did Jughead really sleep with Veronica? Gaping holes are bound to open up in your digital life  without instantaneous answers to important questions like these. So just relax. Have a pop or two.&lt;br&gt;&lt;br&gt;5. Keep twirling your thumb wheel. You want to be in tip top shape once it&apos;s back up. You&apos;ll be way ahead of the other kids who have spent their time less productively.&lt;br&gt;&lt;br&gt;4. Play hall hockey. Crackberries slide really well on the floor. Get two teams together, setup two goals, and see who can make the most goals with your new puck. If you are alone find a lake and see how far you can skip your crackberry. I bet you can&apos;t slice more than 5 hops.&lt;br&gt;&lt;br&gt;3. Remember the 5 stages of grief: denial, anger, bargaining, depression, acceptance. Let&apos;s help you dial through the stages quickly. Yes, your network is down. Mistakes happen. It&apos;s part of life. The digital  gods cannot be appeased, so don&apos;t even try. There are no tasty binary cookies or digital flowers that can patch panel this one. You feel depressed now, see (2). The last stage is bunk. Deny deny deny. That&apos;s how we do it. Acceptance is for losers.&lt;br&gt;&lt;br&gt;2. Schedule an appointment with your therapist to help you cope with your loss. But, wait, your crackberry is down! Noooo! The irony of it all!&lt;br&gt;&lt;br&gt;1. Make a pair of glasses using two tubes from empty toilet paper
rolls. Viewing the world outside the small window of your crackberry
can be disorienting at first. You&apos;ll want to transition slowly to view
the world in full resolution. Every hour slice an inch or so from each
roll so you&apos;ll gradually see more and more of the real world.&lt;br&gt;
&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/04/18.html#a242</guid>
			<pubDate>Wed, 18 Apr 2007 14:52:51 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=242&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2007%2F04%2F18.html%23a242</comments>
			</item>
		<item>
			<title>I Thought of Twitter for Eclipse, Too Late, Drats!</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/03/20.html#a240</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;I Thought of Twitter for Eclipse, Too Late, Drats!&lt;/span&gt;&lt;br&gt;&lt;br&gt;A few years ago I had the idea of a Twitter like add-in for Eclipse. Too late now I guess. He who codes first wins! The idea was pretty simple. Eclipse would broadcast out to all team members every major action that was completed in Eclipse. So when you created a new class, a new method, etc everyone on your team would know. Likewise, if you were starting something new or wanted everyone  to know how close you were to done you could just broadcast it to everyone else&apos;s Eclipse instance. And if you had a question you could just blast it out. &lt;br&gt;&lt;br&gt;The idea was to reduce the cycle of feedback to almost nothing. Information flow dominates development time and the more you can reduce blocking on a project the faster you&apos;ll move. &lt;br&gt;&lt;br&gt;How it would work, for example, is if  I read that you created a SerialLine class and I knew of one already, I could tell you immediately that one already existed in package XYX and you could reuse it. Or if I was interested in knowing how we handle regular expressions in a project I could just type the question in. This kind of informal communication is less scary to team members. Many people are very concerned about their image so they won&apos;t ask a question on an email list. They are afraid of looking dumb or weak. The quality of communication is inversely proportional to the risk of ego destruction. Programming is more macho than football in many ways. So quick, short bursts in Eclipse would make communication flow more freely. The result should be pretty fast convergence on solutions because of the tight team work involved. Developing becomes more of a team sport than isolated outposts throwing Morse code at each other.&lt;br&gt;&lt;br&gt;IM has filled this role to a large extent so I stopped pursuing the idea. But I still think the integration with Eclipse would be powerful. It would help everyone on  a project build a mental model of the software as it was being constructed.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/03/20.html#a240</guid>
			<pubDate>Tue, 20 Mar 2007 22:48:20 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=240</comments>
			</item>
		<item>
			<title>You Can&apos;t Twitter at Relativistic Speeds</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/03/20.html#a239</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;You Can&apos;t Twitter at Relativistic Speeds&lt;/span&gt;&lt;br&gt;&lt;br&gt;Twitter is entraining the technorati on an unbreakable hedonic treadmill. The treadmill gorges itself on an infinite supply info mediated dopamine hits. Addiction, divorce, 12 steps, and the grief cycle are sure to follow . But what really should concern twitterites is their global stream-o-conscious will shatter once we travel in space at  near light speed. &lt;br&gt;&lt;br&gt;Let&apos;s say you&apos;re accelerating towards Vulcan in your new Mercedes X Series Space Coup and you type in your latest bon thought: I really need to upgrade my materializer. The pate was runny. Your thoughts will stream out at a constant speed of 186,000 miles an hour and nobody will hear you! And you will not hear them! You will ache. It will 1 millisecond without a info mediated dopamine hit. Then another. And then another. Until you go entire days without sharing the barely conscious thoughts of the twitter-sphere. Then you are in hair pulling, drano drinking withdrawl. Oh what a glorious future it will be!&lt;br&gt;&lt;br&gt;I do see a market in relativistic hermitages however. In time no place on earth with be safe from ads or phones or other information radiators. The only safe place to hide will be in a space capsule near the speed of light. Only then will you be alone with the strange sensation of your own thoughts.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/03/20.html#a239</guid>
			<pubDate>Tue, 20 Mar 2007 19:45:47 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=239&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2007%2F03%2F20.html%23a239</comments>
			</item>
		<item>
			<title>What if Cars Were Rented Like We Hire Programmers?</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/03/12.html#a238</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;What if Cars Were Rented Like We Hire Programmers?&lt;/span&gt;&lt;br&gt;&lt;br&gt;Imagine if you will that car rental agencies rented cars like programmers are hired at most software companies...&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency   &lt;/span&gt;: So sorry you had to wait in the reception area for an hour. Nobody knew you were coming to today. I finally found 8 people to interview before we can give you a car. If we like you you may have to come in for another round of interviews tomorrow because our manager isn&apos;t in today. I didn&apos;t have a chance to read your application, so I&apos;ll just start with a question. What car do you drive today?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : I drive a 2002 Subaru.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;     : That&apos;s a shame. We don&apos;t have a Subaru to rent you.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : That&apos;s OK. Any car will do.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;     : No, we can only take on clients who know how to drive the cars we stock. We find it&apos;s safer that way. There are so many little differences between cars, we just don&apos;t want to take a chance.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant &lt;/span&gt;: I have a drivers license. I know how to drive. I&apos;ve been driving all kinds of cars for 15 years, I am sure I can adapt. &lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency     &lt;/span&gt;: We appreciate your position, but we can only take exact matches. Otherwise, how could we ever know if you could drive one of our cars?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : Oookay. I&apos;ve driven a Taurus before. You probably rent those, don&apos;t you?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;     : Indeed we do. What year did you drive?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : It was 2005...but I don&apos;t see how that ma...&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;      : Oh sorry, we use the 2006 model. We can&apos;t possibly let you drive a later model.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant &lt;/span&gt;: But, but they aren&apos;t that different. Surely if I can drive a 2005 I can drive a 2006.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;      : Sorry, sir. Our requirements clearly spell out that you must be able to drive a 2006 model. &lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : I&apos;ve driven a 2006 Escort. Do you rent those? &lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency      &lt;/span&gt;: Ah, excellent, you are in luck. We have one in stock.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant &lt;/span&gt;: Great. Can I rent it?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;      : No, no, no. We have to go through our interviews now. I&apos;ll go try and find the first person.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#1&lt;/span&gt; : Sorry I was late, I was in a meeting I couldn&apos;t get out of. I like to ask technical questions to get a feel for your competency as a driver. What color has the middle wire feeding into the distributer cap?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt;            :  What? What does that have to do with driving?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#1&lt;/span&gt; : If you have experience as you say driving an Escort then you would certainly know the color of that wire. &lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt;       : I know how to drive. Why don&apos;t you ask me questions about driving?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#1&lt;/span&gt; : I assure you I am. Are you this way with everyone you rent a car from? Nevertheless, I&apos;ll ask another question. What is the total weight of an Escort just after it has been washed, but before it has been dried?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant             &lt;/span&gt;: Hand dried or blow dried?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#1&lt;/span&gt; : It doesn&apos;t matter.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant            &lt;/span&gt;: I know.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#1&lt;/span&gt; : Well then. Thank you very much. We are done. I&apos;ll find the next person.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#2&lt;/span&gt; : Sorry I am late. They never told me I had an interview today. I see on your application that you&apos;ve driven a lot of different cars and you have a lot of experience driving. It&apos;s a shame you only drive that 2006 Escort, that&apos;s what we use here. So, how would you fit a SUV through the eye of a needle?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant            &lt;/span&gt;: What? What does that have to do with driving? I know how to drive! Please ask me some #$*&amp;amp;! questions about driving!&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#2&lt;/span&gt; : Sorry, I have a meeting to go to. Let me get the next interviewer.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#3 : &lt;/span&gt;Do you have an exact itinerary of where you will drive and park?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : Not really. I just thought I would drive around and explore. I know I plan on going to the tech museum downtown.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#3 : &lt;/span&gt;I believe that&apos;s on first street. That&apos;s good. It&apos;s on our approved list of streets. Have you ever driven first street before?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : Hm, let me think, no, don&apos;t think so. But I am sure I can find it. One city street is pretty much like any other, so it shouldn&apos;t be a problem.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : Oh I am sorry, our policy is you can only rent you a car if you&apos;ve driven on an approved street that you&apos;ve driven on before. We just can&apos;t take a chance that you won&apos;t be able to drive on new and different streets. &lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt; : I don&apos;t believe this. I know how to drive, navigate, diagnose and fix minor problems, ask for help, find out anything I need to find out, and learn anything I need to learn. I know everything I need to know to rent this car because I&apos;ve done it successfully a hundred times before!&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Interviewer#3&lt;/span&gt; : How excellent for you. But it&apos;s policy. We need the exact experience to be sure. No exceptions. You may be very skilled, but you don&apos;t have the specific skills we require...that will be all.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt; : Sorry, but interviewers #4 - #8 were called to an emergency off site with upper management to reformulate policies on policy formation.&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Applicant&lt;/span&gt;           : Bows head forward, looks at the water spot on the desk, and sighs. &lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;                 : We might or might not let you know in a couple of weeks if we&apos;ll rent you a car.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt;    : But I need a car now!&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;       : Very well. It was close, not everyone wanted to rent you a car, but we will rent you a 2006 Escort. How much did you pay for your last rental car?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt;    : I don&apos;t see how that matters. What are you charging?&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency&lt;/span&gt;       : We like to know what you paid before so you get a fair rate.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Applicant&lt;/span&gt;    : I paid market rates.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Agency       :&lt;/span&gt; Sorry, we must know how much...&lt;br&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Applicant&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    &lt;/span&gt;: Gets up and walks out of the interview room in total frustration, wondering how anyone ever rented a car at this agency.&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/03/12.html#a238</guid>
			<pubDate>Tue, 13 Mar 2007 04:58:46 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=238</comments>
			</item>
		<item>
			<title>The Input-Output Political Philosophy</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/02/12.html#a237</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;The Input-Output Political Philosophy&lt;/span&gt;&lt;br&gt;&lt;br&gt;Be conservative in what you do and be liberal in what you accept.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/02/12.html#a237</guid>
			<pubDate>Mon, 12 Feb 2007 16:36:01 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=237</comments>
			</item>
		<item>
			<title>If You See the Buddha in Your Scrum, Say Hi</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/02/05.html#a235</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;If You See the Buddha in Your Scrum, Say Hi&lt;br&gt;&lt;br&gt;&lt;/span&gt;Around 2,500 years ago the Buddha may have created one of the first and longest lasting intentional communities, that when looked at in a certain light, looks an awful lot like a modern agile organization. &lt;br&gt;&lt;br&gt;In Karen Armstrong&apos;s excellent book, &lt;span style=&quot;font-style: italic;&quot;&gt;Buddha&lt;/span&gt;, we learn soon after the Buddha became enlightened a rich merchant gave him some land and built a few huts so the Buddha and his followers could make a permanent camp. This organization was called a Sangha and was the forerunner of the Buddhist monasteries we see today. Until this time the Buddha and his followers were always on the road and took shelter wherever they could when the monsoon season rained in. Few would travel on the monsoon muddied roads so the Sangha became a place where Buddha and his followers could wait out the monsoons and continue their studies. Soon Sanghas were being created everywhere as appreciative students donated land to the Buddha&apos;s cause.&lt;br&gt;&lt;br&gt;Whenever you get people together you need rules of governance. How should people interact? Who should be in charge? What are the duties and obligations of someone who has joined? What are the Buddha&apos;s answers to these questions?&lt;br&gt;&lt;br&gt;I was surprised. The Buddha advocated decentralized administration and individual authority and responsibility. Since Buddhism is based on taking personal responsibility for finding ones own enlightenment, this organization makes sense, but for some reason I thought he would be more of a waterfall guy than an agile guy.&lt;br&gt;&lt;br&gt;When one particularly nasty crisis involving different factions hit the Sangha, the Buddha refused to take sides. He thought the solution must come from combatants themselves for it was the egotism of the parties involved that made it impossible for each side to see each others point of view. Based on the idea hatred is never appeased by more hatred, he said treat both sides with respect, but that they had to work it out for themselves. Both sides could be defused with friendship and sympathy. And eventually they did patch things up.&lt;br&gt;&lt;br&gt;The Sangha had no central authority and there was no real organization. All the members of the Order were equal because the Buddha refused to be a ruler that controlled everything. The Buddha was never much concerned about having a central leader because he taught every person was responsible for themselves. The Buddha thought coercion was against the spirit of the Order and that if one wanted to live in a way different than the Order then they are perfectly free to leave. Monks must make up their own minds and not be forced to follow anyone else&apos;s directives. People who left and came back were to be accepted with open arms.&lt;br&gt;&lt;br&gt;What members of the Order did share was the same lifestyle and the same teachings. Every six years the different groups would come together to recite a common confession of faith, called the &quot;bond.&quot; It&apos;s purpose was to bind the different groups together. What they pledged was:&lt;br&gt;&lt;br&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Refraining from all that is harmful.&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Attaining what is skillful.&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;And purifying one&apos;s own mind;&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;This is what the Buddha&apos;s teach.&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Forbearance and patience are the highest of all austerities;&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;And the Buddhas declare that Nirvana is the supreme value.&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Nobody who hurts another has truly &quot;Gone Forth&quot; from the home life.&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Nobody who injures others is a true monk.&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;No faultfinding, nor harming, restraint,&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Knowing the rule regarding food, the single bed and chair;&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Application in the higher perception derived from meditation &lt;br&gt;-- This is what the Awakened Ones teach.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;OK, it&apos;s not exactly the &lt;a href=&quot;http://agilemanifesto.org/&quot;&gt;Agile Manifesto&lt;/a&gt;, but there&apos;s a shared spirit. This pledge was important because it&apos;s all that united the different Orders together.&lt;br&gt;&lt;br&gt;What did the Buddha think would ensure the survival of the Order:&lt;br&gt;&lt;ol&gt;&lt;li&gt;Be mindful, spiritually alert, energetic and faithful to the meditative disciplines that alone can bring you to enlightenment.&lt;/li&gt;&lt;li&gt;Avoid such unskillful pursuits as gossiping, lazing around, and socializing.&lt;/li&gt;&lt;li&gt;Have no unprincipled friends and avoid falling under such people&apos;s spell.&lt;/li&gt;&lt;li&gt;Do not stop half way in your quest and be satisfied with the mediocre.&lt;/li&gt;&lt;li&gt;Become self reliant so you need not rely on any authority.&lt;/li&gt;&lt;/ol&gt;I am not trying to say there&apos;s a one-to-one correspondence between the Buddha&apos;s organizational style and Agile, but there are interesting parallels. I am not saying the training for finding enlightenment is the same as producing software, but there are interesting parallels. And this organization has survived almost every other for over 2,500 years and is still going strong. That&apos;s not a bad model.&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/02/05.html#a235</guid>
			<pubDate>Mon, 05 Feb 2007 21:58:25 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=235</comments>
			</item>
		<item>
			<title>Smackdown #2: Scrolling Crushes Paging After 2000 Years of Dominance</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/02/03.html#a233</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Smackdown #2: Scrolling Crushes Paging After 2000 Years of Dominance&lt;br&gt;&lt;br&gt;&lt;/span&gt;Scrolling is now enjoying a historical renaissance over 2000 years in the making. Once upon a time all books were lovingly drawn on  &lt;a href=&quot;http://www.lib.umich.edu/pap/k12/bookforms.html&quot;&gt;papyrus scrolls&lt;/a&gt;. Jewish Rabbis would have read the Old Testament from a scroll. Early Christians, perhaps as way to differentiate themselves from Jews, preferred a different book form, the &lt;a href=&quot;http://aic.stanford.edu/sg/bpg/annual/v17/bp17-10.html&quot;&gt;codex&lt;/a&gt;. The codex  is the same book style we use today: two sided pages held together with a binding. As Christianity rose to power the codex rose with it and scrolls fell out of popular use. &lt;br&gt;&lt;br&gt;Fast forward 2000 years into the future and scrolls are once again becoming  the presentation form of choice.  Why? Because web tech makes scrolling better than paging. But that wasn&apos;t always the case. Early web design continued the codex form. If you read most of the advice on how to design early web sites (circa 1994) the codex form was still king. Web pages were supposed to be cut up into little chunks and readers slogged through the text stream one slow click at a time. Small pages were faster to load, scrolling was new to most people, and scrolling in web pages was clumsy. So it was thought most readers would not scroll. Pages were the better design. &lt;br&gt;&lt;br&gt;All that has now changed. &lt;a href=&quot;http://blog.clicktale.com/about/&quot;&gt;ClickTale&lt;/a&gt;, a web site usability service, has found people are &lt;a href=&quot;http://blog.clicktale.com/?p=19&quot;&gt;scrolling&lt;/a&gt; and that web designers are now designing pages to feature scrolling. The &lt;a href=&quot;http://www.uie.com/articles/page_scrolling/&quot;&gt;User Interface Engineering&lt;/a&gt; folks have also found long pages are now what all the cool kids are doing. The tipping point came for me when mouses started sporting scroll wheels. Scrolling became as easy as bending a finger and just as quick. Single clicking through text was tortuously slow by comparison. And fast network pipes broadbanded concerns over slow load times into a quaint cautionary tale of the past.&lt;br&gt;&lt;br&gt;What is old has become new again. It&apos;s a fascinating quirk of history that technology has brought us right back to one of our earliest forms off mass information distribution.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/02/03.html#a233</guid>
			<pubDate>Sat, 03 Feb 2007 20:04:32 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=233&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0103955%2F2007%2F02%2F03.html%23a233</comments>
			</item>
		<item>
			<title>Sympathy Scoble Link</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/01/28.html#a232</link>
			<description>Sympathy Scoble Link&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://scobleizer.com/2007/01/28/pissing-off-the-blogosphere&quot;&gt;http://scobleizer.com/2007/01/28/pissing-off-the-blogosphere&lt;/a&gt;&lt;br&gt;&lt;br&gt;Hope that helps.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/01/28.html#a232</guid>
			<pubDate>Sun, 28 Jan 2007 20:32:18 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=232</comments>
			</item>
		<item>
			<title>Efficient Team Interaction Protocol: ACK Three Times for Every NAK</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/01/18.html#a230</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Efficient Team Interaction Protocol: ACK Three Times for Every NAK (The Rule of Three)&lt;br&gt;&lt;br&gt;&lt;/span&gt;Which interaction in a design meeting do you think will turn out the best results?&lt;br&gt;&lt;pre&gt;Scenario 1:&lt;br&gt;    Alpha Geek A: That is the stupidest idea I&apos;ve ever seen. Only an idiot could think up that idea. &lt;br&gt;    Alpha Geek B: What you do mean? It worked on my other projects and it&apos;s based on proven patterns.&lt;br&gt;    Alpha Geek A:  This project is much more demanding. It has to scale infinitely and cost nothing to deploy.&lt;br&gt;                             My new O(1) algorithm for distributed miracle working will do that no problem.&lt;br&gt;    Alpha Geek B:  The only scales you could find are on you highly squamata like epidermis. My&lt;br&gt;                             framework, though it will take 2 years to develop, will enable us to easily change&lt;br&gt;                             our design without changing code. &lt;br&gt;                             &lt;br&gt;Scenario 2:&lt;br&gt;   Alpha Geek A: That is the stupidest idea I&apos;ve ever seen. Only an idiot could think up that idea. &lt;br&gt;   Hub               :  A, your new algorithm is very creative. It looks like we&apos;ll be able to scale&lt;br&gt;                           easily with a lot less effort than we do now. Testing will be easier too.&lt;br&gt;                           But B has some good point about how difficult it will be to make changes&lt;br&gt;                           fast in the field. What in particular don&apos;t you like about B&apos;s idea and&lt;br&gt;                           why don&apos;t you cover again what particular goals you are trying to&lt;br&gt;                           accomplish?&lt;br&gt;  Alpha Geek B :  Wait, I see A&apos;s point. Let&apos;s call up Maven  A. I think we can work&lt;br&gt;                            out how to get the best of both worlds.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;In our little melodrama the two meetings went in very different directions. Why? The introduction of a &lt;span style=&quot;font-weight: bold;&quot;&gt;hub&lt;/span&gt; in scenario 2. A hub&apos;s role in the human network that defines a development organization is to exercise their power based on their mastery of social skills. The Alpha Geeks compete like mini Zeus&apos; throwing thunderbolts of thought at each other. The winner wins by flaming everyone with their superior intellect and forceful style of  argument. Unfortunately, that doesn&apos;t make for a good team. It makes for a team where people don&apos;t work together, where they don&apos;t help each other, and there&apos;s no synergy. It&apos;s a horrible place to work.&lt;br&gt;&lt;br&gt;Hubs help mediate the often poorly socialized Alpha Geeks. Hubs do this naturally because they are competent people in their job, naturally social, and brave enough to put themselves between the warring parties. &lt;br&gt;&lt;br&gt;What does a hub do exactly? It differs, but research on how groups can flourish may give us some ideas.&lt;br&gt;&lt;br&gt;One interesting approach is explained in the paper &lt;a href=&quot;http://www.unc.edu/peplab/publications/human_flourishing.pdf&quot;&gt;Positive Affect and the Complex Dynamics of Human Flourishing&lt;/a&gt;. They found that &lt;span style=&quot;font-weight: bold;&quot;&gt;a team flourishes when for every negative acknowledgment there were at least three positive acknowledgments&lt;/span&gt;. In our first scenario all interaction was negative and the direction of that team should be predictable and familiar.&lt;br&gt;&lt;br&gt;In the second scenario a hub didn&apos;t go for the jugular, instead they intervened between the combatants and framed the issues in such a way that people were positively acknowledged yet the problems were made visible and handled. What happens too often, like rats in a cage pressing an electrified lever, people in hostile teams enter a sort of learned helplessness. They just stop trying and the team and the product just fall apart because nobody feels like getting shocked again.&lt;br&gt;&lt;br&gt;A positive acknowledgment is something pleasant, upbeat, expressing appreciation and liking. A negative acknowledgment is something unpleasant, feeling contemptuous, irritable, expressing disdain and disliking. Scenario 1 was full of NAKs. By following the &lt;span style=&quot;font-weight: bold;&quot;&gt;rule of three&lt;/span&gt; in Scenario 2, that is having at last 3 ACKs for every NAK, the whole conversation was smoother and much more productive. In fact, the biggest indicator of a failing marriage is how the couple communicates. If the couple shows contempt and disgust of each other then the marriage will probably fail. Teams are very much like marriages in this regard.&lt;br&gt;&lt;br&gt;You don&apos;t lie when ACKing. You tell the truth. Being dishonest won&apos;t work because people will know you are just making stuff up. Dig deep down and genuinely find positives to talk about. They key benefit to this strategy is you have to listen to what the other people are talking about and you have to understand it enough to say something positive. That&apos;s 90% better than most conversations right there.&lt;br&gt;&lt;br&gt;Where does the number three come from? If you read the study it&apos;s taken from a nonlinear model of dynamic systems. That&apos;s geeky enough, isn&apos;t it? :-) The study data was taken from observing many team interactions. What the model shows is there is a critical positivity ratio of positive to negative acknowledgments. If your team is at or above that ratio your team will flourish. And that ratio is 3:1.&lt;br&gt;&lt;br&gt;The Rule of Three isn&apos;t the only thing that makes for a good team, but it&apos;s interesting because it&apos;s so specific and so seldom done. It&apos;s an easy to follow recipe that might radically change the dynamics of your work place. &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/01/18.html#a230</guid>
			<pubDate>Thu, 18 Jan 2007 20:09:17 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=230</comments>
			</item>
		<item>
			<title>The Solution to C++ Threading is Erlang</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2006/12/25.html#a229</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;The Solution to C++ Threading is Erlang&lt;/span&gt;&lt;br&gt;&lt;br&gt;This amusing and disturbing post on &lt;a href=&quot;http://enfranchisedmind.com/blog/archive/2006/10/21/163&quot;&gt;C++ Threading&lt;/a&gt; paints C++  going the same way Java went, into a corner. Having been on more than a few large distributed programming projects I have kept careful tally on how many people can get large complex threading projects correct. After a long and careful analysis the results are clear: 11 out of 10 people can&apos;t handle threads. It gets too complex too fast. I do not have fMRI studies showing brains literally melting when thinking about multi-threaded programs, just many many anecdotes.&lt;br&gt;&lt;br&gt;I recall fondly one of our most experienced engineers creating a lock that was off by one instruction and how that 1 in a million error took weeks of debugging by a tiger team to find. The release was eventually canceled. I recall how I took a lock on a data structure that when the system scaled up in size lasted 100 milliseconds too long which caused backups in queues throughout the system and deadly cascade of drops and message retries. Very embarrassing, but even more difficult to anticipate. I can recall how having a common memory library was an endless source of priority inversion problems. These same issues came up over and over again. Deadlock. Corruption. Priority inversion. Performance problems. Impossibility of new people to understand how the system worked.&lt;br&gt;&lt;br&gt;Yet when it all worked it worked so beautifully the pain was almost worth it. Almost. It&apos;s like the image of the City on the Hill. Almost within our earthly grasp, but just out of reach. Yet we keep striving, hubris driving us ever forward in her many threaded chariot.&lt;br&gt;&lt;br&gt;One reaction to the threading nightmare is to ban the use of threads in favor of a process based architecture. Multiple single threaded processes will be started instead of fewer threaded processes. The advantage is single threaded code is refreshingly simple to write. You don&apos;t have to worry about locks or shared state or corruption. There&apos;s much less dread of a pager going off at 2AM to handle a customer&apos;s 5-9s application that was declared dead of unnatural causes. &lt;br&gt;&lt;br&gt;Process based architectures are not without faults. Scaling is handled by adding more machines, which isn&apos;t possible in embedded applications and is costly in a data center. And you tend to push complexity elsewhere. Where is shared state stored? In a threaded application it would be in the same process protected by locks. In a process architecture you either have to 1) connect to a data store, 2) keep shared memory, or 3) publish the shared state to interested parties. This becomes even more interesting when an application must act on multiple information streams with low latency. Threaded applications are good at this, process applications are not.&lt;br&gt;&lt;br&gt;So going to one extreme of an all process based architecture works well for some applications, but not all. We can go to the other extreme and use our Posix thread library and let everyone do their own thing. That way lies the madness we touched on earlier.&lt;br&gt;&lt;br&gt;There&apos;s a middle ground that is highly performant, easy for programmers, and difficult to mess up. The middle ground is provided by &lt;a href=&quot;http://www.possibility.com/epowiki/Wiki.jsp?page=erlang&quot;&gt;Erlang&lt;/a&gt;. Erlang is a functional language and clearly C++ is not, but that doesn&apos;t matter. The distributed message passing model used by Erlang works perfectly for C++, in fact, I&apos;ve used something like it in many very successful projects.&lt;br&gt;&lt;br&gt;What does Erlang do that is so special?  It has one mechanism for handling concurrency: processes. It creates lightweight processes that are not mapped to OS processes and your application communicates between processes using messages. Within a process there is no locking  or any of the other complexities associated with threaded programming. Your data structures don&apos;t need locks. You don&apos;t have to worry if someone is scribbling over your memory. You write clear simple code. The above link talks more about Erlang and how it works. I don&apos;t want dive too deeply now.&lt;br&gt;&lt;br&gt;BTW, you can simulate much of Erlang in C++ using Actors, and I talk about how in my &lt;a href=&quot;http://www.possibility.com/epowiki/Wiki.jsp?page=ArchitectureDiscussion&quot;&gt;Architecture&lt;/a&gt; page, but without language support it&apos;s not safe. A programmer can always go around your library and cause disaster. Safety requires language support.&lt;br&gt;&lt;br&gt;The important point is that C++ can do something really interesting and
powerful in the threading area that will make C++ an exciting language
to work in again. They don&apos;t have to do the same old thing in the same
old horrible way.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2006/12/25.html#a229</guid>
			<pubDate>Mon, 25 Dec 2006 16:18:42 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=229</comments>
			</item>
		<item>
			<title>When You Do Nothing Good Things Happen</title>
			<link>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2006/07/27.html#a227</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;When You Do Nothing Good Things Happen&lt;br&gt;&lt;br&gt;&lt;/span&gt;This is the advice of Barry Schwartz, author of the Paradox of Choice. You can see the video of his presentation at google at &lt;a href=&quot;http://video.google.com/videoplay?docid=6127548813950043200&quot;&gt;http://video.google.com/videoplay?docid=6127548813950043200&lt;/a&gt;.&lt;br&gt;&lt;br&gt;One the big points of his book is that &quot;the more choices available the more likely you will choose nothing.&quot; This has enormous implications for life as we know it, but as this is nominally a programming blog, I also see it having a lot of relevance to program design.&lt;br&gt;&lt;br&gt;One of his recommendations to overcome the problem is to use opt-out instead of opt-in. When you ask people to opt-out of becoming organ donors, for example, you get a lot more people becoming donors. When you ask people to opt-out of joining a 401K you get a lot more people joining a 401K. The idea is that when people do nothing they get what&apos;s probably in their best interests. More people becoming organ donors and joining 401Ks are good things.&lt;br&gt;&lt;br&gt;How does this related to programming?&lt;br&gt;&lt;br&gt;At the application level we usually do a pretty good job of providing default options that give a good user experience. Can you imagine MS Windows, for example, by default providing no security and expecting the user to turn on all the security options? It would be nightmare. Oh, wait, that what they do, isn&apos;t it?&lt;br&gt;&lt;br&gt;Yet some default options perplex me. Why doesn&apos;t my editor by default save my changes all the time so my changes are safe from a power outage? I have to dig through 10 layers of menus to turn this work saving feature on. I usually remember to turn it on only after I have lost an hour&apos;s worth of work. So maybe at the application level we could do a better job of providing a &quot;good things happen&quot; experience.&lt;br&gt;&lt;br&gt;At the source code level good things rarely happen. Classes when created into objects usually expect the poor programmer to provide gazillions of options. The poor programmer not knowing all the options, often because of poor documentation, doesn&apos;t feel comfortable with this duty, so they may just choose to write their own code so they know they will know how the code works. &lt;br&gt;&lt;br&gt;Build your own is not always unreasonable behavior when face with uncertainty. A fear of not invented hear (NIH) is often blamed for people writing their own code, but that&apos;s not usually the problem. You build your own out of a healthy sense of self preservation. All the unknowns of a class/framework/system can easily seem more negative than the cost of building new.&lt;br&gt;&lt;br&gt;It would be helpful is more classes came out of the box with more &quot;good things happen&quot; automatically configurations. But programmers understandably don&apos;t want to dictate what a user should do so the usual default is to expect programmers to provide a ton of configuration.&lt;br&gt;&lt;br&gt;A pattern I like to get around this puzzle is to provide an abstract base class (ABC) with a &quot;good things happen&quot; default concrete implementation. This way the system is extensible by deriving from the ABC. All the signatures in the code use the ABC so adding new behaviors doesn&apos;t cause any code churn. And when making your concrete implementation you can provide a complete set of&amp;nbsp; &quot;good things happen&quot;&amp;nbsp; defaults using the logic that someone else can always create their own if they wish.&lt;br&gt;&lt;br&gt;If you provide good documentation for the options, the ability to see what the options are, and accessors to set the options, maybe your concrete class will be all that&apos;s necessary.&lt;br&gt;&lt;br&gt;By using factories you can extend this idea to provide  &quot;good things happen&quot; for many different scenarios in your program. &lt;br&gt;&lt;br&gt;The ideas in The Paradox of Choice on the debilitating role of having too much choice probably have wide and interesting implications in system design.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;</description>
			<guid>http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2006/07/27.html#a227</guid>
			<pubDate>Thu, 27 Jul 2006 20:26:58 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=103955&amp;amp;p=227</comments>
			</item>
		</channel>
	</rss>
