Archive for January, 2007

You Can’t Handle The Truth

1

It starts slow, but if you’ve ever spent time in sales or with sales people, you’ll get a good laugh out of this video. It also answers an age old question that has haunted anyone who’s ever done expenses. via Bill do hOra.

Linking to Scoble

0

I’m linking to Scoble, because come on, he deserves a link or three. Plus, he linked to me the other day.

I think Robert has a point. I’m always tempted to link to NY Times or Wikipedia, but it is worth the extra research to find the originator of the news.

Robert is complaining even though he has a tremendous amount of visibility and mindshare in the blogosphere. What about the little guys? The biggest pleasure is linking to the unknown blogs that have small visibility. I’m a big believer in the Z-list bloggers.

Muhammad Yunus and Grameen Bank, Nobel Prize Acceptance Speech

1

I am entirely blown away by Grameen Bank, a profitable, sustainable bank that lends small amounts of money to the ultra-poor, primarily women, to help them get out of poverty. It’s an amazing concept, carried through to fruition, demonstrating a better way to provide real help. For me it’s also a great testament to the power of capitalism and entrepreneurship.

The founder of Grameen Bank, Muhammad Yunus, received the Nobel Peace Prize in 2006. His acceptance speech is available online. It is well worth a read. (via Sid)

While we’re on the topic, you should also check out Iqbal Quadir’s Ted Talk. Iqbal is a co-founder of GrameenPhone, a mobile phone company that provides loans to the poor to acquire mobile phones, which are in turn used as a business, providing phone service across villages in Bangladesh. The talk is fantastic, digging into the economics of the value created by communication and technology.

Nikon D50: Should I Buy It?

3

I have a Canon Powershot S500 as my small carry-around camera, but I’m thinking of buying a nicer/bigger camera for occasions where size and weight don’t matter. A friend of mine has a Nikon D50 with the standard kit that he’s willing to sell. Digital Photography Review gives it a Highly Recommended, which indicates this is a great camera, but I thought I’d ask for some advice here (I know some of the readers are photography-type people, you know who you are).

This would be my first DSLR. I’m not much of a photographer, but I’ve read a few how-to’s here and there. Most of my shots will still be point and shoot, but I am looking to get better shots and do a bit more experimentation.

What do you think? Should I go for the Nikon D50?

Advanced Computer Audio Feedback, or My Grunting Laptop

2

This is neat. My laptop kicks on the fan everytime the CPU shoots up. The CPU shoots up every time I hit a Web 2.0 (aka Javascript heavy) web site. Right now I’m looking at a map on Google maps. As soon as I drag the map around, the fan kicks in with a noticeable grunt, making it appear as if the laptop is straining under the physical load of moving all those buildings around. I find myself feeling empathy for the poor computer, thinking “just a few more moves and I’ll be done, you can grab yourself some water and take a break”.

This is advanced stuff here, high-touch human-computer interface, conveying emotions and feelings, deepening my bond with this piece of junk laptop here.

Test Post for Technorati

0

This is a test post for technorati. This time I’m putting in a link to my atom feed for auto-discovery; see this.

Technorati Not Picking Up Tags with Wordpress

0

I noticed that I have very little referrer traffic from Technorati for my tags for some time. I’m using Jerome’s plugin, which works quite well, but the tags are not showing up in Technorati. After a little digging it appears the reason is that the Technorati only grabs my default feed which does not contain the tags. If it were to grab my atom feed it would see the tags.

UPDATE: I believe this is fixed. Edit your wp-content/themes/default/header.php, look for a line that looks like the following, if it’s not there, add it (it wasn’t there in mine, not sure why):

<link rel=”alternate” type=”application/atom+xml” title=”<?php bloginfo(’name’); ?> Atom Feed” xhref=”<?php bloginfo(’atom_url’); ?>” />

This “feed auto-discovery”. The link to my atom feed was missing for some reason.

It used to pick up both my feeds, but after a wordpress upgrade it stopped.

Hah! I forgot that I had posted about this back in April. Excellent memory.

So I need to either get Technorati to see my Atom feed, or have my /feed spit out atom instead of rss.

It looks like Technorati bot always hits my html page before hitting the /feed page; perhaps it’s looking for the feed URL on the page. I’m removing the link to the RSS feed to see what happens.

Google Reader Feature Request: Post to Delicious

0

Google and/or lazy web: please add the feature/write a greasemonkey script to allow me to one-button add items I’m reading in google reader to del.icio.us .

World Income and Life Expectancy Visualization

3

Check out this income versus life expectancy graph. Costa Rica and Chile seem to be good value for the money, while Botswana and South Africa are not.

Hollywood, You’re All Heart

0

I shared a cab with 2 Hollywood execs yesterday. Here’s the conversation in the back seat:

Woman: How’s it going with your new baby?

Man: It’s great, but our nanny went back to El Salvador till Tuesday, her mother is sick.

Woman: Oh really. Well, I’ve gotten to know about the El Salvadorian culture through our nanny, and let me tell you, if the mother dies, it’s a big f’ing deal. Our nanny was gone for over 2 weeks!

Hollywood, you’re all heart.

Identicon: Identifiable Icons for Commenters, etc.

1

Don Park has cooked up a very neat idea, the Identicon. It’s an easily identifiable icon automatically created from your IP address, to be used as an identifier next to comments:

identicon

The general concept can be applied to many other scenarios, and there are a stream of ideas such as use for identifying phone numbers and nodes on a network being discussed on Don’s site. My take on was to create a page made up entirely of a quilt of identicons of people who visit that site. You could watch the image change as new people visit. Eye candy. I’m not going to get a chance to put that together anytime soon unfortunately, but maybe somebody else will cook up some eye candy.

I’m also curious if there are other interesting ways to generate the identicons – I was going to look into using the numbers (eg. parts of the IP address) to seed a fractal generator for a tiny fractal.

Automated Ad Generator

0

The Ad Generator creates fake advertisements by remixing corporate slogans with images from flickr with surprisingly interesting results. Via TechCrunch.

Pooya Parand Co?!?!

4

My name is Parand. This is an unusual name. My brother’s name is Pooya. It’s a not-too-common name.

Until a few years ago the only Parand on the net was me. Tonight I found out there’s a Pooya Parand Co. That’s pretty wild. Pooya Parand Co. Pretty low odds of that happening.

Apparently there’s also a Parand software company in Iran that sells a wonderful set of pirated liberated software DVDs. This explains the occasional emails I get inquiring about my “softwares”.

Cringely on Bandwidth Usage

0

Interesting episode of I Cringely where he discusses Google’s plans to become everyone’s phone and cable company, stereo system, and DVR. Thought provoking quote:

… right now somewhat more than half of all Internet bandwidth is being used for BitTorrent traffic, which is mainly video. Yet if you surveyed your neighbors you’d find that few of them are BitTorrent users. Less than 5 percent of all Internet users are presently consuming more than 50 percent of all bandwidth. Broadband ISPs hate these super users and would like to find ways to isolate or otherwise reject them. It’s BitTorrent — not Yahoo or Google — that has been the target of the anti-net neutrality trash talk from telcos and cable companies. But the fact is that rather than being an anomaly, these are simply early adopters and we’ll all soon follow in their footsteps. And when that happens, there won’t be enough bandwidth to support what we want to do from any centralized perspective. A single data center, no matter how large, won’t be enough.

J2EE Rant

4

While cleaning up the old laptop I ran across a series of Java/J2EE rants I’d written a couple of years ago that made me laugh. I must’ve been pretty pissed off when I wrote them, and I ended up never publishing them. They’re a bit dated, and I’m very happy to see that there’s been good progress on the non-J2EE, Python, and Ruby fronts. Here’s an excerpt for my own future amusement…

(The code-in-comments thing I was referencing was XDoclet, if I remember correctly)

Java has gone from an elegant, well thought out language to a twisted, nefarious movement that’s rapidly turning an entire generation of developers into acronym spouting, bloat producing, uninformed zombies.

What’s that saying about not grocery shopping when you’re hungry – there should be a corollary that you shouldn’t blog when you’re pissed off.

I like Java. The language itself is really quite nice and very usable. The various libraries it ships with are finally getting into decent shape. Java is delicious and refreshing.

Java, however, is no longer a programming language. It’s a movement. It encompasses a whole world of patterns, APIs, deployment models, all kinds of wonderful things.

In an imaginary world, far far away and long long ago, it used to be you could reasonably start a design with the simplest possible implementation. Can I write this in 10 lines of code and a couple of flat files? No? Damn. Ok, let me see if I can use a hash or dbm. No? Damn. I guess I’ll need a database. Is this thing going to take more than 10 lines? Damn. What’s the minimum I could write to make this thing work?

Because we were lazy and didn’t like writing code, we’d think of a clever solution that wouldn’t take a lot of lines. Because we were lazy, we never learned all the fancy nasty language specific tricks to make the code tricky; we just wrote the algorithm in basic constructs that an idiot off the street could understand. The intelligent part was the design, the algorithm, not the details of your code.

Then came along Java. Nice. A clean language, saved you from a lot of the headaches of C++, and made you feel better than writing Perl. The future was bright.

Then Java went to hell, flying high on the wings of that Satan known as J2EE. Patterns became popular. We started getting deployment descriptors in some XML dialect that was more complicated than the program we were deploying.

Today your basic hello world program is a couple of hundred lines of code. Today we’re writing 9 files to implement a single EJB. Mind you, the remote interfaces never actually get reused because our API design is a horrible piece of dung to begin with, and it’s hard enough to reuse well designed APIs, but at least our house made of straw is well decorated.

Ahah, you say, but I don’t have to be clever about designing my APIs: I’ve got patterns to follow. I don’t need to think, somebody already figured it out for me. I just have to pick the right pattern. Exactly….

But wait, you say, I have a solution to the 9 files to implement an EJB with lots of repeated code thing: I’ll use a code generator!. And you know what? I’ll do it by putting special code in comments in my Java files. Yes, code in comments. What do you mean? That’s a perfectly sane thing to do. After all, comments are not *really* comments. We’re already putting our documentation in there, so what’s a little bit of code? How’s that? Debugging the generated code? No, why would that be a problem? This is beyond 4GL, we’re like on 17GL. We don’t have bugs.

Now hold on, you say, this is Enterprise Java Beans. Not girly-man kiddie-toy Java Beans, we’re talking Enterprise. This is good solid stuff. Maybe I do have to suffer needlessly, use 3 levels of indirection and code generation instead of actually writing code, and require lots of heavy infrastructure to deploy the app, but at least I get transactions, stability, performance, scale, clustering, plus a few hundred acronyms. I can’t believe you’re still actually considering that ridiculous 10 lines of code and a flat file nonsense. I’m talking JMS baby. We’re Enterprise people here and we don’t play with kids’ toys anymore.

Excellent. Now you deploy your EJBs, and, big surprise, performance is horrendous. Shocking. How could it be? The 19 layers of indirection must make this thing go faster? No? Container managed something or another? I’m positive the next release of the App server or the alternate JDK will fix everything.

Now we go to production and things start breaking. I’ve got stuck threads? Impossible. How could I possibly have deadlock when my contention is managed 3 layers below what I’m actually coding? Must be the third layer of database abstraction. Are the deployment descriptors on that box ok? Where’s my JNDI server? Did you name the queue correctly? Increase the memory allocation; the garbage collector doesn’t kick in under that kind of load.

If you’ve been following our little story here, you’re probably thinking that I’ve gone off the deep end and stopped taking my medication. My friend, that happened long ago.

The reason I’m worked up is that I see unnecessary J2EE over and over, with disastrous results. But the reason I’m really upset is that the people designing these systems are smart, good people, and they’re genuinely convinced they’re right. They truly believe if they simply follow the right set of acronyms, they will arrive at a happy place.

It’s surprising really. We’re supposed to be skeptics. We’re technologists, we question everything. We hate marketing. Yet, as soon as we hit the J2EE marketing machine, we become sheep, too meek to question. It says Enterprise right there in the title. How can that be wrong? Somebody smart says it’s a good thing. I can get a job if I put it on my resume, you fool!

Just look around. Of the J2EE projects you have seen, how many are actually faster, more stable, or easier to maintain than if they had been implemented without J2EE?

My point? I’m sure I’ll make a point sometime, perhaps in the next episode of this rant. But for now, if you’re a Java guy, go learn Python. It won’t take you long. Go write something in it. Appreciate how much can be accomplished with a few strings and a couple of hashes (aka dictionaries). Simplify. Start with the solution that takes the least infrastructure. Forget the acronyms you know. Think in terms of algorithms, not programming languages.

Here’s a thought: the answer to single point of failure is not to create multiple points of failure.

Meanwhile, I’ve got to provision 3 times as many boxes to solve each problem and 19 separate things that could break to render my app useless. God forbid I should actually want audit trails…

You’re a young developer. You can learn J2EE and JMS, stick it on your resume, and pass a job checklist. Or, you can learn state machines, statistical methods, and classification. You can stick those on your resume too, but they won’t get you past a checklist. The recruiter will look at your resume, not see his favourite acronym, and move on.

So let’s see, learn acronyms and get a job, or learn real usable algorithms and techniques and get nothing….

You see the problem. What really gets my goat is that this insidious movement attacks the mind first. It convinces people that they’re doing the right thing, when in reality the simple answer is right there in front of them, if they just learn one or two real concepts instead of acronyms.

James Blunt and No Bravery

0

I had heard No Bravery before, but not quite like this. I happened across James Blunt’s concert on Austin City Limits where he talked about his experience in writing it – namely, his return to Kosovo 6 years after serving there in the army. His live performance was haunting, and 2 days later it’s still all over my head. The amazing thing is that this was written by a guy who was actually there, not a bleeding heart safe back at home. The version from his album is somehow not as intense, but still worth a listen.

Comment Spam Denial of Service?

1

I seem to be under some strange comment-spam denial of service attack. Hits to “/say/wp-comments-post.php” from a wide range of IP addresses, all with the user agent “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)” .

I wonder what the story with this is. I wish I had some time to dig into it, would be fascinating to disect.

Anybody else seeing this?

In the meanwhile, I may turn off comments.

Update: Looks like others have had this problem also. My fix at the moment is to rename the default wordpress comment script (wp-comments-post.php) and edit the template pages so they refer to the renamed version. We’ll see how that goes.

Thoughts On Life, Animated

0

Take a look at Le Grand Content, an animated look at deep thoughts in graphs and circles. Via Chris Sacca.

My 4 Year Old is a Vegeterian

3

My 4 year old (almost 5!) doesn’t eat much meat. A bit surprising since as a family we’re fairly pro-meat.

The other day he turns to me, apropos nothing, and asks:

“Does meat come from cows and sheep?”

I told him that it does.

“Isn’t it kind of mean to kill them and eat them?”

Hmmm. Where did that come from? His questions continue to amaze me.

Jian in the snow (Mt. Pinos)