Stephen Colbert at White House Correspondents’ Dinner

I just wanted to point out that if you haven’t seen it yet, you should see Stephen Colbert’s speech, in front of the President, at the White House Correspondents’ Dinner. I think it will go down in history as one of the funniest and most awkward comic coup d’etats ever committed.

At first, you think Colbert is just going to play the Bush sycophant he always does on the Colbert Report. But then he just takes a step farther and mocks all mainstream journalists there, and the President himself, right to his face. Really amazing stuff, you can’t dream up better situations!

Take a look:

<a href=http://www.youtube.com/watch?v=lcIRXur61II”>part 1, part2, part 3.

The Flight of Computer Science majors

I read this response to an article at eWeek on Bill Gates’ views about Computer Science research, graduates, spending, and company strategies.

I think it’s pretty clear that despite the disagreements I have with Mr. Gates over a subject known as “business ethics” (if such a subject truly exists!), he does seem to be a genuinely patriotic guy who loves technology. I mean, what good is it for more Americans to get into CS, if other countries are diving in and filling whatever knowledge gap may exist? Can’t Bill just hire those workers, and what’s more, for less money per hour?

Well, I think Mr. Gates really wants innovation in computer software to remain “America’s Great Industry.”

I was very intrigued by this response to the article:

Everyone knows that Open Source is taking over the software development industry. And according to the Open Source philosophy; developers should be enslaved, source code should be free. No, no, that’s not politically correct, let me try again. Developers should give their work away because code needs to be free (as in speech) and the needs of the code is more important than the needs of the people who create it. Well, that doesn’t sound quite right either but in any case, it doesn’t really matter to me because my kids won’t be studying computer science.

This is a very interesting post. True, it will be seen as a troll by some, since open source philosophy definitely doesn’t say anything about programmer enslavement. But his point is real and felt in the industry. That is, if you aren’t selling software, how are software developers to make money from it?

I think the response to this was best-articulated by Eric Raymond, when he pointed out that of programmers, only about 1-2% make their cash from off-the-shelf software sales. Instead, most make their money from “in-house” or “custom” software solutions. In other words, the majority of developers aren’t working on the Adobe Photoshop team, they’re working on Acme Inc.’s payroll or issue tracking system.

I kind of love this sort of propaganda, though. Because it is all good news for me.

When I first decided to do CS, I considered the possible effect of outsourcing and other factors on my employment possibilities. I thought, what if there are no jobs when I get out of college? But I stuck with it.

Well, it turns out, everyone had a hunch similar to mine, but they were more wooed by it than I was. So everyone fled CS. And now I’m the only one left. (An exaggeration, but you get what I mean — my computer science classes are nearly empty, whereas they were packed during registration only a few years ago).

It turns out, firms are hiring more than ever before. Why? Because the dotcom bubble is over, and green-eyed imposters are getting flushed out of the industry. But the demand is still there. Software is pervasive. Everyone needs software development done. There simply isn’t anything under the sun that can’t benefit from a little software developer finesse.

You can’t have all this work done in India and China because, it turns out, people want software developers to work with customers (big surprise). They want applications which meet their sensibilities, and they want them changes when the environment changes.

I liked that Mr. Gates said the #1 thing he’s looking for is project management IT types. Funny, it’s the #1 thing I’m looking for, too. Software developers are a dime a dozen. Find me a software developer who doesn’t get nervous when you ask him a tough question, or ask him to write, in plain English, a high-level overview of the system you’re asking him to create, and you’ve got yourself someone who’s valuable.

Server outage

My server went down yesterday for a day, due to a switch to a new colocation facility. For anyone else on my server, I apologize for the downage. I wasn’t told the switch would be happening with ample lead time, and so I didn’t have the time to set the refresh/TTL fields in my SOA DNS entries so that the IP switch could be seamless.

(Wow, that’s a lot of acronyms. Computers…)

Changing the tools you use

Mark Shuttleworth has written a nice little blog post about the tools we learn through life and how we discard old tools and learn new ones.

I personally find this to be very true in my life.

When I was in high school, I prided myself (from the point of view of “tools”) as knowing graphic design (Photoshop/Illustrator), web development, and print/page layout. Handy tools to know for (1) making money and (2) working on a high school newspaper. The only real programming languages I knew back then were Actionscript (for Flash), JavaScript, and (eegads) Perl. Then I got to college and armed myself with algorithms, data structures, and systems, and started picking up Java and C on my own. Now I consider myself well-versed in those, and this past summer learned Python and used that on a lot of different projects. Then this semester I got interested in C++ and used that a lot. Nowadays, when I look at problems, I look at them in terms of my tools. Text parsing problem? Wow, Python’s re (regular expressions) module could handle that pretty easily. Big engineering project? Wow, using templates and OO features in C++ may lead to a nice design. Database-driven web application? Well, Java/JSP may fit you nicely. (I know, I know, what am I doing not knowing Ruby on Rails!)

I think Mark’s onto something. Changing toolsets often is definitely useful. Even though I couldn’t write full programs for you in Perl nowadays, what I do know about it (its limitations, capabilities) is definitely good enough to see when it may be the best choice for the job.

As for academic tools — very true. A lot of techniques I learned in e.g. Discrete Math, Linear Algebra were in one ear and out the other. Alas, I think the main point is to learn them once and then be able to Wikipedia them later, when needed 😉

That said, stuff I learned in my algorithms and data structures and operating systems courses have stayed with me. I think some of that stuff is just essential.

Sarchasm

So I read this post on /. about Nintendo Revolution’s new controller design. Not that I really care about this kind of stuff (I don’t even play console games), but this post caught my eye.

Look, you have to understand. If you want to be a “Halo Killer” (and every single game is a halo killer, these days! Don’t bother judging the game on its own merits. The only question is, does it kill Halo?), you have to match the control scheme that made Halo popular. And that control scheme is: A clumsy replication of PC FPS controls shoehorned into a Dual Shock II workalike format.

After all, everyone knows that what made Halo popular was the radical and unnatural retraining that is required when you take a control scheme that was designed and perfected for a mouse and keyboard, and just jam it unceremoniously underneath two thumb-controlled joysticks and a maze of randomly positioned multicolored buttons. Unless Nintendo can replicate that kind of hand-eye coordination dissonance, they’ll never get anywhere with their Halo killing, I mean console, business. My suggestion: They should duct-tape a cinderblock to the Revolution remote. Then everyone will just eat it right up!

Someone then dumbwittedly replied,

why the hell would retraining yourself to a new control system make a game more popular? people get way too worked up about controllers and how much they think they suck at console FPSes. Trust me, I play enough Counterstrike to count myself as a PC gamer, and I have little-to-no problems dealing with a gamepad. You adapt and you do fine.

He just doesn’t get it. But what I loved is that someone then pointed out this being a classic example of sarchasm. That is, a coined word to mean “the gulf between the author of sarcastic wit and the person who doesn’t get it.” I think I’ll use that in the future.

Danish Cartoon Follow-Up

I was going to do a follow-up post on the Danish cartoon situation, but didn’t get to it yet. Instead, I replied to roman’s post on the subject, and realized it was the length of a post on this site anyway. He asked:

did maheen ever give you a reply?

i know that their protest went ahead anyway, and i heard she started tearing when she addressed the faithful assembled in front of her.

i also heard, admittedly from one of the islamic center kids, that the way the objectivist club went about discussing their cartoons was pretty racist…

but i’d be interested to know how she replied.

To answer his question, no, Maheen never replied to that e-mail. If she does, I’d be glad to post it on my site.

I saw the reporting on the protest, but as you probably know, the Objectivist club was also asked to not display the cartoons by the administration. They displayed blank panels instead, and so from what I heard a lot of the discussion of free speech issues got drowned out by the anger over the administration’s blanket censorship. Unfortunately, the administration has every right to censor an event held on its campus, it being a private university, so there isn’t much to say there.

If they did discuss the cartoons in a racist way, then shame on them. From WSN, I heard that the basic gist was that a couple of the Ayn Randian intellectuals claimed that all religions are basically bogus, and that they ascribe to the only true religion, which they called “rationality”, or somesuch. Of course, this is utter tripe that you can feed to the dogs — “Objectivism” hardly even attempts to answer the existential questions that religions address, so that any form of atheism arising from it is hardly stronger than any fundamentally faith-based belief system.

My main issue in that e-mail and over this situation in general is a principle. The basic principle is that you can’t just claim that you have a right to see something censored because it offends your religion. I think that the freedom of information flow — no matter what kind of information that is — definitely trumps maintaining tolerance for religious sensibilities. If someone publishes things that can be taken as offensive by Christians, Muslims, Buddhists or Hindus, I don’t want the precedent set that we, as a society, will simply remove that text from our literature. It’s true that here, with the cartoons, we have something that is very clearly anti-Islam and racist, but where do we stop in the protection we grant to speech we don’t like? What if the next time, it is a cartoon portraying Jesus as blinding his followers, or an evolutionary analysis of religion? We have to protect the speech we don’t like, so that the canon of “acceptable things to publish” doesn’t shrink everyday.

Calculus Made Easy

I am taking “remedial” Calculus II alongside Numerical Computing this semester. My Calc course is “remedial” in that I haven’t seen any Math over the reals for about 4 years (took Discrete Math and Linear Algebra, which both focus on integers) and this semester I am overloading on real numbers (and even complex numbers) just when I had forgotten they even existed 🙂

That said, after spending some time in the humanities (where writing quality is high) and much time in Computer Science (where literacy is defined as being able to read code), coming back to traditional math textbooks has been quite a culture shock. They are so horribly written, it really blows my mind.

So, in response to my horrible Calculus II textbook (published at NYU only for NYU classes, this book features minimal explanation and the maximum amount of notation), I have been using it only for the homework problems and using instead James Stewart’s excellent book, Calculus: Early Transcendentals for rigorous proofs of concepts (because Stewart really does present them nicely), and the lighter but infinitely more illuminating Calculus Made Easy, by Silvanus Thompson.

A somewhat controversial book, Calculus Made Easy chooses to skip the notation-laden explanations of Calculus concepts provided by typical textbooks, and opts instead of a clear, textual elucidation of core concepts in the context of their applications. The philosophy of the book is well-described by this excerpt from the Epilogue.

I think this is wonderful writing, however damning it may be:

It may be confidently assumed that when this tractate Calculus Made Easy falls into the hands of the professional mathematicians, they will (if not too lazy) rise up as one man, and damn it as being a thoroughly bad book. Of that there can be, from their point of view, no possible manner of doubt whatever. It commits several most grievous and deplorable errors.

First, it shows how ridiculously easy most of the operations of the calculus really are.

Secondly, it gives away so many trade secrets. By showing you that what one fool can do, other fools can do also, it lets you see that these mathematical swells, who pride themselves on having mastered such an awfully difficult subject as the calculus, have no such great reason to be puffed up. They like you to think how terribly difficult it is, and don’t want that superstition to be rudely dissipated.

Thirdly, among the dreadful things they will say about “So Easy” is this: that there is an utter failure on the part of the author to demonstrate with rigid and satisfactory completeness the validity of sundry methods which he has presented in simple fashion, and has even dared to use in solving problems! But why should he not? You don’t forbid the use of a watch to every person who does not know how to make one? You don’t object to the musician playing on a violin that he has not himself constructed. You don’t teach the rules of syntax to children until they have already become fluent in the use of speech. It would be equally absurd to require general rigid demonstrations to be expounded to beginners of the calculus.

One thing will the professed mathematicians say about this thoroughly bad and vicious book: that the reason why it is so easy is because the author has left out all the things that are really difficult. And the ghastly fact about this accusation is that — it is true! That is, indeed, why the book has been written — written for the legion of innocents who have hitherto been deterred from acquiring elements of the calculus by the stupid way in which its teaching is almost always presented.

I should note that my Calculus professor is actually quite good, and provides very nice explanations of complex topics, usually beginning with an elucidation of the general idea, and then going on to the formalities. But our assigned textbook is not nearly as clear, and many professors I’ve had in the past have lived entirely inside their constructed notational apparatus.

This reminds me of an old joke I heard awhile back:

A math professor begins his lecture by writing on the blackboard. He only pauses for brief moments of notational explanation, but continues writing and writing, one symbol after the other, for thirty minutes on end. He fills up six blackboards full of derivation, algebraic manipulation, and what have you. At the end, he smiles and draws the open box, indicating the completion of the proof. “Is that clear?” the professor asks. Blank stares all around.

At that point, the professor stops himself. “Oh, no, I believe I’ve made a mistake.” He then looks at the six boards of writing, and begins pointing at certain sections while nodding his head, clearly doing calculations internally. He then paces back and forth across the front of the classroom, with his head bent down and his fist to his chin. For five full minutes, he paces and nods, thinking about the proof just presented.

Then he stops pacing, looks at the students, and says, “Ah, yes, yes. It’s clear.”

Here’s an interesting read, by the way. Came as especially relevant to me, as I “rediscover” math for math’s sake.

Using C++ instead of GObject/C

There’s a great post on why to use C++ instead of GObject/C over at BMP CodeBlog, the blog for developers of beep media player (my preferred MP3 player on Linux). I have to agree with most of what the author says. Using GObject/C is quite cumbersome, I’m almost surprised so many GTK+ developers do it. Especially considering the fact that C++ doesn’t incur overhead unless it has to, nicely expressed here:

The ultimate feature is that all of these are optional. We incur no overhead when we do not use a language feature (with the exception of… exceptions). In fact, cxx_conversion is currently in perfectly valid C++ and uses none of the features or C++ libraries mentioned above yet. The C++ language follows the philosophy of ‘pay for you use’ (better rephrased as ‘don’t pay for what you don’t use’). As it is right now, cxx_conversion is no less (or more) CPU or memory efficient than its C original.

GTKMM keeps getting more and more mature, so now that I’m finally learning C++ properly, I think moving over to GTKMM will be quite nice for a future project that needs a cross-platform UI.