LinkLog: Components 101

Components 101

Not all components are created equal. Whether you’re shopping for existing components or creating your own, there are five characteristics that all good components share.

  1. Sound interaction design
  2. Clean code
  3. Ready to use
  4. Easy to configure
  5. Well documented

What made VB popular in 90s was the availability of rich interactive components for the desktop. We need a good standard for Web UI components and jQuery seems to be the current popular framework.

LinkLog: Meaningful Innovation: Whether to Design or Evolve?

Many of the interesting challenges in computer science, nanotechnology, and synthetic biology entail the construction of complex systems. As these systems transcend human comprehension, will we continue to design them or will we increasingly evolve them? As we design for evolvability, the locus of learning shifts from the artifacts themselves to the process that created them. There is no mathematical shortcut for the decomposition of a neural network or genetic program, no way to “reverse evolve” with the ease that we can reverse engineer the artifacts of purposeful design. The beauty of compounding iterative algorithms (evolution, fractals, organic growth, art) derives from their irreducibility.

Steve covers a wide range of topics (this list from the titles of some of his slides):

Exponential growth of Tech Innovation
Accelerating change
Black Swan Events
Building Complex Systems – Top-Down vs Bottom-up
Innovation Management
– Diversity vs Ability
– Disagreement vs Consensus
– Voting Policy vs Coherence or Comprehensibility
– Communication Tuning vs Leadership

I think it is one of those talks I will watch a few times and think about a lot.

LinkLog: I Like To Write Code

Here’s the thing. I like to write code.

I like to write code that most people take for granted. I like to write code to solve hard problems. I like to write simple programs. I like to solve the programming assignments that I set before my students. I like to discover problems to solve and then solve them with code. Sometimes, I like to make up problems just so I can write code to solve them.

I wish every teacher who teaches programming thought this way. I know several successful teams where the team lead shared this passion to code. I used to do this in my first two companies. Then somewhere along the line, I decided to stop coding. I still regret getting out of touch with serious programming.  Now that I am doing more teaching, I  need to get back to writing code. It is one of the most invigorating experiences, I can think of.

LinkLog: The Benefits of a Classical Education

Even when your own needs have been met you can work for the betterment of others has helped me to understand that being a successful businessman can be a powerful way to contribute to society. In building a business, it’s important to remember that you aren’t just acquiring wealth for yourself, but creating value for your employees, your customers, and others whom you may never even meet. 

It is always a pleasure to read Tim and listen to his talks in conferences. He is unique among his peers. His insights are always refreshing. He constantly  tells people to “work on stuff that matters” and runs his business with the motto  “Create more value than you capture.”

Programming: Just a means to an end?

Our youth is easily influenced. Let’s remind ourselves that programming, no matter what construct you use, is just a means to an end. More often than not the code needs to get the job done and doesn’t need stupid tag lines and catch phrases like “enterprise” and “encapsulation”.

Once in a while, you read a post, sit back and laugh till your stomach hurts and tears start streaming down your eyes. It may be the style of the author or it may be the content of the post. This is one of those gems. I am glad that I find them once in a while.

Once in a while you watch an expert at work. I watched Sid code a small app in Django today. It was like watching some super performer. He was talking aloud for my benefit on how to design tests, how to keep refining the code. Once in a while, he would say “that works, but the code looks ugly” and would fix it instantly. I sat with him for more than three hours watching the little app take shape, right in front of my eyes.

I learned a lot today. I think I learned not only how simple experts make things look. I learned a lot about fluency. I wish I had spent time sitting next to some of the super programmer friends of mine, watching them work.

Overall it is a good day. I wish I had many like this.

Recommender Documentation – Apache Mahout – Apache Software Foundation

A Mahout-based collaborative filtering engine takes users’ preferences for items (“tastes”) and returns estimated preferences for other items. For example, a site that sells books or CDs could easily use Mahout to figure out, from past purchase data, which CDs a customer might be interested in listening to.

Mahout provides a rich set of components from which you can construct a customized recommender system from a selection of algorithms. Mahout is designed to be enterprise-ready; it’s designed for performance, scalability and flexibility.

Assessing the Coming Impact of Cloud Computing on Outsourced Solutions

Cognizant believes the evolution of cloud solutions will take two distinct steps. The first will be a better, faster, cheaper way of delivering current IT solutions. An example today is Google Apps with corporate e-mail platforms. The second step, says Coburn, will come “when we can do new things with the cloud model at a business level. This will occur when organizations use social computing on the cloud in a business context, enabling particular platforms of collaboration around specific business problems.” Another way it will evolve is the varied adoption for public clouds versus private clouds.

Read the original article and look at different opinions of the cloud. I was doing some loud thinking about “How Will Cloud Computing Impact Software Industry” here

People, Topics, Questions – Intersection of Interest Graph and Social Graph

Quora represents a bigger technology trend, which is the layering of an interest graph on top of people’s social graph. On Quora, you can follow not only people, but topics and questions. It defines the world by your interests, not just the people you may know or admire. This is a powerful concept and is not limited to Quora (both Twitter and Facebook also want to own the interest graph), but Quora is designed from the ground up to expose and help you explore your interests. It is addictive, and as it reaches a critical mass of early users, this will be the year it emerges from its shell

I have been using Quora a lot in the past couple of weeks, following interesting people, topics, questions

Sharing Information and Knowledge

There are many ways to share information. Some of them may take just a few minutes. You can choose to spend as little or as much time as you want.

1. Tweets – less than a minute

2. Facebook Posts – A couple of minutes

3. Mini-posts (like this one) – About 5 mts

4. A regular post (about 200 words) – an hour or more

5. An article (about 500 words) – a few hours

In all the forms described above, you post and others consume (a bit of a broadcast mode). There are other methods as well which are more like interactions (asynchronous – meaning you don’t have to be at the same place at the same time).

1. Amplify (a larger tweet) Post

2. A bundle (using something like – collection of posts on a particular topic

3. A comment on a blog post – While the writing time may not be much, reading, understanding the post, understanding other comments etc. may take a while.

4. An answer to a question on Quora 

5. A commentary of an article or a book review in your blog or in places like Amazon (where it is more visible)

6. Answering comments on your own blog

7. Editing/commenting on a wiki page or participating in a Debate with a tool like debate graph.

There may be many others. If you think I missed an important one, please point them out.