The Language Of Hackers

Posted by Jack Hsu Tue, 31 Mar 2009 04:34:00 GMT

Today, Jeff Atwood made a post on his blog titled The Ugly American Programming. In this post, Jeff talks about the the ugly american attitude, in which one presumes that everyone else should speak English. He asserts that while this attitude is unacceptable in all other areas of modern societies, we as programmers are exempt from such scrutiny. He ends his post by saying that,

Advocating the adoption of English as the de-facto standard language of software development is simple pragmatism, the most virtuous of all hacker traits. If that makes me an ugly American programmer, so be it.

 Here is my take on this subject.

Being fluent in English is a privilege

Knowing English is not a requirement to be a hacker, it’s a privilege. As an English speaker, I have access to documentations, tutorials, and communities that a non-English speaker would not. The same is true the other way around, but a disproportionate amount of programming materials are in English.

Coming from an English-speaking country I have an unfair advantage in that non-English speaking programmers need to first learn English just to access the same resources that I do without the extra time and effort to learn a foreign language.

I would not say, however, that every software developer needs learn English. Why? Because it really isn’t required. If people can be taught differential calculus in other languages, what makes software any different?

I’ll go even further and suggest that if an English-speaker learns another language, then he or she will benefit by being able to take part of a new programming community in which that language is used. For example, there are a lot of cool stuff coming out of Japan, such as Web 2.0 technologies (like this one). And a lot of those programmers do not speak English very well.

English as a global language

There is no particular reason why English, as opposed to other languages, is better suited as programming’s lingua franca. Eric Raymond writes in his How To Become A Hacker guide that, "English has a richer technical vocabulary than any other language." I have not seen any evidence for this claim, besides from a few anecdotes about some programmers with English as their second language choosing English documentation over those translated into their native tongue.

The problem here is not that other languages aren’t technical enough. It’s a simple translation problem, and is definitely not bound to the programming world. Take any technical text written in the non-English language of your choice and you’ll have trouble trying to make an English translation that is just as good as the original.

The globalization of English is an historical accident. Namely, that the two dominating forces during the last few centuries spoke English: The use of English was first spread by the British Empire during the nineteenth century, and then further global adaptation took place when the Americans took reign as the world’s top political power. Driven by the growing global economy, more and more people needed to learn English in order to take part in the global market.

A common language for hackers

I would definitely agree that there is a huge upside to give hackers around the world the ability to communicate with one another. I also agree that English is currently the best candidate to accomplish this task, simply because more people know English as a second language (myself included) than any other language.

However, to advocate English as mandatory for programmers is a bit too imperialistic for my taste. It is exactly what is described by the term Ugly American. If an English-speaking programmer can’t take time to learn another language, but expects others to learn theirs, then that is just ignorance.

English keywords in programming languages

Jeff states rightly that most programming languages use English keywords. I don’t really see this as a reason to learn English though. If I showed a non-programmer a peice of code, most likely this person will not understand what it does, even though the keywords are in English.

Take, for example, this piece of Ruby code.

puts "Hello World!"

If you’re not a programmer, you will not have a clue as to what the above code does. Actually, even if you are a programmer you might not know if you don’t know Ruby – but you might be able to guess simply because of the "Hello World!" string. And why is the string encapsulated between two quotation marks? Try explaining that without talking about compilers.

Another example are the logical operators. If I say, "I’m going to church or I’m sleeping in on Sunday," in English I am implicitly using the exclusive or (XOR). In programming, however, the or operator always implies the inclusive or, which stems from boolean logic.

I think being fluent in English may give someone a slight advantage, but programming languages are so grammatically different from English that it does require a different kind of thinking.

Hackers transcending culture

It’s a nice idea that the hackers transcend cultural norms. We’d like to think that we are special, that we have our own special community in which everyone’s interests are not bound to any culture or country. However, this is not reality. We are just as bounded to social structures as people in any other field.

Sure, we can say that we advocate English as the common language only because it makes it easier for us to get stuff done. But isn’t that the same for everything else in life? If everyone in the world spoke English, that would certainly make it easier for us when we travel. If every physicist in the world spoke English, they’d get a lot more work done. We makes us so special?

The world is not flat. You can pretend it is flat and ignore the diversity of programming communities. However, doing so won’t do you any good, and will simply make you The Ugly American.

Programming Language Trends (Java==Cobol?)

Posted by Jack Hsu Fri, 13 Mar 2009 01:13:00 GMT

I ran some queries through Google Insights, just for fun. One of the queries I ran was python vs. java vs. ruby vs. erlang vs. cobol, under the Programming category. Here’s the resulting graph of growth relative to category.

Ignore the dark blue line, it’s a plot of the Programming category (which is actually sliding.. hmm).

Seems like Erlang and Ruby have generated a lot of interests over the last three years, with 242% and 124% growth in interest since January, 2004. Python has remained rather steady, losing 5%. Java on the other hand has dropped quite significantly, at -53% growth since January 2004. And Cobol is way down at -62%.

It gets more interesting when you view the interest by region. The most interesting data I think is that Java and Cobol are both pretty cold world-wide except for one region: India. Take a look at these regional maps.

Search volume for Java:

Search volume for Cobol:

My guess is that a lot of companies now out-source Java and Cobol projects to India. They are both languages that people need to continue to support, probably for legacy systems, but just aren’t fun and definitely kills innovation. As Brett McLaughlin (author of several O’Reilly Java books) said, Java isn’t unimportant, but it’s big business in many cases, and that tends to suck experimentation and fun out in sneaky ways.

A few more (completely useless?) things to note:

  1. Russia loves Erlang.
  2. Ruby is obviously hot in Japan, but also in Belarus (who whudda thunk it).
  3. Python and Ruby are gaining traction in the US, but Canada is lagging still (c’mon Canucks!).
  4. Japan is pretty lukewarm to Python, and it has a pretty high search volume index for Cobol compared to most every other country.

 

2008 Turing Award Winner: Barbara H. Liskov

Posted by Jack Hsu Fri, 13 Mar 2009 00:25:00 GMT

Congratulations to Barbara Liskov for being the receipient of the 2008 Turing Award, the first woman receipient.

Exerpt taken from the ACM award citation:

Barbara Liskov has led important developments in computing by creating and implementing programming languages, operating systems, and innovative systems designs that have advanced the state of the art of data abstraction, modularity, fault tolerance, persistence, and distributed computing systems.

The Venus operating system was an early example of principled operating system design. The CLU programming language was one of the earliest and most complete programming languages based on modules formed from abstract data types and incorporating unique intertwining of both early and late binding mechanisms. ARGUS extended many of the CLU ideas to distributed programming, and incorporated the first versions of nested transactions to maintain predictable consistencies. Other advances include solutions elegantly combining theory and pragmatics in the areas of decentralized information flow, replicated storage and caching of persistent objects, and modular upgrading of distributed systems. Her contributions have been incorporated into the practice of programming, thereby influencing many of the most important systems used today: for programming, specification, systems design, and distributed architectures.

 

But We're Not [Insert Web Firm]

Posted by Jack Hsu Wed, 11 Mar 2009 03:45:00 GMT

I’ve heard on a few occasions where someone tells me, "You know that’s a great idea but we just can’t do it. We’re not Google." It can also be subsituted with Amazon, Yahoo, or any other big web firms. Actually, once I’ve even heard the excuse, "But we’re not a tech firm."

The problem with these kinds of excuses is that by using them you form a preconceived notion that you just aren’t as good as other companies – including your competitors. Thisdoesn’t have to be true

When Google first launched in 1998, it wasn’t Google either. Yes, today they employ a lot of good programmers, including many with Ph.Ds, but is that what really makes them great?

No matter what type of company you look at – be it a financial firm, a media company, or an online book store – developers are developers. Yes, there may be some bad apples, and maybe some are great hackers, but you can always find good developers no matter what kind of business you run.

"You don’t need rock stars."

The difference between the hottest Web 2.0 companies and the ones lagging behind isn’t necessarily the developers, but the work environment. As DHH said in his talk F*ck the Real World, "You don’t need rock stars, but a rock star environment. Your employees are not stupid " A great company respects and trusts its developers. If you want to attract good programmers, you need a work culture that encourages creativity and growth.

No good programmer wants to just be told what to do all the time. They want a chance to experiment with things. A chance to be creative. Who knows, they might just stumble across a million dollar idea. There are two approaches I’ve heard of to foster the inner creative geek in each employee:

  1. Designate one week of each month as geek week, in which developers can use the time to geek out and code whatever they want.
  2. Google’s 20 percent time, in which each developer is required to spend 80% of their time on required work tasks, and the other 20% is used to work on side projects.

As for growth, it goes without saying that a good programmer is one that never stops learning. Growth in the workplace usually comes in the form of open communcation among developers, paired programming, and code reviews. These are important not only for growth, but it also produces higher quality products. Double win!


Video manipulation in Firefox 3.1 using HTML 5

Posted by Jack Hsu Wed, 04 Mar 2009 20:34:00 GMT

Here’s an cool post from the Mozilla Developer Center regarding the new in Firefox 3.1. The demo featured is a video filmed with a green screen, and the green screen is replaced with an image in real-time using JavaScript.

Pretty neat stuff.