Stark’s Law

I have a principle that I would love to see become part of the lexicon of Software Development, although I think it applies to all human endeavors (like Murphy’s law).

Stark’s law states:

Any idea, principle, or philosophy can, and probably will be applied in a dogmatic, harmful way.

Glen Stark

I’m still working on the wording. Suggestions welcome.

The fundamental principle at work here is simple: In the end most things boil down to trade-offs. Following specific principles is always a good idea, right up to the point where the trade-offs no longer work. People have a tendency to take useful, positive things and be dogmatic about — try to turn a nuanced discussion into a binary, oversimplified one.

If I get sufficiently motivated, I should make multiple posts of Stark’s law in action.

Consequences

An important consequence of Stark’s law is one of responsibility. If you want to spread a principle, philosophy or approach to something, you should provide the necessary disclaimers. I.e. you should be able to give an example of how Stark’s law might kick in.

If you are unable to identify how a principle could be applied to harmful extreme, I would suggest you probably don’t understand the nuances and consequences or the principle sufficiently well.

Applying Stark’s Law Recursively

Obviously Stark’s law applies to itself. An obvious way one could take the principle to a ridiculous extreme is to conclude that all philosophies, ideas or principles are garbage.

This outcome is fairly easily mitigate. Consider the nuances of any philosophy & try to identify under what circumstances said philosophy might be useful. Don’t be dismissive.

If anyone can think of other ways to abuse or dogmatize Stark’s law, please let me know!

Anti Bernie Sanders Bias in the NYT

One doesn’t have to look far to find anti-Bernie bias in the media, generally in the form of ignoring the fact that he exists. Here’s one I noticed yesterday in the NYT, in an article talking about what a clown Trump is.  At one point they mention “Polling shows that he would enter the general election trailing badly against Hillary Clinton”

That plays well into the establishment message that we have to settle for Clinton because Bernie Sanders would be unelectable, and we need Clinton to make sure that (pick a Republican) doesn’t win.   Never mind that polls show that people prefer Bernie Sanders over Trump by a much wider margin than they prefer Clinton.  Clinton currently leads by 11.2 points, while Sanders leads Trumb by 17.4 point.  In other words the preference of Sanders over Trump exceeds peoples preference of Clinton over Trump by more than 60%.

The NYT doesn’t seem to find that newsworthy.

Powerline, git, Fedora

I recently discovered powerline, thanks to a Fedora news article. Getting powerline running on your Bash terminal is completely trivial and discussed in the article. You just:

Install powerline.

  sudo dnf install powerline

Configure your shell to use the powerline daemon.

bash

Add this to your .bashrc

  if [ -f `which powerline-daemon` ]; then
     powerline-daemon -q
     POWERLINE_BASH_CONTINUATION=1
     POWERLINE_BASH_SELECT=1
     . /usr/share/powerline/bash/powerline.sh
  fi

fish

add this to ~/.config/fish/config.fish:

set fish_function_path $fish_function_path "/usr/share/powerline/fish"
powerline-setup

Configure powerline to display git information

If all you want to do is get the git branch displayed on your powerline, that’s pretty easy, see for example this excellent article. But after I discovered powerline-gitstatus, I just had to have it.

Install the powerline-gitstatus segment:

pip install powerline-gitstatus

Setup a configuration

I’ve put my powerline configuration up on github, so if you like, you can start with my configuration, and play with it from there simply by clone my powerline-configuration repository into your local .config directory. I.e.:

cd ~/.config
git clone https://github.com/spacemoose/powerline_cofiguration.git powerline

Otherwise you can copy over the default configuration and follow the directions here.

Try out your new configuration

Since this article is focused on customizing our shell prompt, we are dealing with the powerline daemon, which means we must run

powerline-daemon --replace

when we want to see what effect our changes might have – BUT before you do that, I highly recommend running powerline-lint in case you forgot a comma somewhere.

Ferguson Missouri

I’ve been unable to avoid reading about what’s been happening in Ferguson, Missouri.  It’s hard to imagine how it feels to have your son shot down callously by law-enforcement, to have nothing happen to the shooter, and to have the follow-up disregard and disrepesct the victims and the concerned citizens affected by the murder.

What’s more dismaying is the fact that whites across America are not in an uproar about how their fellow citizens are being treated, simply because of their skin color.  The sentiment seems to be “c’mon we have a black president, this couldn’t have been racism”.  The degree to which people are selectively processing events in order to maintain this kind of attitude is impressive.

For me it’s absolutely clear that Police are predominantly racist.  I suspect black policement are equally or more racist on average than their white colleagues, although I have to admit that’s only a supposition.  I did have one experience which fixed this opinion in my head though.

Years ago, while studying at Georgia Tech in Atlanta, I caused a traffic accident with my bicycle.  I pulled into North Avenue to see if I could safely make a left-hand turn (traffic blocking my view to the right).  A truck was coming fast so I pulled back.  The driver panicked (after whipping past me),  and slammed on the brakes, causing the aged sedan behind — driven by mid thirties black man with partner and two children as passengers — to collide into the truck.

Now, It was entirely clear that either I, or the white truck driver was to blame, but of course the police (one black, one white) ran the drivers licenses of all involved.  The black family man must have an outstanding warrant, because the police cuffed him and took him away in the patrol car.  Okay, so far so good, sucks for the guy but presumably he did something to get himself in that situation.

The man was at all times polite and helpful.  Despite this, the black police officer felt the need to humiliate the guy in front of his children by hoisting him up by the trousers (classic bully wedgie) and shoving him into the police car — laughing while doing it.

I suspect the white cop wouldn’t have behaved that way.  I’m think, having had my own encounters with the police (and being white) that a white guy in that situation would have been treated a little better.  I am sure that if the guy had been white and wealthy, he would certainly have been treated differently.

So maybe it’s not racism.  Maybe it’s classism combined with a callous, bullying, us-vs-them mentality.  Maybe the racism is merely a coincidence — the high correlation between poverty and race caused by our racist history.  I can’t really say.   Either way, the behavior is shameful, and we need to do something about how American police behave.

London today.

In London today for a bit of a holiday.  It’s a stopover on the way to Norwitch, where we’re going to a friend’s wedding.

We took the train through the chunnel.  There are a number of trade-offs involved in traveling by rail over travelling  by air.  The total travel time increases, but that increase is less significant than one might think at first glance.  First, we save the trip to the airport, which saves about a half hour.   Second, the airport wants us to check in 90 min in advance, which is unecessary at the train station.  For a trip to London, the train station is in the middle of the city.  Once the train arrives, we have arrived, whereas arrival at the airport means another hour till we get to our destination — given the need to get luggage, disembark, etc.  Finall, If I take the average of airplane delays (in my life maybe a half hour) and subtract the average of train delays (less than a minute on the average in my life), I arrive at a compensation of 3 hours, door to door.  So for short trips — which from Switzerland means Italy, Germany, France, etc. it’s often more efficient use of time.  Of course, going to London takes 8 hours by train, given that one has to transfer from Gar de Lyon to Gar de Nord, and the ridiculous checkin procedures for the chunnel train.  The flight is approximately 2h, meaning  door-2-door time of 5 hours.  So I would save 3 hours travelling by plane over travelling by plane.   Overall it’s a loss, but not a terrible one.

There are other concerns.  Of those 8 hours, I spend a couple of hours in Paris’s largest rail stations.  I find this enjoyable.  It’s a brief visit to Paris, in which one sees only a little of the city, but rather a lot of the cities’ people.  While it doesn’t really count as a visit to Paris, it counts a great deal more than a stop-over flight would.  It’s rather the same when travelling through a country by train.  When one travels over an area by plane, one sees no more of that area than one would on Google maps.   When you sit on a train as it travels through a land, it makes stops.  People embark and disembark.  Often you get to observer a small slice of their life as you rocket through through their lands at speed which were unheard of even a hundred years ago.    So it’s my belief that one sees and experiences more by rail than by air.

Financially, there’s a real penalty for travelling by train.   This is not because air-flight is more efficient than train travel.  Quite the opposite in fact — the efficiency of train travel, and the implications for that on climate change and resource consumption,  is our primary motivations for choosing it over flight.  This is simply an artefact the enormous subsidies that airlines enjoy.   Should rail travel enjoy such a large level of support from our taxes, the economics of rail travel vs air travel would likely  change.  This can only change if governments begin to show more wisdome with regards to issues like climate change and resource consumption, which in turn is only likely to improve when citizens grow more wise.

Which brings me to the real reason we travel by rail, even when there is a financial and temporal price to be payed.  When we travel by air we rob from future generations and the poor of the planet, as it is future generations and the planet’s poor who suffer most from climate change our modern excesses.  Once, when explaining my reasons to a  colleague who should already have understood them, he replied with some banality about the need to be happy balanced against some uncertain future.  For the vast bulk of human history people have been unable to travel by air, let alone travel cheaply with wanton abandon.  Are we only now able to be happy?  In fact evidence suggests that modern excesses only make us less happy.   While I can’t prove it, I’m comfortable asserting that selfishness and short-sightedness can only diminish our happyness.  Implying that flying is a vital component of happyness is as absurd as asserting that the the suffering of climate change is uncertain, or even in the future.

Cleaning out “using namespace std;” declarations from header files.

I recently had to work with a very large codebase, in which each and every file included a header file with the statement “using namespace
std;” in it.
This led to the situation that hundreds of header files, using std strings, pairs, etc, were using those items without any std:: dereferencing.

Cleaning this situation up by hand would have taken weeks and been error prone, so I wrote a little script to do it for me, and called it standardize.pl

The variable possible_offenders is a list of std c++ names which are frequently in place in the code in question.

The script recursively searches a directory for for .h and .cpp files. For cpp files, it checks if any of the possible_offenders occur in the file.  If so, it adds a “using namespace  standard” directive if none exists.  Thus cpp files are changed minimally.

For header files, all occurences of “using namespace std” are removed, and all occurences of possible_offenders are prefaced by an explicit std:: namespace specification.  Care is taken not to change occurences in comments or in quotations.

If you are faced with a similar situation, you can find the script on github: https://github.com/spacemoose/standardize

Swiss nonconfrontationalism.

I have been living in Switzerland since September of 1996. At time of writing I have been living in Switzerland for 17 years. I would estimate I have lived in the United States for 14 years, and Canada for 12 years. So alltogether I have lived in the Canmerican culture for 26 years, some 9 years more than I have lived in Switzerland. This gives me an unusual perspective on the three cultures.

I have frequenlty heard the complaint that Swiss people are averse to confrontation, and as a result never say anything directly. This can manifest itself in wierd ways, like leaving notes in the laundry room saying “So bitte nicht!” (not like this!). I hear this criticism from Swiss people as much as I have heard it from fellow foreigners. People often make a conceptual connection to Switzerland’s political neutrality, which I never came to myself. I’m a big fan of Switzerland’s political neutrality. That national characteristic is a large part of why I feel at home here. I actually get a bit resentful towards foreigners who live here for the money, but despise Switzerland’s neutrality.

Until recently though I have still been critical of Switzerland’s aversion to confrontation at a personal level. For an American it makes navigating relationships with a Swiss partner fraughtful. Sometimes it seems the characteristic is taken to some cartoonish extreme — a case where this characteristic is possessed to such a cartoonish extreme as be unbelievale (at least to someone from without the culture). This can lead to some pretty bizarre relationship stories. As a result of collecting some negative experiences I could quite relate to people expressing resentment of this trait.

Now I find myself in a wonderful, happy relationships with a Swiss woman. While she is an impressive woman in her own right as an individual, some of the things that I love most about are quite “typically Swiss”. In fact she takes a real pride in being Swiss, and cherishes Swiss culture in a deep and meaningful way. She is wise in her love of her culture. She doesn’t love her country and culture indescriminately. She confronts many of the very real problems that Swiss culture does possess in a very head on and responsible way. Besides making her a remarkable human being, this characteristic makes her a remarkable teacher. The integration of Switzerland’s overwhelmingly large immigrant population is a real and pressing issue, and her ability to love and critisize her country simultaneously and intelligently, is a real gift to her students.

So my love and respect for my wife makes me look at certain aspects of Swiss culture in a more loving and respectful way. While Bettina’s tendency to avoid confrontation is afrequent topic of discussion in our family, my tendency to dive directly into conftration is of equal concern. I believe though that I have more to learn (and have learned more) from the Swiss characteristic. By now I have worked with a number of Swiss managers, and I believe that the most effective of these also pursued this path aversion-to-conflict.

The problem is that saying “aversion to conflict” isn’t really precise enough. At a cultural level the desire is avoid emotions flaring up durign a conflict, which would disturb the problem solving process. As I write that I find that I can’t help but think of Swiss political neutrality. So now that I am able to love them both, I see these traits as beeing two aspects of a single trait. When I resented one and loved the other I was unable to see the connection. I find that fascinating.

Trayvon Martin

My response to the Trayvon Martin verdict has been complex. I didn’t follow the case closely, having read primarily superficial discussions of the case until that point. When I heard about the verdict I was disappointed but not surprised. When Rodney Kings attackers were acquitted I was shocked and surprised. The Zimmeran verdict shows that white America hasn’t gotten much more civilized. I think one could argue that black America has, since the response from black Americans has been reasoned and reasonable. One can hope it will effective as well.

I found some of the response worth commenting on. William Saletan wrote an article on Slate titled “Your Are Not Trayvon Martin”, which I found particularly disturbing.  His thesis is that:

The problem at the core of this case wasn’t race or guns. The problem was assumption, misperception, and overreaction. And that cycle hasn’t ended with the verdict. It has escalated.

He goes on to explain that Zimmerman wasn’t a racist, that the whole thing was a stupid sequence of event based on fear, overreaction and misperception.  All of the latter points would seem to be factually true.  Whether or not Zimmerman is a racist is a bit more of a difficult question.  Standards as to what constitute being a racist change over time.  Behavior an opinions which would have been considered egalitarian and progressive in 1892 would be considered backward and rampantly racist today.  The evidence does suggest that Zimmerman is no self-identifying racist longing for the glory days of slavery or the clan… but he would seem to be a racist to the extent that he finds a black teenager walking down the sidewalk in a hoody scary and suspicious.

Zimmerman’s attorney mad the assertion (28:02 of the video below) claims that Zimmerman would never have been charged with a crime, had Zimmerman been black. That’s an interesting assertion. Had Zimmerman been black and killed Trayvon Martin, would he have been charged? I don’t know. But I think we should ask ourselves some other questions:

  1. If Trayvon had been white, and Zimmerman black, what do you think would have happened.  The statistics would suggest the death penalty would be likely.
  2. If Trayvon had been white, would Zimmerman have acted as he did?
  3. Put yourself in Travon’s situation:  You’re walking to a friend’s home wearing a hoody and carrying a bag of skittles and soda pop.  Some guy starts giving you a hard time, so you run away.   He runs after you.  You defend yourself and he shoots you dead.  Wouldn’t you want the justice system to take some action against the guy?


I think it’s exceeding naive to think that race, prejudice and racial profiling had nothing to do with this sequence of events.  I’m annoyed at journalists’ attempts (like those of mr. Saletan) to dismiss people’s efforts to address the problems that black people still face in America.  People, including my white self, are angry and frustrated at this outcome and what it says about our society.