Friday, June 22, 2012

On the Hubris of the Modern Software Industry

Here I sit at Uberconf.  While this should be a fun three learning-filled days, I find myself growing increasingly frustrated and disappointed.  I had not realized that my industry had become so filled with hubris, so blinded by the sparkle of the latest, so contemptuous of experience and expertise.

I remember my early 30s, being a unix guy in a mainframe company.  I remember that we certainly believed that we were on a better technology, one that was easier and more fun to use.  What I don't remember was ever believing that we were better or smarter as programmers than the mainframe guys (and a few women) across the hall.  Like us, they were a mixed bag.  Some folks I really respected and some that I wouldn't have let check in code.

So the disdain that our industry now holds for java programmers, or perhaps I should say "just" java programmers came as a complete surprise.  After all, technology (language, tools, frameworks) has as much to do with programming skill as sneakers have to do with basketball.  The hallmarks of great programmers, in my experience, are the ability to think deeply about problems, decompose solutions into pieces that fit neatly together, hold an abundance of detail in mind, and an obsession with the code being right.  There is nothing there that is specific to scala or java or c or lisp.

"But, But," I hear you say, we want programmers who want to "learn".  As if the only thing to learn is the language de jour or the new fad platform.  One of the worst programmers I've worked with was a great learner, an awesome technologist, always up on the latest thing.  We used to say that his expertise ran a mile wide and an inch deep.  The skill I want is not learning but mastery.  I will take someone who has mastered a technology, really mastered it, over anyone content with merely chasing the latest technologies.

Of course, that doesn't mean that any programmer should (or can) stay with a single technology for the bulk of their career.  Technology does change and the languages of my youth are no longer in common use.  But it is also true that new languages, new technologies become easier and easier to learn.  Today's technologies all have their roots in the past and the lessons learned then still apply.

So, really, I just want to say to today's programmers, get over yourselves.  You are neither the best nor the worst nor is your experience unique.  Its great to be obsessed by programming, in my experience all the great programmers are at some point in their careers.  And don't be surprised when life presents other attractions and other challenges, when learning the next big thing takes a back seat to taking care of the little peep in the back seat.  It won't make you any less excellent as a programmer, it just means the 30 somethings will think so.






Saturday, March 3, 2012

On Azitra Restaurant

A couple of weeks ago while we were driving around looking for El Tapatio (a restaurant to avoid), we discovered there was a new Indian restaurant across the street from Flatirons Mall.  Azitra is clearly aiming at providing a more upscale Indian restaurant.  The decor is elegant earth tones, no wall hangings with elephants here.  The usual dishes are on the menu but usually with some twist.  And there is no buffet.  Overall, we enjoyed the dinner but we aren't quite sure about the restaurant so we will have to visit again before deciding whether to add it to our regular Asian night rotation.

The Good: The Chatpata Murg appetizer was very good with the pan glaze adding a nice bit of sweetness to to heat of the dish.  The little glaze that remained on the dish after the chicken was done made a nice condiment for the naan.  My medium heat chicken curry was also nicely balanced.  Northern Indian comfort food, the curry was thick, rich, with a nice hint of coconut milk.

The Bad: Melissa had a mild heat Tandori Chicken Tikka.  I don't know why Melissa gets mild dishes in Indian restaurants - she loves Mexican food and good Colorado green chili.  Apparently mild at Azitra means flavorless.  Our normal strategy at Indian restaurants is to split entrees.  After the first bite of hers, I refused to have any more.

The Ugly: Worst. Chai. Ever.  I realize that chai isn't always served as richly spiced as we have become accustomed to in America.  We learned that at our numerous means on Brick Lane in London.  Still, the chai here tasted completely unspiced.  Little more than black tea with cream.  And much stronger than I take my team.  If your taste in coffee runs to Turkish, you might enjoy the tea here.

The Scary: Big room that never got full on a Friday night.  They've been in this location for 4 or 5 months and I'm not sure whether they will survive or not.  The location is not good for a restaurant.  Its not actually on the flatirons ring road.  Instead it is in the set of building behind near Benihana's.  Flatirons is a regular shopping destination for us (and I've eaten at nearby Jason's Deli several times recently) and we had no idea this was here. This plus the fact that they are aiming at a more upscale experience and are correspondingly more expensive than the usual Indian restaurant, makes it likely this place is going to struggle.  I hope they succeed because Melissa and I would really like to have more Indian options than just Jewel of India (which we like) and Yak and Yeti which we don't.

Sunday, February 5, 2012

On a Jew's View of Muslims in Europe

I have written about this in other forums, but now that I'm maintaining a blog, I thought I would add a post on the topic here.  A friend recently forwarded an article that was purportedly published in a Spanish newspaper (although apparently not) with the thesis that European guilt over the Holocaust has led to a too lenient treatment of Muslim immigrants and that effectively trading Muslims for Jews has been a horrible choice.

Here is my response (slightly modified).

First, tripe about English schools not teaching the holocaust, is just that. It is well debunked and only dedicated racists are still using it.

Second. the description of the Jewish community that was destroyed in the Holocaust is simply wrong. Yes, there was a vibrant and cultured Jewish community in Germany and other Western European countries that was destroyed.  They were educated at fine German universities and produced the kind of brilliant thinkers like Einstein and Freud that German universities of the era produced. And this was a tragedy.  But they were a small minority of Jews killed in the Holocaust. Most were villagers from eastern Europe. There were more Jews from Poland killed in the Holocaust than Jews from the rest of Europe combined. These communities were not cultured, they did not produce brilliant thinkers.  And their destruction was every bit as tragic.  Because the murder of a poor subsistence farmer is every bit as tragic as the murder of brilliant scientist when done simply because the victim has a particular race or religion.

Like all bigots, the Nazis rewrote history to justify their ideology.  And that is just what this author does.

Lumping of all Muslims into a single collective enemy who seeks the destruction of Europe is exactly what the Germans said.  Oh wait, that was the Jews who were bent on the destruction of Europe.  The Jews who were cultural poison.  I won't claim to know much about Islamic immigrant communities in Europe, but I can speak to the ones here.  They have been surveyed extensively and, survey says, they are much like other American immigrants.  Hardworking, patriotic, grateful for the opportunities that America provides. Before 9/11 most were Republicans.  The typical Muslim immigrant in America is no more extremist than my grandfather was.

Are there Islamic extremists?  Obviously.  Saudi Arabia seems to have a national system of education to produce them.  There are also Jewish extremists, or have you missed the growing communities of Haredi in Israel.  There are Christian extremists too, think Randall Terry or Fred Phelps.  To generalize from the small minority of crazy extremists to whole communities is the definition of bigotry.

In all likelihood, it is true that the Islamic immigrant communities in Europe are poor and dirty. That describes immigrant communities throughout history and across the globe. It is not usually the rich and well educated in society who immigrate, it is the poor and uneducated. We idealize it now, but the lower east side was described in its time as hell on earth and the worst place in the world.  And the Jews (and others) who populated were despised by the good citizens of the city.  They were excoriated as anarchists and terrorists, as dirty and uneducated, as trash.  Immigration laws were rewritten to keep them out.  There is nothing said about Muslim immigrants in Europe today that was not said about my great grandparents and their generation in America.

And if Muslim immigrants get help from the government, so to did the Jewish children of those times who escaped the horrors of the lower east side through the beneficence of a government that invested in public education not just for primary school but also the excellent system of higher education, the City Colleges of New York.

It is quite simple, the author argues for racism and bigotry. The kind of racism and bigotry that has ostracized Jews in America and around the world and resulted in the murder of 6 million Jews in Europe.  As a Jew, I find the use of the Jewish experience to justify bigotry (and, let's face it, racism) to be a particularly odious obscenity. It literally spits on the history of my people and my ancestors and I couldn't find it more offensive. Islam isn't the enemy, bigotry and extremism are.

Tuesday, January 24, 2012

On Why Scala is The Perl of JVM Languages

One of my first technical jobs was to develop a system in APL.  There are two lessons I still carry from that experience: one, I can write any program with fewer characters and two, that doesn't make it a better program.   The mark of a great programming language is not the number of characters you can write a program in (see: APL) but how well the language allows the program author communicate with program readers.  Is the meaning of sentences and paragraphs of the language obvious or do I have to "work it out."

Unfortunately, Scala (and most other modern JVM languages) seems to have learned all the wrong lessons from Perl.  When I hear programmers make fun of Perl, I understand that they are really making fun of all those unreadable Perl programs they've had the misfortune to have to have read.  You didn't have to write programs that way in Perl (and I didn't) but it sure seemed like there were too many $s, @s, bless this, and optional parameters that defaulted to $_ and just what did that evaluate to in the middle of a map.

And Scala does all of that.  Implicit conversions.  Methods that use symbols for method names.  A type system that used + and -, :< and >: to differentiate covariant and contravariant type and upper and lower type bounds and who even understands what those things are.  Semicolons are optional except when they're not.  Braces are optional except where they are not and sometimes they become parenthesis.  And too many nifty ideas like case classes that don't work with the rest of the language.

Look, we can all agree that Java suck.  I learned object oriented programming in Smalltalk.  Java really sucks.  And collection classes require functional programming techniques to really work well.  I am certain that you can write code in Scala that is more elegant and more expressive than Java.  And I am equally certain that you can write code in Scala that makes the typical CPAN library seem like a beacon of clarity.  Scala may be a better choice than Java, but that doesn't make it a good language.

And I like programming in Perl.

Sunday, January 22, 2012

On Why is George Karl Still Coaching?

The Nuggets won a close one last night in New York.  Playing their fifth game in seven nights and having arrived at 4:00 am, the team was clearly exhausted in the fourth quarter and overtime.  This was made worse by the short bench of Coach Karl, he played only seven players.  In the back court, this was forced by injuries.  But in the front court, this was a result of inexplicable decisions by the coach.  While Timofay Mozgov had one of his better games, in what universe is he a better player than Chris Anderson who Karl is increasingly reluctant to play?  Here are the per/48 stats:

Raw Stats
MinWP48WinsPTSDRBORBREBASTTOBLKSTLPF
Andersen204.2361.016.09.94.514.40.21.23.52.46.4
Mozgov284.0240.115.28.82.911.72.03.02.50.76.3


And here are the shooting efficiency stats:

Shooting Efficiency
FG%2FG%3FG%FT%eFG%TS%FGA3FGAPPSFTA
Andersen51.2%51.2%0.0%66.7%51.2%57.8%10.10.01.588.5
Mozgov52.1%52.1%0.0%73.7%52.1%55.3%12.30.01.233.2


By the stats, Anderson is not just a better player, he is a MUCH better player.  And he can't get off the bench in a game where the team is playing tired?  A game where they were giving up second and third attempts because they were too tired to rebound.  Really?

The Nuggets are an interesting team this year, a team of a bunch of good but not great players.  The only clearly bad player on the team is Mozgov who is a Doug Moe big stiff.  He's 7'1" and can't rebound.  This team will go only as far as George Karl's personal decisions allow, which is apparently not very far at all.