Dorai’s LearnLog

October 5, 2007

Solve the meta-problem

I keep getting links to cool articles, blogs and essays. Sometimes I just mark them to read later. Some times I just dive in, sample them a bit. What excites me, may not excite you. But if you are in the software industry and share some of my interests, you may just want to take a look.

My sources of essays are links on Digg, doggdotus, slashdot, reddit. There is a bit of overlap there (doggdotus is an aggregator of digg, slashdot and del.icio.us). Here is an essay that got me started for the day.

How To: Be More Productive

Aaron is accomplished. Long before I read anything he wrote, I knew him for his software contributions. He describes himself as an Activist, Writer and Hacker. I knew about reddit and web.py and his contributions to semantic web and Python communities. I recently started reading his Raw Thought

This blog post is a gem. Like many other posts of his, it makes you reflect. If you are a software developer/software entrepreneur you can relate to this essay . For me, there is one thing that stands out more than anything else:

Another way to make things more fun is to solve the meta-problem. Instead of building a web application, try building a web application framework with this as the example app. Not only will the task be more enjoyable, but the result will probably be more useful.

Yeah. That is what it is all about. If you are a software developer, you can be an order of magnitude more productive, if you can take the approach of solving a meta problem. Some times this method of solving produces a tool. Some times it produces a design pattern or a framework. But almost, always, it produces one of the most elegant, reusable solutions.

Here are a few meta problems and the solutions that software pioneers invented. Some times they are so beautiful, you are sit in amazement at the mind that created them.

  • Parse different formats - Build a way to describe a parser and build a parser-generator (lex/yacc)
  • Find a way to describe a database - Recursive use of the concept of relationship to describe themselves. The metadata in an RDB are just tables like any other (with some special privileges)
  • You need a way to build different markups - Build a makup meta language (like XML)
  • You need to describe a set of resources and relationships and make statements about them - Create RDF/RDFS

Need I say more?

September 2, 2007

Provocations and Possibilities

Filed under: Thinking — dorai @ 5:28 am

Provocations are not possibilities from Edward De Bono:

…provocations are quite different from possibilities. A provocation may be knowingly wrong, impossible, or contradictory and yet provoke valuable ideas. Provocations are not hypotheses. There needs to be a conscious decision as to the range of possibilities: how far from the probable and how near the fantastic?

Here is a provocative thought based on Edward De Bono’s message of the week on Aug 27 about simple change:

what single change would make democracy more effective (at providing good government)?

I like this way of thinking, a bit recursively. If you cannot change the system, pick a single change that has the maximum impact. In the slightly altered system, pick the next maximum impact change and keep repeating the process.

July 5, 2007

Innovation is …

Filed under: Creativity, Ideas, Thinking — dorai @ 8:13 am

Scott Berkun, Author of “The Myths of Innovation”, in an interview with Guy Kawasaki:

the foundation is that ideas are combinations of other ideas. People who earn the label “creative” are really just people who come up with more combinations of ideas, find interesting ones faster, and are willing to try them out. The problem is most schools and organizations train us out of the habits.

Glad to see that. In my Thinking about Thinkings seminar, I talk about how Ideas trigger ideas.

ideas-trigger-ideas.png

So it helps to keep an idea log. And keep going back to it. Ultimately, you need to try a few after your own filtering process. In software today, it is so much easier to try out ideas with all the great tools we have at our commands. That is one of the reason mashups are taking off. It is so easy to try out ideas in a few hours.

A few more pearls from the interview:

Innovation is a practice—a set of habits—and it involves making lots of mistakes and being willing to learn from them.

New ideas often come from asking new questions and being a creative question asker.

Innovation is difficult, risky work, and the older you are, the greater the odds you’ll realize this is the case.

Here are some more from 10 Lessons of Innovation Idris Mootee Keynote

  • Innovation is like ping-pong where ideas are bounced back and forth
  • Innovation is a mindset
  • Innovation occurs at the intersection of previously unconnected and unrelated planes of thought
  • Prototype a lot, fail often, fail early

May 22, 2007

Thinking Like a Computer Scientist

Filed under: Thinking — dorai @ 10:29 pm
Tags:

A gripping and exhilarating read for anyone who likes to spend time Thinking About Thinking.

What is computational thinking?

Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science. Computational thinking is thinking in terms of abstractions, invariably multiple layers of abstraction at once.

It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use.

Computational thinking:

  • is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation.
  • is thinking recursively. It is parallel processing.
  • is using abstraction and decomposition when attacking a large complex task or designing a large complex system. It is separation of concerns.
  • is thinking in terms of prevention, protection, and recovery from worst-case scenarios through redundancy, damage containment, and error correction.
  • is using heuristic reasoning to discover a solution. It is planning, learning, and scheduling in the presence of uncertainty.

Thanks to Jon for this link. Computational Thinking by Jeannette Wing.

The challenge is to make Computational Thinking an integral part of education - like reading and writing.

December 6, 2006

Song Is The King

Filed under: Thinking, Trends — dorai @ 11:00 pm
Tags:

Paul Saffo says that technologies take 20 years to arrive from invention to our home. In this entry on the significance of iPod, he says:

The iPod is an extraordinary innovation — and still so misunderstood even on the fifth anniversary of its introduction on October 23, 2001. In contemplating it’s significance, it is tempting to focus on the iPod as a device, an artifact that is as beautiful as it is functional. But the device is only the tip of the iceberg, for the greatest long-term impact of the iPod lies in the underlying iTunes music delivery system.

I don’t mean simply the idea of coupling the device with the delivery system. Rather, it is the details of iTunes that makes it revolutionary. With iTunes, Apple accomplished two vast, seismic shifts. First, the iPod ended the era of the album as the basic unit of music sales. For the first time since the demise of 45 singles records, the song is king.

Second, Apple’s iTunes store broke the album-centric economic model that has given the recording industry its vast power.

Nice to get a perspective on a larger trends. You can find Paul’s journal here.

November 17, 2006

Should There Be Tax Credit For Ideas?

Filed under: Ideas, Thinking — dorai @ 7:34 am

This is a snippet from their Ideas Issue (you need to sign up for a free two month trial to get it).

If there was a law that every organisation had to put orward five creative ideas a year - then they would do just this. Perhaps there could be a tax credit for the deas.

Organisations do not want new ideas. They want successful new ideas.

It is worth signing up for Thinking Managers free newsletter and track their blog. I have been reading Edward De Bono’s books for over twenty years. He wrote several books on thinking and credited with pioneering the concept of Lateral Thinking.

July 29, 2006

Book: Letters to a Young Mathematician

Filed under: Mathematics, Thinking — dorai @ 12:04 pm

I just finished it yesterday. I really enjoyed reading it. Here are some of my favorite chapters.

  • Why Do Math?
  • The Breadth of Mathematics
  • Surrounded by Math
  • How Mathematicians Think
  • How to Learn Math
  • Mathetmatical Story Telling
  • Pure or Applied?
  • Where Do You Get Those Crazy Ideas?
  • How to Teach Math
  • Is God a Mathematician?

The last chapter “Is God a Mathematician” is all about Symmetry. I really love this chapter. Here are a few quotes from it.

“God and mathematics both strike terror into the heart of the common humanity, but the connection must surely run deeper…. You needn’t subscribe to a personal deity to be awestruck by the astonishing patterns in the universe or to observe that they seem to be mathematical. Every spiral snail shell or circular ripple on a pond shouts that message at us.”

“What are the laws of nature? Are they deep truths about the world, or simplifications imposed on nature’s unutterable complexity by humanity’s limited brainpower?… Are mathematical patterns really present in nature, or do we invent them? Or, if real, are they merely a superficial aspect of nature that we fixate on because it’s what we comprehend?”

“Because we cannot experience the universe objectively, we sometimes see patterns that do not exist.”

“One of the simplest and most elegant sources of mathematical pattern in nature is symmetry. Symmetry is all around us. We ourselves are bilaterally symmetric…. There are symmetries in the structure of the atom and the swirl of galaxies.”

“Imagination is an activity of brains, which are made from the same kind of materials as the rest of the cosmos…”

“Symmetry is deep, elegant and general. It is also a geometric concept. So the geometer God is really a God of symmetry.”

This book, in my mind at least, raises more questions than it answers. But it provides  lots of hints on where to look, and what to look for.

May 19, 2006

Chief Innovation Catalyst?

Filed under: Creativity, Innovation, Thinking — dorai @ 7:56 am
Tags: ,

I just read Chief Innovation Officer. I think it is cool to have a position like that. Or even a role of CTO office.

I would rather invent a new title - Chief Innovation Catalyst or something similar. His/Her job would be to promote, encourage innovation in an organization. CIC can also set up the minimal infrastructure to do a bunch of thngs:

  • Set up an Idea Wiki or Blog and encourage people to share ideas
  • Encourage coming up with ideas (any ideas) on a voluntary basis
  • Use blog as a medium to express ideas, have discussions and propogate them inside a company
  • Set up a problem blog/wiki (any one can contribute). Since problems trigger ideas for solutions
  • Create a mind map of interlinked ideas (visualization may help come up with new ideas)

Just to encourage people, it should be possible to have people post from their cell phones (sms), email clients, web clients, blog clients etc.

This is just the starting point.
P.S: The techie in me is thinking of lot of tools to help this process along - a microformat for ideas, pub/sub of ideas and many more.

May 14, 2006

Rotating Pixels and Right Brained Programming

Filed under: Programming, Thinking — dorai @ 8:21 am

In this refreshing article, Niall Murphy provides a few anecdotes on how to apply lateral thinking to programming.

Engineers can slip into the habit of using the same algorithms to tackle whatever problems are presented to them. A bit of lateral thinking can lead to more interesting and sometimes more optimal solutions. It's not always easy to look at something in a different way, but exercising your brain in this manner can be fruitful for your project (and keep your brain young, too).

The key is solving the problem backwards.

Ask yourself, "If I had the answer, would I be able to discover the question?" Other mathematical challenges are amenable to this sort of approach. Finding the square root of a number is fiendishly complex. If you already had the answer, however, checking it by squaring it is a simple case of multiplying it by itself. So if we guess at the answer we can check it. If the guess is too large, the result of squaring it is larger than the original value. We can iteratively improve our guesses as we get the result of each trial.

It's sometimes necessary to throw away the current way of doing things in order to see that alternatives are possible.

One of the reasons I love reading Dr. Dobb's Journal is that they seem to attract authors like Niall.

March 3, 2006

Capability to Improve

Filed under: Thinking — dorai @ 8:13 am
Tags:

What is improvement? Your definition may vary from mine and others.

  • How do you improve?
  • What are the capabilities required for improvement?
  • How do you improve your capability to improve?

What is the model for:

  • Individual Improvement?
  • improving as a group?
  • an organzation (charitable, company etc) nations?

I had the previlege of working with Doug Engelbart (the inventor of the mouse and co-inventor of hypertext) for a couple of years. His life long quest is for improving the capabilities to improve. A bit of this type of thinking is having a lot of influence on me. I am still struggling at the first stage: of individual improvement.

Next Page »

Blog at WordPress.com.