A samurai who does not polish his sword every day will find that when most he needs it, the sword has grown rusty.

Everyone has a skill that they are good at, a skill others would describe as a natural talent to this person. This quote reminds me that no matter how skillful you are, if you don’t practice, you will lose it. Another great reminder of why you shouldn’t take anything you consider your talent, for granted — but instead, practice and invest to get better at it. With true passion, you may one day become the best in the world at it.

It is important to remember that the brain holds the key to everything we will ever accomplish.
– Richard Restak, M.D. Neurology and Neuropsychology

This quote reminded me of an NY Times article about big company CEO’s and their private libraries. I too, would want a private library like this:

Picture (and bandwidth) property of NY Times

Unless you don’t have a TV and don’t watch movies, there’s no way you have not seen the movie, The Matrix. I was reading this article today on The Guardian, and noticed how closely Vint Cerf, a founding father of the Internet closely resembles the Architect in The Matrix Reloaded.

Oh what the irony. Vint created the Internet, and the Architect created the Matrix.

See for yourself!

Will the real Vint Cerf please stand up?

I love puzzles, they drive me nuts. Especially IQ type puzzles. I am kind of busy with a todo list to complete today, so I couldn’t spend much time on this test, but it’s entertaining and I wanted to recommend to my readers (who are bored) to take this test. It turns out, I only scored “somewhat intelligent” ;(

http://intelligence-test.net/part1/

Scoring: 1 to 5 is Average, 6 - 11 Somewhat Intelligent, 12 to 18 Intelligent, 19 + Genius

In the interest of upfront disclosure, I _did_ try to cheat. When I noticed that the web app was doing client side verification of the answers, I poked around the javascript source to if I could find the answers. However, the smart asses who came up with this obviously also thought of people like me. The answers are hardcoded, but as a 1-way SHA-1 hash — that would require a supercomputer and lots of time to crack. I just thought I’d mention that to save you some time, just incase you thought of doing what I tried to do.

:P

Here’s some good advice from Paul Graham writes about good practices that any good programmer can relate to.

  1. Avoid distractions. Distractions are bad for many types of work, but especially bad for programming, because programmers tend to operate at the limit of the detail they can handle.

    The danger of a distraction depends not on how long it is, but on how much it scrambles your brain. A programmer can leave the office and go and get a sandwich without losing the code in his head. But the wrong kind of interruption can wipe your brain in 30 seconds.

    Oddly enough, scheduled distractions may be worse than unscheduled ones. If you know you have a meeting in an hour, you don’t even start working on something hard.
  2. Work in long stretches. Since there’s a fixed cost each time you start working on a program, it’s more efficient to work in a few long sessions than many short ones. There will of course come a point where you get stupid because you’re tired. This varies from person to person. I’ve heard of people hacking for 36 hours straight, but the most I’ve ever been able to manage is about 18, and I work best in chunks of no more than 12.

    The optimum is not the limit you can physically endure. There’s an advantage as well as a cost of breaking up a project. Sometimes when you return to a problem after a rest, you find your unconscious mind has left an answer waiting for you.
  3. Use succinct languages. More powerful programming languages make programs shorter. And programmers seem to think of programs at least partially in the language they’re using to write them. The more succinct the language, the shorter the program, and the easier it is to load and keep in your head.

    You can magnify the effect of a powerful language by using a style called bottom-up programming, where you write programs in multiple layers, the lower ones acting as programming languages for those above. If you do this right, you only have to keep the topmost layer in your head.
  4. Keep rewriting your program. Rewriting a program often yields a cleaner design. But it would have advantages even if it didn’t: you have to understand a program completely to rewrite it, so there is no better way to get one loaded into your head.
  5. Write rereadable code. All programmers know it’s good to write readable code. But you yourself are the most important reader. Especially in the beginning; a prototype is a conversation with yourself. And when writing for yourself you have different priorities. If you’re writing for other people, you may not want to make code too dense. Some parts of a program may be easiest to to read if you spread things out, like an introductory textbook. Whereas if you’re writing code to make it easy to reload into your head, it may be best to go for brevity.
  6. Work in small groups. When you manipulate a program in your head, your vision tends to stop at the edge of the code you own. Other parts you don’t understand as well, and more importantly, can’t take liberties with. So the smaller the number of programmers, the more completely a project can mutate. If there’s just one programmer, as there often is at first, you can do all-encompassing redesigns.
  7. Don’t have multiple people editing the same piece of code. You never understand other people’s code as well as your own. No matter how thoroughly you’ve read it, you’ve only read it, not written it. So if a piece of code is written by multiple authors, none of them understand it as well as a single author would.

    And of course you can’t safely redesign something other people are working on. It’s not just that you’d have to ask permission. You don’t even let yourself think of such things. Redesigning code with several authors is like changing laws; redesigning code you alone control is like seeing the other interpretation of an ambiguous image.

    If you want to put several people to work on a project, divide it into components and give each to one person.
  8. Start small. A program gets easier to hold in your head as you become familiar with it. You can start to treat parts as black boxes once you feel confident you’ve fully explored them. But when you first start working on a project, you’re forced to see everything. If you start with too big a problem, you may never quite be able to encompass it. So if you need to write a big, complex program, the best way to begin may not be to write a spec for it, but to write a prototype that solves a subset of the problem. Whatever the advantages of planning, they’re often outweighed by the advantages of being able to keep a program in your head.

Disclosure: Paul Graham runs the Y Combinator Startup School held annually at Stanford, so he does have a vested interest in helping startups succeed.

Now that I’ve got that upfront disclosure out of the way, I want to include Paul’s two observations which I agree with, simply because I feel what he says is true.

On why single solo great programmers are productive and get great products out the door,

It’s striking how often programmers manage to hit all eight points by accident. Someone has an idea for a new project, but because it’s not officially sanctioned, he has to do it in off hours—which turn out to be more productive because there are no distractions. Driven by his enthusiasm for the new project he works on it for many hours at a stretch. Because it’s initially just an experiment, instead of a “production” language he uses a mere “scripting” language—which is in fact far more powerful.

He completely rewrites the program several times; that wouldn’t be justifiable for an official project, but this is a labor of love and he wants it to be perfect. And since no one is going to see it except him, he omits any comments except the note-to-self variety. He works in a small group perforce, because he either hasn’t told anyone else about the idea yet, or it seems so unpromising that no one else is allowed to work on it. Even if there is a group, they couldn’t have multiple people editing the same code, because it changes too fast for that to be possible. And the project starts small because the idea is small at first; he just has some cool hack he wants to try out.

On why large software companies sometimes don’t realize that they work against these good practices for programmers,

Even more striking are the number of officially sanctioned projects that manage to do all eight things wrong. In fact, if you look at the way software gets written in most organizations, it’s almost as if they were deliberately trying to do things wrong. In a sense, they are. One of the defining qualities of organizations since there have been such a thing is to treat individuals as interchangeable parts. This works well for more parallelizable tasks, like fighting wars. For most of history a well-drilled army of professional soldiers could be counted on to beat an army of individual warriors, no matter how valorous. But having ideas is not very parallelizable. And that’s what programs are: ideas.

It’s not merely true that organizations dislike the idea of depending on individual genius, it’s a tautology. It’s part of the definition of an organization not to. Of our current concept of an organization, at least.

He then concludes,

Perhaps the optimal solution is for big companies not even to try to develop ideas in house, but simply to buy them. But regardless of what the solution turns out to be, the first step is to realize there’s a problem. There is a contradiction in the very phrase “software company.” The two words are pulling in opposite directions. Any good programmer in a large organization is going to be at odds with it, because organizations are designed to prevent what programmers strive for.

There is some truth to that. Established software companies have their own marketing departments. However, they sometimes tap outside marketing firms for help in their programs. Some things are just better when produced outside of the company. Are ideas and rapid-prototype software development one of them?

I was thinking about Tivo earlier. While it’s no rocket science product, it certain has become a common standard in households in the US now. In fact, Tivo has achieved the status of Google in the sense that people now use it as a verb. How many times have you heard, “I tivo’d that show”, “I will tivo that movie tonight”, “wanna come over, I have that game tivo’d”?

Anyway, I just thought it was interesting to note that one of the ways Tivo creates value for its users, is by reducing/eliminating the opportunity cost for its users. Opportunity cost or economic cost, is the cost of something in terms of an opportunity forgone (and the benefits which could be received from that opportunity), or the most valuable forgone alternative (or highest-valued option forgone), i.e. the second best alternative.

For instance, if there were two shows on two different channels that will show at the exact same time. If you only had one TV, you must pick only 1 show to watch. Even if you had 2 TV’s, you can’t really watch both at the same time. So in the pre-Tivo and DVR days, you would pick the show you liked better. The opportunity cost for viewers would be that other show that they unfortunately could not watch. Tivo fixed that. And good for them, because this is a pain that customers were willing to pay in order to get rid of. Just as a contrast, there are plenty of problems that aren’t painful enough such that customers aren’t willing to pay for a solution.

I like problem solving, and am on the lookout for interesting ways to create value. This is one way, so from now on, I will keep my eyes peeled for opportunity cost problems that can be solved.

Merlin Mann of 43folders fame presented a talk at Google titled Inbox Zero, a productivity hack/treatment for people who live out of their inboxes. The talk is about an hour long, so I’ve written up here some of the points I feel are important and works for me.

Disclaimer: This is _obvious_ stuff, but sometimes we forget, and a reminder is always nice.

Respect yourself, spend time and attention wisely

For knowledge workers like myself, we don’t create value by the number of bricks we can carry with our arms. We process knowledge/information, and that’s how we create value for our companies. The two things that knowledge workers must understand and appreciate is time and attention. Both of which we only have a finite amount of, and both of which are our constraints to our productivity. The goal is to separate the wheat from the chaff, saying NO to the low value work so that we can say YES to the high value work. Procrastination and frittering time away in email, surfing the web and flipping TV channels aimlessly would be “low value” work (more like almost no value work).

Email is a communication medium, just like the telephone. Don’t focus on email itself, focus on the information in the email and process it. Hitting the send/receive button all day is “busy work”, made to think that you are doing work, but you’re not actually doing any real work.

Process information in email
Don’t read the email and do nothing! Do something about it. Process it when you check it. Mine the gold from your inbox, and throw away the empty husk.

Processing actions:

  • Delete (consume) or archive it (save for historical records)
  • Delegate or forward it to someone else (stuff that don’t apply to you, or better handled by someone else)
  • Respond now, or do that work now!
  • Defer (perhaps replying requires more time, or requires some work first)

Having a productivity system in place is important (and so is sticking to it)

We are what we frequently do
– Aristotle

Don’t leave email open the entire time, with distracting pop-up notifications. Check once every hour or few hours, live outside of email. *This doesn’t apply to customer service reps

Use a tool/system that just stops short of being fun to use, so that you don’t end up fiddling with it. Remember that the tool/system has to be good at capturing information, and recalling information.

An interesting thought by Paul Vixie that I stumbled upon while I was incident handling yesterday.

Basically he compares the botnet problem to the human health virus/bacteria problem. Medical antibiotics are great but viruses eventually develop an immunity towards it. Then we are forced to come up with something better. He says that minor incremental stopgap measures against botnet herders cause more trouble in the long run:

Annoying botnet handlers educates them. Don’t do that! Let them succeed at what they try, but watch their every move. Learn to predict what they will do next. Learn how they did whatever they’ve done. Learn who they are. Learn where they live, and where their money comes from. Let them have a wonderful, annoyance-free life, right up to the instant that the front door of their apartment is kicked in and the handcuffs go on. Don’t create more antibiotic-resistant superbugs. Don’t teach them how to be more careful next time, on a painless incremental basis.

Botnet herders are humans just like us, who can think and problem-solve. It’s true that the most dangerous animal to hunt of all, is ourselves.

Full post is here.

Cool stuff, Google has just lowered the barrier even further to mashing up Google Maps with any web page you have. All you do is go to Google Maps, pick your address, click on “Link to this page”, and cut-paste the HTML iframe code they provide you. Can it get any easier? Previously you had to register and get a Google developer API key and what not, and they were fussy about where the Maps could be placed, and so forth.

But now, you can cut and paste hassle free anywhere you wish! So here’s my first Google Maps mash into my blog. Here’s my favorite hangout place: Panera Bread. Why? Because it has a flat-rate coffee charge, and free electricity and wifi!


View Larger Map

Wow, I just read this great post by Marc Andreessen — finding empiric data (true to Marissa Mayer’s what-does-the-data-suggest style) to answer the flame-brewing question that has been circling: “Are older or younger people better at entrepreneurship?” I do no justice by just skimming here, so please read the entire post for the full effect.

For the impatient: In summary, the valuable lesson learned here from Dr. Simonton’s research is that:

  1. Generally, productivity — output — rises rapidly from the start of a career to a peak and then declines gradually until retirement.
  2. This peak in productivity varies by field, from the late 20s to the early 50s, for reasons that are field-specific.
  3. Precocity, longevity, and output rate are linked. “Those who are precocious also tend to display longevity, and both precocity and longevity are positively associated with high output rates per age unit.” High producers produce highly, systematically, over time.
  4. The odds of a hit versus a miss do not increase over time. The periods of one’s career with the most hits will also have the most misses. So maximizing quantity — taking more swings at the bat — is much higher payoff than trying to improve one’s batting average.
  5. Intelligence, at least as measured by metrics such as IQ, is largely irrelevant.


* Image courtesy of GIS and AOL’s CDN

Update: Welcome Carnival of Career Intensity readers! Thanks to Dave for including this post in the Labor Day carnival.

I’m adding a new category to my blog, titled “Winds of Change”. I could have just called it “Change”, but that’s no fun ;) (in case you want to know where I got it from, it’s a name of a song I like). Change is inevitable, and I’ve learned a great deal (and still have much to learn), about embracing change instead of fighting to defend the mediocre status quo. Carly Fiorina gave a great talk about change at Stanford 3 months ago, and why sometimes leaders get “carried out on their shields” because change is difficult! I highly recommend listening to her talk, if you don’t have time, make time, I promise you will not regret it :)

So without further ado, I wanted to share a good article I read about change.

Begetting Change: Same Choices, Same Results

Repeated bouts of adversity are an unavoidable aspect of human existence. We battle against our inner struggles or outer world forces, and in many cases, we emerge on the opposite side of struggle stronger and better equipped to cope with the challenges yet to come. However, we can occasionally encounter trials that seem utterly hopeless. We strike at them with all of our creativity and perseverance, hoping desperately to bring about change, only to meet with the same results as always. Our first instinct in such situations is often to push harder against the seemingly immovable obstruction before us, assuming that this time we will be met with a different outcome. But staying power and stamina net us little when the same choices consistently garner the same results. A change in perspective, behavior, or response can do so much more to help us move past points where no amount of effort seems sufficient to overcome the difficulties before us.

Whether our intention is to change ourselves or some element of the world around us, we cannot simply wish for transformation or hope that our lives will be altered through circumstance. If our patterns of thought and behavior remain unchanged, our lives will continue to unfold much as they have previously. Patterns in which fruitless efforts prevail can be overcome with self examination and courage. It is our bravery that allows us to question the choices we have made thus far and to channel our effort into innovation. Asking questions and making small adjustments to your thought processes and behaviors will help you discover what works, so you can leave that which does not work behind you. To break free from those unconscious patterns that have long held sway over your actions and reactions, you will likely have to challenge your assumptions on a most basic level. You must accept once and for all that your beliefs with regard to cause and effect may no longer be in accordance with your needs.

Stagnation is often a sign that great changes are on the horizon. Courting the change you wish to see in yourself and in the world around you is a matter of acknowledging that only change begets change. The results you so ardently want to realize are well within the realm of possibility, and you need only step away from the well-worn circular path to explore the untried paths that lie beyond it.

Great lesson here. Sometimes, brute-force techniques aren’t the most efficient way to solve a problem. It’s always best to remain open to other possible problem solving methods. Acknowledging you have made a mistake (or could have done something better) is the first step, before making incremental adjustments to your course. When you feel growth stalling, then you know you have to actively seek out change, for the same choice will return you the same results. Take charge of your destiny.

What I’ve found true for myself, if you don’t take charge of your life, others will run your life for you. It’s your own responsibility to ensure that you end up where you want to be. If you don’t like where you end up, you only have yourself to blame.

Funny, I was reading this month’s Entrepreneur magazine, when I read about Guy Kawasaki’s column titled The Art of Execution — which when I googled, resulted in the same exact post on his blog a year and a half ago. Repackaging old content as new content, are we?

Anyway, the advice is still worth the entrepreneur’s time to read. My favorite was #6:

Establish a single point of responsibility. If you ask your employees who is responsible for a goal, and no one can answer you in ten seconds, then it means that there’s not enough accountability. If more than one person is responsible for the achievement of a goal, then no one is responsible. Good employees accept responsibility. Great employees seek responsibility. Lousy employees avoid responsibility.

Which kind of employee are you?

Corollary to the quote I posted yesterday, a Google search for that quote yielded this page with a priceless story and timeless advice:

Last week I had the pleasure of meeting a man who, despite a severe speech impediment, had become the top salesman at his company. It was such an unlikely story that I asked him how he’d done it. He joked, “with a lot of bruises and scars.” He went on to say, “Not surprisingly, the road was terribly tough for me. I was awful in the beginning — and it lit a fire under me. It made me work harder than everyone else. I resented it then, but I’ve come to realize it was a blessing in disguise.”

Consider this:

In life, it’s the rough patches that build your strength and character. They test you. They make you dig deeper, think harder, and risk more. Use them to your advantage. Don’t play the victim. Get up and get creative. It’s what you do when the going gets tough that defines you.

Try this:

When you hit a rough patch:
1. Don’t wish the ride was smoother - it’s not supposed to be.
2. Use the challenge to get smarter.
3. Tackle one thing at a time - don’t overwhelm yourself.
4. Keep smiling throughout.

Question: How have you used rough seas to your advantage?

A smooth sea never made a skilled mariner
–English Proverb

Eric Schmidt wasn’t selected to be CEO of Google because of his string of accomplishments, which he didn’t have. But he had fought and lost battles with many of Google’s potential matches. If anything, he was selected specifically because of his unique experience in failure; for the valuable lessons gained from those battles lost.

Some people don’t fail until they’re 45 years old—and it devastates them. Fail early and get it all over with. If you learn to deal with failure, you can raise teenagers. You can abide in intimate relationships. And you can have a worthwhile career. You learn to breathe again when you embrace failure as a part of life, not as the determining moment of life. Work on your own passions, not someone else’s.

– Rt. Rev. William L. Swing, speaking at Stanford’s Class of 2007 Baccalaureate Celebration

There is only one thing that makes a dream impossible to achieve: the fear of failure.
– The Alchemist

I’ve written about procrastination lately and this article I read today struck a chord inside of me on multiple points. It’s titled “Why Not Now? Waiting for Someday”. Don’t you from time to time say to yourself, “someday, I’ll do this, or that”, or say “someday, when this happens, I’ll do this or that”? I know I do. All the time! The most recent one of mine is “Someday, when I have both time AND money, I will visit Europe.” But now I know, sometimes I am just too shortsighted and although I am good at keeping my short term commitments, I am not great at keeping my long term commitments. Read “See the world, but never forget the drops of oil on the spoon.

The time we are blessed with is limited and tends to be used up all too quickly. How we utilize that time is consequently one of the most important decisions we make. Yet it is far too easy to put off until tomorrow what we are dreaming of today. The hectic pace of modern existence affords us an easy out; we shelve our aspirations so we can cope more effectively with the challenges of the present, ostensibly to have more time and leisure to realize our purpose in the future. Or we tell ourselves that we will chase our dreams someday once we have accomplished other lesser goals. In truth, it is our fear that keeps us from seeking fulfillment in the here and now because we view failure as a possibility, our reasons for delaying our inevitable success seem sound and rational. If we ask ourselves what we are really waiting for, however, we discover that there is no truly compelling reason why we should put off the pursuit of the dreams that sustain us.

Ouch, that hurts my feelings because I know its true. “Shelve my aspirations to cope today, ostensibly to have more time in future”? Guilty as charged. My ex-gf will testify. “Tell myself I’ll chase a dream once I’ve accomplished a lesser goal”? Guilty. Again. If I ask myself what the hell have I been waiting for, it’s true that I don’t have any compelling reason to put off the pursuit of things that would sustain me. I’ve actually realized this recently and have made attempts to amend this. In other words, yes I’m guilty on this count too.

When regarded as a question, “Why not now?” drains us of our power to realize our ambitions. We are so concerned with the notion that we are somehow undeserving of happiness that we cannot see that there is much we can do in the present to begin courting it. Yet when we look decisively at our existence and state, “Why not now, indeed!” we are empowered to begin changing our lives this very moment. We procrastinate for many reasons, from a perceived lack of time to a legitimate lack of self-belief, but the truth of the matter is that there is no time like the present and no time but the present. Whatever we aim to accomplish, we will achieve it more quickly and with a greater degree of efficiency when we seize the day and make the most of the resources we have at our disposal presently.

All the joy, passion, and contentment you can envision can be yours right now, rather than in some far-flung point in time. You need only remind yourself that there is nothing standing between you and fulfillment. If you decide that today is the day you will take your destiny into your hands, you will soon discover that you hold the keys of fate.

“procrastinate for many reasons, from a perceived lack of time to a legitimate lack of self-belief”. Yup, I’m guilty of both and everything in between. Seize the day and capitalize on all opportunities, today.

So it turns out, I’ve learned a very valuable lesson about myself today. “In truth, it is our fear that keeps us from seeking fulfillment in the here and now because we view failure as a possibility, our reasons for delaying our inevitable success seem sound and rational”. I am still afraid of failure. GUILTY as charged. I hereby sentence myself to rehab.

There is no time like the present and no time but the present.

I should have known better. Just two days ago when I wrote about the book, The Alchemist, I found this quote from it:

There is only one thing that makes a dream impossible to achieve: the fear of failure.
– The Alchemist