Boredom

Dan McKinley wrote a great blog post about choosing boring technology. It’s worth reading, but the tl;dr is that by adopting new and exciting technology you introduce additional risk and instability, which limits your ability to innovate on your product. I agree with pretty much everything he said.

There’s another dimension to the boredom question though. I think it’s both a cause and effect of what Dan’s talking about. I call it Ian’s Rule Of Bored Programmers:

A smart programmer tasked with solving a simple problem will make the problem more complicated until it becomes interesting.

I’ve observed this time and time again both in companies and in the open source world. To me the classic open source example is the GNU C Library. The team developing the glibc library, led for many years by Ulrich Drepper are intelligent and experienced, but they working on a library that for the most part is wrappers around syscalls, plus printf and malloc implementations. Almost every user of their library is using the Linux kernel. Instead of a simple, stable library we’ve ended up with a complex, always changing source of innovation and bugs.

At companies that only hire experienced programmers I’ve watched experienced developers faced with a simple but important problem add complexity to the solution to keep their attention. In some cases it takes the form of adopting or developing new languages, databases or other technology (like Dan writes about). In other cases developers chose to solve an abstract problem class rather than the specific concrete problem at hand, which ironically often ends being more brittle and inflexible than a solution specific to the problem would have been.

There doesn’t seem to be an obvious solution to this. Sometime simple problems are important enough that we want someone with experience to tackle it. For myself I just try to check in with myself to make sure I’m not adding complexity where it doesn’t belong.

The Problem With Democracy

The problem with democracy is that the people of a country lose the right to consider themselves independent of government policies. If a government does or says awful things then the people of the democracy have to bear responsibility.

Citizens of totalitarian regimes can’t really be held responsible for what their governments do. I don’t consider the Chinese people as a whole responsible for the repression of Uyghurs or Ai Weiwei. I don’t hold the Saudi people responsible for the domestic repression of religious minorities or for their government’s support for the coup in Egypt.

Australians have elected governments that lock up asylum seekers in private prisons in Australia and in our poor neighbors. The conditions are awful, there is endemic violence (including sexual violence) against the asylum seekers. It’s an embarrassment, but more than that it’s a national shame – a stain on our character as a people.

Israelis just reelected Likud and Benjamin Netanyahu, right after he declared his opposition to ending the occupation and expressed deeply racist concerns about the idea that non-Jewish Israeli citizens actually voting in the election. Not all Israelis voted for him, but as a democracy, Israel as a whole carries the responsibility for his words and actions.

By being the citizen of a democracy we are taking on responsibility for the actions of our government, whether we are in the majority or not. We have the responsibility to speak up and advocate for what is just and right and true. But we can’t escape our shared responsibility for our nations’ crimes and mistakes.

The Kevin Bacon of Music

Who is the most connected musician? Mathematics had Paul Erd?s, film has Kevin Bacon, but who is the center of the musical world. At some point I flippantly suggested Brian Eno because of this long career as a producer. Rich Trott brought this up again recently when linking to his awesome Music Routes site.

Rich has now published the data that backs Music Routes. This let me write some code to calculate who the most connected musician is. The criteria I chose was to find the artist with the lowest average distance from all other musicians in the largest network of connected musicians. I started researching shortest path algorithms and quickly discovered that the Floyd-Warshall algorithm will give me the shortest path between all nodes in a graph in only O(n³). And scipy has an implementation.

I ended up with an IPython notebook to calculate the most connected artist. Rich’s data includes 10479 people on 4835 tracks. He admits that it ultimately reflects his tastes because he has entered most (perhaps all) of the data himself, but that’s still a serious number of data points. The Floyd-Warshall was the slowest part of the calculation. I left it running over night and once it was complete saved off the results in case I ever wanted to run this again.

The result? The artist in the largest group of connected artists (10065) with the shortest average distance from each other artist in the network was Jim Keltner, a session drummer with an average distance of 3.226. He’s followed closely by Paul McCartney (3.239), Bob Dylan’ (3.322) and Elvis Costello (3.333).

This is an alright result, but it really feels kind of like “small data”. I downloaded the discogs.com database dump with 3.6M artists on 5.3M releases. I need to work out how to run an all-pairs shortest-path algorithm for that without needing terabytes of RAM.

 

Streaming royalties: taking over, but what are the details

So TechCrunch posted that Kobalt, a company who collects digital music publishing revenue for artists has announced that Spotify revenue has overtaken iTunes revenue by 13% in Europe. That’s interesting, not surprising given the trends but is missing answers to a few key questions:

  • What are the overall revenues – does this represent an overall drop in incomes with iTunes revenue dropping quicker than Spotify revenue grows, or are artists incomes holding steady?
  • How does the buy vs stream ratio look across the spectrum of music popularity? Pop vs long tail?

TC of course failed to link to Kobalt’s blog post. Here it is. It doesn’t contain much more content.

This is what an insurgent looks like

This is happening one state away from me:

insurgent

Pretty scary stuff. I guess at least Americans are bearing arms to overthrow (in their mind) tyrannical government not just shooting at each other out of fear, anger or greed. It shows some holes in many citizens’ view of the social contract though.

Malaysian Chicken Curry

I really miss Indonesian, Singaporean and Malaysian food. It basically doesn’t exist in the Bay Area. I started reading Bee’s Rasa Malaysia blog for recipes. I think I originally found it looking for a rendang recipe but subscribed. It’s actually a little disappointing because it’s largely Thai or Chinese recipes, and too many competitions and not enough recipes. But last week there was a Malaysian chicken curry recipe, so I made that.

wpid-IMG_20140117_205243_1.jpg

I used some special Malaysian curry powder that my dad brought from Australia, but the recipe was basically the same as Bee’s.

  • 2 tbsp vegetable oil
  • 1/2 onion, diced
  • 1 oz / 26 g Malaysian curry powder
  • 1.5 lb chicken breast, chopped into 1 – 1.5 inch pieces
  • 3 cups water
  • 1 tomato, cut into wedges
  • 2 small potatoes, peeled and cut into wedges
  • 4 hard boiled eggs
  • 1/2 – 2/3 cup coconut milk
  • salt
  • steamed rice to serve
  1. Heat the oil until hot, add the onions and fry until fragrant.
  2. Add the curry powder, stir for 30 seconds.
  3. Add the chicken, stir well for 1 minute.
  4. Add the water and bring to a boil.
  5. Lower to a simmer and add the tomato, potatoes and eggs.
  6. Cover and simmer for 30-45 mins – until the chicken is cooked and tender.
  7. Add the coconut milk and salt to taste. Simmer for another 5 minutes.
  8. Serve with rice.

This quite liquid, not thick like a Thai or Indian curry. It soaks into steamed rice wonderfully.

Waffles

I made one blog post in 2013. I’m going to do better this year. I miss writing on the internet. In the past year I’ve found myself drifting away from consuming short-form writing on Twitter and Facebook to return to enjoying longer form posts on blogs and to a lesser extent on Google+, Tumblr and Medium. So here I am.

This morning I made waffles. While I don’t have the actual recipe my dad used when I was growing up, found and used a recipe that uses that technique – beaten egg whites. For four of us I doubled this recipe and had way too much batter:

Ingredients:

  • 1¾ cups all-purpose flour
  • 2 tsp baking powder
  • ½ tsp salt
  • 1 Tbsp granulated sugar
  • 3 eggs
  • 1¾ cups whole milk
  • ¼ cup vegetable oil
  • 2 oz (½ stick) whole butter

Preparation:

  1. Melt the butter – on the stove at low heat or in the microwave. Let it cool but not solidify.
  2. Separate the eggs.
  3. Sift together the flour, baking powder and salt.
  4. Beat the egg whites until they’re stiff. Add the sugar and continue beating until it forms peaks.
  5. Beat the yolks by hand, then mix in the milk, oil and butter.
  6. Mix the liquid ingredients into the dry ingredients.
  7. Fold the beaten egg whites into the batter. Don’t over mix – they’re going to make those waffles fluffy.
  8. Make waffles with your waffle iron on its hottest setting.

You could add half a teaspoon of vanilla extract to the liquid ingredients but I generally don’t.

This morning I served them with bacon, fresh raspberries, butter, maple syrup and boysenberry syrup.

Horse Meat

I like horse meat. It’s delicious and healthy. And not so different from beef. I’m really enjoying watching the unfolding European horse meat scandal. Even countries like France where horse is regularly eaten are outraged that they’ve been lied to.

A madrinha alerta

The scandal has exposed the complicated supply chain in the European cheap meat trade. It’s exposed other lovely facts like that a “beef burger” in the UK only needs to be 47% beef. What’s the rest of it? Pretty much anything, but generally protein powder and highly processed meat off-cuts.

In the 1990s the UK banned mechanically recovered meat, commonly referred to as “pink slime”, after it was linked to the spread of CJD, the human form of mad cow disease. Pink slime was replaced by “de-sinewed meat” in cheap meat products until last year when it was reclassified and no longer allowed in cheap burgers. The way I look at it, this means, since we’re in the process of eliminating pink slime, we’re about 15 years away from this scandal here in the US.

I think it’s great whenever people are exposed to their food chain. We need to demand more accountability, transparency and integrity. If that means we can’t afford to eat meat every day, but the meat we do it is of higher quality then that’s a fine outcome.

I’d go so far as to say I’m Lovin’ It.

2012, The Year of the Linux Personal Computer

2012 Q3 PC sales: 87.5M
2012 Q3 Android sales: 122.5M

For sure, many would-be PC buyers were waiting for Windows 8 and refreshed models that were waiting for Windows 8 to be released, but that still means that last quarter 1.4 times as many Linux computers were sold than Windows computers.

You might try to argue that an Android device isn’t a personal computer, but apart from writing software, everything I do on my computer I do on my Android devices. You might argue that Android isn’t “Linux” enough, but it’s certainly largely open source and runs a Linux kernel. There’s plenty I don’t like about the way Android is put together compared to a traditional stock Unix system, but hey, look at the numbers – 122.5M Linux computer shipped last quarter. That’s a whole lot of Freedom!