Monday, October 12, 2009

Prepare To Come About Means Duck

Nothing Toxic--better not browse this one too much at work--shows what happens when you ignore the skipper when he says "Prepare to come about".

This is the reason why wearing a life vest is very important on a sailboat.

Wednesday, September 16, 2009

Movie Theater Popcorn at Home: take 6

Looks like the ratios are getting dialed in. I've had a lot of luck with the following proportions: 1 teaspoon of coconut oil, 1/2 teaspoon of olive oil, 4/9 cup of Orville's popcorn kernels.

Mix the Flavacol into the popper with the kernels then add the oils. Put the whirly popper on the stove for a few minutes and the popcorn's done.

The end result is popcorn that is about right for my taste.

Monday, September 14, 2009

What's BW3 Trying to Say About Their Customers?

I've been a little annoyed by Buffalo Wild Wings' overtime commercials.

The message that I think they're trying to say is: Buffalo Wild Wings are so delicious, and their beer service is so prompt that young, attractive, and culturally diverse patrons would prefer to enjoy their tasty wings and cold beer much longer than the sporting events that are displayed on Buffalo Wild Wings' many gigantic projector screens. The young, attractive, and culturally diverse patrons are enjoying the tasty wings and beer so much that they'd like to see a referee risk his career, his livelihood, and the integrity of the game by intentionally make an incorrect call to prolong the game so the Buffalo Wild Wings patrons can enjoy eating the tasty chicken wings and drinking cold beer.

What Buffalo Wild Wings is saying to me is that their customers, the people who pay them money, aren't intelligent enough to understand how sports work. The people that one will find at a Buffalo Wild Wings restaurant during a football game would rather just have sports showing on the many gigantic projector screens so they can stay there.

I have to ask the obvious question: isn't enjoying tasty chicken wings and drinking ice-cold beer with friends reason enough to be in a bar/restaurant? Are these people embarrassed about being at the Buffalo Wild Wings such that they need to fabricate an excuse of 'enjoying the game' to justify their presence there? What are these people hiding? Do I want to be around people who live such complicated lives?

Let's pretend that the customers all have wives who expect them home right after the game and that's the reason that they want the game to get extended. Why don't they bring their wives to the game? The ringleader customer seems to have a female companion, could be his daughter. There are other ladies there, like the one featured at the 15 second mark. Is there an element about Buffalo Wild Wings that men would prefer their wives not see? Are they leading a secret second life? Is there something about the tasty chicken wings and ice cold beer that they would prefer their wives not enjoy? Do they hate their wives? Themselves? Society?

Let's also explore another possibility. Maybe the people in the commercial are highly influential morons. They don't understand the competition part of sports, but they still like the action. They'd be the same people who aren't all that interested in fine tapestry like way that the subplots of a Michael Bay film come together, but they sure like seeing giant robots beat the crap out of each other with lots of loud explosions. If this is the case why not just turn on ESPN Classic, Transformers 2, or replay the game on DVR and let them watch an old game and keep the integrity of the sport in tact for the rest of us? If they just want a game that will take a long time why not watch cricket instead of football?

I thought that Buffalo Wild Wings is a place where one can enjoy tasty chicken wings and an ice cold beer with friends at a reasonable price. These commercials make me question whether I want to do that in the company of these people who are willing to destroy the sanctity of the games that I love all so they can lead a secret other life/escape from their wives/entertain their simple minds. I don't like the idea that the patrons of a single Buffalo Wild Wings might have such influence over the outcome of sporting events. I think that mafiosi may frequent that Buffalo Wild Wings. I don't want to be there if another mobster tries to rub someone out.

For the sake of my personal safety, I think that I will stay away from BW3 on game day.

Tuesday, September 1, 2009

Documentary Movie review: Beer Wars

We watched most of Beer Wars last night. It's a very well made documentary about the brewing industry as told from a former beer executive, Anat Baron.

I must admit I've been largely ignorant of the business behind beer. I was fortunate to have worked The Sanctuary Restaurant that featured many great beers before featuring many great beers was popular. My experience there gave me an appreciation for the non-macro brewed beers. My current favorite beers come from the Surly brewery.

I'm not a very good descriptor of beers. I honestly couldn't tell whether one beer is more 'hoppy' than another. I struggle to identify different notes in beers and wines, but I do know what I like, and Surly beer is one beer that I do enjoy.

One thing that I have noticed is that I don't really care much for the flavor of the big American beers. I used to enjoy drinking Budweiser during hot summer days. It is genuinely refreshing. So is water though. I can get good drinking water from my tap for less than a penny a gallon.

Miller and Coors don't taste much different to me either. As far as beers go, they are fairly bland.

Beer Wars explains how the big breweries are able to get people to drink their beer instead of the more flavorful, and IMO better, regional and local beers. The obvious first reason is branding and advertising. The big beers do a lot to get people to associate themselves with a brand of beer. I used to know a guy who'd only drive Ford vehicles and only drink Miller beers. He had a sense of pride for being loyal to his brands.

This is one of the most fascinating facets of humans to me. Why is it that we are so eager to embrace an identity and give so much to it, when it's not in our best interest to be loyal. If we were to look out for out best interest, loyalty is not something that we'd give out easily. A savvy purchaser knows that they will get more value for their money if the sellers know that the purchaser is shopping around.

It's probably in our best interest as customers to stray like tomcats between businesses. If they view us as loyal, they will be less willing to provide the best products and services at the most competitive prices. Instead, they will focus as little attention to keeping our business as they can afford and focus on gaining new business. That's true for any competitive market.

Beer Wars gives a copious amount of time to the small brewers and shows them as people who try to compete on the quality of their beers and whereas the mega beers compete through advertising and low prices. Seeing the smaller brews made me curious to taste some of these beers and less interested in drinking the larger beers.

The competitive beer market is far more complex than I realized. One thing that I was completely unaware of is the three tiered alcohol market. I didn't realize that brewers are prohibited from selling their beer directly to retailers, restaurants, and the public. They need to go through a distributor. The distributor acts as a middle person and sells the beer to the liquor stores and restaurants. That seems like a position of considerable influence. I struggle to understand how adding a mandatory distributor between the producers and the retailers will promote equity within a competitive market.

I enjoyed watching Beer Wars. Beer Wars is told from the perspective of a smaller beverage producer, but I think the content is valid. I was influenced by the film to want to experience the variety of the smaller craft brews and to drink less of the larger beers.

Monday, August 31, 2009

Beautiful Time Lapse, Beautiful Music, Beautiful Prose

Michael Marantz arranged and composed the music that sets wonderful visual and audible scenery to Carl Sagan reading from "Pale Blue Dot". Full screen this one and let it run.

EARTH: The Pale Blue Dot from Michael Marantz on Vimeo.

Wednesday, August 26, 2009

Movie Theater Popcorn at Home: take 5

In my previous post I said I would avoid coconut oil because I believed it was unhealthy. It turns out that coconut oil is actually pretty healthy so long as it is not hydrogenated. According to Wikipedia, non-hydrogenated coconut oil may actually raise the levels of 'good' cholesterol.

Nevertheless, Katy surprised me last night with a jar of organic coconut oil. I'm starting to measure out my corn in cups. I measured a heaping half cup of Orville kernels, and about a tablespoon of the organic colored popcorn. I used 1 tablespoon of coconut oil and 1 teaspoon of Flavacol.

I added them all to the Whirley-Pop Stovetop Popcorn Popper
and cooked them.

The results: best yet. It tastes exactly like the popcorn at the movie theater.

Monday, August 24, 2009

Movie Theater Popcorn at Home: take 2, take 3, take 4

We used Orville's popcorn for attempts 2 through 4 of getting movie theater popcorn at home.

It's producing a much larger and more consistent popcorn than the organic stuff. The organics aren't bad, but they're different. One advantage with the organic popcorn is the shells are a little thicker and don't get stuck in my teeth.

In attempts 2 through 4 I dialed in the amounts of corn, olive oil, and Flavacol.

8 heaping tablespoons of corn, 2 tablespoons of olive oil and 1/2 tablespoon of Flavacol seems to be the right ratio.

I've been told that coconut oil produces a more theater like flavor, but I'm concerned that it is not very healthy.

Wednesday, August 19, 2009

Movie Theater Popcorn at Home: take 1

All the ingredients arrived. The Whirley-Pop Stovetop Popcorn Popper was the final piece. Last night I tried 6 oz. of organic popcorn with 1 tablespoon of olive oil and 3/4 tablespoon of Flavacol. I mixed all of the ingredients into the popper and then applied it to heat.

One challenge was finding the appropriate heat level on my stove. I didn't want to scorch the popcorn so I worked my way up the dial and found that the kernels pop around the middle of the dial.

The results: pretty good for a first try. The corn popped a little smaller than the kind I'm used to, but it tasted pretty close. The smaller kernels were much more filling than regular popcorn.

I'm going to try using Orville's popcorn tonight and less of it.

Tuesday, August 18, 2009

Health Care Hodge Podge

Congressman Anthony Weiner asks what value is there in having private health insurance on Morning Joe. As far as I can tell, all they really seem to do is deny coverage and take a 20% cut.

I am struggling to understand how people can be in favor of private, for profit, health insurance. The market forces of improving profits and reactively providing health care are at odds when insurance companies can summarily deny coverage, weasel out of honoring their coverage through preexisting conditions and rescinding policies. What's so good about a corporation that just takes our money and rips us off when we become inconvenient to their profits.

I'm terrified of the private health insurers. I have absolutely no faith that they will honor their end of the agreement should something catastrophic happen. They'll dump me and eventually Medicaid or Medicare will cover some treatment.

Isn't that ironic? The private health insurers get to cherry pick the healthy people while the government gets to pay for the poor, the old, and the infirmed. They say that they are against a public option, but there's one that they are counting on, or not. They don't care unless there's something in it for them.

I believe Wendell Potter when he talks about his experiences as an executive at Cigna.

I share Weiner's position where I just don't understand what value there is with private for profit health insurance.

Some people have criticized health care reform saying that changing the system will cause the loss of jobs. I certainly hope that it does cause some jobs to be lost. I won't shed a tear if health care lobbyists are sent packing, or if the people whose job it is to find a way to rescind a policy are canned. I have nothing against those people, but their positions are not doing good things for the country.

If the cost of insuring people is lifted, or the responsibility of insuring employees is lifted, employers, small businesses, will be able to employ more people. The cost of insuring employees is growing at a ridiculous rate year over year. I would submit that the cost of health insurance is the number one detractor from annual raises. The health insurance companies are getting double digit raises year after year and everyone else is lucky if they get 4%.

Why are people angry about Obama being a socialist while most people's raises are going to improve the profits of their health insurance company? I think the people who are the most outraged by health care reform are not well informed. Bringing guns to a town hall meeting and acting in ways that would embarrass a pack of baboons isn't the way to voice one's position.

I find it ironic that these people, some showing up with firearms, are complaining about Obama being a tyrant determined to deprive the people of freedom when the previous administration jailed orderly people for wearing shirts that tastefully voice a position differing from the president.

Monday, August 17, 2009

Movie Theater Popcorn at Home: That's a challenge I will take

I admit it. Movie theater popcorn is one of my many weaknesses. Like many, I've enjoyed popcorn in the theater and then miserably failed to make popcorn as delicious at home. As a kid, I used to experiment with different popping techniques and ingredients, but it never came out that great. It was good, but not the addictive perfection that is movie theater popcorn.

I had long since given up about making theater style popcorn.

Recently though, I ran across this post about how to make movie theater popcorn at home.

I'm going to give it a try. I've ordered all the ingredients. They are en route.

BTW, anyone interested in picking up a carton of Flavacol? I've got a dozen of them now. We're set for the next two lifetimes on that stuff.

I'll report my findings after the popper arrives this week.

Entertaining and Informative: is a collection of jury rigged fixes. You have to hand it to the subjects, they definitely think outside the box.

I'm reminded of a story that a friend of mine used to tell. He was a technician at a Sears automotive. Normally they would do fairly simple service on vehicles. They'd change tires, mufflers, brakes; that sort of thing.

They had a car come in for a brake repair. There were a few remarkable things about this vehicle. First thing: eight guys got out of it. Second: the tires were almost completely bald. Third: there wasn't a steering wheel. Instead they used either a pipe wrench or a vise grips pliers to steer the car, like a tiller on a sailboat.

When my friend told them that he couldn't let them leave without replacing the steering wheel and tires the eight men would hear none of it. They wanted to drive away. My friend ended up having the owner sign a waiver releasing them of any liability. He also let the town's finest know that there was about seven vehicle violations coming their way.

I regret my friend didn't take a picture and share it with

Thursday, August 13, 2009

This is the stuff that fuels my disdain for private health insurers

This American Life ran an excellent story about the practice of recission by insurers.

Recission is the practice of cancelling a policy on the grounds that the customer lied, or provided factually incorrect information, on the application form. What makes this practice especially dubious is the applications are so difficult to fill out that the CEO of the company issuing them can't fill them out. How can a regular consumer be expected to fill out the application correctly?

In practice, recission is a tool that the health insurance companies can use as a get out of paying for expensive claims for free card. The insurance PR spin will say that "Recission is not about cost", or it's an innocent business process that they need to do to deliver the best care that they can to their policy holders.

It wouldn't be difficult to find correlation between rescinded policies that have, or show leading indicators of, major claims and policies that do not. We don't hear about people whose policies are cancelled for no reason, but then again, who would really make a fuss about it. I'd love to see figures correlating recission to expected costs.

Recission may have started as a way to drop policy holders who opened a policy in bad faith. What it is in practice is an option that the insurance company can use to ditch paying expensive claims and improving the profit margins.

I'd love to hear someone sincerely try to defend this practice. How is it not fraud?

Tuesday, August 11, 2009

From "The Death Panels Are Already Here"

Mike Madden wrote that the so called "Death Panels" that is the threat du jour of socialized medicine is already here for Spot on Mike!

The current American system of for profit health insurance is deeply flawed with conflicts of interest and inefficiencies.

Corporations are ultimately responsible for providing a return on the shareholders' investment. The people who run the corporation are rewarded for producing a better return, and penalized for failing to do so.

The math isn't that complicated. Health insurance companies generate revenue through premiums. Providing health care to their policy holders costs them money. Ideally, if an insurer were to position itself to only collect premiums and pay for no health care they'd maximize their profits and do right to their shareholders.

Amy Goodman reported on TruthDig that former Cigna whistleblower Wendell Potter admits:
if a person makes a major claim for coverage, the insurer will often scrutinize the person’s original application, looking for any error that would allow it to cancel the policy. Likewise, if a small company’s employees make too many claims, the insurer, Potter says, “very likely will jack up the rates so much that your employer has no alternative but to leave you and your co-workers without insurance.

This is exactly the type of thing that makes a private-for profit health insurance provider evil.

It's an unfair deal where all of us pay into a system that will drop us as soon as we become inconvenient. It is trading the life of common people to enrich the already full coffers of a privileged few.

Everybody knows the deal is rotten,
Old Black Joe still picking cotton
for your ribbons and bows.

People buy insurance to protect from catastrophe. For most people, catastrophe comes in the form of a major medical procedure. Not many people can shoulder the burden of paying for a $100,000 procedure. That's why we're putting our money into a health insurance policy, if we need it we think it's there for us.

I have my doubts whether the private for profit insurance industry would be there for us. It seems that they fight tooth and nail to avoid honoring even moderate claims through denied claims, policy cancellation and payment rescission. The health insurance industry may spin their practices in ways that don't sound very bad, but it's tantamount to euthanasia. Except the person is left to suffer without care.

Why are people scared of fictional government death panels that have absolutely no interest in denying care when there are very real health insurance companies that have an absolute incentive in denying you care?

I don't really care how we get from where we are to a better place, I just want out of our current system. There are ample opportunities to improve the American health care system. Removing the private for profit health care element would be a good start.

Wednesday, August 5, 2009

Excellent Read: Unconscionable Math

Taunter Media has an excellent essay, Unconscionable Math, describing the position of for profit health insurance companies from a mathematician's standpoint. The position is the for profit health care model is broken.
Everybody knows the fight was fixed,
The poor stay poor, the rich get rich.
That's how it goes.
--Leonard Cohen

For the record, I am in favor of eliminating for profit health care. I believe that it is impossible to both provide care to people and maximize profits for shareholders. At the end of the day, the shareholders are going to win, and the patients will suffer.

Ironically, I don't think that any of the horrors that the anti-public health prognosticators are espousing are any worse than our current system.

I have personally experienced the 'efficiency of the private insurers' and it's surprisingly similar to a bass ackward bureaucracy.

When I was a few years into my career as a software engineer, my dentist and a group of highly qualified specialists made a diagnosis that I had a Temporal Mandibular Joint (TMJ) issue that could be treated through a surgical procedure. My condition, when they diagnosed it contributed to severe headaches and issues chewing food. I could not close my mouth completely. Three independent qualified doctors agreed that my condition required treatment which included 2 years of orthodontics and a surgical procedure to be performed after a year of orthodontics.

I contacted my health insurer to verify that the surgical procedure would be covered. My health insurer at the time, Cigna, demonstrated some of the poorest customer service and responsiveness than any business I've ever dealt with while pre-certifying the operation. The first representative I spoke with said that no, they would not cover the operation without hearing any details. I tried to contact them again and improved the prognosis from a no to a maybe. For over 9 months Cigna did not give an answer. They contacted the oral surgeon's office and sat on the surgeon's reply for months. They promised me an answer at least three times and failed to deliver it. Finally, shortly before the surgery was to take place, they sent me a letter stating that they would not pay for the operation.

The cost of the surgery was estimated at just under $30,000. I had nowhere near that much money available and I had no idea how I would cover the cost if I had to pay for it myself. The stress, worry, and depression from waiting put me in a bad condition. My attitude towards my employer and my work became horrible. I felt betrayed by my insurer and my employer. I did my part as an employee and they ditched their responsibilities when I became inconvenient.

Why did they ditch me and deny me coverage? Was it outside of my policy? Nope. Was it unnecessary? I couldn't completely close my mouth. Was it efficient? In a way it was, but not for me. It is efficient in the sense that I didn't cost Cigna any money because they were able to avoid paying for the operation.

What was the total cost? As an employee I was not nearly as productive as I could have been. The lack of sleep, depression, and worry made it very difficult to focus on my work. The loyalty I felt towards my company was gone. Before the ordeal I thought nothing of working unpaid overtime and doing whatever it took to get the job down. I was punching a clock after the ordeal.

My insurer and my company also lost me as soon as I could find a company with a better policy that would hire me. I'm sure that whoever was hired to replace me cost much more than I did. Actually I was being paid about $30,000 a year under the market price for someone in my position. To save a one time cost of $30,000, my former employer traded up by paying it every year.

There's a huge difference between trying to cover costs and maximizing profits. It's ironic to me that I've heard health insurance companies describe the people they insure as having a sense of entitlement. The insurers lament that the people feel entitled to care that would improve their lifestyle like they are trying to cheat the system.

I think there's a different sense of entitlement and it comes from the private health insurance companies. They feel entitled to take our money and our quality of life. Under our current health care system, we're playing a rigged game. These companies have no concern for the quality or value of our lives. They only want us if they are going to make money off of not providing treatment to us.

If given a choice of a public system where I need to wait for my treatment, but instantly knowing that my treatment will be covered and the current American system of being able to wait less time for treatment but waiting much longer to eventually learn whether my treatment will be covered, I choose the former.

Health insurance companies are fighting hard to maintain the status quo and to slant the system more in their favor. They are trying to scare us into fearing a government health care system.

They use words like socialism and allude to waiting for health care. I'm sorry, has anyone ever not had to wait for health care under our system? Last time I went to see my doctor I waited well over an hour to see him after I waited three weeks to see him. That was for my annual physical.

There is a conflict of interests between providing life, i.e. health care, and maximizing profits. In our current system, the profits are winning out. Are we willing to trade life for profits?

Tuesday, July 21, 2009

I'm a sucker for a good tornado video

Here's some footage from inside a tornado.

That's an amazing clip.

Thursday, July 16, 2009

Java Double Brace Initialization describes one of my favorite Java tricks: double brace initialization. Double brace initialization is an extension of creating an anonymous inner class. The inner brace is a static initialization block. It will get invokes when the object is initialized. lists UI class instantiation as an application for double bracing. It's been ages since I've used Swing for anything, but I remember anonymous inner classes were very helpful for making tweaks to the Swing classes.

For a brief example consider the following

Foo foo = new Foo() {
// static initialization block
// overridden and new methods
public void setBar(int bar) {
if (bar < 0 || bar >100) {
// ignore input that is out of range
} = bar;

Double bracing can be very helpful for writing test code. The static initialization block can set up an object in a state that is relevant to the test and the relevant methods of the class can be overridden to support the test.

Friday, June 26, 2009

My TRON Question

Anyone ever wonder how much real time elapsed in the movie TRON through the whole computer portion of the film? I was thinking that the events probably don't take that long.

Consider the events that occur in the film are just programs being executed. Since those programs are just performing a list of tasks, it would seem that the amount of time that Flynn takes defeating the MCP is probably not that much time in the human world. It's like the whole computer world part of the film is occurring in very slow motion.

Thursday, June 11, 2009

Excellent Read: The first few milliseconds of an HTTPS transaction

There is a very nice explanation of how an HTTPS connection is initiated at Moserware.

All too often, software developers work in an abstracted world and the details of what happens below the working abstraction layers is a complete mystery. Moser's explanation of the HTTPS connection initiation is a very clear and clean explanation of the process of establishing a trusted connection. It is well worth reading.

Editorial note: I'm hoping to find an opportunity in my schedule to resume writing more frequently.

Monday, June 1, 2009

Psychic Powers, Mystery, Old Timey Cars Chasing Vans; This Show Has It All

Fact: all great televisions shows have great theme songs: Dallas, Welcome Back Kotter, Knight Rider.
Fact: Baffled has the best theme song.

Nimoy is the opposite of fail. He is pass.

Tuesday, May 26, 2009

Morning Schadenfreude

On my drive to work this morning I noticed the vehicle ahead of me is an unmarked police cruiser. I followed the cruiser at a safe distance at about the speed limit. Many of my other fellow motorists did the same.

One motorist did attempt to pass the lot of us. He was able to just barely make it past the unmarked cruiser on the right before the cruiser overtook a truck in the right lane. One might say that the driver cut the officer off. He did signal though, that was nice.

It didn't take long for the officer to pull the passing motorist over though.

That gave me a little bit of cheer this morning.

Wednesday, May 20, 2009

Approved Software: Clojure Box

I'm playing around with Clojure Box. It's a nice all in one Clojure development environment built on Emacs.

It's much easier to get running than trying to remember the command to get the REPL running. I've only run the command to get REPL running a few times--it's not like I ever close it.

Clojure Box is a nice way to get going with Clojure. I recommend giving Clojure Box, and giving Clojure, a try.

Monday, May 18, 2009

Quick Hit: High Fructose Corn Syrup vs Sugar

I had always believed that High Fructose Corn Syrup and cane sugar were basically the same on a molecular level.

I don't regularly drink soda or other artificially sweetened beverages. When I do, I prefer sugar sweetened soda. I think that it is not as thick or heavy as HFCS sweetened soda.

I found out from a friend that the HFCS sweetened beverages actually raise the blood sugar level much faster in her diabetic son than cane sugar sweetened beverages. She's done the comparisons with the Passover Coke vs. regular Coke and the throwback Pepsi products. She is able to monitor the effects of the beverages with his blood monitor.

I wonder if there are more conclusive studies that highlight the differences between HFCS sweetened foods and those that are sweetened with sugar. There may be something to the theorists who believe that HFCS has a big role in the recent obesity and diabetes epidemics.

Saturday, May 9, 2009

Nice Explanation of the Credit Crisis

Jonathan Jarvis, made a really nice video explaining the credit crisis. It runs just shy of 10 minutes, but it's well worth the watch.

Thursday, May 7, 2009

Good Read: Teller talks the science of magic

Second to James Randi, Penn and Teller were the most influential magicians in my early years. Good thing they usurped the title from Doug Henning and David Copperfield.

Randi, Penn, and Teller all contributed to forming my skepticism and view of the world. I know that had I not been introduced to their work that my view of the world would be much different than it is.

In this month's issue of Wired, Teller of Penn and Teller discusses The Neuroscience of Magic.

I find it amazing how we can watch a magic trick and know that it is a magic trick and still not see how the trick works.

When I was in college, I had a friend who was a magician. He and his magic friends used to use me as an observer. Over time, I learned to see through some of the tricks. Even with practice, I can't follow a true slight of hand master like Ricky Jay.

I can go over Jay's cup and balls clip and still the trick fools me.

Wednesday, April 29, 2009

Thursday, April 23, 2009

Ignite Minneapolis: great energy, but would the people in the back kindly STFU

Last night I went to the first event of, hopefully a long series, Ignite Minneapolis.

The event features a series of presentations that all follow a strict format of 15 seconds per slide for 20 slides, or a 5 minute presentation. Here's a video feed from the presentations last night. The topics were all over the board, but all of them were interesting. While the presentations were going on a projector was showing twitter comments in real time. I thought it was pretty amusing to see some of the speakers react to their hecklers. They seemed to take it all in good spirit.

There was a great showing of people. I'd say they were a bit overbooked for the space--the only problem of the evening was the disrupting noise of the conversations by the couple hundred people in the back of the room. In the future, I'd love to see a designated conversation area that's in a physically separated space from the presentations. Minnedemo did this well at Intermedia Arts.

The conversations at the event were half the draw for me. I had a chance to meet an attorney and an epidemiology student. I learned that attorneys are still in a process of transitioning from a paper document based system of doing business to electronically doing their business. I learned from the epidemiology student that, from a statistical standpoint, the spread of biological diseases shares the same characteristics as the spread of computer viruses.

It was also a chance to say hi to my neighbor Ben. We live about 4 houses from each other, but I swear we see each other more at these events than we do in the neighborhood.

In all, I thought the event was a tremendous success. It's hard to lose when Surly beer is provided free. I'm going to keep an eye out for the next Ignite event in Minneapolis. I'll try and get some of my non-technical friends to come along too.

Wednesday, April 22, 2009

Here's a delightful song about pirates and emperors

This is very well done.

Wednesday, April 15, 2009

Stunning Pictures of Child Labor in Bangladesh is featuring a story by G.M.B. Akash on child labor in Bangladesh.

Having a visual image showing the lives of children in the developing world is far more powerful than what most textual descriptions can give.

One picture in particular struck me as signifying the tragedy. It's a picture that focuses on the hands of an 8 year old child laborer. The hands are beaten and worn worse than any of the retirement aged tradesmen that I know. To me, the picture symbolizes the imposition of the weathering effect of a career's worth of toil onto children. It's taking youth from children and imposing the pains of age prematurely.

As convenient as child labor is for us in the US to turn a blind eye to, I wish there were a way that more people could be made aware of the issue and do something about it.

Nice infographic: Where your tax money goes is hosting a beautiful diagram of where tax money goes.

Well done.

Sunday, April 12, 2009

Protip: Take the dentures out before you skydive


I do not endorse the adhesive that she used to secure her dentures.

Friday, April 10, 2009

Cool Site That Describes, Demonstrates, and Animates Sorting Algorithms

Sorting Algorithms is a very well made site that shows how different sorting algorithms work. I think the animated demonstrations are an especially nice touch.

Thursday, April 9, 2009

Amazing Tornado Video


Unbelievably stupid too.

Wednesday, April 8, 2009

Hey Mom, This site is the #1 hit for the google keywords...

open google and type in "Tough Road To Ho" and you get a tidbit I wrote a year ago. I'm not sure I should be proud of this, but that's how a sizable amount of my traffic finds Intellectual Detritus. For those looking to learn more about the phrase Tough Road to Ho, welcome.

Tuesday, April 7, 2009

Funny Comic, If TV Science Were Like Real Science has a brilliant comic that speculates what some of our favorite science themed television shows would be like if they were to theme their content more towards how science actually works. Which is funny, because all I learned about science is from Horatio Caine.

From H, I learned that one can see the numbers of a license plate off a curved reflected surface in uneven light that was captured a grainy ATM camera feed by using the 'enhance' method.

Monday, April 6, 2009

Cool video of a helecoptor rescue at sea

The camera effects make the video look like stop motion with models, but it's real people.

Wednesday, April 1, 2009

Excellent Career Advice from Esther Derby

I'm going to have to make a habit of reading Esther Derby's advice more often. In her blog, Esther Derby gives 10 very good pieces of advice for developers to maintain the appearance of value. I agree with every point in the list.

Being visibly valuable is very important. I've been told that back in the day at Control Data, there was a big sign that read "An ounce of perception is worth a pound of performance." It's absolutely true that real performance is only worth what people perceive.

My own additional advice to people is to be cheerful and make your manager's job easier. The first part is because I think there are enough people who choose to express their negative emotions. Be genuine though. A forced smile is far more unsettling than a genuine scowl.

I think the second part is a little more complicated than it sounds. Making a manager's job easier isn't about being a yes man. It isn't about brown nosing either. Making your manager's job easier is about finding their pain points and removing/lessening them.

One thing I found was helpful is approaching a conversation about a problem with an application. I don't like doing this because it seems like you're coming to your boss with something bad and bringing a lot to the manager without any help on making it better.

One approach people take when communicating a problem with their manager is simply to report the problem. If this is something simple and typical I think it's OK to just fix the problem then report that there was an issue and you resolved it. If there's anything new about the issue though you may come off as a loose cannon.

Another approach is to just fix the problem and report that the problem was fixed. I think that an approach in the middle is best. When I find a problem I try to think of at least one viable solution before I report the problem to my manager. I think this is a nice way to build the perception that you're someone who brings a solution when reporting a problem. The manager may not agree with the solution, but at least you're adding some value to the message.

It's really simple, don't add to your manager's problems and contribute to the things that helps her. If it does come time for your manager to make a tough decision, being the person who makes their job easier is going to help you out a lot more than being the person who makes their job harder.

Tuesday, March 31, 2009

$20 Million Speach

A very young Fred Rogers appearing before congress to argue for $20 million in funding for the Corporation for Public Broadcasting.

They don't make them like Fred Rogers anymore.

Chopping Firewood is Remarkably Therapeutic

We had a tree service take out a couple of trees last week. We now have [more of] an abundance of wood.

This is the first year I've split the firewood. In previous years, the wood that we've trimmed from our trees has been small enough to burn on their own. That is not the case this year.

Prior to Sunday, I had never split wood. I picked up an axe, a wedge, and an 8 pound sledge. The axe works well enough on the small stuff. I'm going to hold off on splitting that for a bit. I'm having way too much fun with the wedge and sledge on the bigger logs.

It's nice exercise. I get to spend time outside doing something that requires little from the mental faculties. The funny thing about chopping wood is going to the gym afterwards seems more like a break instead of the burden that it usually seems to be. Stairmastering 40 flights was almost easy, almost.

Friday, March 27, 2009

Wednesday, March 25, 2009

Capital One Credit Card Lab Commercials

What is Capital One trying to say about the people who use their credit card lab in their commercials? There's the ship captain whose craft is being attacked by a giant sea monster. There's the castaway who uses his computer not to arrange a rescue, but create a Capital One credit card.

Is Capital One trying to say that if you're a person who literally cannot make a good decision to save their life and gets preoccupied with shiny objects that they should consider opening a line of credit with Capital One. Are they trying to say that no matter who you are, you aren't too stupid or too irresponsible to own a Capital One credit card? I'd really like to know what the message is that the commercials are intended to communicate.

Tuesday, March 24, 2009

Clojure Documentation has a very extensive guide to Clojure.

I haven't done anything useful with it yet, but playing with it is fairly easy. I really am looking forward to doing something cool with Clojure.

How do I put this in a continuous loop

This is television at its finest.

Sunday, March 22, 2009

Generation Loss Of JPEG Images

This is a nice video showing how JPEG compression loses detail over 600 generations.

Wednesday, March 18, 2009

Spring Project: Rainbarrels

Installing rain barrels and a rain garden is something that we've wanted to do for a couple of years. My biggest concern with getting rain barrels is they seem to be unnecessarily expensive. Most of them sell for around $100 each or more per 55 gallon barrel.

I'd prefer to start with a storage capacity of over 100 gallons. Over 200 gallons would be ideal.

I'm going to try asking some friends if they know where I can get used 55 gallon containers. I'm thinking that there may be some companies that deal with used industrial containers. My only concern with that route is making sure that the containers weren't used for containing dangerous contents.

The other part of my project is looking for a native species of grass to replace our current lawn. I hear that there are some nice grasses that require less water and maintenance.

This diversion should keep me busy for a while.

Monday, March 16, 2009

No Fluff Just Stuff Twin Cities Spring 2009 Review

The Spring 2009 Twin Cities No Fluff conference was last weekend. I enjoyed the weekend seeing old friends and learning new things.

I have to give out some gratitude to Jay Zimmerman for putting the conference together and running the show. Every conference I've gone to has appeared to run flawlessly.

My experience in the sessions was excellent. I spent the first day listening to Ted Neward's talks about Java Platform Security and what we might see in Java 7.

For Java 7 it looks like there will definitely be significant performance improvements. Chiefly, the introduction of the G1 garbage collector seams to be generating the most buzz.

Java Platform Security is something that have been largely unaware of. Neward did a good job explaining some of the Java security APIs and how we can implement them in our applications today to make our applications less vulnerable to malicious attacks. One thing that stuck out as a good practice is to run a comprehensive set of tests on a Java application and see what permissions are needed and then modify the security policy to accommodate only those necessary actions.

I commented that the security session was a little bit dry. One of my friends commented that if I said it was dry it must have been...well what do people think of me?

Neil Ford gave his keynote "On the lam from the furniture police." It's a great talk. That was actually the second time I've heard it and it was just as much fun the second time as the first.

Day 2: Stuart Halloway's Programming Clojure talk left me very hungry to give Clojure a spin. I like what I see in Clojure over Scala. Both languages have me interested though. The things I really like about functional languages is the simplicity in which they express functions. Functional programs take very little space to express function. The example Halloway gave reduced a 10+ line method from Apache Commons into a single line of Clojure.

One question that came up in the functional language discussions is: when are the functional languages going to become the killer app? The need for functional programming seems to revolve around concurrent programming and multi-core CPUs. My thoughts are this: right now 2-4 core systems are common. By using only a single core we're realizing roughly half to a quarter of our systems' potential. I think that when 16, 32, and 64 core systems are more common, then we're only going to realize 1/16, 1/32, or 1/64 of our system's potential. Something amazing is going to realize that potential and at that point I think the bandwagon will begin to fill.

The next session that I found to be very informative was Ken Sipe's Java Memory, Performance and the Garbage Collector. Great content and great delivery. Ken Sipe is becoming one of my favorite speakers on the tour. Java memory management is something that I admittedly have treated with the cargo cult mentality of setting the -Xmx to 1Gb and hoping that the Out of Memory errors go away. I had never heard of tools like visualgc, but I think it will be in my tool box of Java memory tools. It's a very cool JVM memory monitoring tool. I think that a lot of the mystery behind the garbage collector will not be so mysterious anymore.

I attended Ken Sipe's Hacking-The Dark Arts. Hacking/security is an interest of mine so some of his content was not new to me. It was a good refresher on some of the more common security vulnerabilities--SQL injection and cross site scripting.

On day 3 I enjoyed Mathhew McCullough's Git talk. I've heard great things about Git and I'm even using it as a source repository at home. I'm really not using it effectively though. I think that I will be much more effective with it now.

Neil Ford's Domain Specific Languages and Regular Expression talks were very informative to me. I think that both of them gave valuable content.

I concluded the conference with David Hussman's talk on Lean agile development. If there's a speaker who knows how to end a conference on a nice tranquil note it's David Hussman. I always leave his talks feeling far more relaxed than anybody else.

The takeaway that I'm getting is what I've suspected in the agile space. It's getting crowded with people who don't understand what they are doing. I don't know how I feel about it. On one hand, people are improving the way they work and realizing tremendous value from adopting some of the agile practices. On the other hand, people are doing 'agile' things that don't make any sense to them and poisoning agility within their organizations.

Another thing that occurred to me is none of the new agile practices are all that new. They're only new to the space of software development.

I've been mulling over what will be the next thing in software development practices. I'm trying to think beyond agility. I don't know what it is, but I think something new is needed. I think it will need to involve more of an organization than just the business users and development.

I'm still digesting the conference experience as a whole. I enjoy NFJS, but I'm beginning to wonder which conference will be the first one that I take a pass on. I didn't decide to go to this one until I saw the schedule and decided that I could find a valuable session for each time slot. I don't know if that will be the case this fall. It will be hard to determine whether there is enough new content to justify going.

One thing I'd like to see are more sessions with deeper content. I'd like to see more 2 part or even all day sessions that really have a deep explanation of topics. The 90 minute expository sessions are good for some things, but I feel like I'm at a point where I want to come out of the conference really understanding the content. There were too many sessions where the content was abbreviated for time.

I found the conference to be valuable. I thought that all of the sessions that I attended were worth attending.

Thursday, March 12, 2009

Nice Collection of Retrospective OS Desktops

Webdesignerdepot has a very nice collection of Operating System Desktops.

They missed one that I used to use on my old Commodore 64, GEOS.

Regardless of that nit, it's a nice list.

Tuesday, March 10, 2009

Sleeping Dog + Run = Funny

Removing a NOT NULL constraint on a table


We had the following situation: we had a table that has a NOT NULL constraint on one of the columns and we wanted to remove it.

As Java developers we were not well versed in how to add and remove constraints on an Oracle database. We know how to do the regular stuff, but when it comes time to do administration type things we need to do some research or get help from our DBAs.

We asked the DBAs how we can remove the NOT NULL constraint on a table. The DBA said that it would be tricky because she removes constraints by name. The constraint names are globally unique for each database instance.

Each developer is running a separate database instance. The test and production databases are also their own instances. We have a set of scripts that set up our database schema with each build. Since our intention is to promote these scripts all the way to production; ideas like dropping a table and adding it, aren't met with much enthusiasm.

The direction from our DBA was to remove the constraint by finding the constraint name in the USER_CONSTRAINTS table.

I think that would have worked if there weren't 5 not null constraints on the table in question. There were 5 constraints on that table that only differed in the SEARCH_CONDITION field. SEARCH_CONDITION is a long data type. Oracle does not allow using data from a long in where clauses. They do allow IS NULL and IS NOT NULL in where clauses on long data types. I did see that the other constraints on that table all had a null search condition. I thought about how I could solve this dilemma: I could wipe out all the NOT_NULL constraints and then add the ones I wanted. There were only 5 of them on this table.


I then wondered how I'd add the constraints back. That seemed really messy. I also ran across a DBA website that had sql that looked a lot like what I was thinking, but it looked like they were using it as a punchline.

I thought I might need to take a different tact. So I prayed to google--oracle add constraint not null

Hallelujah answer number 5.

That's when I found this wonderful page. Thank you Frozenmist from Bangalore. You made my afternoon.

No Fluff This Weekend

It's hard to believe that it's time for the Spring Twin Cities No Fluff Just Stuff Conference this weekend.

I've been looking at the schedule trying to decide what sessions I plan to attend. I think I'll follow Ted Neward's sessions on Friday. On Saturday I think I will attend Neil Ford and Ken Sipe's sessions. I know better than to even think about what I want to attend on Sunday--I will probably get interested in something else and attend that instead. But as of now I think I'll probably attend one of Nate Schutta's sessions and one of David Hussman's.

This will be an interesting conference. I would be surprised if it sold out in this economy though. There are rumors that many of the area employers are cutting/eliminating their training budgets. I can respect the decision, but I still think that people are paying a tremendous opportunity cost by not attending.

This will be my fourth No Fluff conference. Each conference I've attended has significantly helped me become much better at what I do. I'm willing to invest a full weekend of my life to attend the conference because I believe the value is outstanding.

Monday, March 9, 2009

Looks like there's one thing this perp didn't count on...

And that, my friend, is a sound appreciation for quality UV protective eye wear...

click on this link and click the picture on that page.

Ok, no need to watch that show tonight.

Tuesday, March 3, 2009

Getting Quick Answers by Giving Them

Our business analyst was having a difficult time getting responses from one of our users. I think it's partly because of the way that he's asking the question.

I can't go into detail about what he's asking, but it requires a detailed response. The development team can make a pretty good guess at what our business partners will want, but we can't say for certain.

Asking for the detailed response yielded nothing for weeks. It became clear that the business partner wasn't going to respond on his own.

To accommodate for this I suggested that we reframe the request with an example of how we think that they might want it. We'd essentially be answering our own question or at the very least be leading the witness. After we presented the reworded request the business partner requested a small change and approved the requirement. Like that, it was done and we could work that feature.

The irony of this requirement is it wasn't anything that was all that important to anyone. It was a necessary piece of our project. It just wasn't important enough to our business partner to prompt him to specify what he wanted into a detailed document. It wasn't important enough to the development team to write up a suggestion. It just sat out there and both sides of the team deferred specifying the requirement, and some people became frustrated with the lack of progress on this issue.

It's ironic that we could have escalated this issue into a blamestorm when all it really took was for a developer to sit down with the business analyst and write up a short document outlining a proposal. That's all it took for the business to sign on.

There are some people who feel that the individual should have done what was asked of him. That really isn't my concern, I am not his manager. My concern is getting our project done. If it takes a little extra effort on our side, I take no issue with that.

Monday, March 2, 2009

What a difference a bowling ball makes.

I finally purchased my first bowling ball last week. I highly recommend that any person who enjoys bowling purchase a ball. The difference between a house ball and one that is fitted to your hand is worth the price.

I participate in a men's league as an alternate. I bowl about once a month, and I've consistently bowled between 115 and 140. I could usually count on picking up a few strikes and a few spares. There were some nights when I was very good at picking up spares, and others when it was difficult.  That was with the house balls.

I never considered myself invested enough in bowling to buy a ball. Compared to other sports equipment, they aren't terribly expensive. I was able to pick up a ball and a bag for less than $200 at a local pro shop. On the recommendation of my team mates I had my ball drilled for a fingertip grip or hook grip. Before that I used to throw a straight ball with a very slight hook.

It didn't take me long to adjust to the hook. I read somewhere that bowling a hook is a similar motion to throwing a football underhand and then answering the phone as a follow through. I worked on throwing the football and answering the phone. 

It took a couple of games for me to adjust to the new ball and the new style of bowling. I think I bowled a 136 and a 121, which were pretty normal for me. I was getting more strikes than I normally did though. I had six strikes in two games. The biggest problem I had was open frames though. I couldn't pick them up with the hook. In the third game I had the football telephone movement down pretty well. I threw about 6 strikes in the third game. The big difference in the games though came from picking up my spares. I found I could throw a very accurate straight ball with the new ball. By throwing a straight ball for my pick ups I only left a single open frame when I failed to pick up a split. 

I bowled the best game of my life with a 187. That was nice, but the real prize from that is the sense of control I felt with that ball. It does what I want it to. I never got that feeling with house balls. I'd try to use them consistently, but a good degree of chance would come into play. I think most of it had to do with the way my fingers gripped the ball. The holes didn't fit my fingers well. My fingers usually would get sore and my third game was consistently my worst game. The ball would hook and fade wildly. It really made bowling feel like a gamble.

I don't feel that way with the fitted ball.

This is actually the second time I've bowled with a fitted ball. The first time was when I was younger. I had a hand me down ball we had drilled to my hand. I played in a summer league as a kid. I wasn't great, but I did learn how to consistently release a straight ball that would strike. Back then I felt like chance played little to do with how I was bowling, most of the variance came from fatigue. It's nice to get back to that state of control.

Thursday, February 26, 2009

First Hand Account Of Christopher Hitchens Attack in Beirut

Michael J. Totten wrote a first hand account of the attack on Christopher Hitchens in Beirut last week.

Mike and I went to school together in Iowa City. Someone gave him the nickname of 'McGyver Mike' back in school. Mike had a pretty sweet mullet back then. He certainly is living an action hero like existence.

Tuesday, February 24, 2009

Good Essay on DRM and the Myth of Piracy

Ken Fisher wrote an excellent essay about Digital Rights Management and the real motivation for using it on Ars Technica.

I've believed that the litigation, threats, and the nastiness shown by the trade groups, specifically the RIAA, has less to do with combating losses through piracy and more to do with control and maximizing revenue through their customers.

I'm very curious what the public reaction will be to the next ridiculously inflated lawsuit the trade groups attempt to litigate. I think the reaction will meet far more resistance from the public now that people are finding themselves jobless and out of their homes. People are going to have less sympathy for the industries that employ do all that they can to deliver as little value to their customers as possible while also trying to squeeze as much revenue as possible out of the customers at the same time.

Tuesday, February 17, 2009

More thoughts on the viability of evolutionary computation

I thought a little bit about the viability of using evolutionary computation in the field. That is, using Darwinian principles to design software.

In my writeup of Richard Gabriel's presentation to OTUG, I speculated that using evolutionary design may be a natural extension to the working specification or Test Driven Development principles. Essentially, if a specification can be provided in terms that can be fed into an evolutionary development environment, then the implementation can be left to evolution.

The downside to using evolutionary computation to implement our software is that not many humans may intimately understand how the implementation works. I began to think about how different letting a computer implement our designs is versus what many companies are doing with offshore development.

The model of offshore software development with many companies is to keep the architects and high level designing engineers stateside and send the work in the trenches overseas, i.e., all the finer grained detail work. I believe that many organizations that adopt this type of model are naive in thinking that it will simply work without a significant investment in establishing communication protocols between the high level designers and the people responsible for actually implementing the software.

The designers become an intermediary between the business/business analysts and the implementing engineers. The high level engineers take the requirements from the customers and give them to the engineers. They rely on their ability to communicate those requirements. Their people skills if you will.

The pitfall that friends of mine have encountered when trying to operate as the designer/intermediary reads like a Threes Company episode, i.e., breakdowns in communication cause considerable problems that seem to get discovered so late in the product development cycle that they require either a heroic effort to keep the project on schedule or they cause delays in the product's release.

People complain about the code coming from India being sloppy and difficult to read. It is clear that little attention is paid to considerations, such as future maintenance. Much of this I believe is due to cultural differences between Americans and the people who are hired to write software.

One must question the reasons why an offshore model of software development is implemented. Some organizations do this because sufficient qualified domestic help is unavailable. Company's are trying to save money by shipping work to a cheaper place. That's the theory, but the practice is wrought with more hidden costs and difficulties that often make offshoring more expensive than just doing the work in-house.

If the motivation is having cheaper workers regardless of the added burden and workload of the senior people in house, one should consider the difference between the added workload of the architects and high level designers and specifying the program parameters to a computer to design the software.

If the difference between specifying the acceptance criteria to a program is not sufficiently more expensive than specifying the acceptance criteria to a team of developers on the other side of the globe.

Given sufficient specification and evolutionary cycles, the resulting software will outperform the software that is developed by any human designer.

I think the next step in evolutionary computation is a system whereby human designers specify an interface and behavior and fitness model for software components, and the computer figures out how to meet those specifications as closely to the specification as possible.

Letting a computer handle class implementations, or even class level optimizations, seems like a natural progression from the current state of software development. Consider the level of abstraction that object oriented development and programming in domain specific languages has taken us. We're already trusting much of the implementation to the computers. It only makes sense to push the bar and see what we can do with another level.

Monday, February 16, 2009

Facebook's new Terms Of Service, WTF?

I never got into Facebook. If you want to find me, my name is shared by a couple other people, I'm the Paul Wiedel from Naperville, Illinois, in case you, dearest reader, were wondering.

My wife is a big fan of Facebook though. She's constantly getting back in touch with old 'friends' from high school. She enjoys it.

Some of my current friends who I do keep in touch with have been recently discussing whether to get a Facebook account. Some of them cite privacy concerns as a foreboding reason. Others, or maybe just me, think that Facebook is a time abyss and prefer to keep a web presence elsewhere.

It seems there is a new reason not to go on Facebook, Facebook's new Terms of Service.

My shorter version of the TOS is Facebook claim's ownership of everything that is put on Facebook. Considering how people like to put intimate details of their lives out on Facebook, this should be alarming, or at the least regrettable, by many of Facebook's users.

One of the big selling points to Facebook when it became more popular than MySpace is Facebook's privacy settings. People felt more comfortable sharing details about their lives on Facebook because of the privacy settings.

I can imagine quite a few people with very private facets of their lives turned to Facebook for support. Facebook claims exclusive rights to that information.

Take for example people with gambling problems. Perhaps they felt comfortable joining a support group for people with gambling problems. Now Facebook claims that they have the exclusive rights to do with that information what they want. If I wanted to monetize that information I'd build a list of those people's contact information and sell it to casinos.

They can do more than just put your name on a list for telemarketers. People upload and tag images of themselves. Say one of these problem gamblers has pictures of themselves on this list of problem gamblers. This is also valuable to the gaming industry. Casinos use facial recognition software to identify cheats and undesirable people. I find it hard to believe that they wouldn't use the same technology to identify 'desirable' people and make sure that they receive a little extra attention should they fall off the wagon and walk into a casino.

I personally think that something will come to replace Facebook as the preferred platform for social networking. I don't know what it is, but it seems that Facebook is on its way down.

I don't mean to alarm people, but there are people out there who are going to use the information you share with the web against you. If you have a chunk of time, I recommend watching Steve Rambam's lecture about privacy. Rambam is a private investigator who is very good at finding people and finding information about people. He says that people and technology make his job very easy for him.

My advice with Facebook is the same advice that my dad gave me back in 1991: assume everything you communicate electronically is going to be read by the rest of the world.

EDIT: It seems that Facebook has changed their mind.

Saturday, February 14, 2009

Google Tech Talk: Beyond Test Driven Development: Behavior Driven Development

Here's a good talk about Behavior Driven Development by Dave Astels, given to Google.

BDD is different from Unit Testing and TDD by specifying pieces of behavior for software and testing that that behavior is build within software. Don't take my word for it, check the video out yourself.

It's 47:41 of well spent time.

Tuesday, February 10, 2009

Richard Gabriel's lecture at OTUG: 2/9/2009-- my mind is blown

Gripes first, praise second.
First gripe: it was a bummer that Jared Richardson was in town to speak at the Twin Cities Java User Group on the same night. I would have wanted to see him speak. EDIT: Jared was kind enough to record the presentation, link here.

Second Gripe: I hate slow reveals. They waste everyone's time. Gabriel's lecture was a slow reveal. The first half of the lecture built context into the concept of Ultra Largescale Systems(ULS), and descriptions of Metadesigns for building them.

I'll cut to the chase of the first two Metadesigns: 1 is waterfall or what I heard Neil Ford describe as a Big Design Up Front, BDUF. Metadesign 2: is stepwise design, or what we're calling iterative development, or Agile development.

I think that it would have been sufficient to state that Metadesigns 1 and 2 are insufficient for developing ULS and proceed straight to the meat of the lecture. Effectively, I think that over half of the lecture was spent recanting things that we already know.

That is the conclusion of my negative criticism.

Conceptually an ULS is a system that is beyond a human's comprehension. Some examples that were given are the entirety of New York City, a healthcare system for every living being on the planet, the entire ecosystem of the planet's oceans. An Ultra Largescale System is by definition beyond the design and understanding abilities of humans.

How do humans build such systems? Metadesign 3: evolutionary design, or using evolution to design the solution.

In my opinion, this is where the lecture started getting interesting.

Never tell people how to do things. Tell them what to do, and they will surprise you with their ingenuity.

I must confess that Genetic Algorithms are a curiosity of mine. I like the idea of tellin a computer what a want, giving it some information and letting the computer come up with a solution.

The example Gabriel gave is Adrian Thompson's Exploring Beyond the Scope of Human Design: Automatic generation of FPGA configurations through artificial evolution.

Thompson's experiment was to use the principles of evolution to dictate computer logic. In the case of Thompson's experiment, the desired trait of his circuit is to produce a circuit that can differentiate the following tones: 1 khz, 10 khz, and every other tone. The building blocks of the circuit are 100 FPGAs, or a 10 x 10 matrix of relatively simple programmable logical components.

A fitness algorithm was set in place that mimics the principles of evolution. Circuit designs that are the most fit carry their traits on to the next generation. Ones that are not deemed to be fit, do not carry their genes on. noble in reason! how infinite in faculty! in form and moving how express and admirable!in action how like an angel, in apprehension how like a god!
--Hamlet, Act 2, Scene 2

The evolution was allowed to run for 5000 generations. The first thousand or so produced circuits that performed poorly or outright failed. The circuits improved over time though. The circuits evolved to outperform human designed circuits.

The circuit was analyzed after the experiment and some very curious details emerged. Only 21 of the FPGA gates were used. 79 of the 100 gates could be removed completely from the circuit without affecting the circuit's performance.

5(in gray) Gates appeared to serve no logical function. However, if they are removed from the array, the circuit fails to work. The same circuit's performance degraded when it was duplicated on another array. On software it also was degraded.

The circuit adopted feedback loops and other characteristics of an analog circuit.

What's truly amazing to me is the design. It is something that is outside of the realm of human comprehension. Nobody would think to design a circuit this way because it doesn't make sense to include seemingly disconnected and worthless elements.

I shouldn't speak for others, but I would never think to include the extra elements of the circuit because it would strike me as wasteful and cluttered. The result looks like a maintenance nightmare.

The circuit is truly amazing. Experts don't have a clear understanding of why all the elements are necessary. Only by removing them are they able to see that they are.

My own speculation is that there are small variations in the FPGA gates and only through evolutionary exhaustion were they found.

This is fascinating to me for many reasons and the implications of using the principles of evolution through natural selection to design solutions to find optimized solutions to problems.

Consider the current results of evolution through natural selection. Life, is truly amazing. Consider the diversity of animals, plants, and microbial life. Life is able to adapt exceptionally to myriad environmental conditions. Life at an evolutionary level is unforgiving, you fail, you die, and there aren't any little ones like you after you're gone.

The same rules work surprisingly well with software. I think that it can be complementary to Test Driven Development. I wonder if evolutionary design could actually replace the human part of development.

Consider the differences between TDD and evolutionary software development: both can state their acceptance criteria upfront and both provide a solution to the problem until the acceptance criteria can be met.

The advantage that evolutionary design has over human designed solutions is the absence of any human prejudice. Evolution is really a results oriented environment--maintainability, comprehension, beauty, personality, and all the other human influences are not part of the equation--well unless they are defined as part of the acceptance criteria. Given enough generations, an evolutionary design will produce the most fit solution as defined by the acceptance criteria.

By letting evolution manage the implementation of our goals, implementations that exceed the abilities of human comprehension can be produced. In essence, the programmer is god like in her ability to create programs that exceed her own ability to create a program.

Gabriel said that the results of evolutionary design is troubling to creationists and evolutionists. The trouble to creationists should be obvious. It shouldn't be a concern to the rest of us though. There are plenty of examples where observable reality should be troubling to those who buy in to a religious dogma. For example, if the universe is only 6,000 years old and we are able to observe stars that are 5 million light years away--and much further for that matter--and we know the speed of light to be constant; how can one honestly continue to believe that the universe is 6,000 years old. Something has to give.

For those who believe in evolution, Gabriel asserts, the results of evolutionary design should be troubling because we, humans, may not be able to explain the results. Are we to believe that an intelligent designer stepped in and created the results of the evolutionary design? The results actually affirm my belief in the viability of evolution.

But I digress, evolutionary design certainly does raise some issues that some may find in conflict with their faith. Gabriel did mention a computer scientist who refused to work with evolutionary design because, presumably, of her beliefs.

Other questions arise though. Who should take ownership and responsibility of the results of evolutionary design? Certainly the first person to claim ownership of something that can be monetized will want to claim ownership, but what about responsibility. Will that person accept the liability of the software that they claim to own. What if an evolutionary designed program turns out to cause people harm? Who should be held liable? The concept of ownership can be challenged by this method of design.

Second Life for Software

Gabriel concluded with a proposition that for evolutionary designed software to take the next step and be integrated into an ULS an environment where software can interact must be created. He suggested a Second Life be created for software. His proposition is a virtual world where humans and software can interact. In this world software would take on physical characteristics of volume, mass, odor, color, shape, and sound.

In this world software would be free to evolve. The software that is useful or beautiful to humans would thrive. Gabriel kind of lost me at this point. I'm going to have to think about it for a while.

Saturday, February 7, 2009

Removing the suck out of Experts Exchange

There's nothing I don't like more than thinking I've found an answer to a technical problem only to find that the solution is on the Experts Exchange.

For those who have not had the misfortune of running across the Experts Exchange, it is a web site that purports to have 'expert' solutions to technical questions. It very well may have the solutions, but they want more money for the solution that I have yet to be willing to part with.

They actually do offer the solution for free, but it's buried under a ton of spam quality ads. It has been a long time that I've needed technical help so desperately that I would wade through an Experts Exchange page, but alas it is no longer necessary. Coffee Powered offers instructions for bypassing the spam and getting to the good stuff with the help of the Remove It Permanently plugin for Firefox.

Foxes Jumping On A Trampoline

Much better than the bear on a trampoline.

Thursday, February 5, 2009

Here are some command one liners

Command-line Fu is a pretty cool site.

Tuesday, February 3, 2009

Excellent Set of Notes for Java Programming

Fred Swartz put together a wonderful set of notes on Java Programming.

I wish I had a nice comprehensive and clear list of the little details about Java programming when I started.

Sunday, February 1, 2009

As we speak, many words are dying, you can help

Save The Words has a fun challenge and a fun UI. The site gives users the opportunity to 'adopt' a word and find a way to work it into our regular conversations.

For example, during the Minnesota Wild game on Friday, instead of noting that a fight broke out I could have commented that a display of the players' pugnastics was occurring quite early in game.

What? You aren't familiar with pugnastics? Surely you gest. Certainly you know that pugnastics is a display of one's pugilistic ability and it has nothing to do with gymnastics for any breed of dog.

Saturday, January 31, 2009

Nice Write Up On Cash 4 Gold has a nice write up of an experience trying to sell some 'scrap' gold to Cash 4 Gold.

Cash 4 Gold is a company that advertises during the late night demographic and during some of the shows I watch--not sure why they think the science show demographic would be interested in their business. The sales pitch goes like this: send us your gold and we'll send you money. They show people with cash and they look happy.

Cash 4 Gold does claim that they have their own furnaces and can therefore offer excellent prices. They really ought to explain how they can deliver and insure sending gold through the mail.

In the linked article, the authors had some gold appraised at a pawn shop for approximately $200. They sent their gold in to Cash 4 Gold and received an offer of $60. I wonder if the $140 is to pay for the postage.

The authors called Cash 4 Gold and refused the offer. Cash 4 Gold offered to tamper with the paperwork and make it look like the gold is really worth $178. Ooh, I feel naughty, they messed with the numbers. Don't tell the boss or you might get fired. That better deal is still a good $20 less than the pawn shop would give them.

Now here comes the fun part of the transaction, getting your gold back. The authors didn't state whether they ultimately accepted the offer. I'd like to know how Cash 4 Gold plans to return gold if an agreement can't be reached. If they are like other businesses that drag their feet or worse when doing things that don't make them money, people could be looking at a long wait, lots of frustration, and lots of uncertainty.

Caveat Emptor. Please, if you think about doing business with someone over the television, check them out first.

EDIT: here's more information about Cash 4 Gold from a former employee. Surprise, he says they're shady.

I can't think of a good reason why a person would want to business with an outfit like Cash 4 Gold or the Goldkit people.

Friday, January 30, 2009

From Lifehacker: Instructions for setting up Boxee on an Apple TV

Lifehacker has a nice set of instructions for setting up the free media center software Boxee on an Apple TV.

The cost of an Apple TV is about $200 and the software is free.

There seem to be quite a bit of sources for getting content that don't run the risk of civil litigation. It might be worth trying out.

They claim that it makes a good replacement for cable and satellite television service. I'm intrigued whether I could ever break my addiction to live television. If watching my college team playing football were not such an irrationally high priority for me, I'd probably be happy with dumping the television service.

I wonder if Boxee will make a suitable replacement for the HBO subscription I have now. There really isn't anything on HBO that I feel I need to watch anymore. It seems that every show I really liked has run its course or been canceled.

Thursday, January 29, 2009

Not Sure What to Serve This Superbowl? How About A Snack Stadium

For less than $90 you can get over 24,000 calories of snack, over 1,200 grams of fat, and the most awesome arrangement of snacks ever made.

Behold the snack stadium.

For what it's worth, I think the summer sausage blimp is not optional.

JQuery 1.3 Cheat Sheet

Cheat Sheets are awesome.
Here's one for JQuery 1.3.

Wednesday, January 28, 2009

Social and Market Norms in the workplace, OR How to play with fire with payroll costs

I've been reading Predictably Irrational: The Hidden Forces That Shape Our Decisions by Dan Ariely. It's an outstanding book that looks at why people act in irrational ways.

Predictably irrational gives fascinating insight into some of the forces that cause people to act against what an objective observer might judge to be their best interests.

Each of the chapters is excellent, but one that really struck a chord with me is the one regarding social and market norms. In this chapter Ariely cites an example from Freakonomics [Revised and Expanded]: A Rogue Economist Explores the Hidden Side of Everything by Steven D. Levitt, the one where an Israeli daycare provider found that issuing fines for parents picking up their children late had an effect that is contrary to the providers' intent.

Nutshell synopsis, daycare provider wants parents to pick up their kids on time. Daycare provider issues a fine to late parents. More parents are late after the fine is imposed.

What happened? Levitt and Ariely believe that the parents felt obliged to pick up their children in a timely manner because social norms influenced their decision. When the fee was imposed, the parents felt that they no longer had a social obligation to pick up their children on time. Instead, they could evaluate whether their time is worth the fee. What is more surprising is after the fine is revoked, there was no noticeable decline in late parents. The genie was let out of the bottle. Once the relationship moved to a market relationship, the social norms went out the door.

Social norms are truly a powerful force. Social norms are the social rules that we observe because we feel it is the right thing to do. Often, social norms coincide with other rules. For example, there are legal and social rules that strongly discourage murder.

The interesting thing about social norms and market norms is the social norms are more effective than the market norms for motivating people, but once the market norms are introduced into the equation, the social norms lose their value.

Take occupations like teachers for example. Relative to other professions, teachers aren't particularly well compensated. Any teacher who got into teaching because of the money, probably shouldn't be teaching. Not because they aren't doing it for the benefit of educating children, but because getting into education because of the money brings to question serious deficiencies in one's ability to make sound decisions. Who knows what kind of crazy things such a person would try to teach children.

I digress. It's fair to say that money is not what drives our teachers to do what they do. If teaching were about financial compensation and only about financial compensation, there would be a shortage of good teachers of crisis proportions. Either the median salary of teachers would need to rise or the quality of education would continue to dwindle to make up for the difference in the market.

It's also fair to say that there must be significant social benefits that our teachers receive. There just isn't a logical explanation for why so many well qualified, capable, and intelligent individuals choose a profession that does not compensate them competitively. The same can be said for other professions, such as police officers and fire fighters.

What Ariely postulates is that introducing more market norms to the equation will introduce a negative effect. By adding incentives for getting students to reach higher test scores or meet other performance metrics, the focus of educating will no longer be on educating children, but on meeting those performance metrics.

What would the net effect of nullifying social compensation and increasing market compensation? I predict that more good teachers will leave the profession and the quality of our children's education will continue to decline. Plainly put, if you make the job about money and meeting performance metrics the job will only be about money and meeting performance metrics. Considering what is at stake in our education system, any decline is a tragedy.

How does this affect the rest of us? We all receive social compensation for our work. We often do not realize it, but it is real and it is powerful. Social compensation is fragile.

You Can Do It, We Don't Care

Take a look at Home Depot. People who worked at the Pre-Nardelli Home Depot say that the environment of that business was about helping people and following the motto "Do the right thing." Many retired tradespeople chose to work at Home Depot because they enjoyed the job and they enjoyed helping people. By most accounts I've heard from people who worked at Home Depots, they all claim that they didn't want to leave until Nardelli came in.

There isn't enough room to discuss all the things Nardelli did to change Home Depot, but one thing that did change was the atmosphere. Cutting the number of people on staff and changing their focus from customer service to other tasks does more than reduce costs, it completely changed the personality of the store. In short time Home Depot changed from a store where a do it yourselfer could go in to a store and not only get good service, but also good advice on how to do a home improvement project to a gigantic store that is staff anemic and lousy with automatic checkout lanes.

The Home Depot changed from a warm friendly store to, well just go to one and you'll see. Friends of mine who used to work there said their return policies were so generous that enterprising fraudsters would take items off the shelves and go directly to the customer service counter to return them. They wouldn't even bother shoplifting and the store would give them cash. When was the last time a business was that willing to provide an outstanding customer experience?

When Home Depot had these policies and staffed helpful people who had time to be helpful I used to almost exclusively shop there for my home improvement needs. It was great, I couldn't look at a shelf full of products without having someone ask if I had any questions. When the staffing was cut at Home Depot it really changed how I viewed the shopping experience. We went from having copious help to insufficient.

I remember one experience where my wife and I waited a good twenty minutes in a nearly empty store to order some blinds for our windows. We waited because the one person working there was juggling helping the customer who was there before us, and answering drive by questions by other customers. The person did the best she could, but still our experience wasn't very good. Without the service value I began comparing my experiences shopping at Home Depot with my experiences shopping at Menards.

Save Big Money

Menards is cheaper. Menards doesn't have exceptionally knowledgeable people working there, but they know their products. There are also quite a few people working there. I've never had trouble finding someone to help me. The inventory at Menards isn't as high end as what I see at Home Depot. There are some cheap things at Menards, but there are also some good things there too. The inventory isn't always as organized as it could be, but there's a lot of it. The Menards stores in my area have done a good job improving the way that their items are organized. There are still the occasional areas where you need to hunt through the displays to find what you want, but it's been a while since I've seen a pile of mixed plumbing fittings in an area.

After comparing the two stores I prefer Menards. If I can get what I need there I'm happy to do it. The Home Depots just don't give me anything extra that I want.

What happened there? At one point I was willing to ignore the allure of lower prices, and a shorter drive to shop at the Home Depot instead of Menards. The value of good service outweighed the price and convenience. Once my perception of Home Depot changed through my own experiences and some of the Nardelli era snafus I saw no advantage of shopping at Home Depot over Menards. Once my perception that my business was unimportant to Home Depot, they couldn't compete.

I have friends who worked at Home Depot during the pre Nardelli times. They look back on it fondly. My friend Keith, a retired electrician, said that a single sentence directed them back then: "Do the right thing." He laments that it was all about helping people, back then the customers were happy, the employees were happy, and the stores were doing well.

Now, when I see a Home Depot commercial that shows customers getting hands on help from a Home Depot employee it has an effect that is what I think is the exact opposite of what the commercial makers' intent is. I imagine that the images of a friendly and ethnically diverse group of helpful, clean, and competent Home Depot employees thoroughly explaining and educating a couple of delighted customers would create a positive image in my mind of what shopping at the Home Depot is. It's funny though. I think about how much the commercial misrepresents my experiences at Home Depot. I think about how the commercials are not a factual representation of my experiences or their reputation. In fact, their reputation is the opposite image from the commercials.

The net effect on me is I believe that not only is the assertion that customer service at Home Depot is the opposite of what I see on the commercials, but everything else asserted with the commercial is also equally inaccurate. Why the hard feelings? I think it's a natural reaction of my emotions. The Home Depot used to sell itself, and deliver, on the fact that doing business with them is more than just doing business. They played with social norms. It feels personal. The company chose to no longer continue selling the social norms and it feels like we lost something. It's like an old friend is trying to cheat us. It hurts.

Social Norms in the Workplace

How does this apply to the workplace? Well, a lot of the same forces are in play in the workplace. Many of us do not view our employment as strictly a professional endeavor that is devoid of any personal interaction. We form relationships with our colleagues, our managers, and our subordinates. We form friendships, romances, and acquaintanceships through the workplace. It happens, we're social animals. Different companies have different cultures, but the vast majority of them try to define their culture as being more than just a 9 to 5 job.

There are many advantages to selling the social benefits to a job. Defining a corporate culture is a way to displace workers demands for higher pay. Look at Google and Apple. Both of them have a reputation for bringing in some of the most talented people in their fields. Nobody can compete with Apple's industrial designers. They make beautiful functional products. Google's web applications are world class. Would it surprise you to hear that the base salaries isn't that great at either of these companies? The reputation is that most people take a pay cut to go work for Apple or Google. There are the exceptional few who got in early and made millions from the companies, but there are also the many who are simply doing well. Why do people choose to work for Apple and Google, the interesting work is one big reason, but I posit that the allure of the cultures at Apple and Google is just as attractive if not more.

If a company can get excellent people to work for 10% less than their market value by spending 1% of their market value on expenses that define a corporate culture: e.g., free meals, corporate outings, onsite speakers and events. If you can get away with hiring an exceptional engineer who could make upwards of $200,000 for $180,000 plus spending $2,000 a year on free onsite meals doesn't it make financial sense? That's an $18,000 savings.

Obviously it makes sense, many successful companies do this. The people who made the decisions to provide these benefits may not be aware of the sociological explanation for why defining a culture through perks and benefits makes financial sense, but they do see value in it. The real value is the social relationships and the connections the people feel through the culture. That's what displaces the difference between the actual and market values for the employees. The stronger the culture, the wider the gap can be between the market and what people will be willing to enthusiastically accept.

Salary is the most expensive benefit. Salary can make up for a lack of culture or a negative culture, but it's very expensive.

There is a catch to displacing salary with culture. If the social compensation is reduced, subverted, or eliminated it can have a catastrophic effect. The effects are not only damaging to morale, but they can actually raise payroll above market rates.

Consider the following two points: Once people think about their work in market terms, they tend to ignore social benefits. People tend to be satisfied with what they have if they are not thinking about what their external options are. Both of these points are covered in Ariely's book, and are backed with sociological experiments.

Think about them this way: we're happy to help people for free. We're happy to help until we find out the the other people helping are getting paid. If we're getting paid to help, we're happy with it until we find out that everyone else is making more than we are.

One of the seemingly obvious opportunities to cut expenses is to discontinue the seemingly unnecessary 'perks'. The 'perks' have a value and an ROI. The value can be measured by subtracting the salary of each employee from the perceived market salary of each employee. If the employees aren't constantly issuing ultimatums for more money, the value of the perks/culture can be defined as the difference.

That's All Well and Good, but Money Doesn't Grow on Trees

It is not surprising that perks tend to get cut during down economies. The obvious reason is that perks are perceived to be unessential expenses. When funds are tight, people would rather have jobs than free coffee. This only works when groups of companies are cutting costs. People are willing to make sacrifices to preserve their social compensation.

It's difficult to differentiate the essential from the ceremony in what defines social compensation. Cutting perks, may only remove the ceremony, but preserve the essence. Conversely, it may kill the social compensation.

The perks aren't the social compensation, they just facilitate them. That's the thing about the perks, the real value is how they bring people together and form relationships.

To ignore the value of social relations, culture, and how they relate to perks and social compensation is to misunderstand people and to neglect an asset.

If highly skilled workers find themselves not only without the social benefits that they to which they became accustomed and valued, and making less than their market value; consider the situation. The worker feels that they not only lost something they enjoy, but also they feel like they are not being fairly compensated. Should that employee procure an employment offer, it's safe to assume that they will find something at or near their market value. To keep that employee the employer would need to match or, more likely beat the market offer. This isn't the end though, there are two side effects that further move to increase the cost of employment: 1) the social norms are gone for the first employee, he will likely continue to court other potential employers. The employer will find the act of matching offers a more regular occurrence. 2) Other employees will find that they can be in the situation of the first employee. Before long, most of the employees will be thinking about their job in market norms and looking to upgrade.

Providing culture as compensation is like playing with fire. An employer can reap tremendous value by providing perks and benefits that facilitate or spawn social compensation. An employer can also lose that value and more by subverting foundations of the social compensation.

My advice to those employers who find themselves in a position where budget cuts need to be made is this: the goodwill that is generated through the social compensation can be preserved if the market norms are not introduced into the equation. The perks can be removed so long as the culture is maintained. If a 'We're all in this together.' attitude is sincerely projected from an employer, the employees will sacrifice and stay loyal through tough times. A wise leader, will demonstrate that those at the top are sacrificing as much as those below them, if not more. That will preserve or grow the culture and the social compensation.

It's only when the employees feel that they are sacrificing disproportionately to the managers that the social compensation is eroded.