Incremental Progress

By Krishna, June 30, 2009

If you have a dream about achieving something, one of the biggest illusions you can have is to wait for the right circumstances to open up so that you can start working on your dream. This includes stuff like:

  • I will do it when I find the time.
  • I will do it when I don’t have any other responsibilities.
  • I will do it when the stars are aligned.
  • … etc.

The problem is that you will never find an opportune time. There will always be work to do, bills to pay, responsibilities to attend to, family members to take care of and a million other things. As you keep waiting, days go by. And the days turn into weeks, weeks into months and suddenly years fly by and there is a different face in the mirror.

Instead, try to make some progress every day. If you are writing a program in your spare time, try to complete something on a daily basis. Maybe it could be a simple screen, or it could be a database method. Or it could be refactoring or a test case. Or checking if the labels are aligned or have the right spelling. Every bit you do counts towards the final goal.

Second, realize that nothing comes without sacrifice. If you want to lead the exact same life that you had previously, the new venture will not fit in. If you still continue to sleep 9 hours, keep the TV on all the time and spend the rest of the time partying and enjoying life, don’t be surprised if there is no progress. You will have to give up activities to achieve your greater goals. In some cases, you may have to give up some of your friends. In simple terms, there is no free lunch.

Last, the present trajectory of your life is determined by factors such as your job, and your family. And if you have a different dream, that, by definition, has a different trajectory. The point is, how much effort are you spending on each path? And are the efforts on the first path taking you closer to or farther from the second one?

Software Development Blogs

By Krishna, June 29, 2009

Jurgen Appelo has the latest edition of the top developer blogs up. Surprisingly, I have jumped from 149 to 127 despite having a couple of months where I hardly wrote anything at all, and also after a move to WordPress that seems to have dropped my RSS subscribers by half.

I have been noticing the reduced frequency of many bloggers that I follow. Perhaps the pervasive use of Twitter has contributed to this, because what used to be a post is now a Twit. This is perhaps a good thing as it raises the quality of the average blog post. But at the same time, it moves the attention of the blogger away from writing longer posts, the cycle feeds on itself and the frequency keeps going down.

Writing, like other creative activities, requires momentum. You cannot just turn it on and off. The more you write, the more you are inclined to write. If you stop for sometime, it is harder to restart the process. They talk about writer’s block. It is much more difficult when you haven’t written anything for a while.

Another problem is that when you have a gap, there is an added pressure of producing something of higher value than usual. Perhaps like an actor who took a break and wants to pick a movie that is sure to become a hit. This means further delay as the selection process continues ad infinitum. On the other hand, if one is writing frequently, there will be good ones and bad ones, and you are generally more concerned with the process than the outcomes.

One aspect specific to writing about software development is that after a while of writing, you get a sense of déjà vu, as you go over the same ground and topics. Sometimes, it also seems that you are beating the same point to death. Part of keeping it interesting is to be able to keep a broader mind and keep looking at new developments and ideas.

Obviously, software development is a highly innovative field, but a lot of the innovation is in the tools such as languages and frameworks. The overall process of managing software development doesn’t change so quickly. And it shouldn’t, really, because it would mean an unstable working environment with the managers trying the latest management fad. That partly contributes to some of the repetitive themes in blogs.

And of course, life happens. Writing a blog is generally a labor of love for most people who are not paid to do it and don’t have ads (like this one). And you do it juggling time between work and family, snatching a few extra minutes at the start or end of the day or during a weekend. Sometimes, there is not enough to juggle.

How Communism Broke People

By Krishna, June 29, 2009

via Shafeen, here is an article originally published in 1982 about a trip to the erstwhile Soviet Union by Edward Crane of the Cato Institute.

But if it is hard to describe the economic wasteland of Russia to someone who hasn’t been there, it is even harder to describe what their totalitarian system has done to the human spirit of 260 million people. It isn’t just the drabness and grayness one sees everywhere. Or the rudeness and surliness one encounters so often. It’s that you virtually never see people laughing, smiling or just seeming to enjoy themselves. People seem to walk slightly bent over, their eyes always averting a stranger. There is an overwhelming sense of oppression and depression. It is no wonder that alcoholism is a major problem in the Soviet Union.
When we occasionally had opportunities to talk to people in parks or on the street, there was a phrase that kept recurring. We’d ask them if they had ever been outside the USSR, if they would ever own a car, if they could switch jobs if they wanted. The answer, with a shrug of the shoulders, was often an emotionless “It’s impossible.” Whereas in our society one frequently encounters a sense of outrage at injustice or a determination to achieve a goal against all odds, in the Soviet Union one just shrugs. It’s impossible.

But if it is hard to describe the economic wasteland of Russia to someone who hasn’t been there, it is even harder to describe what their totalitarian system has done to the human spirit of 260 million people. It isn’t just the drabness and grayness one sees everywhere. Or the rudeness and surliness one encounters so often. It’s that you virtually never see people laughing, smiling or just seeming to enjoy themselves. People seem to walk slightly bent over, their eyes always averting a stranger. There is an overwhelming sense of oppression and depression. It is no wonder that alcoholism is a major problem in the Soviet Union.

When we occasionally had opportunities to talk to people in parks or on the street, there was a phrase that kept recurring. We’d ask them if they had ever been outside the USSR, if they would ever own a car, if they could switch jobs if they wanted. The answer, with a shrug of the shoulders, was often an emotionless “It’s impossible.” Whereas in our society one frequently encounters a sense of outrage at injustice or a determination to achieve a goal against all odds, in the Soviet Union one just shrugs. It’s impossible.

I am just old enough to remember the 1980’s and the fall of the Communist regimes in Eastern Europe. Even in those days, there was talk about World World III and it was surprising to outsiders how quickly the regimes crumbled under popular unrest. Crane’s article shows how broken the citizens of those nations were and how false the facade of strength was. He was prescient in suggesting that peace, not war, would destroy the USSR because their leaders could not hide the reality behind excuses of foreign interference.

It is worthwhile to remember the horrors of Communism if only because it shows the truth of the old adage, “The road to hell is paved with good intentions“. Communism started with the assumption that it is possible for a central entity to distribute resources that would eliminate poverty, but it soon disintegrated into a totalitarian society that turned on its own people.

I don’t mean to draw any moral equivalences, but it is amazing how common the Communist mentality is, not just in government, but also in business which are supposed to be capitalistic. Big Business stifles innovation and creativity and demands conformance to outdated “standards” and rule books. Openness and transparency are dirty words in many corporations who thrive on double-speak and false marketing.

The rise of Web 2.0 and applications like Facebook and Twitter (especially with regard to what is happening today in Iran) teach us that voices cannot be silenced. People want to be heard and listened to. They want a stake in what is happening. Businesses that fail to listen to their employees and customers do so at the peril of their existence.

Natural Things To Do

By Krishna, June 22, 2009

I am an advocate of programmers starting their own blogs so that they can share their thoughts on programming and software development. But this is not necessarily a natural thing to do because writing is different from programming. The natural thing for a programmer to do is to write programs (duh!). So when you interview a programmer, a good judgment of whether they are good programmers is to ask them what kind of programming they do outside work. Do they have a hobby project they are working on? Are they contributing to some group project (open source or otherwise) online? If they also have a blog, that is a plus because it shows a passion for communicating with others, but it cannot be a filter.

On the other hand, when somebody is paid a salary for writing, i.e., they produce documentation or do some sort of technical writing, it just feels wrong when they do not have a blog or other outlet for writing. A person who likes writing will do it even if they are not being paid, because they have the need to put words to paper or the screen. So the equivalent interview question for such a person would be, what kind of writing do you do outside work? It doesn’t have to be technical stuff. Maybe they are writing a poem or a children’s story. But whatever it is, it demonstrates how much they love writing.

Similarly, a graphics designer without a personal website seems like an oxymoron. Does the person do the work only if they are paid to do it? Are they not interested in exploring design layouts, HTML, CSS and all the interesting stuff in the graphics world? Also importantly, how confident are they in showing the world what they have got in design skills?

So there you have it: The single most important question you can ask in an interview is about the natural thing for a professional to do outside their working hours? If they don’t have anything remotely connected to their profession, it is an indication that they don’t value the profession so much.

Obviously, there are exceptions. If a person is working in a sweatshop and only going home to sleep, or they don’t have the resources or are forbidden by law to tinker outside the workplace, that is fine. But in the normal course of events, you would always want to look at people who maintain their interest and use their time outside work.

WordPress Move

By Krishna, June 17, 2009

I changed my hosting from Blogger to a hosted instance of WordPress. I hope this does not result in a deluge of posts to your blog reader (Google Reader does that sometimes). Thanks for continuing to read my blog. If you are not yet subscribed, you can subscribe using a blog reader at http://feeds2.feedburner.com/thoughtclusters or through email at http://feedburner.google.com/fb/a/mailverify?uri=thoughtclusters.

There were a couple of reasons for the move to WordPress:

  1. I recently bought some space on MediaTemple, which allows you 1000 GPU (Grid Performance Units) per month. That is a lot of horsepower even if you are getting thousands of pageviews per day. All for $20 per month, which also includes PHP, mySQL, a great control panel and other goodies.
  2. Once you start playing with WordPress themes and plugins, Blogger seems like a toy project compared to WordPress. There simply isn’t any comparison. I had written a post comparing Blogger and WordPress.com which may have given the impression that there is nothing much to choose between them. Perhaps it is still true about Wordpress.com, but a hosted WordPress instance is incomparable in power.

I changed the look to the Journalist theme from Lucian E Marin. Simple black-and-white design. Other themes I liked before I finalized on Journalist were iNove, Carrington and Vigilance.

The move from Blogger to WordPress was painless for the most part. Here are the things I did:

  1. Changing the domain name settings. Google uses eNom for domain names hosted on Blogger. It ties that into Google Apps. So you cannot just point the eNom settings to the DNS servers of MediaTemple unless you want to also ditch the other Google Services. I guess I could move the domain registrar to MediaTemple, but I was not ready to do that yet. So the configuration is to add an A record for “www”. This may be a problem if the IP changes. So it is a short-term fix.
  2. The other problem is that when you install Wordpress and then navigate to the login page, it shows you the admin password and then asks you to login. This is a problem for an existing blog which is being visited by people. One way to get around this is that before you change the domain registrar settings, change the Network Settings in Windows to use the DNS servers of the WordPress host. This will enable you to set up the blog and change the administrative login.
  3. Getting WordPress to import Blogger posts and comments is a breeze. All you have to do is provide your Google login, click a few buttons and just sit back. One important thing is to make sure that you have set up the users corresponding to the Blogger authors so that you can map them correctly.
  4. I learnt that the pictures do not get imported automatically into the WordPress media library. I suppose there may be some tool that does that. If not, I would have to manually upload them and edit the posts to use the images. That is going to be some work.
  5. Blogger Gadgets do not get imported. So you have to set up Google Analytics, Google Webmasters, Creative Commons license, etc. manually. It is not difficult, just another thing to take care of.

Should you move to WordPress? Definitely yes. If you cannot move to a hosted installation, get a domain name and move to Wordpress.com. One day, you can make the transition to a hosted site. I did this after 3 years. So can you!

Entrepreneurs Today

By Krishna, June 4, 2009

Matt at 37 Signals writes:

The term entrepreneur feels outdated. It’s associated with people who work brutal hours, invest their life savings, and risk it all on a dream.

But these days, you can do a ton with just a little. You can build a business by working just a few hours a week. You can keep your day job and start something on the side. Software and technology that used to cost a ton is now free (or very cheap). You can easily work from home and/or with people thousands of miles away.

In this new landscape, people who would never think to call themselves “entrepreneurs” are out there starting businesses, selling products, and turning profits. [...]

These people are thriving without risking it all or leveraging their lives. They’re succeeding without MBAs, business plans, and all those other credentials you’re supposed to have before starting a business. You just don’t need that stuff to build something great anymore.

The point is that you no longer have an excuse anymore for doing nothing. You cannot complain that life didn’t turn out to be great because you didn’t have money, resources or time. As Matt explains, you need just a little. So the biggest obstacle to achieving your dreams is you. How much priority have you given to chasing your dreams?

Those who complain are never serious to begin with. They need a scapegoat for their lack of achievements. And they point to whatever or whoever is available: their jobs, employers, family, friends, education and so on. But the real culprit is plain old laziness and lack of passion. This doesn’t mean that you are going to make a million dollars tomorrow by pursuing your dreams. You may very well do that, but maybe not – it depends on many factors beyond your control.

But the question is, are you trying? And are you spending some fraction of your time thinking about and contributing to your dream?

Meaningless Definitions

By Krishna, June 4, 2009

OK, take one guess as to what this could be:

_______ is a design philosophy that leverages existing investments in the creation of flexible solutions that are more responsive to your business needs.

Apparently, this is Microsoft’s definition of SOA (Service-Oriented Architecture).

Does any technology market itself as saying that you need to ditch your current infrastructure and create rigid solutions that do not respond to business needs? If not, can the marketing folks at Microsoft start talking like human beings?

The vi Paradigm

By Krishna, June 3, 2009

While eating, I sometimes use Google Reader. While a book would do as well, each blog entry is only a few paragraphs long and you don’t have to quit in between. Google Reader handles the eating situation well because you can handle most of the actions using a single finger. “j” is Next, “m” is Toggle Read, “g” & “a” means Read All Items, “s” is Star (to read later) and so on.

Reader also has a feature to email a story you like to someone else. You press “e” and you get a few fields to type in the name of your friend and a note explaining what it is all about. Once you get those email fields, the keys I was talking about (‘j’, ‘m’, ‘g’, etc.) stop performing actions, so that you can use them to type email addresses and words. Once you send the email, those keys revert back to action keys.

I was reminded of the old Unix text editing program “vi” which has a similar way of operation. It has two modes called “Normal” and “Insert” modes. When you launch “vi”, unlike a text editor like Notepad, it does not allow you to start typing text. It launches in the “Normal” mode where all the keys have a special meaning. To start typing, you have to get yourself into “Insert” mode by pressing “i” (insert), “a” (append) or “r” (replace).

Once you are in Insert mode, you can keep typing until you are done. To get back to the Normal mode, you press ESC. Then in Normal mode, you can quit the program by pressing “ZZ” or some combination involving !q to save or cancel. Now, you might wonder why in the world would you want a Normal mode, when you are doing all your editing in the Insert mode?

Well, the thing is that the Normal mode has a host of very convenient editing functions. You can easily search and replace text. You can delete words and lines. If your job is copyediting, you will find yourself working most of the time in Normal mode. The downside is that you have to remember several different key combinations to be proficient in using “vi”. With the advent of modern text editors where you can perform many edit actions using mouse operations, the dual-mode behavior is less user-friendly, even though many Unix lovers still swear by it.

But in Google Reader, which is not a text editor, that behavior is very useful. You want to use the normal keys (instead of combining them with Alt, Ctrl or Shift) so that you can use a single finger for various actions. And when necessary, you can go into an editing mode for rare text-heavy operations. Nice!

360-Degree Translation and More

By Krishna, June 2, 2009

It was fun reading Philipp Lensen’s list of classic movie quotes translated to Japanese and back using Google Translate. This is an example of the most important test for validating the export function in your application, which is to write an import function (and vice versa). So if you are exporting data in a specific format, your test should be to import the output file and spit it out again. If the final version matches the first, you can be reasonably confident in your functions.

Binny suggests that learning English spelling is a useless skill (!) and he is “really mad at the genius who invented it”. As it happens, I was listening to a lecture “Story of Human Language” by John McWhorter. He sheds some light on this by explaining that language is dynamic and the meanings and sounds of words change. So take a word like “foot”: Over time, people contract the vowel and start pronouncing it “fu̇t”. That is how accents, dialects and new languages are formed. Not that it makes any easier, but now you know.

Jeff Atwood has a new non-apology after yet another disastrous encounter with the P=NP problem. I can think of so many great things Atwood can write about based on his experiences with the successful programmer heaven StackOverflow.com, but he continues his flirtation with writing aggressively about things he has a rudimentary understanding of. Over the months, we have had the following rationales from him:

  1. He is a proponent of the “Smackdown” Learning Model, i.e., using a confrontational style of communication when expressing a viewpoint.
  2. He has 50,000 page views a day and 75,000 RSS subscribers (now more like 125,000 subscribers).
  3. In the same post, he says that he has “strong opinions, weakly held”.
  4. He is only writing stuff to get people to “just think about it”.
  5. In fact, you are reading the world’s most dangerous blog and you should “think for yourself”.
  6. And today, if you don’t like him, just ignore him. (Don’t go polluting his comments section!)

I am a huge fan of Coding Horror because the links that Jeff puts up and the comments (which include corrections) are great resources for further reading and research. So, this is not a big deal at all. But the pattern of excuses is hilarious and is a good public example of how many arguments you can find to justify a behavior that is increasingly concerning to other people and how difficult it is to simply stop doing it.

Bing Search Engine in Action

By Krishna, June 1, 2009

bing

Microsoft’s new search engine Bing is out. At first glance, it looks better visually than Microsoft’s previous attempt, live.com. The organization of results with easy access to search history, related searches and businesses is well done. I also like the infinite results in Images Search (which live.com also had) and the super-clear (even if slow) Bird’s Eye view in the Maps section. Search seems to be working okay for most items. I faced one issue when it brought up “Derry, NH” as the first result when I searched for my present hometown “Londonderry, NH”.

This is a good attempt by Microsoft, but I am not sure how much market share it can pull from Google at this late juncture in the search game. I know the money is all in the ads part, but Google has created a massive ecosystem with many products that complement its search engine. To name a few, Google Custom Search, Google Webmasters, Google Analytics, FeedBurner, etc. are products that have brought in web developers all over the world into embracing Google search.

Microsoft, to some extent, faces a chicken-and-egg problem. For web developers to take its search engine seriously, it has to show more people using it and clicking through to websites. At that point, developers will start to work about their pages ranking high on Bing and they will clamor for tools. This self-reinforcing cycle will build up the momentum. But at this point, Microsoft search has few users and people are not very bothered with search results on live.com.

Several months ago, when my company was spending money on Google, Yahoo and Microsoft ads, we found that there was little click-through on Microsoft ads. In addition, both as an absolute value and as a proportion of visitors, Microsoft search was way below Google and Yahoo! I noticed the same pattern on my blogs for organic search. Both my blogs have only 0.5% traffic from live.com, while Google has between 80% to 95% of the traffic on any given day.

In general, if you are a web developer, keep monitoring the traffic coming from Bing and until you start seeing an appreciable quantity, you can safely ignore with respect to your development activities.

Themocracy WordPress Themes