Monday, October 22, 2007

Respect C Programmers

During last few weeks I noticed quite a few blog articles and online discussions dedicated to something awful: bashing C as a language and C programmers who still use it and especially those who LIKE to use it. The bashing seems to be coming primarily from adepts of higher-level languages, filled with self-proclaimed superiority mixed with camouflaged attempts to proclaim the other side stupid. Even well recognized C hackers like Torvalds got their share of criticism in a rather rude manner.

And I have a big problem with that.

But before I explain myself, lets look closer what high-level language geniuses have to say. Summarizing, it predictably sounds like C is too low level and using it in 2007 is like programming in assembly language which is Forrest Gump stupid. More specific drawbacks of being so bare metal include but not limited to the following statements:

Programming in C is too slow and unproductive.
C programmers by default are performing premature optimization.
C-style of memory management is inferior to automatic garbage collectors found in modern VM implementations.
C programs have more bugs in them.
C programs are prone to security vulnerabilities.
C programmers write too many for loops and look stupid doing it.
C is not that fast. Actually Java is almost as fast now!
C programmers are not cost effective and picking C as a language of choice is bad business decision.

You can have a full blown argument for each of those bullet points but I won't. Instead, I want to point your attention to something else.

Dear Haskell People...

You see, most of you Haskell/Lisp/Erlang gurus are true intellectuals and are very capable. You write very well: many great “functional-style programmers” like you have nicely written blogs filled with sacks of good thoughts and ideas.

However, when I look around I rarely see any results of your work. I browse APT repository on Debian, sometimes I check out various shareware for Windows, I follow promising software reviews. I see interesting new projects pop up here and there, and almost everything is done in C. Maybe it is just me, but most of the software I'd personally use on my computers is written in that retarded and unproductive language you dislike so much.

I am counting real software, not software jobs. Because, as many of you already know, most software jobs exist out there solely to produce boring crap around SQL server of some sort for the enterprise with very few exceptions. That's the enterprise software forya. People still use it, but only if you pay them salaries. Here I want to concentrate on software people actually want to use themselves. Even pay for it. Real dollars, you know? And I don't see much of that written in higher level languages, let alone functional ones.

Moreover, looking around I can't help but notice that somehow those "stupid and ignorant" C programmers managed to build everything that powers the Internet and computers in general: GCC, Apache, Operating systems they run under, numerous tools, Gnome+friends, Doom, system utilities and personal money managers - the list is huge. Nearly everything is written in C. And it's not just legacy: if you focus on projects started within last 5 years the picture will not change much.

Meanwhile, higher-level language intellectuals produced very little. On my Ubuntu desktop I do not believe I have a single piece of software written in Haskell or Lisp. I tried Eclipse but continued looking for something usable until I discovered Vim. Even mighty Python has mostly been kept as a tool to write helper scripts as more powerful replacement for bash. I am not saying there aren't any programs written in higher level languages, I am just saying that ratio of C-to-everything-else is profound.

Why is that? Haskel/Lisp hackers, I enjoy reading books you write, blogs you maintain and I find your comments on most programming topics on slashdot very insightful. However, if your language is so superior and it makes you guys so much more productive, why don't you flood us with actual software written in it? Besides your own server-side web applications? I see so many articles and tutorials that end with "WOOW in 5 lines of code!" or "WOOW re-written in less than a week!" that it seems that all that increased productivity and your superior intelligence should compensate somewhat for your smaller number of heads.


Meanwhile, C programmers just get things done. This is why survival of any new high-level super language will always depend on having a reliable and easy interface to C. Why? Because the entire world is written in C by guys who are too busy coding and do not have time to bash cocky Haskell people in their blogs.

Peace. Respect. Love.

Monday, October 15, 2007

Life before Google

While driving to work the other day I caught myself thinking: what did I use for online search before google came out?

There was yahoo search, there was definitely altavista, I loved the way it sounded... But did I use them on a regular basis? How often? I can't recall.

I could remember my “google day” very clearly: I was looking to buy a car and one of my friends stopped by my office right before lunch and suggested to run some google searches to see what comes up. I do not remember being particularly impressed by the search results, but the simplicity of the front page was what caught my initial attention.

Then, almost the next day, someone suggested searching for “dumb m@$%ker” online and the bio of one of presidential candidates showed up. Jokes like that were much easier to do back then.

And I was happily googling ever since. However, I honestly cannot answer this question: what did I search with before?

The more I think about it, the more I am starting to realize that I didn't. I did not search back then. Well, not that much. Wasn't part of my daily ritual, you know. “Internet without Search” sounds almost idiotic in 2007 but in 1999 it was OK.

It just occurred to me that I didn't do a lot of things back then. And only now I realize how different the Internet has become. It appears that google all by itself dramatically changed the way I use the Internet. I am talking about my personal experience here and not trying to generalize, but I strongly suspect it is not just me.

What has changed since Google?

I stopped bookmarking things. Why? I can always search for the damn thing and find it again. In fact, it will take fewer keystrokes to get there and in case something better comes along I'll get on it right away.
I stopped using specialized sites like edmunds.com. If I want to read up on some vehicle, or anything, for that matter - google will show me the specs and reviews much, much faster than stupid edmunds with their multi-level menu drill down, killed by a naïve question “what is your ZIP code?” at the end. Are you out of your minds, edmunds?
Actually, edmunds was not a particularly good example. I stopped using sites way better than edmunds, like weather.com, yahoo movies, financial sites, etrade, fool, even calculator, dictionary and Microsoft Excel for many cases! Everything could be done by a simple text box and “Search” button. Faster.
In fact I stopped using the address bar all together, just like many others – Firefox has an alternative “address bar” that is powered by Google and is proper: no need to add “.com” or retarded “www” to everything and accidental misspellings will get fixed. Isn't that sweet? Just go Ctrl+K instead of Alt+D.
I do not have POP3 email client software anywhere. Gmail, even though it does not have folders and uses “collapsed” conversations without an option for normal people, was by leaps and bounds the best web-based email program. My primary address is 10 years old and does not end with '@gmail' but I tunnel all my messages through gMail anyway simply because they eliminate spam. 99.999% of it, like nobody else.
I stopped using my personal site. I still have an account and paying for hosting for nostalgic reasons, but I don't need it. I used to store family photos and useful files up there on FTP, just in case I'll need them when away from home. With ad-free Picasa and the giant gmail mailbox I don't need those either.
Finally, all sorts of Yellow Pages became history: online, offline – does not matter. Google finds that stuff too. Phone companies finally (!) realized that as well and stopped bombarding me with those useless yellow bricks.



Who can compete with Google? Compete for my “Internet time”? Only Wikipedia comes to mind, in fact I often throw in a short and effective 'wiki' at the end of my searches just to make sure I am getting wikipedia's perspective as my first search result.

And I never paid a dime for all this informational nirvana... Incredible.

Tuesday, October 2, 2007

Is Privacy Overrated?

Recently I noticed an interesting trend among people I know. I am not sure how to express it in full other than by giving you a few examples.

I few people I know have WEP/WPA encryption turned off on their wireless routers. They claim they do not really care if someone is using their Internet connection. Warning them about potential security issues with strangers breaking through Windows networking, lurking around inside of their computers looking for credit card numbers did not raise as much of a concern as I expected. Not as much as it used to anyway. How did they explain it? Apparently they cannot stand the hassle of dealing with passwords for every WiFi device that makes its way into their house, especially for those that do not have keyboards.

I also knew quite a few people, especially older relatives, who never managed to put their family photos online because they felt it was silly to have your private life exposed for everyone to see on the Internet. The issue was not technical: they have always known how to upload photos. But more and more of them are getting Picasa and Flickr accounts and upload their pictures now. They changed their mind.

Meanwhile I was approached by more than one person asking me to "build something" that will liberate them from logging into tens of web sites every day. Apparently all mainstream browsers are still not helpful it with all those "remember-your-password" features.

Don't you find it strange? While tech media cannot get enough of identity theft stories and companies like Micorsoft get hammered by online press almost weekly for yet another exposed security hole in IE, real customers, real people (around me at least), seem to care about those things less and less. A while ago people used to call GPS feature on their cell phones spooky because "anyone would be able to track me wherever I am" but look what really happened: even without GPS you see thousands of happy Twitter users announcing their every step to anyone who'll listen.

Do we Really Care about Privacy?

Privacy is a broad term and I prefer to think more of online anonymity. Back in early Internet years there was a lot more excitement about coolness of being anonymous. Expressing yourself, letting your voice be heard by thousands without fear of reprisals from an employer or your government was how the whole idea of the Internet was perceived by many who never heard of it before.

Fast forward to 2007 and let me ask you: Do you really want to listen to what Mr. Anonymous has to say? Have you noticed how meaningless and short, if not offensive, anonymous comments usually are? Well, enough about others, think of your own experience. Do you like to be anonymous? Really? Think of every time when a web application wants you to log in again and again, whenever you receive spam, whenever you type your name and credit card number the millionth time in your life or whenever your browser pops up a message with something about cookies or submitting insecure data to "scary Internet". And I haven't even asked the web developers. How fun is it for them to deal with anonymous visitors. Don't you find online anonymity simply annoying at times?

Does online anonymity really buy us anything?

I wonder how it would be like if DHCP did not exist?

Nobody is ever Anonymous. Try to imagine an absolutely unique "IP address" assigned to every person on earth immediately after birth. You add that ID to their connection IP address along with ID of the device they are accessing the net. No need to log in, if you are online, "the Internet" already knows who you are. This gives us an incredible accuracy at identifying who and when gets access to what. Sounds like a nightmare doesn't it? That is some scary future that Hollywood warned us about in "Minority Report" huh?

But how different it really is from what we already have? After all, we're not really anonymous. Interested parties (think RIAA) will get you even though they still need to get a court order to squeeze your real address out of your ISP. Imagine the state of affairs in North Korea, how anonymous their Internet users really are?

It seems to me that we are getting all the headaches of the anonymous Internet without any real anonymity. And judging by what people around me are saying, I would suggest that annoyances of online anonymity are eclipsing the fake sense of security it provides.

Don't you think that "scary future" is not that scary but rather convenient? Or am I being naïve?